summaryrefslogtreecommitdiff
path: root/girs
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2018-05-17 12:15:46 -0400
committerThibault Saunier <tsaunier@igalia.com>2018-06-05 10:33:49 -0400
commitd3ad9cdfe4b1714ce0d9fb7b282add048e985d3c (patch)
treed8908faf614064ab99bc02280dc07b1d2b59f290 /girs
parent10f0476c9fd0bcb94062ca4776d87d9857747dd0 (diff)
downloadgstreamer-d3ad9cdfe4b1714ce0d9fb7b282add048e985d3c.tar.gz
Checkout gir files
Diffstat (limited to 'girs')
-rw-r--r--girs/GES-1.0.gir13143
-rw-r--r--girs/Gst-1.0.gir49338
-rw-r--r--girs/GstApp-1.0.gir1935
-rw-r--r--girs/GstAudio-1.0.gir9738
-rw-r--r--girs/GstBase-1.0.gir12253
-rw-r--r--girs/GstController-1.0.gir931
-rw-r--r--girs/GstNet-1.0.gir861
-rw-r--r--girs/GstPbutils-1.0.gir4126
-rw-r--r--girs/GstRtp-1.0.gir4824
-rw-r--r--girs/GstRtsp-1.0.gir5058
-rw-r--r--girs/GstSdp-1.0.gir4318
-rw-r--r--girs/GstTag-1.0.gir1846
-rw-r--r--girs/GstVideo-1.0.gir13807
13 files changed, 122178 insertions, 0 deletions
diff --git a/girs/GES-1.0.gir b/girs/GES-1.0.gir
new file mode 100644
index 0000000000..2a5a242a3f
--- /dev/null
+++ b/girs/GES-1.0.gir
@@ -0,0 +1,13143 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GObject" version="2.0"/>
+ <include name="Gio" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <include name="GstPbutils" version="1.0"/>
+ <include name="GstVideo" version="1.0"/>
+ <package name="ges-1.0"/>
+ <c:include name="ges/ges.h"/>
+ <namespace name="GES"
+ version="1.0"
+ shared-library="libges-1.0.so.0"
+ c:identifier-prefixes="GES"
+ c:symbol-prefixes="ges">
+ <class name="Asset"
+ c:symbol-prefix="asset"
+ c:type="GESAsset"
+ parent="GObject.Object"
+ glib:type-name="GESAsset"
+ glib:get-type="ges_asset_get_type"
+ glib:type-struct="AssetClass">
+ <doc xml:space="preserve">The Assets in the GStreamer Editing Services represent the resources
+that can be used. You can create assets for any type that implements the #GESExtractable
+interface, for example #GESClips, #GESFormatter, and #GESTrackElement do implement it.
+This means that assets will represent for example a #GESUriClips, #GESBaseEffect etc,
+and then you can extract objects of those types with the appropriate parameters from the asset
+using the #ges_asset_extract method:
+
+|[
+GESAsset *effect_asset;
+GESEffect *effect;
+
+// You create an asset for an effect
+effect_asset = ges_asset_request (GES_TYPE_EFFECT, "agingtv", NULL);
+
+// And now you can extract an instance of GESEffect from that asset
+effect = GES_EFFECT (ges_asset_extract (effect_asset));
+
+]|
+
+In that example, the advantages of having a #GESAsset are that you can know what effects
+you are working with and let your user know about the avalaible ones, you can add metadata
+to the #GESAsset through the #GESMetaContainer interface and you have a model for your
+custom effects. Note that #GESAsset management is making easier thanks to the #GESProject class.
+
+Each asset is represented by a pair of @extractable_type and @id (string). Actually the @extractable_type
+is the type that implements the #GESExtractable interface, that means that for example for a #GESUriClip,
+the type that implements the #GESExtractable interface is #GESClip.
+The identifier represents different things depending on the @extractable_type and you should check
+the documentation of each type to know what the ID of #GESAsset actually represents for that type. By default,
+we only have one #GESAsset per type, and the @id is the name of the type, but this behaviour is overriden
+to be more useful. For example, for GESTransitionClips, the ID is the vtype of the transition
+you will extract from it (ie crossfade, box-wipe-rc etc..) For #GESEffect the ID is the
+@bin-description property of the extracted objects (ie the gst-launch style description of the bin that
+will be used).
+
+Each and every #GESAsset is cached into GES, and you can query those with the #ges_list_assets function.
+Also the system will automatically register #GESAssets for #GESFormatters and #GESTransitionClips
+and standard effects (actually not implemented yet) and you can simply query those calling:
+|[
+ GList *formatter_assets, *tmp;
+
+ // List all the transitions
+ formatter_assets = ges_list_assets (GES_TYPE_FORMATTER);
+
+ // Print some infos about the formatter GESAsset
+ for (tmp = formatter_assets; tmp; tmp = tmp-&gt;next) {
+ g_print ("Name of the formatter: %s, file extension it produces: %s",
+ ges_meta_container_get_string (GES_META_CONTAINER (tmp-&gt;data), GES_META_FORMATTER_NAME),
+ ges_meta_container_get_string (GES_META_CONTAINER (tmp-&gt;data), GES_META_FORMATTER_EXTENSION));
+ }
+
+ g_list_free (transition_assets);
+
+]|
+
+You can request the creation of #GESAssets using either #ges_asset_request_async or
+#ges_asset_request_async. All the #GESAssets are cached and thus any asset that has already
+been created can be requested again without overhead.</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <function name="needs_reload" c:identifier="ges_asset_needs_reload">
+ <doc xml:space="preserve">Sets an asset from the internal cache as needing reload. An asset needs reload
+in the case where, for example, we were missing a GstPlugin to use it and that
+plugin has been installed, or, that particular asset content as changed
+meanwhile (in the case of the usage of proxies).
+
+Once an asset has been set as "needs reload", requesting that asset again
+will lead to it being re discovered, and reloaded as if it was not in the
+cache before.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the asset was in the cache and could be set as needing reload,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the object that can be extracted from the
+ asset to be reloaded.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The identifier of the asset to mark as needing reload</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="request" c:identifier="ges_asset_request" throws="1">
+ <doc xml:space="preserve">Create a #GESAsset in the most simple cases, you should look at the @extractable_type
+documentation to see if that constructor can be called for this particular type
+
+As it is recommanded not to instanciate assets for GESUriClip synchronously,
+it will not work with this method, but you can instead use the specific
+#ges_uri_clip_asset_request_sync method if you really want to.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A reference to the wanted #GESAsset or %NULL</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the object that can be extracted from the new asset.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The Identifier or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="request_async" c:identifier="ges_asset_request_async">
+ <doc xml:space="preserve">Request a new #GESAsset asyncronously, @callback will be called when the materail is
+ready to be used or if an error occured.
+
+Example of request of a GESAsset async:
+|[
+// The request callback
+static void
+asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
+{
+ GESAsset *asset;
+ GError *error = NULL;
+
+ asset = ges_asset_request_finish (res, &amp;error);
+ if (asset) {
+ g_print ("The file: %s is usable as a FileSource",
+ ges_asset_get_id (asset));
+ } else {
+ g_print ("The file: %s is *not* usable as a FileSource because: %s",
+ ges_asset_get_id (source), error-&gt;message);
+ }
+
+ gst_object_unref (mfs);
+}
+
+// The request:
+ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL,
+ (GAsyncReadyCallback) asset_loaded_cb, user_data);
+]|</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the object that can be extracted from the
+ new asset. The class must implement the #GESExtractable interface.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The Identifier of the asset we want to create. This identifier depends of the extractable,
+type you want. By default it is the name of the class itself (or %NULL), but for example for a
+GESEffect, it will be the pipeline description, for a GESUriClip it
+will be the name of the file, etc... You should refer to the documentation of the #GESExtractable
+type you want to create a #GESAsset for.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="cancellable"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional %GCancellable object, %NULL to ignore.</doc>
+ <type name="Gio.Cancellable" c:type="GCancellable*"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="async"
+ closure="4">
+ <doc xml:space="preserve">a #GAsyncReadyCallback to call when the initialization is finished,
+Note that the @source of the callback will be the #GESAsset, but you need to
+make sure that the asset is properly loaded using the #ges_asset_request_finish
+method. This asset can not be used as is.</doc>
+ <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The user data to pass when @callback is called</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="request_finish"
+ c:identifier="ges_asset_request_finish"
+ throws="1">
+ <doc xml:space="preserve">Finalize the request of an async #GESAsset</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GESAsset previously requested</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <parameter name="res" transfer-ownership="none">
+ <doc xml:space="preserve">The #GAsyncResult from which to get the newly created #GESAsset</doc>
+ <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="extract" invoker="extract" throws="1">
+ <doc xml:space="preserve">Extracts a new #GObject from @asset. The type of the object is
+defined by the extractable-type of @asset, you can check what
+type will be extracted from @asset using
+#ges_asset_get_extractable_type</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A newly created #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get extract an object from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="inform_proxy">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ <parameter name="proxy_id" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="proxied">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ <parameter name="proxy" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="request_id_update">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ <parameter name="proposed_new_id" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start_loading" throws="1">
+ <return-value transfer-ownership="none">
+ <type name="AssetLoadingReturn" c:type="GESAssetLoadingReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="extract" c:identifier="ges_asset_extract" throws="1">
+ <doc xml:space="preserve">Extracts a new #GObject from @asset. The type of the object is
+defined by the extractable-type of @asset, you can check what
+type will be extracted from @asset using
+#ges_asset_get_extractable_type</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A newly created #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get extract an object from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_error"
+ c:identifier="ges_asset_get_error"
+ version="1.8">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GError of the asset or %NULL if
+the asset was loaded without issue</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The asset to retrieve the error from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_extractable_type"
+ c:identifier="ges_asset_get_extractable_type">
+ <doc xml:space="preserve">Gets the type of object that can be extracted from @self</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the type of object that can be extracted from @self</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_id" c:identifier="ges_asset_get_id">
+ <doc xml:space="preserve">Gets the ID of a #GESAsset</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The ID of @self</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get ID from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_proxy" c:identifier="ges_asset_get_proxy">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The proxy in use for @asset</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get currenlty used proxy</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_proxy_target"
+ c:identifier="ges_asset_get_proxy_target">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GESAsset that is proxied by @proxy</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="proxy" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset from which to get the the asset it proxies.</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="list_proxies" c:identifier="ges_asset_list_proxies">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The list of proxies @asset has. Note that the default asset to be
+used is always the first in that list.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Asset"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get proxies from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_proxy" c:identifier="ges_asset_set_proxy">
+ <doc xml:space="preserve">A proxying asset is an asset that can substitue the real @asset. For example if you
+have a full HD #GESUriClipAsset you might want to set a lower resolution (HD version
+of the same file) as proxy. Note that when an asset is proxied, calling
+#ges_asset_request will actually return the proxy asset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @proxy has been set on @asset, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to set proxy on</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ <parameter name="proxy"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GESAsset that should be used as default proxy for @asset or
+%NULL if you want to use the currently set proxy. Note that an asset can proxy one and only
+one other asset.</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unproxy" c:identifier="ges_asset_unproxy">
+ <doc xml:space="preserve">Removes @proxy from the list of known proxies for @asset.
+If @proxy was the current proxy for @asset, stop using it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @proxy was a known proxy for @asset, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to stop proxying with @proxy</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </instance-parameter>
+ <parameter name="proxy" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to stop considering as a proxy for @asset</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="extractable-type"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </property>
+ <property name="id"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="proxy" writable="1" transfer-ownership="none">
+ <type name="Asset"/>
+ </property>
+ <property name="proxy-target" writable="1" transfer-ownership="none">
+ <type name="Asset"/>
+ </property>
+ <field name="parent">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AssetPrivate" c:type="GESAssetPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AssetClass"
+ c:type="GESAssetClass"
+ glib:is-gtype-struct-for="Asset">
+ <field name="parent">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ <field name="start_loading">
+ <callback name="start_loading" throws="1">
+ <return-value transfer-ownership="none">
+ <type name="AssetLoadingReturn" c:type="GESAssetLoadingReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="extract">
+ <callback name="extract" throws="1">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A newly created #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to get extract an object from</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="inform_proxy">
+ <callback name="inform_proxy">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="proxy_id" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="proxied">
+ <callback name="proxied">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="proxy" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="request_id_update">
+ <callback name="request_id_update">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="proposed_new_id" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="AssetLoadingReturn" c:type="GESAssetLoadingReturn">
+ <member name="error" value="0" c:identifier="GES_ASSET_LOADING_ERROR">
+ </member>
+ <member name="async" value="1" c:identifier="GES_ASSET_LOADING_ASYNC">
+ </member>
+ <member name="ok" value="2" c:identifier="GES_ASSET_LOADING_OK">
+ </member>
+ </enumeration>
+ <record name="AssetPrivate" c:type="GESAssetPrivate" disguised="1">
+ </record>
+ <class name="AudioSource"
+ c:symbol-prefix="audio_source"
+ c:type="GESAudioSource"
+ parent="Source"
+ abstract="1"
+ glib:type-name="GESAudioSource"
+ glib:get-type="ges_audio_source_get_type"
+ glib:type-struct="AudioSourceClass">
+ <doc xml:space="preserve">## Children Properties
+
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+
+&lt;informaltable frame="none"&gt;
+&lt;tgroup cols="3"&gt;
+&lt;colspec colname="properties_type" colwidth="150px"/&gt;
+&lt;colspec colname="properties_name" colwidth="200px"/&gt;
+&lt;colspec colname="properties_flags" colwidth="400px"/&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gdouble"&gt;&lt;type&gt;double&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESAudioSource--volume"&gt;volume&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;volume factor, 1.0=100%.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gboolean"&gt;&lt;type&gt;gboolean&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESAudioSource--mute"&gt;mute&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;mute channel.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/informaltable&gt;</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="Source" c:type="GESSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioSourcePrivate" c:type="GESAudioSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioSourceClass"
+ c:type="GESAudioSourceClass"
+ glib:is-gtype-struct-for="AudioSource">
+ <field name="parent_class" readable="0" private="1">
+ <type name="SourceClass" c:type="GESSourceClass"/>
+ </field>
+ <field name="create_source" introspectable="0">
+ <callback name="create_source" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioSourcePrivate"
+ c:type="GESAudioSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="AudioTestSource"
+ c:symbol-prefix="audio_test_source"
+ c:type="GESAudioTestSource"
+ parent="AudioSource"
+ glib:type-name="GESAudioTestSource"
+ glib:get-type="ges_audio_test_source_get_type"
+ glib:type-struct="AudioTestSourceClass">
+ <doc xml:space="preserve">Outputs a test audio stream using audiotestsrc. The default property values
+output silence. Useful for testing pipelines, or to fill gaps in an audio
+track.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <method name="get_freq" c:identifier="ges_audio_test_source_get_freq">
+ <doc xml:space="preserve">Get the current frequency of @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current frequency of @self.</doc>
+ <type name="gdouble" c:type="double"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESAudioTestSource</doc>
+ <type name="AudioTestSource" c:type="GESAudioTestSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_volume"
+ c:identifier="ges_audio_test_source_get_volume">
+ <doc xml:space="preserve">Get the current volume of @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current volume of @self</doc>
+ <type name="gdouble" c:type="double"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESAudioTestSource</doc>
+ <type name="AudioTestSource" c:type="GESAudioTestSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_freq" c:identifier="ges_audio_test_source_set_freq">
+ <doc xml:space="preserve">Lets you set the frequency applied on the track element</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESAudioTestSource</doc>
+ <type name="AudioTestSource" c:type="GESAudioTestSource*"/>
+ </instance-parameter>
+ <parameter name="freq" transfer-ownership="none">
+ <doc xml:space="preserve">The frequency you want to apply on @self</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_volume"
+ c:identifier="ges_audio_test_source_set_volume">
+ <doc xml:space="preserve">Sets the volume of the test audio signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESAudioTestSource</doc>
+ <type name="AudioTestSource" c:type="GESAudioTestSource*"/>
+ </instance-parameter>
+ <parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">The volume you want to apply on @self</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="AudioSource" c:type="GESAudioSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioTestSourcePrivate"
+ c:type="GESAudioTestSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioTestSourceClass"
+ c:type="GESAudioTestSourceClass"
+ glib:is-gtype-struct-for="AudioTestSource">
+ <field name="parent_class" readable="0" private="1">
+ <type name="AudioSourceClass" c:type="GESAudioSourceClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioTestSourcePrivate"
+ c:type="GESAudioTestSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="AudioTrack"
+ c:symbol-prefix="audio_track"
+ c:type="GESAudioTrack"
+ parent="Track"
+ glib:type-name="GESAudioTrack"
+ glib:get-type="ges_audio_track_get_type"
+ glib:type-struct="AudioTrackClass">
+ <doc xml:space="preserve">Sane default properties to specify and fixate the output stream are
+set as restriction-caps.
+It is advised, to modify these properties, to use
+#ges_track_update_restriction_caps, setting them directly is
+possible through #ges_track_set_restriction_caps, but not specifying
+one of them can lead to negotiation issues, only use that function
+if you actually know what you're doing :)
+
+The default properties are:
+- format: S32LE
+- channels: 2
+- rate: 44100
+- layout: interleaved</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gst.ChildProxy"/>
+ <constructor name="new" c:identifier="ges_audio_track_new">
+ <doc xml:space="preserve">Creates a new #GESAudioTrack of type #GES_TRACK_TYPE_AUDIO and with generic
+raw audio caps ("audio/x-raw");</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new #GESTrack</doc>
+ <type name="AudioTrack" c:type="GESAudioTrack*"/>
+ </return-value>
+ </constructor>
+ <field name="parent_instance">
+ <type name="Track" c:type="GESTrack"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioTrackPrivate" c:type="GESAudioTrackPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioTrackClass"
+ c:type="GESAudioTrackClass"
+ glib:is-gtype-struct-for="AudioTrack">
+ <field name="parent_class">
+ <type name="TrackClass" c:type="GESTrackClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioTrackPrivate"
+ c:type="GESAudioTrackPrivate"
+ disguised="1">
+ </record>
+ <class name="AudioTransition"
+ c:symbol-prefix="audio_transition"
+ c:type="GESAudioTransition"
+ parent="Transition"
+ glib:type-name="GESAudioTransition"
+ glib:get-type="ges_audio_transition_get_type"
+ glib:type-struct="AudioTransitionClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_audio_transition_new">
+ <doc xml:space="preserve">Creates a new #GESAudioTransition.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The newly created #GESAudioTransition.</doc>
+ <type name="AudioTransition" c:type="GESAudioTransition*"/>
+ </return-value>
+ </constructor>
+ <field name="parent">
+ <type name="Transition" c:type="GESTransition"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioTransitionPrivate"
+ c:type="GESAudioTransitionPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioTransitionClass"
+ c:type="GESAudioTransitionClass"
+ glib:is-gtype-struct-for="AudioTransition">
+ <field name="parent_class">
+ <type name="TransitionClass" c:type="GESTransitionClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioTransitionPrivate"
+ c:type="GESAudioTransitionPrivate"
+ disguised="1">
+ </record>
+ <class name="AudioUriSource"
+ c:symbol-prefix="audio_uri_source"
+ c:type="GESAudioUriSource"
+ parent="AudioSource"
+ glib:type-name="GESAudioUriSource"
+ glib:get-type="ges_audio_uri_source_get_type"
+ glib:type-struct="AudioUriSourceClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The location of the file/resource to use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="AudioSource" c:type="GESAudioSource"/>
+ </field>
+ <field name="uri" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioUriSourcePrivate" c:type="GESAudioUriSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioUriSourceClass"
+ c:type="GESAudioUriSourceClass"
+ glib:is-gtype-struct-for="AudioUriSource">
+ <field name="parent_class" readable="0" private="1">
+ <type name="AudioSourceClass" c:type="GESAudioSourceClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioUriSourcePrivate"
+ c:type="GESAudioUriSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="BaseEffect"
+ c:symbol-prefix="base_effect"
+ c:type="GESBaseEffect"
+ parent="Operation"
+ abstract="1"
+ glib:type-name="GESBaseEffect"
+ glib:get-type="ges_base_effect_get_type"
+ glib:type-struct="BaseEffectClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="Operation" c:type="GESOperation"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseEffectPrivate" c:type="GESBaseEffectPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseEffectClass"
+ c:type="GESBaseEffectClass"
+ glib:is-gtype-struct-for="BaseEffect">
+ <field name="parent_class" readable="0" private="1">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="OperationClass" c:type="GESOperationClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="BaseEffectClip"
+ c:symbol-prefix="base_effect_clip"
+ c:type="GESBaseEffectClip"
+ parent="OperationClip"
+ abstract="1"
+ glib:type-name="GESBaseEffectClip"
+ glib:get-type="ges_base_effect_clip_get_type"
+ glib:type-struct="BaseEffectClipClass">
+ <doc xml:space="preserve">The effect will be applied on the sources that have lower priorities
+(higher number) between the inpoint and the end of it.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="OperationClip" c:type="GESOperationClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseEffectClipPrivate" c:type="GESBaseEffectClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseEffectClipClass"
+ c:type="GESBaseEffectClipClass"
+ glib:is-gtype-struct-for="BaseEffectClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="OperationClipClass" c:type="GESOperationClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseEffectClipPrivate"
+ c:type="GESBaseEffectClipPrivate"
+ disguised="1">
+ </record>
+ <record name="BaseEffectPrivate"
+ c:type="GESBaseEffectPrivate"
+ disguised="1">
+ </record>
+ <class name="BaseTransitionClip"
+ c:symbol-prefix="base_transition_clip"
+ c:type="GESBaseTransitionClip"
+ parent="OperationClip"
+ abstract="1"
+ glib:type-name="GESBaseTransitionClip"
+ glib:get-type="ges_base_transition_clip_get_type"
+ glib:type-struct="BaseTransitionClipClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="OperationClip" c:type="GESOperationClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseTransitionClipPrivate"
+ c:type="GESBaseTransitionClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseTransitionClipClass"
+ c:type="GESBaseTransitionClipClass"
+ glib:is-gtype-struct-for="BaseTransitionClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="OperationClipClass" c:type="GESOperationClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseTransitionClipPrivate"
+ c:type="GESBaseTransitionClipPrivate"
+ disguised="1">
+ </record>
+ <class name="BaseXmlFormatter"
+ c:symbol-prefix="base_xml_formatter"
+ c:type="GESBaseXmlFormatter"
+ parent="Formatter"
+ abstract="1"
+ glib:type-name="GESBaseXmlFormatter"
+ glib:get-type="ges_base_xml_formatter_get_type"
+ glib:type-struct="BaseXmlFormatterClass">
+ <implements name="Extractable"/>
+ <field name="parent">
+ <type name="Formatter" c:type="GESFormatter"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseXmlFormatterPrivate"
+ c:type="GESBaseXmlFormatterPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseXmlFormatterClass"
+ c:type="GESBaseXmlFormatterClass"
+ glib:is-gtype-struct-for="BaseXmlFormatter">
+ <field name="parent">
+ <type name="FormatterClass" c:type="GESFormatterClass"/>
+ </field>
+ <field name="content_parser">
+ <type name="GLib.MarkupParser" c:type="GMarkupParser"/>
+ </field>
+ <field name="save">
+ <callback name="save" throws="1">
+ <return-value transfer-ownership="full">
+ <type name="GLib.String" c:type="GString*"/>
+ </return-value>
+ <parameters>
+ <parameter name="formatter" transfer-ownership="none">
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseXmlFormatterPrivate"
+ c:type="GESBaseXmlFormatterPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="ChildrenControlMode" c:type="GESChildrenControlMode">
+ <member name="update" value="0" c:identifier="GES_CHILDREN_UPDATE">
+ </member>
+ <member name="ignore_notifies"
+ value="1"
+ c:identifier="GES_CHILDREN_IGNORE_NOTIFIES">
+ </member>
+ <member name="update_offsets"
+ value="2"
+ c:identifier="GES_CHILDREN_UPDATE_OFFSETS">
+ </member>
+ <member name="update_all_values"
+ value="3"
+ c:identifier="GES_CHILDREN_UPDATE_ALL_VALUES">
+ </member>
+ <member name="last" value="4" c:identifier="GES_CHILDREN_LAST">
+ </member>
+ </enumeration>
+ <class name="Clip"
+ c:symbol-prefix="clip"
+ c:type="GESClip"
+ parent="Container"
+ abstract="1"
+ glib:type-name="GESClip"
+ glib:get-type="ges_clip_get_type"
+ glib:type-struct="ClipClass">
+ <doc xml:space="preserve">A #GESClip is a 'natural' object which controls one or more
+#GESTrackElement(s) in one or more #GESTrack(s).
+
+Keeps a reference to the #GESTrackElement(s) it created and
+sets/updates their properties.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <virtual-method name="create_track_element" introspectable="0">
+ <return-value>
+ <doc xml:space="preserve">the #GESTrackElement to be used, or %NULL if it can't provide one
+for the given @track.</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create_track_elements" introspectable="0">
+ <return-value>
+ <doc xml:space="preserve">%TRUE on success %FALSE on failure.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_asset" c:identifier="ges_clip_add_asset">
+ <doc xml:space="preserve">Extracts a #GESTrackElement from @asset and adds it to the @clip.
+Should only be called in order to add operations to a #GESClip,
+ni other cases TrackElement are added automatically when adding the
+#GESClip/#GESAsset to a layer.
+
+Takes a reference on @track_element.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">Created #GESTrackElement or NULL
+if an error happened</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESAsset with #GES_TYPE_TRACK_ELEMENT as extractable_type</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_track_element"
+ c:identifier="ges_clip_find_track_element">
+ <doc xml:space="preserve">Finds the #GESTrackElement controlled by @clip that is used in @track. You
+may optionally specify a GType to further narrow search criteria.
+
+Note: If many objects match, then the one with the highest priority will be
+returned.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GESTrackElement used by @track,
+else %NULL. Unref after usage</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="track"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GESTrack or NULL</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GType indicating the type of track element you are looking
+for or %G_TYPE_NONE if you do not care about the track type.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_track_elements"
+ c:identifier="ges_clip_find_track_elements">
+ <doc xml:space="preserve">Finds all the #GESTrackElement controlled by @clip that is used in @track. You
+may optionally specify a GType to further narrow search criteria.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of the
+#GESTrackElement contained in @clip.
+The refcount of the objects will be increased. The user will have to
+unref each #GESTrackElement and free the #GList.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TrackElement"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="track"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GESTrack or NULL</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ <parameter name="track_type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType indicating the type of tracks in which elements
+should be searched.</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GType indicating the type of track element you are looking
+for or %G_TYPE_NONE if you do not care about the track type.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_layer" c:identifier="ges_clip_get_layer">
+ <doc xml:space="preserve">Get the #GESLayer to which this clip belongs.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GESLayer where this @clip is being
+used, or %NULL if it is not used on any layer. The caller should unref it
+usage.</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_supported_formats"
+ c:identifier="ges_clip_get_supported_formats">
+ <doc xml:space="preserve">Get the formats supported by @clip.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The formats supported by @clip.</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_top_effect_index"
+ c:identifier="ges_clip_get_top_effect_index">
+ <doc xml:space="preserve">Gets the index position of an effect.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The top index of the effect, -1 if something went wrong.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="effect" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESBaseEffect we want to get the top index from</doc>
+ <type name="BaseEffect" c:type="GESBaseEffect*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_top_effect_position"
+ c:identifier="ges_clip_get_top_effect_position">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="effect" transfer-ownership="none">
+ <type name="BaseEffect" c:type="GESBaseEffect*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_top_effects" c:identifier="ges_clip_get_top_effects">
+ <doc xml:space="preserve">Get effects applied on @clip</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of the
+#GESBaseEffect that are applied on @clip order by ascendant priorities.
+The refcount of the objects will be increased. The user will have to
+unref each #GESBaseEffect and free the #GList.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TrackElement"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="move_to_layer" c:identifier="ges_clip_move_to_layer">
+ <doc xml:space="preserve">Moves @clip to @layer. If @clip is not in any layer, it adds it to
+@layer, else, it removes it from its current layer, and adds it to @layer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @clip could be moved %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">the new #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_supported_formats"
+ c:identifier="ges_clip_set_supported_formats">
+ <doc xml:space="preserve">Sets the formats supported by the file.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to set supported formats on</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="supportedformats" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackType defining formats supported by @clip</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_top_effect_index"
+ c:identifier="ges_clip_set_top_effect_index">
+ <doc xml:space="preserve">This is a convenience method that lets you set the index of a top effect.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @effect was successfuly moved, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="effect" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESBaseEffect to move</doc>
+ <type name="BaseEffect" c:type="GESBaseEffect*"/>
+ </parameter>
+ <parameter name="newindex" transfer-ownership="none">
+ <doc xml:space="preserve">the new index at which to move the @effect inside this
+#GESClip</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_top_effect_priority"
+ c:identifier="ges_clip_set_top_effect_priority">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="effect" transfer-ownership="none">
+ <type name="BaseEffect" c:type="GESBaseEffect*"/>
+ </parameter>
+ <parameter name="newpriority" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="split" c:identifier="ges_clip_split">
+ <doc xml:space="preserve">The function modifies @clip, and creates another #GESClip so we have two
+clips at the end, splitted at the time specified by @position, as a position
+in the timeline (not in the clip to be split). For example, if
+ges_clip_split is called on a 4-second clip playing from 0:01.00 until
+0:05.00, with a split position of 0:02.00, this will result in one clip of 1
+second and one clip of 3 seconds, not in two clips of 2 seconds.
+
+The newly created clip will be added to the same layer as @clip is in. This
+implies that @clip must be in a #GESLayer for the operation to be possible.
+
+This method supports clips playing at a different tempo than one second per
+second. For example, splitting a clip with a #GESEffect 'pitch tempo=1.5'
+four seconds after it starts, will set the inpoint of the new clip to six
+seconds after that of the clip to split. For this, the rate-changing
+property must be registered using @ges_effect_class_register_rate_property;
+for the 'pitch' plugin, this is already done.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESClip resulting
+from the splitting or %NULL if the clip can't be split.</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to split</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime representing the timeline position at which to split</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">The GESLayer where this clip is being used. If you want to connect to its
+notify signal you should connect to it with g_signal_connect_after as the
+signal emission can be stop in the first fase.</doc>
+ <type name="Layer"/>
+ </property>
+ <property name="supported-formats"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The formats supported by the clip.</doc>
+ <type name="TrackType"/>
+ </property>
+ <field name="parent">
+ <type name="Container" c:type="GESContainer"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ClipPrivate" c:type="GESClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <class name="ClipAsset"
+ c:symbol-prefix="clip_asset"
+ c:type="GESClipAsset"
+ parent="Asset"
+ glib:type-name="GESClipAsset"
+ glib:get-type="ges_clip_asset_get_type"
+ glib:type-struct="ClipAssetClass">
+ <doc xml:space="preserve">The #GESUriClipAsset is a special #GESAsset specilized in #GESClip.
+it is mostly used to get information about the #GESTrackType-s the objects extracted
+from it can potentialy create #GESTrackElement for.</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <method name="get_supported_formats"
+ c:identifier="ges_clip_asset_get_supported_formats">
+ <doc xml:space="preserve">Gets track types for which objects extracted from @self can create #GESTrackElement</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The track types on which @self will create TrackElement when added to
+a layer</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClipAsset</doc>
+ <type name="ClipAsset" c:type="GESClipAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_supported_formats"
+ c:identifier="ges_clip_asset_set_supported_formats">
+ <doc xml:space="preserve">Sets track types for which objects extracted from @self can create #GESTrackElement</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClipAsset</doc>
+ <type name="ClipAsset" c:type="GESClipAsset*"/>
+ </instance-parameter>
+ <parameter name="supportedformats" transfer-ownership="none">
+ <doc xml:space="preserve">The track types supported by the GESClipAsset</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="supported-formats"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The formats supported by the asset.</doc>
+ <type name="TrackType"/>
+ </property>
+ <field name="parent">
+ <type name="Asset" c:type="GESAsset"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ClipAssetPrivate" c:type="GESClipAssetPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="ClipAssetClass"
+ c:type="GESClipAssetClass"
+ glib:is-gtype-struct-for="ClipAsset">
+ <field name="parent">
+ <type name="AssetClass" c:type="GESAssetClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ClipAssetPrivate" c:type="GESClipAssetPrivate" disguised="1">
+ </record>
+ <record name="ClipClass"
+ c:type="GESClipClass"
+ glib:is-gtype-struct-for="Clip">
+ <doc xml:space="preserve">Subclasses can override the @create_track_element.</doc>
+ <field name="parent_class" readable="0" private="1">
+ <type name="ContainerClass" c:type="GESContainerClass"/>
+ </field>
+ <field name="create_track_element" introspectable="0">
+ <doc xml:space="preserve">method to create a single #GESTrackElement for a given #GESTrack.</doc>
+ <type name="CreateTrackElementFunc"
+ c:type="GESCreateTrackElementFunc"/>
+ </field>
+ <field name="create_track_elements" introspectable="0">
+ <doc xml:space="preserve">method to create multiple #GESTrackElements for a
+#GESTrack.</doc>
+ <type name="CreateTrackElementsFunc"
+ c:type="GESCreateTrackElementsFunc"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ClipPrivate" c:type="GESClipPrivate" disguised="1">
+ </record>
+ <class name="CommandLineFormatter"
+ c:symbol-prefix="command_line_formatter"
+ c:type="GESCommandLineFormatter"
+ parent="Formatter"
+ glib:type-name="GESCommandLineFormatter"
+ glib:get-type="ges_command_line_formatter_get_type"
+ glib:type-struct="CommandLineFormatterClass">
+ <implements name="Extractable"/>
+ <function name="get_help"
+ c:identifier="ges_command_line_formatter_get_help">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="nargs" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="commands" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <field name="parent_instance">
+ <type name="Formatter" c:type="GESFormatter"/>
+ </field>
+ <field name="priv">
+ <type name="CommandLineFormatterPrivate"
+ c:type="GESCommandLineFormatterPrivate*"/>
+ </field>
+ </class>
+ <record name="CommandLineFormatterClass"
+ c:type="GESCommandLineFormatterClass"
+ glib:is-gtype-struct-for="CommandLineFormatter">
+ <field name="parent_class">
+ <type name="FormatterClass" c:type="GESFormatterClass"/>
+ </field>
+ </record>
+ <record name="CommandLineFormatterPrivate"
+ c:type="GESCommandLineFormatterPrivate"
+ disguised="1">
+ </record>
+ <class name="Container"
+ c:symbol-prefix="container"
+ c:type="GESContainer"
+ parent="TimelineElement"
+ abstract="1"
+ glib:type-name="GESContainer"
+ glib:get-type="ges_container_get_type"
+ glib:type-struct="ContainerClass">
+ <doc xml:space="preserve">The #GESContainer base class.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <function name="group" c:identifier="ges_container_group">
+ <doc xml:space="preserve">Groups the #GESContainer-s provided in @containers. It creates a subclass
+of #GESContainer, depending on the containers provided in @containers.
+Basically, if all the containers in @containers should be contained in a same
+clip (all the #GESTrackElement they contain have the exact same
+start/inpoint/duration and are in the same layer), it will create a #GESClip
+otherwise a #GESGroup will be created</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GESContainer (subclass) resulting of the
+grouping</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="containers"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The
+#GESContainer to group, they must all be in a same #GESTimeline</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Container"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="add_child">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="child_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="child_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="edit" invoker="edit">
+ <doc xml:space="preserve">Edit @container in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the container as been edited properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to edit</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="layers" transfer-ownership="none">
+ <doc xml:space="preserve">The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </parameter>
+ <parameter name="new_layer_priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEditMode in which the editition will happen.</doc>
+ <type name="EditMode" c:type="GESEditMode"/>
+ </parameter>
+ <parameter name="edge" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEdge the edit should happen on.</doc>
+ <type name="Edge" c:type="GESEdge"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position at which to edit @container (in nanosecond)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="remove_child">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="ungroup" invoker="ungroup">
+ <doc xml:space="preserve">Ungroups the #GESTimelineElement contained in this GESContainer,
+creating new #GESContainer containing those #GESTimelineElement
+apropriately.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Container"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="full">
+ <doc xml:space="preserve">The #GESContainer to ungroup</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="recursive" transfer-ownership="none">
+ <doc xml:space="preserve">Wether to recursively ungroup @container</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add" c:identifier="ges_container_add">
+ <doc xml:space="preserve">Add the #GESTimelineElement to the container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success, %FALSE on failure.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESContainer</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="edit" c:identifier="ges_container_edit">
+ <doc xml:space="preserve">Edit @container in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the container as been edited properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to edit</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="layers" transfer-ownership="none">
+ <doc xml:space="preserve">The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </parameter>
+ <parameter name="new_layer_priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEditMode in which the editition will happen.</doc>
+ <type name="EditMode" c:type="GESEditMode"/>
+ </parameter>
+ <parameter name="edge" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEdge the edit should happen on.</doc>
+ <type name="Edge" c:type="GESEdge"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position at which to edit @container (in nanosecond)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_children" c:identifier="ges_container_get_children">
+ <doc xml:space="preserve">Get the list of #GESTimelineElement contained in @container
+The user is responsible for unreffing the contained objects
+and freeing the list.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of
+timeline element contained in @container.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TimelineElement"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESContainer</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="recursive" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to recursively get children in @container</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove" c:identifier="ges_container_remove">
+ <doc xml:space="preserve">Release the @child from the control of @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @child was properly released, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESContainer</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTimelineElement to release</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="ungroup" c:identifier="ges_container_ungroup">
+ <doc xml:space="preserve">Ungroups the #GESTimelineElement contained in this GESContainer,
+creating new #GESContainer containing those #GESTimelineElement
+apropriately.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Container"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="full">
+ <doc xml:space="preserve">The #GESContainer to ungroup</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </instance-parameter>
+ <parameter name="recursive" transfer-ownership="none">
+ <doc xml:space="preserve">Wether to recursively ungroup @container</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="height" transfer-ownership="none">
+ <doc xml:space="preserve">The span of priorities which this container occupies.</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <field name="parent">
+ <type name="TimelineElement" c:type="GESTimelineElement"/>
+ </field>
+ <field name="children">
+ <doc xml:space="preserve">A list of TimelineElement
+controlled by this Container. NOTE: Do not modify.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TimelineElement"/>
+ </type>
+ </field>
+ <field name="height">
+ <doc xml:space="preserve">The span of priorities this container occupies</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="children_control_mode">
+ <type name="ChildrenControlMode" c:type="GESChildrenControlMode"/>
+ </field>
+ <field name="initiated_move">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ContainerPrivate" c:type="GESContainerPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="child-added" when="first">
+ <doc xml:space="preserve">Will be emitted after a child was added to @container.
+Usually you should connect with #g_signal_connect_after
+as in the first emission stage, the signal emission might
+get stopped internally.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTimelineElement that was added.</doc>
+ <type name="TimelineElement"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="child-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after a child was removed from @container.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTimelineElement that was removed.</doc>
+ <type name="TimelineElement"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="ContainerClass"
+ c:type="GESContainerClass"
+ glib:is-gtype-struct-for="Container">
+ <field name="parent_class" readable="0" private="1">
+ <type name="TimelineElementClass" c:type="GESTimelineElementClass"/>
+ </field>
+ <field name="child_added">
+ <callback name="child_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="child_removed">
+ <callback name="child_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="add_child">
+ <callback name="add_child">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="remove_child">
+ <callback name="remove_child">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="ungroup">
+ <callback name="ungroup">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Container"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="full">
+ <doc xml:space="preserve">The #GESContainer to ungroup</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="recursive" transfer-ownership="none">
+ <doc xml:space="preserve">Wether to recursively ungroup @container</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="group" introspectable="0">
+ <callback name="group" introspectable="0">
+ <return-value>
+ <type name="Container" c:type="GESContainer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="containers" transfer-ownership="none">
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="edit">
+ <callback name="edit">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the container as been edited properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to edit</doc>
+ <type name="Container" c:type="GESContainer*"/>
+ </parameter>
+ <parameter name="layers" transfer-ownership="none">
+ <doc xml:space="preserve">The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </parameter>
+ <parameter name="new_layer_priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEditMode in which the editition will happen.</doc>
+ <type name="EditMode" c:type="GESEditMode"/>
+ </parameter>
+ <parameter name="edge" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEdge the edit should happen on.</doc>
+ <type name="Edge" c:type="GESEdge"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position at which to edit @container (in nanosecond)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="grouping_priority" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ContainerPrivate" c:type="GESContainerPrivate" disguised="1">
+ </record>
+ <callback name="CreateElementForGapFunc"
+ c:type="GESCreateElementForGapFunc"
+ introspectable="0">
+ <doc xml:space="preserve">A function that will be called to create the #GstElement that will be used
+as a source to fill the gaps in @track.</doc>
+ <return-value>
+ <doc xml:space="preserve">A #GstElement (must be a source) that will be used to
+fill the gaps (periods of time in @track that containes no source).</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CreateTrackElementFunc"
+ c:type="GESCreateTrackElementFunc"
+ introspectable="0">
+ <doc xml:space="preserve">Creates the 'primary' track element for this @clip.
+
+Subclasses should implement this method if they only provide a
+single #GESTrackElement per track.
+
+If the subclass needs to create more than one #GESTrackElement for a
+given track, then it should implement the 'create_track_elements'
+method instead.
+
+The implementer of this function shall return the proper #GESTrackElement
+that should be controlled by @clip for the given @track.
+
+The returned #GESTrackElement will be automatically added to the list
+of objects controlled by the #GESClip.</doc>
+ <return-value>
+ <doc xml:space="preserve">the #GESTrackElement to be used, or %NULL if it can't provide one
+for the given @track.</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CreateTrackElementsFunc"
+ c:type="GESCreateTrackElementsFunc"
+ introspectable="0">
+ <doc xml:space="preserve">Create all track elements this clip handles for this type of track.
+
+Subclasses should implement this method if they potentially need to
+return more than one #GESTrackElement(s) for a given #GESTrack.</doc>
+ <return-value>
+ <doc xml:space="preserve">%TRUE on success %FALSE on failure.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="Edge"
+ glib:type-name="GESEdge"
+ glib:get-type="ges_edge_get_type"
+ c:type="GESEdge">
+ <doc xml:space="preserve">The edges of an object contain in a #GESTimeline or #GESTrack</doc>
+ <member name="edge_start"
+ value="0"
+ c:identifier="GES_EDGE_START"
+ glib:nick="edge_start">
+ <doc xml:space="preserve">Represents the start of an object.</doc>
+ </member>
+ <member name="edge_end"
+ value="1"
+ c:identifier="GES_EDGE_END"
+ glib:nick="edge_end">
+ <doc xml:space="preserve">Represents the end of an object.</doc>
+ </member>
+ <member name="edge_none"
+ value="2"
+ c:identifier="GES_EDGE_NONE"
+ glib:nick="edge_none">
+ <doc xml:space="preserve">Represent the fact we are not workin with any edge of an
+ object.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="EditMode"
+ glib:type-name="GESEditMode"
+ glib:get-type="ges_edit_mode_get_type"
+ c:type="GESEditMode">
+ <doc xml:space="preserve">You can also find more explanation about the behaviour of those modes at:
+&lt;ulink url="http://pitivi.org/manual/trimming.html"&gt; trim, ripple and roll&lt;/ulink&gt;
+and &lt;ulink url="http://pitivi.org/manual/usingclips.html"&gt;clip management&lt;/ulink&gt;.</doc>
+ <member name="edit_normal"
+ value="0"
+ c:identifier="GES_EDIT_MODE_NORMAL"
+ glib:nick="edit_normal">
+ <doc xml:space="preserve">The object is edited the normal way (default).</doc>
+ </member>
+ <member name="edit_ripple"
+ value="1"
+ c:identifier="GES_EDIT_MODE_RIPPLE"
+ glib:nick="edit_ripple">
+ <doc xml:space="preserve">The objects are edited in ripple mode.
+ The Ripple mode allows you to modify the beginning/end of a clip
+ and move the neighbours accordingly. This will change the overall
+ timeline duration. In the case of ripple end, the duration of the
+ clip being rippled can't be superior to its max_duration - inpoint
+ otherwise the action won't be executed.</doc>
+ </member>
+ <member name="edit_roll"
+ value="2"
+ c:identifier="GES_EDIT_MODE_ROLL"
+ glib:nick="edit_roll">
+ <doc xml:space="preserve">The object is edited in roll mode.
+ The Roll mode allows you to modify the position of an editing point
+ between two clips without modifying the inpoint of the first clip
+ nor the out-point of the second clip. This will not change the
+ overall timeline duration.</doc>
+ </member>
+ <member name="edit_trim"
+ value="3"
+ c:identifier="GES_EDIT_MODE_TRIM"
+ glib:nick="edit_trim">
+ <doc xml:space="preserve">The object is edited in trim mode.
+ The Trim mode allows you to modify the in-point/duration of a clip
+ without modifying its position in the timeline.</doc>
+ </member>
+ <member name="edit_slide"
+ value="4"
+ c:identifier="GES_EDIT_MODE_SLIDE"
+ glib:nick="edit_slide">
+ <doc xml:space="preserve">The object is edited in slide mode.
+ The Slide mode allows you to modify the position of a clip in a
+ timeline without modifying its duration or its in-point, but will
+ modify the duration of the previous clip and in-point of the
+ following clip so does not modify the overall timeline duration.
+ (not implemented yet)</doc>
+ </member>
+ </enumeration>
+ <class name="Effect"
+ c:symbol-prefix="effect"
+ c:type="GESEffect"
+ parent="BaseEffect"
+ glib:type-name="GESEffect"
+ glib:get-type="ges_effect_get_type"
+ glib:type-struct="EffectClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_effect_new">
+ <doc xml:space="preserve">Creates a new #GESEffect from the description of the bin. It should be
+possible to determine the type of the effect through the element
+'klass' metadata of the GstElements that will be created.
+In that corner case, you should use:
+#ges_asset_request (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL);
+and extract that asset to be in full control.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a newly created #GESEffect, or %NULL if something went
+wrong.</doc>
+ <type name="Effect" c:type="GESEffect*"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin_description" transfer-ownership="none">
+ <doc xml:space="preserve">The gst-launch like bin description of the effect</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="bin-description"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The description of the effect bin with a gst-launch-style
+pipeline description.
+
+Example: "videobalance saturation=1.5 hue=+0.5"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="BaseEffect" c:type="GESBaseEffect"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="EffectPrivate" c:type="GESEffectPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <class name="EffectAsset"
+ c:symbol-prefix="effect_asset"
+ c:type="GESEffectAsset"
+ parent="TrackElementAsset"
+ glib:type-name="GESEffectAsset"
+ glib:get-type="ges_effect_asset_get_type"
+ glib:type-struct="EffectAssetClass">
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <field name="parent_instance">
+ <type name="TrackElementAsset" c:type="GESTrackElementAsset"/>
+ </field>
+ <field name="priv">
+ <type name="EffectAssetPrivate" c:type="GESEffectAssetPrivate*"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="EffectAssetClass"
+ c:type="GESEffectAssetClass"
+ glib:is-gtype-struct-for="EffectAsset">
+ <field name="parent_class">
+ <type name="TrackElementAssetClass"
+ c:type="GESTrackElementAssetClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="EffectAssetPrivate"
+ c:type="GESEffectAssetPrivate"
+ disguised="1">
+ </record>
+ <record name="EffectClass"
+ c:type="GESEffectClass"
+ glib:is-gtype-struct-for="Effect">
+ <field name="parent_class" readable="0" private="1">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="BaseEffectClass" c:type="GESBaseEffectClass"/>
+ </field>
+ <field name="rate_properties" readable="0" private="1">
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="register_rate_property"
+ c:identifier="ges_effect_class_register_rate_property">
+ <doc xml:space="preserve">Register an element that can change the rate at which media is playing. The
+property type must be float or double, and must be a factor of the rate,
+i.e. a value of 2.0 must mean that the media plays twice as fast. For
+example, this is true for the properties 'rate' and 'tempo' of the element
+'pitch', which is already registered by default. By registering the element,
+timeline duration can be correctly converted into media duration, allowing
+the right segment seeks to be sent to the sources.
+
+A reference to the GESEffectClass can be obtained as follows:
+ GES_EFFECT_CLASS (g_type_class_ref (GES_TYPE_EFFECT));</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether the rate property was succesfully registered. When this
+method returns false, a warning is emitted with more information.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">Instance of the GESEffectClass</doc>
+ <type name="EffectClass" c:type="GESEffectClass*"/>
+ </instance-parameter>
+ <parameter name="element_name" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the GstElement that changes the rate</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the property that changes the rate</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="EffectClip"
+ c:symbol-prefix="effect_clip"
+ c:type="GESEffectClip"
+ parent="BaseEffectClip"
+ glib:type-name="GESEffectClip"
+ glib:get-type="ges_effect_clip_get_type"
+ glib:type-struct="EffectClipClass">
+ <doc xml:space="preserve">The effect will be applied on the sources that have lower priorities
+(higher number) between the inpoint and the end of it.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_effect_clip_new">
+ <doc xml:space="preserve">Creates a new #GESEffectClip from the description of the bin.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a newly created #GESEffectClip, or
+%NULL if something went wrong.</doc>
+ <type name="EffectClip" c:type="GESEffectClip*"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_bin_description" transfer-ownership="none">
+ <doc xml:space="preserve">The gst-launch like bin description of the effect</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="audio_bin_description" transfer-ownership="none">
+ <doc xml:space="preserve">The gst-launch like bin description of the effect</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="audio-bin-description"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The description of the audio track of the effect bin with a gst-launch-style
+pipeline description. This should be used for test purposes.
+
+Example: "audiopanorama panorama=1.0"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="video-bin-description"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The description of the video track of the effect bin with a gst-launch-style
+pipeline description. This should be used for test purposes.
+
+Example: "videobalance saturation=1.5 hue=+0.5"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="BaseEffectClip" c:type="GESBaseEffectClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="EffectClipPrivate" c:type="GESEffectClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="EffectClipClass"
+ c:type="GESEffectClipClass"
+ glib:is-gtype-struct-for="EffectClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="BaseEffectClipClass" c:type="GESBaseEffectClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="EffectClipPrivate"
+ c:type="GESEffectClipPrivate"
+ disguised="1">
+ </record>
+ <record name="EffectPrivate" c:type="GESEffectPrivate" disguised="1">
+ </record>
+ <enumeration name="Error" c:type="GESError">
+ <member name="asset_wrong_id"
+ value="0"
+ c:identifier="GES_ERROR_ASSET_WRONG_ID">
+ <doc xml:space="preserve">The ID passed is malformed</doc>
+ </member>
+ <member name="asset_loading"
+ value="1"
+ c:identifier="GES_ERROR_ASSET_LOADING">
+ <doc xml:space="preserve">An error happened while loading the asset</doc>
+ </member>
+ <member name="formatter_malformed_input_file"
+ value="2"
+ c:identifier="GES_ERROR_FORMATTER_MALFORMED_INPUT_FILE">
+ <doc xml:space="preserve">The formatted files was malformed</doc>
+ </member>
+ </enumeration>
+ <interface name="Extractable"
+ c:symbol-prefix="extractable"
+ c:type="GESExtractable"
+ glib:type-name="GESExtractable"
+ glib:get-type="ges_extractable_get_type"
+ glib:type-struct="ExtractableInterface">
+ <doc xml:space="preserve">FIXME: Long description needed</doc>
+ <prerequisite name="GObject.InitiallyUnowned"/>
+ <virtual-method name="get_id" invoker="get_id">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #id of the associated #GESAsset, free with #g_free</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_asset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_asset_full">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_asset" c:identifier="ges_extractable_get_asset">
+ <doc xml:space="preserve">Method for getting an asset from a #GESExtractable</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GESAsset or %NULL if none has
+been set</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESExtractable from which to retrieve a #GESAsset</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_id" c:identifier="ges_extractable_get_id">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #id of the associated #GESAsset, free with #g_free</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_asset" c:identifier="ges_extractable_set_asset">
+ <doc xml:space="preserve">Method to set the asset which instantiated the specified object</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @asset could be set %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">Target object</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset to set</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <callback name="ExtractableCheckId"
+ c:type="GESExtractableCheckId"
+ throws="1">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The ID to use for the asset or %NULL if @id is not valid</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType to check @id for:</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The id to check</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="ExtractableInterface"
+ c:type="GESExtractableInterface"
+ glib:is-gtype-struct-for="Extractable">
+ <field name="parent">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="asset_type">
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="check_id">
+ <type name="ExtractableCheckId" c:type="GESExtractableCheckId"/>
+ </field>
+ <field name="can_update_asset">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="set_asset">
+ <callback name="set_asset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_asset_full">
+ <callback name="set_asset_full">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_parameters_from_id" introspectable="0">
+ <callback name="get_parameters_from_id" introspectable="0">
+ <return-value>
+ <type name="GObject.Parameter" c:type="GParameter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="n_params" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_id">
+ <callback name="get_id">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #id of the associated #GESAsset, free with #g_free</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESExtractable</doc>
+ <type name="Extractable" c:type="GESExtractable*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_real_extractable_type">
+ <callback name="get_real_extractable_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="wanted_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="register_metas">
+ <callback name="register_metas">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="ExtractableInterface"
+ c:type="GESExtractableInterface*"/>
+ </parameter>
+ <parameter name="klass" transfer-ownership="none">
+ <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="FillTrackElementFunc" c:type="GESFillTrackElementFunc">
+ <doc xml:space="preserve">A function that will be called when the GNonLin object of a corresponding
+track element needs to be filled.
+
+The implementer of this function shall add the proper #GstElement to @nleobj
+using gst_bin_add().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the implementer succesfully filled the @nleobj, else #FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip controlling the track elements</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ <parameter name="track_element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ <parameter name="nleobj" transfer-ownership="none">
+ <doc xml:space="preserve">the GNonLin object that needs to be filled.</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="Formatter"
+ c:symbol-prefix="formatter"
+ c:type="GESFormatter"
+ parent="GObject.InitiallyUnowned"
+ abstract="1"
+ glib:type-name="GESFormatter"
+ glib:get-type="ges_formatter_get_type"
+ glib:type-struct="FormatterClass">
+ <doc xml:space="preserve">Base class for timeline data serialization and deserialization.</doc>
+ <implements name="Extractable"/>
+ <function name="can_load_uri"
+ c:identifier="ges_formatter_can_load_uri"
+ throws="1">
+ <doc xml:space="preserve">Checks if there is a #GESFormatter available which can load a #GESTimeline
+from the given URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if there is a #GESFormatter that can support the given uri
+or FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to the URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="can_save_uri"
+ c:identifier="ges_formatter_can_save_uri"
+ throws="1">
+ <doc xml:space="preserve">Returns TRUE if there is a #GESFormatter available which can save a
+#GESTimeline to the given URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the given @uri is supported, else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_default" c:identifier="ges_formatter_get_default">
+ <doc xml:space="preserve">Get the default #GESAsset to use as formatter. It will return
+the asset for the #GESFormatter that has the highest @rank</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset for the formatter with highest @rank</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ </function>
+ <virtual-method name="can_load_uri" throws="1">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dummy_instance" transfer-ownership="none">
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="load_from_uri" invoker="load_from_uri" throws="1">
+ <doc xml:space="preserve">Load data from the given URI into timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="save_to_uri" invoker="save_to_uri" throws="1">
+ <doc xml:space="preserve">Save data from timeline to the given URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully saved to the URI
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="overwrite" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to overwrite file if it exists</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="load_from_uri"
+ c:identifier="ges_formatter_load_from_uri"
+ throws="1">
+ <doc xml:space="preserve">Load data from the given URI into timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="save_to_uri"
+ c:identifier="ges_formatter_save_to_uri"
+ throws="1">
+ <doc xml:space="preserve">Save data from timeline to the given URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully saved to the URI
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="overwrite" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to overwrite file if it exists</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="FormatterPrivate" c:type="GESFormatterPrivate*"/>
+ </field>
+ <field name="project" readable="0" private="1">
+ <type name="Project" c:type="GESProject*"/>
+ </field>
+ <field name="timeline" readable="0" private="1">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <callback name="FormatterCanLoadURIMethod"
+ c:type="GESFormatterCanLoadURIMethod"
+ throws="1">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dummy_instance" transfer-ownership="none">
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="FormatterClass"
+ c:type="GESFormatterClass"
+ glib:is-gtype-struct-for="Formatter">
+ <doc xml:space="preserve">GES Formatter class. Override the vmethods to implement the formatter functionnality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="GObject.InitiallyUnownedClass"
+ c:type="GInitiallyUnownedClass"/>
+ </field>
+ <field name="can_load_uri">
+ <doc xml:space="preserve">Whether the URI can be loaded</doc>
+ <type name="FormatterCanLoadURIMethod"
+ c:type="GESFormatterCanLoadURIMethod"/>
+ </field>
+ <field name="load_from_uri">
+ <doc xml:space="preserve">class method to deserialize data from a URI</doc>
+ <type name="FormatterLoadFromURIMethod"
+ c:type="GESFormatterLoadFromURIMethod"/>
+ </field>
+ <field name="save_to_uri">
+ <doc xml:space="preserve">class method to serialize data to a URI</doc>
+ <type name="FormatterSaveToURIMethod"
+ c:type="GESFormatterSaveToURIMethod"/>
+ </field>
+ <field name="name" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="extension" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="mimetype" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="version" readable="0" private="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="rank" readable="0" private="1">
+ <type name="Gst.Rank" c:type="GstRank"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="register_metas"
+ c:identifier="ges_formatter_class_register_metas">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <type name="FormatterClass" c:type="GESFormatterClass*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="extension" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="mimetype" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="version" transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <type name="Gst.Rank" c:type="GstRank"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="FormatterLoadFromURIMethod"
+ c:type="GESFormatterLoadFromURIMethod"
+ throws="1">
+ <doc xml:space="preserve">Virtual method for loading a timeline from a given URI.
+
+Every #GESFormatter subclass needs to implement this method.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="FormatterPrivate" c:type="GESFormatterPrivate" disguised="1">
+ </record>
+ <callback name="FormatterSaveToURIMethod"
+ c:type="GESFormatterSaveToURIMethod"
+ throws="1">
+ <doc xml:space="preserve">Virtual method for saving a timeline to a uri.
+
+Every #GESFormatter subclass needs to implement this method.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the timeline data was successfully saved to the URI
+else FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="formatter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESFormatter</doc>
+ <type name="Formatter" c:type="GESFormatter*"/>
+ </parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar * pointing to a URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="overwrite" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to overwrite file if it exists</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="Group"
+ c:symbol-prefix="group"
+ c:type="GESGroup"
+ parent="Container"
+ glib:type-name="GESGroup"
+ glib:get-type="ges_group_get_type"
+ glib:type-struct="GroupClass">
+ <doc xml:space="preserve">A #GESGroup is an object which controls one or more
+#GESClips in one or more #GESLayer(s).
+
+To instanciate a group, you should use the ges_container_group method,
+this will be responsible for deciding what subclass of #GESContainer
+should be instaciated to group the various #GESTimelineElement passed
+in parametter.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_group_new">
+ <doc xml:space="preserve">Created a new empty #GESGroup, if you want to group several container
+together, it is recommanded to use the #ges_container_group method so the
+proper subclass is selected.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new empty group.</doc>
+ <type name="Group" c:type="GESGroup*"/>
+ </return-value>
+ </constructor>
+ <property name="duration" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The duration (in nanoseconds) which will be used in the container</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="in-point" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The in-point at which this #GESGroup will start outputting data
+from its contents (in nanoseconds).
+
+Ex : an in-point of 5 seconds means that the first outputted buffer will
+be the one located 5 seconds in the controlled resource.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="max-duration"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The maximum duration (in nanoseconds) of the #GESGroup.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="priority" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="start" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The position of the object in its container (in nanoseconds).</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="parent">
+ <type name="Container" c:type="GESContainer"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="GroupPrivate" c:type="GESGroupPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="GroupClass"
+ c:type="GESGroupClass"
+ glib:is-gtype-struct-for="Group">
+ <field name="parent_class">
+ <type name="ContainerClass" c:type="GESContainerClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="GroupPrivate" c:type="GESGroupPrivate" disguised="1">
+ </record>
+ <class name="ImageSource"
+ c:symbol-prefix="image_source"
+ c:type="GESImageSource"
+ parent="VideoSource"
+ glib:type-name="GESImageSource"
+ glib:get-type="ges_image_source_get_type"
+ glib:type-struct="ImageSourceClass">
+ <doc xml:space="preserve">Outputs the video stream from a given file as a still frame. The frame
+chosen will be determined by the in-point property on the track element. For
+image files, do not set the in-point property.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The location of the file/resource to use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="VideoSource" c:type="GESVideoSource"/>
+ </field>
+ <field name="uri" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ImageSourcePrivate" c:type="GESImageSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="ImageSourceClass"
+ c:type="GESImageSourceClass"
+ glib:is-gtype-struct-for="ImageSource">
+ <field name="parent_class">
+ <type name="VideoSourceClass" c:type="GESVideoSourceClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ImageSourcePrivate"
+ c:type="GESImageSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="Layer"
+ c:symbol-prefix="layer"
+ c:type="GESLayer"
+ parent="GObject.InitiallyUnowned"
+ glib:type-name="GESLayer"
+ glib:get-type="ges_layer_get_type"
+ glib:type-struct="LayerClass">
+ <doc xml:space="preserve">Responsible for the ordering of the various contained Clip(s). A
+timeline layer has a "priority" property, which is used to manage the
+priorities of individual Clips. Two layers should not have the
+same priority within a given timeline.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_layer_new">
+ <doc xml:space="preserve">Creates a new #GESLayer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </return-value>
+ </constructor>
+ <virtual-method name="get_objects" introspectable="0">
+ <return-value>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="object_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="object_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_asset" c:identifier="ges_layer_add_asset">
+ <doc xml:space="preserve">Creates Clip from asset, adds it to layer and
+returns a reference to it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Created #GESClip</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The asset to add to</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The start value to set on the new #GESClip,
+if @start == GST_CLOCK_TIME_NONE, it will be set to
+the current duration of @layer</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="inpoint" transfer-ownership="none">
+ <doc xml:space="preserve">The inpoint value to set on the new #GESClip</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">The duration value to set on the new #GESClip</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="track_types" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackType to set on the the new #GESClip</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_clip" c:identifier="ges_layer_add_clip">
+ <doc xml:space="preserve">Adds the given clip to the layer. Sets the clip's parent, and thus
+takes ownership of the clip.
+
+An clip can only be added to one layer.
+
+Calling this method will construct and properly set all the media related
+elements on @clip. If you need to know when those objects (actually #GESTrackElement)
+are constructed, you should connect to the container::child-added signal which
+is emited right after those elements are ready to be used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the clip was properly added to the layer, or %FALSE
+if the @layer refuses to add the clip.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to add.</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_auto_transition"
+ c:identifier="ges_layer_get_auto_transition">
+ <doc xml:space="preserve">Gets whether transitions are automatically added when objects
+overlap or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if transitions are automatically added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_clips" c:identifier="ges_layer_get_clips">
+ <doc xml:space="preserve">Get the clips this layer contains.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+clips. The user is responsible for
+unreffing the contained objects and freeing the list.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Clip"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_clips_in_interval"
+ c:identifier="ges_layer_get_clips_in_interval">
+ <doc xml:space="preserve">Gets the clips which appear between @start and @end on @layer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of clips intersecting [@start, @end) interval on @layer.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Clip"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">start of the interval</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">end of the interval</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_duration" c:identifier="ges_layer_get_duration">
+ <doc xml:space="preserve">Lets you retrieve the duration of the layer, which means
+the end time of the last clip inside it</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The duration of a layer</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESLayer to get the duration from</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_priority" c:identifier="ges_layer_get_priority">
+ <doc xml:space="preserve">Get the priority of @layer within the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the @layer within the timeline.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timeline" c:identifier="ges_layer_get_timeline">
+ <doc xml:space="preserve">Get the #GESTimeline in which #GESLayer currently is.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GESTimeline in which #GESLayer
+currently is or %NULL if not in any timeline yet.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESLayer to get the parent #GESTimeline from</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_empty" c:identifier="ges_layer_is_empty">
+ <doc xml:space="preserve">Convenience method to check if @layer is empty (doesn't contain any clip),
+or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @layer is empty, %FALSE if it already contains at least
+one #GESClip</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESLayer to check</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_clip" c:identifier="ges_layer_remove_clip">
+ <doc xml:space="preserve">Removes the given @clip from the @layer and unparents it.
+Unparenting it means the reference owned by @layer on the @clip will be
+removed. If you wish to use the @clip after this function, make sure you
+call gst_object_ref() before removing it from the @layer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the clip could be removed, %FALSE if the layer does
+not want to remove the clip.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip to remove</doc>
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_auto_transition"
+ c:identifier="ges_layer_set_auto_transition">
+ <doc xml:space="preserve">Sets the layer to the given @auto_transition. See the documentation of the
+property auto_transition for more information.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="auto_transition" transfer-ownership="none">
+ <doc xml:space="preserve">whether the auto_transition is active</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_priority" c:identifier="ges_layer_set_priority">
+ <doc xml:space="preserve">Sets the layer to the given @priority. See the documentation of the
+priority property for more information.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <doc xml:space="preserve">the priority to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timeline" c:identifier="ges_layer_set_timeline">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="auto-transition" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Sets whether transitions are added automagically when clips overlap.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="priority" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the layer in the #GESTimeline. 0 is the highest
+priority. Conceptually, a #GESTimeline is a stack of GESLayers,
+and the priority of the layer represents its position in the stack. Two
+layers should not have the same priority within a given GESTimeline.
+
+Note that the timeline needs to be commited (with #ges_timeline_commit)
+for the change to be taken into account.</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <field name="parent">
+ <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+ </field>
+ <field name="timeline">
+ <doc xml:space="preserve">the #GESTimeline where this layer is being used.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </field>
+ <field name="min_nle_priority">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="max_nle_priority">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="priv">
+ <type name="LayerPrivate" c:type="GESLayerPrivate*"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="clip-added" when="first">
+ <doc xml:space="preserve">Will be emitted after the clip was added to the layer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip that was added.</doc>
+ <type name="Clip"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="clip-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after the clip was removed from the layer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESClip that was removed</doc>
+ <type name="Clip"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="LayerClass"
+ c:type="GESLayerClass"
+ glib:is-gtype-struct-for="Layer">
+ <doc xml:space="preserve">Subclasses can override the @get_objects if they can provide a more
+efficient way of providing the list of contained #GESClip(s).</doc>
+ <field name="parent_class" readable="0" private="1">
+ <type name="GObject.InitiallyUnownedClass"
+ c:type="GInitiallyUnownedClass"/>
+ </field>
+ <field name="get_objects" introspectable="0">
+ <callback name="get_objects" introspectable="0">
+ <return-value>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="object_added">
+ <callback name="object_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="object_removed">
+ <callback name="object_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Clip" c:type="GESClip*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="LayerPrivate" c:type="GESLayerPrivate" disguised="1">
+ </record>
+ <constant name="META_DESCRIPTION"
+ value="description"
+ c:type="GES_META_DESCRIPTION">
+ <doc xml:space="preserve">The description of an object, can be used in various context (string)
+
+The description</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMATTER_EXTENSION"
+ value="extension"
+ c:type="GES_META_FORMATTER_EXTENSION">
+ <doc xml:space="preserve">The extension of the files produced by a formatter (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMATTER_MIMETYPE"
+ value="mimetype"
+ c:type="GES_META_FORMATTER_MIMETYPE">
+ <doc xml:space="preserve">Mimetype used for the file produced by a formatter (string)
+
+The mime type</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMATTER_NAME"
+ value="name"
+ c:type="GES_META_FORMATTER_NAME">
+ <doc xml:space="preserve">Name of a formatter it is used as ID of Formater assets (string)
+
+The name of the formatter</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMATTER_RANK"
+ value="rank"
+ c:type="GES_META_FORMATTER_RANK">
+ <doc xml:space="preserve">The rank of a formatter (GstRank)
+
+The rank of a formatter</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMATTER_VERSION"
+ value="version"
+ c:type="GES_META_FORMATTER_VERSION">
+ <doc xml:space="preserve">The version of a formatter (double)
+
+The formatter version</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_FORMAT_VERSION"
+ value="format-version"
+ c:type="GES_META_FORMAT_VERSION">
+ <doc xml:space="preserve">The version of the format in which a project is serialized</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_VOLUME" value="volume" c:type="GES_META_VOLUME">
+ <doc xml:space="preserve">The volume, can be used for audio track or layers
+
+The volume for a track or a layer, it is register as a float</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_VOLUME_DEFAULT"
+ value="1.000000"
+ c:type="GES_META_VOLUME_DEFAULT">
+ <doc xml:space="preserve">The default volume
+
+The default volume for a track or a layer as a float</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </constant>
+ <constant name="MULTI_FILE_URI_PREFIX"
+ value="multifile://"
+ c:type="GES_MULTI_FILE_URI_PREFIX">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <interface name="MetaContainer"
+ c:symbol-prefix="meta_container"
+ c:type="GESMetaContainer"
+ glib:type-name="GESMetaContainer"
+ glib:get-type="ges_meta_container_get_type"
+ glib:type-struct="MetaContainerInterface">
+ <doc xml:space="preserve">Interface that allows reading and writing meta</doc>
+ <method name="add_metas_from_string"
+ c:identifier="ges_meta_container_add_metas_from_string">
+ <doc xml:space="preserve">Deserializes a meta container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE on success, FALSE if there was an error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="str" transfer-ownership="none">
+ <doc xml:space="preserve">a string created with ges_meta_container_metas_to_string()</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="check_meta_registered"
+ c:identifier="ges_meta_container_check_meta_registered">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="MetaFlag" c:type="GESMetaFlag*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <type name="GType" c:type="GType*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="ges_meta_container_foreach">
+ <doc xml:space="preserve">Calls the given function for each metadata inside the meta container. Note
+that if there is no metadata, the function won't be called at all.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">container to iterate over</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">function to be called for each metadata</doc>
+ <type name="MetaForeachFunc" c:type="GESMetaForeachFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user specified data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_boolean" c:identifier="ges_meta_container_get_boolean">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date" c:identifier="ges_meta_container_get_date">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="GLib.Date" c:type="GDate**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date_time"
+ c:identifier="ges_meta_container_get_date_time">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="Gst.DateTime" c:type="GstDateTime**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_double" c:identifier="ges_meta_container_get_double">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float" c:identifier="ges_meta_container_get_float">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns FALSE if @meta_item
+can not be found.</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int" c:identifier="ges_meta_container_get_int">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64" c:identifier="ges_meta_container_get_int64">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns %FALSE if @meta_item
+can not be found.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_meta" c:identifier="ges_meta_container_get_meta">
+ <doc xml:space="preserve">Gets the value of a given meta item, returns NULL if @key
+can not be found.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue corresponding to the meta with the given @key.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">The key name of the meta to retrieve</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_string" c:identifier="ges_meta_container_get_string">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint" c:identifier="ges_meta_container_get_uint">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64" c:identifier="ges_meta_container_get_uint64">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="metas_to_string"
+ c:identifier="ges_meta_container_metas_to_string">
+ <doc xml:space="preserve">Serializes a meta container to a string.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly-allocated string, or NULL in case of an error.
+The string must be freed with g_free() when no longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESMetaContainer</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="register_meta"
+ c:identifier="ges_meta_container_register_meta">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the static meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_boolean"
+ c:identifier="ges_meta_container_register_meta_boolean">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_date"
+ c:identifier="ges_meta_container_register_meta_date">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="GLib.Date" c:type="const GDate*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_date_time"
+ c:identifier="ges_meta_container_register_meta_date_time">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="Gst.DateTime" c:type="const GstDateTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_double"
+ c:identifier="ges_meta_container_register_meta_double">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_float"
+ c:identifier="ges_meta_container_register_meta_float">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_int"
+ c:identifier="ges_meta_container_register_meta_int">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_int64"
+ c:identifier="ges_meta_container_register_meta_int64">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_string"
+ c:identifier="ges_meta_container_register_meta_string">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_uint"
+ c:identifier="ges_meta_container_register_meta_uint">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="register_meta_uint64"
+ c:identifier="ges_meta_container_register_meta_uint64">
+ <doc xml:space="preserve">Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be register, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESMetaFlag to be used</doc>
+ <type name="MetaFlag" c:type="GESMetaFlag"/>
+ </parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_boolean" c:identifier="ges_meta_container_set_boolean">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_date" c:identifier="ges_meta_container_set_date">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="GLib.Date" c:type="const GDate*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_date_time"
+ c:identifier="ges_meta_container_set_date_time">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="Gst.DateTime" c:type="const GstDateTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_double" c:identifier="ges_meta_container_set_double">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_float" c:identifier="ges_meta_container_set_float">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_int" c:identifier="ges_meta_container_set_int">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_int64" c:identifier="ges_meta_container_set_int64">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_meta" c:identifier="ges_meta_container_set_meta">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Value to set
+Sets the value of a given meta item</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_string" c:identifier="ges_meta_container_set_string">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uint" c:identifier="ges_meta_container_set_uint">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uint64" c:identifier="ges_meta_container_set_uint64">
+ <doc xml:space="preserve">Sets the value of a given meta item</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the meta could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">Target container</doc>
+ <type name="MetaContainer" c:type="GESMetaContainer*"/>
+ </instance-parameter>
+ <parameter name="meta_item" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the meta item to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to set</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <glib:signal name="notify-meta"
+ when="first"
+ no-recurse="1"
+ detailed="1"
+ no-hooks="1">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="p0" transfer-ownership="none">
+ <type name="GObject.Value"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </interface>
+ <record name="MetaContainerInterface"
+ c:type="GESMetaContainerInterface"
+ glib:is-gtype-struct-for="MetaContainer">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="MetaFlag"
+ glib:type-name="GESMetaFlag"
+ glib:get-type="ges_meta_flag_get_type"
+ c:type="GESMetaFlag">
+ <member name="readable"
+ value="1"
+ c:identifier="GES_META_READABLE"
+ glib:nick="readable">
+ <doc xml:space="preserve">The metadata is readable</doc>
+ </member>
+ <member name="writable"
+ value="2"
+ c:identifier="GES_META_WRITABLE"
+ glib:nick="writable">
+ <doc xml:space="preserve">The metadata is writable</doc>
+ </member>
+ <member name="readwrite"
+ value="3"
+ c:identifier="GES_META_READ_WRITE"
+ glib:nick="readwrite">
+ <doc xml:space="preserve">The metadata is readable and writable</doc>
+ </member>
+ </bitfield>
+ <callback name="MetaForeachFunc" c:type="GESMetaForeachFunc">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="container" transfer-ownership="none">
+ <type name="MetaContainer" c:type="const GESMetaContainer*"/>
+ </parameter>
+ <parameter name="key" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="MultiFileSource"
+ c:symbol-prefix="multi_file_source"
+ c:type="GESMultiFileSource"
+ parent="VideoSource"
+ glib:type-name="GESMultiFileSource"
+ glib:get-type="ges_multi_file_source_get_type"
+ glib:type-struct="MultiFileSourceClass">
+ <doc xml:space="preserve">Outputs the video stream from a given image sequence. The start frame
+chosen will be determined by the in-point property on the track element.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_multi_file_source_new">
+ <doc xml:space="preserve">Creates a new #GESMultiFileSource for the provided @uri.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new #GESMultiFileSource.</doc>
+ <type name="MultiFileSource" c:type="GESMultiFileSource*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI the source should control</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The uri of the file/resource to use. You can set a start index,
+a stop index and a sequence pattern.
+The format is &amp;lt;multifile://start:stop\@location-pattern&amp;gt;.
+The pattern uses printf string formating.
+
+Example uris:
+
+multifile:///home/you/image\%03d.jpg
+
+multifile://20:50@/home/you/sequence/\%04d.png</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="VideoSource" c:type="GESVideoSource"/>
+ </field>
+ <field name="uri" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="MultiFileSourcePrivate"
+ c:type="GESMultiFileSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="MultiFileSourceClass"
+ c:type="GESMultiFileSourceClass"
+ glib:is-gtype-struct-for="MultiFileSource">
+ <field name="parent_class">
+ <type name="VideoSourceClass" c:type="GESVideoSourceClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="MultiFileSourcePrivate"
+ c:type="GESMultiFileSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="Operation"
+ c:symbol-prefix="operation"
+ c:type="GESOperation"
+ parent="TrackElement"
+ abstract="1"
+ glib:type-name="GESOperation"
+ glib:get-type="ges_operation_get_type"
+ glib:type-struct="OperationClass">
+ <doc xml:space="preserve">Base class for overlays, transitions, and effects</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="TrackElement" c:type="GESTrackElement"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="OperationPrivate" c:type="GESOperationPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="OperationClass"
+ c:type="GESOperationClass"
+ glib:is-gtype-struct-for="Operation">
+ <field name="parent_class" readable="0" private="1">
+ <type name="TrackElementClass" c:type="GESTrackElementClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="OperationClip"
+ c:symbol-prefix="operation_clip"
+ c:type="GESOperationClip"
+ parent="Clip"
+ abstract="1"
+ glib:type-name="GESOperationClip"
+ glib:get-type="ges_operation_clip_get_type"
+ glib:type-struct="OperationClipClass">
+ <doc xml:space="preserve">Operations are any kind of object that both outputs AND consumes data.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="Clip" c:type="GESClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="OperationClipPrivate" c:type="GESOperationClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="OperationClipClass"
+ c:type="GESOperationClipClass"
+ glib:is-gtype-struct-for="OperationClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="ClipClass" c:type="GESClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="OperationClipPrivate"
+ c:type="GESOperationClipPrivate"
+ disguised="1">
+ </record>
+ <record name="OperationPrivate" c:type="GESOperationPrivate" disguised="1">
+ </record>
+ <class name="OverlayClip"
+ c:symbol-prefix="overlay_clip"
+ c:type="GESOverlayClip"
+ parent="OperationClip"
+ abstract="1"
+ glib:type-name="GESOverlayClip"
+ glib:get-type="ges_overlay_clip_get_type"
+ glib:type-struct="OverlayClipClass">
+ <doc xml:space="preserve">Overlays are objects which modify the underlying layer(s).
+
+Examples of overlays include text, image watermarks, or audio dubbing.
+
+Transitions, which change from one source to another over time, are
+not considered overlays.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="OperationClip" c:type="GESOperationClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="OverlayClipPrivate" c:type="GESOverlayClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="OverlayClipClass"
+ c:type="GESOverlayClipClass"
+ glib:is-gtype-struct-for="OverlayClip">
+ <field name="parent_class">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="OperationClipClass" c:type="GESOperationClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="OverlayClipPrivate"
+ c:type="GESOverlayClipPrivate"
+ disguised="1">
+ </record>
+ <constant name="PADDING" value="4" c:type="GES_PADDING">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PADDING_LARGE" value="20" c:type="GES_PADDING_LARGE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <class name="Pipeline"
+ c:symbol-prefix="pipeline"
+ c:type="GESPipeline"
+ parent="Gst.Pipeline"
+ glib:type-name="GESPipeline"
+ glib:get-type="ges_pipeline_get_type"
+ glib:type-struct="PipelineClass">
+ <doc xml:space="preserve">#GESPipeline allows developers to view and render #GESTimeline
+in a simple fashion.
+Its usage is inspired by the 'playbin' element from gst-plugins-base.</doc>
+ <implements name="Gst.ChildProxy"/>
+ <implements name="GstVideo.VideoOverlay"/>
+ <constructor name="new" c:identifier="ges_pipeline_new">
+ <doc xml:space="preserve">Creates a new conveninence #GESPipeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the new #GESPipeline.</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </return-value>
+ </constructor>
+ <method name="get_mode" c:identifier="ges_pipeline_get_mode">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GESPipelineFlags currently in use.</doc>
+ <type name="PipelineFlags" c:type="GESPipelineFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_thumbnail" c:identifier="ges_pipeline_get_thumbnail">
+ <doc xml:space="preserve">Returns a #GstSample with the currently playing image in the format specified by
+caps. The caller should free the sample with #gst_sample_unref when finished. If ANY
+caps are specified, the information will be returned in the whatever format
+is currently used by the sink. This information can be retrieve from caps
+associated with the buffer.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstSample or %NULL</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">caps specifying current format. Use %GST_CAPS_ANY
+for native size.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_thumbnail_rgb24"
+ c:identifier="ges_pipeline_get_thumbnail_rgb24">
+ <doc xml:space="preserve">A convenience method for @ges_pipeline_get_thumbnail which
+returns a buffer in 24-bit RGB, optionally scaled to the specified width
+and height. If -1 is specified for either dimension, it will be left at
+native size. You can retreive this information from the caps associated
+with the buffer.
+
+The caller is responsible for unreffing the returned sample with
+#gst_sample_unref.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstSample or %NULL</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the requested width or -1 for native size</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the requested height or -1 for native size</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="preview_get_audio_sink"
+ c:identifier="ges_pipeline_preview_get_audio_sink">
+ <doc xml:space="preserve">Obtains a pointer to playsink's audio sink element that is used for
+displaying audio when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+The caller is responsible for unreffing the returned element with
+#gst_object_unref.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to the playsink audio sink #GstElement</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="preview_get_video_sink"
+ c:identifier="ges_pipeline_preview_get_video_sink">
+ <doc xml:space="preserve">Obtains a pointer to playsink's video sink element that is used for
+displaying video when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+The caller is responsible for unreffing the returned element with
+#gst_object_unref.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to the playsink video sink #GstElement</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="preview_set_audio_sink"
+ c:identifier="ges_pipeline_preview_set_audio_sink">
+ <doc xml:space="preserve">Sets playsink's audio sink element that is used for displaying audio when
+the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline in %GST_STATE_NULL</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a audio sink #GstElement</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="preview_set_video_sink"
+ c:identifier="ges_pipeline_preview_set_video_sink">
+ <doc xml:space="preserve">Sets playsink's video sink element that is used for displaying video when
+the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline in %GST_STATE_NULL</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a video sink #GstElement</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="save_thumbnail"
+ c:identifier="ges_pipeline_save_thumbnail"
+ throws="1">
+ <doc xml:space="preserve">Saves the current frame to the specified @location.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the thumbnail was properly save, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the requested width or -1 for native size</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the requested height or -1 for native size</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a string specifying the desired mime type (for example,
+image/jpeg)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="location" transfer-ownership="none">
+ <doc xml:space="preserve">the path to save the thumbnail</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mode" c:identifier="ges_pipeline_set_mode">
+ <doc xml:space="preserve">switches the @pipeline to the specified @mode. The default mode when
+creating a #GESPipeline is #GES_PIPELINE_MODE_PREVIEW.
+
+Note: The @pipeline will be set to #GST_STATE_NULL during this call due to
+the internal changes that happen. The caller will therefore have to
+set the @pipeline to the requested state after calling this method.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the mode was properly set, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESPipelineFlags to use</doc>
+ <type name="PipelineFlags" c:type="GESPipelineFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_render_settings"
+ c:identifier="ges_pipeline_set_render_settings">
+ <doc xml:space="preserve">Specify where the pipeline shall be rendered and with what settings.
+
+A copy of @profile and @output_uri will be done internally, the caller can
+safely free those values afterwards.
+
+This method must be called before setting the pipeline mode to
+#GES_PIPELINE_MODE_RENDER</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the settings were aknowledged properly, else %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="output_uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI to which the timeline will be rendered</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEncodingProfile to use to render the timeline.</doc>
+ <type name="GstPbutils.EncodingProfile"
+ c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timeline" c:identifier="ges_pipeline_set_timeline">
+ <doc xml:space="preserve">Sets the timeline to use in this pipeline.
+
+The reference to the @timeline will be stolen by the @pipeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @timeline could be successfully set on the @pipeline,
+else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESPipeline</doc>
+ <type name="Pipeline" c:type="GESPipeline*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="full">
+ <doc xml:space="preserve">the #GESTimeline to set on the @pipeline.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="audio-filter" writable="1" transfer-ownership="none">
+ <type name="Gst.Element"/>
+ </property>
+ <property name="audio-sink" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Audio sink for the preview.</doc>
+ <type name="Gst.Element"/>
+ </property>
+ <property name="mode" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Pipeline mode. See ges_pipeline_set_mode() for more
+info.</doc>
+ <type name="PipelineFlags"/>
+ </property>
+ <property name="timeline" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Timeline to use in this pipeline. See also
+ges_pipeline_set_timeline() for more info.</doc>
+ <type name="Timeline"/>
+ </property>
+ <property name="video-filter" writable="1" transfer-ownership="none">
+ <type name="Gst.Element"/>
+ </property>
+ <property name="video-sink" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Video sink for the preview.</doc>
+ <type name="Gst.Element"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="Gst.Pipeline" c:type="GstPipeline"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="PipelinePrivate" c:type="GESPipelinePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="PipelineClass"
+ c:type="GESPipelineClass"
+ glib:is-gtype-struct-for="Pipeline">
+ <field name="parent_class" readable="0" private="1">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="Gst.PipelineClass" c:type="GstPipelineClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="PipelineFlags"
+ glib:type-name="GESPipelineFlags"
+ glib:get-type="ges_pipeline_flags_get_type"
+ c:type="GESPipelineFlags">
+ <doc xml:space="preserve">The various modes the #GESPipeline can be configured to.</doc>
+ <member name="audio_preview"
+ value="1"
+ c:identifier="GES_PIPELINE_MODE_PREVIEW_AUDIO"
+ glib:nick="audio_preview">
+ <doc xml:space="preserve">output audio to the soundcard</doc>
+ </member>
+ <member name="video_preview"
+ value="2"
+ c:identifier="GES_PIPELINE_MODE_PREVIEW_VIDEO"
+ glib:nick="video_preview">
+ <doc xml:space="preserve">output video to the screen</doc>
+ </member>
+ <member name="full_preview"
+ value="3"
+ c:identifier="GES_PIPELINE_MODE_PREVIEW"
+ glib:nick="full_preview">
+ <doc xml:space="preserve">output audio/video to soundcard/screen (default)</doc>
+ </member>
+ <member name="render"
+ value="4"
+ c:identifier="GES_PIPELINE_MODE_RENDER"
+ glib:nick="render">
+ <doc xml:space="preserve">render timeline (forces decoding)</doc>
+ </member>
+ <member name="smart_render"
+ value="8"
+ c:identifier="GES_PIPELINE_MODE_SMART_RENDER"
+ glib:nick="smart_render">
+ <doc xml:space="preserve">render timeline (tries to avoid decoding/reencoding)</doc>
+ </member>
+ </bitfield>
+ <record name="PipelinePrivate" c:type="GESPipelinePrivate" disguised="1">
+ </record>
+ <class name="PitiviFormatter"
+ c:symbol-prefix="pitivi_formatter"
+ c:type="GESPitiviFormatter"
+ parent="Formatter"
+ glib:type-name="GESPitiviFormatter"
+ glib:get-type="ges_pitivi_formatter_get_type"
+ glib:type-struct="PitiviFormatterClass">
+ <doc xml:space="preserve">This is a legacy format and you should avoid to use it. The formatter
+is really not in good shape and is deprecated.</doc>
+ <implements name="Extractable"/>
+ <constructor name="new" c:identifier="ges_pitivi_formatter_new">
+ <return-value transfer-ownership="none">
+ <type name="PitiviFormatter" c:type="GESPitiviFormatter*"/>
+ </return-value>
+ </constructor>
+ <field name="parent">
+ <type name="Formatter" c:type="GESFormatter"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="PitiviFormatterPrivate"
+ c:type="GESPitiviFormatterPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="PitiviFormatterClass"
+ c:type="GESPitiviFormatterClass"
+ glib:is-gtype-struct-for="PitiviFormatter">
+ <field name="parent_class" readable="0" private="1">
+ <type name="FormatterClass" c:type="GESFormatterClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="PitiviFormatterPrivate"
+ c:type="GESPitiviFormatterPrivate"
+ disguised="1">
+ </record>
+ <class name="Project"
+ c:symbol-prefix="project"
+ c:type="GESProject"
+ parent="Asset"
+ glib:type-name="GESProject"
+ glib:get-type="ges_project_get_type"
+ glib:type-struct="ProjectClass">
+ <doc xml:space="preserve">The #GESProject is used to control a set of #GESAsset and is a
+#GESAsset with #GES_TYPE_TIMELINE as @extractable_type itself. That
+means that you can extract #GESTimeline from a project as followed:
+
+|[
+ GESProject *project;
+ GESTimeline *timeline;
+
+ project = ges_project_new ("file:///path/to/a/valid/project/uri");
+
+ // Here you can connect to the various signal to get more infos about
+ // what is happening and recover from errors if possible
+ ...
+
+ timeline = ges_asset_extract (GES_ASSET (project));
+]|
+
+The #GESProject class offers a higher level API to handle #GESAsset-s.
+It lets you request new asset, and it informs you about new assets through
+a set of signals. Also it handles problem such as missing files/missing
+#GstElement and lets you try to recover from those.</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <constructor name="new" c:identifier="ges_project_new">
+ <doc xml:space="preserve">Creates a new #GESProject and sets its uri to @uri if provided. Note that
+if @uri is not valid or %NULL, the uri of the project will then be set
+the first time you save the project. If you then save the project to
+other locations, it will never be updated again and the first valid URI is
+the URI it will keep refering to.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly created #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The uri to be set after creating the project.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="asset_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="asset_loading">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="asset_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="loaded">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="loading_error">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="missing_uri">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="wrong_asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_asset" c:identifier="ges_project_add_asset">
+ <doc xml:space="preserve">Adds a #Asset to @project, the project will keep a reference on
+@asset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the asset could be added %FALSE it was already
+in the project</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESAsset to add to @project</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_encoding_profile"
+ c:identifier="ges_project_add_encoding_profile">
+ <doc xml:space="preserve">Adds @profile to the project. It lets you save in what format
+the project has been renders and keep a reference to those formats.
+Also, those formats will be saves to the project file when possible.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @profile could be added, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEncodingProfile to add to the project. If a profile with
+the same name already exists, it will be replaced</doc>
+ <type name="GstPbutils.EncodingProfile"
+ c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_asset" c:identifier="ges_project_create_asset">
+ <doc xml:space="preserve">Create and add a #GESAsset to @project. You should connect to the
+"asset-added" signal to get the asset when it finally gets added to
+@project</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the asset started to be added %FALSE it was already
+in the project</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The id of the asset to create and add to @project</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the asset to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_asset_sync"
+ c:identifier="ges_project_create_asset_sync"
+ throws="1">
+ <doc xml:space="preserve">Create and add a #GESAsset to @project. You should connect to the
+"asset-added" signal to get the asset when it finally gets added to
+@project</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The newly created #GESAsset or %NULL.</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The id of the asset to create and add to @project</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the asset to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_asset" c:identifier="ges_project_get_asset">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GESAsset with
+@id or %NULL if no asset with @id as an ID</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The id of the asset to retrieve</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The extractable_type of the asset
+to retrieve from @object</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_loading_assets"
+ c:identifier="ges_project_get_loading_assets">
+ <doc xml:space="preserve">Get the assets that are being loaded</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A set of loading asset
+that will be added to @project. Note that those Asset are *not* loaded yet,
+and thus can not be used</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Asset"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri" c:identifier="ges_project_get_uri">
+ <doc xml:space="preserve">Retrieve the uri that is currently set on @project</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated string representing uri.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="list_assets" c:identifier="ges_project_list_assets">
+ <doc xml:space="preserve">List all @asset contained in @project filtering per extractable_type
+as defined by @filter. It copies the asset and thus will not be updated
+in time.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of
+#GESAsset the object contains</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Asset"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <doc xml:space="preserve">Type of assets to list, #GES_TYPE_EXTRACTABLE will list
+all assets</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="list_encoding_profiles"
+ c:identifier="ges_project_list_encoding_profiles">
+ <doc xml:space="preserve">Lists the encoding profile that have been set to @project. The first one
+is the latest added.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The
+list of #GstEncodingProfile used in @project</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="GstPbutils.EncodingProfile"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="load" c:identifier="ges_project_load" throws="1">
+ <doc xml:space="preserve">Loads @project into @timeline</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the project could be loaded %FALSE otherwize.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject that has an @uri set already</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">A blank timeline to load @project into</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_asset" c:identifier="ges_project_remove_asset">
+ <doc xml:space="preserve">remove a @asset to from @project.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the asset could be removed %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESAsset to remove from @project</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="save" c:identifier="ges_project_save" throws="1">
+ <doc xml:space="preserve">Save the timeline of @project to @uri. You should make sure that @timeline
+is one of the timelines that have been extracted from @project
+(using ges_asset_extract (@project);)</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the project could be save, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="project" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESProject to save</doc>
+ <type name="Project" c:type="GESProject*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline to save, it must have been extracted from @project</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The uri where to save @project and @timeline</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="formatter_asset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The formatter asset to use or %NULL. If %NULL,
+will try to save in the same format as the one from which the timeline as been loaded
+or default to the formatter with highest rank</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="overwrite" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to overwrite file if it exists</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent">
+ <type name="Asset" c:type="GESAsset"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ProjectPrivate" c:type="GESProjectPrivate*"/>
+ </field>
+ <field name="__ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="asset-added" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset that has been added to @project</doc>
+ <type name="Asset"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="asset-loading" when="last" version="1.8">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset that started loading</doc>
+ <type name="Asset"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="asset-removed" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESAsset that has been removed from @project</doc>
+ <type name="Asset"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="error-loading-asset" when="last">
+ <doc xml:space="preserve">Informs you that a #GESAsset could not be created. In case of
+missing GStreamer plugins, the error will be set to #GST_CORE_ERROR
+#GST_CORE_ERROR_MISSING_PLUGIN</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The #GError defining the error that accured, might be %NULL</doc>
+ <type name="GLib.Error"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The @id of the asset that failed loading</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <doc xml:space="preserve">The @extractable_type of the asset that
+failed loading</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="loaded" when="first">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline that complete loading</doc>
+ <type name="Timeline"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="missing-uri" when="last">
+ <doc xml:space="preserve">|[
+static gchar
+source_moved_cb (GESProject *project, GError *error, GESAsset *asset_with_error)
+{
+ return g_strdup ("file:///the/new/uri.ogg");
+}
+
+static int
+main (int argc, gchar ** argv)
+{
+ GESTimeline *timeline;
+ GESProject *project = ges_project_new ("file:///some/uri.xges");
+
+ g_signal_connect (project, "missing-uri", source_moved_cb, NULL);
+ timeline = ges_asset_extract (GES_ASSET (project));
+}
+]|</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new URI of @wrong_asset</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The error that happened</doc>
+ <type name="GLib.Error"/>
+ </parameter>
+ <parameter name="wrong_asset" transfer-ownership="none">
+ <doc xml:space="preserve">The asset with the wrong ID, you should us it and its content
+only to find out what the new location is.</doc>
+ <type name="Asset"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="ProjectClass"
+ c:type="GESProjectClass"
+ glib:is-gtype-struct-for="Project">
+ <field name="parent_class">
+ <type name="AssetClass" c:type="GESAssetClass"/>
+ </field>
+ <field name="asset_added">
+ <callback name="asset_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="asset_loading">
+ <callback name="asset_loading">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="asset_removed">
+ <callback name="asset_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="missing_uri">
+ <callback name="missing_uri">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="wrong_asset" transfer-ownership="none">
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="loading_error">
+ <callback name="loading_error">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="extractable_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="loaded">
+ <callback name="loaded">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Project" c:type="GESProject*"/>
+ </parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ProjectPrivate" c:type="GESProjectPrivate" disguised="1">
+ </record>
+ <class name="SmartAdder"
+ c:symbol-prefix="smart_adder"
+ c:type="GESSmartAdder"
+ parent="Gst.Bin"
+ glib:type-name="GESSmartAdder"
+ glib:get-type="ges_smart_adder_get_type"
+ glib:type-struct="SmartAdderClass">
+ <implements name="Gst.ChildProxy"/>
+ <constructor name="new" c:identifier="ges_smart_adder_new">
+ <return-value transfer-ownership="none">
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <field name="parent_instance">
+ <type name="Gst.Bin" c:type="GstBin"/>
+ </field>
+ <field name="pads_infos">
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="gpointer" c:type="gpointer"/>
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="adder">
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </field>
+ <field name="capsfilter">
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </field>
+ <field name="lock">
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="caps">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="track">
+ <type name="Track" c:type="GESTrack*"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="SmartAdderClass"
+ c:type="GESSmartAdderClass"
+ glib:is-gtype-struct-for="SmartAdder">
+ <field name="parent_class">
+ <type name="Gst.BinClass" c:type="GstBinClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="Source"
+ c:symbol-prefix="source"
+ c:type="GESSource"
+ parent="TrackElement"
+ glib:type-name="GESSource"
+ glib:get-type="ges_source_get_type"
+ glib:type-struct="SourceClass">
+ <doc xml:space="preserve">Base class for single-media sources</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="TrackElement" c:type="GESTrackElement"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="SourcePrivate" c:type="GESSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="SourceClass"
+ c:type="GESSourceClass"
+ glib:is-gtype-struct-for="Source">
+ <field name="parent_class" readable="0" private="1">
+ <type name="TrackElementClass" c:type="GESTrackElementClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="SourceClip"
+ c:symbol-prefix="source_clip"
+ c:type="GESSourceClip"
+ parent="Clip"
+ glib:type-name="GESSourceClip"
+ glib:get-type="ges_source_clip_get_type"
+ glib:type-struct="SourceClipClass">
+ <doc xml:space="preserve">Base class for sources of a #GESLayer</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent">
+ <type name="Clip" c:type="GESClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="SourceClipPrivate" c:type="GESSourceClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="SourceClipClass"
+ c:type="GESSourceClipClass"
+ glib:is-gtype-struct-for="SourceClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="ClipClass" c:type="GESClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="SourceClipPrivate"
+ c:type="GESSourceClipPrivate"
+ disguised="1">
+ </record>
+ <record name="SourcePrivate" c:type="GESSourcePrivate" disguised="1">
+ </record>
+ <class name="TestClip"
+ c:symbol-prefix="test_clip"
+ c:type="GESTestClip"
+ parent="SourceClip"
+ glib:type-name="GESTestClip"
+ glib:get-type="ges_test_clip_get_type"
+ glib:type-struct="TestClipClass">
+ <doc xml:space="preserve">Useful for testing purposes.
+
+You can use the ges_asset_request_simple API to create an Asset
+capable of extracting GESTestClip-s</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_test_clip_new">
+ <doc xml:space="preserve">Creates a new #GESTestClip.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESTestClip,
+or %NULL if there was an error.</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_for_nick"
+ c:identifier="ges_test_clip_new_for_nick">
+ <doc xml:space="preserve">Creates a new #GESTestClip for the provided @nick.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESTestClip,
+or %NULL if there was an error.</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">the nickname for which to create the #GESTestClip</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_frequency" c:identifier="ges_test_clip_get_frequency">
+ <doc xml:space="preserve">Get the frequency @self generates.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The frequency @self generates. See audiotestsrc element.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTestClip</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_volume" c:identifier="ges_test_clip_get_volume">
+ <doc xml:space="preserve">Get the volume of the test audio signal applied on @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The volume of the test audio signal applied on @self.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTestClip</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_vpattern" c:identifier="ges_test_clip_get_vpattern">
+ <doc xml:space="preserve">Get the #GESVideoTestPattern which is applied on @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GESVideoTestPattern which is applied on @self.</doc>
+ <type name="VideoTestPattern" c:type="GESVideoTestPattern"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTestClip</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_muted" c:identifier="ges_test_clip_is_muted">
+ <doc xml:space="preserve">Let you know if the audio track of @self is muted or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Whether the audio track of @self is muted or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTestClip</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_frequency" c:identifier="ges_test_clip_set_frequency">
+ <doc xml:space="preserve">Sets the frequency to generate. See audiotestsrc element.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTestClip to set the frequency on</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ <parameter name="freq" transfer-ownership="none">
+ <doc xml:space="preserve">the frequency you want to use on @self</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mute" c:identifier="ges_test_clip_set_mute">
+ <doc xml:space="preserve">Sets whether the audio track of this clip is muted or not.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTestClip on which to mute or unmute the audio track</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ <parameter name="mute" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to mute the audio track, %FALSE to unmute it</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_volume" c:identifier="ges_test_clip_set_volume">
+ <doc xml:space="preserve">Sets the volume of the test audio signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTestClip to set the volume on</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ <parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">the volume of the audio signal you want to use on @self</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_vpattern" c:identifier="ges_test_clip_set_vpattern">
+ <doc xml:space="preserve">Sets which video pattern to display on @self.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTestClip to set the pattern on</doc>
+ <type name="TestClip" c:type="GESTestClip*"/>
+ </instance-parameter>
+ <parameter name="vpattern" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESVideoTestPattern to use on @self</doc>
+ <type name="VideoTestPattern" c:type="GESVideoTestPattern"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="freq"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The frequency to generate for audio track elements.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="mute"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Whether the sound will be played or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="volume"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The volume for the audio track elements.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="vpattern"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Video pattern to display in video track elements.</doc>
+ <type name="VideoTestPattern"/>
+ </property>
+ <field name="parent">
+ <type name="SourceClip" c:type="GESSourceClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TestClipPrivate" c:type="GESTestClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TestClipClass"
+ c:type="GESTestClipClass"
+ glib:is-gtype-struct-for="TestClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="SourceClipClass" c:type="GESSourceClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TestClipPrivate" c:type="GESTestClipPrivate" disguised="1">
+ </record>
+ <enumeration name="TextHAlign"
+ glib:type-name="GESTextHAlign"
+ glib:get-type="ges_text_halign_get_type"
+ c:type="GESTextHAlign">
+ <doc xml:space="preserve">Horizontal alignment of the text.</doc>
+ <member name="left"
+ value="0"
+ c:identifier="GES_TEXT_HALIGN_LEFT"
+ glib:nick="left">
+ <doc xml:space="preserve">align text left</doc>
+ </member>
+ <member name="center"
+ value="1"
+ c:identifier="GES_TEXT_HALIGN_CENTER"
+ glib:nick="center">
+ <doc xml:space="preserve">align text center</doc>
+ </member>
+ <member name="right"
+ value="2"
+ c:identifier="GES_TEXT_HALIGN_RIGHT"
+ glib:nick="right">
+ <doc xml:space="preserve">align text right</doc>
+ </member>
+ <member name="position"
+ value="4"
+ c:identifier="GES_TEXT_HALIGN_POSITION"
+ glib:nick="position">
+ <doc xml:space="preserve">align text on xpos position</doc>
+ </member>
+ <member name="absolute"
+ value="5"
+ c:identifier="GES_TEXT_HALIGN_ABSOLUTE"
+ glib:nick="absolute">
+ </member>
+ </enumeration>
+ <class name="TextOverlay"
+ c:symbol-prefix="text_overlay"
+ c:type="GESTextOverlay"
+ parent="Operation"
+ glib:type-name="GESTextOverlay"
+ glib:get-type="ges_text_overlay_get_type"
+ glib:type-struct="TextOverlayClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_text_overlay_new">
+ <doc xml:space="preserve">Creates a new #GESTextOverlay.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESTextOverlay or
+%NULL if something went wrong.</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </return-value>
+ </constructor>
+ <method name="get_color" c:identifier="ges_text_overlay_get_color">
+ <doc xml:space="preserve">Get the color used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The color used by @source.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_font_desc"
+ c:identifier="ges_text_overlay_get_font_desc">
+ <doc xml:space="preserve">Get the pango font description currently set on @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The pango font description currently set on @source.</doc>
+ <type name="utf8" c:type="const char*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_halignment"
+ c:identifier="ges_text_overlay_get_halignment">
+ <doc xml:space="preserve">Get the horizontal aligment used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal aligment used by @source.</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text" c:identifier="ges_text_overlay_get_text">
+ <doc xml:space="preserve">Get the text currently set on @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The text currently set on @source.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_valignment"
+ c:identifier="ges_text_overlay_get_valignment">
+ <doc xml:space="preserve">Get the vertical aligment used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical aligment used by @source.</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_xpos" c:identifier="ges_text_overlay_get_xpos">
+ <doc xml:space="preserve">Get the horizontal position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ypos" c:identifier="ges_text_overlay_get_ypos">
+ <doc xml:space="preserve">Get the vertical position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_color" c:identifier="ges_text_overlay_set_color">
+ <doc xml:space="preserve">Sets the color of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">The color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_font_desc"
+ c:identifier="ges_text_overlay_set_font_desc">
+ <doc xml:space="preserve">Sets the pango font description of the text this track element
+will render.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="font_desc" transfer-ownership="none">
+ <doc xml:space="preserve">the pango font description</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_halignment"
+ c:identifier="ges_text_overlay_set_halignment">
+ <doc xml:space="preserve">Sets the horizontal aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set text on</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="halign" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTextHAlign defining the horizontal alignment
+of the text render by @self.</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_text" c:identifier="ges_text_overlay_set_text">
+ <doc xml:space="preserve">Sets the text this track element will render.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set text on</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="text" transfer-ownership="none">
+ <doc xml:space="preserve">the text to render. an internal copy of this text will be
+made.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valignment"
+ c:identifier="ges_text_overlay_set_valignment">
+ <doc xml:space="preserve">Sets the vertical aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set text on</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="valign" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTextVAlign defining the vertical alignment
+of the text render by @self.</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_xpos" c:identifier="ges_text_overlay_set_xpos">
+ <doc xml:space="preserve">Sets the horizontal position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ypos" c:identifier="ges_text_overlay_set_ypos">
+ <doc xml:space="preserve">Sets the vertical position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlay* to set</doc>
+ <type name="TextOverlay" c:type="GESTextOverlay*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="Operation" c:type="GESOperation"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TextOverlayPrivate" c:type="GESTextOverlayPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TextOverlayClass"
+ c:type="GESTextOverlayClass"
+ glib:is-gtype-struct-for="TextOverlay">
+ <field name="parent_class">
+ <type name="OperationClass" c:type="GESOperationClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TextOverlayClip"
+ c:symbol-prefix="text_overlay_clip"
+ c:type="GESTextOverlayClip"
+ parent="OverlayClip"
+ glib:type-name="GESTextOverlayClip"
+ glib:get-type="ges_text_overlay_clip_get_type"
+ glib:type-struct="TextOverlayClipClass">
+ <doc xml:space="preserve">Renders text onto the next lower priority stream using textrender.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_text_overlay_clip_new">
+ <doc xml:space="preserve">Creates a new #GESTextOverlayClip</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created
+#GESTextOverlayClip, or %NULL if there was an error.</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </return-value>
+ </constructor>
+ <method name="get_color" c:identifier="ges_text_overlay_clip_get_color">
+ <doc xml:space="preserve">Get the color used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The color used by @source.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_font_desc"
+ c:identifier="ges_text_overlay_clip_get_font_desc">
+ <doc xml:space="preserve">Get the pango font description used by @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The pango font description used by @self.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_halignment"
+ c:identifier="ges_text_overlay_clip_get_halignment">
+ <doc xml:space="preserve">Get the horizontal aligment used by @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal aligment used by @self.</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text" c:identifier="ges_text_overlay_clip_get_text">
+ <doc xml:space="preserve">Get the text currently set on @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The text currently set on @self.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_valignment"
+ c:identifier="ges_text_overlay_clip_get_valignment">
+ <doc xml:space="preserve">Get the vertical aligment used by @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical aligment used by @self.</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_xpos" c:identifier="ges_text_overlay_clip_get_xpos">
+ <doc xml:space="preserve">Get the horizontal position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ypos" c:identifier="ges_text_overlay_clip_get_ypos">
+ <doc xml:space="preserve">Get the vertical position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTextOverlayClip</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_color" c:identifier="ges_text_overlay_clip_set_color">
+ <doc xml:space="preserve">Sets the color of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">The color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_font_desc"
+ c:identifier="ges_text_overlay_clip_set_font_desc">
+ <doc xml:space="preserve">Sets the pango font description of the text</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip*</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="font_desc" transfer-ownership="none">
+ <doc xml:space="preserve">the pango font description</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_halign"
+ c:identifier="ges_text_overlay_clip_set_halign">
+ <doc xml:space="preserve">Sets the horizontal aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set horizontal alignement of text on</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="halign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextHAlign</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_text" c:identifier="ges_text_overlay_clip_set_text">
+ <doc xml:space="preserve">Sets the text this clip will render.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set text on</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="text" transfer-ownership="none">
+ <doc xml:space="preserve">the text to render. an internal copy of this text will be
+made.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valign"
+ c:identifier="ges_text_overlay_clip_set_valign">
+ <doc xml:space="preserve">Sets the vertical aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set vertical alignement of text on</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="valign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextVAlign</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_xpos" c:identifier="ges_text_overlay_clip_set_xpos">
+ <doc xml:space="preserve">Sets the horizontal position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ypos" c:identifier="ges_text_overlay_clip_set_ypos">
+ <doc xml:space="preserve">Sets the vertical position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTextOverlayClip* to set</doc>
+ <type name="TextOverlayClip" c:type="GESTextOverlayClip*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="color"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The color of the text</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="font-desc"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Pango font description string</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="halignment"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Horizontal alignment of the text</doc>
+ <type name="TextHAlign"/>
+ </property>
+ <property name="text"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The text to diplay</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="valignment"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Vertical alignent of the text</doc>
+ <type name="TextVAlign"/>
+ </property>
+ <property name="xpos"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position of the text</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="ypos"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position of the text</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <field name="parent">
+ <type name="OverlayClip" c:type="GESOverlayClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TextOverlayClipPrivate"
+ c:type="GESTextOverlayClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TextOverlayClipClass"
+ c:type="GESTextOverlayClipClass"
+ glib:is-gtype-struct-for="TextOverlayClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="OverlayClipClass" c:type="GESOverlayClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TextOverlayClipPrivate"
+ c:type="GESTextOverlayClipPrivate"
+ disguised="1">
+ </record>
+ <record name="TextOverlayPrivate"
+ c:type="GESTextOverlayPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="TextVAlign"
+ glib:type-name="GESTextVAlign"
+ glib:get-type="ges_text_valign_get_type"
+ c:type="GESTextVAlign">
+ <doc xml:space="preserve">Vertical alignment of the text.</doc>
+ <member name="baseline"
+ value="0"
+ c:identifier="GES_TEXT_VALIGN_BASELINE"
+ glib:nick="baseline">
+ <doc xml:space="preserve">draw text on the baseline</doc>
+ </member>
+ <member name="bottom"
+ value="1"
+ c:identifier="GES_TEXT_VALIGN_BOTTOM"
+ glib:nick="bottom">
+ <doc xml:space="preserve">draw text on the bottom</doc>
+ </member>
+ <member name="top"
+ value="2"
+ c:identifier="GES_TEXT_VALIGN_TOP"
+ glib:nick="top">
+ <doc xml:space="preserve">draw text on top</doc>
+ </member>
+ <member name="position"
+ value="3"
+ c:identifier="GES_TEXT_VALIGN_POSITION"
+ glib:nick="position">
+ <doc xml:space="preserve">draw text on ypos position</doc>
+ </member>
+ <member name="center"
+ value="4"
+ c:identifier="GES_TEXT_VALIGN_CENTER"
+ glib:nick="center">
+ <doc xml:space="preserve">draw text on the center</doc>
+ </member>
+ <member name="absolute"
+ value="5"
+ c:identifier="GES_TEXT_VALIGN_ABSOLUTE"
+ glib:nick="absolute">
+ </member>
+ </enumeration>
+ <class name="Timeline"
+ c:symbol-prefix="timeline"
+ c:type="GESTimeline"
+ parent="Gst.Bin"
+ glib:type-name="GESTimeline"
+ glib:get-type="ges_timeline_get_type"
+ glib:type-struct="TimelineClass">
+ <doc xml:space="preserve">#GESTimeline is the central object for any multimedia timeline.
+
+Contains a list of #GESLayer which users should use to arrange the
+various clips through time.
+
+The output type is determined by the #GESTrack that are set on
+the #GESTimeline.
+
+To save/load a timeline, you can use the ges_timeline_load_from_uri() and
+ges_timeline_save_to_uri() methods to use the default format. If you wish
+
+Note that any change you make in the timeline will not actually be taken
+into account until you call the #ges_timeline_commit method.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <implements name="Gst.ChildProxy"/>
+ <constructor name="new" c:identifier="ges_timeline_new">
+ <doc xml:space="preserve">Creates a new empty #GESTimeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new timeline.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_audio_video"
+ c:identifier="ges_timeline_new_audio_video">
+ <doc xml:space="preserve">Creates a new #GESTimeline containing a raw audio and a
+raw video track.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The newly created #GESTimeline.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_from_uri"
+ c:identifier="ges_timeline_new_from_uri"
+ throws="1">
+ <doc xml:space="preserve">Creates a timeline from the given URI.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A new timeline if the uri was loaded
+successfully, or %NULL if the uri could not be loaded.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI to load from</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="group_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="group" transfer-ownership="none">
+ <type name="Group" c:type="GESGroup*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="group_removed" introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="group" transfer-ownership="none">
+ <type name="Group" c:type="GESGroup*"/>
+ </parameter>
+ <parameter name="children" transfer-ownership="none">
+ <array name="GLib.PtrArray" c:type="GPtrArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="layer_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="layer_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="track_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="track_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_layer" c:identifier="ges_timeline_add_layer">
+ <doc xml:space="preserve">Add the layer to the timeline. The reference to the @layer will be stolen
+by the @timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the layer was properly added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESLayer to add</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_track" c:identifier="ges_timeline_add_track">
+ <doc xml:space="preserve">Add a track to the timeline. The reference to the track will be stolen by the
+pipeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the track was properly added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="full">
+ <doc xml:space="preserve">the #GESTrack to add</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_layer" c:identifier="ges_timeline_append_layer">
+ <doc xml:space="preserve">Append a newly created #GESLayer to @timeline
+Note that you do not own any reference to the returned layer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The newly created #GESLayer, or the last (empty)
+#GESLayer of @timeline.</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="commit" c:identifier="ges_timeline_commit">
+ <doc xml:space="preserve">Commit all the pending changes of the clips contained in the
+@timeline.
+
+When changes happen in a timeline, they are not
+directly executed in the non-linear engine. Call this method once you are
+done with a set of changes and want it to be executed.
+
+The #GESTimeline::commited signal will be emitted when the (possibly updated)
+#GstPipeline is ready to output data again, except if the state of the
+timeline was #GST_STATE_READY or #GST_STATE_NULL.
+
+Note that all the pending changes will automatically be executed when the
+timeline goes from #GST_STATE_READY to #GST_STATE_PAUSED, which usually is
+triggered by corresponding state changes in a containing #GESPipeline.
+
+You should not try to change the state of the timeline, seek it or add
+tracks to it during a commit operation, that is between a call to this
+function and after receiving the #GESTimeline::commited signal.
+
+See #ges_timeline_commit_sync if you don't want to bother with waiting
+for the signal.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if pending changes were commited or %FALSE if nothing needed
+to be commited</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="commit_sync" c:identifier="ges_timeline_commit_sync">
+ <doc xml:space="preserve">Commit all the pending changes of the #GESClips contained in the
+@timeline.
+
+Will return once the update is complete, that is when the
+(possibly updated) #GstPipeline is ready to output data again, or if the
+state of the timeline was #GST_STATE_READY or #GST_STATE_NULL.
+
+This function will wait for any pending state change of the timeline by
+calling #gst_element_get_state with a #GST_CLOCK_TIME_NONE timeout, you
+should not try to change the state from another thread before this function
+has returned.
+
+See #ges_timeline_commit for more information.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if pending changes were commited or %FALSE if nothing needed
+to be commited</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_auto_transition"
+ c:identifier="ges_timeline_get_auto_transition">
+ <doc xml:space="preserve">Gets whether transitions are automatically added when objects
+overlap or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if transitions are automatically added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_duration" c:identifier="ges_timeline_get_duration">
+ <doc xml:space="preserve">Get the current duration of @timeline</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current duration of @timeline</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_element" c:identifier="ges_timeline_get_element">
+ <doc xml:space="preserve">Gets a #GESTimelineElement contained in the timeline</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GESTimelineElement or %NULL if
+not found.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_groups" c:identifier="ges_timeline_get_groups">
+ <doc xml:space="preserve">Get the list of #GESGroup present in the Timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the list of
+#GESGroup that contain clips present in the timeline's layers.
+Must not be changed.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Group"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_layer" c:identifier="ges_timeline_get_layer">
+ <doc xml:space="preserve">Retrieve the layer with @priority as a priority</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A #GESLayer or %NULL if no layer with
+@priority was found
+
+Since 1.6</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline to retrive a layer from</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the layer to find</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_layers" c:identifier="ges_timeline_get_layers">
+ <doc xml:space="preserve">Get the list of #GESLayer present in the Timeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of
+#GESLayer present in the Timeline sorted by priority.
+The caller should unref each Layer once he is done with them.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_for_track"
+ c:identifier="ges_timeline_get_pad_for_track">
+ <doc xml:space="preserve">Search the #GstPad corresponding to the given @timeline's @track.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The corresponding #GstPad if it is
+found, or %NULL if there is an error.</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_snapping_distance"
+ c:identifier="ges_timeline_get_snapping_distance">
+ <doc xml:space="preserve">Gets the configured snapping distance of the timeline. See
+the documentation of the property snapping_distance for more
+information.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @snapping_distance property of the timeline</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_track_for_pad"
+ c:identifier="ges_timeline_get_track_for_pad">
+ <doc xml:space="preserve">Search the #GESTrack corresponding to the given @timeline's @pad.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The corresponding #GESTrack if it is
+found, or %NULL if there is an error.</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstPad</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_tracks" c:identifier="ges_timeline_get_tracks">
+ <doc xml:space="preserve">Returns the list of #GESTrack used by the Timeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A list of #GESTrack.
+The caller should unref each track once he is done with them.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Track"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_empty" c:identifier="ges_timeline_is_empty">
+ <doc xml:space="preserve">Check whether a #GESTimeline is empty or not</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the timeline is empty %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="load_from_uri"
+ c:identifier="ges_timeline_load_from_uri"
+ throws="1">
+ <doc xml:space="preserve">Loads the contents of URI into the given timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the timeline was loaded successfully, or %FALSE if the uri
+could not be loaded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">an empty #GESTimeline into which to load the formatter</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI to load from</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="paste_element" c:identifier="ges_timeline_paste_element">
+ <doc xml:space="preserve">Paste @element inside the timeline. @element must have been
+created using ges_timeline_element_copy with deep=TRUE set,
+i.e. it must be a deep copy, otherwise it will fail.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Shallow copy of the @element pasted</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline onto which the #GESTimelineElement should be pasted</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to paste</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position in the timeline the element should
+be pasted to, meaning it will become the start of @element</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="layer_priority" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESLayer to which the element should be pasted to.
+-1 means paste to the same layer from which the @element has been copied from.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_layer" c:identifier="ges_timeline_remove_layer">
+ <doc xml:space="preserve">Removes the layer from the timeline. The reference that the @timeline holds on
+the layer will be dropped. If you wish to use the @layer after calling this
+method, you need to take a reference before calling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the layer was properly removed, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESLayer to remove</doc>
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_track" c:identifier="ges_timeline_remove_track">
+ <doc xml:space="preserve">Remove the @track from the @timeline. The reference stolen when adding the
+@track will be removed. If you wish to use the @track after calling this
+function you must ensure that you have a reference to it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @track was properly removed, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrack to remove</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="save_to_uri"
+ c:identifier="ges_timeline_save_to_uri"
+ throws="1">
+ <doc xml:space="preserve">Saves the timeline to the given location</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the timeline was successfully saved to the given location,
+else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The location to save to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="formatter_asset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The formatter asset to use or %NULL. If %NULL,
+will try to save in the same format as the one from which the timeline as been loaded
+or default to the formatter with highest rank</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </parameter>
+ <parameter name="overwrite" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to overwrite file if it exists</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_auto_transition"
+ c:identifier="ges_timeline_set_auto_transition">
+ <doc xml:space="preserve">Sets the layer to the given @auto_transition. See the documentation of the
+property auto_transition for more information.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="auto_transition" transfer-ownership="none">
+ <doc xml:space="preserve">whether the auto_transition is active</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_snapping_distance"
+ c:identifier="ges_timeline_set_snapping_distance">
+ <doc xml:space="preserve">Sets the @snapping_distance of the timeline. See the documentation of the
+property snapping_distance for more information.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESLayer</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </instance-parameter>
+ <parameter name="snapping_distance" transfer-ownership="none">
+ <doc xml:space="preserve">whether the snapping_distance is active</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="auto-transition" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Sets whether transitions are added automagically when clips overlap.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">Current duration (in nanoseconds) of the #GESTimeline</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="snapping-distance"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Distance (in nanoseconds) from which a moving object will snap
+with it neighboors. 0 means no snapping.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Bin" c:type="GstBin"/>
+ </field>
+ <field name="layers">
+ <doc xml:space="preserve">A list of #GESLayer sorted by priority NOTE: Do not modify.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </field>
+ <field name="tracks">
+ <doc xml:space="preserve">A list of #GESTrack sorted by priority NOTE: Do not modify.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Track"/>
+ </type>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TimelinePrivate" c:type="GESTimelinePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="commited" when="last">
+ <doc xml:space="preserve">This signal will be emitted once the changes initiated by #ges_timeline_commit
+have been executed in the backend. Use #ges_timeline_commit_sync if you
+don't need to do anything in the meantime.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="group-added" when="first">
+ <doc xml:space="preserve">Will be emitted after a new group is added to to the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="group" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESGroup</doc>
+ <type name="Group"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="group-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after a group has been removed from the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="group" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESGroup</doc>
+ <type name="Group"/>
+ </parameter>
+ <parameter name="children" transfer-ownership="container">
+ <doc xml:space="preserve">a list of #GESContainer</doc>
+ <array name="GLib.PtrArray">
+ <type name="Container"/>
+ </array>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="layer-added" when="first">
+ <doc xml:space="preserve">Will be emitted after a new layer is added to the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESLayer that was added to the timeline</doc>
+ <type name="Layer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="layer-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after the layer was removed from the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="layer" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESLayer that was removed from the timeline</doc>
+ <type name="Layer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="select-tracks-for-object" when="last">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GPtrArray of #GESTrack-s where that object should be added</doc>
+ <array name="GLib.PtrArray">
+ <type name="Track"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="clip" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESClip on which @track_element will land</doc>
+ <type name="Clip"/>
+ </parameter>
+ <parameter name="track_element" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement for which to choose the tracks it should land into</doc>
+ <type name="TrackElement"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="snapping-ended" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement"/>
+ </parameter>
+ <parameter name="p0" transfer-ownership="none">
+ <type name="TrackElement"/>
+ </parameter>
+ <parameter name="p1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="snapping-started" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement"/>
+ </parameter>
+ <parameter name="p0" transfer-ownership="none">
+ <type name="TrackElement"/>
+ </parameter>
+ <parameter name="p1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="track-added" when="first">
+ <doc xml:space="preserve">Will be emitted after the track was added to the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrack that was added to the timeline</doc>
+ <type name="Track"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="track-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after the track was removed from the timeline.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrack that was removed from the timeline</doc>
+ <type name="Track"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="TimelineClass"
+ c:type="GESTimelineClass"
+ glib:is-gtype-struct-for="Timeline">
+ <field name="parent_class">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="Gst.BinClass" c:type="GstBinClass"/>
+ </field>
+ <field name="track_added">
+ <callback name="track_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="track_removed">
+ <callback name="track_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="layer_added">
+ <callback name="layer_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="layer_removed">
+ <callback name="layer_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="layer" transfer-ownership="none">
+ <type name="Layer" c:type="GESLayer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="group_added">
+ <callback name="group_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="group" transfer-ownership="none">
+ <type name="Group" c:type="GESGroup*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="group_removed" introspectable="0">
+ <callback name="group_removed" introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeline" transfer-ownership="none">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ <parameter name="group" transfer-ownership="none">
+ <type name="Group" c:type="GESGroup*"/>
+ </parameter>
+ <parameter name="children" transfer-ownership="none">
+ <array name="GLib.PtrArray" c:type="GPtrArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TimelineElement"
+ c:symbol-prefix="timeline_element"
+ c:type="GESTimelineElement"
+ parent="GObject.InitiallyUnowned"
+ abstract="1"
+ glib:type-name="GESTimelineElement"
+ glib:get-type="ges_timeline_element_get_type"
+ glib:type-struct="TimelineElementClass">
+ <doc xml:space="preserve">The GESTimelineElement base class implements the notion of timing as well
+as priority. A GESTimelineElement can have a parent object which will be
+responsible for controlling its timing properties.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <virtual-method name="deep_copy">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="copy" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_track_types"
+ invoker="get_track_types"
+ version="1.6.0">
+ <doc xml:space="preserve">Gets all the TrackTypes @self will interact with</doc>
+ <return-value transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="list_children_properties" introspectable="0">
+ <return-value>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="n_properties" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="lookup_child" invoker="lookup_child">
+ <doc xml:space="preserve">Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="child"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="paste" introspectable="0">
+ <return-value>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="ref_element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="paste_position" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="ripple" invoker="ripple">
+ <doc xml:space="preserve">Edits @self in ripple mode. It allows you to modify the
+start of @self and move the following neighbours accordingly.
+This will change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in ripple mode.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="ripple_end" invoker="ripple_end">
+ <doc xml:space="preserve">Edits @self in ripple mode. It allows you to modify the
+duration of a @self and move the following neighbours accordingly.
+This will change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="roll_end" invoker="roll_end">
+ <doc xml:space="preserve">Edits @self in roll mode. It allows you to modify the
+duration of a @self and trim (basicly change the start + inpoint
+in this case) the following neighbours accordingly.
+This will not change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rolled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in roll mode</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="roll_start" invoker="roll_start">
+ <doc xml:space="preserve">Edits @self in roll mode. It allows you to modify the
+start and inpoint of a @self and "resize" (basicly change the duration
+in this case) of the previous neighbours accordingly.
+This will not change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been roll properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in roll mode, it will also adapat
+the in-point of @self according</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_duration">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_inpoint">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="inpoint" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_max_duration">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="maxduration" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_parent" invoker="set_parent">
+ <doc xml:space="preserve">Sets the parent of @self to @parent. The parents needs to already
+own a hard reference on @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">new parent of self</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_priority">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="trim" invoker="trim">
+ <doc xml:space="preserve">Edits @self in trim mode. It allows you to modify the
+inpoint and start of @self.
+This will not change the overall timeline duration.
+
+Note that to trim the end of an self you can just set its duration. The same way
+as this method, it will take into account the snapping-distance property of the
+timeline in which @self is.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been trimmed properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to trim.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_child_property"
+ c:identifier="ges_timeline_element_add_child_property">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="child" transfer-ownership="none">
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="ges_timeline_element_copy">
+ <doc xml:space="preserve">Copies @self</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The newly create #GESTimelineElement, copied from @self</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to copy</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="deep" transfer-ownership="none">
+ <doc xml:space="preserve">whether we want to create the elements @self contains or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_properties"
+ c:identifier="ges_timeline_element_get_child_properties"
+ introspectable="0">
+ <doc xml:space="preserve">Gets properties of a child of @self.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">return location for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property"
+ c:identifier="ges_timeline_element_get_child_property">
+ <doc xml:space="preserve">In general, a copy is made of the property contents and
+the caller is responsible for freeing the memory by calling
+g_value_unset().
+
+Gets a property of a GstElement contained in @object.
+
+Note that #ges_timeline_element_get_child_property is really
+intended for language bindings, #ges_timeline_element_get_child_properties
+is much more convenient for C programming.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the property was found, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">return location for the property value, it will
+be initialized if it is initialized with 0</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property_by_pspec"
+ c:identifier="ges_timeline_element_get_child_property_by_pspec">
+ <doc xml:space="preserve">Gets a property of a child of @self.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <doc xml:space="preserve">The #GParamSpec that specifies the property you want to get</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">return location for the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property_valist"
+ c:identifier="ges_timeline_element_get_child_property_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Gets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement parent object</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_duration"
+ c:identifier="ges_timeline_element_get_duration">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @duration of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_inpoint"
+ c:identifier="ges_timeline_element_get_inpoint">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @inpoint of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_duration"
+ c:identifier="ges_timeline_element_get_max_duration">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @maxduration of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="ges_timeline_element_get_name">
+ <doc xml:space="preserve">Returns a copy of the name of @self.
+Caller should g_free() the return value after usage.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The name of @self</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_parent" c:identifier="ges_timeline_element_get_parent">
+ <doc xml:space="preserve">Returns the parent of @self. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">parent of @self, this can be %NULL if
+@self has no parent. unref after usage.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_priority"
+ c:identifier="ges_timeline_element_get_priority">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @priority of @self</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_start" c:identifier="ges_timeline_element_get_start">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @start of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timeline"
+ c:identifier="ges_timeline_element_get_timeline">
+ <doc xml:space="preserve">Returns the timeline of @self. This function increases the refcount
+of the timeline so you should gst_object_unref() it after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">timeline of @self, this can be %NULL if
+@self has no timeline. unref after usage.</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_toplevel_parent"
+ c:identifier="ges_timeline_element_get_toplevel_parent">
+ <doc xml:space="preserve">Gets the toplevel #GESTimelineElement controlling @self</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The toplevel controlling parent of @self</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to get the toplevel parent from</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_track_types"
+ c:identifier="ges_timeline_element_get_track_types"
+ version="1.6.0">
+ <doc xml:space="preserve">Gets all the TrackTypes @self will interact with</doc>
+ <return-value transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="list_children_properties"
+ c:identifier="ges_timeline_element_list_children_properties">
+ <doc xml:space="preserve">Gets an array of #GParamSpec* for all configurable properties of the
+children of @self.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">an array of #GParamSpec* which should be freed after use or
+%NULL if something went wrong</doc>
+ <array length="0" zero-terminated="0" c:type="GParamSpec**">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to get the list of children properties from</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="n_properties"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the length of the returned array</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="lookup_child"
+ c:identifier="ges_timeline_element_lookup_child">
+ <doc xml:space="preserve">Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="child"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="paste"
+ c:identifier="ges_timeline_element_paste"
+ version="1.6.0">
+ <doc xml:space="preserve">Paste @self inside the timeline. @self must have been created
+using ges_timeline_element_copy with recurse=TRUE set,
+otherwise it will fail.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Paste @self copying the element</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to paste</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="paste_position" transfer-ownership="none">
+ <doc xml:space="preserve">The position in the timeline the element should
+be copied to, meaning it will become the start of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_child_property"
+ c:identifier="ges_timeline_element_remove_child_property">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="ripple" c:identifier="ges_timeline_element_ripple">
+ <doc xml:space="preserve">Edits @self in ripple mode. It allows you to modify the
+start of @self and move the following neighbours accordingly.
+This will change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in ripple mode.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="ripple_end" c:identifier="ges_timeline_element_ripple_end">
+ <doc xml:space="preserve">Edits @self in ripple mode. It allows you to modify the
+duration of a @self and move the following neighbours accordingly.
+This will change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="roll_end" c:identifier="ges_timeline_element_roll_end">
+ <doc xml:space="preserve">Edits @self in roll mode. It allows you to modify the
+duration of a @self and trim (basicly change the start + inpoint
+in this case) the following neighbours accordingly.
+This will not change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rolled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in roll mode</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="roll_start" c:identifier="ges_timeline_element_roll_start">
+ <doc xml:space="preserve">Edits @self in roll mode. It allows you to modify the
+start and inpoint of a @self and "resize" (basicly change the duration
+in this case) of the previous neighbours accordingly.
+This will not change the overall timeline duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been roll properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in roll mode, it will also adapat
+the in-point of @self according</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_properties"
+ c:identifier="ges_timeline_element_set_child_properties"
+ introspectable="0">
+ <doc xml:space="preserve">Sets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement parent object</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property"
+ c:identifier="ges_timeline_element_set_child_property">
+ <doc xml:space="preserve">Sets a property of a child of @self
+
+Note that #ges_timeline_element_set_child_property is really
+intended for language bindings, #ges_timeline_element_set_child_properties
+is much more convenient for C programming.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the property was set, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property_by_pspec"
+ c:identifier="ges_timeline_element_set_child_property_by_pspec">
+ <doc xml:space="preserve">Sets a property of a child of @self.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <doc xml:space="preserve">The #GParamSpec that specifies the property you want to set</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property_valist"
+ c:identifier="ges_timeline_element_set_child_property_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Sets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement parent object</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_duration"
+ c:identifier="ges_timeline_element_set_duration">
+ <doc xml:space="preserve">Set the duration of the object
+
+Note that if the timeline snap-distance property of the timeline containing
+@self is set, @self will properly snap to its neighboors.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration in #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_inpoint"
+ c:identifier="ges_timeline_element_set_inpoint">
+ <doc xml:space="preserve">Set the in-point, that is the moment at which the @self will start
+outputting data from its contents.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="inpoint" transfer-ownership="none">
+ <doc xml:space="preserve">the in-point in #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_duration"
+ c:identifier="ges_timeline_element_set_max_duration">
+ <doc xml:space="preserve">Set the maximun duration of the object</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="maxduration" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum duration in #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_name" c:identifier="ges_timeline_element_set_name">
+ <doc xml:space="preserve">Sets the name of object, or gives @self 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The name @self should take (if avalaible&lt;)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_parent" c:identifier="ges_timeline_element_set_parent">
+ <doc xml:space="preserve">Sets the parent of @self to @parent. The parents needs to already
+own a hard reference on @self.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">new parent of self</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_priority"
+ c:identifier="ges_timeline_element_set_priority"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the priority of the object within the containing layer</doc>
+ <doc-deprecated xml:space="preserve">All priority management is done by GES itself now.
+To set #GESEffect priorities #ges_clip_set_top_effect_index should
+be used.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <doc xml:space="preserve">the priority</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_start" c:identifier="ges_timeline_element_set_start">
+ <doc xml:space="preserve">Set the position of the object in its containing layer.
+
+Note that if the snapping-distance property of the timeline containing
+@self is set, @self will properly snap to the edges around @start.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the position in #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timeline"
+ c:identifier="ges_timeline_element_set_timeline">
+ <doc xml:space="preserve">Sets the timeline of @self to @timeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @timeline could be set or %FALSE when @timeline
+already had a timeline.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimeline @self is in</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="trim" c:identifier="ges_timeline_element_trim">
+ <doc xml:space="preserve">Edits @self in trim mode. It allows you to modify the
+inpoint and start of @self.
+This will not change the overall timeline duration.
+
+Note that to trim the end of an self you can just set its duration. The same way
+as this method, it will take into account the snapping-distance property of the
+timeline in which @self is.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been trimmed properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to trim.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="duration" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The duration (in nanoseconds) which will be used in the container</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="in-point" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The in-point at which this #GESTimelineElement will start outputting data
+from its contents (in nanoseconds).
+
+Ex : an in-point of 5 seconds means that the first outputted buffer will
+be the one located 5 seconds in the controlled resource.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="max-duration"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The maximum duration (in nanoseconds) of the #GESTimelineElement.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="name"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The name of the object</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="parent" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The parent container of the object</doc>
+ <type name="TimelineElement"/>
+ </property>
+ <property name="priority" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the object.
+
+Setting GESTimelineElement priorities is deprecated
+as all priority management is done by GES itself now.</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="serialize" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Whether the element should be serialized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="start" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The position of the object in its container (in nanoseconds).</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="timeline" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The timeline in which @element is</doc>
+ <type name="Timeline"/>
+ </property>
+ <field name="parent_instance">
+ <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+ </field>
+ <field name="parent">
+ <doc xml:space="preserve">The #GESTimelineElement that controls the object</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </field>
+ <field name="asset">
+ <doc xml:space="preserve">The #GESAsset from which the object has been extracted</doc>
+ <type name="Asset" c:type="GESAsset*"/>
+ </field>
+ <field name="start">
+ <doc xml:space="preserve">position (in time) of the object</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="inpoint">
+ <doc xml:space="preserve">Position in the media from which the object should be used</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="duration">
+ <doc xml:space="preserve">duration of the object to be used</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="maxduration">
+ <doc xml:space="preserve">The maximum duration the object can have</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="priority">
+ <doc xml:space="preserve">priority of the object in the layer (0:top priority)</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="timeline">
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </field>
+ <field name="name">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TimelineElementPrivate"
+ c:type="GESTimelineElementPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="deep-notify"
+ when="first"
+ no-recurse="1"
+ detailed="1"
+ no-hooks="1">
+ <doc xml:space="preserve">The deep notify signal is used to be notified of property changes of all
+the childs of @timeline_element</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="prop_object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that originated the signal</doc>
+ <type name="GObject.Object"/>
+ </parameter>
+ <parameter name="prop" transfer-ownership="none">
+ <doc xml:space="preserve">the property that changed</doc>
+ <type name="GObject.ParamSpec"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="TimelineElementClass"
+ c:type="GESTimelineElementClass"
+ glib:is-gtype-struct-for="TimelineElement">
+ <doc xml:space="preserve">The GESTimelineElement base class. Subclasses should override at least
+@set_start @set_inpoint @set_duration @ripple @ripple_end @roll_start
+@roll_end and @trim.
+
+Vmethods in subclasses should apply all the operation they need to but
+the real method implementation is in charge of setting the proper field,
+and emit the notify signal.</doc>
+ <field name="parent_class">
+ <type name="GObject.InitiallyUnownedClass"
+ c:type="GInitiallyUnownedClass"/>
+ </field>
+ <field name="set_parent">
+ <callback name="set_parent">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">new parent of self</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_start">
+ <callback name="set_start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_inpoint">
+ <callback name="set_inpoint">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="inpoint" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_duration">
+ <callback name="set_duration">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_max_duration">
+ <callback name="set_max_duration">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="maxduration" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_priority">
+ <callback name="set_priority">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="ripple">
+ <callback name="ripple">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in ripple mode.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="ripple_end">
+ <callback name="ripple_end">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rippled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to ripple.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="roll_start">
+ <callback name="roll_start">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been roll properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in roll mode, it will also adapat
+the in-point of @self according</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="roll_end">
+ <callback name="roll_end">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been rolled properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to roll.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">The new end (start + duration) of @self in roll mode</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="trim">
+ <callback name="trim">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the self as been trimmed properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTimelineElement to trim.</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="deep_copy">
+ <callback name="deep_copy">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="copy" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="paste" introspectable="0">
+ <callback name="paste" introspectable="0">
+ <return-value>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="ref_element" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="paste_position" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="list_children_properties" introspectable="0">
+ <callback name="list_children_properties" introspectable="0">
+ <return-value>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="n_properties" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="lookup_child">
+ <callback name="lookup_child">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="child"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_track_types">
+ <callback name="get_track_types">
+ <return-value transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESTimelineElement</doc>
+ <type name="TimelineElement" c:type="GESTimelineElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TimelineElementPrivate"
+ c:type="GESTimelineElementPrivate"
+ disguised="1">
+ </record>
+ <record name="TimelinePrivate" c:type="GESTimelinePrivate" disguised="1">
+ </record>
+ <class name="TitleClip"
+ c:symbol-prefix="title_clip"
+ c:type="GESTitleClip"
+ parent="SourceClip"
+ glib:type-name="GESTitleClip"
+ glib:get-type="ges_title_clip_get_type"
+ glib:type-struct="TitleClipClass">
+ <doc xml:space="preserve">Renders the given text in the specified font, at specified position, and
+with the specified background pattern.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_title_clip_new">
+ <doc xml:space="preserve">Creates a new #GESTitleClip</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESTitleClip,
+or %NULL if there was an error.</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </return-value>
+ </constructor>
+ <method name="get_background_color"
+ c:identifier="ges_title_clip_get_background_color"
+ deprecated="1">
+ <doc xml:space="preserve">Get the background used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The color used by @self.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_font_desc"
+ c:identifier="ges_title_clip_get_font_desc"
+ deprecated="1">
+ <doc xml:space="preserve">Get the pango font description used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The pango font description used by @self.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_halignment"
+ c:identifier="ges_title_clip_get_halignment"
+ deprecated="1">
+ <doc xml:space="preserve">Get the horizontal aligment used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal aligment used by @self.</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text"
+ c:identifier="ges_title_clip_get_text"
+ deprecated="1">
+ <doc xml:space="preserve">Get the text currently set on @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The text currently set on @self.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text_color"
+ c:identifier="ges_title_clip_get_text_color"
+ deprecated="1">
+ <doc xml:space="preserve">Get the color used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The color used by @self.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_valignment"
+ c:identifier="ges_title_clip_get_valignment"
+ deprecated="1">
+ <doc xml:space="preserve">Get the vertical aligment used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical aligment used by @self.</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_xpos"
+ c:identifier="ges_title_clip_get_xpos"
+ deprecated="1">
+ <doc xml:space="preserve">Get the horizontal position used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position used by @self.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ypos"
+ c:identifier="ges_title_clip_get_ypos"
+ deprecated="1">
+ <doc xml:space="preserve">Get the vertical position used by @self.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position used by @self.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleClip</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_background"
+ c:identifier="ges_title_clip_set_background"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the background of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="background" transfer-ownership="none">
+ <doc xml:space="preserve">The color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_color"
+ c:identifier="ges_title_clip_set_color"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the color of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">The color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_font_desc"
+ c:identifier="ges_title_clip_set_font_desc"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the pango font description of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip*</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="font_desc" transfer-ownership="none">
+ <doc xml:space="preserve">the pango font description</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_halignment"
+ c:identifier="ges_title_clip_set_halignment"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the horizontal aligment of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set horizontal alignement of text on</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="halign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextHAlign</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_text"
+ c:identifier="ges_title_clip_set_text"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the text this clip will render.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set text on</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="text" transfer-ownership="none">
+ <doc xml:space="preserve">the text to render. an internal copy of this text will be
+made.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valignment"
+ c:identifier="ges_title_clip_set_valignment"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the vertical aligment of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set vertical alignement of text on</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="valign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextVAlign</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_xpos"
+ c:identifier="ges_title_clip_set_xpos"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the horizontal position of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ypos"
+ c:identifier="ges_title_clip_set_ypos"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the vertical position of the text.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleClip* to set</doc>
+ <type name="TitleClip" c:type="GESTitleClip*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="background"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The background of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="color"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The color of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="font-desc"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Pango font description string</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="halignment"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Horizontal alignment of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="TextHAlign"/>
+ </property>
+ <property name="text"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The text to diplay</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="valignment"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Vertical alignent of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="TextVAlign"/>
+ </property>
+ <property name="xpos"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="ypos"
+ deprecated="1"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position of the text</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead</doc-deprecated>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <field name="parent">
+ <type name="SourceClip" c:type="GESSourceClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TitleClipPrivate" c:type="GESTitleClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TitleClipClass"
+ c:type="GESTitleClipClass"
+ glib:is-gtype-struct-for="TitleClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="SourceClipClass" c:type="GESSourceClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TitleClipPrivate" c:type="GESTitleClipPrivate" disguised="1">
+ </record>
+ <class name="TitleSource"
+ c:symbol-prefix="title_source"
+ c:type="GESTitleSource"
+ parent="VideoSource"
+ glib:type-name="GESTitleSource"
+ glib:get-type="ges_title_source_get_type"
+ glib:type-struct="TitleSourceClass">
+ <doc xml:space="preserve">#GESTitleSource is a GESTimelineElement that implements the notion
+of titles in GES.
+
+## Children Properties
+
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+&lt;informaltable frame="none"&gt;
+&lt;tgroup cols="3"&gt;
+&lt;colspec colname="properties_type" colwidth="150px"/&gt;
+&lt;colspec colname="properties_name" colwidth="200px"/&gt;
+&lt;colspec colname="properties_flags" colwidth="400px"/&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="guint"&gt;&lt;type&gt;guint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--background"&gt;background&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The color of the background&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="guint"&gt;&lt;type&gt;guint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--color"&gt;color&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The color of the text&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gchar"&gt;&lt;type&gt;gchar&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--font-desc"&gt;font-desc&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Pango font description string&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="GESTextHAlign"&gt;&lt;type&gt;GESTextHAlign&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--halignment"&gt;halignment&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Horizontal alignment of the text&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gchar"&gt;&lt;type&gt;gchar&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--text"&gt;text&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The text to be rendered&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="GESTextVAlign"&gt;&lt;type&gt;GESTextVAlign&lt;/type&gt;&lt;/link&gt;
+ &lt;/entry&gt;&lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--valignment"&gt;valignment&lt;/link&gt;
+ &lt;/entry&gt;&lt;entry&gt;Vertical alignent of the text&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gdouble"&gt;&lt;type&gt;gdouble&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--xpos"&gt;xpos&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The horizontal position of the text&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;&lt;entry role="property_type"&gt;&lt;link linkend="gdouble"&gt;&lt;type&gt;gdouble&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--ypos"&gt;ypos&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The vertical position of the text&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;&lt;entry role="property_type"&gt;&lt;link linkend="gboolean"&gt;&lt;type&gt;gboolean&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--shaded-background"&gt;shaded-background&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Whether to shade the background under the text area&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;&lt;entry role="property_type"&gt;&lt;link linkend="guint"&gt;&lt;type&gt;guint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESTileSource--outline-color"&gt;outline-color&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Color to use for outline the text (big-endian ARGB).&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/informaltable&gt;</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <method name="get_background_color"
+ c:identifier="ges_title_source_get_background_color">
+ <doc xml:space="preserve">Get the background used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The background used by @source.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_font_desc"
+ c:identifier="ges_title_source_get_font_desc">
+ <doc xml:space="preserve">Get the pango font description used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The pango font description used by this
+@source.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_halignment"
+ c:identifier="ges_title_source_get_halignment">
+ <doc xml:space="preserve">Get the horizontal aligment used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal aligment used by @source.</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text" c:identifier="ges_title_source_get_text">
+ <doc xml:space="preserve">Get the text currently set on the @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The text currently set on the @source.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_text_color"
+ c:identifier="ges_title_source_get_text_color">
+ <doc xml:space="preserve">Get the color used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The color used by @source.</doc>
+ <type name="guint32" c:type="const guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_valignment"
+ c:identifier="ges_title_source_get_valignment">
+ <doc xml:space="preserve">Get the vertical aligment used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical aligment used by @source.</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_xpos" c:identifier="ges_title_source_get_xpos">
+ <doc xml:space="preserve">Get the horizontal position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The horizontal position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ypos" c:identifier="ges_title_source_get_ypos">
+ <doc xml:space="preserve">Get the vertical position used by @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The vertical position used by @source.</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_background_color"
+ c:identifier="ges_title_source_set_background_color">
+ <doc xml:space="preserve">Sets the color of the background</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">the color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_font_desc"
+ c:identifier="ges_title_source_set_font_desc">
+ <doc xml:space="preserve">Set the pango font description this source will use to render
+the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="font_desc" transfer-ownership="none">
+ <doc xml:space="preserve">the pango font description</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_halignment"
+ c:identifier="ges_title_source_set_halignment">
+ <doc xml:space="preserve">Sets the vertical aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set text on</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="halign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextHAlign</doc>
+ <type name="TextHAlign" c:type="GESTextHAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_text"
+ c:identifier="ges_title_source_set_text"
+ deprecated="1">
+ <doc xml:space="preserve">Sets the text this track element will render.</doc>
+ <doc-deprecated xml:space="preserve">use ges_track_element_get/set_children_properties on the
+GESTrackElement instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set text on</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="text" transfer-ownership="none">
+ <doc xml:space="preserve">the text to render. an internal copy of this text will be
+made.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_text_color"
+ c:identifier="ges_title_source_set_text_color">
+ <doc xml:space="preserve">Sets the color of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">the color @self is being set to</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valignment"
+ c:identifier="ges_title_source_set_valignment">
+ <doc xml:space="preserve">Sets the vertical aligment of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set text on</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="valign" transfer-ownership="none">
+ <doc xml:space="preserve">#GESTextVAlign</doc>
+ <type name="TextVAlign" c:type="GESTextVAlign"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_xpos" c:identifier="ges_title_source_set_xpos">
+ <doc xml:space="preserve">Sets the horizontal position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the horizontal position @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ypos" c:identifier="ges_title_source_set_ypos">
+ <doc xml:space="preserve">Sets the vertical position of the text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTitleSource* to set</doc>
+ <type name="TitleSource" c:type="GESTitleSource*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the color @self is being set to</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="VideoSource" c:type="GESVideoSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TitleSourcePrivate" c:type="GESTitleSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TitleSourceClass"
+ c:type="GESTitleSourceClass"
+ glib:is-gtype-struct-for="TitleSource">
+ <field name="parent_class">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="VideoSourceClass" c:type="GESVideoSourceClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TitleSourcePrivate"
+ c:type="GESTitleSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="Track"
+ c:symbol-prefix="track"
+ c:type="GESTrack"
+ parent="Gst.Bin"
+ glib:type-name="GESTrack"
+ glib:get-type="ges_track_get_type"
+ glib:type-struct="TrackClass">
+ <doc xml:space="preserve">Corresponds to one output format (i.e. audio OR video).
+
+Contains the compatible TrackElement(s).</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gst.ChildProxy"/>
+ <constructor name="new" c:identifier="ges_track_new">
+ <doc xml:space="preserve">Creates a new #GESTrack with the given @type and @caps.
+
+The newly created track will steal a reference to the caps. If you wish to
+use those caps elsewhere, you will have to take an extra reference.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new #GESTrack.</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The type of track</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">The caps to restrict the output of the track to.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="get_mixing_element" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_element" c:identifier="ges_track_add_element">
+ <doc xml:space="preserve">Adds the given object to the track. Sets the object's controlling track,
+and thus takes ownership of the @object.
+
+An object can only be added to one track.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#TRUE if the object was properly added. #FALSE if the track does not
+want to accept the object.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement to add</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="commit" c:identifier="ges_track_commit">
+ <doc xml:space="preserve">Commits all the pending changes of the TrackElement contained in the
+track.
+
+When timing changes happen in a timeline, the changes are not
+directly done inside NLE. This method needs to be called so any changes
+on a clip contained in the timeline actually happen at the media
+processing level.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if something as been commited %FALSE if nothing needed
+to be commited</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="ges_track_get_caps">
+ <doc xml:space="preserve">Get the #GstCaps this track is configured to output.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstCaps this track is configured to output.</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_elements" c:identifier="ges_track_get_elements">
+ <doc xml:space="preserve">Gets the #GESTrackElement contained in @track</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of
+#GESTrackElement present in the Track sorted by priority and start.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TrackElement"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_mixing" c:identifier="ges_track_get_mixing">
+ <doc xml:space="preserve">Gets if the underlying #NleComposition contains an expandable mixer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#True if there is a mixer, #False otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timeline" c:identifier="ges_track_get_timeline">
+ <doc xml:space="preserve">Get the #GESTimeline this track belongs to. Can be %NULL.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GESTimeline this track belongs to. Can be %NULL.</doc>
+ <type name="Timeline" c:type="const GESTimeline*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_element" c:identifier="ges_track_remove_element">
+ <doc xml:space="preserve">Removes the object from the track and unparents it.
+Unparenting it means the reference owned by @track on the @object will be
+removed. If you wish to use the @object after this function, make sure you
+call gst_object_ref() before removing it from the @track.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#TRUE if the object was removed, else #FALSE if the track
+could not remove the object (like if it didn't belong to the track).</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement to remove</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_create_element_for_gap_func"
+ c:identifier="ges_track_set_create_element_for_gap_func"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the function that should be used to create the GstElement used to fill gaps.
+To avoid to provide such a function we advice you to use the
+#ges_audio_track_new and #ges_video_track_new constructor when possible.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="func" transfer-ownership="none" scope="notified">
+ <doc xml:space="preserve">The #GESCreateElementForGapFunc that will be used
+to create #GstElement to fill gaps</doc>
+ <type name="CreateElementForGapFunc"
+ c:type="GESCreateElementForGapFunc"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mixing" c:identifier="ges_track_set_mixing">
+ <doc xml:space="preserve">Sets if the #GESTrack should be mixing.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="mixing" transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the track should be mixing, FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_restriction_caps"
+ c:identifier="ges_track_set_restriction_caps">
+ <doc xml:space="preserve">Sets the given @caps as the caps the track has to output.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to set</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timeline" c:identifier="ges_track_set_timeline">
+ <doc xml:space="preserve">Sets @timeline as the timeline controlling @track.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="timeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTimeline</doc>
+ <type name="Timeline" c:type="GESTimeline*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="update_restriction_caps"
+ c:identifier="ges_track_update_restriction_caps">
+ <doc xml:space="preserve">Updates the restriction caps by modifying all the fields present in @caps
+in the original restriction caps. If for example the current restriction caps
+are video/x-raw, format=I420, width=360 and @caps is video/x-raw, format=RGB,
+the restriction caps will be updated to video/x-raw, format=RGB, width=360.
+
+Modification happens for each structure in the new caps, and
+one can add new fields or structures through that function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrack</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to update with</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="caps"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Caps used to filter/choose the output stream. This is generally set to
+a generic set of caps like 'video/x-raw' for raw video.
+
+Default value: #GST_CAPS_ANY.</doc>
+ <type name="Gst.Caps"/>
+ </property>
+ <property name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">Current duration of the track
+
+Default value: O</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="mixing"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Whether layer mixing is activated or not on the track.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="restriction-caps" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Caps used to filter/choose the output stream.
+
+Default value: #GST_CAPS_ANY.</doc>
+ <type name="Gst.Caps"/>
+ </property>
+ <property name="track-type"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Type of stream the track outputs. This is used when creating the #GESTrack
+to specify in generic terms what type of content will be outputted.
+
+It also serves as a 'fast' way to check what type of data will be outputted
+from the #GESTrack without having to actually check the #GESTrack's caps
+property.</doc>
+ <type name="TrackType"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Bin" c:type="GstBin"/>
+ </field>
+ <field name="type">
+ <doc xml:space="preserve">a #GESTrackType indicting the basic type of the track.</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TrackPrivate" c:type="GESTrackPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="commited" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="track-element-added" when="first">
+ <doc xml:space="preserve">Will be emitted after a track element was added to the track.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="effect" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement that was added.</doc>
+ <type name="TrackElement"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="track-element-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after a track element was removed from the track.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="effect" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement that was removed.</doc>
+ <type name="TrackElement"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="TrackClass"
+ c:type="GESTrackClass"
+ glib:is-gtype-struct-for="Track">
+ <field name="parent_class" readable="0" private="1">
+ <type name="Gst.BinClass" c:type="GstBinClass"/>
+ </field>
+ <field name="get_mixing_element" introspectable="0">
+ <callback name="get_mixing_element" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="track" transfer-ownership="none">
+ <type name="Track" c:type="GESTrack*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TrackElement"
+ c:symbol-prefix="track_element"
+ c:type="GESTrackElement"
+ parent="TimelineElement"
+ abstract="1"
+ glib:type-name="GESTrackElement"
+ glib:get-type="ges_track_element_get_type"
+ glib:type-struct="TrackElementClass">
+ <doc xml:space="preserve">#GESTrackElement is the Base Class for any object that can be contained in a
+#GESTrack.
+
+It contains the basic information as to the location of the object within
+its container, like the start position, the inpoint, the duration and the
+priority.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <virtual-method name="active_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create_element" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create_gnl_object" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="list_children_properties" introspectable="0">
+ <return-value>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="n_properties" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="lookup_child"
+ invoker="lookup_child"
+ deprecated="1">
+ <doc xml:space="preserve">Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_lookup_child</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="element"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="Gst.Element" c:type="GstElement**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_children_props"
+ c:identifier="ges_track_element_add_children_props">
+ <doc xml:space="preserve">Looks for the properties defines with the various parametters and add
+them to the hashtable of children properties.
+
+To be used by subclasses only</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement to set chidlren props on</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">The GstElement to retrieve properties from</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="wanted_categories"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">
+An array of categories of GstElement to
+take into account (as defined in the factory meta "klass" field)</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="blacklist"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A
+blacklist of elements factory names to not take into account</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="whitelist"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A list
+of propery names to add as children properties</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="edit" c:identifier="ges_track_element_edit">
+ <doc xml:space="preserve">Edit @object in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the object as been edited properly, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement to edit</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="layers" transfer-ownership="none">
+ <doc xml:space="preserve">The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.
+ FIXME: This is not implemented yet.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Layer"/>
+ </type>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEditMode in which the edition will happen.</doc>
+ <type name="EditMode" c:type="GESEditMode"/>
+ </parameter>
+ <parameter name="edge" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESEdge the edit should happen on.</doc>
+ <type name="Edge" c:type="GESEdge"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position at which to edit @object (in nanosecond)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_all_control_bindings"
+ c:identifier="ges_track_element_get_all_control_bindings">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A
+#GHashTable containing all property_name: GstControlBinding</doc>
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="utf8"/>
+ <type name="Gst.ControlBinding"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trackelement" transfer-ownership="none">
+ <doc xml:space="preserve">The #TrackElement from which to get all set bindings</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_child_properties"
+ c:identifier="ges_track_element_get_child_properties"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Gets properties of a child of @object.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_get_child_properties</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">return location for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property"
+ c:identifier="ges_track_element_get_child_property"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">In general, a copy is made of the property contents and
+the caller is responsible for freeing the memory by calling
+g_value_unset().
+
+Gets a property of a GstElement contained in @object.
+
+Note that #ges_track_element_get_child_property is really
+intended for language bindings, #ges_track_element_get_child_properties
+is much more convenient for C programming.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_get_child_property</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the property was found, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">return location for the property value, it will
+be initialized if it is initialized with 0</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property_by_pspec"
+ c:identifier="ges_track_element_get_child_property_by_pspec"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Gets a property of a child of @object.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_get_child_property_by_pspec</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <doc xml:space="preserve">The #GParamSpec that specifies the property you want to get</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">return location for the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_property_valist"
+ c:identifier="ges_track_element_get_child_property_valist"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Gets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_get_child_property_valist</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement parent object</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_control_binding"
+ c:identifier="ges_track_element_get_control_binding">
+ <doc xml:space="preserve">Looks up the various controlled properties for that #GESTrackElement,
+and returns the #GstControlBinding which controls @property_name.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstControlBinding associated with
+@property_name, or %NULL if that property is not controlled.</doc>
+ <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement in which to lookup the bindings.</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The property_name to which the binding is associated.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_element" c:identifier="ges_track_element_get_element">
+ <doc xml:space="preserve">Get the #GstElement this track element is controlling within GNonLin.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement this track element is controlling
+within GNonLin.</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_gnlobject"
+ c:identifier="ges_track_element_get_gnlobject"
+ deprecated="1">
+ <doc xml:space="preserve">Get the NleObject object this object is controlling.</doc>
+ <doc-deprecated xml:space="preserve">use #ges_track_element_get_nleobject instead.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the NleObject object this object is controlling.</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_nleobject"
+ c:identifier="ges_track_element_get_nleobject"
+ version="1.6">
+ <doc xml:space="preserve">Get the GNonLin object this object is controlling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the GNonLin object this object is controlling.</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_track" c:identifier="ges_track_element_get_track">
+ <doc xml:space="preserve">Get the #GESTrack to which this object belongs.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GESTrack to which this object
+belongs. Can be %NULL if it is not in any track</doc>
+ <type name="Track" c:type="GESTrack*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_track_type"
+ c:identifier="ges_track_element_get_track_type">
+ <return-value transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_active" c:identifier="ges_track_element_is_active">
+ <doc xml:space="preserve">Lets you know if @object will be used for playback and rendering,
+or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @object is active, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="list_children_properties"
+ c:identifier="ges_track_element_list_children_properties"
+ deprecated="1">
+ <doc xml:space="preserve">Gets an array of #GParamSpec* for all configurable properties of the
+children of @object.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_list_children_properties</doc-deprecated>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">an array of #GParamSpec* which should be freed after use or
+%NULL if something went wrong</doc>
+ <array length="0" zero-terminated="0" c:type="GParamSpec**">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement to get the list of children properties from</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="n_properties"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the length of the returned array</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="lookup_child"
+ c:identifier="ges_track_element_lookup_child"
+ deprecated="1">
+ <doc xml:space="preserve">Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_lookup_child</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="element"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="Gst.Element" c:type="GstElement**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_control_binding"
+ c:identifier="ges_track_element_remove_control_binding">
+ <doc xml:space="preserve">Removes a #GstControlBinding from @object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the binding could be removed, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement on which to set a control binding</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property to control.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_active" c:identifier="ges_track_element_set_active">
+ <doc xml:space="preserve">Sets the usage of the @object. If @active is %TRUE, the object will be used for
+playback and rendering, else it will be ignored.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the property was toggled, else %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">visibility</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_properties"
+ c:identifier="ges_track_element_set_child_properties"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Sets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_set_child_properties</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement parent object</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property"
+ c:identifier="ges_track_element_set_child_property"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Sets a property of a GstElement contained in @object.
+
+Note that #ges_track_element_set_child_property is really
+intended for language bindings, #ges_track_element_set_child_properties
+is much more convenient for C programming.</doc>
+ <doc-deprecated xml:space="preserve">use #ges_timeline_element_set_child_property instead</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the property was set, %FALSE otherwize</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The origin #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property_by_pspec"
+ c:identifier="ges_track_element_set_child_property_by_pspec"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Sets a property of a child of @object.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_set_child_property_by_spec</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackElement</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <doc xml:space="preserve">The #GParamSpec that specifies the property you want to set</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_child_property_valist"
+ c:identifier="ges_track_element_set_child_property_valist"
+ introspectable="0"
+ deprecated="1">
+ <doc xml:space="preserve">Sets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.</doc>
+ <doc-deprecated xml:space="preserve">Use #ges_timeline_element_set_child_property_valist</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESTrackElement parent object</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more
+name/return location pairs, followed by NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_control_source"
+ c:identifier="ges_track_element_set_control_source">
+ <doc xml:space="preserve">Creates a #GstControlBinding and adds it to the #GstElement concerned by the
+property. Use the same syntax as #ges_track_element_lookup_child for
+the property name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the binding could be created and added, %FALSE if an error
+occured</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESTrackElement on which to set a control binding</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlSource to set on the binding.</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the property to control.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="binding_type" transfer-ownership="none">
+ <doc xml:space="preserve">The type of binding to create. Only "direct" is available for now.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_track_type"
+ c:identifier="ges_track_element_set_track_type">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="active" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Whether the object should be taken into account in the #GESTrack output.
+If #FALSE, then its contents will not be used in the resulting track.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="track" transfer-ownership="none">
+ <type name="Track"/>
+ </property>
+ <property name="track-type"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="TrackType"/>
+ </property>
+ <field name="parent">
+ <type name="TimelineElement" c:type="GESTimelineElement"/>
+ </field>
+ <field name="active" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TrackElementPrivate" c:type="GESTrackElementPrivate*"/>
+ </field>
+ <field name="asset" readable="0" private="1">
+ <type name="Asset" c:type="GESAsset*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="control-binding-added" when="first">
+ <doc xml:space="preserve">The control-binding-added signal is emitted each time a control binding
+is added for a child property of @track_element</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="control_binding" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlBinding that has been added</doc>
+ <type name="Gst.ControlBinding"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="control-binding-removed" when="first">
+ <doc xml:space="preserve">The control-binding-removed signal is emitted each time a control binding
+is removed for a child property of @track_element</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="control_binding" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlBinding that has been removed</doc>
+ <type name="Gst.ControlBinding"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <class name="TrackElementAsset"
+ c:symbol-prefix="track_element_asset"
+ c:type="GESTrackElementAsset"
+ parent="Asset"
+ glib:type-name="GESTrackElementAsset"
+ glib:get-type="ges_track_element_asset_get_type"
+ glib:type-struct="TrackElementAssetClass">
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <method name="get_track_type"
+ c:identifier="ges_track_element_asset_get_track_type">
+ <doc xml:space="preserve">Get the GESAssetTrackType the #GESTrackElement extracted from @self
+should get into</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GESTrackType</doc>
+ <type name="TrackType" c:type="const GESTrackType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESAssetObject</doc>
+ <type name="TrackElementAsset" c:type="GESTrackElementAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_track_type"
+ c:identifier="ges_track_element_asset_set_track_type">
+ <doc xml:space="preserve">Set the #GESAssetTrackType the #GESTrackElement extracted from @self
+should get into</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESAssetObject</doc>
+ <type name="TrackElementAsset" c:type="GESTrackElementAsset*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESTrackType</doc>
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="track-type"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="TrackType"/>
+ </property>
+ <field name="parent">
+ <type name="Asset" c:type="GESAsset"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TrackElementAssetPrivate"
+ c:type="GESTrackElementAssetPrivate*"/>
+ </field>
+ <field name="__ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TrackElementAssetClass"
+ c:type="GESTrackElementAssetClass"
+ glib:is-gtype-struct-for="TrackElementAsset">
+ <field name="parent_class">
+ <type name="AssetClass" c:type="GESAssetClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TrackElementAssetPrivate"
+ c:type="GESTrackElementAssetPrivate"
+ disguised="1">
+ </record>
+ <record name="TrackElementClass"
+ c:type="GESTrackElementClass"
+ glib:is-gtype-struct-for="TrackElement">
+ <doc xml:space="preserve">Subclasses can override the @create_gnl_object method to override what type
+of GNonLin object will be created.</doc>
+ <field name="parent_class" readable="0" private="1">
+ <type name="TimelineElementClass" c:type="GESTimelineElementClass"/>
+ </field>
+ <field name="nleobject_factorytype">
+ <doc xml:space="preserve">name of the GNonLin GStElementFactory type to use.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="create_gnl_object" introspectable="0">
+ <callback name="create_gnl_object" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="create_element" introspectable="0">
+ <callback name="create_element" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="active_changed">
+ <callback name="active_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="changed">
+ <callback name="changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="list_children_properties" introspectable="0">
+ <callback name="list_children_properties" introspectable="0">
+ <return-value>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ <parameter name="n_properties" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="lookup_child">
+ <callback name="lookup_child">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">object to lookup the property in</doc>
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ <parameter name="prop_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="element"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GstElement that
+ takes the real object to set property on</doc>
+ <type name="Gst.Element" c:type="GstElement**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TrackElementPrivate"
+ c:type="GESTrackElementPrivate"
+ disguised="1">
+ </record>
+ <record name="TrackPrivate" c:type="GESTrackPrivate" disguised="1">
+ </record>
+ <bitfield name="TrackType"
+ glib:type-name="GESTrackType"
+ glib:get-type="ges_track_type_get_type"
+ c:type="GESTrackType">
+ <doc xml:space="preserve">Types of content handled by a track. If the content is not one of
+@GES_TRACK_TYPE_AUDIO, @GES_TRACK_TYPE_VIDEO or @GES_TRACK_TYPE_TEXT,
+the user of the #GESTrack must set the type to @GES_TRACK_TYPE_CUSTOM.
+
+@GES_TRACK_TYPE_UNKNOWN is for internal purposes and should not be used
+by users</doc>
+ <member name="unknown"
+ value="1"
+ c:identifier="GES_TRACK_TYPE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">A track of unknown type (i.e. invalid)</doc>
+ </member>
+ <member name="audio"
+ value="2"
+ c:identifier="GES_TRACK_TYPE_AUDIO"
+ glib:nick="audio">
+ <doc xml:space="preserve">An audio track</doc>
+ </member>
+ <member name="video"
+ value="4"
+ c:identifier="GES_TRACK_TYPE_VIDEO"
+ glib:nick="video">
+ <doc xml:space="preserve">A video track</doc>
+ </member>
+ <member name="text"
+ value="8"
+ c:identifier="GES_TRACK_TYPE_TEXT"
+ glib:nick="text">
+ <doc xml:space="preserve">A text (subtitle) track</doc>
+ </member>
+ <member name="custom"
+ value="16"
+ c:identifier="GES_TRACK_TYPE_CUSTOM"
+ glib:nick="custom">
+ <doc xml:space="preserve">A custom-content track</doc>
+ </member>
+ <function name="name" c:identifier="ges_track_type_name">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </bitfield>
+ <class name="Transition"
+ c:symbol-prefix="transition"
+ c:type="GESTransition"
+ parent="Operation"
+ abstract="1"
+ glib:type-name="GESTransition"
+ glib:get-type="ges_transition_get_type"
+ glib:type-struct="TransitionClass">
+ <doc xml:space="preserve">Base class for media transitions.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="Operation" c:type="GESOperation"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TransitionPrivate" c:type="GESTransitionPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TransitionClass"
+ c:type="GESTransitionClass"
+ glib:is-gtype-struct-for="Transition">
+ <field name="parent_class" readable="0" private="1">
+ <type name="OperationClass" c:type="GESOperationClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TransitionClip"
+ c:symbol-prefix="transition_clip"
+ c:type="GESTransitionClip"
+ parent="BaseTransitionClip"
+ glib:type-name="GESTransitionClip"
+ glib:get-type="ges_transition_clip_get_type"
+ glib:type-struct="TransitionClipClass">
+ <doc xml:space="preserve">Creates an object that mixes together the two underlying objects, A and B.
+The A object is assumed to have a higher prioirity (lower number) than the
+B object. At the transition in point, only A will be visible, and by the
+end only B will be visible.
+
+The shape of the video transition depends on the value of the "vtype"
+property. The default value is "crossfade". For audio, only "crossfade" is
+supported.
+
+The ID of the ExtractableType is the nickname of the vtype property value. Note
+that this value can be changed after creation and the GESExtractable.asset value
+will be updated when needed.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_transition_clip_new">
+ <doc xml:space="preserve">Creates a new #GESTransitionClip.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a newly created #GESTransitionClip,
+or %NULL if something went wrong.</doc>
+ <type name="TransitionClip" c:type="GESTransitionClip*"/>
+ </return-value>
+ <parameters>
+ <parameter name="vtype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of transition to create</doc>
+ <type name="VideoStandardTransitionType"
+ c:type="GESVideoStandardTransitionType"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_for_nick"
+ c:identifier="ges_transition_clip_new_for_nick">
+ <doc xml:space="preserve">Creates a new #GESTransitionClip for the provided @nick.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESTransitionClip,
+or %NULL if something went wrong</doc>
+ <type name="TransitionClip" c:type="GESTransitionClip*"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">a string representing the type of transition to create</doc>
+ <type name="utf8" c:type="char*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="vtype"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoStandardTransitionType representing the wipe to use</doc>
+ <type name="VideoStandardTransitionType"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="BaseTransitionClip" c:type="GESBaseTransitionClip"/>
+ </field>
+ <field name="vtype">
+ <doc xml:space="preserve">a #GESVideoStandardTransitionType indicating the type of video transition
+to apply.</doc>
+ <type name="VideoStandardTransitionType"
+ c:type="GESVideoStandardTransitionType"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TransitionClipPrivate" c:type="GESTransitionClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TransitionClipClass"
+ c:type="GESTransitionClipClass"
+ glib:is-gtype-struct-for="TransitionClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="BaseTransitionClipClass"
+ c:type="GESBaseTransitionClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TransitionClipPrivate"
+ c:type="GESTransitionClipPrivate"
+ disguised="1">
+ </record>
+ <record name="TransitionPrivate"
+ c:type="GESTransitionPrivate"
+ disguised="1">
+ </record>
+ <class name="UriClip"
+ c:symbol-prefix="uri_clip"
+ c:type="GESUriClip"
+ parent="SourceClip"
+ glib:type-name="GESUriClip"
+ glib:get-type="ges_uri_clip_get_type"
+ glib:type-struct="UriClipClass">
+ <doc xml:space="preserve">Represents all the output streams from a particular uri. It is assumed that
+the URI points to a file of some type.</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_uri_clip_new">
+ <doc xml:space="preserve">Creates a new #GESUriClip for the provided @uri.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created #GESUriClip, or
+%NULL if there was an error.</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI the source should control</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_uri" c:identifier="ges_uri_clip_get_uri">
+ <doc xml:space="preserve">Get the location of the resource.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The location of the resource.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESUriClip</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_image" c:identifier="ges_uri_clip_is_image">
+ <doc xml:space="preserve">Lets you know if @self is an image or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @self is a still image %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESUriClip</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_muted" c:identifier="ges_uri_clip_is_muted">
+ <doc xml:space="preserve">Lets you know if the audio track of @self is muted or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the audio track of @self is muted, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESUriClip</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_is_image" c:identifier="ges_uri_clip_set_is_image">
+ <doc xml:space="preserve">Sets whether the clip is a still image or not.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESUriClip</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </instance-parameter>
+ <parameter name="is_image" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @self is a still image, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mute" c:identifier="ges_uri_clip_set_mute">
+ <doc xml:space="preserve">Sets whether the audio track of this clip is muted or not.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GESUriClip on which to mute or unmute the audio track</doc>
+ <type name="UriClip" c:type="GESUriClip*"/>
+ </instance-parameter>
+ <parameter name="mute" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to mute @self audio track, %FALSE to unmute it</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="is-image"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Whether this uri clip represents a still image or not. This must be set
+before create_track_elements is called.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="mute"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Whether the sound will be played or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="supported-formats"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="TrackType"/>
+ </property>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The location of the file/resource to use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent">
+ <type name="SourceClip" c:type="GESSourceClip"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="UriClipPrivate" c:type="GESUriClipPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <class name="UriClipAsset"
+ c:symbol-prefix="uri_clip_asset"
+ c:type="GESUriClipAsset"
+ parent="ClipAsset"
+ glib:type-name="GESUriClipAsset"
+ glib:get-type="ges_uri_clip_asset_get_type"
+ glib:type-struct="UriClipAssetClass">
+ <doc xml:space="preserve">The #GESUriClipAsset is a special #GESAsset that lets you handle
+the media file to use inside the GStreamer Editing Services. It has APIs that
+let you get information about the medias. Also, the tags found in the media file are
+set as Metadatas of the Asser.</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <function name="new" c:identifier="ges_uri_clip_asset_new">
+ <doc xml:space="preserve">Creates a #GESUriClipAsset for @uri
+
+Example of request of a GESUriClipAsset:
+|[
+// The request callback
+static void
+filesource_asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
+{
+ GError *error = NULL;
+ GESUriClipAsset *filesource_asset;
+
+ filesource_asset = GES_URI_CLIP_ASSET (ges_asset_request_finish (res, &amp;error));
+ if (filesource_asset) {
+ g_print ("The file: %s is usable as a FileSource, it is%s an image and lasts %" GST_TIME_FORMAT,
+ ges_asset_get_id (GES_ASSET (filesource_asset))
+ ges_uri_clip_asset_is_image (filesource_asset) ? "" : " not",
+ GST_TIME_ARGS (ges_uri_clip_asset_get_duration (filesource_asset));
+ } else {
+ g_print ("The file: %s is *not* usable as a FileSource because: %s",
+ ges_asset_get_id (source), error-&gt;message);
+ }
+
+ gst_object_unref (mfs);
+}
+
+// The request:
+ges_uri_clip_asset_new (uri, (GAsyncReadyCallback) filesource_asset_loaded_cb, user_data);
+]|</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI of the file for which to create a #GESUriClipAsset</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="cancellable"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional %GCancellable object, %NULL to ignore.</doc>
+ <type name="Gio.Cancellable" c:type="GCancellable*"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="async"
+ closure="3">
+ <doc xml:space="preserve">a #GAsyncReadyCallback to call when the initialization is finished</doc>
+ <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The user data to pass when @callback is called</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="request_sync"
+ c:identifier="ges_uri_clip_asset_request_sync"
+ throws="1">
+ <doc xml:space="preserve">Creates a #GESUriClipAsset for @uri syncronously. You should avoid
+to use it in application, and rather create #GESUriClipAsset asynchronously</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A reference to the requested asset or
+%NULL if an error happened</doc>
+ <type name="UriClipAsset" c:type="GESUriClipAsset*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI of the file for which to create a #GESUriClipAsset.
+You can also use multi file uris for #GESMultiFileSource.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="get_duration"
+ c:identifier="ges_uri_clip_asset_get_duration">
+ <doc xml:space="preserve">Gets duration of the file represented by @self</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The duration of @self</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESUriClipAsset</doc>
+ <type name="UriClipAsset" c:type="GESUriClipAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_info" c:identifier="ges_uri_clip_asset_get_info">
+ <doc xml:space="preserve">Gets #GstDiscovererInfo about the file</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GstDiscovererInfo of specified asset</doc>
+ <type name="GstPbutils.DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">Target asset</doc>
+ <type name="UriClipAsset" c:type="const GESUriClipAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_assets"
+ c:identifier="ges_uri_clip_asset_get_stream_assets">
+ <doc xml:space="preserve">Get the GESUriSourceAsset @self containes</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a
+#GList of #GESUriSourceAsset</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="UriSourceAsset"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESUriClipAsset</doc>
+ <type name="UriClipAsset" c:type="GESUriClipAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_image" c:identifier="ges_uri_clip_asset_is_image">
+ <doc xml:space="preserve">Gets Whether the file represented by @self is an image or not</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Whether the file represented by @self is an image or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #indent: Standard input:311: Error:Unexpected end of file
+GESUriClipAsset</doc>
+ <type name="UriClipAsset" c:type="GESUriClipAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="duration" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The duration (in nanoseconds) of the media file</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="parent">
+ <type name="ClipAsset" c:type="GESClipAsset"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="UriClipAssetPrivate" c:type="GESUriClipAssetPrivate*"/>
+ </field>
+ <field name="__ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="UriClipAssetClass"
+ c:type="GESUriClipAssetClass"
+ glib:is-gtype-struct-for="UriClipAsset">
+ <field name="parent_class">
+ <type name="ClipAssetClass" c:type="GESClipAssetClass"/>
+ </field>
+ <field name="discoverer" readable="0" private="1">
+ <type name="GstPbutils.Discoverer" c:type="GstDiscoverer*"/>
+ </field>
+ <field name="sync_discoverer" readable="0" private="1">
+ <type name="GstPbutils.Discoverer" c:type="GstDiscoverer*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="set_timeout"
+ c:identifier="ges_uri_clip_asset_class_set_timeout">
+ <doc xml:space="preserve">Sets the timeout of #GESUriClipAsset loading</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESUriClipAssetClass on which to set the discoverer timeout</doc>
+ <type name="UriClipAssetClass" c:type="GESUriClipAssetClass*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">The timeout to set</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="UriClipAssetPrivate"
+ c:type="GESUriClipAssetPrivate"
+ disguised="1">
+ </record>
+ <record name="UriClipClass"
+ c:type="GESUriClipClass"
+ glib:is-gtype-struct-for="UriClip">
+ <field name="parent_class" readable="0" private="1">
+ <type name="SourceClipClass" c:type="GESSourceClipClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="UriClipPrivate" c:type="GESUriClipPrivate" disguised="1">
+ </record>
+ <class name="UriSourceAsset"
+ c:symbol-prefix="uri_source_asset"
+ c:type="GESUriSourceAsset"
+ parent="TrackElementAsset"
+ glib:type-name="GESUriSourceAsset"
+ glib:get-type="ges_uri_source_asset_get_type"
+ glib:type-struct="UriSourceAssetClass">
+ <doc xml:space="preserve">NOTE: You should never request such a #GESAsset as they will be created automatically
+by #GESUriClipAsset-s.</doc>
+ <implements name="MetaContainer"/>
+ <implements name="Gio.AsyncInitable"/>
+ <implements name="Gio.Initable"/>
+ <method name="get_filesource_asset"
+ c:identifier="ges_uri_source_asset_get_filesource_asset">
+ <doc xml:space="preserve">Get the #GESUriClipAsset @self is contained in</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GESUriClipAsset</doc>
+ <type name="UriClipAsset" c:type="const GESUriClipAsset*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESUriClipAsset</doc>
+ <type name="UriSourceAsset" c:type="GESUriSourceAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_info"
+ c:identifier="ges_uri_source_asset_get_stream_info">
+ <doc xml:space="preserve">Get the #GstDiscovererStreamInfo user by @asset</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GESUriClipAsset</doc>
+ <type name="GstPbutils.DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <doc xml:space="preserve">A #GESUriClipAsset</doc>
+ <type name="UriSourceAsset" c:type="GESUriSourceAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_uri"
+ c:identifier="ges_uri_source_asset_get_stream_uri">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="asset" transfer-ownership="none">
+ <type name="UriSourceAsset" c:type="GESUriSourceAsset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="TrackElementAsset" c:type="GESTrackElementAsset"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="UriSourceAssetPrivate" c:type="GESUriSourceAssetPrivate*"/>
+ </field>
+ <field name="__ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="UriSourceAssetClass"
+ c:type="GESUriSourceAssetClass"
+ glib:is-gtype-struct-for="UriSourceAsset">
+ <field name="parent_class">
+ <type name="TrackElementAssetClass"
+ c:type="GESTrackElementAssetClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="UriSourceAssetPrivate"
+ c:type="GESUriSourceAssetPrivate"
+ disguised="1">
+ </record>
+ <class name="VideoSource"
+ c:symbol-prefix="video_source"
+ c:type="GESVideoSource"
+ parent="Source"
+ abstract="1"
+ glib:type-name="GESVideoSource"
+ glib:get-type="ges_video_source_get_type"
+ glib:type-struct="VideoSourceClass">
+ <doc xml:space="preserve"># Children Properties:
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+
+&lt;informaltable frame="none"&gt;
+&lt;tgroup cols="3"&gt;
+&lt;colspec colname="properties_type" colwidth="150px"/&gt;
+&lt;colspec colname="properties_name" colwidth="200px"/&gt;
+&lt;colspec colname="properties_flags" colwidth="400px"/&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gdouble"&gt;&lt;type&gt;double&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--alpha"&gt;alpha&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The desired alpha for the stream.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gint"&gt;&lt;type&gt;gint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--posx"&gt;posx&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The desired x position for the stream.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gint"&gt;&lt;type&gt;gint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--posy"&gt;posy&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The desired y position for the stream&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gint"&gt;&lt;type&gt;gint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--width"&gt;width&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The desired width for that source. Set to 0 if size is not mandatory, will be set to width of the current track.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="gint"&gt;&lt;type&gt;gint&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--height"&gt;height&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;The desired height for that source. Set to 0 if size is not mandatory, will be set to height of the current track.&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="GstDeinterlaceModes"&gt;&lt;type&gt;GstDeinterlaceModes&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--deinterlace-mode"&gt;deinterlace-mode&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Deinterlace Mode&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="GstDeinterlaceFields"&gt;&lt;type&gt;GstDeinterlaceFields&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--deinterlace-fields"&gt;deinterlace-fields&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Fields to use for deinterlacing&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+ &lt;entry role="property_type"&gt;&lt;link linkend="GstDeinterlaceFieldLayout"&gt;&lt;type&gt;GstDeinterlaceFieldLayout&lt;/type&gt;&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry role="property_name"&gt;&lt;link linkend="GESVideoSource--deinterlace-tff"&gt;deinterlace-tff&lt;/link&gt;&lt;/entry&gt;
+ &lt;entry&gt;Deinterlace top field first&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/informaltable&gt;</doc>
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <field name="parent" readable="0" private="1">
+ <type name="Source" c:type="GESSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoSourcePrivate" c:type="GESVideoSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoSourceClass"
+ c:type="GESVideoSourceClass"
+ glib:is-gtype-struct-for="VideoSource">
+ <field name="parent_class" readable="0" private="1">
+ <type name="SourceClass" c:type="GESSourceClass"/>
+ </field>
+ <field name="create_source" introspectable="0">
+ <callback name="create_source" introspectable="0">
+ <return-value>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="TrackElement" c:type="GESTrackElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <field name="_ges_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <record name="abi" c:type="abi">
+ <field name="disable_scale_in_compositor" writable="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ </record>
+ </union>
+ </record>
+ <record name="VideoSourcePrivate"
+ c:type="GESVideoSourcePrivate"
+ disguised="1">
+ </record>
+ <enumeration name="VideoStandardTransitionType"
+ glib:type-name="GESVideoStandardTransitionType"
+ glib:get-type="ges_video_standard_transition_type_get_type"
+ c:type="GESVideoStandardTransitionType">
+ <member name="none"
+ value="0"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">Transition type has not been set,</doc>
+ </member>
+ <member name="bar_wipe_lr"
+ value="1"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR"
+ glib:nick="bar-wipe-lr">
+ <doc xml:space="preserve">A bar moves from left to right,</doc>
+ </member>
+ <member name="bar_wipe_tb"
+ value="2"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_TB"
+ glib:nick="bar-wipe-tb">
+ <doc xml:space="preserve">A bar moves from top to bottom,</doc>
+ </member>
+ <member name="box_wipe_tl"
+ value="3"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TL"
+ glib:nick="box-wipe-tl">
+ <doc xml:space="preserve">A box expands from the upper-left corner to the lower-right corner,</doc>
+ </member>
+ <member name="box_wipe_tr"
+ value="4"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TR"
+ glib:nick="box-wipe-tr">
+ <doc xml:space="preserve">A box expands from the upper-right corner to the lower-left corner,</doc>
+ </member>
+ <member name="box_wipe_br"
+ value="5"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BR"
+ glib:nick="box-wipe-br">
+ <doc xml:space="preserve">A box expands from the lower-right corner to the upper-left corner,</doc>
+ </member>
+ <member name="box_wipe_bl"
+ value="6"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BL"
+ glib:nick="box-wipe-bl">
+ <doc xml:space="preserve">A box expands from the lower-left corner to the upper-right corner,</doc>
+ </member>
+ <member name="four_box_wipe_ci"
+ value="7"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CI"
+ glib:nick="four-box-wipe-ci">
+ <doc xml:space="preserve">A box shape expands from each of the four corners toward the center,</doc>
+ </member>
+ <member name="four_box_wipe_co"
+ value="8"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CO"
+ glib:nick="four-box-wipe-co">
+ <doc xml:space="preserve">A box shape expands from the center of each quadrant toward the corners of each quadrant,</doc>
+ </member>
+ <member name="barndoor_v"
+ value="21"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_V"
+ glib:nick="barndoor-v">
+ <doc xml:space="preserve">A central, vertical line splits and expands toward the left and right edges,</doc>
+ </member>
+ <member name="barndoor_h"
+ value="22"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_H"
+ glib:nick="barndoor-h">
+ <doc xml:space="preserve">A central, horizontal line splits and expands toward the top and bottom edges,</doc>
+ </member>
+ <member name="box_wipe_tc"
+ value="23"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TC"
+ glib:nick="box-wipe-tc">
+ <doc xml:space="preserve">A box expands from the top edge's midpoint to the bottom corners,</doc>
+ </member>
+ <member name="box_wipe_rc"
+ value="24"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_RC"
+ glib:nick="box-wipe-rc">
+ <doc xml:space="preserve">A box expands from the right edge's midpoint to the left corners,</doc>
+ </member>
+ <member name="box_wipe_bc"
+ value="25"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BC"
+ glib:nick="box-wipe-bc">
+ <doc xml:space="preserve">A box expands from the bottom edge's midpoint to the top corners,</doc>
+ </member>
+ <member name="box_wipe_lc"
+ value="26"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_LC"
+ glib:nick="box-wipe-lc">
+ <doc xml:space="preserve">A box expands from the left edge's midpoint to the right corners,</doc>
+ </member>
+ <member name="diagonal_tl"
+ value="41"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TL"
+ glib:nick="diagonal-tl">
+ <doc xml:space="preserve">A diagonal line moves from the upper-left corner to the lower-right corner,</doc>
+ </member>
+ <member name="diagonal_tr"
+ value="42"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TR"
+ glib:nick="diagonal-tr">
+ <doc xml:space="preserve">A diagonal line moves from the upper right corner to the lower-left corner,</doc>
+ </member>
+ <member name="bowtie_v"
+ value="43"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_V"
+ glib:nick="bowtie-v">
+ <doc xml:space="preserve">Two wedge shapes slide in from the top and bottom edges toward the center,</doc>
+ </member>
+ <member name="bowtie_h"
+ value="44"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_H"
+ glib:nick="bowtie-h">
+ <doc xml:space="preserve">Two wedge shapes slide in from the left and right edges toward the center,</doc>
+ </member>
+ <member name="barndoor_dbl"
+ value="45"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DBL"
+ glib:nick="barndoor-dbl">
+ <doc xml:space="preserve">A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners,</doc>
+ </member>
+ <member name="barndoor_dtl"
+ value="46"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DTL"
+ glib:nick="barndoor-dtl">
+ <doc xml:space="preserve">A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners,</doc>
+ </member>
+ <member name="misc_diagonal_dbd"
+ value="47"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DBD"
+ glib:nick="misc-diagonal-dbd">
+ <doc xml:space="preserve">Four wedge shapes split from the center and retract toward the four edges,</doc>
+ </member>
+ <member name="misc_diagonal_dd"
+ value="48"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DD"
+ glib:nick="misc-diagonal-dd">
+ <doc xml:space="preserve">A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges,</doc>
+ </member>
+ <member name="vee_d"
+ value="61"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_D"
+ glib:nick="vee-d">
+ <doc xml:space="preserve">A wedge shape moves from top to bottom,</doc>
+ </member>
+ <member name="vee_l"
+ value="62"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_L"
+ glib:nick="vee-l">
+ <doc xml:space="preserve">A wedge shape moves from right to left,</doc>
+ </member>
+ <member name="vee_u"
+ value="63"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_U"
+ glib:nick="vee-u">
+ <doc xml:space="preserve">A wedge shape moves from bottom to top,</doc>
+ </member>
+ <member name="vee_r"
+ value="64"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_R"
+ glib:nick="vee-r">
+ <doc xml:space="preserve">A wedge shape moves from left to right,</doc>
+ </member>
+ <member name="barnvee_d"
+ value="65"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_D"
+ glib:nick="barnvee-d">
+ <doc xml:space="preserve">A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,</doc>
+ </member>
+ <member name="barnvee_l"
+ value="66"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_L"
+ glib:nick="barnvee-l">
+ <doc xml:space="preserve">A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,</doc>
+ </member>
+ <member name="barnvee_u"
+ value="67"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_U"
+ glib:nick="barnvee-u">
+ <doc xml:space="preserve">A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,</doc>
+ </member>
+ <member name="barnvee_r"
+ value="68"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_R"
+ glib:nick="barnvee-r">
+ <doc xml:space="preserve">A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,</doc>
+ </member>
+ <member name="iris_rect"
+ value="101"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_IRIS_RECT"
+ glib:nick="iris-rect">
+ <doc xml:space="preserve">A rectangle expands from the center.,</doc>
+ </member>
+ <member name="clock_cw12"
+ value="201"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW12"
+ glib:nick="clock-cw12">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the twelve o'clock position,</doc>
+ </member>
+ <member name="clock_cw3"
+ value="202"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW3"
+ glib:nick="clock-cw3">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the three o'clock position,</doc>
+ </member>
+ <member name="clock_cw6"
+ value="203"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW6"
+ glib:nick="clock-cw6">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the six o'clock position,</doc>
+ </member>
+ <member name="clock_cw9"
+ value="204"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW9"
+ glib:nick="clock-cw9">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the nine o'clock position,</doc>
+ </member>
+ <member name="pinwheel_tbv"
+ value="205"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBV"
+ glib:nick="pinwheel-tbv">
+ <doc xml:space="preserve">Two radial hands sweep clockwise from the twelve and six o'clock positions,</doc>
+ </member>
+ <member name="pinwheel_tbh"
+ value="206"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBH"
+ glib:nick="pinwheel-tbh">
+ <doc xml:space="preserve">Two radial hands sweep clockwise from the nine and three o'clock positions,</doc>
+ </member>
+ <member name="pinwheel_fb"
+ value="207"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_FB"
+ glib:nick="pinwheel-fb">
+ <doc xml:space="preserve">Four radial hands sweep clockwise,</doc>
+ </member>
+ <member name="fan_ct"
+ value="211"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT"
+ glib:nick="fan-ct">
+ <doc xml:space="preserve">A fan unfolds from the top edge, the fan axis at the center,</doc>
+ </member>
+ <member name="fan_cr"
+ value="212"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR"
+ glib:nick="fan-cr">
+ <doc xml:space="preserve">A fan unfolds from the right edge, the fan axis at the center,</doc>
+ </member>
+ <member name="doublefan_fov"
+ value="213"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOV"
+ glib:nick="doublefan-fov">
+ <doc xml:space="preserve">Two fans, their axes at the center, unfold from the top and bottom,</doc>
+ </member>
+ <member name="doublefan_foh"
+ value="214"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOH"
+ glib:nick="doublefan-foh">
+ <doc xml:space="preserve">Two fans, their axes at the center, unfold from the left and right,</doc>
+ </member>
+ <member name="singlesweep_cwt"
+ value="221"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWT"
+ glib:nick="singlesweep-cwt">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the top edge's midpoint,</doc>
+ </member>
+ <member name="singlesweep_cwr"
+ value="222"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWR"
+ glib:nick="singlesweep-cwr">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the right edge's midpoint,</doc>
+ </member>
+ <member name="singlesweep_cwb"
+ value="223"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWB"
+ glib:nick="singlesweep-cwb">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the bottom edge's midpoint,</doc>
+ </member>
+ <member name="singlesweep_cwl"
+ value="224"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWL"
+ glib:nick="singlesweep-cwl">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the left edge's midpoint,</doc>
+ </member>
+ <member name="doublesweep_pv"
+ value="225"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV"
+ glib:nick="doublesweep-pv">
+ <doc xml:space="preserve">Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints,</doc>
+ </member>
+ <member name="doublesweep_pd"
+ value="226"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PD"
+ glib:nick="doublesweep-pd">
+ <doc xml:space="preserve">Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints,</doc>
+ </member>
+ <member name="doublesweep_ov"
+ value="227"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OV"
+ glib:nick="doublesweep-ov">
+ <doc xml:space="preserve">Two radial hands attached at the top and bottom edges' midpoints sweep from right to left,</doc>
+ </member>
+ <member name="doublesweep_oh"
+ value="228"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OH"
+ glib:nick="doublesweep-oh">
+ <doc xml:space="preserve">Two radial hands attached at the left and right edges' midpoints sweep from top to bottom,</doc>
+ </member>
+ <member name="fan_t"
+ value="231"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_T"
+ glib:nick="fan-t">
+ <doc xml:space="preserve">A fan unfolds from the bottom, the fan axis at the top edge's midpoint,</doc>
+ </member>
+ <member name="fan_r"
+ value="232"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_R"
+ glib:nick="fan-r">
+ <doc xml:space="preserve">A fan unfolds from the left, the fan axis at the right edge's midpoint,</doc>
+ </member>
+ <member name="fan_b"
+ value="233"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B"
+ glib:nick="fan-b">
+ <doc xml:space="preserve">A fan unfolds from the top, the fan axis at the bottom edge's midpoint,</doc>
+ </member>
+ <member name="fan_l"
+ value="234"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_L"
+ glib:nick="fan-l">
+ <doc xml:space="preserve">A fan unfolds from the right, the fan axis at the left edge's midpoint,</doc>
+ </member>
+ <member name="doublefan_fiv"
+ value="235"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIV"
+ glib:nick="doublefan-fiv">
+ <doc xml:space="preserve">Two fans, their axes at the top and bottom, unfold from the center,</doc>
+ </member>
+ <member name="doublefan_fih"
+ value="236"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIH"
+ glib:nick="doublefan-fih">
+ <doc xml:space="preserve">Two fans, their axes at the left and right, unfold from the center,</doc>
+ </member>
+ <member name="singlesweep_cwtl"
+ value="241"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTL"
+ glib:nick="singlesweep-cwtl">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the upper-left corner,</doc>
+ </member>
+ <member name="singlesweep_cwbl"
+ value="242"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBL"
+ glib:nick="singlesweep-cwbl">
+ <doc xml:space="preserve">A radial hand sweeps counter-clockwise from the lower-left corner.,</doc>
+ </member>
+ <member name="singlesweep_cwbr"
+ value="243"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBR"
+ glib:nick="singlesweep-cwbr">
+ <doc xml:space="preserve">A radial hand sweeps clockwise from the lower-right corner,</doc>
+ </member>
+ <member name="singlesweep_cwtr"
+ value="244"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTR"
+ glib:nick="singlesweep-cwtr">
+ <doc xml:space="preserve">A radial hand sweeps counter-clockwise from the upper-right corner,</doc>
+ </member>
+ <member name="doublesweep_pdtl"
+ value="245"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL"
+ glib:nick="doublesweep-pdtl">
+ <doc xml:space="preserve">Two radial hands attached at the upper-left and lower-right corners sweep down and up,</doc>
+ </member>
+ <member name="doublesweep_pdbl"
+ value="246"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL"
+ glib:nick="doublesweep-pdbl">
+ <doc xml:space="preserve">Two radial hands attached at the lower-left and upper-right corners sweep down and up,</doc>
+ </member>
+ <member name="saloondoor_t"
+ value="251"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_T"
+ glib:nick="saloondoor-t">
+ <doc xml:space="preserve">Two radial hands attached at the upper-left and upper-right corners sweep down,</doc>
+ </member>
+ <member name="saloondoor_l"
+ value="252"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_L"
+ glib:nick="saloondoor-l">
+ <doc xml:space="preserve">Two radial hands attached at the upper-left and lower-left corners sweep to the right,</doc>
+ </member>
+ <member name="saloondoor_b"
+ value="253"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_B"
+ glib:nick="saloondoor-b">
+ <doc xml:space="preserve">Two radial hands attached at the lower-left and lower-right corners sweep up,</doc>
+ </member>
+ <member name="saloondoor_r"
+ value="254"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_R"
+ glib:nick="saloondoor-r">
+ <doc xml:space="preserve">Two radial hands attached at the upper-right and lower-right corners sweep to the left,</doc>
+ </member>
+ <member name="windshield_r"
+ value="261"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_R"
+ glib:nick="windshield-r">
+ <doc xml:space="preserve">Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left,</doc>
+ </member>
+ <member name="windshield_u"
+ value="262"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_U"
+ glib:nick="windshield-u">
+ <doc xml:space="preserve">Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom,</doc>
+ </member>
+ <member name="windshield_v"
+ value="263"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_V"
+ glib:nick="windshield-v">
+ <doc xml:space="preserve">Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top,</doc>
+ </member>
+ <member name="windshield_h"
+ value="264"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_H"
+ glib:nick="windshield-h">
+ <doc xml:space="preserve">Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left,</doc>
+ </member>
+ <member name="crossfade"
+ value="512"
+ c:identifier="GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE"
+ glib:nick="crossfade">
+ <doc xml:space="preserve">Crossfade</doc>
+ </member>
+ </enumeration>
+ <enumeration name="VideoTestPattern"
+ glib:type-name="GESVideoTestPattern"
+ glib:get-type="ges_video_test_pattern_get_type"
+ c:type="GESVideoTestPattern">
+ <doc xml:space="preserve">The test pattern to produce</doc>
+ <member name="smpte"
+ value="0"
+ c:identifier="GES_VIDEO_TEST_PATTERN_SMPTE"
+ glib:nick="smpte">
+ <doc xml:space="preserve">A standard SMPTE test pattern</doc>
+ </member>
+ <member name="snow"
+ value="1"
+ c:identifier="GES_VIDEO_TEST_PATTERN_SNOW"
+ glib:nick="snow">
+ <doc xml:space="preserve">Random noise</doc>
+ </member>
+ <member name="black"
+ value="2"
+ c:identifier="GES_VIDEO_TEST_PATTERN_BLACK"
+ glib:nick="black">
+ <doc xml:space="preserve">A black image</doc>
+ </member>
+ <member name="white"
+ value="3"
+ c:identifier="GES_VIDEO_TEST_PATTERN_WHITE"
+ glib:nick="white">
+ <doc xml:space="preserve">A white image</doc>
+ </member>
+ <member name="red"
+ value="4"
+ c:identifier="GES_VIDEO_TEST_PATTERN_RED"
+ glib:nick="red">
+ <doc xml:space="preserve">A red image</doc>
+ </member>
+ <member name="green"
+ value="5"
+ c:identifier="GES_VIDEO_TEST_PATTERN_GREEN"
+ glib:nick="green">
+ <doc xml:space="preserve">A green image</doc>
+ </member>
+ <member name="blue"
+ value="6"
+ c:identifier="GES_VIDEO_TEST_PATTERN_BLUE"
+ glib:nick="blue">
+ <doc xml:space="preserve">A blue image</doc>
+ </member>
+ <member name="checkers_1"
+ value="7"
+ c:identifier="GES_VIDEO_TEST_PATTERN_CHECKERS1"
+ glib:nick="checkers-1">
+ <doc xml:space="preserve">Checkers pattern (1px)</doc>
+ </member>
+ <member name="checkers_2"
+ value="8"
+ c:identifier="GES_VIDEO_TEST_PATTERN_CHECKERS2"
+ glib:nick="checkers-2">
+ <doc xml:space="preserve">Checkers pattern (2px)</doc>
+ </member>
+ <member name="checkers_4"
+ value="9"
+ c:identifier="GES_VIDEO_TEST_PATTERN_CHECKERS4"
+ glib:nick="checkers-4">
+ <doc xml:space="preserve">Checkers pattern (4px)</doc>
+ </member>
+ <member name="checkers_8"
+ value="10"
+ c:identifier="GES_VIDEO_TEST_PATTERN_CHECKERS8"
+ glib:nick="checkers-8">
+ <doc xml:space="preserve">Checkers pattern (8px)</doc>
+ </member>
+ <member name="circular"
+ value="11"
+ c:identifier="GES_VIDEO_TEST_PATTERN_CIRCULAR"
+ glib:nick="circular">
+ <doc xml:space="preserve">Circular pattern</doc>
+ </member>
+ <member name="blink"
+ value="12"
+ c:identifier="GES_VIDEO_TEST_PATTERN_BLINK"
+ glib:nick="blink">
+ <doc xml:space="preserve">Alternate between black and white</doc>
+ </member>
+ <member name="smpte75"
+ value="13"
+ c:identifier="GES_VIDEO_TEST_PATTERN_SMPTE75"
+ glib:nick="smpte75">
+ <doc xml:space="preserve">SMPTE test pattern (75% color bars)</doc>
+ </member>
+ <member name="zone_plate"
+ value="14"
+ c:identifier="GES_VIDEO_TEST_ZONE_PLATE"
+ glib:nick="zone-plate">
+ <doc xml:space="preserve">Zone plate</doc>
+ </member>
+ <member name="gamut"
+ value="15"
+ c:identifier="GES_VIDEO_TEST_GAMUT"
+ glib:nick="gamut">
+ <doc xml:space="preserve">Gamut checkers</doc>
+ </member>
+ <member name="chroma_zone_plate"
+ value="16"
+ c:identifier="GES_VIDEO_TEST_CHROMA_ZONE_PLATE"
+ glib:nick="chroma-zone-plate">
+ <doc xml:space="preserve">Chroma zone plate</doc>
+ </member>
+ <member name="solid_color"
+ value="17"
+ c:identifier="GES_VIDEO_TEST_PATTERN_SOLID"
+ glib:nick="solid-color">
+ <doc xml:space="preserve">Solid color</doc>
+ </member>
+ </enumeration>
+ <class name="VideoTestSource"
+ c:symbol-prefix="video_test_source"
+ c:type="GESVideoTestSource"
+ parent="VideoSource"
+ glib:type-name="GESVideoTestSource"
+ glib:get-type="ges_video_test_source_get_type"
+ glib:type-struct="VideoTestSourceClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <method name="get_pattern"
+ c:identifier="ges_video_test_source_get_pattern">
+ <doc xml:space="preserve">Get the video pattern used by the @source.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The video pattern used by the @source.</doc>
+ <type name="VideoTestPattern" c:type="GESVideoTestPattern"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoTestPattern</doc>
+ <type name="VideoTestSource" c:type="GESVideoTestSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_pattern"
+ c:identifier="ges_video_test_source_set_pattern">
+ <doc xml:space="preserve">Sets the source to use the given @pattern.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoTestSource</doc>
+ <type name="VideoTestSource" c:type="GESVideoTestSource*"/>
+ </instance-parameter>
+ <parameter name="pattern" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoTestPattern</doc>
+ <type name="VideoTestPattern" c:type="GESVideoTestPattern"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent" readable="0" private="1">
+ <type name="VideoSource" c:type="GESVideoSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoTestSourcePrivate"
+ c:type="GESVideoTestSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoTestSourceClass"
+ c:type="GESVideoTestSourceClass"
+ glib:is-gtype-struct-for="VideoTestSource">
+ <field name="parent_class">
+ <type name="VideoSourceClass" c:type="GESVideoSourceClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoTestSourcePrivate"
+ c:type="GESVideoTestSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="VideoTrack"
+ c:symbol-prefix="video_track"
+ c:type="GESVideoTrack"
+ parent="Track"
+ glib:type-name="GESVideoTrack"
+ glib:get-type="ges_video_track_get_type"
+ glib:type-struct="VideoTrackClass">
+ <implements name="MetaContainer"/>
+ <implements name="Gst.ChildProxy"/>
+ <constructor name="new" c:identifier="ges_video_track_new">
+ <doc xml:space="preserve">Creates a new #GESVideoTrack of type #GES_TRACK_TYPE_VIDEO and with generic
+raw video caps ("video/x-raw");</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new #GESTrack.</doc>
+ <type name="VideoTrack" c:type="GESVideoTrack*"/>
+ </return-value>
+ </constructor>
+ <field name="parent_instance">
+ <type name="Track" c:type="GESTrack"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoTrackPrivate" c:type="GESVideoTrackPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoTrackClass"
+ c:type="GESVideoTrackClass"
+ glib:is-gtype-struct-for="VideoTrack">
+ <field name="parent_class">
+ <type name="TrackClass" c:type="GESTrackClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoTrackPrivate"
+ c:type="GESVideoTrackPrivate"
+ disguised="1">
+ </record>
+ <class name="VideoTransition"
+ c:symbol-prefix="video_transition"
+ c:type="GESVideoTransition"
+ parent="Transition"
+ glib:type-name="GESVideoTransition"
+ glib:get-type="ges_video_transition_get_type"
+ glib:type-struct="VideoTransitionClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <constructor name="new" c:identifier="ges_video_transition_new">
+ <doc xml:space="preserve">Creates a new #GESVideoTransition.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The newly created
+#GESVideoTransition, or %NULL if there was an error.</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </return-value>
+ </constructor>
+ <method name="get_border" c:identifier="ges_video_transition_get_border">
+ <doc xml:space="preserve">Get the border property of @self, this value represents
+the border width of the transition.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The border values of @self or -1 if not meaningful
+(this will happen when not using a smpte transition).</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESVideoTransition to get the border from</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_transition_type"
+ c:identifier="ges_video_transition_get_transition_type">
+ <doc xml:space="preserve">Get the transition type used by @trans.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The transition type used by @trans.</doc>
+ <type name="VideoStandardTransitionType"
+ c:type="GESVideoStandardTransitionType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoTransition</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_inverted"
+ c:identifier="ges_video_transition_is_inverted">
+ <doc xml:space="preserve">Get the invert property of @self, this value represents
+the direction of the transition.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The invert value of @self</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESVideoTransition to get the inversion from</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_border" c:identifier="ges_video_transition_set_border">
+ <doc xml:space="preserve">Set the border property of @self, this value represents
+the border width of the transition. In case this value does
+not make sense for the current transition type, it is cached
+for later use.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESVideoTransition to set the border to</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the border to set on @object</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_inverted"
+ c:identifier="ges_video_transition_set_inverted">
+ <doc xml:space="preserve">Set the invert property of @self, this value represents
+the direction of the transition. In case this value does
+not make sense for the current transition type, it is cached
+for later use.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GESVideoTransition to set invert on</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ <parameter name="inverted" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the transition should be inverted %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_transition_type"
+ c:identifier="ges_video_transition_set_transition_type">
+ <doc xml:space="preserve">Sets the transition being used to @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the transition type was properly changed, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoTransition</doc>
+ <type name="VideoTransition" c:type="GESVideoTransition*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GESVideoStandardTransitionType</doc>
+ <type name="VideoStandardTransitionType"
+ c:type="GESVideoStandardTransitionType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="border" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">This value represents the border width of the transition.</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="invert" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">This value represents the direction of the transition.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="transition-type" writable="1" transfer-ownership="none">
+ <type name="VideoStandardTransitionType"/>
+ </property>
+ <field name="parent">
+ <type name="Transition" c:type="GESTransition"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoTransitionPrivate"
+ c:type="GESVideoTransitionPrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoTransitionClass"
+ c:type="GESVideoTransitionClass"
+ glib:is-gtype-struct-for="VideoTransition">
+ <field name="parent_class">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="TransitionClass" c:type="GESTransitionClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoTransitionPrivate"
+ c:type="GESVideoTransitionPrivate"
+ disguised="1">
+ </record>
+ <class name="VideoUriSource"
+ c:symbol-prefix="video_uri_source"
+ c:type="GESVideoUriSource"
+ parent="VideoSource"
+ glib:type-name="GESVideoUriSource"
+ glib:get-type="ges_video_uri_source_get_type"
+ glib:type-struct="VideoUriSourceClass">
+ <implements name="Extractable"/>
+ <implements name="MetaContainer"/>
+ <property name="uri"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The location of the file/resource to use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent" readable="0" private="1">
+ <type name="VideoSource" c:type="GESVideoSource"/>
+ </field>
+ <field name="uri" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoUriSourcePrivate" c:type="GESVideoUriSourcePrivate*"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoUriSourceClass"
+ c:type="GESVideoUriSourceClass"
+ glib:is-gtype-struct-for="VideoUriSource">
+ <field name="parent_class" readable="0" private="1">
+ <type name="VideoSourceClass" c:type="GESVideoSourceClass"/>
+ </field>
+ <field name="_ges_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoUriSourcePrivate"
+ c:type="GESVideoUriSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="XmlFormatter"
+ c:symbol-prefix="xml_formatter"
+ c:type="GESXmlFormatter"
+ parent="BaseXmlFormatter"
+ glib:type-name="GESXmlFormatter"
+ glib:get-type="ges_xml_formatter_get_type"
+ glib:type-struct="XmlFormatterClass">
+ <implements name="Extractable"/>
+ <field name="parent">
+ <type name="BaseXmlFormatter" c:type="GESBaseXmlFormatter"/>
+ </field>
+ <field name="priv">
+ <type name="XmlFormatterPrivate" c:type="GESXmlFormatterPrivate*"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="XmlFormatterClass"
+ c:type="GESXmlFormatterClass"
+ glib:is-gtype-struct-for="XmlFormatter">
+ <field name="parent">
+ <type name="BaseXmlFormatterClass" c:type="GESBaseXmlFormatterClass"/>
+ </field>
+ <field name="_ges_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="XmlFormatterPrivate"
+ c:type="GESXmlFormatterPrivate"
+ disguised="1">
+ </record>
+ <function name="add_missing_uri_relocation_uri"
+ c:identifier="ges_add_missing_uri_relocation_uri">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="recurse" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="deinit" c:identifier="ges_deinit">
+ <doc xml:space="preserve">Clean up any resources created by GES in ges_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 GES (including this method) should not be used anymore.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="init" c:identifier="ges_init">
+ <doc xml:space="preserve">Initialize the GStreamer Editing Service. Call this before any usage of
+GES. You should take care of initilizing GStreamer before calling this
+function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="init_check" c:identifier="ges_init_check" throws="1">
+ <doc xml:space="preserve">Initializes the GStreamer Editing Services library, setting up internal path lists,
+and loading evrything needed.
+
+This function will return %FALSE if GES could not be initialized
+for some reason.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if GES could be initialized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="argc"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argc</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="argv"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argv</doc>
+ <array length="0" zero-terminated="0" c:type="char**">
+ <type name="utf8" c:type="char*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="init_get_option_group"
+ c:identifier="ges_init_get_option_group"
+ introspectable="0">
+ <doc xml:space="preserve">Returns a #GOptionGroup with GES'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 GES with other
+libraries that use GOption (see g_option_context_add_group() ).
+
+If you use this function, you should make sure you initialise the GStreamer
+as one of the very first things in your program. That means you need to
+use gst_init_get_option_group() and add it to the option context before
+using the ges_init_get_option_group() result.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to GES's option group.</doc>
+ <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+ </return-value>
+ </function>
+ <function name="list_assets" c:identifier="ges_list_assets">
+ <doc xml:space="preserve">List all @asset filtering per filter as defined by @filter.
+It copies the asset and thus will not be updated in time.</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">The list of
+#GESAsset the object contains</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Asset"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <doc xml:space="preserve">Type of assets to list, #GES_TYPE_EXTRACTABLE will list
+all assets</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="play_sink_convert_frame"
+ c:identifier="ges_play_sink_convert_frame">
+ <doc xml:space="preserve">Get the last buffer @playsink showed</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GstSample containing the last frame from
+@playsink in the format defined by the @caps</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="playsink" transfer-ownership="none">
+ <doc xml:space="preserve">The playsink to get last frame from</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">The caps defining the format the return value will have</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pspec_equal" c:identifier="ges_pspec_equal">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="key_spec_1"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ <parameter name="key_spec_2"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pspec_hash" c:identifier="ges_pspec_hash">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="key_spec"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="track_type_name"
+ c:identifier="ges_track_type_name"
+ moved-to="TrackType.name">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <type name="TrackType" c:type="GESTrackType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="validate_register_action_types"
+ c:identifier="ges_validate_register_action_types">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="version" c:identifier="ges_version">
+ <doc xml:space="preserve">Gets the version number of the GStreamer Editing Services library.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="major"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the major version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="minor"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the minor version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="micro"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the micro version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="nano"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the nano version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/Gst-1.0.gir b/girs/Gst-1.0.gir
new file mode 100644
index 0000000000..f46ee1bd0a
--- /dev/null
+++ b/girs/Gst-1.0.gir
@@ -0,0 +1,49338 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GLib" version="2.0"/>
+ <include name="GModule" version="2.0"/>
+ <include name="GObject" version="2.0"/>
+ <package name="gstreamer-1.0"/>
+ <c:include name="gst/gst.h"/>
+ <namespace name="Gst"
+ version="1.0"
+ shared-library="libgstreamer-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <alias name="ClockID" c:type="GstClockID">
+ <doc xml:space="preserve">A datatype to hold the handle to an outstanding sync or async clock callback.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </alias>
+ <alias name="ClockTime" c:type="GstClockTime">
+ <doc xml:space="preserve">A datatype to hold a time, measured in nanoseconds.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </alias>
+ <alias name="ClockTimeDiff" c:type="GstClockTimeDiff">
+ <doc xml:space="preserve">A datatype to hold a time difference, measured in nanoseconds.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </alias>
+ <alias name="ElementFactoryListType" c:type="GstElementFactoryListType">
+ <type name="guint64" c:type="guint64"/>
+ </alias>
+ <constant name="ALLOCATOR_SYSMEM"
+ value="SystemMemory"
+ c:type="GST_ALLOCATOR_SYSMEM">
+ <doc xml:space="preserve">The allocator name for the default system memory allocator</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <record name="AllocationParams"
+ c:type="GstAllocationParams"
+ glib:type-name="GstAllocationParams"
+ glib:get-type="gst_allocation_params_get_type"
+ c:symbol-prefix="allocation_params">
+ <doc xml:space="preserve">Parameters to control the allocation of memory</doc>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">flags to control allocation</doc>
+ <type name="MemoryFlags" c:type="GstMemoryFlags"/>
+ </field>
+ <field name="align" writable="1">
+ <doc xml:space="preserve">the desired alignment of the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="prefix" writable="1">
+ <doc xml:space="preserve">the desired prefix</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="padding" writable="1">
+ <doc xml:space="preserve">the desired padding</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="copy" c:identifier="gst_allocation_params_copy">
+ <doc xml:space="preserve">Create a copy of @params.
+
+Free-function: gst_allocation_params_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new ##GstAllocationParams, free with
+gst_allocation_params_free().</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocationParams</doc>
+ <type name="AllocationParams" c:type="const GstAllocationParams*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_allocation_params_free">
+ <doc xml:space="preserve">Free @params</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="params" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAllocationParams</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_allocation_params_init">
+ <doc xml:space="preserve">Initialize @params to its default values</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="params" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAllocationParams</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="Allocator"
+ c:symbol-prefix="allocator"
+ c:type="GstAllocator"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstAllocator"
+ glib:get-type="gst_allocator_get_type"
+ glib:type-struct="AllocatorClass">
+ <doc xml:space="preserve">Memory is usually created by allocators with a gst_allocator_alloc()
+method call. When %NULL is used as the allocator, the default allocator will
+be used.
+
+New allocators can be registered with gst_allocator_register().
+Allocators are identified by name and can be retrieved with
+gst_allocator_find(). gst_allocator_set_default() can be used to change the
+default allocator.
+
+New memory can be created with gst_memory_new_wrapped() that wraps the memory
+allocated elsewhere.</doc>
+ <function name="find" c:identifier="gst_allocator_find">
+ <doc xml:space="preserve">Find a previously registered allocator with @name. When @name is %NULL, the
+default allocator will be returned.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstAllocator or %NULL when
+the allocator with @name was not registered. Use gst_object_unref()
+to release the allocator after usage.</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the allocator</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="register" c:identifier="gst_allocator_register">
+ <doc xml:space="preserve">Registers the memory @allocator with @name. This function takes ownership of
+@allocator.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the allocator</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="allocator" transfer-ownership="full">
+ <doc xml:space="preserve">#GstAllocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="alloc" invoker="alloc">
+ <doc xml:space="preserve">Use @allocator to allocate a new memory block with memory that is at least
+@size big.
+
+The optional @params can specify the prefix and padding for the memory. If
+%NULL is passed, no flags, no extra prefix/padding and a default alignment is
+used.
+
+The prefix/padding will be filled with 0 if flags contains
+#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively.
+
+When @allocator is %NULL, the default allocator will be used.
+
+The alignment in @params is given as a bitmask so that @align + 1 equals
+the amount of bytes to align to. For example, to align to 8 bytes,
+use an alignment of 7.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the visible memory area</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional parameters</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="free" invoker="free">
+ <doc xml:space="preserve">Free @memory that was previously allocated with gst_allocator_alloc().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="allocator" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </instance-parameter>
+ <parameter name="memory" transfer-ownership="full">
+ <doc xml:space="preserve">the memory to free</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="alloc" c:identifier="gst_allocator_alloc">
+ <doc xml:space="preserve">Use @allocator to allocate a new memory block with memory that is at least
+@size big.
+
+The optional @params can specify the prefix and padding for the memory. If
+%NULL is passed, no flags, no extra prefix/padding and a default alignment is
+used.
+
+The prefix/padding will be filled with 0 if flags contains
+#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively.
+
+When @allocator is %NULL, the default allocator will be used.
+
+The alignment in @params is given as a bitmask so that @align + 1 equals
+the amount of bytes to align to. For example, to align to 8 bytes,
+use an alignment of 7.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the visible memory area</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional parameters</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_allocator_free">
+ <doc xml:space="preserve">Free @memory that was previously allocated with gst_allocator_alloc().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="allocator" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </instance-parameter>
+ <parameter name="memory" transfer-ownership="full">
+ <doc xml:space="preserve">the memory to free</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_default" c:identifier="gst_allocator_set_default">
+ <doc xml:space="preserve">Set the default allocator. This function takes ownership of @allocator.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="allocator" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAllocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="mem_type">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="mem_map">
+ <doc xml:space="preserve">the implementation of the GstMemoryMapFunction</doc>
+ <type name="MemoryMapFunction" c:type="GstMemoryMapFunction"/>
+ </field>
+ <field name="mem_unmap">
+ <doc xml:space="preserve">the implementation of the GstMemoryUnmapFunction</doc>
+ <type name="MemoryUnmapFunction" c:type="GstMemoryUnmapFunction"/>
+ </field>
+ <field name="mem_copy">
+ <doc xml:space="preserve">the implementation of the GstMemoryCopyFunction</doc>
+ <type name="MemoryCopyFunction" c:type="GstMemoryCopyFunction"/>
+ </field>
+ <field name="mem_share">
+ <doc xml:space="preserve">the implementation of the GstMemoryShareFunction</doc>
+ <type name="MemoryShareFunction" c:type="GstMemoryShareFunction"/>
+ </field>
+ <field name="mem_is_span">
+ <doc xml:space="preserve">the implementation of the GstMemoryIsSpanFunction</doc>
+ <type name="MemoryIsSpanFunction" c:type="GstMemoryIsSpanFunction"/>
+ </field>
+ <field name="mem_map_full">
+ <doc xml:space="preserve">the implementation of the GstMemoryMapFullFunction.
+ Will be used instead of @mem_map if present. (Since 1.6)</doc>
+ <type name="MemoryMapFullFunction" c:type="GstMemoryMapFullFunction"/>
+ </field>
+ <field name="mem_unmap_full">
+ <doc xml:space="preserve">the implementation of the GstMemoryUnmapFullFunction.
+ Will be used instead of @mem_unmap if present. (Since 1.6)</doc>
+ <type name="MemoryUnmapFullFunction"
+ c:type="GstMemoryUnmapFullFunction"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AllocatorPrivate" c:type="GstAllocatorPrivate*"/>
+ </field>
+ </class>
+ <record name="AllocatorClass"
+ c:type="GstAllocatorClass"
+ glib:is-gtype-struct-for="Allocator">
+ <doc xml:space="preserve">The #GstAllocator is used to create new memory.</doc>
+ <field name="object_class">
+ <doc xml:space="preserve">Object parent class</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="alloc">
+ <callback name="alloc">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the visible memory area</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional parameters</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="free">
+ <callback name="free">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="allocator" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAllocator to use</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="memory" transfer-ownership="full">
+ <doc xml:space="preserve">the memory to free</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="AllocatorFlags"
+ glib:type-name="GstAllocatorFlags"
+ glib:get-type="gst_allocator_flags_get_type"
+ c:type="GstAllocatorFlags">
+ <doc xml:space="preserve">Flags for allocators.</doc>
+ <member name="custom_alloc"
+ value="16"
+ c:identifier="GST_ALLOCATOR_FLAG_CUSTOM_ALLOC"
+ glib:nick="custom-alloc">
+ <doc xml:space="preserve">The allocator has a custom alloc function.</doc>
+ </member>
+ <member name="last"
+ value="1048576"
+ c:identifier="GST_ALLOCATOR_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">first flag that can be used for custom purposes</doc>
+ </member>
+ </bitfield>
+ <record name="AllocatorPrivate" c:type="GstAllocatorPrivate" disguised="1">
+ </record>
+ <record name="AtomicQueue"
+ c:type="GstAtomicQueue"
+ glib:type-name="GstAtomicQueue"
+ glib:get-type="gst_atomic_queue_get_type"
+ c:symbol-prefix="atomic_queue">
+ <doc xml:space="preserve">The #GstAtomicQueue object implements a queue that can be used from multiple
+threads without performing any blocking operations.</doc>
+ <constructor name="new" c:identifier="gst_atomic_queue_new">
+ <doc xml:space="preserve">Create a new atomic queue instance. @initial_size will be rounded up to the
+nearest power of 2 and used as the initial size of the queue.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="initial_size" transfer-ownership="none">
+ <doc xml:space="preserve">initial queue size</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="length" c:identifier="gst_atomic_queue_length">
+ <doc xml:space="preserve">Get the amount of items in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of elements in the queue.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek" c:identifier="gst_atomic_queue_peek">
+ <doc xml:space="preserve">Peek the head element of the queue without removing it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the head element of @queue or
+%NULL when the queue is empty.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop" c:identifier="gst_atomic_queue_pop">
+ <doc xml:space="preserve">Get the head element of the queue.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the head element of @queue or %NULL when
+the queue is empty.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_atomic_queue_push">
+ <doc xml:space="preserve">Append @data to the tail of the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_atomic_queue_ref">
+ <doc xml:space="preserve">Increase the refcount of @queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_atomic_queue_unref">
+ <doc xml:space="preserve">Unref @queue and free the memory when the refcount reaches 0.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAtomicQueue</doc>
+ <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <constant name="BUFFER_COPY_ALL" value="15" c:type="GST_BUFFER_COPY_ALL">
+ <doc xml:space="preserve">Combination of all possible fields that can be copied with
+gst_buffer_copy_into().</doc>
+ <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+ </constant>
+ <constant name="BUFFER_COPY_METADATA"
+ value="7"
+ c:type="GST_BUFFER_COPY_METADATA">
+ <doc xml:space="preserve">Combination of all possible metadata fields that can be copied with
+gst_buffer_copy_into().</doc>
+ <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+ </constant>
+ <constant name="BUFFER_OFFSET_NONE"
+ value="18446744073709551615"
+ c:type="GST_BUFFER_OFFSET_NONE">
+ <doc xml:space="preserve">Constant for no-offset return results.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </constant>
+ <class name="Bin"
+ c:symbol-prefix="bin"
+ c:type="GstBin"
+ parent="Element"
+ glib:type-name="GstBin"
+ glib:get-type="gst_bin_get_type"
+ glib:type-struct="BinClass">
+ <doc xml:space="preserve">#GstBin is an element that can contain other #GstElement, allowing them to be
+managed as a group.
+Pads from the child elements can be ghosted to the bin, see #GstGhostPad.
+This makes the bin look like any other elements and enables creation of
+higher-level abstraction elements.
+
+A new #GstBin is created with gst_bin_new(). Use a #GstPipeline instead if you
+want to create a toplevel bin because a normal bin doesn't have a bus or
+handle clock distribution of its own.
+
+After the bin has been created you will typically add elements to it with
+gst_bin_add(). You can remove elements with gst_bin_remove().
+
+An element can be retrieved from a bin with gst_bin_get_by_name(), using the
+elements name. gst_bin_get_by_name_recurse_up() is mainly used for internal
+purposes and will query the parent bins when the element is not found in the
+current bin.
+
+An iterator of elements in a bin can be retrieved with
+gst_bin_iterate_elements(). Various other iterators exist to retrieve the
+elements in a bin.
+
+gst_object_unref() is used to drop your reference to the bin.
+
+The #GstBin::element-added signal is fired whenever a new element is added to
+the bin. Likewise the #GstBin::element-removed signal is fired whenever an
+element is removed from the bin.
+
+## Notes
+
+A #GstBin internally intercepts every #GstMessage posted by its children and
+implements the following default behaviour for each of them:
+
+* GST_MESSAGE_EOS: This message is only posted by sinks in the PLAYING
+state. If all sinks posted the EOS message, this bin will post and EOS
+message upwards.
+
+* GST_MESSAGE_SEGMENT_START: Just collected and never forwarded upwards.
+The messages are used to decide when all elements have completed playback
+of their segment.
+
+* GST_MESSAGE_SEGMENT_DONE: Is posted by #GstBin when all elements that posted
+a SEGMENT_START have posted a SEGMENT_DONE.
+
+* GST_MESSAGE_DURATION_CHANGED: Is posted by an element that detected a change
+in the stream duration. The default bin behaviour is to clear any
+cached duration values so that the next duration query will perform
+a full duration recalculation. The duration change is posted to the
+application so that it can refetch the new duration with a duration
+query. Note that these messages can be posted before the bin is
+prerolled, in which case the duration query might fail.
+
+* GST_MESSAGE_CLOCK_LOST: This message is posted by an element when it
+can no longer provide a clock. The default bin behaviour is to
+check if the lost clock was the one provided by the bin. If so and
+the bin is currently in the PLAYING state, the message is forwarded to
+the bin parent.
+This message is also generated when a clock provider is removed from
+the bin. If this message is received by the application, it should
+PAUSE the pipeline and set it back to PLAYING to force a new clock
+distribution.
+
+* GST_MESSAGE_CLOCK_PROVIDE: This message is generated when an element
+can provide a clock. This mostly happens when a new clock
+provider is added to the bin. The default behaviour of the bin is to
+mark the currently selected clock as dirty, which will perform a clock
+recalculation the next time the bin is asked to provide a clock.
+This message is never sent tot the application but is forwarded to
+the parent of the bin.
+
+* OTHERS: posted upwards.
+
+A #GstBin implements the following default behaviour for answering to a
+#GstQuery:
+
+* GST_QUERY_DURATION:If the query has been asked before with the same format
+and the bin is a toplevel bin (ie. has no parent),
+use the cached previous value. If no previous value was cached, the
+query is sent to all sink elements in the bin and the MAXIMUM of all
+values is returned. If the bin is a toplevel bin the value is cached.
+If no sinks are available in the bin, the query fails.
+
+* GST_QUERY_POSITION:The query is sent to all sink elements in the bin and the
+MAXIMUM of all values is returned. If no sinks are available in the bin,
+the query fails.
+
+* OTHERS:the query is forwarded to all sink elements, the result
+of the first sink that answers the query successfully is returned. If no
+sink is in the bin, the query fails.
+
+A #GstBin will by default forward any event sent to it to all sink
+(#GST_EVENT_TYPE_DOWNSTREAM) or source (#GST_EVENT_TYPE_UPSTREAM) elements
+depending on the event type.
+If all the elements return %TRUE, the bin will also return %TRUE, else %FALSE
+is returned. If no elements of the required type are in the bin, the event
+handler will return %TRUE.</doc>
+ <implements name="ChildProxy"/>
+ <constructor name="new" c:identifier="gst_bin_new">
+ <doc xml:space="preserve">Creates a new bin with the given name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a new #GstBin</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new bin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="add_element">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="deep_element_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="sub_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>
+ </virtual-method>
+ <virtual-method name="deep_element_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="sub_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>
+ </virtual-method>
+ <virtual-method name="do_latency">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="element_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="element_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="child" 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>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="remove_element">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add" c:identifier="gst_bin_add">
+ <doc xml:space="preserve">Adds the given element to the bin. Sets the element's parent, and thus
+takes ownership of the element. An element can only be added to one bin.
+
+If the element's pads are linked to other pads, the pads will be unlinked
+before the element is added to the bin.
+
+&gt; When you add an element to an already-running pipeline, you will have to
+&gt; take care to set the state of the newly-added element to the desired
+&gt; state (usually PLAYING or PAUSED, same you set the pipeline to originally)
+&gt; with gst_element_set_state(), or use gst_element_sync_state_with_parent().
+&gt; The bin or pipeline will not take care of this for you.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element could be added, %FALSE if
+the bin does not want to accept the element.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement to add</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_many"
+ c:identifier="gst_bin_add_many"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element_1" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement element to add to the bin</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional elements to add to the bin</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_unlinked_pad"
+ c:identifier="gst_bin_find_unlinked_pad">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">unlinked pad of the given
+direction, %NULL.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">bin in which to look for elements with unlinked pads</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <doc xml:space="preserve">whether to look for an unlinked source or sink pad</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_by_interface" c:identifier="gst_bin_get_by_interface">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A #GstElement inside the bin
+implementing the interface</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="iface" transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of an interface</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_by_name" c:identifier="gst_bin_get_by_name">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstElement with the given
+name, or %NULL</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the element name to search for</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_by_name_recurse_up"
+ c:identifier="gst_bin_get_by_name_recurse_up">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstElement with the given
+name, or %NULL</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the element name to search for</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_suppressed_flags"
+ c:identifier="gst_bin_get_suppressed_flags"
+ version="1.10">
+ <doc xml:space="preserve">Return the suppressed flags of the bin.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the bin's suppressed #GstElementFlags.</doc>
+ <type name="ElementFlags" c:type="GstElementFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_all_by_interface"
+ c:identifier="gst_bin_iterate_all_by_interface">
+ <doc xml:space="preserve">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.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement
+ for all elements in the bin implementing the given interface,
+ or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="iface" transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of an interface</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="iterate_elements" c:identifier="gst_bin_iterate_elements">
+ <doc xml:space="preserve">Gets an iterator for the elements in this bin.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement,
+or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_recurse" c:identifier="gst_bin_iterate_recurse">
+ <doc xml:space="preserve">Gets an iterator for the elements in this bin.
+This iterator recurses into GstBin children.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement,
+or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_sinks" c:identifier="gst_bin_iterate_sinks">
+ <doc xml:space="preserve">Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_FLAG_SINK flag set.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement,
+or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_sorted" c:identifier="gst_bin_iterate_sorted">
+ <doc xml:space="preserve">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.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement,
+or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_sources" c:identifier="gst_bin_iterate_sources">
+ <doc xml:space="preserve">Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_FLAG_SOURCE flag set.
+
+MT safe. Caller owns returned value.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstElement,
+or %NULL</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="recalculate_latency"
+ c:identifier="gst_bin_recalculate_latency">
+ <doc xml:space="preserve">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 'do-latency' signal so any custom latency
+calculations will be performed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the latency could be queried and reconfigured.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove" c:identifier="gst_bin_remove">
+ <doc xml:space="preserve">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's pads are linked to other pads, the pads will be unlinked
+before the element is removed from the bin.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element could be removed, %FALSE if
+the bin does not want to remove the element.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement to remove</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_many"
+ c:identifier="gst_bin_remove_many"
+ introspectable="0">
+ <doc xml:space="preserve">Remove a list of elements from a bin. This function is equivalent
+to calling gst_bin_remove() with each member of the list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="element_1" transfer-ownership="none">
+ <doc xml:space="preserve">the first #GstElement to remove from the bin</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">%NULL-terminated list of elements to remove from the bin</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_suppressed_flags"
+ c:identifier="gst_bin_set_suppressed_flags"
+ version="1.10">
+ <doc xml:space="preserve">Suppress the given flags on the bin. #GstElementFlags of a
+child element are propagated when it is added to the bin.
+When suppressed flags are set, those specified flags will
+not be propagated to the bin.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElementFlags to suppress</doc>
+ <type name="ElementFlags" c:type="GstElementFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sync_children_states"
+ c:identifier="gst_bin_sync_children_states"
+ version="1.6">
+ <doc xml:space="preserve">Synchronizes the state of every child of @bin with the state
+of @bin. See also gst_element_sync_state_with_parent().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if syncing the state was successful for all children,
+ otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBin</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="async-handling" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">If set to %TRUE, the bin will handle asynchronous state changes.
+This should be used only if the bin subclass is modifying the state
+of its children on its own.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="message-forward" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Forward all children messages, even those that would normally be filtered by
+the bin. This can be interesting when one wants to be notified of the EOS
+state of individual elements, for example.
+
+The messages are converted to an ELEMENT message with the bin as the
+source. The structure of the message is named 'GstBinForwarded' and contains
+a field named 'message' of type GST_TYPE_MESSAGE that contains the original
+forwarded message.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element">
+ <type name="Element" c:type="GstElement"/>
+ </field>
+ <field name="numchildren">
+ <doc xml:space="preserve">the number of children in this bin</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="children">
+ <doc xml:space="preserve">the list of children in this bin</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Element"/>
+ </type>
+ </field>
+ <field name="children_cookie">
+ <doc xml:space="preserve">updated whenever @children changes</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="child_bus">
+ <doc xml:space="preserve">internal bus for handling child messages</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </field>
+ <field name="messages">
+ <doc xml:space="preserve">queued and cached messages</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Message"/>
+ </type>
+ </field>
+ <field name="polling">
+ <doc xml:space="preserve">the bin is currently calculating its state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="state_dirty">
+ <doc xml:space="preserve">the bin needs to recalculate its state (deprecated)</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="clock_dirty">
+ <doc xml:space="preserve">the bin needs to select a new clock</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="provided_clock">
+ <doc xml:space="preserve">the last clock selected</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </field>
+ <field name="clock_provider">
+ <doc xml:space="preserve">the element that provided @provided_clock</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BinPrivate" c:type="GstBinPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="deep-element-added" when="first" version="1.10">
+ <doc xml:space="preserve">Will be emitted after the element was added to sub_bin.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sub_bin" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBin the element was added to</doc>
+ <type name="Bin"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement that was added to @sub_bin</doc>
+ <type name="Element"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="deep-element-removed" when="first" version="1.10">
+ <doc xml:space="preserve">Will be emitted after the element was removed from sub_bin.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sub_bin" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBin the element was removed from</doc>
+ <type name="Bin"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement that was removed from @sub_bin</doc>
+ <type name="Element"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="do-latency" when="last">
+ <doc xml:space="preserve">Will be emitted when the bin needs to perform latency calculations. This
+signal is only emitted 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="element-added" when="first">
+ <doc xml:space="preserve">Will be emitted after the element was added to the bin.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement that was added to the bin</doc>
+ <type name="Element"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="element-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after the element was removed from the bin.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement that was removed from the bin</doc>
+ <type name="Element"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="BinClass"
+ c:type="GstBinClass"
+ glib:is-gtype-struct-for="Bin">
+ <doc xml:space="preserve">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.
+
+The @deep_element_added vfunc will be called when a new element has been
+added to any bin inside this bin, so it will also be called if a new child
+was added to a sub-bin of this bin. #GstBin implementations that override
+this message should chain up to the parent class implementation so the
+element-added-deep signal is emitted on all parents.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">bin parent class</doc>
+ <type name="ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="pool" readable="0" private="1">
+ <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+ </field>
+ <field name="element_added">
+ <callback name="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">
+ <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">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" 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">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" 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">
+ <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">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin" transfer-ownership="none">
+ <type name="Bin" c:type="GstBin*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="deep_element_added">
+ <callback name="deep_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="sub_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="deep_element_removed">
+ <callback name="deep_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="sub_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="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="BinFlags"
+ glib:type-name="GstBinFlags"
+ glib:get-type="gst_bin_flags_get_type"
+ c:type="GstBinFlags">
+ <doc xml:space="preserve">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 ().</doc>
+ <member name="no_resync"
+ value="16384"
+ c:identifier="GST_BIN_FLAG_NO_RESYNC"
+ glib:nick="no-resync">
+ <doc xml:space="preserve">don't resync a state change when elements are
+ added or linked in the bin (Since 1.0.5)</doc>
+ </member>
+ <member name="streams_aware"
+ value="32768"
+ c:identifier="GST_BIN_FLAG_STREAMS_AWARE"
+ glib:nick="streams-aware">
+ <doc xml:space="preserve">Indicates whether the bin can handle elements
+ that add/remove source pads at any point in time without
+ first posting a no-more-pads signal (Since 1.10)</doc>
+ </member>
+ <member name="last"
+ value="524288"
+ c:identifier="GST_BIN_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">the last enum in the series of flags for bins.
+Derived classes can use this as first value in a list of flags.</doc>
+ </member>
+ </bitfield>
+ <record name="BinPrivate" c:type="GstBinPrivate" disguised="1">
+ </record>
+ <class name="Bitmask"
+ c:symbol-prefix="bitmask"
+ glib:type-name="GstBitmask"
+ glib:get-type="gst_bitmask_get_type"
+ glib:fundamental="1">
+ </class>
+ <record name="Buffer"
+ c:type="GstBuffer"
+ glib:type-name="GstBuffer"
+ glib:get-type="gst_buffer_get_type"
+ c:symbol-prefix="buffer">
+ <doc xml:space="preserve">Buffers are the basic unit of data transfer in GStreamer. They contain the
+timing and offset along with other arbitrary metadata that is associated
+with the #GstMemory blocks that the buffer contains.
+
+Buffers are usually created with gst_buffer_new(). After a buffer has been
+created one will typically allocate memory for it and add it to the buffer.
+The following example creates a buffer that can hold a given video frame
+with a given width, height and bits per plane.
+|[&lt;!-- language="C" --&gt;
+ GstBuffer *buffer;
+ GstMemory *memory;
+ gint size, width, height, bpp;
+ ...
+ size = width * height * bpp;
+ buffer = gst_buffer_new ();
+ memory = gst_allocator_alloc (NULL, size, NULL);
+ gst_buffer_insert_memory (buffer, -1, memory);
+ ...
+]|
+
+Alternatively, use gst_buffer_new_allocate() to create a buffer with
+preallocated data of a given size.
+
+Buffers can contain a list of #GstMemory objects. You can retrieve how many
+memory objects with gst_buffer_n_memory() and you can get a pointer
+to memory with gst_buffer_peek_memory()
+
+A buffer will usually have timestamps, and a duration, but neither of these
+are guaranteed (they may be set to #GST_CLOCK_TIME_NONE). Whenever a
+meaningful value can be given for these, they should be set. The timestamps
+and duration are measured in nanoseconds (they are #GstClockTime values).
+
+The buffer DTS refers to the timestamp when the buffer should be decoded and
+is usually monotonically increasing. The buffer PTS refers to the timestamp when
+the buffer content should be presented to the user and is not always
+monotonically increasing.
+
+A buffer can also have one or both of a start and an end offset. These are
+media-type specific. For video buffers, the start offset will generally be
+the frame number. For audio buffers, it will be the number of samples
+produced so far. For compressed data, it could be the byte offset in a
+source or destination file. Likewise, the end offset will be the offset of
+the end of the buffer. These can only be meaningfully interpreted if you
+know the media type of the buffer (the preceding CAPS event). Either or both
+can be set to #GST_BUFFER_OFFSET_NONE.
+
+gst_buffer_ref() is used to increase the refcount of a buffer. This must be
+done when you want to keep a handle to the buffer after pushing it to the
+next element. The buffer refcount determines the writability of the buffer, a
+buffer is only writable when the refcount is exactly 1, i.e. when the caller
+has the only reference to the buffer.
+
+To efficiently create a smaller buffer out of an existing one, you can
+use gst_buffer_copy_region(). This method tries to share the memory objects
+between the two buffers.
+
+If a plug-in wants to modify the buffer data or metadata in-place, it should
+first obtain a buffer that is safe to modify by using
+gst_buffer_make_writable(). This function is optimized so that a copy will
+only be made when it is necessary.
+
+Several flags of the buffer can be set and unset with the
+GST_BUFFER_FLAG_SET() and GST_BUFFER_FLAG_UNSET() macros. Use
+GST_BUFFER_FLAG_IS_SET() to test if a certain #GstBufferFlags flag is set.
+
+Buffers can be efficiently merged into a larger buffer with
+gst_buffer_append(). Copying of memory will only be done when absolutely
+needed.
+
+Arbitrary extra metadata can be set on a buffer with gst_buffer_add_meta().
+Metadata can be retrieved with gst_buffer_get_meta(). See also #GstMeta
+
+An element should either unref the buffer or push it out on a src pad
+using gst_pad_push() (see #GstPad).
+
+Buffers are usually freed by unreffing them with gst_buffer_unref(). When
+the refcount drops to 0, any memory and metadata pointed to by the buffer is
+unreffed as well. Buffers allocated from a #GstBufferPool will be returned to
+the pool when the refcount drops to 0.
+
+The #GstParentBufferMeta is a meta which can be attached to a #GstBuffer
+to hold a reference to another buffer that is only released when the child
+#GstBuffer is released.
+
+Typically, #GstParentBufferMeta is used when the child buffer is directly
+using the #GstMemory of the parent buffer, and wants to prevent the parent
+buffer from being returned to a buffer pool until the #GstMemory is available
+for re-use. (Since 1.6)</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">the parent structure</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="pool" writable="1">
+ <doc xml:space="preserve">pointer to the pool owner of the buffer</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </field>
+ <field name="pts" writable="1">
+ <doc xml:space="preserve">presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the
+ pts is not known or relevant. The pts contains the timestamp when the
+ media should be presented to the user.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="dts" writable="1">
+ <doc xml:space="preserve">decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the
+ dts is not known or relevant. The dts contains the timestamp when the
+ media should be processed.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="duration" writable="1">
+ <doc xml:space="preserve">duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE
+ when the duration is not known or relevant.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">a media specific offset for the buffer data.
+ 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.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="offset_end" writable="1">
+ <doc xml:space="preserve">the last offset contained in this buffer. It has the same
+ format as @offset.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <constructor name="new" c:identifier="gst_buffer_new">
+ <doc xml:space="preserve">Creates a newly allocated buffer without any data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_allocate" c:identifier="gst_buffer_new_allocate">
+ <doc xml:space="preserve">Tries to create a newly allocated buffer with data of the given size and
+extra parameters from @allocator. If the requested amount of memory can't be
+allocated, %NULL will be returned. The allocated buffer memory is not cleared.
+
+When @allocator is %NULL, the default memory allocator will be used.
+
+Note that when @size == 0, the buffer will not have memory associated with it.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstBuffer, or %NULL if
+ the memory couldn't be allocated.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator to use, or %NULL to use the
+ default allocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size in bytes of the new buffer's data.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">optional parameters</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_wrapped" c:identifier="gst_buffer_new_wrapped">
+ <doc xml:space="preserve">Creates a new buffer that wraps the given @data. The memory will be freed
+with g_free and will be marked writable.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="full">
+ <doc xml:space="preserve">data to wrap</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">allocated size of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_wrapped_full"
+ c:identifier="gst_buffer_new_wrapped_full">
+ <doc xml:space="preserve">Allocate a new buffer that wraps the given memory. @data must point to
+@maxsize of memory, the wrapped buffer will have the region from @offset and
+@size visible.
+
+When the buffer is destroyed, @notify will be called with @user_data.
+
+The prefix/padding must be filled with 0 if @flags contains
+#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMemoryFlags</doc>
+ <type name="MemoryFlags" c:type="GstMemoryFlags"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data to wrap</doc>
+ <array length="4" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">allocated size of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset in @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of valid data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="async"
+ closure="5">
+ <doc xml:space="preserve">called with @user_data when the memory is freed</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_meta" c:identifier="gst_buffer_add_meta">
+ <doc xml:space="preserve">Add metadata for @info to @buffer using the parameters in @params.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the metadata for the api in @info on @buffer.</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">params for @info</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_parent_buffer_meta"
+ c:identifier="gst_buffer_add_parent_buffer_meta"
+ version="1.6">
+ <doc xml:space="preserve">Add a #GstParentBufferMeta to @buffer that holds a reference on
+@ref until the buffer is freed.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstParentBufferMeta that was added to the buffer</doc>
+ <type name="ParentBufferMeta" c:type="GstParentBufferMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="ref" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer to ref</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_protection_meta"
+ c:identifier="gst_buffer_add_protection_meta"
+ version="1.6">
+ <doc xml:space="preserve">Attaches protection metadata to a #GstBuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the added #GstProtectionMeta if successful; %NULL if
+unsuccessful.</doc>
+ <type name="ProtectionMeta" c:type="GstProtectionMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBuffer holding an encrypted sample, to which protection
+ metadata should be added.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure holding cryptographic
+ information relating to the sample contained in @buffer. This
+ function takes ownership of @info.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_reference_timestamp_meta"
+ c:identifier="gst_buffer_add_reference_timestamp_meta"
+ version="1.14">
+ <doc xml:space="preserve">Add a #GstReferenceTimestampMeta to @buffer that holds a @timestamp and
+optionally @duration based on a specific timestamp @reference. See the
+documentation of #GstReferenceTimestampMeta for details.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstReferenceTimestampMeta that was added to the buffer</doc>
+ <type name="ReferenceTimestampMeta"
+ c:type="GstReferenceTimestampMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="reference" transfer-ownership="none">
+ <doc xml:space="preserve">identifier for the timestamp reference.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">timestamp</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">duration, or %GST_CLOCK_TIME_NONE</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append" c:identifier="gst_buffer_append">
+ <doc xml:space="preserve">Append all the memory from @buf2 to @buf1. The result buffer will contain a
+concatenation of the memory of @buf1 and @buf2.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBuffer that contains the memory
+ of the two source buffers.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf1" transfer-ownership="full">
+ <doc xml:space="preserve">the first source #GstBuffer to append.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="buf2" transfer-ownership="full">
+ <doc xml:space="preserve">the second source #GstBuffer to append.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_memory" c:identifier="gst_buffer_append_memory">
+ <doc xml:space="preserve">Append the memory block @mem to @buffer. This function takes
+ownership of @mem and thus doesn't increase its refcount.
+
+This function is identical to gst_buffer_insert_memory() with an index of -1.
+See gst_buffer_insert_memory() for more details.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_region" c:identifier="gst_buffer_append_region">
+ <doc xml:space="preserve">Append @size bytes at @offset from @buf2 to @buf1. The result buffer will
+contain a concatenation of the memory of @buf1 and the requested region of
+@buf2.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBuffer that contains the memory
+ of the two source buffers.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf1" transfer-ownership="full">
+ <doc xml:space="preserve">the first source #GstBuffer to append.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="buf2" transfer-ownership="full">
+ <doc xml:space="preserve">the second source #GstBuffer to append.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in @buf2</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size or -1 of @buf2</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_deep"
+ c:identifier="gst_buffer_copy_deep"
+ version="1.6">
+ <doc xml:space="preserve">Create a copy of the given buffer. This will make a newly allocated
+copy of the data the source buffer contains.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new copy of @buf.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="const GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy_into" c:identifier="gst_buffer_copy_into">
+ <doc xml:space="preserve">Copies the information from @src into @dest.
+
+If @dest already contains memory and @flags contains GST_BUFFER_COPY_MEMORY,
+the memory from @src will be appended to @dest.
+
+@flags indicate which fields will be copied.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the copying succeeded, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a destination #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a source #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags indicating what metadata fields should be copied.</doc>
+ <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset to copy from</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">total size to copy. If -1, all data is copied.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_region" c:identifier="gst_buffer_copy_region">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBuffer or %NULL if the arguments were
+ invalid.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBufferCopyFlags</doc>
+ <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset into parent #GstBuffer at which the new sub-buffer
+ begins.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the new #GstBuffer sub-buffer, in bytes. If -1, all
+ data is copied.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="extract" c:identifier="gst_buffer_extract">
+ <doc xml:space="preserve">Copy @size bytes starting from @offset in @buffer to @dest.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The amount of bytes extracted. This value can be lower than @size
+ when @buffer did not contain enough data.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset to extract</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">
+ the destination address</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the size to extract</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="extract_dup"
+ c:identifier="gst_buffer_extract_dup"
+ version="1.0.10">
+ <doc xml:space="preserve">Extracts a copy of at most @size bytes the data at @offset into
+newly-allocated memory. @dest must be freed using g_free() when done.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset to extract</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size to extract</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer where
+ the destination array will be written. Might be %NULL if the size is 0.</doc>
+ <array length="3" zero-terminated="0" c:type="gpointer*">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="dest_size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A location where the size of @dest can be written</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fill" c:identifier="gst_buffer_fill">
+ <doc xml:space="preserve">Copy @size bytes from @src to @buffer at @offset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The amount of bytes copied. This value can be lower than @size
+ when @buffer did not contain enough data.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset to fill</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source address</doc>
+ <array length="2" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size to fill</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_memory" c:identifier="gst_buffer_find_memory">
+ <doc xml:space="preserve">Find the memory blocks that span @size bytes starting from @offset
+in @buffer.
+
+When this function returns %TRUE, @idx will contain the index of the first
+memory block where the byte for @offset can be found and @length contains the
+number of memory blocks containing the @size remaining bytes. @skip contains
+the number of bytes to skip in the memory block at @idx to get to the byte
+for @offset.
+
+@size can be -1 to get all the memory blocks after @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @size bytes starting from @offset could be found in
+@buffer and @idx, @length and @skip will be filled.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">an offset</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">a size</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="idx"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to index</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="length"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to length</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="skip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to skip</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach_meta" c:identifier="gst_buffer_foreach_meta">
+ <doc xml:space="preserve">Call @func with @user_data for each meta in @buffer.
+
+@func can modify the passed meta pointer or its contents. The return value
+of @func define if this function returns or if the remaining metadata items
+in the buffer should be skipped.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE when @func returned %FALSE for one of the metadata.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a #GstBufferForeachMetaFunc to call</doc>
+ <type name="BufferForeachMetaFunc"
+ c:type="GstBufferForeachMetaFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_all_memory" c:identifier="gst_buffer_get_all_memory">
+ <doc xml:space="preserve">Get all the memory block in @buffer. The memory blocks will be merged
+into one large #GstMemory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstMemory that contains the merged memory.
+Use gst_memory_unref () after usage.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_flags"
+ c:identifier="gst_buffer_get_flags"
+ version="1.10">
+ <doc xml:space="preserve">Get the #GstBufferFlags flags set on this buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the flags set on this buffer.</doc>
+ <type name="BufferFlags" c:type="GstBufferFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_memory" c:identifier="gst_buffer_get_memory">
+ <doc xml:space="preserve">Get the memory block at index @idx in @buffer.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstMemory that contains the data of the
+memory block at @idx. Use gst_memory_unref () after usage.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_memory_range"
+ c:identifier="gst_buffer_get_memory_range">
+ <doc xml:space="preserve">Get @length memory blocks in @buffer starting at @idx. The memory blocks will
+be merged into one large #GstMemory.
+
+If @length is -1, all memory starting from @idx is merged.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstMemory that contains the merged data of @length
+ blocks starting at @idx. Use gst_memory_unref () after usage.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_meta" c:identifier="gst_buffer_get_meta">
+ <doc xml:space="preserve">Get the metadata for @api on buffer. When there is no such metadata, %NULL is
+returned. If multiple metadata with the given @api are attached to this
+buffer only the first one is returned. To handle multiple metadata with a
+given API use gst_buffer_iterate_meta() or gst_buffer_foreach_meta() instead
+and check the meta-&gt;info.api member for the API type.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the metadata for @api on
+@buffer.</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_n_meta"
+ c:identifier="gst_buffer_get_n_meta"
+ version="1.14">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">number of metas of type @api_type on @buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="api_type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_reference_timestamp_meta"
+ c:identifier="gst_buffer_get_reference_timestamp_meta"
+ version="1.14">
+ <doc xml:space="preserve">Find the first #GstReferenceTimestampMeta on @buffer that conforms to
+@reference. Conformance is tested by checking if the meta's reference is a
+subset of @reference.
+
+Buffers can contain multiple #GstReferenceTimestampMeta metadata items.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstReferenceTimestampMeta or %NULL when there
+is no such metadata on @buffer.</doc>
+ <type name="ReferenceTimestampMeta"
+ c:type="GstReferenceTimestampMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="reference"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a reference #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_size" c:identifier="gst_buffer_get_size">
+ <doc xml:space="preserve">Get the total size of the memory blocks in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">total size of the memory blocks in @buffer.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_sizes" c:identifier="gst_buffer_get_sizes">
+ <doc xml:space="preserve">Get the total size of the memory blocks in @b.
+
+When not %NULL, @offset will contain the offset of the data in the
+first memory block in @buffer and @maxsize will contain the sum of
+the size and @offset and the amount of extra padding on the last
+memory block. @offset and @maxsize can be used to resize the
+buffer memory blocks with gst_buffer_resize().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">total size of the memory blocks in @buffer.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to the offset</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ <parameter name="maxsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to the maxsize</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sizes_range" c:identifier="gst_buffer_get_sizes_range">
+ <doc xml:space="preserve">Get the total size of @length memory blocks stating from @idx in @buffer.
+
+When not %NULL, @offset will contain the offset of the data in the
+memory block in @buffer at @idx and @maxsize will contain the sum of the size
+and @offset and the amount of extra padding on the memory block at @idx +
+@length -1.
+@offset and @maxsize can be used to resize the buffer memory blocks with
+gst_buffer_resize_range().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">total size of @length memory blocks starting at @idx in @buffer.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to the offset</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ <parameter name="maxsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to the maxsize</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_flags" c:identifier="gst_buffer_has_flags">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="BufferFlags" c:type="GstBufferFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_memory" c:identifier="gst_buffer_insert_memory">
+ <doc xml:space="preserve">Insert the memory block @mem to @buffer at @idx. This function takes ownership
+of @mem and thus doesn't increase its refcount.
+
+Only gst_buffer_get_max_memory() can be added to a buffer. If more memory is
+added, existing memory blocks will automatically be merged to make room for
+the new memory.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index to add the memory at, or -1 to append it to the end</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_all_memory_writable"
+ c:identifier="gst_buffer_is_all_memory_writable"
+ version="1.4">
+ <doc xml:space="preserve">Check if all memory blocks in @buffer are writable.
+
+Note that this function does not check if @buffer is writable, use
+gst_buffer_is_writable() to check that if needed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if all memory blocks in @buffer are writable</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_memory_range_writable"
+ c:identifier="gst_buffer_is_memory_range_writable"
+ version="1.4">
+ <doc xml:space="preserve">Check if @length memory blocks in @buffer starting from @idx are writable.
+
+@length can be -1 to check all the memory blocks after @idx.
+
+Note that this function does not check if @buffer is writable, use
+gst_buffer_is_writable() to check that if needed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the memory range is writable</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length should not be 0</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="iterate_meta"
+ c:identifier="gst_buffer_iterate_meta"
+ introspectable="0">
+ <doc xml:space="preserve">Retrieve the next #GstMeta after @current. If @state points
+to %NULL, the first metadata is returned.
+
+@state will be updated with an opaque state pointer</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The next #GstMeta or %NULL
+when there are no more items.</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">an opaque state pointer</doc>
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="iterate_meta_filtered"
+ c:identifier="gst_buffer_iterate_meta_filtered"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Retrieve the next #GstMeta of type @meta_api_type after the current one
+according to @state. If @state points to %NULL, the first metadata of
+type @meta_api_type is returned.
+
+@state will be updated with an opaque state pointer</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The next #GstMeta of type
+@meta_api_type or %NULL when there are no more items.</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">an opaque state pointer</doc>
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ <parameter name="meta_api_type" transfer-ownership="none">
+ <doc xml:space="preserve">only return #GstMeta of this type</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map" c:identifier="gst_buffer_map">
+ <doc xml:space="preserve">This function fills @info with the #GstMapInfo of all merged memory
+blocks in @buffer.
+
+@flags describe the desired access of the memory. When @flags is
+#GST_MAP_WRITE, @buffer should be writable (as returned from
+gst_buffer_is_writable()).
+
+When @buffer is writable but the memory isn't, a writable copy will
+automatically be created and returned. The readonly copy of the
+buffer memory will then also be replaced with this writable copy.
+
+The memory in @info should be unmapped with gst_buffer_unmap() after
+usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the map succeeded and @info contains valid data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="info"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">info about the mapping</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the mapping</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map_range" c:identifier="gst_buffer_map_range">
+ <doc xml:space="preserve">This function fills @info with the #GstMapInfo of @length merged memory blocks
+starting at @idx in @buffer. When @length is -1, all memory blocks starting
+from @idx are merged and mapped.
+
+@flags describe the desired access of the memory. When @flags is
+#GST_MAP_WRITE, @buffer should be writable (as returned from
+gst_buffer_is_writable()).
+
+When @buffer is writable but the memory isn't, a writable copy will
+automatically be created and returned. The readonly copy of the buffer memory
+will then also be replaced with this writable copy.
+
+The memory in @info should be unmapped with gst_buffer_unmap() after usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the map succeeded and @info contains valid
+data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="info"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">info about the mapping</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the mapping</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="memcmp" c:identifier="gst_buffer_memcmp">
+ <doc xml:space="preserve">Compare @size bytes starting from @offset in @buffer with the memory in @mem.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">0 if the memory is equal.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in @buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">the memory to compare</doc>
+ <array length="2" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size to compare</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="memset" c:identifier="gst_buffer_memset">
+ <doc xml:space="preserve">Fill @buf with @size bytes with @val starting from @offset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The amount of bytes filled. This value can be lower than @size
+ when @buffer did not contain enough data.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in @buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size to set</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="n_memory" c:identifier="gst_buffer_n_memory">
+ <doc xml:space="preserve">Get the amount of memory blocks that this buffer has. This amount is never
+larger than what gst_buffer_get_max_memory() returns.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of memory blocks this buffer is made of.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_memory" c:identifier="gst_buffer_peek_memory">
+ <doc xml:space="preserve">Get the memory block at @idx in @buffer. The memory block stays valid until
+the memory block in @buffer is removed, replaced or merged, typically with
+any call that modifies the memory in @buffer.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstMemory at @idx.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prepend_memory" c:identifier="gst_buffer_prepend_memory">
+ <doc xml:space="preserve">Prepend the memory block @mem to @buffer. This function takes
+ownership of @mem and thus doesn't increase its refcount.
+
+This function is identical to gst_buffer_insert_memory() with an index of 0.
+See gst_buffer_insert_memory() for more details.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_all_memory"
+ c:identifier="gst_buffer_remove_all_memory">
+ <doc xml:space="preserve">Remove all the memory blocks in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_memory" c:identifier="gst_buffer_remove_memory">
+ <doc xml:space="preserve">Remove the memory block in @b at index @i.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_memory_range"
+ c:identifier="gst_buffer_remove_memory_range">
+ <doc xml:space="preserve">Remove @length memory blocks in @buffer starting from @idx.
+
+@length can be -1, in which case all memory starting from @idx is removed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_meta" c:identifier="gst_buffer_remove_meta">
+ <doc xml:space="preserve">Remove the metadata for @meta on @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the metadata existed and was removed, %FALSE if no such
+metadata was on @buffer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMeta</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_all_memory"
+ c:identifier="gst_buffer_replace_all_memory">
+ <doc xml:space="preserve">Replaces all memory in @buffer with @mem.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_memory" c:identifier="gst_buffer_replace_memory">
+ <doc xml:space="preserve">Replaces the memory block at index @idx in @buffer with @mem.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_memory_range"
+ c:identifier="gst_buffer_replace_memory_range">
+ <doc xml:space="preserve">Replaces @length memory blocks in @buffer starting at @idx with @mem.
+
+If @length is -1, all memory starting from @idx will be removed and
+replaced with @mem.
+
+@buffer should be writable.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length should not be 0</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="resize" c:identifier="gst_buffer_resize">
+ <doc xml:space="preserve">Set the offset and total size of the memory blocks in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset adjustment</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the new size or -1 to just adjust the offset</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="resize_range" c:identifier="gst_buffer_resize_range">
+ <doc xml:space="preserve">Set the total size of the @length memory blocks starting at @idx in
+@buffer</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if resizing succeeded, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset adjustment</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the new size or -1 to just adjust the offset</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flags"
+ c:identifier="gst_buffer_set_flags"
+ version="1.10">
+ <doc xml:space="preserve">Sets one or more buffer flags on a buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @flags were successfully set on buffer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBufferFlags to set.</doc>
+ <type name="BufferFlags" c:type="GstBufferFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_size" c:identifier="gst_buffer_set_size">
+ <doc xml:space="preserve">Set the total size of the memory blocks in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the new size</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_buffer_unmap">
+ <doc xml:space="preserve">Release the memory previously mapped with gst_buffer_map().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMapInfo</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unset_flags"
+ c:identifier="gst_buffer_unset_flags"
+ version="1.10">
+ <doc xml:space="preserve">Clears one or more buffer flags.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">true if @flags is successfully cleared from buffer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBufferFlags to clear</doc>
+ <type name="BufferFlags" c:type="GstBufferFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="get_max_memory"
+ c:identifier="gst_buffer_get_max_memory"
+ version="1.2">
+ <doc xml:space="preserve">Get the maximum amount of memory blocks that a buffer can hold. This is a
+compile time constant that can be queried with the function.
+
+When more memory blocks are added, existing memory blocks will be merged
+together to make room for the new block.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of memory blocks that a buffer can hold.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ </function>
+ </record>
+ <bitfield name="BufferCopyFlags"
+ glib:type-name="GstBufferCopyFlags"
+ glib:get-type="gst_buffer_copy_flags_get_type"
+ c:type="GstBufferCopyFlags">
+ <doc xml:space="preserve">A set of flags that can be provided to the gst_buffer_copy_into()
+function to specify which items should be copied.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_BUFFER_COPY_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">copy nothing</doc>
+ </member>
+ <member name="flags"
+ value="1"
+ c:identifier="GST_BUFFER_COPY_FLAGS"
+ glib:nick="flags">
+ <doc xml:space="preserve">flag indicating that buffer flags should be copied</doc>
+ </member>
+ <member name="timestamps"
+ value="2"
+ c:identifier="GST_BUFFER_COPY_TIMESTAMPS"
+ glib:nick="timestamps">
+ <doc xml:space="preserve">flag indicating that buffer pts, dts,
+ duration, offset and offset_end should be copied</doc>
+ </member>
+ <member name="meta"
+ value="4"
+ c:identifier="GST_BUFFER_COPY_META"
+ glib:nick="meta">
+ <doc xml:space="preserve">flag indicating that buffer meta should be
+ copied</doc>
+ </member>
+ <member name="memory"
+ value="8"
+ c:identifier="GST_BUFFER_COPY_MEMORY"
+ glib:nick="memory">
+ <doc xml:space="preserve">flag indicating that buffer memory should be reffed
+ and appended to already existing memory. Unless the memory is marked as
+ NO_SHARE, no actual copy of the memory is made but it is simply reffed.
+ Add @GST_BUFFER_COPY_DEEP to force a real copy.</doc>
+ </member>
+ <member name="merge"
+ value="16"
+ c:identifier="GST_BUFFER_COPY_MERGE"
+ glib:nick="merge">
+ <doc xml:space="preserve">flag indicating that buffer memory should be
+ merged</doc>
+ </member>
+ <member name="deep"
+ value="32"
+ c:identifier="GST_BUFFER_COPY_DEEP"
+ glib:nick="deep">
+ <doc xml:space="preserve">flag indicating that memory should always be
+ copied instead of reffed (Since 1.2)</doc>
+ </member>
+ </bitfield>
+ <bitfield name="BufferFlags"
+ glib:type-name="GstBufferFlags"
+ glib:get-type="gst_buffer_flags_get_type"
+ c:type="GstBufferFlags">
+ <doc xml:space="preserve">A set of buffer flags used to describe properties of a #GstBuffer.</doc>
+ <member name="live"
+ value="16"
+ c:identifier="GST_BUFFER_FLAG_LIVE"
+ glib:nick="live">
+ <doc xml:space="preserve">the buffer is live data and should be discarded in
+ the PAUSED state.</doc>
+ </member>
+ <member name="decode_only"
+ value="32"
+ c:identifier="GST_BUFFER_FLAG_DECODE_ONLY"
+ glib:nick="decode-only">
+ <doc xml:space="preserve">the buffer contains data that should be dropped
+ because it will be clipped against the segment
+ boundaries or because it does not contain data
+ that should be shown to the user.</doc>
+ </member>
+ <member name="discont"
+ value="64"
+ c:identifier="GST_BUFFER_FLAG_DISCONT"
+ glib:nick="discont">
+ <doc xml:space="preserve">the buffer marks a data discontinuity in the stream.
+ This typically occurs after a seek or a dropped buffer
+ from a live or network source.</doc>
+ </member>
+ <member name="resync"
+ value="128"
+ c:identifier="GST_BUFFER_FLAG_RESYNC"
+ glib:nick="resync">
+ <doc xml:space="preserve">the buffer timestamps might have a discontinuity
+ and this buffer is a good point to resynchronize.</doc>
+ </member>
+ <member name="corrupted"
+ value="256"
+ c:identifier="GST_BUFFER_FLAG_CORRUPTED"
+ glib:nick="corrupted">
+ <doc xml:space="preserve">the buffer data is corrupted.</doc>
+ </member>
+ <member name="marker"
+ value="512"
+ c:identifier="GST_BUFFER_FLAG_MARKER"
+ glib:nick="marker">
+ <doc xml:space="preserve">the buffer contains a media specific marker. for
+ video this is typically the end of a frame boundary, for audio
+ this is usually the start of a talkspurt.</doc>
+ </member>
+ <member name="header"
+ value="1024"
+ c:identifier="GST_BUFFER_FLAG_HEADER"
+ glib:nick="header">
+ <doc xml:space="preserve">the buffer contains header information that is
+ needed to decode the following data.</doc>
+ </member>
+ <member name="gap"
+ value="2048"
+ c:identifier="GST_BUFFER_FLAG_GAP"
+ glib:nick="gap">
+ <doc xml:space="preserve">the buffer has been created to fill a gap in the
+ stream and contains media neutral data (elements can
+ switch to optimized code path that ignores the buffer
+ content).</doc>
+ </member>
+ <member name="droppable"
+ value="4096"
+ c:identifier="GST_BUFFER_FLAG_DROPPABLE"
+ glib:nick="droppable">
+ <doc xml:space="preserve">the buffer can be dropped without breaking the
+ stream, for example to reduce bandwidth.</doc>
+ </member>
+ <member name="delta_unit"
+ value="8192"
+ c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"
+ glib:nick="delta-unit">
+ <doc xml:space="preserve">this unit cannot be decoded independently.</doc>
+ </member>
+ <member name="tag_memory"
+ value="16384"
+ c:identifier="GST_BUFFER_FLAG_TAG_MEMORY"
+ glib:nick="tag-memory">
+ <doc xml:space="preserve">this flag is set when memory of the buffer
+ is added/removed</doc>
+ </member>
+ <member name="sync_after"
+ value="32768"
+ c:identifier="GST_BUFFER_FLAG_SYNC_AFTER"
+ glib:nick="sync-after">
+ <doc xml:space="preserve">Elements which write to disk or permanent
+ storage should ensure the data is synced after
+ writing the contents of this buffer. (Since 1.6)</doc>
+ </member>
+ <member name="non_droppable"
+ value="65536"
+ c:identifier="GST_BUFFER_FLAG_NON_DROPPABLE"
+ glib:nick="non-droppable">
+ <doc xml:space="preserve">This buffer is important and should not be dropped.
+ This can be used to mark important buffers, e.g. to flag
+ RTP packets carrying keyframes or codec setup data for RTP
+ Forward Error Correction purposes, or to prevent still video
+ frames from being dropped by elements due to QoS. (Since 1.14)</doc>
+ </member>
+ <member name="last"
+ value="1048576"
+ c:identifier="GST_BUFFER_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">additional media specific flags can be added starting from
+ this flag.</doc>
+ </member>
+ </bitfield>
+ <callback name="BufferForeachMetaFunc" c:type="GstBufferForeachMetaFunc">
+ <doc xml:space="preserve">A function that will be called from gst_buffer_foreach_meta(). The @meta
+field will point to a the reference of the meta.
+
+@buffer should not be modified from this callback.
+
+When this function returns %TRUE, the next meta will be
+returned. When %FALSE is returned, gst_buffer_foreach_meta() will return.
+
+When @meta is set to %NULL, the item will be removed from the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE when gst_buffer_foreach_meta() should stop</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1">
+ <doc xml:space="preserve">a pointer to a #GstMeta</doc>
+ <type name="Meta" c:type="GstMeta**"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data passed to gst_buffer_foreach_meta()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="BufferList"
+ c:type="GstBufferList"
+ glib:type-name="GstBufferList"
+ glib:get-type="gst_buffer_list_get_type"
+ c:symbol-prefix="buffer_list">
+ <doc xml:space="preserve">Buffer lists are an object containing a list of buffers.
+
+Buffer lists are created with gst_buffer_list_new() and filled with data
+using a gst_buffer_list_insert().
+
+Buffer lists can be pushed on a srcpad with gst_pad_push_list(). This is
+interesting when multiple buffers need to be pushed in one go because it
+can reduce the amount of overhead for pushing each buffer individually.</doc>
+ <constructor name="new" c:identifier="gst_buffer_list_new">
+ <doc xml:space="preserve">Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList.
+
+Free-function: gst_buffer_list_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBufferList. gst_buffer_list_unref()
+ after usage.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_sized" c:identifier="gst_buffer_list_new_sized">
+ <doc xml:space="preserve">Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList. The list will have @size space preallocated so
+that memory reallocations can be avoided.
+
+Free-function: gst_buffer_list_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstBufferList. gst_buffer_list_unref()
+ after usage.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">an initial reserved size</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="calculate_size"
+ c:identifier="gst_buffer_list_calculate_size"
+ version="1.14">
+ <doc xml:space="preserve">Calculates the size of the data contained in buffer list by adding the
+size of all buffers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the size of the data contained in buffer list in bytes.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy_deep"
+ c:identifier="gst_buffer_list_copy_deep"
+ version="1.6">
+ <doc xml:space="preserve">Create a copy of the given buffer list. This will make a newly allocated
+copy of the buffer that the source buffer list contains.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new copy of @list.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="const GstBufferList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="gst_buffer_list_foreach">
+ <doc xml:space="preserve">Call @func with @data for each buffer in @list.
+
+@func can modify the passed buffer pointer or its contents. The return value
+of @func define if this function returns or if the remaining buffers in
+the list should be skipped.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @func returned %TRUE for each buffer in @list or when
+@list is empty.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a #GstBufferListFunc to call</doc>
+ <type name="BufferListFunc" c:type="GstBufferListFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get" c:identifier="gst_buffer_list_get">
+ <doc xml:space="preserve">Get the buffer at @idx.
+
+You must make sure that @idx does not exceed the number of
+buffers available.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the buffer at @idx in @group
+ or %NULL when there is no buffer. The buffer remains valid as
+ long as @list is valid and buffer is not removed from the list.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_writable"
+ c:identifier="gst_buffer_list_get_writable"
+ version="1.14">
+ <doc xml:space="preserve">Gets the buffer at @idx, ensuring it is a writable buffer.
+
+You must make sure that @idx does not exceed the number of
+buffers available.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the buffer at @idx in @group.
+ The returned buffer remains valid as long as @list is valid and
+ the buffer is not removed from the list.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a (writable) #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert" c:identifier="gst_buffer_list_insert">
+ <doc xml:space="preserve">Insert @buffer at @idx in @list. Other buffers are moved to make room for
+this new buffer.
+
+A -1 value for @idx will append the buffer at the end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="length" c:identifier="gst_buffer_list_length">
+ <doc xml:space="preserve">Returns the number of buffers in @list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of buffers in the buffer list</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove" c:identifier="gst_buffer_list_remove">
+ <doc xml:space="preserve">Remove @length buffers starting from @idx in @list. The following buffers
+are moved to close the gap.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the amount to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="BufferListFunc" c:type="GstBufferListFunc">
+ <doc xml:space="preserve">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.
+
+When this function returns %TRUE, the next buffer will be
+returned. When %FALSE 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE when gst_buffer_list_foreach() should stop</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1">
+ <doc xml:space="preserve">pointer the buffer</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index of @buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data passed to gst_buffer_list_foreach()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="BufferPool"
+ c:symbol-prefix="buffer_pool"
+ c:type="GstBufferPool"
+ parent="Object"
+ glib:type-name="GstBufferPool"
+ glib:get-type="gst_buffer_pool_get_type"
+ glib:type-struct="BufferPoolClass">
+ <doc xml:space="preserve">A #GstBufferPool is an object that can be used to pre-allocate and recycle
+buffers of the same size and with the same properties.
+
+A #GstBufferPool is created with gst_buffer_pool_new().
+
+Once a pool is created, it needs to be configured. A call to
+gst_buffer_pool_get_config() returns the current configuration structure from
+the pool. With gst_buffer_pool_config_set_params() and
+gst_buffer_pool_config_set_allocator() the bufferpool parameters and
+allocator can be configured. Other properties can be configured in the pool
+depending on the pool implementation.
+
+A bufferpool can have extra options that can be enabled with
+gst_buffer_pool_config_add_option(). The available options can be retrieved
+with gst_buffer_pool_get_options(). Some options allow for additional
+configuration properties to be set.
+
+After the configuration structure has been configured,
+gst_buffer_pool_set_config() updates the configuration in the pool. This can
+fail when the configuration structure is not accepted.
+
+After the a pool has been configured, it can be activated with
+gst_buffer_pool_set_active(). This will preallocate the configured resources
+in the pool.
+
+When the pool is active, gst_buffer_pool_acquire_buffer() can be used to
+retrieve a buffer from the pool.
+
+Buffers allocated from a bufferpool will automatically be returned to the
+pool with gst_buffer_pool_release_buffer() when their refcount drops to 0.
+
+The bufferpool can be deactivated again with gst_buffer_pool_set_active().
+All further gst_buffer_pool_acquire_buffer() calls will return an error. When
+all buffers are returned to the pool they will be freed.
+
+Use gst_object_unref() to release the reference to a bufferpool. If the
+refcount of the pool reaches 0, the pool will be freed.</doc>
+ <constructor name="new" c:identifier="gst_buffer_pool_new">
+ <doc xml:space="preserve">Creates a new #GstBufferPool instance.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBufferPool instance</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ </constructor>
+ <function name="config_add_option"
+ c:identifier="gst_buffer_pool_config_add_option">
+ <doc xml:space="preserve">Enabled the option in @config. This will instruct the @bufferpool to enable
+the specified option on the buffers that it allocates.
+
+The supported options by @pool can be retrieved with gst_buffer_pool_get_options().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="option" transfer-ownership="none">
+ <doc xml:space="preserve">an option to add</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_get_allocator"
+ c:identifier="gst_buffer_pool_config_get_allocator">
+ <doc xml:space="preserve">Get the @allocator and @params from @config.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the values are set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocator, or %NULL</doc>
+ <type name="Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GstAllocationParams, or %NULL</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_get_option"
+ c:identifier="gst_buffer_pool_config_get_option">
+ <doc xml:space="preserve">Parse an available @config and get the option at @index of the options API
+array.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar of the option at @index.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the option array to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_get_params"
+ c:identifier="gst_buffer_pool_config_get_params">
+ <doc xml:space="preserve">Get the configuration values from @config.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if all parameters could be fetched.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="caps"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the caps of buffers</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the size of each buffer, not including prefix and padding</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="min_buffers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the minimum amount of buffers to allocate.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="max_buffers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the maximum amount of buffers to allocate or 0 for unlimited.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_has_option"
+ c:identifier="gst_buffer_pool_config_has_option">
+ <doc xml:space="preserve">Check if @config contains @option.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the options array contains @option.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="option" transfer-ownership="none">
+ <doc xml:space="preserve">an option</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_n_options"
+ c:identifier="gst_buffer_pool_config_n_options">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the options array of the
+@config structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the options array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_set_allocator"
+ c:identifier="gst_buffer_pool_config_set_allocator">
+ <doc xml:space="preserve">Set the @allocator and @params on @config.
+
+One of @allocator and @params can be %NULL, but not both. When @allocator
+is %NULL, the default allocator of the pool will use the values in @param
+to perform its allocation. When @param is %NULL, the pool will use the
+provided @allocator with its default #GstAllocationParams.
+
+A call to gst_buffer_pool_set_config() can update the allocator and params
+with the values that it is able to do. Some pools are, for example, not able
+to operate with different allocators or cannot allocate with the values
+specified in @params. Use gst_buffer_pool_get_config() to get the currently
+used values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GstAllocationParams</doc>
+ <type name="AllocationParams" c:type="const GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_set_params"
+ c:identifier="gst_buffer_pool_config_set_params">
+ <doc xml:space="preserve">Configure @config with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">caps for the buffers</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of each buffer, not including prefix and padding</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the minimum amount of buffers to allocate.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="max_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of buffers to allocate or 0 for unlimited.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="config_validate_params"
+ c:identifier="gst_buffer_pool_config_validate_params"
+ version="1.4">
+ <doc xml:space="preserve">Validate that changes made to @config are still valid in the context of the
+expected parameters. This function is a helper that can be used to validate
+changes made by a pool to a config when gst_buffer_pool_set_config()
+returns %FALSE. This expects that @caps haven't changed and that
+@min_buffers aren't lower then what we initially expected.
+This does not check if options or allocator parameters are still valid,
+won't check if size have changed, since changing the size is valid to adapt
+padding.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the parameters are valid in this context.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool configuration</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the excepted caps of buffers</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the expected size of each buffer, not including prefix and padding</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the expected minimum amount of buffers to allocate.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="max_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the expect maximum amount of buffers to allocate or 0 for unlimited.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="acquire_buffer" invoker="acquire_buffer">
+ <doc xml:space="preserve">Acquire a buffer from @pool. @buffer should point to a memory location that
+can hold a pointer to the new buffer.
+
+@params can be %NULL or contain optional parameters to influence the
+allocation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is
+inactive.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters.</doc>
+ <type name="BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="alloc_buffer">
+ <return-value transfer-ownership="none">
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="params" transfer-ownership="none">
+ <type name="BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush_start">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush_stop">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="free_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_options" invoker="get_options">
+ <doc xml:space="preserve">Get a %NULL terminated array of string with supported bufferpool options for
+@pool. An option would typically be enabled with
+gst_buffer_pool_config_add_option().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL terminated array
+ of strings.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="release_buffer" invoker="release_buffer">
+ <doc xml:space="preserve">Release @buffer to @pool. @buffer should have previously been allocated from
+@pool with gst_buffer_pool_acquire_buffer().
+
+This function is usually called automatically when the last ref on @buffer
+disappears.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reset_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_config" invoker="set_config">
+ <doc xml:space="preserve">Set the configuration of the pool. If the pool is already configured, and
+the configuration haven't change, this function will return %TRUE. If the
+pool is active, this method will return %FALSE and active configuration
+will remain. Buffers allocated form this pool must be returned or else this
+function will do nothing and return %FALSE.
+
+@config is a #GstStructure that contains the configuration parameters for
+the pool. A default and mandatory set of parameters can be configured with
+gst_buffer_pool_config_set_params(), gst_buffer_pool_config_set_allocator()
+and gst_buffer_pool_config_add_option().
+
+If the parameters in @config can not be set exactly, this function returns
+%FALSE and will try to update as much state as possible. The new state can
+then be retrieved and refined with gst_buffer_pool_get_config().
+
+This function takes ownership of @config.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the configuration could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="acquire_buffer"
+ c:identifier="gst_buffer_pool_acquire_buffer">
+ <doc xml:space="preserve">Acquire a buffer from @pool. @buffer should point to a memory location that
+can hold a pointer to the new buffer.
+
+@params can be %NULL or contain optional parameters to influence the
+allocation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is
+inactive.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters.</doc>
+ <type name="BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_config" c:identifier="gst_buffer_pool_get_config">
+ <doc xml:space="preserve">Get a copy of the current configuration of the pool. This configuration
+can either be modified and used for the gst_buffer_pool_set_config() call
+or it must be freed after usage.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a copy of the current configuration of @pool. use
+gst_structure_free() after usage or gst_buffer_pool_set_config().</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_options" c:identifier="gst_buffer_pool_get_options">
+ <doc xml:space="preserve">Get a %NULL terminated array of string with supported bufferpool options for
+@pool. An option would typically be enabled with
+gst_buffer_pool_config_add_option().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL terminated array
+ of strings.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_option" c:identifier="gst_buffer_pool_has_option">
+ <doc xml:space="preserve">Check if the bufferpool supports @option.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the buffer pool contains @option.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="option" transfer-ownership="none">
+ <doc xml:space="preserve">an option</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_active" c:identifier="gst_buffer_pool_is_active">
+ <doc xml:space="preserve">Check if @pool is active. A pool can be activated with the
+gst_buffer_pool_set_active() call.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the pool is active.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="release_buffer"
+ c:identifier="gst_buffer_pool_release_buffer">
+ <doc xml:space="preserve">Release @buffer to @pool. @buffer should have previously been allocated from
+@pool with gst_buffer_pool_acquire_buffer().
+
+This function is usually called automatically when the last ref on @buffer
+disappears.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_active" c:identifier="gst_buffer_pool_set_active">
+ <doc xml:space="preserve">Control the active state of @pool. When the pool is inactive, new calls to
+gst_buffer_pool_acquire_buffer() will return with %GST_FLOW_FLUSHING.
+
+Activating the bufferpool will preallocate all resources in the pool based on
+the configuration of the pool.
+
+Deactivating will free the resources again when there are no outstanding
+buffers. When there are outstanding buffers, they will be freed as soon as
+they are all returned to the pool.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE when the pool was not configured or when preallocation of the
+buffers failed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">the new active state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_config" c:identifier="gst_buffer_pool_set_config">
+ <doc xml:space="preserve">Set the configuration of the pool. If the pool is already configured, and
+the configuration haven't change, this function will return %TRUE. If the
+pool is active, this method will return %FALSE and active configuration
+will remain. Buffers allocated form this pool must be returned or else this
+function will do nothing and return %FALSE.
+
+@config is a #GstStructure that contains the configuration parameters for
+the pool. A default and mandatory set of parameters can be configured with
+gst_buffer_pool_config_set_params(), gst_buffer_pool_config_set_allocator()
+and gst_buffer_pool_config_add_option().
+
+If the parameters in @config can not be set exactly, this function returns
+%FALSE and will try to update as much state as possible. The new state can
+then be retrieved and refined with gst_buffer_pool_get_config().
+
+This function takes ownership of @config.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the configuration could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing"
+ c:identifier="gst_buffer_pool_set_flushing"
+ version="1.4">
+ <doc xml:space="preserve">Enable or disable the flushing state of a @pool without freeing or
+allocating buffers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">whether to start or stop flushing</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="flushing">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BufferPoolPrivate" c:type="GstBufferPoolPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <bitfield name="BufferPoolAcquireFlags"
+ glib:type-name="GstBufferPoolAcquireFlags"
+ glib:get-type="gst_buffer_pool_acquire_flags_get_type"
+ c:type="GstBufferPoolAcquireFlags">
+ <doc xml:space="preserve">Additional flags to control the allocation of a buffer</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_BUFFER_POOL_ACQUIRE_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="key_unit"
+ value="1"
+ c:identifier="GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT"
+ glib:nick="key-unit">
+ <doc xml:space="preserve">buffer is keyframe</doc>
+ </member>
+ <member name="dontwait"
+ value="2"
+ c:identifier="GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT"
+ glib:nick="dontwait">
+ <doc xml:space="preserve">when the bufferpool is empty, acquire_buffer
+will by default block until a buffer is released into the pool again. Setting
+this flag makes acquire_buffer return #GST_FLOW_EOS instead of blocking.</doc>
+ </member>
+ <member name="discont"
+ value="4"
+ c:identifier="GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT"
+ glib:nick="discont">
+ <doc xml:space="preserve">buffer is discont</doc>
+ </member>
+ <member name="last"
+ value="65536"
+ c:identifier="GST_BUFFER_POOL_ACQUIRE_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">last flag, subclasses can use private flags
+ starting from this value.</doc>
+ </member>
+ </bitfield>
+ <record name="BufferPoolAcquireParams" c:type="GstBufferPoolAcquireParams">
+ <doc xml:space="preserve">Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the
+allocation of the buffer.
+
+The default implementation ignores the @start and @stop members but other
+implementations can use this extra information to decide what buffer to
+return.</doc>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">the format of @start and @stop</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </field>
+ <field name="start" writable="1">
+ <doc xml:space="preserve">the start position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ <field name="stop" writable="1">
+ <doc xml:space="preserve">the stop position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">additional flags</doc>
+ <type name="BufferPoolAcquireFlags"
+ c:type="GstBufferPoolAcquireFlags"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BufferPoolClass"
+ c:type="GstBufferPoolClass"
+ glib:is-gtype-struct-for="BufferPool">
+ <doc xml:space="preserve">The GstBufferPool class.</doc>
+ <field name="object_class">
+ <doc xml:space="preserve">Object parent class</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="get_options">
+ <callback name="get_options">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL terminated array
+ of strings.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_config">
+ <callback name="set_config">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the configuration could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="acquire_buffer">
+ <callback name="acquire_buffer">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is
+inactive.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters.</doc>
+ <type name="BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="alloc_buffer">
+ <callback name="alloc_buffer">
+ <return-value transfer-ownership="none">
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="params" transfer-ownership="none">
+ <type name="BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reset_buffer">
+ <callback name="reset_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="release_buffer">
+ <callback name="release_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="free_buffer">
+ <callback name="free_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush_start">
+ <callback name="flush_start">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush_stop">
+ <callback name="flush_stop">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BufferPoolPrivate"
+ c:type="GstBufferPoolPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="BufferingMode"
+ glib:type-name="GstBufferingMode"
+ glib:get-type="gst_buffering_mode_get_type"
+ c:type="GstBufferingMode">
+ <doc xml:space="preserve">The different types of buffering methods.</doc>
+ <member name="stream"
+ value="0"
+ c:identifier="GST_BUFFERING_STREAM"
+ glib:nick="stream">
+ <doc xml:space="preserve">a small amount of data is buffered</doc>
+ </member>
+ <member name="download"
+ value="1"
+ c:identifier="GST_BUFFERING_DOWNLOAD"
+ glib:nick="download">
+ <doc xml:space="preserve">the stream is being downloaded</doc>
+ </member>
+ <member name="timeshift"
+ value="2"
+ c:identifier="GST_BUFFERING_TIMESHIFT"
+ glib:nick="timeshift">
+ <doc xml:space="preserve">the stream is being downloaded in a ringbuffer</doc>
+ </member>
+ <member name="live"
+ value="3"
+ c:identifier="GST_BUFFERING_LIVE"
+ glib:nick="live">
+ <doc xml:space="preserve">the stream is a live stream</doc>
+ </member>
+ </enumeration>
+ <class name="Bus"
+ c:symbol-prefix="bus"
+ c:type="GstBus"
+ parent="Object"
+ glib:type-name="GstBus"
+ glib:get-type="gst_bus_get_type"
+ glib:type-struct="BusClass">
+ <doc xml:space="preserve">The #GstBus is an object responsible for delivering #GstMessage packets in
+a first-in first-out way from the streaming threads (see #GstTask) to the
+application.
+
+Since the application typically only wants to deal with delivery of these
+messages from one thread, the GstBus will marshall the messages between
+different threads. This is important since the actual streaming of media
+is done in another thread than the application.
+
+The GstBus provides support for #GSource based notifications. This makes it
+possible to handle the delivery in the glib mainloop.
+
+The #GSource callback function gst_bus_async_signal_func() can be used to
+convert all bus messages into signal emissions.
+
+A message is posted on the bus with the gst_bus_post() method. With the
+gst_bus_peek() and gst_bus_pop() methods one can look at or retrieve a
+previously posted message.
+
+The bus can be polled with the gst_bus_poll() method. This methods blocks
+up to the specified timeout value until one of the specified messages types
+is posted on the bus. The application can then gst_bus_pop() the messages
+from the bus to handle them.
+Alternatively the application can register an asynchronous bus function
+using gst_bus_add_watch_full() or gst_bus_add_watch(). This function will
+install a #GSource in the default glib main loop and will deliver messages
+a short while after they have been posted. Note that the main loop should
+be running for the asynchronous callbacks.
+
+It is also possible to get messages from the bus without any thread
+marshalling with the gst_bus_set_sync_handler() method. This makes it
+possible to react to a message in the same thread that posted the
+message on the bus. This should only be used if the application is able
+to deal with messages from different threads.
+
+Every #GstPipeline has one bus.
+
+Note that a #GstPipeline will set its bus into flushing state when changing
+from READY to NULL state.</doc>
+ <constructor name="new" c:identifier="gst_bus_new">
+ <doc xml:space="preserve">Creates a new #GstBus instance.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBus instance</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </return-value>
+ </constructor>
+ <virtual-method name="message">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sync_message">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_signal_watch" c:identifier="gst_bus_add_signal_watch">
+ <doc xml:space="preserve">Adds a bus signal watch to the default main context with the default priority
+(%G_PRIORITY_DEFAULT). It is also possible to use a non-default
+main context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+
+After calling this statement, the bus will emit the "message" 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus on which you want to receive the "message" signal</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="add_signal_watch_full"
+ c:identifier="gst_bus_add_signal_watch_full">
+ <doc xml:space="preserve">Adds a bus signal watch to the default main context with the given @priority
+(e.g. %G_PRIORITY_DEFAULT). It is also possible to use a non-default main
+context set up using g_main_context_push_thread_default()
+(before one had to create a bus watch source and attach it to the desired
+main context 'manually').
+
+After calling this statement, the bus will emit the "message" 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 must remove any signal
+watch before you can set another type of watch.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus on which you want to receive the "message" signal</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the watch.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_watch"
+ c:identifier="gst_bus_add_watch"
+ shadowed-by="add_watch_full"
+ introspectable="0">
+ <doc xml:space="preserve">Adds a bus watch to the default main context with the default priority
+(%G_PRIORITY_DEFAULT). It is also possible to use a non-default main
+context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+
+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 bus watch will only work if a GLib main loop is being run.
+
+The watch can be removed using gst_bus_remove_watch() or by returning %FALSE
+from @func. If the watch was added to the default main context it is also
+possible to remove the watch using g_source_remove().
+
+The bus watch will take its own reference to the @bus, so it is safe to unref
+@bus using gst_object_unref() after setting the bus watch.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The event source id or 0 if @bus already got an event source.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to create the watch for</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="func" transfer-ownership="none" closure="1">
+ <doc xml:space="preserve">A function to call when a message is received.</doc>
+ <type name="BusFunc" c:type="GstBusFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_watch_full"
+ c:identifier="gst_bus_add_watch_full"
+ shadows="add_watch">
+ <doc xml:space="preserve">Adds a bus watch to the default main context with the given @priority (e.g.
+%G_PRIORITY_DEFAULT). It is also possible to use a non-default main
+context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+
+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 bus watch will only work if a GLib main loop is being run.
+
+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 gst_bus_remove_watch() or by returning %FALSE
+from @func. If the watch was added to the default main context it is also
+possible to remove the watch using g_source_remove().
+
+The bus watch will take its own reference to the @bus, so it is safe to unref
+@bus using gst_object_unref() after setting the bus watch.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The event source id or 0 if @bus already got an event source.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to create the watch for.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="priority" transfer-ownership="none">
+ <doc xml:space="preserve">The priority of the watch.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2"
+ destroy="3">
+ <doc xml:space="preserve">A function to call when a message is received.</doc>
+ <type name="BusFunc" c:type="GstBusFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">the function to call when the source is removed.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="async_signal_func"
+ c:identifier="gst_bus_async_signal_func">
+ <doc xml:space="preserve">A helper #GstBusFunc that can be used to convert all asynchronous messages
+into signals.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessage received</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_watch" c:identifier="gst_bus_create_watch">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GSource that can be added to a mainloop.</doc>
+ <type name="GLib.Source" c:type="GSource*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to create the watch for</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="disable_sync_message_emission"
+ c:identifier="gst_bus_disable_sync_message_emission">
+ <doc xml:space="preserve">Instructs GStreamer to stop emitting the "sync-message" 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
+"cancelled" 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus on which you previously called
+gst_bus_enable_sync_message_emission()</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="enable_sync_message_emission"
+ c:identifier="gst_bus_enable_sync_message_emission">
+ <doc xml:space="preserve">Instructs GStreamer to emit the "sync-message" signal after running the bus'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'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 "message"
+signal is marshalled to the main thread via the main loop.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus on which you want to receive the "sync-message" signal</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pollfd"
+ c:identifier="gst_bus_get_pollfd"
+ version="1.14">
+ <doc xml:space="preserve">Gets the file descriptor from the bus which can be used to get notified about
+messages being available with functions like g_poll(), and allows integration
+into other event loops based on file descriptors.
+Whenever a message is available, the POLLIN / %G_IO_IN event is set.
+
+Warning: NEVER read or write anything to the returned fd but only use it
+for getting notifications via g_poll() or similar and then use the normal
+GstBus API, e.g. gst_bus_pop().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">A GPollFD to fill</doc>
+ <type name="GLib.PollFD" c:type="GPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="have_pending" c:identifier="gst_bus_have_pending">
+ <doc xml:space="preserve">Check if there are pending messages on the bus that
+should be handled.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there are messages on the bus to be handled, %FALSE
+otherwise.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to check</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek" c:identifier="gst_bus_peek">
+ <doc xml:space="preserve">Peek the message on the top of the bus' queue. The message will remain
+on the bus' message queue. A reference is returned, and needs to be unreffed
+by the caller.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstMessage that is on the
+ bus, or %NULL if the bus is empty.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="poll" c:identifier="gst_bus_poll">
+ <doc xml:space="preserve">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
+@timeout is negative, this function will block indefinitely.
+
+All messages not in @events will be popped off the bus and will be ignored.
+It is not possible to use message enums beyond #GST_MESSAGE_EXTENDED in the
+@events mask
+
+Because poll is implemented using the "message" signal enabled by
+gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the "message"
+signal to be emitted for every message that poll sees. Thus a "message"
+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'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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the message that was received,
+ or %NULL if the poll timed out. The message is taken from the
+ bus and needs to be unreffed with gst_message_unref() after
+ usage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="events" transfer-ownership="none">
+ <doc xml:space="preserve">a mask of #GstMessageType, representing the set of message types to
+poll for (note special handling of extended message types below)</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the poll timeout, as a #GstClockTime, or #GST_CLOCK_TIME_NONE to poll
+indefinitely.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pop" c:identifier="gst_bus_pop">
+ <doc xml:space="preserve">Get a message from the bus.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstMessage that is on the
+ bus, or %NULL if the bus is empty. The message is taken from
+ the bus and needs to be unreffed with gst_message_unref() after
+ usage.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to pop</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_filtered" c:identifier="gst_bus_pop_filtered">
+ <doc xml:space="preserve">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. It is not possible to use message
+enums beyond #GST_MESSAGE_EXTENDED in the @events mask.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the next #GstMessage matching
+ @type that is on the bus, or %NULL if 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.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to pop</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="types" transfer-ownership="none">
+ <doc xml:space="preserve">message types to take into account</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="post" c:identifier="gst_bus_post">
+ <doc xml:space="preserve">Post a message on the given bus. Ownership of the message
+is taken by the bus.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be posted, %FALSE if the bus is flushing.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to post on</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstMessage to post</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_signal_watch"
+ c:identifier="gst_bus_remove_signal_watch">
+ <doc xml:space="preserve">Removes a signal watch previously added with gst_bus_add_signal_watch().
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus you previously added a signal watch to</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_watch"
+ c:identifier="gst_bus_remove_watch"
+ version="1.6">
+ <doc xml:space="preserve">Removes an installed bus watch from @bus.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success or %FALSE if @bus has no event source.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to remove the watch from.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing" c:identifier="gst_bus_set_flushing">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">whether or not to flush the bus</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_sync_handler" c:identifier="gst_bus_set_sync_handler">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to install the handler on</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">The handler function to install</doc>
+ <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">User data that will be sent to the handler function.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when @user_data becomes unused</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sync_signal_handler"
+ c:identifier="gst_bus_sync_signal_handler">
+ <doc xml:space="preserve">A helper GstBusSyncHandler that can be used to convert all synchronous
+messages into signals.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">GST_BUS_PASS</doc>
+ <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessage received</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="timed_pop" c:identifier="gst_bus_timed_pop">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstMessage that is on the
+ bus after the specified timeout 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.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to pop</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="timed_pop_filtered"
+ c:identifier="gst_bus_timed_pop_filtered">
+ <doc xml:space="preserve">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
+@timeout is #GST_CLOCK_TIME_NONE, this function will block forever until a
+matching message was posted on the bus.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstMessage matching the
+ filter in @types, or %NULL if no matching 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.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBus to pop from</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout in nanoseconds, or GST_CLOCK_TIME_NONE to wait forever</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="types" transfer-ownership="none">
+ <doc xml:space="preserve">message types to take into account, GST_MESSAGE_ANY for any type</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="enable-async"
+ readable="0"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BusPrivate" c:type="GstBusPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="message" when="last" detailed="1">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message that has been posted asynchronously</doc>
+ <type name="Message"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="sync-message" when="last" detailed="1">
+ <doc xml:space="preserve">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 call
+gst_bus_enable_sync_message_emission() before.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message that has been posted synchronously</doc>
+ <type name="Message"/>
+ </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">
+ <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">
+ <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" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="BusFlags"
+ glib:type-name="GstBusFlags"
+ glib:get-type="gst_bus_flags_get_type"
+ c:type="GstBusFlags">
+ <doc xml:space="preserve">The standard flags that a bus may have.</doc>
+ <member name="flushing"
+ value="16"
+ c:identifier="GST_BUS_FLUSHING"
+ glib:nick="flushing">
+ <doc xml:space="preserve">The bus is currently dropping all messages</doc>
+ </member>
+ <member name="flag_last"
+ value="32"
+ c:identifier="GST_BUS_FLAG_LAST"
+ glib:nick="flag-last">
+ <doc xml:space="preserve">offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <callback name="BusFunc" c:type="GstBusFunc">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if the event source should be removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBus that sent the message</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data that has been given, when registering the handler</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="BusPrivate" c:type="GstBusPrivate" disguised="1">
+ </record>
+ <callback name="BusSyncHandler" c:type="GstBusSyncHandler">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GstBusSyncReply stating what to do with the message</doc>
+ <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+ </return-value>
+ <parameters>
+ <parameter name="bus" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBus that sent the message</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data that has been given, when registering the handler</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="BusSyncReply"
+ glib:type-name="GstBusSyncReply"
+ glib:get-type="gst_bus_sync_reply_get_type"
+ c:type="GstBusSyncReply">
+ <doc xml:space="preserve">The result values for a GstBusSyncHandler.</doc>
+ <member name="drop"
+ value="0"
+ c:identifier="GST_BUS_DROP"
+ glib:nick="drop">
+ <doc xml:space="preserve">drop the message</doc>
+ </member>
+ <member name="pass"
+ value="1"
+ c:identifier="GST_BUS_PASS"
+ glib:nick="pass">
+ <doc xml:space="preserve">pass the message to the async queue</doc>
+ </member>
+ <member name="async"
+ value="2"
+ c:identifier="GST_BUS_ASYNC"
+ glib:nick="async">
+ <doc xml:space="preserve">pass message to async queue, continue if message is handled</doc>
+ </member>
+ </enumeration>
+ <constant name="CAN_INLINE" value="1" c:type="GST_CAN_INLINE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="CAPS_FEATURE_MEMORY_SYSTEM_MEMORY"
+ value="memory:SystemMemory"
+ c:type="GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="CLOCK_TIME_NONE"
+ value="18446744073709551615"
+ c:type="GST_CLOCK_TIME_NONE">
+ <doc xml:space="preserve">Constant to define an undefined clock time.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </constant>
+ <record name="Caps"
+ c:type="GstCaps"
+ glib:type-name="GstCaps"
+ glib:get-type="gst_caps_get_type"
+ c:symbol-prefix="caps">
+ <doc xml:space="preserve">Caps (capabilities) are lightweight refcounted objects describing media types.
+They are composed of an array of #GstStructure.
+
+Caps are exposed on #GstPadTemplate to describe all possible types a
+given pad can handle. They are also stored in the #GstRegistry along with
+a description of the #GstElement.
+
+Caps are exposed on the element pads using the gst_pad_query_caps() pad
+function. This function describes the possible types that the pad can
+handle or produce at runtime.
+
+A #GstCaps can be constructed with the following code fragment:
+|[&lt;!-- language="C" --&gt;
+ GstCaps *caps = gst_caps_new_simple ("video/x-raw",
+ "format", G_TYPE_STRING, "I420",
+ "framerate", GST_TYPE_FRACTION, 25, 1,
+ "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
+ "width", G_TYPE_INT, 320,
+ "height", G_TYPE_INT, 240,
+ NULL);
+]|
+
+A #GstCaps is fixed when it has no properties with ranges or lists. Use
+gst_caps_is_fixed() to test for fixed caps. Fixed caps can be used in a
+caps event to notify downstream elements of the current media type.
+
+Various methods exist to work with the media types such as subtracting
+or intersecting.
+
+Be aware that the current #GstCaps / #GstStructure serialization into string
+has limited support for nested #GstCaps / #GstStructure fields. It can only
+support one level of nesting. Using more levels will lead to unexpected
+behavior when using serialization features, such as gst_caps_to_string() or
+gst_value_serialize() and their counterparts.</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">the parent type</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <constructor name="new_any" c:identifier="gst_caps_new_any">
+ <doc xml:space="preserve">Creates a new #GstCaps that indicates that it is compatible with
+any media format.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_empty" c:identifier="gst_caps_new_empty">
+ <doc xml:space="preserve">Creates a new #GstCaps that is empty. That is, the returned
+#GstCaps contains no media formats.
+The #GstCaps is guaranteed to be writable.
+Caller is responsible for unreffing the returned caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_empty_simple"
+ c:identifier="gst_caps_new_empty_simple">
+ <doc xml:space="preserve">Creates a new #GstCaps that contains one #GstStructure with name
+@media_type.
+Caller is responsible for unreffing the returned caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="media_type" transfer-ownership="none">
+ <doc xml:space="preserve">the media type of the structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_full"
+ c:identifier="gst_caps_new_full"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="struct1" transfer-ownership="none">
+ <doc xml:space="preserve">the first structure to add</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional structures to add</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_full_valist"
+ c:identifier="gst_caps_new_full_valist"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">the first structure to add</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">additional structures to add</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_simple"
+ c:identifier="gst_caps_new_simple"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="media_type" transfer-ownership="none">
+ <doc xml:space="preserve">the media type of the structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">first field to set</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="append" c:identifier="gst_caps_append">
+ <doc xml:space="preserve">Appends the structures contained in @caps2 to @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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps that will be appended to</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to append</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_structure" c:identifier="gst_caps_append_structure">
+ <doc xml:space="preserve">Appends @structure to @caps. The structure is not copied; @caps
+becomes the owner of @structure.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps that will be appended to</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStructure to append</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_structure_full"
+ c:identifier="gst_caps_append_structure_full"
+ version="1.2">
+ <doc xml:space="preserve">Appends @structure with @features to @caps. The structure is not copied; @caps
+becomes the owner of @structure.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps that will be appended to</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStructure to append</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="features"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCapsFeatures to append</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="can_intersect" c:identifier="gst_caps_can_intersect">
+ <doc xml:space="preserve">Tries intersecting @caps1 and @caps2 and reports whether the result would not
+be empty</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if intersection would be not empty</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_nth" c:identifier="gst_caps_copy_nth">
+ <doc xml:space="preserve">Creates a new #GstCaps and appends a copy of the nth structure
+contained in @caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to copy</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth structure to copy</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="filter_and_map_in_place"
+ c:identifier="gst_caps_filter_and_map_in_place"
+ version="1.6">
+ <doc xml:space="preserve">Calls the provided function once for each structure and caps feature in the
+#GstCaps. In contrast to gst_caps_foreach(), the function may modify the
+structure and features. In contrast to gst_caps_filter_and_map_in_place(),
+the structure and features are removed from the caps if %FALSE is returned
+from the function.
+The caps must be mutable.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="CapsFilterMapFunc" c:type="GstCapsFilterMapFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate" c:identifier="gst_caps_fixate">
+ <doc xml:space="preserve">Modifies the given @caps into a representation with only fixed
+values. First the caps will be truncated and then the first structure will be
+fixated with gst_structure_fixate().
+
+This function takes ownership of @caps and will call gst_caps_make_writable()
+on it so you must not use @caps afterwards unless you keep an additional
+reference to it with gst_caps_ref().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the fixated caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps to fixate</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="gst_caps_foreach" version="1.6">
+ <doc xml:space="preserve">Calls the provided function once for each structure and caps feature in the
+#GstCaps. The function must not modify the fields.
+Also see gst_caps_map_in_place() and gst_caps_filter_and_map_in_place().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the supplied function returns %TRUE for each call,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="CapsForeachFunc" c:type="GstCapsForeachFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_features"
+ c:identifier="gst_caps_get_features"
+ version="1.2">
+ <doc xml:space="preserve">Finds the features in @caps that has the index @index, and
+returns it.
+
+WARNING: This function takes a const GstCaps *, but returns a
+non-const GstCapsFeatures *. 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
+features returned in the usual way, e.g. with functions like
+gst_caps_features_add().
+
+You do not need to free or unref the structure returned, it
+belongs to the #GstCaps.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer to the #GstCapsFeatures
+ corresponding to @index</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the structure</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_size" c:identifier="gst_caps_get_size">
+ <doc xml:space="preserve">Gets the number of structures contained in @caps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of structures that @caps contains</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_structure" c:identifier="gst_caps_get_structure">
+ <doc xml:space="preserve">Finds the structure in @caps that has the index @index, and
+returns it.
+
+WARNING: This function takes a const GstCaps *, but returns a
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the #GstStructure corresponding
+ to @index</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the structure</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="intersect" c:identifier="gst_caps_intersect">
+ <doc xml:space="preserve">Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2. Defaults to %GST_CAPS_INTERSECT_ZIG_ZAG mode.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="intersect_full" c:identifier="gst_caps_intersect_full">
+ <doc xml:space="preserve">Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2, the order is defined by the #GstCapsIntersectMode
+used.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to intersect</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The intersection algorithm/mode to use</doc>
+ <type name="CapsIntersectMode" c:type="GstCapsIntersectMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_always_compatible"
+ c:identifier="gst_caps_is_always_compatible">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @caps1 is a subset of @caps2.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_any" c:identifier="gst_caps_is_any">
+ <doc xml:space="preserve">Determines if @caps represents any media format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @caps represents any format.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_empty" c:identifier="gst_caps_is_empty">
+ <doc xml:space="preserve">Determines if @caps represents no media formats.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @caps represents no formats.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal" c:identifier="gst_caps_is_equal">
+ <doc xml:space="preserve">Checks if the given caps represent the same set of caps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if both caps are equal.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">another #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_equal_fixed" c:identifier="gst_caps_is_equal_fixed">
+ <doc xml:space="preserve">Tests if two #GstCaps are equal. This function only works on fixed
+#GstCaps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the arguments represent the same format</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_fixed" c:identifier="gst_caps_is_fixed">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @caps is fixed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to test</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_strictly_equal"
+ c:identifier="gst_caps_is_strictly_equal">
+ <doc xml:space="preserve">Checks if the given caps are exactly the same set of caps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if both caps are strictly equal.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="none">
+ <doc xml:space="preserve">another #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_subset" c:identifier="gst_caps_is_subset">
+ <doc xml:space="preserve">Checks if all caps represented by @subset are also represented by @superset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @subset is a subset of @superset</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="subset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="superset" transfer-ownership="none">
+ <doc xml:space="preserve">a potentially greater #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_subset_structure"
+ c:identifier="gst_caps_is_subset_structure">
+ <doc xml:space="preserve">Checks if @structure is a subset of @caps. See gst_caps_is_subset()
+for more information.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @structure is a subset of @caps</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a potential #GstStructure subset of @caps</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_subset_structure_full"
+ c:identifier="gst_caps_is_subset_structure_full"
+ version="1.2">
+ <doc xml:space="preserve">Checks if @structure is a subset of @caps. See gst_caps_is_subset()
+for more information.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @structure is a subset of @caps</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a potential #GstStructure subset of @caps</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ <parameter name="features"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCapsFeatures for @structure</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map_in_place"
+ c:identifier="gst_caps_map_in_place"
+ version="1.6">
+ <doc xml:space="preserve">Calls the provided function once for each structure and caps feature in the
+#GstCaps. In contrast to gst_caps_foreach(), the function may modify but not
+delete the structures and features. The caps must be mutable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the supplied function returns %TRUE for each call,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="CapsMapFunc" c:type="GstCapsMapFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="merge" c:identifier="gst_caps_merge">
+ <doc xml:space="preserve">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 a writable copy of @caps1, and then @caps2 is freed.
+If either caps is ANY, the resulting caps will be ANY.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the merged caps.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps1" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps that will take the new entries</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="caps2" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to merge in</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="merge_structure" c:identifier="gst_caps_merge_structure">
+ <doc xml:space="preserve">Appends @structure to @caps if its not already expressed by @caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the merged caps.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to merge into</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStructure to merge</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="merge_structure_full"
+ c:identifier="gst_caps_merge_structure_full"
+ version="1.2">
+ <doc xml:space="preserve">Appends @structure with @features to @caps if its not already expressed by @caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the merged caps.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to merge into</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStructure to merge</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="features"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCapsFeatures to merge</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="normalize" c:identifier="gst_caps_normalize">
+ <doc xml:space="preserve">Returns a #GstCaps that represents the same set of formats as
+@caps, but contains no lists. Each list is expanded into separate
+@GstStructures.
+
+This function takes ownership of @caps and will call gst_caps_make_writable()
+on it so you must not use @caps afterwards unless you keep an additional
+reference to it with gst_caps_ref().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the normalized #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps to normalize</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_structure" c:identifier="gst_caps_remove_structure">
+ <doc xml:space="preserve">removes the structure with the given index from the list of structures
+contained in @caps.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to remove from</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">Index of the structure to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_features"
+ c:identifier="gst_caps_set_features"
+ version="1.2">
+ <doc xml:space="preserve">Sets the #GstCapsFeatures @features for the structure at @index.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the structure</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="features"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCapsFeatures to set</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_simple"
+ c:identifier="gst_caps_set_simple"
+ introspectable="0">
+ <doc xml:space="preserve">Sets fields in a #GstCaps. The arguments must be passed in the same
+manner as gst_structure_set(), and be %NULL-terminated.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to set</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">first field to set</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional parameters</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_simple_valist"
+ c:identifier="gst_caps_set_simple_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Sets fields in a #GstCaps. The arguments must be passed in the same
+manner as gst_structure_set(), and be %NULL-terminated.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to set</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">first field to set</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">additional parameters</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_value" c:identifier="gst_caps_set_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a writable caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">name of the field to set</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">value to set the field to</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="simplify" c:identifier="gst_caps_simplify">
+ <doc xml:space="preserve">Converts the given @caps 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.
+
+This function takes ownership of @caps and will call gst_caps_make_writable()
+on it if necessary, so you must not use @caps afterwards unless you keep an
+additional reference to it with gst_caps_ref().
+
+This method does not preserve the original order of @caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The simplified caps.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps to simplify</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="steal_structure" c:identifier="gst_caps_steal_structure">
+ <doc xml:space="preserve">Retrieves the structure with the given index from the list of structures
+contained in @caps. The caller becomes the owner of the returned structure.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a pointer to the #GstStructure
+ corresponding to @index.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to retrieve from</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">Index of the structure to retrieve</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="subtract" c:identifier="gst_caps_subtract">
+ <doc xml:space="preserve">Subtracts the @subtrahend from the @minuend.
+&gt; This function does not work reliably if optional properties for caps
+&gt; are included on one caps and omitted on the other.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the resulting caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="minuend" transfer-ownership="none">
+ <doc xml:space="preserve">#GstCaps to subtract from</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ <parameter name="subtrahend" transfer-ownership="none">
+ <doc xml:space="preserve">#GstCaps to subtract</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string" c:identifier="gst_caps_to_string">
+ <doc xml:space="preserve">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:
+|[&lt;!-- language="C" --&gt;
+GST_LOG ("caps are %" GST_PTR_FORMAT, caps);
+]|
+This prints the caps in human readable form.
+
+The current implementation of serialization will lead to unexpected results
+when there are nested #GstCaps / #GstStructure deeper than one level.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string representing @caps.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="truncate" c:identifier="gst_caps_truncate">
+ <doc xml:space="preserve">Discard all but the first structure from @caps. Useful when
+fixating.
+
+This function takes ownership of @caps and will call gst_caps_make_writable()
+on it if necessary, so you must not use @caps afterwards unless you keep an
+additional reference to it with gst_caps_ref().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">truncated caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to truncate</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="from_string" c:identifier="gst_caps_from_string">
+ <doc xml:space="preserve">Converts @caps from a string representation.
+
+The current implementation of serialization will lead to unexpected results
+when there are nested #GstCaps / #GstStructure deeper than one level.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string to convert to #GstCaps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="CapsFeatures"
+ c:type="GstCapsFeatures"
+ glib:type-name="GstCapsFeatures"
+ glib:get-type="gst_caps_features_get_type"
+ c:symbol-prefix="caps_features">
+ <doc xml:space="preserve">#GstCapsFeatures can optionally be set on a #GstCaps to add requirements
+for additional features for a specific #GstStructure. Caps structures with
+the same name but with a non-equal set of caps features are not compatible.
+If a pad supports multiple sets of features it has to add multiple equal
+structures with different feature sets to the caps.
+
+Empty #GstCapsFeatures are equivalent with the #GstCapsFeatures that only
+contain #GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY. ANY #GstCapsFeatures as
+created by gst_caps_features_new_any() are equal to any other #GstCapsFeatures
+and can be used to specify that any #GstCapsFeatures would be supported, e.g.
+for elements that don't touch buffer memory. #GstCaps with ANY #GstCapsFeatures
+are considered non-fixed and during negotiation some #GstCapsFeatures have
+to be selected.
+
+Examples for caps features would be the requirement of a specific #GstMemory
+types or the requirement of having a specific #GstMeta on the buffer. Features
+are given as a string of the format "memory:GstMemoryTypeName" or
+"meta:GstMetaAPIName".</doc>
+ <constructor name="new"
+ c:identifier="gst_caps_features_new"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstCapsFeatures with the given features.
+The last argument must be %NULL.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature1" transfer-ownership="none">
+ <doc xml:space="preserve">name of first feature to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional features</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_any"
+ c:identifier="gst_caps_features_new_any"
+ version="1.2">
+ <doc xml:space="preserve">Creates a new, ANY #GstCapsFeatures. This will be equal
+to any other #GstCapsFeatures but caps with these are
+unfixed.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, ANY #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_empty"
+ c:identifier="gst_caps_features_new_empty"
+ version="1.2">
+ <doc xml:space="preserve">Creates a new, empty #GstCapsFeatures.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_id"
+ c:identifier="gst_caps_features_new_id"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstCapsFeatures with the given features.
+The last argument must be 0.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature1" transfer-ownership="none">
+ <doc xml:space="preserve">name of first feature to set</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional features</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_id_valist"
+ c:identifier="gst_caps_features_new_id_valist"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstCapsFeatures with the given features.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature1" transfer-ownership="none">
+ <doc xml:space="preserve">name of first feature to set</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">variable argument list</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_valist"
+ c:identifier="gst_caps_features_new_valist"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstCapsFeatures with the given features.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature1" transfer-ownership="none">
+ <doc xml:space="preserve">name of first feature to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">variable argument list</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add" c:identifier="gst_caps_features_add" version="1.2">
+ <doc xml:space="preserve">Adds @feature to @features.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_id"
+ c:identifier="gst_caps_features_add_id"
+ version="1.2">
+ <doc xml:space="preserve">Adds @feature to @features.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="contains"
+ c:identifier="gst_caps_features_contains"
+ version="1.2">
+ <doc xml:space="preserve">Check if @features contains @feature.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @features contains @feature.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="contains_id"
+ c:identifier="gst_caps_features_contains_id"
+ version="1.2">
+ <doc xml:space="preserve">Check if @features contains @feature.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @features contains @feature.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_caps_features_copy" version="1.2">
+ <doc xml:space="preserve">Duplicates a #GstCapsFeatures and all its values.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures to duplicate</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_caps_features_free" version="1.2">
+ <doc xml:space="preserve">Frees a #GstCapsFeatures and all its values. The caps features must not
+have a parent when this function is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCapsFeatures to free</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_nth"
+ c:identifier="gst_caps_features_get_nth"
+ version="1.2">
+ <doc xml:space="preserve">Returns the @i-th feature of @features.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The @i-th feature of @features.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="i" transfer-ownership="none">
+ <doc xml:space="preserve">index of the feature</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_nth_id"
+ c:identifier="gst_caps_features_get_nth_id"
+ version="1.2">
+ <doc xml:space="preserve">Returns the @i-th feature of @features.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @i-th feature of @features.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="i" transfer-ownership="none">
+ <doc xml:space="preserve">index of the feature</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_size"
+ c:identifier="gst_caps_features_get_size"
+ version="1.2">
+ <doc xml:space="preserve">Returns the number of features in @features.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of features in @features.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_any"
+ c:identifier="gst_caps_features_is_any"
+ version="1.2">
+ <doc xml:space="preserve">Check if @features is %GST_CAPS_FEATURES_ANY.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @features is %GST_CAPS_FEATURES_ANY.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal"
+ c:identifier="gst_caps_features_is_equal"
+ version="1.2">
+ <doc xml:space="preserve">Check if @features1 and @features2 are equal.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @features1 and @features2 are equal.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="features2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove"
+ c:identifier="gst_caps_features_remove"
+ version="1.2">
+ <doc xml:space="preserve">Removes @feature from @features.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_id"
+ c:identifier="gst_caps_features_remove_id"
+ version="1.2">
+ <doc xml:space="preserve">Removes @feature from @features.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_parent_refcount"
+ c:identifier="gst_caps_features_set_parent_refcount"
+ version="1.2">
+ <doc xml:space="preserve">Sets the parent_refcount field of #GstCapsFeatures. This field is used to
+determine whether a caps features is mutable or not. This function should only be
+called by code implementing parent objects of #GstCapsFeatures, as described in
+the MT Refcounting section of the design documents.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the parent refcount could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </instance-parameter>
+ <parameter name="refcount" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the parent's refcount</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string"
+ c:identifier="gst_caps_features_to_string"
+ version="1.2">
+ <doc xml:space="preserve">Converts @features to a human-readable string representation.
+
+For debugging purposes its easier to do something like this:
+|[&lt;!-- language="C" --&gt;
+GST_LOG ("features is %" GST_PTR_FORMAT, features);
+]|
+This prints the features in human readable form.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to string allocated by g_malloc().
+ g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="from_string"
+ c:identifier="gst_caps_features_from_string"
+ version="1.2">
+ <doc xml:space="preserve">Creates a #GstCapsFeatures from a string representation.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstCapsFeatures or
+ %NULL when the string could not be parsed. Free with
+ gst_caps_features_free() after use.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of a #GstCapsFeatures.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <callback name="CapsFilterMapFunc" c:type="GstCapsFilterMapFunc">
+ <doc xml:space="preserve">A function that will be called in gst_caps_filter_and_map_in_place().
+The function may modify @features and @structure, and both will be
+removed from the caps if %FALSE is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the features and structure should be preserved,
+%FALSE if it should be removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="CapsFlags"
+ glib:type-name="GstCapsFlags"
+ glib:get-type="gst_caps_flags_get_type"
+ c:type="GstCapsFlags">
+ <doc xml:space="preserve">Extra flags for a caps.</doc>
+ <member name="any"
+ value="16"
+ c:identifier="GST_CAPS_FLAG_ANY"
+ glib:nick="any">
+ <doc xml:space="preserve">Caps has no specific content, but can contain
+ anything.</doc>
+ </member>
+ </bitfield>
+ <callback name="CapsForeachFunc" c:type="GstCapsForeachFunc" version="1.6">
+ <doc xml:space="preserve">A function that will be called in gst_caps_foreach(). The function may
+not modify @features or @structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the foreach operation should continue, %FALSE if
+the foreach operation should stop with %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="CapsIntersectMode"
+ glib:type-name="GstCapsIntersectMode"
+ glib:get-type="gst_caps_intersect_mode_get_type"
+ c:type="GstCapsIntersectMode">
+ <doc xml:space="preserve">Modes of caps intersection
+
+@GST_CAPS_INTERSECT_ZIG_ZAG tries to preserve overall order of both caps
+by iterating on the caps' structures as the following matrix shows:
+|[
+ caps1
+ +-------------
+ | 1 2 4 7
+caps2 | 3 5 8 10
+ | 6 9 11 12
+]|
+Used when there is no explicit precedence of one caps over the other. e.g.
+tee's sink pad getcaps function, it will probe its src pad peers' for their
+caps and intersect them with this mode.
+
+@GST_CAPS_INTERSECT_FIRST is useful when an element wants to preserve
+another element's caps priority order when intersecting with its own caps.
+Example: If caps1 is [A, B, C] and caps2 is [E, B, D, A], the result
+would be [A, B], maintaining the first caps priority on the intersection.</doc>
+ <member name="zig_zag"
+ value="0"
+ c:identifier="GST_CAPS_INTERSECT_ZIG_ZAG"
+ glib:nick="zig-zag">
+ <doc xml:space="preserve">Zig-zags over both caps.</doc>
+ </member>
+ <member name="first"
+ value="1"
+ c:identifier="GST_CAPS_INTERSECT_FIRST"
+ glib:nick="first">
+ <doc xml:space="preserve">Keeps the first caps order.</doc>
+ </member>
+ </enumeration>
+ <callback name="CapsMapFunc" c:type="GstCapsMapFunc">
+ <doc xml:space="preserve">A function that will be called in gst_caps_map_in_place(). The function
+may modify @features and @structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the map operation should continue, %FALSE if
+the map operation should stop with %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCapsFeatures</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <interface name="ChildProxy"
+ c:symbol-prefix="child_proxy"
+ c:type="GstChildProxy"
+ glib:type-name="GstChildProxy"
+ glib:get-type="gst_child_proxy_get_type"
+ glib:type-struct="ChildProxyInterface">
+ <doc xml:space="preserve">This interface abstracts handling of property sets for elements with
+children. Imagine elements such as mixers or polyphonic generators. They all
+have multiple #GstPad or some kind of voice objects. Another use case are
+container elements like #GstBin.
+The element implementing the interface acts as a parent for those child
+objects.
+
+By implementing this interface the child properties can be accessed from the
+parent element by using gst_child_proxy_get() and gst_child_proxy_set().
+
+Property names are written as "child-name::property-name". The whole naming
+scheme is recursive. Thus "child1::child2::property" is valid too, if
+"child1" and "child2" implement the #GstChildProxy interface.</doc>
+ <virtual-method name="child_added" invoker="child_added">
+ <doc xml:space="preserve">Emits the "child-added" signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the newly added child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the new child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="child_removed" invoker="child_removed">
+ <doc xml:space="preserve">Emits the "child-removed" signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the removed child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the old child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_child_by_index" invoker="get_child_by_index">
+ <doc xml:space="preserve">Fetches a child by its number.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found (index too high). Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the child's position in the child list</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_child_by_name" invoker="get_child_by_name">
+ <doc xml:space="preserve">Looks up a child element by the given name.
+
+This virtual method has a default implementation that uses #GstObject
+together with gst_object_get_name(). If the interface is to be used with
+#GObjects, this methods needs to be overridden.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found. Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the child's name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_children_count" invoker="get_children_count">
+ <doc xml:space="preserve">Gets the number of child objects this parent contains.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of child objects
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="child_added" c:identifier="gst_child_proxy_child_added">
+ <doc xml:space="preserve">Emits the "child-added" signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the newly added child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the new child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="child_removed"
+ c:identifier="gst_child_proxy_child_removed">
+ <doc xml:space="preserve">Emits the "child-removed" signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the removed child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the old child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get" c:identifier="gst_child_proxy_get" introspectable="0">
+ <doc xml:space="preserve">Gets properties of the parent object and its children.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">return location for the first property, followed optionally by more name/return location pairs, followed by %NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_by_index"
+ c:identifier="gst_child_proxy_get_child_by_index">
+ <doc xml:space="preserve">Fetches a child by its number.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found (index too high). Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the child's position in the child list</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_child_by_name"
+ c:identifier="gst_child_proxy_get_child_by_name">
+ <doc xml:space="preserve">Looks up a child element by the given name.
+
+This virtual method has a default implementation that uses #GstObject
+together with gst_object_get_name(). If the interface is to be used with
+#GObjects, this methods needs to be overridden.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found. Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the child's name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_children_count"
+ c:identifier="gst_child_proxy_get_children_count">
+ <doc xml:space="preserve">Gets the number of child objects this parent contains.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of child objects
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_property" c:identifier="gst_child_proxy_get_property">
+ <doc xml:space="preserve">Gets a single property using the GstChildProxy mechanism.
+You are responsible for freeing it by calling g_value_unset()</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">object to query</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue that should take the result.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_valist"
+ c:identifier="gst_child_proxy_get_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Gets properties of the parent object and its children.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object to query</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the first property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">return location for the first property, followed optionally by more name/return location pairs, followed by %NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="lookup" c:identifier="gst_child_proxy_lookup">
+ <doc xml:space="preserve">Looks up which object and #GParamSpec would be effected by the given @name.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @target and @pspec could be found. %FALSE otherwise. In that
+case the values for @pspec and @target are not modified. Unref @target after
+usage. For plain GObjects @target is the same as @object.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">child proxy object to lookup the property in</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to look up</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="target"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a #GObject that
+ takes the real object to set property on</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ <parameter name="pspec"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to take the #GParamSpec
+ describing the property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_child_proxy_set" introspectable="0">
+ <doc xml:space="preserve">Sets properties of the parent object and its children.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more name/value pairs, followed by %NULL</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_property" c:identifier="gst_child_proxy_set_property">
+ <doc xml:space="preserve">Sets a single property using the GstChildProxy mechanism.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">new #GValue for the property</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valist"
+ c:identifier="gst_child_proxy_set_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Sets properties of the parent object and its children.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </instance-parameter>
+ <parameter name="first_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the first property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">value for the first property, followed optionally by more name/value pairs, followed by %NULL</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <glib:signal name="child-added" when="first">
+ <doc xml:space="preserve">Will be emitted after the @object was added to the @child_proxy.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GObject that was added</doc>
+ <type name="GObject.Object"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the new child</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="child-removed" when="first">
+ <doc xml:space="preserve">Will be emitted after the @object was removed from the @child_proxy.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GObject that was removed</doc>
+ <type name="GObject.Object"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the old child</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </interface>
+ <record name="ChildProxyInterface"
+ c:type="GstChildProxyInterface"
+ glib:is-gtype-struct-for="ChildProxy">
+ <doc xml:space="preserve">#GstChildProxy interface.</doc>
+ <field name="parent">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="get_child_by_name">
+ <callback name="get_child_by_name">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found. Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the child's name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_child_by_index">
+ <callback name="get_child_by_index">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the child object or %NULL if
+ not found (index too high). Unref after usage.
+
+MT safe.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object to get the child from</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the child's position in the child list</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_children_count">
+ <callback name="get_children_count">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of child objects
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="child_added">
+ <callback name="child_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the newly added child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the new child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="child_removed">
+ <callback name="child_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent object</doc>
+ <type name="ChildProxy" c:type="GstChildProxy*"/>
+ </parameter>
+ <parameter name="child" transfer-ownership="none">
+ <doc xml:space="preserve">the removed child</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the old child</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="Clock"
+ c:symbol-prefix="clock"
+ c:type="GstClock"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstClock"
+ glib:get-type="gst_clock_get_type"
+ glib:type-struct="ClockClass">
+ <doc xml:space="preserve">GStreamer uses a global clock to synchronize the plugins in a pipeline.
+Different clock implementations are possible by implementing this abstract
+base class or, more conveniently, by subclassing #GstSystemClock.
+
+The #GstClock returns a monotonically increasing time with the method
+gst_clock_get_time(). Its accuracy and base time depend on the specific
+clock implementation but time is always expressed in nanoseconds. Since the
+baseline of the clock is undefined, the clock time returned is not
+meaningful in itself, what matters are the deltas between two clock times.
+The time returned by a clock is called the absolute time.
+
+The pipeline uses the clock to calculate the running time. Usually all
+renderers synchronize to the global clock using the buffer timestamps, the
+newsegment events and the element's base time, see #GstPipeline.
+
+A clock implementation can support periodic and single shot clock
+notifications both synchronous and asynchronous.
+
+One first needs to create a #GstClockID for the periodic or single shot
+notification using gst_clock_new_single_shot_id() or
+gst_clock_new_periodic_id().
+
+To perform a blocking wait for the specific time of the #GstClockID use the
+gst_clock_id_wait(). To receive a callback when the specific time is reached
+in the clock use gst_clock_id_wait_async(). Both these calls can be
+interrupted with the gst_clock_id_unschedule() call. If the blocking wait is
+unscheduled a return value of #GST_CLOCK_UNSCHEDULED is returned.
+
+Periodic callbacks scheduled async will be repeatedly called automatically
+until it is unscheduled. To schedule a sync periodic callback,
+gst_clock_id_wait() should be called repeatedly.
+
+The async callbacks can happen from any thread, either provided by the core
+or from a streaming thread. The application should be prepared for this.
+
+A #GstClockID that has been unscheduled cannot be used again for any wait
+operation, a new #GstClockID should be created and the old unscheduled one
+should be destroyed with gst_clock_id_unref().
+
+It is possible to perform a blocking wait on the same #GstClockID from
+multiple threads. However, registering the same #GstClockID for multiple
+async notifications is not possible, the callback will only be called for
+the thread registering the entry last.
+
+None of the wait operations unref the #GstClockID, the owner is responsible
+for unreffing the ids itself. This holds for both periodic and single shot
+notifications. The reason being that the owner of the #GstClockID has to
+keep a handle to the #GstClockID to unblock the wait on FLUSHING events or
+state changes and if the entry would be unreffed automatically, the handle
+might become invalid without any notification.
+
+These clock operations do not operate on the running time, so the callbacks
+will also occur when not in PLAYING state as if the clock just keeps on
+running. Some clocks however do not progress when the element that provided
+the clock is not PLAYING.
+
+When a clock has the #GST_CLOCK_FLAG_CAN_SET_MASTER flag set, it can be
+slaved to another #GstClock with the gst_clock_set_master(). The clock will
+then automatically be synchronized to this master clock by repeatedly
+sampling the master clock and the slave clock and recalibrating the slave
+clock with gst_clock_set_calibration(). This feature is mostly useful for
+plugins that have an internal clock but must operate with another clock
+selected by the #GstPipeline. They can track the offset and rate difference
+of their internal clock relative to the master clock by using the
+gst_clock_get_calibration() function.
+
+The master/slave synchronisation can be tuned with the #GstClock:timeout,
+#GstClock:window-size and #GstClock:window-threshold properties.
+The #GstClock:timeout property defines the interval to sample the master
+clock and run the calibration functions. #GstClock:window-size defines the
+number of samples to use when calibrating and #GstClock:window-threshold
+defines the minimum number of samples before the calibration is performed.</doc>
+ <function name="id_compare_func"
+ c:identifier="gst_clock_id_compare_func">
+ <doc xml:space="preserve">Compares the two #GstClockID instances. This function can be used
+as a GCompareFunc when sorting ids.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">negative value if a &lt; b; zero if a = b; positive value if a &gt; b
+
+MT safe.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="id1"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstClockID</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ <parameter name="id2"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstClockID to compare with</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_get_time" c:identifier="gst_clock_id_get_time">
+ <doc xml:space="preserve">Get the time of the clock ID</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the time of the given clock id.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID to query</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_ref" c:identifier="gst_clock_id_ref">
+ <doc xml:space="preserve">Increase the refcount of given @id.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The same #GstClockID with increased refcount.
+
+MT safe.</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID to ref</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_unref" c:identifier="gst_clock_id_unref">
+ <doc xml:space="preserve">Unref given @id. When the refcount reaches 0 the
+#GstClockID will be freed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="full">
+ <doc xml:space="preserve">The #GstClockID to unref</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_unschedule" c:identifier="gst_clock_id_unschedule">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The id to unschedule</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_wait" c:identifier="gst_clock_id_wait">
+ <doc xml:space="preserve">Perform a blocking wait on @id.
+@id should have been created with gst_clock_new_single_shot_id()
+or gst_clock_new_periodic_id() and should not have been unscheduled
+with a call to gst_clock_id_unschedule().
+
+If the @jitter argument is not %NULL and this function returns #GST_CLOCK_OK
+or #GST_CLOCK_EARLY, it will contain the difference
+against the clock and the time of @id when this method was
+called.
+Positive values indicate how late @id was relative to the clock
+(in which case this function will return #GST_CLOCK_EARLY).
+Negative values indicate how much time was spent waiting on the clock
+before this function returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the blocking wait. #GST_CLOCK_EARLY will be returned
+if the current clock time is past the time of @id, #GST_CLOCK_OK if
+@id was scheduled in time. #GST_CLOCK_UNSCHEDULED if @id was
+unscheduled with gst_clock_id_unschedule().
+
+MT safe.</doc>
+ <type name="ClockReturn" c:type="GstClockReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID to wait on</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ <parameter name="jitter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer that will contain the jitter,
+ can be %NULL.</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="id_wait_async" c:identifier="gst_clock_id_wait_async">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the non blocking wait.
+
+MT safe.</doc>
+ <type name="ClockReturn" c:type="GstClockReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockID to wait on</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2"
+ destroy="3">
+ <doc xml:space="preserve">The callback function</doc>
+ <type name="ClockCallback" c:type="GstClockCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">User data passed in the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_data"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">#GDestroyNotify for user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="change_resolution">
+ <return-value transfer-ownership="none">
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-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>
+ </virtual-method>
+ <virtual-method name="get_internal_time" invoker="get_internal_time">
+ <doc xml:space="preserve">Gets the current internal time of the given clock. The time is returned
+unadjusted for the offset and the rate.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when
+given invalid input.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to query</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_resolution" invoker="get_resolution">
+ <doc xml:space="preserve">Get the accuracy of the clock. The accuracy of the clock is the granularity
+of the values returned by gst_clock_get_time().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the resolution of the clock in units of #GstClockTime.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unschedule">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="entry" transfer-ownership="none">
+ <type name="ClockEntry" c:type="GstClockEntry*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="wait">
+ <return-value transfer-ownership="none">
+ <type name="ClockReturn" c:type="GstClockReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-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>
+ </virtual-method>
+ <virtual-method name="wait_async">
+ <return-value transfer-ownership="none">
+ <type name="ClockReturn" c:type="GstClockReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="entry" transfer-ownership="none">
+ <type name="ClockEntry" c:type="GstClockEntry*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_observation" c:identifier="gst_clock_add_observation">
+ <doc xml:space="preserve">The time @master of the master clock and the time @slave of the slave
+clock are added to the list of observations. If enough observations
+are available, a linear regression algorithm is run on the
+observations and @clock is recalibrated.
+
+If this functions returns %TRUE, @r_squared will contain the
+correlation coefficient of the interpolation. A value of 1.0
+means a perfect regression was performed. This value can
+be used to control the sampling frequency of the master and slave
+clocks.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if enough observations were added to run the
+regression algorithm.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="slave" transfer-ownership="none">
+ <doc xml:space="preserve">a time on the slave</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="master" transfer-ownership="none">
+ <doc xml:space="preserve">a time on the master</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="r_squared"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to hold the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_observation_unapplied"
+ c:identifier="gst_clock_add_observation_unapplied"
+ version="1.6">
+ <doc xml:space="preserve">Add a clock observation to the internal slaving algorithm the same as
+gst_clock_add_observation(), and return the result of the master clock
+estimation, without updating the internal calibration.
+
+The caller can then take the results and call gst_clock_set_calibration()
+with the values, or some modified version of them.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="slave" transfer-ownership="none">
+ <doc xml:space="preserve">a time on the slave</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="master" transfer-ownership="none">
+ <doc xml:space="preserve">a time on the master</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="r_squared"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to hold the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="internal"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="external"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the external time</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="rate_num"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the rate numerator</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="rate_denom"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the rate denominator</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
+ <doc xml:space="preserve">Converts the given @internal clock time to the external time, adjusting for the
+rate and reference time set with gst_clock_set_calibration() and making sure
+that the returned time is increasing. This function should be called with the
+clock's OBJECT_LOCK held and is mainly used by clock subclasses.
+
+This function is the reverse of gst_clock_unadjust_unlocked().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the converted time of the clock.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to use</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="internal" transfer-ownership="none">
+ <doc xml:space="preserve">a clock time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="adjust_with_calibration"
+ c:identifier="gst_clock_adjust_with_calibration"
+ version="1.6">
+ <doc xml:space="preserve">Converts the given @internal_target clock time to the external time,
+using the passed calibration parameters. This function performs the
+same calculation as gst_clock_adjust_unlocked() when called using the
+current calibration parameters, but doesn't ensure a monotonically
+increasing result as gst_clock_adjust_unlocked() does.
+
+Note: The @clock parameter is unused and can be NULL</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the converted time of the clock.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstClock to use</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="internal_target" transfer-ownership="none">
+ <doc xml:space="preserve">a clock time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cinternal" transfer-ownership="none">
+ <doc xml:space="preserve">a reference internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cexternal" transfer-ownership="none">
+ <doc xml:space="preserve">a reference external time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cnum" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the rate of the clock relative to its
+ internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cdenom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the rate of the clock</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_calibration" c:identifier="gst_clock_get_calibration">
+ <doc xml:space="preserve">Gets the internal rate and reference time of @clock. See
+gst_clock_set_calibration() for more information.
+
+@internal, @external, @rate_num, and @rate_denom can be left %NULL if the
+caller is not interested in the values.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="internal"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="external"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the external time</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="rate_num"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the rate numerator</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="rate_denom"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location to store the rate denominator</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_internal_time"
+ c:identifier="gst_clock_get_internal_time">
+ <doc xml:space="preserve">Gets the current internal time of the given clock. The time is returned
+unadjusted for the offset and the rate.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when
+given invalid input.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to query</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_master" c:identifier="gst_clock_get_master">
+ <doc xml:space="preserve">Get the master clock that @clock is slaved to or %NULL when the clock is
+not slaved to any master clock.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a master #GstClock or %NULL
+ when this clock is not slaved to a master clock. Unref after
+ usage.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_resolution" c:identifier="gst_clock_get_resolution">
+ <doc xml:space="preserve">Get the accuracy of the clock. The accuracy of the clock is the granularity
+of the values returned by gst_clock_get_time().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the resolution of the clock in units of #GstClockTime.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_time" c:identifier="gst_clock_get_time">
+ <doc xml:space="preserve">Gets the current time of the given clock. The time is always
+monotonically increasing and adjusted according to the current
+offset and rate.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the time of the clock. Or GST_CLOCK_TIME_NONE when
+given invalid input.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to query</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timeout" c:identifier="gst_clock_get_timeout">
+ <doc xml:space="preserve">Get the amount of time that master and slave clocks are sampled.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the interval between samples.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_synced"
+ c:identifier="gst_clock_is_synced"
+ version="1.6">
+ <doc xml:space="preserve">Checks if the clock is currently synced.
+
+This returns if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC is not set on the clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the clock is currently synced</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
+ <doc xml:space="preserve">Get an ID from @clock to trigger a periodic notification.
+The periodic notifications will start at time @start_time and
+will then be fired with the given @interval. @id should be unreffed
+after usage.
+
+Free-function: gst_clock_id_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstClockID that can be used to request the
+ time notification.
+
+MT safe.</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID to get a periodic notification id from</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="start_time" transfer-ownership="none">
+ <doc xml:space="preserve">the requested start time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the requested interval</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="new_single_shot_id"
+ c:identifier="gst_clock_new_single_shot_id">
+ <doc xml:space="preserve">Get a #GstClockID from @clock to trigger a single shot
+notification at the requested time. The single shot id should be
+unreffed after usage.
+
+Free-function: gst_clock_id_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstClockID that can be used to request the
+ time notification.
+
+MT safe.</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID to get a single shot notification from</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">the requested time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="periodic_id_reinit"
+ c:identifier="gst_clock_periodic_id_reinit">
+ <doc xml:space="preserve">Reinitializes the provided periodic @id to the provided start time and
+interval. Does not modify the reference count.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the GstClockID could be reinitialized to the provided
+@time, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockID</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ <parameter name="start_time" transfer-ownership="none">
+ <doc xml:space="preserve">the requested start time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the requested interval</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_calibration" c:identifier="gst_clock_set_calibration">
+ <doc xml:space="preserve">Adjusts the rate and time of @clock. A rate of 1/1 is the normal speed of
+the clock. Values bigger than 1/1 make the clock go faster.
+
+@internal and @external are calibration parameters that arrange that
+gst_clock_get_time() should have been @external at internal time @internal.
+This internal time should not be in the future; that is, it should be less
+than the value of gst_clock_get_internal_time() when this function is called.
+
+Subsequent calls to gst_clock_get_time() will return clock times computed as
+follows:
+
+|[
+ time = (internal_time - internal) * rate_num / rate_denom + external
+]|
+
+This formula is implemented in gst_clock_adjust_unlocked(). Of course, it
+tries to do the integer arithmetic as precisely as possible.
+
+Note that gst_clock_get_time() always returns increasing values so when you
+move the clock backwards, gst_clock_get_time() will report the previous value
+until the clock catches up.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to calibrate</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="internal" transfer-ownership="none">
+ <doc xml:space="preserve">a reference internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="external" transfer-ownership="none">
+ <doc xml:space="preserve">a reference external time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="rate_num" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the rate of the clock relative to its
+ internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="rate_denom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the rate of the clock</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_master" c:identifier="gst_clock_set_master">
+ <doc xml:space="preserve">Set @master as the master clock for @clock. @clock will be automatically
+calibrated so that gst_clock_get_time() reports the same time as the
+master clock.
+
+A clock provider that slaves its clock to a master can get the current
+calibration values with gst_clock_get_calibration().
+
+@master can be %NULL in which case @clock will not be slaved anymore. It will
+however keep reporting its time adjusted with the last configured rate
+and time offsets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the clock is capable of being slaved to a master clock.
+Trying to set a master on a clock without the
+#GST_CLOCK_FLAG_CAN_SET_MASTER flag will make this function return %FALSE.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="master"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a master #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_resolution" c:identifier="gst_clock_set_resolution">
+ <doc xml:space="preserve">Set the accuracy of the clock. Some clocks have the possibility to operate
+with different accuracy at the expense of more resource usage. There is
+normally no need to change the default resolution of a clock. The resolution
+of a clock can only be changed if the clock has the
+#GST_CLOCK_FLAG_CAN_SET_RESOLUTION flag set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the new resolution of the clock.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="resolution" transfer-ownership="none">
+ <doc xml:space="preserve">The resolution to set</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_synced"
+ c:identifier="gst_clock_set_synced"
+ version="1.6">
+ <doc xml:space="preserve">Sets @clock to synced and emits the GstClock::synced signal, and wakes up any
+thread waiting in gst_clock_wait_for_sync().
+
+This function must only be called if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+is set on the clock, and is intended to be called by subclasses only.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="synced" transfer-ownership="none">
+ <doc xml:space="preserve">if the clock is synced</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timeout" c:identifier="gst_clock_set_timeout">
+ <doc xml:space="preserve">Set the amount of time, in nanoseconds, to sample master and slave
+clocks</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="single_shot_id_reinit"
+ c:identifier="gst_clock_single_shot_id_reinit">
+ <doc xml:space="preserve">Reinitializes the provided single shot @id to the provided time. Does not
+modify the reference count.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the GstClockID could be reinitialized to the provided
+@time, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockID</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">The requested time.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unadjust_unlocked"
+ c:identifier="gst_clock_unadjust_unlocked">
+ <doc xml:space="preserve">Converts the given @external clock time to the internal time of @clock,
+using the rate and reference time set with gst_clock_set_calibration().
+This function should be called with the clock's OBJECT_LOCK held and
+is mainly used by clock subclasses.
+
+This function is the reverse of gst_clock_adjust_unlocked().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the internal time of the clock corresponding to @external.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to use</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="external" transfer-ownership="none">
+ <doc xml:space="preserve">an external clock time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unadjust_with_calibration"
+ c:identifier="gst_clock_unadjust_with_calibration"
+ version="1.8">
+ <doc xml:space="preserve">Converts the given @external_target clock time to the internal time,
+using the passed calibration parameters. This function performs the
+same calculation as gst_clock_unadjust_unlocked() when called using the
+current calibration parameters.
+
+Note: The @clock parameter is unused and can be NULL</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the converted time of the clock.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstClock to use</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="external_target" transfer-ownership="none">
+ <doc xml:space="preserve">a clock time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cinternal" transfer-ownership="none">
+ <doc xml:space="preserve">a reference internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cexternal" transfer-ownership="none">
+ <doc xml:space="preserve">a reference external time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cnum" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the rate of the clock relative to its
+ internal time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="cdenom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the rate of the clock</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait_for_sync"
+ c:identifier="gst_clock_wait_for_sync"
+ version="1.6">
+ <doc xml:space="preserve">Waits until @clock is synced for reporting the current time. If @timeout
+is %GST_CLOCK_TIME_NONE it will wait forever, otherwise it will time out
+after @timeout nanoseconds.
+
+For asynchronous waiting, the GstClock::synced signal can be used.
+
+This returns immediately with TRUE if GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC
+is not set on the clock, or if the clock is already synced.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if waiting was successful, or %FALSE on timeout</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">timeout for waiting or %GST_CLOCK_TIME_NONE</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="timeout" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="window-size" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="window-threshold" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="ClockPrivate" c:type="GstClockPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="synced" when="last" version="1.6">
+ <doc xml:space="preserve">Signaled on clocks with GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC set once
+the clock is synchronized, or when it completely lost synchronization.
+This signal will not be emitted on clocks without the flag.
+
+This signal will be emitted from an arbitrary thread, most likely not
+the application's main thread.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="synced" transfer-ownership="none">
+ <doc xml:space="preserve">if the clock is synced now</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <callback name="ClockCallback" c:type="GstClockCallback">
+ <doc xml:space="preserve">The function prototype of the callback.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE or %FALSE (currently unused)</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">The clock that triggered the callback</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">The time it was triggered</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstClockID that expired</doc>
+ <type name="ClockID" c:type="GstClockID"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <doc xml:space="preserve">user data passed in the gst_clock_id_wait_async() function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="ClockClass"
+ c:type="GstClockClass"
+ glib:is-gtype-struct-for="Clock">
+ <doc xml:space="preserve">GStreamer clock class. Override the vmethods to implement the clock
+functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="change_resolution">
+ <callback name="change_resolution">
+ <return-value transfer-ownership="none">
+ <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">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the resolution of the clock in units of #GstClockTime.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_internal_time">
+ <callback name="get_internal_time">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when
+given invalid input.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to query</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="wait">
+ <callback name="wait">
+ <return-value transfer-ownership="none">
+ <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="wait_async">
+ <callback name="wait_async">
+ <return-value transfer-ownership="none">
+ <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">
+ <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="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ClockEntry" c:type="GstClockEntry">
+ <doc xml:space="preserve">All pending timeouts or periodic notifies are converted into
+an entry.
+Note that GstClockEntry should be treated as an opaque structure. It must
+not be extended or allocated using a custom allocator.</doc>
+ <field name="refcount" writable="1">
+ <doc xml:space="preserve">reference counter (read-only)</doc>
+ <type name="gint" 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="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="destroy_data" writable="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="unscheduled" writable="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="woken_up" writable="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="ClockEntryType"
+ glib:type-name="GstClockEntryType"
+ glib:get-type="gst_clock_entry_type_get_type"
+ c:type="GstClockEntryType">
+ <doc xml:space="preserve">The type of the clock entry</doc>
+ <member name="single"
+ value="0"
+ c:identifier="GST_CLOCK_ENTRY_SINGLE"
+ glib:nick="single">
+ <doc xml:space="preserve">a single shot timeout</doc>
+ </member>
+ <member name="periodic"
+ value="1"
+ c:identifier="GST_CLOCK_ENTRY_PERIODIC"
+ glib:nick="periodic">
+ <doc xml:space="preserve">a periodic timeout request</doc>
+ </member>
+ </enumeration>
+ <bitfield name="ClockFlags"
+ glib:type-name="GstClockFlags"
+ glib:get-type="gst_clock_flags_get_type"
+ c:type="GstClockFlags">
+ <doc xml:space="preserve">The capabilities of this clock</doc>
+ <member name="can_do_single_sync"
+ value="16"
+ c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"
+ glib:nick="can-do-single-sync">
+ <doc xml:space="preserve">clock can do a single sync timeout request</doc>
+ </member>
+ <member name="can_do_single_async"
+ value="32"
+ c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"
+ glib:nick="can-do-single-async">
+ <doc xml:space="preserve">clock can do a single async timeout request</doc>
+ </member>
+ <member name="can_do_periodic_sync"
+ value="64"
+ c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"
+ glib:nick="can-do-periodic-sync">
+ <doc xml:space="preserve">clock can do sync periodic timeout requests</doc>
+ </member>
+ <member name="can_do_periodic_async"
+ value="128"
+ c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"
+ glib:nick="can-do-periodic-async">
+ <doc xml:space="preserve">clock can do async periodic timeout callbacks</doc>
+ </member>
+ <member name="can_set_resolution"
+ value="256"
+ c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"
+ glib:nick="can-set-resolution">
+ <doc xml:space="preserve">clock's resolution can be changed</doc>
+ </member>
+ <member name="can_set_master"
+ value="512"
+ c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"
+ glib:nick="can-set-master">
+ <doc xml:space="preserve">clock can be slaved to a master clock</doc>
+ </member>
+ <member name="needs_startup_sync"
+ value="1024"
+ c:identifier="GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC"
+ glib:nick="needs-startup-sync">
+ <doc xml:space="preserve">clock needs to be synced before it can be used
+ (Since 1.6)</doc>
+ </member>
+ <member name="last"
+ value="4096"
+ c:identifier="GST_CLOCK_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">subclasses can add additional flags starting from this flag</doc>
+ </member>
+ </bitfield>
+ <record name="ClockPrivate" c:type="GstClockPrivate" disguised="1">
+ </record>
+ <enumeration name="ClockReturn"
+ glib:type-name="GstClockReturn"
+ glib:get-type="gst_clock_return_get_type"
+ c:type="GstClockReturn">
+ <doc xml:space="preserve">The return value of a clock operation.</doc>
+ <member name="ok" value="0" c:identifier="GST_CLOCK_OK" glib:nick="ok">
+ <doc xml:space="preserve">The operation succeeded.</doc>
+ </member>
+ <member name="early"
+ value="1"
+ c:identifier="GST_CLOCK_EARLY"
+ glib:nick="early">
+ <doc xml:space="preserve">The operation was scheduled too late.</doc>
+ </member>
+ <member name="unscheduled"
+ value="2"
+ c:identifier="GST_CLOCK_UNSCHEDULED"
+ glib:nick="unscheduled">
+ <doc xml:space="preserve">The clockID was unscheduled</doc>
+ </member>
+ <member name="busy"
+ value="3"
+ c:identifier="GST_CLOCK_BUSY"
+ glib:nick="busy">
+ <doc xml:space="preserve">The ClockID is busy</doc>
+ </member>
+ <member name="badtime"
+ value="4"
+ c:identifier="GST_CLOCK_BADTIME"
+ glib:nick="badtime">
+ <doc xml:space="preserve">A bad time was provided to a function.</doc>
+ </member>
+ <member name="error"
+ value="5"
+ c:identifier="GST_CLOCK_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">An error occurred</doc>
+ </member>
+ <member name="unsupported"
+ value="6"
+ c:identifier="GST_CLOCK_UNSUPPORTED"
+ glib:nick="unsupported">
+ <doc xml:space="preserve">Operation is not supported</doc>
+ </member>
+ <member name="done"
+ value="7"
+ c:identifier="GST_CLOCK_DONE"
+ glib:nick="done">
+ <doc xml:space="preserve">The ClockID is done waiting</doc>
+ </member>
+ </enumeration>
+ <enumeration name="ClockType"
+ glib:type-name="GstClockType"
+ glib:get-type="gst_clock_type_get_type"
+ c:type="GstClockType">
+ <doc xml:space="preserve">The different kind of clocks.</doc>
+ <member name="realtime"
+ value="0"
+ c:identifier="GST_CLOCK_TYPE_REALTIME"
+ glib:nick="realtime">
+ <doc xml:space="preserve">time since Epoch</doc>
+ </member>
+ <member name="monotonic"
+ value="1"
+ c:identifier="GST_CLOCK_TYPE_MONOTONIC"
+ glib:nick="monotonic">
+ <doc xml:space="preserve">monotonic time since some unspecified starting
+ point</doc>
+ </member>
+ <member name="other"
+ value="2"
+ c:identifier="GST_CLOCK_TYPE_OTHER"
+ glib:nick="other">
+ <doc xml:space="preserve">some other time source is used (Since 1.0.5)</doc>
+ </member>
+ </enumeration>
+ <record name="Context"
+ c:type="GstContext"
+ glib:type-name="GstContext"
+ glib:get-type="gst_context_get_type"
+ c:symbol-prefix="context">
+ <doc xml:space="preserve">#GstContext is a container object used to store contexts like a device
+context, a display server connection and similar concepts that should
+be shared between multiple elements.
+
+Applications can set a context on a complete pipeline by using
+gst_element_set_context(), which will then be propagated to all
+child elements. Elements can handle these in #GstElementClass.set_context()
+and merge them with the context information they already have.
+
+When an element needs a context it will do the following actions in this
+order until one step succeeds:
+1. Check if the element already has a context
+2. Query downstream with GST_QUERY_CONTEXT for the context
+3. Query upstream with GST_QUERY_CONTEXT for the context
+4. Post a GST_MESSAGE_NEED_CONTEXT message on the bus with the required
+ context types and afterwards check if a usable context was set now
+5. Create a context by itself and post a GST_MESSAGE_HAVE_CONTEXT message
+ on the bus.
+
+Bins will catch GST_MESSAGE_NEED_CONTEXT messages and will set any previously
+known context on the element that asks for it if possible. Otherwise the
+application should provide one if it can.
+
+#GstContext&lt;!-- --&gt;s can be persistent.
+A persistent #GstContext is kept in elements when they reach
+%GST_STATE_NULL, non-persistent ones will be removed.
+Also, a non-persistent context won't override a previous persistent
+context set to an element.</doc>
+ <constructor name="new" c:identifier="gst_context_new" version="1.2">
+ <doc xml:space="preserve">Create a new context.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new context.</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </return-value>
+ <parameters>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">Context type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="persistent" transfer-ownership="none">
+ <doc xml:space="preserve">Persistent context</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_context_type"
+ c:identifier="gst_context_get_context_type"
+ version="1.2">
+ <doc xml:space="preserve">Get the type of @context.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The type of the context.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstContext.</doc>
+ <type name="Context" c:type="const GstContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_structure"
+ c:identifier="gst_context_get_structure"
+ version="1.2">
+ <doc xml:space="preserve">Access the structure of the context.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The structure of the context. The structure is
+still owned by the context, which means that you should not modify it,
+free it and that the pointer becomes invalid when you free the context.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstContext.</doc>
+ <type name="Context" c:type="const GstContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_context_type"
+ c:identifier="gst_context_has_context_type"
+ version="1.2">
+ <doc xml:space="preserve">Checks if @context has @context_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @context has @context_type.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstContext.</doc>
+ <type name="Context" c:type="const GstContext*"/>
+ </instance-parameter>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">Context type to check.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_persistent"
+ c:identifier="gst_context_is_persistent"
+ version="1.2">
+ <doc xml:space="preserve">Check if @context is persistent.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the context is persistent.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstContext.</doc>
+ <type name="Context" c:type="const GstContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="writable_structure"
+ c:identifier="gst_context_writable_structure"
+ version="1.2">
+ <doc xml:space="preserve">Get a writable version of the structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The structure of the context. The structure is still
+owned by the context, which means that you should not free it and
+that the pointer becomes invalid when you free the context.
+This function checks if @context is writable.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstContext.</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="ControlBinding"
+ c:symbol-prefix="control_binding"
+ c:type="GstControlBinding"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstControlBinding"
+ glib:get-type="gst_control_binding_get_type"
+ glib:type-struct="ControlBindingClass">
+ <doc xml:space="preserve">A base class for value mapping objects that attaches control sources to gobject
+properties. Such an object is taking one or more #GstControlSource instances,
+combines them and maps the resulting value to the type and value range of the
+bound property.</doc>
+ <virtual-method name="get_g_value_array" invoker="get_g_value_array">
+ <doc xml:space="preserve">Gets a number of #GValues for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+#GValue.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="2" zero-terminated="0" c:type="GValue*">
+ <type name="GObject.Value" c:type="GValue"/>
+ </array>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_value" invoker="get_value">
+ <doc xml:space="preserve">Gets the value for the given controlled property at the requested time.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GValue of the property at the given time,
+or %NULL if the property isn't controlled.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change should be read from</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_value_array"
+ invoker="get_value_array"
+ introspectable="0">
+ <doc xml:space="preserve">Gets a number of values for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+the same type as the objects property's type.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.
+
+The values are unboxed and ready to be used. The similar function
+gst_control_binding_get_g_value_array() returns the array as #GValues and is
+more suitable for bindings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sync_values" invoker="sync_values">
+ <doc xml:space="preserve">Sets the property of the @object, according to the #GstControlSources that
+handle them and for the given timestamp.
+
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the controller value could be applied to the object
+property, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="last_sync" transfer-ownership="none">
+ <doc xml:space="preserve">the last time this was called</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_g_value_array"
+ c:identifier="gst_control_binding_get_g_value_array">
+ <doc xml:space="preserve">Gets a number of #GValues for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+#GValue.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="2" zero-terminated="0" c:type="GValue*">
+ <type name="GObject.Value" c:type="GValue"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_value" c:identifier="gst_control_binding_get_value">
+ <doc xml:space="preserve">Gets the value for the given controlled property at the requested time.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GValue of the property at the given time,
+or %NULL if the property isn't controlled.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change should be read from</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_value_array"
+ c:identifier="gst_control_binding_get_value_array"
+ introspectable="0">
+ <doc xml:space="preserve">Gets a number of values for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+the same type as the objects property's type.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.
+
+The values are unboxed and ready to be used. The similar function
+gst_control_binding_get_g_value_array() returns the array as #GValues and is
+more suitable for bindings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_disabled"
+ c:identifier="gst_control_binding_is_disabled">
+ <doc xml:space="preserve">Check if the control binding is disabled.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the binding is inactive</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_disabled"
+ c:identifier="gst_control_binding_set_disabled">
+ <doc xml:space="preserve">This function is used to disable a control binding for some time, i.e.
+gst_object_sync_values() will do nothing.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="disabled" transfer-ownership="none">
+ <doc xml:space="preserve">boolean that specifies whether to disable the controller
+or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sync_values"
+ c:identifier="gst_control_binding_sync_values">
+ <doc xml:space="preserve">Sets the property of the @object, according to the #GstControlSources that
+handle them and for the given timestamp.
+
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the controller value could be applied to the object
+property, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="last_sync" transfer-ownership="none">
+ <doc xml:space="preserve">the last time this was called</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="name"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="object"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="Object"/>
+ </property>
+ <field name="parent">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="name">
+ <doc xml:space="preserve">name of the property of this binding</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="pspec">
+ <doc xml:space="preserve">#GParamSpec for this property</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </field>
+ <field name="object" readable="0" private="1">
+ <type name="Object" c:type="GstObject*"/>
+ </field>
+ <field name="disabled" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <record name="abi" c:type="abi">
+ <field name="priv" writable="1">
+ <type name="ControlBindingPrivate"
+ c:type="GstControlBindingPrivate*"/>
+ </field>
+ </record>
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </union>
+ </class>
+ <record name="ControlBindingClass"
+ c:type="GstControlBindingClass"
+ glib:is-gtype-struct-for="ControlBinding">
+ <doc xml:space="preserve">The class structure of #GstControlBinding.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Parent class</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="sync_values">
+ <callback name="sync_values">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the controller value could be applied to the object
+property, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="last_sync" transfer-ownership="none">
+ <doc xml:space="preserve">the last time this was called</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_value">
+ <callback name="get_value">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GValue of the property at the given time,
+or %NULL if the property isn't controlled.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change should be read from</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_value_array" introspectable="0">
+ <callback name="get_value_array" introspectable="0">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="3" zero-terminated="0" c:type="gpointer">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_g_value_array">
+ <callback name="get_g_value_array">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the control binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="3" zero-terminated="0" c:type="GValue*">
+ <type name="GObject.Value" c:type="GValue"/>
+ </array>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="ControlBindingConvert" c:type="GstControlBindingConvert">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="binding" transfer-ownership="none">
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="dest_value" transfer-ownership="none">
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="ControlBindingPrivate"
+ c:type="GstControlBindingPrivate"
+ disguised="1">
+ </record>
+ <class name="ControlSource"
+ c:symbol-prefix="control_source"
+ c:type="GstControlSource"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstControlSource"
+ glib:get-type="gst_control_source_get_type"
+ glib:type-struct="ControlSourceClass">
+ <doc xml:space="preserve">The #GstControlSource is a base class for control value sources that could
+be used to get timestamp-value pairs. A control source essentially is a
+function over time.
+
+A #GstControlSource is used by first getting an instance of a specific
+control-source, creating a binding for the control-source to the target property
+of the element and then adding the binding to the element. The binding will
+convert the data types and value range to fit to the bound property.
+
+For implementing a new #GstControlSource one has to implement
+#GstControlSourceGetValue and #GstControlSourceGetValueArray functions.
+These are then used by gst_control_source_get_value() and
+gst_control_source_get_value_array() to get values for specific timestamps.</doc>
+ <method name="control_source_get_value"
+ c:identifier="gst_control_source_get_value">
+ <doc xml:space="preserve">Gets the value for this #GstControlSource at a given timestamp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if the value couldn't be returned, %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlSource object</doc>
+ <type name="ControlSource" c:type="GstControlSource*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time for which the value should be returned</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the value</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="control_source_get_value_array"
+ c:identifier="gst_control_source_get_value_array">
+ <doc xml:space="preserve">Gets an array of values for for this #GstControlSource. Values that are
+undefined contain NANs.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlSource object</doc>
+ <type name="ControlSource" c:type="GstControlSource*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the first timestamp</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time steps</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values to fetch</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="2" zero-terminated="0" c:type="gdouble*">
+ <type name="gdouble" c:type="gdouble"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="get_value">
+ <doc xml:space="preserve">Function for returning a value for a given timestamp</doc>
+ <type name="ControlSourceGetValue" c:type="GstControlSourceGetValue"/>
+ </field>
+ <field name="get_value_array">
+ <doc xml:space="preserve">Function for returning a values array for a given timestamp</doc>
+ <type name="ControlSourceGetValueArray"
+ c:type="GstControlSourceGetValueArray"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="ControlSourceClass"
+ c:type="GstControlSourceClass"
+ glib:is-gtype-struct-for="ControlSource">
+ <doc xml:space="preserve">The class structure of #GstControlSource.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Parent class</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="ControlSourceGetValue" c:type="GstControlSourceGetValue">
+ <doc xml:space="preserve">Function for returning a value for a given timestamp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value was successfully calculated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlSource instance</doc>
+ <type name="ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">timestamp for which a value should be calculated</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a value which will be set to the result.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="ControlSourceGetValueArray"
+ c:type="GstControlSourceGetValueArray">
+ <doc xml:space="preserve">Function for returning an array of values for starting at a given timestamp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the values were successfully calculated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlSource instance</doc>
+ <type name="ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">timestamp for which a value should be calculated</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="CoreError"
+ glib:type-name="GstCoreError"
+ glib:get-type="gst_core_error_get_type"
+ c:type="GstCoreError"
+ glib:error-domain="gst-core-error-quark">
+ <doc xml:space="preserve">Core errors are errors inside the core GStreamer library.</doc>
+ <member name="failed"
+ value="1"
+ c:identifier="GST_CORE_ERROR_FAILED"
+ glib:nick="failed">
+ <doc xml:space="preserve">a general error which doesn't fit in any other
+category. Make sure you add a custom message to the error call.</doc>
+ </member>
+ <member name="too_lazy"
+ value="2"
+ c:identifier="GST_CORE_ERROR_TOO_LAZY"
+ glib:nick="too-lazy">
+ <doc xml:space="preserve">do not use this except as a placeholder for
+deciding where to go while developing code.</doc>
+ </member>
+ <member name="not_implemented"
+ value="3"
+ c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"
+ glib:nick="not-implemented">
+ <doc xml:space="preserve">use this when you do not want to implement
+this functionality yet.</doc>
+ </member>
+ <member name="state_change"
+ value="4"
+ c:identifier="GST_CORE_ERROR_STATE_CHANGE"
+ glib:nick="state-change">
+ <doc xml:space="preserve">used for state change errors.</doc>
+ </member>
+ <member name="pad"
+ value="5"
+ c:identifier="GST_CORE_ERROR_PAD"
+ glib:nick="pad">
+ <doc xml:space="preserve">used for pad-related errors.</doc>
+ </member>
+ <member name="thread"
+ value="6"
+ c:identifier="GST_CORE_ERROR_THREAD"
+ glib:nick="thread">
+ <doc xml:space="preserve">used for thread-related errors.</doc>
+ </member>
+ <member name="negotiation"
+ value="7"
+ c:identifier="GST_CORE_ERROR_NEGOTIATION"
+ glib:nick="negotiation">
+ <doc xml:space="preserve">used for negotiation-related errors.</doc>
+ </member>
+ <member name="event"
+ value="8"
+ c:identifier="GST_CORE_ERROR_EVENT"
+ glib:nick="event">
+ <doc xml:space="preserve">used for event-related errors.</doc>
+ </member>
+ <member name="seek"
+ value="9"
+ c:identifier="GST_CORE_ERROR_SEEK"
+ glib:nick="seek">
+ <doc xml:space="preserve">used for seek-related errors.</doc>
+ </member>
+ <member name="caps"
+ value="10"
+ c:identifier="GST_CORE_ERROR_CAPS"
+ glib:nick="caps">
+ <doc xml:space="preserve">used for caps-related errors.</doc>
+ </member>
+ <member name="tag"
+ value="11"
+ c:identifier="GST_CORE_ERROR_TAG"
+ glib:nick="tag">
+ <doc xml:space="preserve">used for negotiation-related errors.</doc>
+ </member>
+ <member name="missing_plugin"
+ value="12"
+ c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"
+ glib:nick="missing-plugin">
+ <doc xml:space="preserve">used if a plugin is missing.</doc>
+ </member>
+ <member name="clock"
+ value="13"
+ c:identifier="GST_CORE_ERROR_CLOCK"
+ glib:nick="clock">
+ <doc xml:space="preserve">used for clock related errors.</doc>
+ </member>
+ <member name="disabled"
+ value="14"
+ c:identifier="GST_CORE_ERROR_DISABLED"
+ glib:nick="disabled">
+ <doc xml:space="preserve">used if functionality has been disabled at
+ compile time.</doc>
+ </member>
+ <member name="num_errors"
+ value="15"
+ c:identifier="GST_CORE_ERROR_NUM_ERRORS"
+ glib:nick="num-errors">
+ <doc xml:space="preserve">the number of core error types.</doc>
+ </member>
+ <function name="quark" c:identifier="gst_core_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <constant name="DEBUG_BG_MASK" value="240" c:type="GST_DEBUG_BG_MASK">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="DEBUG_FG_MASK" value="15" c:type="GST_DEBUG_FG_MASK">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="DEBUG_FORMAT_MASK"
+ value="65280"
+ c:type="GST_DEBUG_FORMAT_MASK">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <record name="DateTime"
+ c:type="GstDateTime"
+ glib:type-name="GstDateTime"
+ glib:get-type="gst_date_time_get_type"
+ c:symbol-prefix="date_time">
+ <doc xml:space="preserve">Struct to store date, time and timezone information altogether.
+#GstDateTime is refcounted and immutable.
+
+Date information is handled using the proleptic Gregorian calendar.
+
+Provides basic creation functions and accessor functions to its fields.</doc>
+ <constructor name="new" c:identifier="gst_date_time_new">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the supplied timezone.
+
+@year should be from 1 to 9999, @month should be from 1 to 12, @day from
+1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59.
+
+Note that @tzoffset is a float and was chosen so for being able to handle
+some fractional timezones, while it still keeps the readability of
+representing it in hours for most timezones.
+
+If value is -1 then all over value will be ignored. For example
+if @month == -1, then #GstDateTime will created only for @year. If
+@day == -1, then #GstDateTime will created for @year and @month and
+so on.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tzoffset" transfer-ownership="none">
+ <doc xml:space="preserve">Offset from UTC in hours.</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ <parameter name="year" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian year</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="month" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian month</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="day" transfer-ownership="none">
+ <doc xml:space="preserve">the day of the gregorian month</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="hour" transfer-ownership="none">
+ <doc xml:space="preserve">the hour of the day</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="minute" transfer-ownership="none">
+ <doc xml:space="preserve">the minute of the hour</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the second of the minute</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_g_date_time"
+ c:identifier="gst_date_time_new_from_g_date_time">
+ <doc xml:space="preserve">Creates a new #GstDateTime from a #GDateTime object.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly created #GstDateTime,
+or %NULL on error</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="dt" transfer-ownership="full">
+ <doc xml:space="preserve">the #GDateTime. The new #GstDateTime takes ownership.</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_iso8601_string"
+ c:identifier="gst_date_time_new_from_iso8601_string">
+ <doc xml:space="preserve">Tries to parse common variants of ISO-8601 datetime strings into a
+#GstDateTime. Possible input formats are (for example):
+2012-06-30T22:46:43Z, 2012, 2012-06, 2012-06-30, 2012-06-30T22:46:43-0430,
+2012-06-30T22:46Z, 2012-06-30T22:46-0430, 2012-06-30 22:46,
+2012-06-30 22:46:43, 2012-06-00, 2012-00-00, 2012-00-30, 22:46:43Z, 22:46Z,
+22:46:43-0430, 22:46-0430, 22:46:30, 22:46
+If no date is provided, it is assumed to be "today" in the timezone
+provided (if any), otherwise UTC.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly created #GstDateTime,
+or %NULL on error</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">ISO 8601-formatted datetime string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_unix_epoch_local_time"
+ c:identifier="gst_date_time_new_from_unix_epoch_local_time">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the time since Jan 1, 1970 specified by
+@secs. The #GstDateTime is in the local timezone.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="secs" transfer-ownership="none">
+ <doc xml:space="preserve">seconds from the Unix epoch</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_unix_epoch_utc"
+ c:identifier="gst_date_time_new_from_unix_epoch_utc">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the time since Jan 1, 1970 specified by
+@secs. The #GstDateTime is in the UTC timezone.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="secs" transfer-ownership="none">
+ <doc xml:space="preserve">seconds from the Unix epoch</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_local_time"
+ c:identifier="gst_date_time_new_local_time">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the local timezone.
+
+@year should be from 1 to 9999, @month should be from 1 to 12, @day from
+1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59.
+
+If @month is -1, then the #GstDateTime created will only contain @year,
+and all other fields will be considered not set.
+
+If @day is -1, then the #GstDateTime created will only contain @year and
+@month and all other fields will be considered not set.
+
+If @hour is -1, then the #GstDateTime created will only contain @year and
+@month and @day, and the time fields will be considered not set. In this
+case @minute and @seconds should also be -1.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="year" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian year</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="month" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian month, or -1</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="day" transfer-ownership="none">
+ <doc xml:space="preserve">the day of the gregorian month, or -1</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="hour" transfer-ownership="none">
+ <doc xml:space="preserve">the hour of the day, or -1</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="minute" transfer-ownership="none">
+ <doc xml:space="preserve">the minute of the hour, or -1</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the second of the minute, or -1</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_now_local_time"
+ c:identifier="gst_date_time_new_now_local_time">
+ <doc xml:space="preserve">Creates a new #GstDateTime representing the current date and time.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime which should
+ be freed with gst_date_time_unref().</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_now_utc" c:identifier="gst_date_time_new_now_utc">
+ <doc xml:space="preserve">Creates a new #GstDateTime that represents the current instant at Universal
+coordinated time.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime which should
+ be freed with gst_date_time_unref().</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_y" c:identifier="gst_date_time_new_y">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the local timezone.
+
+@year should be from 1 to 9999.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="year" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian year</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_ym" c:identifier="gst_date_time_new_ym">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the local timezone.
+
+@year should be from 1 to 9999, @month should be from 1 to 12.
+
+If value is -1 then all over value will be ignored. For example
+if @month == -1, then #GstDateTime will created only for @year.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="year" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian year</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="month" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian month</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_ymd" c:identifier="gst_date_time_new_ymd">
+ <doc xml:space="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the local timezone.
+
+@year should be from 1 to 9999, @month should be from 1 to 12, @day from
+1 to 31.
+
+If value is -1 then all over value will be ignored. For example
+if @month == -1, then #GstDateTime will created only for @year. If
+@day == -1, then #GstDateTime will created for @year and @month and
+so on.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <parameter name="year" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian year</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="month" transfer-ownership="none">
+ <doc xml:space="preserve">the gregorian month</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="day" transfer-ownership="none">
+ <doc xml:space="preserve">the day of the gregorian month</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_day" c:identifier="gst_date_time_get_day">
+ <doc xml:space="preserve">Returns the day of the month of this #GstDateTime.
+Call gst_date_time_has_day before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The day of this #GstDateTime</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_hour" c:identifier="gst_date_time_get_hour">
+ <doc xml:space="preserve">Retrieves the hour of the day represented by @datetime in the gregorian
+calendar. The return is in the range of 0 to 23.
+Call gst_date_time_has_haur before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the hour of the day</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_microsecond"
+ c:identifier="gst_date_time_get_microsecond">
+ <doc xml:space="preserve">Retrieves the fractional part of the seconds in microseconds represented by
+@datetime in the gregorian calendar.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the microsecond of the second</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_minute" c:identifier="gst_date_time_get_minute">
+ <doc xml:space="preserve">Retrieves the minute of the hour represented by @datetime in the gregorian
+calendar.
+Call gst_date_time_has_minute before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the minute of the hour</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_month" c:identifier="gst_date_time_get_month">
+ <doc xml:space="preserve">Returns the month of this #GstDateTime. January is 1, February is 2, etc..
+Call gst_date_time_has_month before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The month of this #GstDateTime</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_second" c:identifier="gst_date_time_get_second">
+ <doc xml:space="preserve">Retrieves the second of the minute represented by @datetime in the gregorian
+calendar.
+Call gst_date_time_has_second before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the second represented by @datetime</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_time_zone_offset"
+ c:identifier="gst_date_time_get_time_zone_offset">
+ <doc xml:space="preserve">Retrieves the offset from UTC in hours that the timezone specified
+by @datetime represents. Timezones ahead (to the east) of UTC have positive
+values, timezones before (to the west) of UTC have negative values.
+If @datetime represents UTC time, then the offset is zero.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the offset from UTC in hours</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_year" c:identifier="gst_date_time_get_year">
+ <doc xml:space="preserve">Returns the year of this #GstDateTime
+Call gst_date_time_has_year before, to avoid warnings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The year of this #GstDateTime</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_day" c:identifier="gst_date_time_has_day">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @datetime&lt;!-- --&gt;'s day field is set, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_month" c:identifier="gst_date_time_has_month">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @datetime&lt;!-- --&gt;'s month field is set, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_second" c:identifier="gst_date_time_has_second">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @datetime&lt;!-- --&gt;'s second field is set, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_time" c:identifier="gst_date_time_has_time">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @datetime&lt;!-- --&gt;'s hour and minute fields are set,
+ otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_year" c:identifier="gst_date_time_has_year">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @datetime&lt;!-- --&gt;'s year field is set (which should always
+ be the case), otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="const GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_date_time_ref">
+ <doc xml:space="preserve">Atomically increments the reference count of @datetime by one.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the reference @datetime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="to_g_date_time"
+ c:identifier="gst_date_time_to_g_date_time">
+ <doc xml:space="preserve">Creates a new #GDateTime from a fully defined #GstDateTime object.
+
+Free-function: g_date_time_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly created #GDateTime, or
+%NULL on error</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">GstDateTime.</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="to_iso8601_string"
+ c:identifier="gst_date_time_to_iso8601_string">
+ <doc xml:space="preserve">Create a minimal string compatible with ISO-8601. Possible output formats
+are (for example): 2012, 2012-06, 2012-06-23, 2012-06-23T23:30Z,
+2012-06-23T23:30+0100, 2012-06-23T23:30:59Z, 2012-06-23T23:30:59+0100</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated string formatted according
+ to ISO 8601 and only including the datetime fields that are
+ valid, or %NULL in case there was an error. The string should
+ be freed with g_free().</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="none">
+ <doc xml:space="preserve">GstDateTime.</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_date_time_unref">
+ <doc xml:space="preserve">Atomically decrements the reference count of @datetime by one. When the
+reference count reaches zero, the structure is freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="datetime" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstDateTime</doc>
+ <type name="DateTime" c:type="GstDateTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="DebugCategory" c:type="GstDebugCategory">
+ <doc xml:space="preserve">This is the struct that describes the categories. Once initialized with
+#GST_DEBUG_CATEGORY_INIT, its values can't be changed anymore.</doc>
+ <field name="threshold" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="color" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="name" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" readable="0" private="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <method name="free" c:identifier="gst_debug_category_free">
+ <doc xml:space="preserve">Removes and frees the category and all associated resources.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">#GstDebugCategory to free.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_color" c:identifier="gst_debug_category_get_color">
+ <doc xml:space="preserve">Returns the color of a debug category used when printing output in this
+category.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the color of the category.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to get the color of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_description"
+ c:identifier="gst_debug_category_get_description">
+ <doc xml:space="preserve">Returns the description of a debug category.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the description of the category.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to get the description of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_debug_category_get_name">
+ <doc xml:space="preserve">Returns the name of a debug category.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the category.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to get name of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_threshold"
+ c:identifier="gst_debug_category_get_threshold">
+ <doc xml:space="preserve">Returns the threshold of a #GstDebugCategory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstDebugLevel that is used as threshold.</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to get threshold of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset_threshold"
+ c:identifier="gst_debug_category_reset_threshold">
+ <doc xml:space="preserve">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().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to reset threshold of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_threshold"
+ c:identifier="gst_debug_category_set_threshold">
+ <doc xml:space="preserve">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.
+&gt; Do not use this function in production code, because other functions may
+&gt; change the threshold of categories as side effect. It is however a nice
+&gt; function to use when debugging (even from gdb).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory to set threshold of.</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </instance-parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstDebugLevel threshold to set.</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="DebugColorFlags"
+ glib:type-name="GstDebugColorFlags"
+ glib:get-type="gst_debug_color_flags_get_type"
+ c:type="GstDebugColorFlags">
+ <doc xml:space="preserve">These are some terminal style flags you can use when creating your
+debugging categories to make them stand out in debugging output.</doc>
+ <member name="fg_black"
+ value="0"
+ c:identifier="GST_DEBUG_FG_BLACK"
+ glib:nick="fg-black">
+ <doc xml:space="preserve">Use black as foreground color.</doc>
+ </member>
+ <member name="fg_red"
+ value="1"
+ c:identifier="GST_DEBUG_FG_RED"
+ glib:nick="fg-red">
+ <doc xml:space="preserve">Use red as foreground color.</doc>
+ </member>
+ <member name="fg_green"
+ value="2"
+ c:identifier="GST_DEBUG_FG_GREEN"
+ glib:nick="fg-green">
+ <doc xml:space="preserve">Use green as foreground color.</doc>
+ </member>
+ <member name="fg_yellow"
+ value="3"
+ c:identifier="GST_DEBUG_FG_YELLOW"
+ glib:nick="fg-yellow">
+ <doc xml:space="preserve">Use yellow as foreground color.</doc>
+ </member>
+ <member name="fg_blue"
+ value="4"
+ c:identifier="GST_DEBUG_FG_BLUE"
+ glib:nick="fg-blue">
+ <doc xml:space="preserve">Use blue as foreground color.</doc>
+ </member>
+ <member name="fg_magenta"
+ value="5"
+ c:identifier="GST_DEBUG_FG_MAGENTA"
+ glib:nick="fg-magenta">
+ <doc xml:space="preserve">Use magenta as foreground color.</doc>
+ </member>
+ <member name="fg_cyan"
+ value="6"
+ c:identifier="GST_DEBUG_FG_CYAN"
+ glib:nick="fg-cyan">
+ <doc xml:space="preserve">Use cyan as foreground color.</doc>
+ </member>
+ <member name="fg_white"
+ value="7"
+ c:identifier="GST_DEBUG_FG_WHITE"
+ glib:nick="fg-white">
+ <doc xml:space="preserve">Use white as foreground color.</doc>
+ </member>
+ <member name="bg_black"
+ value="0"
+ c:identifier="GST_DEBUG_BG_BLACK"
+ glib:nick="bg-black">
+ <doc xml:space="preserve">Use black as background color.</doc>
+ </member>
+ <member name="bg_red"
+ value="16"
+ c:identifier="GST_DEBUG_BG_RED"
+ glib:nick="bg-red">
+ <doc xml:space="preserve">Use red as background color.</doc>
+ </member>
+ <member name="bg_green"
+ value="32"
+ c:identifier="GST_DEBUG_BG_GREEN"
+ glib:nick="bg-green">
+ <doc xml:space="preserve">Use green as background color.</doc>
+ </member>
+ <member name="bg_yellow"
+ value="48"
+ c:identifier="GST_DEBUG_BG_YELLOW"
+ glib:nick="bg-yellow">
+ <doc xml:space="preserve">Use yellow as background color.</doc>
+ </member>
+ <member name="bg_blue"
+ value="64"
+ c:identifier="GST_DEBUG_BG_BLUE"
+ glib:nick="bg-blue">
+ <doc xml:space="preserve">Use blue as background color.</doc>
+ </member>
+ <member name="bg_magenta"
+ value="80"
+ c:identifier="GST_DEBUG_BG_MAGENTA"
+ glib:nick="bg-magenta">
+ <doc xml:space="preserve">Use magenta as background color.</doc>
+ </member>
+ <member name="bg_cyan"
+ value="96"
+ c:identifier="GST_DEBUG_BG_CYAN"
+ glib:nick="bg-cyan">
+ <doc xml:space="preserve">Use cyan as background color.</doc>
+ </member>
+ <member name="bg_white"
+ value="112"
+ c:identifier="GST_DEBUG_BG_WHITE"
+ glib:nick="bg-white">
+ <doc xml:space="preserve">Use white as background color.</doc>
+ </member>
+ <member name="bold"
+ value="256"
+ c:identifier="GST_DEBUG_BOLD"
+ glib:nick="bold">
+ <doc xml:space="preserve">Make the output bold.</doc>
+ </member>
+ <member name="underline"
+ value="512"
+ c:identifier="GST_DEBUG_UNDERLINE"
+ glib:nick="underline">
+ <doc xml:space="preserve">Underline the output.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="DebugColorMode"
+ glib:type-name="GstDebugColorMode"
+ glib:get-type="gst_debug_color_mode_get_type"
+ c:type="GstDebugColorMode">
+ <member name="off"
+ value="0"
+ c:identifier="GST_DEBUG_COLOR_MODE_OFF"
+ glib:nick="off">
+ <doc xml:space="preserve">Do not use colors in logs.</doc>
+ </member>
+ <member name="on"
+ value="1"
+ c:identifier="GST_DEBUG_COLOR_MODE_ON"
+ glib:nick="on">
+ <doc xml:space="preserve">Paint logs in a platform-specific way.</doc>
+ </member>
+ <member name="unix"
+ value="2"
+ c:identifier="GST_DEBUG_COLOR_MODE_UNIX"
+ glib:nick="unix">
+ <doc xml:space="preserve">Paint logs with UNIX terminal color codes
+ no matter what platform GStreamer is running on.</doc>
+ </member>
+ </enumeration>
+ <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </callback>
+ <bitfield name="DebugGraphDetails"
+ glib:type-name="GstDebugGraphDetails"
+ glib:get-type="gst_debug_graph_details_get_type"
+ c:type="GstDebugGraphDetails">
+ <doc xml:space="preserve">Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
+and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().</doc>
+ <member name="media_type"
+ value="1"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"
+ glib:nick="media-type">
+ <doc xml:space="preserve">show caps-name on edges</doc>
+ </member>
+ <member name="caps_details"
+ value="2"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"
+ glib:nick="caps-details">
+ <doc xml:space="preserve">show caps-details on edges</doc>
+ </member>
+ <member name="non_default_params"
+ value="4"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"
+ glib:nick="non-default-params">
+ <doc xml:space="preserve">show modified parameters on
+ elements</doc>
+ </member>
+ <member name="states"
+ value="8"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"
+ glib:nick="states">
+ <doc xml:space="preserve">show element states</doc>
+ </member>
+ <member name="full_params"
+ value="16"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_FULL_PARAMS"
+ glib:nick="full-params">
+ <doc xml:space="preserve">show full element parameter values even
+ if they are very long</doc>
+ </member>
+ <member name="all"
+ value="15"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"
+ glib:nick="all">
+ <doc xml:space="preserve">show all the typical details that one might want</doc>
+ </member>
+ <member name="verbose"
+ value="-1"
+ c:identifier="GST_DEBUG_GRAPH_SHOW_VERBOSE"
+ glib:nick="verbose">
+ <doc xml:space="preserve">show all details regardless of how large or
+ verbose they make the resulting output</doc>
+ </member>
+ </bitfield>
+ <enumeration name="DebugLevel"
+ glib:type-name="GstDebugLevel"
+ glib:get-type="gst_debug_level_get_type"
+ c:type="GstDebugLevel">
+ <doc xml:space="preserve">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.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_LEVEL_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No debugging level specified or desired. Used to deactivate
+ debugging output.</doc>
+ </member>
+ <member name="error"
+ value="1"
+ c:identifier="GST_LEVEL_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">Error messages are to be used only when an error occurred
+ 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_error.</doc>
+ </member>
+ <member name="warning"
+ value="2"
+ c:identifier="GST_LEVEL_WARNING"
+ glib:nick="warning">
+ <doc xml:space="preserve">Warning messages are to inform about abnormal behaviour
+ that could lead to problems or weird behaviour later on. An example of this
+ would be clocking issues ("your computer is pretty slow") or broken input
+ data ("Can't synchronize to stream.")</doc>
+ </member>
+ <member name="fixme"
+ value="3"
+ c:identifier="GST_LEVEL_FIXME"
+ glib:nick="fixme">
+ <doc xml:space="preserve">Fixme messages are messages that indicate that something
+ 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
+ of code when reading the debug log.</doc>
+ </member>
+ <member name="info"
+ value="4"
+ c:identifier="GST_LEVEL_INFO"
+ glib:nick="info">
+ <doc xml:space="preserve">Informational messages should be used to keep the developer
+ 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. ("This file has mono sound.")</doc>
+ </member>
+ <member name="debug"
+ value="5"
+ c:identifier="GST_LEVEL_DEBUG"
+ glib:nick="debug">
+ <doc xml:space="preserve">Debugging messages should be used when something common
+ happens that is not the expected default behavior, or something that's
+ useful to know but doesn't happen all the time (ie. per loop iteration or
+ buffer processed or event handled).
+ An example would be notifications about state changes or receiving/sending
+ of events.</doc>
+ </member>
+ <member name="log"
+ value="6"
+ c:identifier="GST_LEVEL_LOG"
+ glib:nick="log">
+ <doc xml:space="preserve">Log messages are messages that are very common but might be
+ useful to know. As a rule of thumb a pipeline that is running as expected
+ should never output anything else but LOG messages whilst processing data.
+ Use this log level to log recurring information in chain functions and
+ loop functions, for example.</doc>
+ </member>
+ <member name="trace"
+ value="7"
+ c:identifier="GST_LEVEL_TRACE"
+ glib:nick="trace">
+ <doc xml:space="preserve">Tracing-related messages.
+ Examples for this are referencing/dereferencing of objects.</doc>
+ </member>
+ <member name="memdump"
+ value="9"
+ c:identifier="GST_LEVEL_MEMDUMP"
+ glib:nick="memdump">
+ <doc xml:space="preserve">memory dump messages are used to log (small) chunks of
+ data as memory dumps in the log. They will be displayed as hexdump with
+ ASCII characters.</doc>
+ </member>
+ <member name="count"
+ value="10"
+ c:identifier="GST_LEVEL_COUNT"
+ glib:nick="count">
+ <doc xml:space="preserve">The number of defined debugging levels.</doc>
+ </member>
+ <function name="get_name" c:identifier="gst_debug_level_get_name">
+ <doc xml:space="preserve">Get the string representation of a debugging level</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">the level to get the name for</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <record name="DebugMessage" c:type="GstDebugMessage" disguised="1">
+ <method name="get" c:identifier="gst_debug_message_get">
+ <doc xml:space="preserve">Gets the string representation of a #GstDebugMessage. This function is used
+in debug handlers to extract the message.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the string representation of a #GstDebugMessage.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a debug message</doc>
+ <type name="DebugMessage" c:type="GstDebugMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="Device"
+ c:symbol-prefix="device"
+ c:type="GstDevice"
+ version="1.4"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstDevice"
+ glib:get-type="gst_device_get_type"
+ glib:type-struct="DeviceClass">
+ <doc xml:space="preserve">#GstDevice are objects representing a device, they contain
+relevant metadata about the device, such as its class and the #GstCaps
+representing the media types it can produce or handle.
+
+#GstDevice are created by #GstDeviceProvider objects which can be
+aggregated by #GstDeviceMonitor objects.</doc>
+ <virtual-method name="create_element"
+ invoker="create_element"
+ version="1.4">
+ <doc xml:space="preserve">Creates the element with all of the required parameters set to use
+this device.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstElement configured to use
+this device</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new element, or %NULL to automatically
+create a unique name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reconfigure_element"
+ invoker="reconfigure_element"
+ version="1.4">
+ <doc xml:space="preserve">Tries to reconfigure an existing element to use the device. If this
+function fails, then one must destroy the element and create a new one
+using gst_device_create_element().
+
+Note: This should only be implemented for elements can change their
+device in the PLAYING state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element could be reconfigured to use this device,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="create_element"
+ c:identifier="gst_device_create_element"
+ version="1.4">
+ <doc xml:space="preserve">Creates the element with all of the required parameters set to use
+this device.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstElement configured to use
+this device</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new element, or %NULL to automatically
+create a unique name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_device_get_caps" version="1.4">
+ <doc xml:space="preserve">Getter for the #GstCaps that this device supports.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GstCaps supported by this device. Unref with
+gst_caps_unref() when done.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_device_class"
+ c:identifier="gst_device_get_device_class"
+ version="1.4">
+ <doc xml:space="preserve">Gets the "class" of a device. This is a "/" separated list of
+classes that represent this device. They are a subset of the
+classes of the #GstDeviceProvider that produced this device.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The device class. Free with g_free() after use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_display_name"
+ c:identifier="gst_device_get_display_name"
+ version="1.4">
+ <doc xml:space="preserve">Gets the user-friendly name of the device.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The device name. Free with g_free() after use.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_properties"
+ c:identifier="gst_device_get_properties"
+ version="1.6">
+ <doc xml:space="preserve">Gets the extra properties of a device.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The extra properties or %NULL when there are none.
+ Free with gst_structure_free() after use.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_classes"
+ c:identifier="gst_device_has_classes"
+ version="1.4">
+ <doc xml:space="preserve">Check if @device matches all of the given classes</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @device matches.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="classes" transfer-ownership="none">
+ <doc xml:space="preserve">a "/"-separated list of device classes to match, only match if
+ all classes are matched</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_classesv"
+ c:identifier="gst_device_has_classesv"
+ version="1.4">
+ <doc xml:space="preserve">Check if @factory matches all of the given classes</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @device matches.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="classes" transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL terminated array of classes
+ to match, only match if all classes are matched</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reconfigure_element"
+ c:identifier="gst_device_reconfigure_element"
+ version="1.4">
+ <doc xml:space="preserve">Tries to reconfigure an existing element to use the device. If this
+function fails, then one must destroy the element and create a new one
+using gst_device_create_element().
+
+Note: This should only be implemented for elements can change their
+device in the PLAYING state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element could be reconfigured to use this device,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </instance-parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="caps"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="Caps"/>
+ </property>
+ <property name="device-class"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="display-name"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="properties"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="Structure"/>
+ </property>
+ <field name="parent">
+ <doc xml:space="preserve">The parent #GstObject strucuture.</doc>
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="DevicePrivate" c:type="GstDevicePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="removed" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ </class>
+ <record name="DeviceClass"
+ c:type="GstDeviceClass"
+ glib:is-gtype-struct-for="Device"
+ version="1.4">
+ <doc xml:space="preserve">The class structure for a #GstDevice object.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">The parent #GstObjectClass strucuture.</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="create_element">
+ <callback name="create_element">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstElement configured to use
+this device</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new element, or %NULL to automatically
+create a unique name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reconfigure_element">
+ <callback name="reconfigure_element">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element could be reconfigured to use this device,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="DeviceMonitor"
+ c:symbol-prefix="device_monitor"
+ c:type="GstDeviceMonitor"
+ version="1.4"
+ parent="Object"
+ glib:type-name="GstDeviceMonitor"
+ glib:get-type="gst_device_monitor_get_type"
+ glib:type-struct="DeviceMonitorClass">
+ <doc xml:space="preserve">Applications should create a #GstDeviceMonitor when they want
+to probe, list and monitor devices of a specific type. The
+#GstDeviceMonitor will create the appropriate
+#GstDeviceProvider objects and manage them. It will then post
+messages on its #GstBus for devices that have been added and
+removed.
+
+The device monitor will monitor all devices matching the filters that
+the application has set.
+
+The basic use pattern of a device monitor is as follows:
+|[
+ static gboolean
+ my_bus_func (GstBus * bus, GstMessage * message, gpointer user_data)
+ {
+ GstDevice *device;
+ gchar *name;
+
+ switch (GST_MESSAGE_TYPE (message)) {
+ case GST_MESSAGE_DEVICE_ADDED:
+ gst_message_parse_device_added (message, &amp;device);
+ name = gst_device_get_display_name (device);
+ g_print("Device added: %s\n", name);
+ g_free (name);
+ gst_object_unref (device);
+ break;
+ case GST_MESSAGE_DEVICE_REMOVED:
+ gst_message_parse_device_removed (message, &amp;device);
+ name = gst_device_get_display_name (device);
+ g_print("Device removed: %s\n", name);
+ g_free (name);
+ gst_object_unref (device);
+ break;
+ default:
+ break;
+ }
+
+ return G_SOURCE_CONTINUE;
+ }
+
+ GstDeviceMonitor *
+ setup_raw_video_source_device_monitor (void) {
+ GstDeviceMonitor *monitor;
+ GstBus *bus;
+ GstCaps *caps;
+
+ monitor = gst_device_monitor_new ();
+
+ bus = gst_device_monitor_get_bus (monitor);
+ gst_bus_add_watch (bus, my_bus_func, NULL);
+ gst_object_unref (bus);
+
+ caps = gst_caps_new_empty_simple ("video/x-raw");
+ gst_device_monitor_add_filter (monitor, "Video/Source", caps);
+ gst_caps_unref (caps);
+
+ gst_device_monitor_start (monitor);
+
+ return monitor;
+ }
+]|</doc>
+ <constructor name="new"
+ c:identifier="gst_device_monitor_new"
+ version="1.4">
+ <doc xml:space="preserve">Create a new #GstDeviceMonitor</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new device monitor.</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </return-value>
+ </constructor>
+ <method name="add_filter"
+ c:identifier="gst_device_monitor_add_filter"
+ version="1.4">
+ <doc xml:space="preserve">Adds a filter for which #GstDevice will be monitored, any device that matches
+all these classes and the #GstCaps will be returned.
+
+If this function is called multiple times to add more filters, each will be
+matched independently. That is, adding more filters will not further restrict
+what devices are matched.
+
+The #GstCaps supported by the device as returned by gst_device_get_caps() are
+not intersected with caps filters added using this function.
+
+Filters must be added before the #GstDeviceMonitor is started.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The id of the new filter or 0 if no provider matched the filter's
+ classes.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a device monitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ <parameter name="classes"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">device classes to use as filter or %NULL for any class</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps to filter or %NULL for ANY</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bus"
+ c:identifier="gst_device_monitor_get_bus"
+ version="1.4">
+ <doc xml:space="preserve">Gets the #GstBus of this #GstDeviceMonitor</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_devices"
+ c:identifier="gst_device_monitor_get_devices"
+ version="1.4">
+ <doc xml:space="preserve">Gets a list of devices from all of the relevant monitors. This may actually
+probe the hardware if the monitor is not currently started.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GList of
+ #GstDevice</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Device"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_providers"
+ c:identifier="gst_device_monitor_get_providers"
+ version="1.6">
+ <doc xml:space="preserve">Get a list of the currently selected device provider factories.
+
+This</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ A list of device provider factory names that are currently being
+ monitored by @monitor or %NULL when nothing is being monitored.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceMonitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_show_all_devices"
+ c:identifier="gst_device_monitor_get_show_all_devices"
+ version="1.6">
+ <doc xml:space="preserve">Get if @monitor is curretly showing all devices, even those from hidden
+providers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when all devices will be shown.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceMonitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_filter"
+ c:identifier="gst_device_monitor_remove_filter"
+ version="1.4">
+ <doc xml:space="preserve">Removes a filter from the #GstDeviceMonitor using the id that was returned
+by gst_device_monitor_add_filter().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE of the filter id was valid, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a device monitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ <parameter name="filter_id" transfer-ownership="none">
+ <doc xml:space="preserve">the id of the filter</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_show_all_devices"
+ c:identifier="gst_device_monitor_set_show_all_devices"
+ version="1.6">
+ <doc xml:space="preserve">Set if all devices should be visible, even those devices from hidden
+providers. Setting @show_all to true might show some devices multiple times.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceMonitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ <parameter name="show_all" transfer-ownership="none">
+ <doc xml:space="preserve">show all devices</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start"
+ c:identifier="gst_device_monitor_start"
+ version="1.4">
+ <doc xml:space="preserve">Starts monitoring the devices, one this has succeeded, the
+%GST_MESSAGE_DEVICE_ADDED and %GST_MESSAGE_DEVICE_REMOVED messages
+will be emitted on the bus when the list of devices changes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the device monitoring could be started</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceMonitor</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop" c:identifier="gst_device_monitor_stop" version="1.4">
+ <doc xml:space="preserve">Stops monitoring the devices.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="monitor" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceMonitor" c:type="GstDeviceMonitor*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="show-all" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="parent">
+ <doc xml:space="preserve">the parent #GstObject structure</doc>
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="DeviceMonitorPrivate" c:type="GstDeviceMonitorPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="DeviceMonitorClass"
+ c:type="GstDeviceMonitorClass"
+ glib:is-gtype-struct-for="DeviceMonitor"
+ version="1.4">
+ <doc xml:space="preserve">Opaque device monitor class structure.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent #GstObjectClass structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="DeviceMonitorPrivate"
+ c:type="GstDeviceMonitorPrivate"
+ disguised="1">
+ </record>
+ <record name="DevicePrivate" c:type="GstDevicePrivate" disguised="1">
+ </record>
+ <class name="DeviceProvider"
+ c:symbol-prefix="device_provider"
+ c:type="GstDeviceProvider"
+ version="1.4"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstDeviceProvider"
+ glib:get-type="gst_device_provider_get_type"
+ glib:type-struct="DeviceProviderClass">
+ <doc xml:space="preserve">A #GstDeviceProvider subclass is provided by a plugin that handles devices
+if there is a way to programatically list connected devices. It can also
+optionally provide updates to the list of connected devices.
+
+Each #GstDeviceProvider subclass is a singleton, a plugin should
+normally provide a single subclass for all devices.
+
+Applications would normally use a #GstDeviceMonitor to monitor devices
+from all relevant providers.</doc>
+ <function name="register"
+ c:identifier="gst_device_provider_register"
+ version="1.4">
+ <doc xml:space="preserve">Create a new device providerfactory capable of instantiating objects of the
+@type and add the factory to @plugin.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the registering succeeded, %FALSE on error</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GstPlugin to register the device provider with, or %NULL for
+ a static device provider.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of device providers of this type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <doc xml:space="preserve">rank of device provider (higher rank means more importance when autoplugging)</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">GType of device provider to register</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="probe" introspectable="0">
+ <return-value>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start" invoker="start" version="1.4">
+ <doc xml:space="preserve">Starts providering the devices. This will cause #GST_MESSAGE_DEVICE_ADDED
+and #GST_MESSAGE_DEVICE_REMOVED messages to be posted on the provider's bus
+when devices are added or removed from the system.
+
+Since the #GstDeviceProvider is a singleton,
+gst_device_provider_start() may already have been called by another
+user of the object, gst_device_provider_stop() needs to be called the same
+number of times.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the device providering could be started</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop" invoker="stop" version="1.4">
+ <doc xml:space="preserve">Decreases the use-count by one. If the use count reaches zero, this
+#GstDeviceProvider will stop providering the devices. This needs to be
+called the same number of times that gst_device_provider_start() was called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="can_monitor"
+ c:identifier="gst_device_provider_can_monitor">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="device_add"
+ c:identifier="gst_device_provider_device_add"
+ version="1.4">
+ <doc xml:space="preserve">Posts a message on the provider's #GstBus to inform applications that
+a new device has been added.
+
+This is for use by subclasses.
+
+@device's reference count will be incremented, and any floating reference
+will be removed (see gst_object_ref_sink()).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice that has been added</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="device_remove"
+ c:identifier="gst_device_provider_device_remove"
+ version="1.4">
+ <doc xml:space="preserve">Posts a message on the provider's #GstBus to inform applications that
+a device has been removed.
+
+This is for use by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDevice that has been removed</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bus"
+ c:identifier="gst_device_provider_get_bus"
+ version="1.4">
+ <doc xml:space="preserve">Gets the #GstBus of this #GstDeviceProvider</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBus</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_devices"
+ c:identifier="gst_device_provider_get_devices"
+ version="1.4">
+ <doc xml:space="preserve">Gets a list of devices that this provider understands. This may actually
+probe the hardware if the provider is not currently started.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstDevice</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Device"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_factory"
+ c:identifier="gst_device_provider_get_factory"
+ version="1.4">
+ <doc xml:space="preserve">Retrieves the factory that was used to create this device provider.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstDeviceProviderFactory used for
+ creating this device provider. no refcounting is needed.</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider to request the device provider factory of.</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_hidden_providers"
+ c:identifier="gst_device_provider_get_hidden_providers"
+ version="1.6">
+ <doc xml:space="preserve">Get the provider factory names of the #GstDeviceProvider instances that
+are hidden by @provider.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ a list of hidden providers factory names or %NULL when
+ nothing is hidden by @provider. Free with g_strfreev.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_device_provider_get_metadata"
+ version="1.14">
+ <doc xml:space="preserve">Get metadata with @key in @provider.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the metadata for @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">provider to get metadata for</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="hide_provider"
+ c:identifier="gst_device_provider_hide_provider"
+ version="1.6">
+ <doc xml:space="preserve">Make @provider hide the devices from the factory with @name.
+
+This function is used when @provider will also provide the devices reported
+by provider factory @name. A monitor should stop monitoring the
+device provider with @name to avoid duplicate devices.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a provider factory name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start"
+ c:identifier="gst_device_provider_start"
+ version="1.4">
+ <doc xml:space="preserve">Starts providering the devices. This will cause #GST_MESSAGE_DEVICE_ADDED
+and #GST_MESSAGE_DEVICE_REMOVED messages to be posted on the provider's bus
+when devices are added or removed from the system.
+
+Since the #GstDeviceProvider is a singleton,
+gst_device_provider_start() may already have been called by another
+user of the object, gst_device_provider_stop() needs to be called the same
+number of times.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the device providering could be started</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop"
+ c:identifier="gst_device_provider_stop"
+ version="1.4">
+ <doc xml:space="preserve">Decreases the use-count by one. If the use count reaches zero, this
+#GstDeviceProvider will stop providering the devices. This needs to be
+called the same number of times that gst_device_provider_start() was called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unhide_provider"
+ c:identifier="gst_device_provider_unhide_provider"
+ version="1.6">
+ <doc xml:space="preserve">Make @provider unhide the devices from factory @name.
+
+This function is used when @provider will no longer provide the devices
+reported by provider factory @name. A monitor should start
+monitoring the devices from provider factory @name in order to see
+all devices again.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a provider factory name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <doc xml:space="preserve">The parent #GstObject</doc>
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="devices">
+ <doc xml:space="preserve">a #GList of the #GstDevice objects</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="DeviceProviderPrivate" c:type="GstDeviceProviderPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="provider-hidden" when="first">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="provider-unhidden" when="first">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="DeviceProviderClass"
+ c:type="GstDeviceProviderClass"
+ glib:is-gtype-struct-for="DeviceProvider"
+ version="1.4">
+ <doc xml:space="preserve">The structure of the base #GstDeviceProviderClass</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent #GstObjectClass structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="factory">
+ <doc xml:space="preserve">a pointer to the #GstDeviceProviderFactory that creates this
+ provider</doc>
+ <type name="DeviceProviderFactory" c:type="GstDeviceProviderFactory*"/>
+ </field>
+ <field name="probe" introspectable="0">
+ <callback name="probe" introspectable="0">
+ <return-value>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="provider" transfer-ownership="none">
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the device providering could be started</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="provider" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDeviceProvider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="metadata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_metadata"
+ c:identifier="gst_device_provider_class_add_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Set @key with @value as metadata in @klass.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="DeviceProviderClass" c:type="GstDeviceProviderClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_static_metadata"
+ c:identifier="gst_device_provider_class_add_static_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Set @key with @value as metadata in @klass.
+
+Same as gst_device_provider_class_add_metadata(), but @value must be a static string
+or an inlined string, as it will not be copied. (GStreamer plugins will
+be made resident once loaded, so this function can be used even from
+dynamically loaded plugins.)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="DeviceProviderClass" c:type="GstDeviceProviderClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="full">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_device_provider_class_get_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Get metadata with @key in @klass.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the metadata for @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to get metadata for</doc>
+ <type name="DeviceProviderClass" c:type="GstDeviceProviderClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_metadata"
+ c:identifier="gst_device_provider_class_set_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Sets the detailed information for a #GstDeviceProviderClass.
+
+&gt; This function is for use in _class_init functions only.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="DeviceProviderClass" c:type="GstDeviceProviderClass*"/>
+ </instance-parameter>
+ <parameter name="longname" transfer-ownership="none">
+ <doc xml:space="preserve">The long English name of the device provider. E.g. "File Sink"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="classification" transfer-ownership="none">
+ <doc xml:space="preserve">String describing the type of device provider, as an
+ unordered list separated with slashes ('/'). See draft-klass.txt of the
+ design docs
+for more details and common types. E.g: "Sink/File"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">Sentence describing the purpose of the device provider.
+E.g: "Write stream to a file"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="author" transfer-ownership="none">
+ <doc xml:space="preserve">Name and contact details of the author(s). Use \n to separate
+multiple author metadata. E.g: "Joe Bloggs &amp;lt;joe.blogs at foo.com&amp;gt;"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_static_metadata"
+ c:identifier="gst_device_provider_class_set_static_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Sets the detailed information for a #GstDeviceProviderClass.
+
+&gt; This function is for use in _class_init functions only.
+
+Same as gst_device_provider_class_set_metadata(), but @longname, @classification,
+@description, and @author must be static strings or inlined strings, as
+they will not be copied. (GStreamer plugins will be made resident once
+loaded, so this function can be used even from dynamically loaded plugins.)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="DeviceProviderClass" c:type="GstDeviceProviderClass*"/>
+ </instance-parameter>
+ <parameter name="longname" transfer-ownership="full">
+ <doc xml:space="preserve">The long English name of the element. E.g. "File Sink"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="classification" transfer-ownership="full">
+ <doc xml:space="preserve">String describing the type of element, as
+an unordered list separated with slashes ('/'). See draft-klass.txt of the
+design docs for more details and common types. E.g: "Sink/File"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="full">
+ <doc xml:space="preserve">Sentence describing the purpose of the
+element. E.g: "Write stream to a file"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="author" transfer-ownership="full">
+ <doc xml:space="preserve">Name and contact details of the author(s). Use \n
+to separate multiple author metadata. E.g: "Joe Bloggs &amp;lt;joe.blogs at
+foo.com&amp;gt;"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="DeviceProviderFactory"
+ c:symbol-prefix="device_provider_factory"
+ c:type="GstDeviceProviderFactory"
+ version="1.4"
+ parent="PluginFeature"
+ glib:type-name="GstDeviceProviderFactory"
+ glib:get-type="gst_device_provider_factory_get_type"
+ glib:type-struct="DeviceProviderFactoryClass">
+ <doc xml:space="preserve">#GstDeviceProviderFactory is used to create instances of device providers. A
+GstDeviceProviderfactory can be added to a #GstPlugin as it is also a
+#GstPluginFeature.
+
+Use the gst_device_provider_factory_find() and
+gst_device_provider_factory_get() functions to create device
+provider instances or use gst_device_provider_factory_get_by_name() as a
+convenient shortcut.</doc>
+ <function name="find"
+ c:identifier="gst_device_provider_factory_find"
+ version="1.4">
+ <doc xml:space="preserve">Search for an device provider factory of the given name. Refs the returned
+device provider factory; caller is responsible for unreffing.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">#GstDeviceProviderFactory if
+found, %NULL otherwise</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of factory to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_by_name"
+ c:identifier="gst_device_provider_factory_get_by_name"
+ version="1.4">
+ <doc xml:space="preserve">Returns the device provider of the type defined by the given device
+provider factory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstDeviceProvider or %NULL
+if unable to create device provider</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </return-value>
+ <parameters>
+ <parameter name="factoryname" transfer-ownership="none">
+ <doc xml:space="preserve">a named factory to instantiate</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="list_get_device_providers"
+ c:identifier="gst_device_provider_factory_list_get_device_providers"
+ version="1.4">
+ <doc xml:space="preserve">Get a list of factories with a rank greater or equal to @minrank.
+The list of factories is returned by decreasing rank.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+a #GList of #GstDeviceProviderFactory device providers. Use
+gst_plugin_feature_list_free() after usage.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DeviceProviderFactory"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="minrank" transfer-ownership="none">
+ <doc xml:space="preserve">Minimum rank</doc>
+ <type name="Rank" c:type="GstRank"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="get"
+ c:identifier="gst_device_provider_factory_get"
+ version="1.4">
+ <doc xml:space="preserve">Returns the device provider of the type defined by the given device
+providerfactory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstDeviceProvider or %NULL
+if the device provider couldn't be created</doc>
+ <type name="DeviceProvider" c:type="GstDeviceProvider*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to instantiate</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_device_provider_type"
+ c:identifier="gst_device_provider_factory_get_device_provider_type"
+ version="1.4">
+ <doc xml:space="preserve">Get the #GType for device providers managed by this factory. The type can
+only be retrieved if the device provider factory is loaded, which can be
+assured with gst_plugin_feature_load().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GType for device providers managed by this factory.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to get managed #GType from</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_device_provider_factory_get_metadata"
+ version="1.4">
+ <doc xml:space="preserve">Get the metadata on @factory with @key.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the metadata with @key on @factory or %NULL
+when there was no metadata with the given @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProviderFactory</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">a key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata_keys"
+ c:identifier="gst_device_provider_factory_get_metadata_keys"
+ version="1.4">
+ <doc xml:space="preserve">Get the available keys for the metadata on @factory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">
+a %NULL-terminated array of key strings, or %NULL when there is no
+metadata. Free with g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProviderFactory</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_classes"
+ c:identifier="gst_device_provider_factory_has_classes"
+ version="1.4">
+ <doc xml:space="preserve">Check if @factory matches all of the given @classes</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @factory matches or if @classes is %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProviderFactory</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ <parameter name="classes"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a "/" separate list of classes to match, only match
+ if all classes are matched</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_classesv"
+ c:identifier="gst_device_provider_factory_has_classesv"
+ version="1.4">
+ <doc xml:space="preserve">Check if @factory matches all of the given classes</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @factory matches.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDeviceProviderFactory</doc>
+ <type name="DeviceProviderFactory"
+ c:type="GstDeviceProviderFactory*"/>
+ </instance-parameter>
+ <parameter name="classes"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a %NULL terminated array
+ of classes to match, only match if all classes are matched</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="DeviceProviderFactoryClass"
+ c:type="GstDeviceProviderFactoryClass"
+ disguised="1"
+ glib:is-gtype-struct-for="DeviceProviderFactory"
+ version="1.4">
+ <doc xml:space="preserve">The opaque #GstDeviceProviderFactoryClass data structure.</doc>
+ </record>
+ <record name="DeviceProviderPrivate"
+ c:type="GstDeviceProviderPrivate"
+ disguised="1">
+ </record>
+ <class name="DoubleRange"
+ c:symbol-prefix="double_range"
+ glib:type-name="GstDoubleRange"
+ glib:get-type="gst_double_range_get_type"
+ glib:fundamental="1">
+ </class>
+ <class name="DynamicTypeFactory"
+ c:symbol-prefix="dynamic_type_factory"
+ c:type="GstDynamicTypeFactory"
+ parent="PluginFeature"
+ glib:type-name="GstDynamicTypeFactory"
+ glib:get-type="gst_dynamic_type_factory_get_type"
+ glib:type-struct="DynamicTypeFactoryClass">
+ <doc xml:space="preserve">#GstDynamicTypeFactory is used to represent a type that can be
+automatically loaded the first time it is used. For example,
+a non-standard type for use in caps fields.
+
+In general, applications and plugins don't need to use the factory
+beyond registering the type in a plugin init function. Once that is
+done, the type is stored in the registry, and ready as soon as the
+registry is loaded.
+
+## Registering a type for dynamic loading
+
+|[&lt;!-- language="C" --&gt;
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+ return gst_dynamic_type_register (plugin, GST_TYPE_CUSTOM_CAPS_FIELD);
+}
+]|</doc>
+ <function name="load" c:identifier="gst_dynamic_type_factory_load">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="factoryname" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </class>
+ <record name="DynamicTypeFactoryClass"
+ c:type="GstDynamicTypeFactoryClass"
+ disguised="1"
+ glib:is-gtype-struct-for="DynamicTypeFactory">
+ </record>
+ <constant name="ELEMENT_FACTORY_KLASS_DECODER"
+ value="Decoder"
+ c:type="GST_ELEMENT_FACTORY_KLASS_DECODER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_DECRYPTOR"
+ value="Decryptor"
+ c:type="GST_ELEMENT_FACTORY_KLASS_DECRYPTOR">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_DEMUXER"
+ value="Demuxer"
+ c:type="GST_ELEMENT_FACTORY_KLASS_DEMUXER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_DEPAYLOADER"
+ value="Depayloader"
+ c:type="GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_ENCODER"
+ value="Encoder"
+ c:type="GST_ELEMENT_FACTORY_KLASS_ENCODER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_ENCRYPTOR"
+ value="Encryptor"
+ c:type="GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_FORMATTER"
+ value="Formatter"
+ c:type="GST_ELEMENT_FACTORY_KLASS_FORMATTER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MEDIA_AUDIO"
+ value="Audio"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MEDIA_IMAGE"
+ value="Image"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MEDIA_METADATA"
+ value="Metadata"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE"
+ value="Subtitle"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MEDIA_VIDEO"
+ value="Video"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_MUXER"
+ value="Muxer"
+ c:type="GST_ELEMENT_FACTORY_KLASS_MUXER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_PARSER"
+ value="Parser"
+ c:type="GST_ELEMENT_FACTORY_KLASS_PARSER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_PAYLOADER"
+ value="Payloader"
+ c:type="GST_ELEMENT_FACTORY_KLASS_PAYLOADER">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_SINK"
+ value="Sink"
+ c:type="GST_ELEMENT_FACTORY_KLASS_SINK">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_KLASS_SRC"
+ value="Source"
+ c:type="GST_ELEMENT_FACTORY_KLASS_SRC">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_ANY"
+ value="562949953421311"
+ c:type="GST_ELEMENT_FACTORY_TYPE_ANY">
+ <doc xml:space="preserve">Elements of any of the defined GST_ELEMENT_FACTORY_LIST types</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS"
+ value="3940649673949188"
+ c:type="GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS">
+ <doc xml:space="preserve">All sinks handling audio, video or image media types</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_AUDIO_ENCODER"
+ value="1125899906842626"
+ c:type="GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER">
+ <doc xml:space="preserve">All encoders handling audio media types</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_DECODABLE"
+ value="1377"
+ c:type="GST_ELEMENT_FACTORY_TYPE_DECODABLE">
+ <doc xml:space="preserve">All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders)</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_DECODER"
+ value="1"
+ c:type="GST_ELEMENT_FACTORY_TYPE_DECODER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_DECRYPTOR"
+ value="1024"
+ c:type="GST_ELEMENT_FACTORY_TYPE_DECRYPTOR">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_DEMUXER"
+ value="32"
+ c:type="GST_ELEMENT_FACTORY_TYPE_DEMUXER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_DEPAYLOADER"
+ value="256"
+ c:type="GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_ENCODER"
+ value="2"
+ c:type="GST_ELEMENT_FACTORY_TYPE_ENCODER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_ENCRYPTOR"
+ value="2048"
+ c:type="GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_FORMATTER"
+ value="512"
+ c:type="GST_ELEMENT_FACTORY_TYPE_FORMATTER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MAX_ELEMENTS"
+ value="281474976710656"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_ANY"
+ value="18446462598732840960"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY">
+ <doc xml:space="preserve">Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types
+
+Note: Do not use this if you wish to not filter against any of the defined
+media types. If you wish to do this, simply don't specify any
+GST_ELEMENT_FACTORY_TYPE_MEDIA flag.</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_AUDIO"
+ value="1125899906842624"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_IMAGE"
+ value="2251799813685248"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_METADATA"
+ value="9007199254740992"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE"
+ value="4503599627370496"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MEDIA_VIDEO"
+ value="562949953421312"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_MUXER"
+ value="16"
+ c:type="GST_ELEMENT_FACTORY_TYPE_MUXER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_PARSER"
+ value="64"
+ c:type="GST_ELEMENT_FACTORY_TYPE_PARSER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_PAYLOADER"
+ value="128"
+ c:type="GST_ELEMENT_FACTORY_TYPE_PAYLOADER">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_SINK"
+ value="4"
+ c:type="GST_ELEMENT_FACTORY_TYPE_SINK">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_SRC"
+ value="8"
+ c:type="GST_ELEMENT_FACTORY_TYPE_SRC">
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_FACTORY_TYPE_VIDEO_ENCODER"
+ value="2814749767106562"
+ c:type="GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER">
+ <doc xml:space="preserve">All encoders handling video or image media types</doc>
+ <type name="ElementFactoryListType" c:type="GstElementFactoryListType"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_AUTHOR"
+ value="author"
+ c:type="GST_ELEMENT_METADATA_AUTHOR">
+ <doc xml:space="preserve">Name and contact details of the author(s). Use \n to separate
+multiple author details.
+E.g: "Joe Bloggs &amp;lt;joe.blogs at foo.com&amp;gt;"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_DESCRIPTION"
+ value="description"
+ c:type="GST_ELEMENT_METADATA_DESCRIPTION">
+ <doc xml:space="preserve">Sentence describing the purpose of the element.
+E.g: "Write stream to a file"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_DOC_URI"
+ value="doc-uri"
+ c:type="GST_ELEMENT_METADATA_DOC_URI">
+ <doc xml:space="preserve">Set uri pointing to user documentation. Applications can use this to show
+help for e.g. effects to users.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_ICON_NAME"
+ value="icon-name"
+ c:type="GST_ELEMENT_METADATA_ICON_NAME">
+ <doc xml:space="preserve">Elements that bridge to certain other products can include an icon of that
+used product. Application can show the icon in menus/selectors to help
+identifying specific elements.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_KLASS"
+ value="klass"
+ c:type="GST_ELEMENT_METADATA_KLASS">
+ <doc xml:space="preserve">String describing the type of element, as an unordered list
+separated with slashes ('/'). See draft-klass.txt of the design docs
+for more details and common types. E.g: "Sink/File"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ELEMENT_METADATA_LONGNAME"
+ value="long-name"
+ c:type="GST_ELEMENT_METADATA_LONGNAME">
+ <doc xml:space="preserve">The long English name of the element. E.g. "File Sink"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ERROR_SYSTEM"
+ value="system error: %s"
+ c:type="GST_ERROR_SYSTEM">
+ <doc xml:space="preserve">Builds a string using errno describing the previously failed system
+call. To be used as the debug argument in #GST_ELEMENT_ERROR.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="EVENT_NUM_SHIFT" value="8" c:type="GST_EVENT_NUM_SHIFT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="EVENT_TYPE_BOTH" value="3" c:type="GST_EVENT_TYPE_BOTH">
+ <doc xml:space="preserve">The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_DOWNSTREAM.</doc>
+ <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+ </constant>
+ <class name="Element"
+ c:symbol-prefix="element"
+ c:type="GstElement"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstElement"
+ glib:get-type="gst_element_get_type"
+ glib:type-struct="ElementClass">
+ <doc xml:space="preserve">GstElement is the abstract base class needed to construct an element that
+can be used in a GStreamer pipeline. Please refer to the plugin writers
+guide for more information on creating #GstElement subclasses.
+
+The name of a #GstElement can be get with gst_element_get_name() and set with
+gst_element_set_name(). For speed, GST_ELEMENT_NAME() can be used in the
+core when using the appropriate locking. Do not use this in plug-ins or
+applications in order to retain ABI compatibility.
+
+Elements can have pads (of the type #GstPad). These pads link to pads on
+other elements. #GstBuffer flow between these linked pads.
+A #GstElement has a #GList of #GstPad structures for all their input (or sink)
+and output (or source) pads.
+Core and plug-in writers can add and remove pads with gst_element_add_pad()
+and gst_element_remove_pad().
+
+An existing pad of an element can be retrieved by name with
+gst_element_get_static_pad(). A new dynamic pad can be created using
+gst_element_request_pad() with a #GstPadTemplate.
+An iterator of all pads can be retrieved with gst_element_iterate_pads().
+
+Elements can be linked through their pads.
+If the link is straightforward, use the gst_element_link()
+convenience function to link two elements, or gst_element_link_many()
+for more elements in a row.
+Use gst_element_link_filtered() to link two elements constrained by
+a specified set of #GstCaps.
+For finer control, use gst_element_link_pads() and
+gst_element_link_pads_filtered() to specify the pads to link on
+each element by name.
+
+Each element has a state (see #GstState). You can get and set the state
+of an element with gst_element_get_state() and gst_element_set_state().
+Setting a state triggers a #GstStateChange. To get a string representation
+of a #GstState, use gst_element_state_get_name().
+
+You can get and set a #GstClock on an element using gst_element_get_clock()
+and gst_element_set_clock().
+Some elements can provide a clock for the pipeline if
+the #GST_ELEMENT_FLAG_PROVIDE_CLOCK flag is set. With the
+gst_element_provide_clock() method one can retrieve the clock provided by
+such an element.
+Not all elements require a clock to operate correctly. If the
+#GST_ELEMENT_FLAG_REQUIRE_CLOCK() flag is set, a clock should be set on the
+element with gst_element_set_clock().
+
+Note that clock selection and distribution is normally handled by the
+toplevel #GstPipeline so the clock functions are only to be used in very
+specific situations.</doc>
+ <function name="make_from_uri"
+ c:identifier="gst_element_make_from_uri"
+ throws="1">
+ <doc xml:space="preserve">Creates an element for handling the given URI.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new element or %NULL if none
+could be created</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to create a source or a sink</doc>
+ <type name="URIType" c:type="const GstURIType"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">URI to create an element for</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="elementname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Name of created element, can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="register" c:identifier="gst_element_register">
+ <doc xml:space="preserve">Create a new elementfactory capable of instantiating objects of the
+@type and add the factory to @plugin.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the registering succeeded, %FALSE on error</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GstPlugin to register the element with, or %NULL for
+ a static element.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of elements of this type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <doc xml:space="preserve">rank of element (higher rank means more importance when autoplugging)</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">GType of element to register</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="state_change_return_get_name"
+ c:identifier="gst_element_state_change_return_get_name">
+ <doc xml:space="preserve">Gets a string representing the given state change result.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string with the name of the state
+ result.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="state_ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStateChangeReturn to get the name of.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="state_get_name"
+ c:identifier="gst_element_state_get_name">
+ <doc xml:space="preserve">Gets a string representing the given state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string with the name of the state.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstState to get the name of.</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="change_state" invoker="change_state">
+ <doc xml:space="preserve">Perform @transition on @element.
+
+This function must be called with STATE_LOCK held and is mainly used
+internally.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStateChangeReturn of the state transition.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="transition" transfer-ownership="none">
+ <doc xml:space="preserve">the requested transition</doc>
+ <type name="StateChange" c:type="GstStateChange"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_state" invoker="get_state">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state
+ 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.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the state.
+ Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="pending"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the pending
+ state. Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime to specify the timeout for an async
+ state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="no_more_pads" invoker="no_more_pads">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pad_added">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pad_removed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="post_message" invoker="post_message">
+ <doc xml:space="preserve">Post a message on the element'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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message was successfully posted. The function returns
+%FALSE if the element did not have a bus.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement posting the message</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMessage to post</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="provide_clock" invoker="provide_clock">
+ <doc xml:space="preserve">Get the clock provided by the given element.
+&gt; An element is only required to provide a clock in the PAUSED
+&gt; state. Some elements can provide a clock in other states.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GstClock provided by the
+element or %NULL if no clock could be provided. Unref after usage.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to query</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="query" invoker="query">
+ <doc xml:space="preserve">Performs a query on the given element.
+
+For elements that don'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.
+
+Please note that some queries might need a running pipeline to work.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to perform the query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="release_pad">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="request_new_pad" invoker="request_pad">
+ <doc xml:space="preserve">Retrieves a request pad from the element according to the provided template.
+Pad templates can be looked up using
+gst_element_factory_get_static_pad_templates().
+
+The pad should be released with gst_element_release_request_pad().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">requested #GstPad if found,
+ otherwise %NULL. Release after usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to find a request pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate of which we want a pad of.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the request #GstPad
+to retrieve. Can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the caps of the pad we want to
+request. Can be %NULL.</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="send_event" invoker="send_event">
+ <doc xml:space="preserve">Sends an event to an element. If the element doesn't implement an
+event handler, the event will be pushed on a random linked sink pad for
+downstream events or a random linked source pad for upstream events.
+
+This function takes ownership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled. Events that trigger a preroll (such
+as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send the event to.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to send to the element.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_bus" invoker="set_bus">
+ <doc xml:space="preserve">Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you're testing elements.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the bus of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="bus"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBus to set.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_clock" invoker="set_clock">
+ <doc xml:space="preserve">Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element accepted the clock. An element can refuse a
+clock when it, for example, is not able to slave its internal clock to the
+@clock or when it requires a specific clock to operate.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the clock for.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstClock to set for the element.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_context" invoker="set_context">
+ <doc xml:space="preserve">Sets the context of the element. Increases the refcount of the context.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstContext to set.</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_state" invoker="set_state">
+ <doc xml:space="preserve">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'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 %GST_MESSAGE_ASYNC_DONE or
+%GST_MESSAGE_STATE_CHANGED on the bus.
+
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Result of the state change using #GstStateChangeReturn.
+
+MT safe.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to change state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">the element's new #GstState.</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="state_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="oldstate" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="newstate" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="pending" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="abort_state" c:identifier="gst_element_abort_state">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to abort the state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="add_pad" c:identifier="gst_element_add_pad">
+ <doc xml:space="preserve">Adds a pad (link point) to @element. @pad'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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could be added. This function can fail when
+a pad with the same name already existed or the pad already had another
+parent.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to add the pad to.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to add to the element.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_property_deep_notify_watch"
+ c:identifier="gst_element_add_property_deep_notify_watch"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a watch id, which can be used in connection with
+ gst_element_remove_property_notify_watch() to remove the watch again.</doc>
+ <type name="gulong" c:type="gulong"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to watch (recursively) for property changes</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="property_name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of property to watch for changes, or
+ NULL to watch all properties</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="include_value" transfer-ownership="none">
+ <doc xml:space="preserve">whether to include the new property value in the message</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_property_notify_watch"
+ c:identifier="gst_element_add_property_notify_watch"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a watch id, which can be used in connection with
+ gst_element_remove_property_notify_watch() to remove the watch again.</doc>
+ <type name="gulong" c:type="gulong"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to watch for property changes</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="property_name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of property to watch for changes, or
+ NULL to watch all properties</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="include_value" transfer-ownership="none">
+ <doc xml:space="preserve">whether to include the new property value in the message</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="call_async"
+ c:identifier="gst_element_call_async"
+ version="1.10">
+ <doc xml:space="preserve">Calls @func from another thread and passes @user_data to it. This is to be
+used for cases when a state change has to be performed from a streaming
+thread, directly via gst_element_set_state() or indirectly e.g. via SEEK
+events.
+
+Calling those functions directly from the streaming thread will cause
+deadlocks in many situations, as they might involve waiting for the
+streaming thread to shut down from this very streaming thread.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">Function to call asynchronously from another thread</doc>
+ <type name="ElementCallAsyncFunc"
+ c:type="GstElementCallAsyncFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">GDestroyNotify for @user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="change_state" c:identifier="gst_element_change_state">
+ <doc xml:space="preserve">Perform @transition on @element.
+
+This function must be called with STATE_LOCK held and is mainly used
+internally.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStateChangeReturn of the state transition.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="transition" transfer-ownership="none">
+ <doc xml:space="preserve">the requested transition</doc>
+ <type name="StateChange" c:type="GstStateChange"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="continue_state" c:identifier="gst_element_continue_state">
+ <doc xml:space="preserve">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.
+
+This function must be called with STATE_LOCK held.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The result of the commit state change.
+
+MT safe.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to continue the state change of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">The previous state return value</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_all_pads"
+ c:identifier="gst_element_create_all_pads">
+ <doc xml:space="preserve">Creates a pad for each pad template that is always available.
+This function is only useful during object initialization of
+subclasses of #GstElement.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to create pads for</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="foreach_pad"
+ c:identifier="gst_element_foreach_pad"
+ version="1.14">
+ <doc xml:space="preserve">Call @func with @user_data for each of @element's pads. @func will be called
+exactly once for each pad that exists at the time of this call, unless
+one of the calls to @func returns %FALSE in which case we will stop
+iterating pads and return early. If new pads are added or pads are removed
+while pads are being iterated, this will not be taken into account until
+next time this function is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if @element had no pads or if one of the calls to @func
+ returned %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to iterate pads of</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">function to call for each pad</doc>
+ <type name="ElementForeachPadFunc"
+ c:type="GstElementForeachPadFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach_sink_pad"
+ c:identifier="gst_element_foreach_sink_pad"
+ version="1.14">
+ <doc xml:space="preserve">Call @func with @user_data for each of @element's sink pads. @func will be
+called exactly once for each sink pad that exists at the time of this call,
+unless one of the calls to @func returns %FALSE in which case we will stop
+iterating pads and return early. If new sink pads are added or sink pads
+are removed while the sink pads are being iterated, this will not be taken
+into account until next time this function is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if @element had no sink pads or if one of the calls to @func
+ returned %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to iterate sink pads of</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">function to call for each sink pad</doc>
+ <type name="ElementForeachPadFunc"
+ c:type="GstElementForeachPadFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach_src_pad"
+ c:identifier="gst_element_foreach_src_pad"
+ version="1.14">
+ <doc xml:space="preserve">Call @func with @user_data for each of @element's source pads. @func will be
+called exactly once for each source pad that exists at the time of this call,
+unless one of the calls to @func returns %FALSE in which case we will stop
+iterating pads and return early. If new source pads are added or source pads
+are removed while the source pads are being iterated, this will not be taken
+into account until next time this function is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if @element had no source pads or if one of the calls
+ to @func returned %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to iterate source pads of</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">function to call for each source pad</doc>
+ <type name="ElementForeachPadFunc"
+ c:type="GstElementForeachPadFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_base_time" c:identifier="gst_element_get_base_time">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the base time of the element.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_bus" c:identifier="gst_element_get_bus">
+ <doc xml:space="preserve">Returns the bus of the element. Note that only a #GstPipeline will provide a
+bus for the application.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the element's #GstBus. unref after
+usage.
+
+MT safe.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the bus of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_clock" c:identifier="gst_element_get_clock">
+ <doc xml:space="preserve">Gets the currently configured clock of the element. This is the clock as was
+last set with gst_element_set_clock().
+
+Elements in a pipeline will only have their clock set when the
+pipeline is in the PLAYING state.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstClock of the element. unref after usage.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the clock of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_compatible_pad"
+ c:identifier="gst_element_get_compatible_pad">
+ <doc xml:space="preserve">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.
+
+This function will first attempt to find a compatible unlinked ALWAYS pad,
+and if none can be found, it will request a compatible REQUEST pad by looking
+at the templates of @element.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstPad to which a link
+ can be made, or %NULL if one cannot be found. gst_object_unref()
+ after usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement in which the pad should be found.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to find a compatible one for.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps to use as a filter.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_compatible_pad_template"
+ c:identifier="gst_element_get_compatible_pad_template">
+ <doc xml:space="preserve">Retrieves a pad template from @element that is compatible with @compattempl.
+Pads from compatible templates can be linked together.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a compatible #GstPadTemplate,
+ or %NULL if none was found. No unreferencing is necessary.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get a compatible pad template for</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="compattempl" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadTemplate to find a compatible
+ template for</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_context"
+ c:identifier="gst_element_get_context"
+ version="1.8">
+ <doc xml:space="preserve">Gets the context with @context_type set on the element or NULL.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GstContext or NULL</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">a name of a context to retrieve</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_context_unlocked"
+ c:identifier="gst_element_get_context_unlocked"
+ version="1.8">
+ <doc xml:space="preserve">Gets the context with @context_type set on the element or NULL.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A #GstContext or NULL</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">a name of a context to retrieve</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_contexts"
+ c:identifier="gst_element_get_contexts"
+ version="1.8">
+ <doc xml:space="preserve">Gets the contexts set on the element.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">List of #GstContext</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Context"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_factory" c:identifier="gst_element_get_factory">
+ <doc xml:space="preserve">Retrieves the factory that was used to create this element.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElementFactory used for creating this
+ element. no refcounting is needed.</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to request the element factory of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_element_get_metadata"
+ version="1.14">
+ <doc xml:space="preserve">Get metadata with @key in @klass.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the metadata for @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">class to get metadata for</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template"
+ c:identifier="gst_element_get_pad_template"
+ version="1.14">
+ <doc xml:space="preserve">Retrieves a padtemplate from @element with the given name.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstPadTemplate with the
+ given name, or %NULL if none was found. No unreferencing is
+ necessary.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the pad template of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPadTemplate to get.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template_list"
+ c:identifier="gst_element_get_pad_template_list"
+ version="1.14">
+ <doc xml:space="preserve">Retrieves a list of the pad templates associated with @element. The
+list must not be modified by the calling code.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GList of
+ pad templates.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PadTemplate"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get pad templates of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_request_pad"
+ c:identifier="gst_element_get_request_pad">
+ <doc xml:space="preserve">Retrieves a pad from the element by name (e.g. "src_\%d"). This version only
+retrieves request pads. The pad should be released with
+gst_element_release_request_pad().
+
+This method is slower than manually getting the pad template and calling
+gst_element_request_pad() if the pads should have a specific name (e.g.
+@name is "src_1" instead of "src_\%u").</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">requested #GstPad if found,
+ otherwise %NULL. Release after usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to find a request pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the request #GstPad to retrieve.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_start_time" c:identifier="gst_element_get_start_time">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the start time of the element.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_state" c:identifier="gst_element_get_state">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state
+ 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.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the state.
+ Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="pending"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the pending
+ state. Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime to specify the timeout for an async
+ state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_static_pad" c:identifier="gst_element_get_static_pad">
+ <doc xml:space="preserve">Retrieves a pad from @element by name. This version only retrieves
+already-existing (i.e. 'static') pads.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the requested #GstPad if
+ found, otherwise %NULL. unref after usage.
+
+MT safe.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to find a static pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the static #GstPad to retrieve.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_locked_state"
+ c:identifier="gst_element_is_locked_state">
+ <doc xml:space="preserve">Checks if the state of an element is locked.
+If the state of an element is locked, state changes of the parent don'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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the element's state is locked.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_pads" c:identifier="gst_element_iterate_pads">
+ <doc xml:space="preserve">Retrieves an iterator of @element's pads. The iterator should
+be freed after usage. Also more specialized iterators exists such as
+gst_element_iterate_src_pads() or gst_element_iterate_sink_pads().
+
+The order of pads returned by the iterator will be the order in which
+the pads were added to the element.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstIterator of #GstPad.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to iterate pads of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_sink_pads"
+ c:identifier="gst_element_iterate_sink_pads">
+ <doc xml:space="preserve">Retrieves an iterator of @element's sink pads.
+
+The order of pads returned by the iterator will be the order in which
+the pads were added to the element.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstIterator of #GstPad.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_src_pads"
+ c:identifier="gst_element_iterate_src_pads">
+ <doc xml:space="preserve">Retrieves an iterator of @element's source pads.
+
+The order of pads returned by the iterator will be the order in which
+the pads were added to the element.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstIterator of #GstPad.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="link" c:identifier="gst_element_link">
+ <doc xml:space="preserve">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't linked yet. It will request new pads if necessary.
+Such pads need to be released manually 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the elements could be linked, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_filtered" c:identifier="gst_element_link_filtered">
+ <doc xml:space="preserve">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'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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads could be linked, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps to filter the link,
+ or %NULL for no filter.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_many"
+ c:identifier="gst_element_link_many"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element_1" transfer-ownership="none">
+ <doc xml:space="preserve">the first #GstElement in the link chain.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="element_2" transfer-ownership="none">
+ <doc xml:space="preserve">the second #GstElement in the link chain.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the %NULL-terminated list of elements to link in order.</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_pads" c:identifier="gst_element_link_pads">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads could be linked, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="srcpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in source element
+ or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="destpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in destination element,
+or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_pads_filtered"
+ c:identifier="gst_element_link_pads_filtered">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads could be linked, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="srcpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in source element
+ or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="destpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in destination element
+ or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps to filter the link,
+ or %NULL for no filter.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_pads_full" c:identifier="gst_element_link_pads_full">
+ <doc xml:space="preserve">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.
+
+Calling gst_element_link_pads_full() with @flags == %GST_PAD_LINK_CHECK_DEFAULT
+is the same as calling gst_element_link_pads() and the recommended way of
+linking pads with safety checks applied.
+
+This is a convenience function for gst_pad_link_full().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads could be linked, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="srcpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in source element
+ or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="destpadname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the #GstPad in destination element,
+or %NULL for any pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadLinkCheck to be performed when linking pads.</doc>
+ <type name="PadLinkCheck" c:type="GstPadLinkCheck"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="lost_state" c:identifier="gst_element_lost_state">
+ <doc xml:space="preserve">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. 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement the state is lost of</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="message_full" c:identifier="gst_element_message_full">
+ <doc xml:space="preserve">Post an error, warning or info message on the bus from inside an element.
+
+@type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or
+#GST_MESSAGE_INFO.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send message from</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessageType</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ <parameter name="domain" transfer-ownership="none">
+ <doc xml:space="preserve">the GStreamer GError domain this message belongs to</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">the GError code belonging to the domain</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="text"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an allocated text string to be used
+ as a replacement for the default message connected to code,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="debug"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an allocated debug message to be
+ used as a replacement for the default debugging information,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">the source code file where the error was generated</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">the source code function where the error was generated</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">the source code line where the error was generated</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="message_full_with_details"
+ c:identifier="gst_element_message_full_with_details"
+ version="1.10">
+ <doc xml:space="preserve">Post an error, warning or info message on the bus from inside an element.
+
+@type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or
+#GST_MESSAGE_INFO.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send message from</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessageType</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ <parameter name="domain" transfer-ownership="none">
+ <doc xml:space="preserve">the GStreamer GError domain this message belongs to</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">the GError code belonging to the domain</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="text"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an allocated text string to be used
+ as a replacement for the default message connected to code,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="debug"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an allocated debug message to be
+ used as a replacement for the default debugging information,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">the source code file where the error was generated</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">the source code function where the error was generated</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">the source code line where the error was generated</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">optional details structure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="no_more_pads" c:identifier="gst_element_no_more_pads">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="post_message" c:identifier="gst_element_post_message">
+ <doc xml:space="preserve">Post a message on the element'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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message was successfully posted. The function returns
+%FALSE if the element did not have a bus.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement posting the message</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMessage to post</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="provide_clock" c:identifier="gst_element_provide_clock">
+ <doc xml:space="preserve">Get the clock provided by the given element.
+&gt; An element is only required to provide a clock in the PAUSED
+&gt; state. Some elements can provide a clock in other states.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GstClock provided by the
+element or %NULL if no clock could be provided. Unref after usage.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to query</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="query" c:identifier="gst_element_query">
+ <doc xml:space="preserve">Performs a query on the given element.
+
+For elements that don'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.
+
+Please note that some queries might need a running pipeline to work.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to perform the query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_convert" c:identifier="gst_element_query_convert">
+ <doc xml:space="preserve">Queries an element to convert @src_val in @src_format to @dest_format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to invoke the convert query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat to convert from.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_val" transfer-ownership="none">
+ <doc xml:space="preserve">a value to convert.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat to convert to.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to the result.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_duration" c:identifier="gst_element_query_duration">
+ <doc xml:space="preserve">Queries an element (usually top-level pipeline or playbin element) for the
+total stream duration in nanoseconds. This query will only work once the
+pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application
+will receive an ASYNC_DONE message on the pipeline bus when that is the case.
+
+If the duration changes for some reason, you will get a DURATION_CHANGED
+message on the pipeline bus, in which case you should re-query the duration
+using this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to invoke the duration query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location in which to store the total duration, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_position" c:identifier="gst_element_query_position">
+ <doc xml:space="preserve">Queries an element (usually top-level pipeline or playbin element) for the
+stream position in nanoseconds. This will be a value between 0 and the
+stream duration (if the stream duration is known). This query will usually
+only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING
+state). The application will receive an ASYNC_DONE message on the pipeline
+bus when that is the case.
+
+If one repeatedly calls this function one can also create a query and reuse
+it in gst_element_query().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to invoke the position query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="cur"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location in which to store the current
+ position, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="release_request_pad"
+ c:identifier="gst_element_release_request_pad">
+ <doc xml:space="preserve">Makes the element free the previously requested pad as obtained
+with gst_element_request_pad().
+
+This does not unref the pad. If the pad was created by using
+gst_element_request_pad(), gst_element_release_request_pad() needs to be
+followed by gst_object_unref() to free the @pad.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to release the request pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to release.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_pad" c:identifier="gst_element_remove_pad">
+ <doc xml:space="preserve">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_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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could be removed. Can return %FALSE if the
+pad does not belong to the provided element.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to remove pad from.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to remove from the element.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_property_notify_watch"
+ c:identifier="gst_element_remove_property_notify_watch"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement being watched for property changes</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="watch_id" transfer-ownership="none">
+ <doc xml:space="preserve">watch id to remove</doc>
+ <type name="gulong" c:type="gulong"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="request_pad" c:identifier="gst_element_request_pad">
+ <doc xml:space="preserve">Retrieves a request pad from the element according to the provided template.
+Pad templates can be looked up using
+gst_element_factory_get_static_pad_templates().
+
+The pad should be released with gst_element_release_request_pad().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">requested #GstPad if found,
+ otherwise %NULL. Release after usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to find a request pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate of which we want a pad of.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the request #GstPad
+to retrieve. Can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the caps of the pad we want to
+request. Can be %NULL.</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="seek" c:identifier="gst_element_seek">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled. Flushing seeks will trigger a
+preroll, which will emit %GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send the event to.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">The new playback rate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format of the seek values</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The optional seek flags.</doc>
+ <type name="SeekFlags" c:type="GstSeekFlags"/>
+ </parameter>
+ <parameter name="start_type" transfer-ownership="none">
+ <doc xml:space="preserve">The type and flags for the new start position</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the new start position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop_type" transfer-ownership="none">
+ <doc xml:space="preserve">The type and flags for the new stop position</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the new stop position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="seek_simple" c:identifier="gst_element_seek_simple">
+ <doc xml:space="preserve">Simple API to perform a seek on the given element, meaning it just seeks
+to the given position relative to the start of the stream. For more complex
+operations like segment seeks (e.g. for looping) or changing the playback
+rate or seeking relative to the last configured playback segment you should
+use gst_element_seek().
+
+In a completely prerolled PAUSED or PLAYING pipeline, seeking is always
+guaranteed to return %TRUE on a seekable media type or %FALSE when the media
+type is certainly not seekable (such as a live stream).
+
+Some elements allow for seeking in the READY state, in this
+case they will store the seek event and execute it when they are put to
+PAUSED. If the element supports seek in READY, it will always return %TRUE when
+it receives the event in the READY state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the seek operation succeeded. Flushing seeks will trigger a
+preroll, which will emit %GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to seek on</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat to execute the seek in, such as #GST_FORMAT_TIME</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="seek_flags" transfer-ownership="none">
+ <doc xml:space="preserve">seek options; playback applications will usually want to use
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT here</doc>
+ <type name="SeekFlags" c:type="GstSeekFlags"/>
+ </parameter>
+ <parameter name="seek_pos" transfer-ownership="none">
+ <doc xml:space="preserve">position to seek to (relative to the start); if you are doing
+ a seek in #GST_FORMAT_TIME this value is in nanoseconds -
+ multiply with #GST_SECOND to convert seconds to nanoseconds or
+ with #GST_MSECOND to convert milliseconds to nanoseconds.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send_event" c:identifier="gst_element_send_event">
+ <doc xml:space="preserve">Sends an event to an element. If the element doesn't implement an
+event handler, the event will be pushed on a random linked sink pad for
+downstream events or a random linked source pad for upstream events.
+
+This function takes ownership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled. Events that trigger a preroll (such
+as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send the event to.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to send to the element.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_base_time" c:identifier="gst_element_set_base_time">
+ <doc xml:space="preserve">Set the base time of an element. See gst_element_get_base_time().
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">the base time to set.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_bus" c:identifier="gst_element_set_bus">
+ <doc xml:space="preserve">Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you're testing elements.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the bus of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="bus"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBus to set.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_clock" c:identifier="gst_element_set_clock">
+ <doc xml:space="preserve">Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element accepted the clock. An element can refuse a
+clock when it, for example, is not able to slave its internal clock to the
+@clock or when it requires a specific clock to operate.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the clock for.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstClock to set for the element.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_context" c:identifier="gst_element_set_context">
+ <doc xml:space="preserve">Sets the context of the element. Increases the refcount of the context.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstContext to set.</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_locked_state"
+ c:identifier="gst_element_set_locked_state">
+ <doc xml:space="preserve">Locks the state of an element, so state changes of the parent don't affect
+this element anymore.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the state was changed, %FALSE if bad parameters were given
+or the elements state-locking needed no change.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="locked_state" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to lock the element's state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_start_time" c:identifier="gst_element_set_start_time">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">the base time to set.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_state" c:identifier="gst_element_set_state">
+ <doc xml:space="preserve">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'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 %GST_MESSAGE_ASYNC_DONE or
+%GST_MESSAGE_STATE_CHANGED on the bus.
+
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Result of the state change using #GstStateChangeReturn.
+
+MT safe.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to change state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">the element's new #GstState.</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sync_state_with_parent"
+ c:identifier="gst_element_sync_state_with_parent">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the element's state could be synced to the parent's state.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unlink" c:identifier="gst_element_unlink">
+ <doc xml:space="preserve">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().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstElement to unlink.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstElement to unlink.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unlink_many"
+ c:identifier="gst_element_unlink_many"
+ introspectable="0">
+ <doc xml:space="preserve">Unlinks a series of elements. Uses gst_element_unlink().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element_1" transfer-ownership="none">
+ <doc xml:space="preserve">the first #GstElement in the link chain.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="element_2" transfer-ownership="none">
+ <doc xml:space="preserve">the second #GstElement in the link chain.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the %NULL-terminated list of elements to unlink in order.</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unlink_pads" c:identifier="gst_element_unlink_pads">
+ <doc xml:space="preserve">Unlinks the two named pads of the source and destination elements.
+
+This is a convenience function for gst_pad_unlink().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a (transfer none): #GstElement containing the source pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </instance-parameter>
+ <parameter name="srcpadname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPad in source element.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement containing the destination pad.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="destpadname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPad in destination element.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="state_lock">
+ <doc xml:space="preserve">Used to serialize execution of gst_element_set_state()</doc>
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="state_cond">
+ <doc xml:space="preserve">Used to signal completion of a state change</doc>
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <field name="state_cookie">
+ <doc xml:space="preserve">Used to detect concurrent execution of
+gst_element_set_state() and gst_element_get_state()</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="target_state">
+ <doc xml:space="preserve">the target state of an element as set by the application</doc>
+ <type name="State" c:type="GstState"/>
+ </field>
+ <field name="current_state">
+ <doc xml:space="preserve">the current state of an element</doc>
+ <type name="State" c:type="GstState"/>
+ </field>
+ <field name="next_state">
+ <doc xml:space="preserve">the next state of an element, can be #GST_STATE_VOID_PENDING if
+the element is in the correct state.</doc>
+ <type name="State" c:type="GstState"/>
+ </field>
+ <field name="pending_state">
+ <doc xml:space="preserve">the final state the element should go to, can be
+#GST_STATE_VOID_PENDING if the element is in the correct state</doc>
+ <type name="State" c:type="GstState"/>
+ </field>
+ <field name="last_return">
+ <doc xml:space="preserve">the last return value of an element state change</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </field>
+ <field name="bus">
+ <doc xml:space="preserve">the bus of the element. This bus is provided to the element by the
+parent element or the application. A #GstPipeline has a bus of its own.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </field>
+ <field name="clock">
+ <doc xml:space="preserve">the clock of the element. This clock is usually provided to the
+element by the toplevel #GstPipeline.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </field>
+ <field name="base_time">
+ <doc xml:space="preserve">the time of the clock right before the element is set to
+PLAYING. Subtracting @base_time from the current clock time in the PLAYING
+state will yield the running_time against the clock.</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </field>
+ <field name="start_time">
+ <doc xml:space="preserve">the running_time of the last PAUSED state</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="numpads">
+ <doc xml:space="preserve">number of pads of the element, includes both source and sink pads.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="pads">
+ <doc xml:space="preserve">list of pads</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Pad"/>
+ </type>
+ </field>
+ <field name="numsrcpads">
+ <doc xml:space="preserve">number of source pads of the element.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="srcpads">
+ <doc xml:space="preserve">list of source pads</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Pad"/>
+ </type>
+ </field>
+ <field name="numsinkpads">
+ <doc xml:space="preserve">number of sink pads of the element.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="sinkpads">
+ <doc xml:space="preserve">list of sink pads</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Pad"/>
+ </type>
+ </field>
+ <field name="pads_cookie">
+ <doc xml:space="preserve">updated whenever the a pad is added or removed</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="contexts">
+ <doc xml:space="preserve">list of contexts</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Context"/>
+ </type>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="no-more-pads" when="last">
+ <doc xml:space="preserve">This signals that the element will not generate more dynamic pads.
+Note that this signal will usually be emitted from the context of
+the streaming thread.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="pad-added" when="last">
+ <doc xml:space="preserve">a new #GstPad has been added to the element. Note that this signal will
+usually be emitted from the context of the streaming thread. Also keep in
+mind that if you add new elements to the pipeline in the signal handler
+you will need to set them to the desired target state with
+gst_element_set_state() or gst_element_sync_state_with_parent().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="new_pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad that has been added</doc>
+ <type name="Pad"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="pad-removed" when="last">
+ <doc xml:space="preserve">a #GstPad has been removed from the element</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="old_pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad that has been removed</doc>
+ <type name="Pad"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <callback name="ElementCallAsyncFunc" c:type="GstElementCallAsyncFunc">
+ <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="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="ElementClass"
+ c:type="GstElementClass"
+ glib:is-gtype-struct-for="Element">
+ <doc xml:space="preserve">GStreamer element class. Override the vmethods to implement the element
+functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="metadata">
+ <doc xml:space="preserve">metadata for elements of this class</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="elementfactory">
+ <doc xml:space="preserve">the #GstElementFactory that creates these elements</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </field>
+ <field name="padtemplates">
+ <doc xml:space="preserve">a #GList of #GstPadTemplate</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="numpadtemplates">
+ <doc xml:space="preserve">the number of padtemplates</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="pad_templ_cookie">
+ <doc xml:space="preserve">changed whenever the padtemplates change</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="pad_added">
+ <callback name="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">
+ <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">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="request_new_pad">
+ <callback name="request_new_pad">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">requested #GstPad if found,
+ otherwise %NULL. Release after usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to find a request pad of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate of which we want a pad of.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the request #GstPad
+to retrieve. Can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the caps of the pad we want to
+request. Can be %NULL.</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="release_pad">
+ <callback name="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">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state
+ 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.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to get the state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the state.
+ Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="pending"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to #GstState to hold the pending
+ state. Can be %NULL.</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime to specify the timeout for an async
+ state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_state">
+ <callback name="set_state">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Result of the state change using #GstStateChangeReturn.
+
+MT safe.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to change state of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">the element's new #GstState.</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="change_state">
+ <callback name="change_state">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStateChangeReturn of the state transition.</doc>
+ <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="transition" transfer-ownership="none">
+ <doc xml:space="preserve">the requested transition</doc>
+ <type name="StateChange" c:type="GstStateChange"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="state_changed">
+ <callback name="state_changed">
+ <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="oldstate" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="newstate" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="pending" transfer-ownership="none">
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_bus">
+ <callback name="set_bus">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the bus of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="bus"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBus to set.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="provide_clock">
+ <callback name="provide_clock">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GstClock provided by the
+element or %NULL if no clock could be provided. Unref after usage.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to query</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_clock">
+ <callback name="set_clock">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the element accepted the clock. An element can refuse a
+clock when it, for example, is not able to slave its internal clock to the
+@clock or when it requires a specific clock to operate.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the clock for.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstClock to set for the element.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="send_event">
+ <callback name="send_event">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled. Events that trigger a preroll (such
+as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to send the event to.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to send to the element.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="query">
+ <callback name="query">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to perform the query on.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="post_message">
+ <callback name="post_message">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message was successfully posted. The function returns
+%FALSE if the element did not have a bus.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement posting the message</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMessage to post</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_context">
+ <callback name="set_context">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElement to set the context of.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstContext to set.</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_metadata"
+ c:identifier="gst_element_class_add_metadata">
+ <doc xml:space="preserve">Set @key with @value as metadata in @klass.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_pad_template"
+ c:identifier="gst_element_class_add_pad_template">
+ <doc xml:space="preserve">Adds a padtemplate to an element class. This is mainly used in the _class_init
+functions of classes. If a pad template with the same name as an already
+existing one is added the old one is replaced by the new one.
+
+@templ's reference count will be incremented, and any floating
+reference will be removed (see gst_object_ref_sink())</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElementClass to add the pad template to.</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate to add to the element class.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_static_metadata"
+ c:identifier="gst_element_class_add_static_metadata">
+ <doc xml:space="preserve">Set @key with @value as metadata in @klass.
+
+Same as gst_element_class_add_metadata(), but @value must be a static string
+or an inlined string, as it will not be copied. (GStreamer plugins will
+be made resident once loaded, so this function can be used even from
+dynamically loaded plugins.)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_static_pad_template"
+ c:identifier="gst_element_class_add_static_pad_template"
+ version="1.8">
+ <doc xml:space="preserve">Adds a pad template to an element class based on the static pad template
+@templ. This is mainly used in the _class_init functions of element
+implementations. If a pad template with the same name already exists,
+the old one is replaced by the new one.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElementClass to add the pad template to.</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="static_templ" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStaticPadTemplate to add as pad template to the element class.</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_static_pad_template_with_gtype"
+ c:identifier="gst_element_class_add_static_pad_template_with_gtype"
+ version="1.14">
+ <doc xml:space="preserve">Adds a pad template to an element class based on the static pad template
+@templ. This is mainly used in the _class_init functions of element
+implementations. If a pad template with the same name already exists,
+the old one is replaced by the new one.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElementClass to add the pad template to.</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="static_templ" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStaticPadTemplate to add as pad template to the element class.</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </parameter>
+ <parameter name="pad_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the pad to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_element_class_get_metadata">
+ <doc xml:space="preserve">Get metadata with @key in @klass.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the metadata for @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to get metadata for</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template"
+ c:identifier="gst_element_class_get_pad_template">
+ <doc xml:space="preserve">Retrieves a padtemplate from @element_class with the given name.
+&gt; If you use this function in the #GInstanceInitFunc of an object class
+&gt; that has subclasses, make sure to pass the g_class parameter of the
+&gt; #GInstanceInitFunc here.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstPadTemplate with the
+ given name, or %NULL if none was found. No unreferencing is
+ necessary.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element_class" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementClass to get the pad template of.</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPadTemplate to get.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template_list"
+ c:identifier="gst_element_class_get_pad_template_list">
+ <doc xml:space="preserve">Retrieves a list of the pad templates associated with @element_class. The
+list must not be modified by the calling code.
+&gt; If you use this function in the #GInstanceInitFunc of an object class
+&gt; that has subclasses, make sure to pass the g_class parameter of the
+&gt; #GInstanceInitFunc here.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GList of
+ pad templates.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PadTemplate"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="element_class" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementClass to get pad templates of.</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_metadata"
+ c:identifier="gst_element_class_set_metadata">
+ <doc xml:space="preserve">Sets the detailed information for a #GstElementClass.
+&gt; This function is for use in _class_init functions only.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="longname" transfer-ownership="none">
+ <doc xml:space="preserve">The long English name of the element. E.g. "File Sink"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="classification" transfer-ownership="none">
+ <doc xml:space="preserve">String describing the type of element, as an unordered list
+separated with slashes ('/'). See draft-klass.txt of the design docs
+for more details and common types. E.g: "Sink/File"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">Sentence describing the purpose of the element.
+E.g: "Write stream to a file"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="author" transfer-ownership="none">
+ <doc xml:space="preserve">Name and contact details of the author(s). Use \n to separate
+multiple author metadata. E.g: "Joe Bloggs &amp;lt;joe.blogs at foo.com&amp;gt;"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_static_metadata"
+ c:identifier="gst_element_class_set_static_metadata">
+ <doc xml:space="preserve">Sets the detailed information for a #GstElementClass.
+
+&gt; This function is for use in _class_init functions only.
+
+Same as gst_element_class_set_metadata(), but @longname, @classification,
+@description, and @author must be static strings or inlined strings, as
+they will not be copied. (GStreamer plugins will be made resident once
+loaded, so this function can be used even from dynamically loaded plugins.)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">class to set metadata for</doc>
+ <type name="ElementClass" c:type="GstElementClass*"/>
+ </instance-parameter>
+ <parameter name="longname" transfer-ownership="none">
+ <doc xml:space="preserve">The long English name of the element. E.g. "File Sink"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="classification" transfer-ownership="none">
+ <doc xml:space="preserve">String describing the type of element, as an unordered list
+separated with slashes ('/'). See draft-klass.txt of the design docs
+for more details and common types. E.g: "Sink/File"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">Sentence describing the purpose of the element.
+E.g: "Write stream to a file"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="author" transfer-ownership="none">
+ <doc xml:space="preserve">Name and contact details of the author(s). Use \n to separate
+multiple author metadata. E.g: "Joe Bloggs &amp;lt;joe.blogs at foo.com&amp;gt;"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="ElementFactory"
+ c:symbol-prefix="element_factory"
+ c:type="GstElementFactory"
+ parent="PluginFeature"
+ glib:type-name="GstElementFactory"
+ glib:get-type="gst_element_factory_get_type"
+ glib:type-struct="ElementFactoryClass">
+ <doc xml:space="preserve">#GstElementFactory is used to create instances of elements. A
+GstElementFactory can be added to a #GstPlugin as it is also a
+#GstPluginFeature.
+
+Use the gst_element_factory_find() and gst_element_factory_create()
+functions to create element instances or use gst_element_factory_make() as a
+convenient shortcut.
+
+The following code example shows you how to create a GstFileSrc element.
+
+## Using an element factory
+|[&lt;!-- language="C" --&gt;
+ #include &amp;lt;gst/gst.h&amp;gt;
+
+ GstElement *src;
+ GstElementFactory *srcfactory;
+
+ gst_init (&amp;amp;argc, &amp;amp;argv);
+
+ srcfactory = gst_element_factory_find ("filesrc");
+ g_return_if_fail (srcfactory != NULL);
+ src = gst_element_factory_create (srcfactory, "src");
+ g_return_if_fail (src != NULL);
+ ...
+]|</doc>
+ <function name="find" c:identifier="gst_element_factory_find">
+ <doc xml:space="preserve">Search for an element factory of the given name. Refs the returned
+element factory; caller is responsible for unreffing.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">#GstElementFactory if found,
+%NULL otherwise</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of factory to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="list_filter"
+ c:identifier="gst_element_factory_list_filter">
+ <doc xml:space="preserve">Filter out all the elementfactories in @list that can handle @caps in
+the given direction.
+
+If @subsetonly is %TRUE, then only the elements whose pads templates
+are a complete superset of @caps will be returned. Else any element
+whose pad templates caps can intersect with @caps will be returned.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstElementFactory elements that match the given requisites.
+ Use #gst_plugin_feature_list_free after usage.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="ElementFactory"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GList of
+ #GstElementFactory to filter</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="ElementFactory"/>
+ </type>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadDirection to filter on</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="subsetonly" transfer-ownership="none">
+ <doc xml:space="preserve">whether to filter on caps subsets or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="list_get_elements"
+ c:identifier="gst_element_factory_list_get_elements">
+ <doc xml:space="preserve">Get a list of factories that match the given @type. Only elements
+with a rank greater or equal to @minrank will be returned.
+The list of factories is returned by decreasing rank.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstElementFactory elements. Use gst_plugin_feature_list_free() after
+ usage.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="ElementFactory"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactoryListType</doc>
+ <type name="ElementFactoryListType"
+ c:type="GstElementFactoryListType"/>
+ </parameter>
+ <parameter name="minrank" transfer-ownership="none">
+ <doc xml:space="preserve">Minimum rank</doc>
+ <type name="Rank" c:type="GstRank"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="make" c:identifier="gst_element_factory_make">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">new #GstElement or %NULL
+if unable to create element</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="factoryname" transfer-ownership="none">
+ <doc xml:space="preserve">a named factory to instantiate</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new element, or %NULL to automatically create
+ a unique name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="can_sink_all_caps"
+ c:identifier="gst_element_factory_can_sink_all_caps">
+ <doc xml:space="preserve">Checks if the factory can sink all possible capabilities.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps are fully compatible.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to query</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the caps to check</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="can_sink_any_caps"
+ c:identifier="gst_element_factory_can_sink_any_caps">
+ <doc xml:space="preserve">Checks if the factory can sink any possible capability.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps have a common subset.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to query</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the caps to check</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="can_src_all_caps"
+ c:identifier="gst_element_factory_can_src_all_caps">
+ <doc xml:space="preserve">Checks if the factory can src all possible capabilities.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps are fully compatible.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to query</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the caps to check</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="can_src_any_caps"
+ c:identifier="gst_element_factory_can_src_any_caps">
+ <doc xml:space="preserve">Checks if the factory can src any possible capability.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps have a common subset.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to query</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the caps to check</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create" c:identifier="gst_element_factory_create">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">new #GstElement or %NULL
+ if the element couldn't be created</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to instantiate</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new element, or %NULL to automatically create
+ a unique name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_element_type"
+ c:identifier="gst_element_factory_get_element_type">
+ <doc xml:space="preserve">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().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GType for elements managed by this factory or 0 if
+the factory is not loaded.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to get managed #GType from</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata"
+ c:identifier="gst_element_factory_get_metadata">
+ <doc xml:space="preserve">Get the metadata on @factory with @key.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the metadata with @key on @factory or %NULL
+when there was no metadata with the given @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">a key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_metadata_keys"
+ c:identifier="gst_element_factory_get_metadata_keys">
+ <doc xml:space="preserve">Get the available keys for the metadata on @factory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">
+a %NULL-terminated array of key strings, or %NULL when there is no
+metadata. Free with g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_num_pad_templates"
+ c:identifier="gst_element_factory_get_num_pad_templates">
+ <doc xml:space="preserve">Gets the number of pad_templates in this factory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of pad_templates</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_static_pad_templates"
+ c:identifier="gst_element_factory_get_static_pad_templates">
+ <doc xml:space="preserve">Gets the #GList of #GstStaticPadTemplate for this factory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the
+ static pad templates</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="StaticPadTemplate"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri_protocols"
+ c:identifier="gst_element_factory_get_uri_protocols">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the supported protocols
+ or %NULL</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri_type"
+ c:identifier="gst_element_factory_get_uri_type">
+ <doc xml:space="preserve">Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">type of URIs this element supports</doc>
+ <type name="URIType" c:type="GstURIType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_interface"
+ c:identifier="gst_element_factory_has_interface">
+ <doc xml:space="preserve">Check if @factory implements the interface with name @interfacename.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @factory implement the interface.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="interfacename" transfer-ownership="none">
+ <doc xml:space="preserve">an interface name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="list_is_type"
+ c:identifier="gst_element_factory_list_is_type">
+ <doc xml:space="preserve">Check if @factory is of the given types.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @factory is of @type.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactory</doc>
+ <type name="ElementFactory" c:type="GstElementFactory*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstElementFactoryListType</doc>
+ <type name="ElementFactoryListType"
+ c:type="GstElementFactoryListType"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="ElementFactoryClass"
+ c:type="GstElementFactoryClass"
+ disguised="1"
+ glib:is-gtype-struct-for="ElementFactory">
+ </record>
+ <bitfield name="ElementFlags"
+ glib:type-name="GstElementFlags"
+ glib:get-type="gst_element_flags_get_type"
+ c:type="GstElementFlags">
+ <doc xml:space="preserve">The standard flags that an element may have.</doc>
+ <member name="locked_state"
+ value="16"
+ c:identifier="GST_ELEMENT_FLAG_LOCKED_STATE"
+ glib:nick="locked-state">
+ <doc xml:space="preserve">ignore state changes from parent</doc>
+ </member>
+ <member name="sink"
+ value="32"
+ c:identifier="GST_ELEMENT_FLAG_SINK"
+ glib:nick="sink">
+ <doc xml:space="preserve">the element is a sink</doc>
+ </member>
+ <member name="source"
+ value="64"
+ c:identifier="GST_ELEMENT_FLAG_SOURCE"
+ glib:nick="source">
+ <doc xml:space="preserve">the element is a source.</doc>
+ </member>
+ <member name="provide_clock"
+ value="128"
+ c:identifier="GST_ELEMENT_FLAG_PROVIDE_CLOCK"
+ glib:nick="provide-clock">
+ <doc xml:space="preserve">the element can provide a clock</doc>
+ </member>
+ <member name="require_clock"
+ value="256"
+ c:identifier="GST_ELEMENT_FLAG_REQUIRE_CLOCK"
+ glib:nick="require-clock">
+ <doc xml:space="preserve">the element requires a clock</doc>
+ </member>
+ <member name="indexable"
+ value="512"
+ c:identifier="GST_ELEMENT_FLAG_INDEXABLE"
+ glib:nick="indexable">
+ <doc xml:space="preserve">the element can use an index</doc>
+ </member>
+ <member name="last"
+ value="16384"
+ c:identifier="GST_ELEMENT_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <callback name="ElementForeachPadFunc"
+ c:type="GstElementForeachPadFunc"
+ version="1.14">
+ <doc xml:space="preserve">Function called for each pad when using gst_element_foreach_sink_pad(),
+gst_element_foreach_src_pad(), or gst_element_foreach_pad().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE to stop iterating pads, %TRUE to continue</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data passed to the foreach function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="Event"
+ c:type="GstEvent"
+ glib:type-name="GstEvent"
+ glib:get-type="gst_event_get_type"
+ c:symbol-prefix="event">
+ <doc xml:space="preserve">The event class provides factory methods to construct events for sending
+and functions to query (parse) received events.
+
+Events are usually created with gst_event_new_*() which takes event-type
+specific parameters as arguments.
+To send an event application will usually use gst_element_send_event() and
+elements will use gst_pad_send_event() or gst_pad_push_event().
+The event should be unreffed with gst_event_unref() if it has not been sent.
+
+Events that have been received can be parsed with their respective
+gst_event_parse_*() functions. It is valid to pass %NULL for unwanted details.
+
+Events are passed between elements in parallel to the data stream. Some events
+are serialized with buffers, others are not. Some events only travel downstream,
+others only upstream. Some events can travel both upstream and downstream.
+
+The events are used to signal special conditions in the datastream such as
+EOS (end of stream) or the start of a new stream-segment.
+Events are also used to flush the pipeline of any pending data.
+
+Most of the event API is used inside plugins. Applications usually only
+construct and use seek events.
+To do that gst_event_new_seek() is used to create a seek event. It takes
+the needed parameters to specify seeking time and mode.
+|[&lt;!-- language="C" --&gt;
+ GstEvent *event;
+ gboolean result;
+ ...
+ // construct a seek event to play the media from second 2 to 5, flush
+ // the pipeline to decrease latency.
+ event = gst_event_new_seek (1.0,
+ GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, 2 * GST_SECOND,
+ GST_SEEK_TYPE_SET, 5 * GST_SECOND);
+ ...
+ result = gst_element_send_event (pipeline, event);
+ if (!result)
+ g_warning ("seek failed");
+ ...
+]|</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">the parent structure</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the #GstEventType of the event</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </field>
+ <field name="timestamp" writable="1">
+ <doc xml:space="preserve">the timestamp of the event</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="seqnum" writable="1">
+ <doc xml:space="preserve">the sequence number of the event</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <constructor name="new_buffer_size"
+ c:identifier="gst_event_new_buffer_size">
+ <doc xml:space="preserve">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 preferred.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">buffer format</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="minsize" transfer-ownership="none">
+ <doc xml:space="preserve">minimum buffer size</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">maximum buffer size</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="async" transfer-ownership="none">
+ <doc xml:space="preserve">thread behavior</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_caps" c:identifier="gst_event_new_caps">
+ <doc xml:space="preserve">Create a new CAPS event for @caps. The caps event can only travel downstream
+synchronized with the buffer flow and contains the format of the buffers
+that will follow after the event.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new CAPS event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_custom" c:identifier="gst_event_new_custom">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new custom event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The type of the new event</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the structure for the event. The event will
+ take ownership of the structure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_eos" c:identifier="gst_event_new_eos">
+ <doc xml:space="preserve">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_EOS 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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new EOS event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_flush_start"
+ c:identifier="gst_event_new_flush_start">
+ <doc xml:space="preserve">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_FLUSHING when used for data flow with gst_pad_push(),
+gst_pad_chain(), 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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new flush start event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_flush_stop"
+ c:identifier="gst_event_new_flush_stop">
+ <doc xml:space="preserve">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 preceding FLUSH_START event stopped the dataflow.
+
+This event is typically generated to complete a seek and to resume
+dataflow.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new flush stop event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="reset_time" transfer-ownership="none">
+ <doc xml:space="preserve">if time should be reset</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_gap" c:identifier="gst_event_new_gap">
+ <doc xml:space="preserve">Create a new GAP event. A gap event can be thought of as conceptually
+equivalent to a buffer to signal that there is no data for a certain
+amount of time. This is useful to signal a gap to downstream elements
+which may wait for data, such as muxers or mixers or overlays, especially
+for sparse streams such as subtitle streams.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new GAP event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the start time (pts) of the gap</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the gap</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_latency" c:identifier="gst_event_new_latency">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="latency" transfer-ownership="none">
+ <doc xml:space="preserve">the new latency value</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_navigation"
+ c:identifier="gst_event_new_navigation">
+ <doc xml:space="preserve">Create a new navigation event from the given description.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">description of the event. The event will take
+ ownership of the structure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_protection"
+ c:identifier="gst_event_new_protection"
+ version="1.6">
+ <doc xml:space="preserve">Creates a new event containing information specific to a particular
+protection system (uniquely identified by @system_id), by which that
+protection system can acquire key(s) to decrypt a protected stream.
+
+In order for a decryption element to decrypt media
+protected using a specific system, it first needs all the
+protection system specific information necessary to acquire the decryption
+key(s) for that stream. The functions defined here enable this information
+to be passed in events from elements that extract it
+(e.g., ISOBMFF demuxers, MPEG DASH demuxers) to protection decrypter
+elements that use it.
+
+Events containing protection system specific information are created using
+#gst_event_new_protection, and they can be parsed by downstream elements
+using #gst_event_parse_protection.
+
+In Common Encryption, protection system specific information may be located
+within ISOBMFF files, both in movie (moov) boxes and movie fragment (moof)
+boxes; it may also be contained in ContentProtection elements within MPEG
+DASH MPDs. The events created by #gst_event_new_protection contain data
+identifying from which of these locations the encapsulated protection system
+specific information originated. This origin information is required as
+some protection systems use different encodings depending upon where the
+information originates.
+
+The events returned by gst_event_new_protection() are implemented
+in such a way as to ensure that the most recently-pushed protection info
+event of a particular @origin and @system_id will
+be stuck to the output pad of the sending element.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GST_EVENT_PROTECTION event, if successful; %NULL
+if unsuccessful.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="system_id" transfer-ownership="none">
+ <doc xml:space="preserve">a string holding a UUID that uniquely
+identifies a protection system.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding protection system specific
+information. The reference count of the buffer will be incremented by one.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="origin" transfer-ownership="none">
+ <doc xml:space="preserve">a string indicating where the protection
+information carried in the event was extracted from. The allowed values
+of this string will depend upon the protection scheme.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_qos" c:identifier="gst_event_new_qos">
+ <doc xml:space="preserve">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 or
+throttling. Typically sinks generate these events for each buffer
+they receive.
+
+@type indicates the reason for the QoS event. #GST_QOS_TYPE_OVERFLOW is
+used when a buffer arrived in time or when the sink cannot keep up with
+the upstream datarate. #GST_QOS_TYPE_UNDERFLOW is when the sink is not
+receiving buffers fast enough and thus has to drop late buffers.
+#GST_QOS_TYPE_THROTTLE is used when the datarate is artificially limited
+by the application, for example to reduce power consumption.
+
+@proportion indicates the real-time performance of the streaming in the
+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.
+
+@diff is the difference against the clock in running time of the last
+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. When throttling is
+enabled, @diff will be set to the requested throttling interval.
+
+@timestamp is the timestamp of the last buffer that cause the element
+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 positive @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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new QOS event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the QoS type</doc>
+ <type name="QOSType" c:type="GstQOSType"/>
+ </parameter>
+ <parameter name="proportion" transfer-ownership="none">
+ <doc xml:space="preserve">the proportion of the qos message</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="diff" transfer-ownership="none">
+ <doc xml:space="preserve">The time difference of the last Clock sync</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">The timestamp of the buffer</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_reconfigure"
+ c:identifier="gst_event_new_reconfigure">
+ <doc xml:space="preserve">Create a new reconfigure event. The purpose of the reconfigure event is
+to travel upstream and make elements renegotiate their caps or reconfigure
+their buffer pools. This is useful when changing properties on elements
+or changing the topology of the pipeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_seek" c:identifier="gst_event_new_seek">
+ <doc xml:space="preserve">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_type and @stop_type specify how to adjust the currently configured
+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 is updated, it must be different from
+-1 (#GST_CLOCK_TIME_NONE) 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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new seek event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">The new playback rate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format of the seek values</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The optional seek flags</doc>
+ <type name="SeekFlags" c:type="GstSeekFlags"/>
+ </parameter>
+ <parameter name="start_type" transfer-ownership="none">
+ <doc xml:space="preserve">The type and flags for the new start position</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the new start position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop_type" transfer-ownership="none">
+ <doc xml:space="preserve">The type and flags for the new stop position</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the new stop position</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_segment" c:identifier="gst_event_new_segment">
+ <doc xml:space="preserve">Create a new SEGMENT event for @segment. The segment event can only travel
+downstream synchronized with the buffer flow and contains timing information
+and playback properties for the buffers that will follow.
+
+The segment 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 time 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.
+@time represents the stream_time of a buffer carrying a timestamp of
+@start. @time cannot be -1.
+
+@start cannot be -1, @stop can be -1. If there
+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 segment event
+with @rate of 1.0 and @applied_rate of 2.0
+
+After a segment event, the buffer stream time is calculated with:
+
+ time + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new SEGMENT event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_segment_done"
+ c:identifier="gst_event_new_segment_done">
+ <doc xml:space="preserve">Create a new segment-done event. This event is sent by elements that
+finish playback of a segment as a result of a segment seek.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format of the position being done</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position of the segment being done</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_select_streams"
+ c:identifier="gst_event_new_select_streams"
+ version="1.10">
+ <doc xml:space="preserve">Allocate a new select-streams event.
+
+The select-streams event requests the specified @streams to be activated.
+
+The list of @streams corresponds to the "Stream ID" of each stream to be
+activated. Those ID can be obtained via the #GstStream objects present
+in #GST_EVENT_STREAM_START, #GST_EVENT_STREAM_COLLECTION or
+#GST_MESSAGE_STREAM_COLLECTION.
+
+Note: The list of @streams can not be empty.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new select-streams event or %NULL in case of
+an error (like an empty streams list).</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="streams" transfer-ownership="none">
+ <doc xml:space="preserve">the list of streams to
+activate</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_sink_message"
+ c:identifier="gst_event_new_sink_message">
+ <doc xml:space="preserve">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.
+
+@name is used to store multiple sticky events on one pad.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a name for the event</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMessage to be posted</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_step" c:identifier="gst_event_new_step">
+ <doc xml:space="preserve">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, for the effect of rate
+= 0.0 or first reverse the direction of playback using a seek event to get
+the same effect as rate &lt; 0.0.
+
+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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of @amount</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="amount" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of data to step</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the step rate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="flush" transfer-ownership="none">
+ <doc xml:space="preserve">flushing steps</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="intermediate" transfer-ownership="none">
+ <doc xml:space="preserve">intermediate steps</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_collection"
+ c:identifier="gst_event_new_stream_collection"
+ version="1.10">
+ <doc xml:space="preserve">Create a new STREAM_COLLECTION event. The stream collection event can only
+travel downstream synchronized with the buffer flow.
+
+Source elements, demuxers and other elements that manage collections
+of streams and post #GstStreamCollection messages on the bus also send
+this event downstream on each pad involved in the collection, so that
+activation of a new collection can be tracked through the downstream
+data flow.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new STREAM_COLLECTION event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">Active collection for this data flow</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_group_done"
+ c:identifier="gst_event_new_stream_group_done"
+ version="1.10">
+ <doc xml:space="preserve">Create a new Stream Group Done event. The stream-group-done event can
+only travel downstream synchronized with the buffer flow. Elements
+that receive the event on a pad should handle it mostly like EOS,
+and emit any data or pending buffers that would depend on more data
+arriving and unblock, since there won't be any more data.
+
+This event is followed by EOS at some point in the future, and is
+generally used when switching pads - to unblock downstream so that
+new pads can be exposed before sending EOS on the existing pads.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new stream-group-done event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="group_id" transfer-ownership="none">
+ <doc xml:space="preserve">the group id of the stream group which is ending</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_start"
+ c:identifier="gst_event_new_stream_start">
+ <doc xml:space="preserve">Create a new STREAM_START event. The stream start event can only
+travel downstream synchronized with the buffer flow. It is expected
+to be the first event that is sent for a new stream.
+
+Source elements, demuxers and other elements that create new streams
+are supposed to send this event as the first event of a new stream. It
+should not be sent after a flushing seek or in similar situations
+and is used to mark the beginning of a new logical stream. Elements
+combining multiple streams must ensure that this event is only forwarded
+downstream once and not for every single input stream.
+
+The @stream_id should be a unique string that consists of the upstream
+stream-id, / as separator and a unique stream-id for this specific
+stream. A new stream-id should only be created for a stream if the upstream
+stream is split into (potentially) multiple new streams, e.g. in a demuxer,
+but not for every single element in the pipeline.
+gst_pad_create_stream_id() or gst_pad_create_stream_id_printf() can be
+used to create a stream-id. There are no particular semantics for the
+stream-id, though it should be deterministic (to support stream matching)
+and it might be used to order streams (besides any information conveyed by
+stream flags).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new STREAM_START event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="stream_id" transfer-ownership="none">
+ <doc xml:space="preserve">Identifier for this stream</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_tag" c:identifier="gst_event_new_tag">
+ <doc xml:space="preserve">Generates a metadata tag event from the given @taglist.
+
+The scope of the taglist specifies if the taglist applies to the
+complete medium or only to this specific stream. As the tag event
+is a sticky event, elements should merge tags received from
+upstream with a given scope with their own tags with the same
+scope and create a new tag event from it.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="taglist" transfer-ownership="full">
+ <doc xml:space="preserve">metadata list. The event will take ownership
+ of the taglist.</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_toc" c:identifier="gst_event_new_toc">
+ <doc xml:space="preserve">Generate a TOC event from the given @toc. The purpose of the TOC event is to
+inform elements that some kind of the TOC was found.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">#GstToc structure.</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </parameter>
+ <parameter name="updated" transfer-ownership="none">
+ <doc xml:space="preserve">whether @toc was updated or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_toc_select"
+ c:identifier="gst_event_new_toc_select">
+ <doc xml:space="preserve">Generate a TOC select event with the given @uid. The purpose of the
+TOC select event is to start playback based on the TOC's entry with the
+given @uid.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uid" transfer-ownership="none">
+ <doc xml:space="preserve">UID in the TOC to start playback from.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy_segment" c:identifier="gst_event_copy_segment">
+ <doc xml:space="preserve">Parses a segment @event and copies the #GstSegment into the location
+given by @segment.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to parse</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to a #GstSegment</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_running_time_offset"
+ c:identifier="gst_event_get_running_time_offset"
+ version="1.4">
+ <doc xml:space="preserve">Retrieve the accumulated running time offset of the event.
+
+Events passing through #GstPads that have a running time
+offset set via gst_pad_set_offset() will get their offset
+adjusted according to the pad's offset.
+
+If the event contains any information that related to the
+running time, this information will need to be updated
+before usage with this offset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The event's running time offset
+
+MT safe.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_seqnum" c:identifier="gst_event_get_seqnum">
+ <doc xml:space="preserve">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 have the same sequence number unless
+that correspondence was made explicitly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The event's sequence number.
+
+MT safe.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_structure" c:identifier="gst_event_get_structure">
+ <doc xml:space="preserve">Access the structure of the event.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The structure of the event. The
+structure is still 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.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_name" c:identifier="gst_event_has_name">
+ <doc xml:space="preserve">Checks if @event has the given @name. This function is usually used to
+check the name of a custom event.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @name matches the name of the event structure.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name to check</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffer_size"
+ c:identifier="gst_event_parse_buffer_size">
+ <doc xml:space="preserve">Get the format, minsize, maxsize and async-flag in the buffersize event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to query</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the format in</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="minsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the minsize in</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="maxsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the maxsize in</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="async"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the async-flag in</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_caps" c:identifier="gst_event_parse_caps">
+ <doc xml:space="preserve">Get the caps from @event. The caps remains valid as long as @event remains
+valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to parse</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the caps</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_flush_stop"
+ c:identifier="gst_event_parse_flush_stop">
+ <doc xml:space="preserve">Parse the FLUSH_STOP event and retrieve the @reset_time member.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to parse</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="reset_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">if time should be reset</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_gap" c:identifier="gst_event_parse_gap">
+ <doc xml:space="preserve">Extract timestamp and duration from a new GAP event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEvent of type #GST_EVENT_GAP</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location where to store the
+ start time (pts) of the gap, or %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location where to store the duration of
+ the gap, or %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_group_id"
+ c:identifier="gst_event_parse_group_id"
+ version="1.2">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a group id was set on the event and could be parsed,
+ %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="group_id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of variable where to store the group id</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_latency" c:identifier="gst_event_parse_latency">
+ <doc xml:space="preserve">Get the latency in the latency event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to query</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the latency in.</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_protection"
+ c:identifier="gst_event_parse_protection"
+ version="1.6">
+ <doc xml:space="preserve">Parses an event containing protection system specific information and stores
+the results in @system_id, @data and @origin. The data stored in @system_id,
+@origin and @data are valid until @event is released.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a #GST_EVENT_PROTECTION event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="system_id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to store the UUID
+string uniquely identifying a content protection system.</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to store a #GstBuffer
+holding protection system specific information.</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="origin"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to store a value that
+indicates where the protection information carried by @event was extracted
+from.</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_qos" c:identifier="gst_event_parse_qos">
+ <doc xml:space="preserve">Get the type, proportion, diff and timestamp in the qos event. See
+gst_event_new_qos() for more information about the different QoS values.
+
+@timestamp will be adjusted for any pad offsets of pads it was passing through.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to query</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the QoS type in</doc>
+ <type name="QOSType" c:type="GstQOSType*"/>
+ </parameter>
+ <parameter name="proportion"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the proportion in</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="diff"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the diff in</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+ </parameter>
+ <parameter name="timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to store the timestamp in</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_seek" c:identifier="gst_event_parse_seek">
+ <doc xml:space="preserve">Parses a seek @event and stores the results in the given result locations.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a seek event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the rate</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the stream format</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="flags"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the #GstSeekFlags</doc>
+ <type name="SeekFlags" c:type="GstSeekFlags*"/>
+ </parameter>
+ <parameter name="start_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the #GstSeekType of the start position</doc>
+ <type name="SeekType" c:type="GstSeekType*"/>
+ </parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the start position expressed in @format</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="stop_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the #GstSeekType of the stop position</doc>
+ <type name="SeekType" c:type="GstSeekType*"/>
+ </parameter>
+ <parameter name="stop"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result location for the stop position expressed in @format</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_segment" c:identifier="gst_event_parse_segment">
+ <doc xml:space="preserve">Parses a segment @event and stores the result in the given @segment location.
+@segment remains valid only until the @event is freed. Don't modify the segment
+and make a copy if you want to modify it or store it for later use.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to parse</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="segment"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to a #GstSegment</doc>
+ <type name="Segment" c:type="const GstSegment**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_segment_done"
+ c:identifier="gst_event_parse_segment_done">
+ <doc xml:space="preserve">Extracts the position and format from the segment done message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstEvent of type GST_EVENT_SEGMENT_DONE.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the format, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the position, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_select_streams"
+ c:identifier="gst_event_parse_select_streams"
+ version="1.10">
+ <doc xml:space="preserve">Parse the SELECT_STREAMS event and retrieve the contained streams.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to parse</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="streams"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the streams</doc>
+ <type name="GLib.List" c:type="GList**">
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_sink_message"
+ c:identifier="gst_event_parse_sink_message">
+ <doc xml:space="preserve">Parse the sink-message event. Unref @msg after usage.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to query</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to store the #GstMessage in.</doc>
+ <type name="Message" c:type="GstMessage**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_step" c:identifier="gst_event_parse_step">
+ <doc xml:space="preserve">Parse the step event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The event to query</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the format in</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="amount"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the amount in</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the rate in</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="flush"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the flush boolean in</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="intermediate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the intermediate
+ boolean in</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream"
+ c:identifier="gst_event_parse_stream"
+ version="1.10">
+ <doc xml:space="preserve">Parse a stream-start @event and extract the #GstStream from it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="stream"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">adress of variable to store the stream</doc>
+ <type name="Stream" c:type="GstStream**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_collection"
+ c:identifier="gst_event_parse_stream_collection"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve new #GstStreamCollection from STREAM_COLLECTION event @event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-collection event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="collection"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to store the collection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_flags"
+ c:identifier="gst_event_parse_stream_flags"
+ version="1.2">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="flags"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of variable where to store the stream flags</doc>
+ <type name="StreamFlags" c:type="GstStreamFlags*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_group_done"
+ c:identifier="gst_event_parse_stream_group_done"
+ version="1.10">
+ <doc xml:space="preserve">Parse a stream-group-done @event and store the result in the given
+@group_id location.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-group-done event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="group_id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of variable to store the group id into</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_start"
+ c:identifier="gst_event_parse_stream_start">
+ <doc xml:space="preserve">Parse a stream-id @event and store the result in the given @stream_id
+location. The string stored in @stream_id must not be modified and will
+remain valid only until @event gets freed. Make a copy if you want to
+modify it or store it for later use.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="stream_id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to store the stream-id</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_tag" c:identifier="gst_event_parse_tag">
+ <doc xml:space="preserve">Parses a tag @event and stores the results in the given @taglist location.
+No reference to the taglist will be returned, it remains valid only until
+the @event is freed. Don't modify or free the taglist, make a copy if you
+want to modify it or store it for later use.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a tag event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="taglist"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to metadata list</doc>
+ <type name="TagList" c:type="GstTagList**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_toc" c:identifier="gst_event_parse_toc">
+ <doc xml:space="preserve">Parse a TOC @event and store the results in the given @toc and @updated locations.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a TOC event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="toc"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to #GstToc structure.</doc>
+ <type name="Toc" c:type="GstToc**"/>
+ </parameter>
+ <parameter name="updated"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to store TOC updated flag.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_toc_select"
+ c:identifier="gst_event_parse_toc_select">
+ <doc xml:space="preserve">Parse a TOC select @event and store the results in the given @uid location.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a TOC select event.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="uid"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">storage for the selection UID.</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_group_id"
+ c:identifier="gst_event_set_group_id"
+ version="1.2">
+ <doc xml:space="preserve">All streams that have the same group id are supposed to be played
+together, i.e. all streams inside a container file should have the
+same group id but different stream ids. The group id should change
+each time the stream is started, resulting in different group ids
+each time a file is played for example.
+
+Use gst_util_group_id_next() to get a new group id.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="group_id" transfer-ownership="none">
+ <doc xml:space="preserve">the group id to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_running_time_offset"
+ c:identifier="gst_event_set_running_time_offset"
+ version="1.4">
+ <doc xml:space="preserve">Set the running time offset of a event. See
+gst_event_get_running_time_offset() for more information.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">A the new running time offset</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_seqnum" c:identifier="gst_event_set_seqnum">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="seqnum" transfer-ownership="none">
+ <doc xml:space="preserve">A sequence number.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream"
+ c:identifier="gst_event_set_stream"
+ version="1.10">
+ <doc xml:space="preserve">Set the @stream on the stream-start @event</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">the stream object to set</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream_flags"
+ c:identifier="gst_event_set_stream_flags"
+ version="1.2">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a stream-start event</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the stream flags to set</doc>
+ <type name="StreamFlags" c:type="GstStreamFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="writable_structure"
+ c:identifier="gst_event_writable_structure">
+ <doc xml:space="preserve">Get a writable version of the structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The structure of the event. The structure
+is still owned by the event, which means that you should not free
+it and that the pointer becomes invalid when you free the event.
+This function checks if @event is writable and will never return
+%NULL.
+
+MT safe.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="EventType"
+ glib:type-name="GstEventType"
+ glib:get-type="gst_event_type_get_type"
+ c:type="GstEventType">
+ <doc xml:space="preserve">#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'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.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_EVENT_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown event.</doc>
+ </member>
+ <member name="flush_start"
+ value="2563"
+ c:identifier="GST_EVENT_FLUSH_START"
+ glib:nick="flush-start">
+ <doc xml:space="preserve">Start a flush operation. This event clears all data
+ from the pipeline and unblock all streaming threads.</doc>
+ </member>
+ <member name="flush_stop"
+ value="5127"
+ c:identifier="GST_EVENT_FLUSH_STOP"
+ glib:nick="flush-stop">
+ <doc xml:space="preserve">Stop a flush operation. This event resets the
+ running-time of the pipeline.</doc>
+ </member>
+ <member name="stream_start"
+ value="10254"
+ c:identifier="GST_EVENT_STREAM_START"
+ glib:nick="stream-start">
+ <doc xml:space="preserve">Event to mark the start of a new stream. Sent before any
+ other serialized event and only sent at the start of a new stream,
+ not after flushing seeks.</doc>
+ </member>
+ <member name="caps"
+ value="12814"
+ c:identifier="GST_EVENT_CAPS"
+ glib:nick="caps">
+ <doc xml:space="preserve">#GstCaps event. Notify the pad of a new media type.</doc>
+ </member>
+ <member name="segment"
+ value="17934"
+ c:identifier="GST_EVENT_SEGMENT"
+ glib:nick="segment">
+ <doc xml:space="preserve">A new media segment follows in the dataflow. The
+ segment events contains information for clipping buffers and
+ converting buffer timestamps to running-time and
+ stream-time.</doc>
+ </member>
+ <member name="stream_collection"
+ value="19230"
+ c:identifier="GST_EVENT_STREAM_COLLECTION"
+ glib:nick="stream-collection">
+ <doc xml:space="preserve">A new #GstStreamCollection is available (Since 1.10)</doc>
+ </member>
+ <member name="tag"
+ value="20510"
+ c:identifier="GST_EVENT_TAG"
+ glib:nick="tag">
+ <doc xml:space="preserve">A new set of metadata tags has been found in the stream.</doc>
+ </member>
+ <member name="buffersize"
+ value="23054"
+ c:identifier="GST_EVENT_BUFFERSIZE"
+ glib:nick="buffersize">
+ <doc xml:space="preserve">Notification of buffering requirements. Currently not
+ used yet.</doc>
+ </member>
+ <member name="sink_message"
+ value="25630"
+ c:identifier="GST_EVENT_SINK_MESSAGE"
+ glib:nick="sink-message">
+ <doc xml:space="preserve">An event that sinks turn into a message. Used to
+ send messages that should be emitted in sync with
+ rendering.</doc>
+ </member>
+ <member name="stream_group_done"
+ value="26894"
+ c:identifier="GST_EVENT_STREAM_GROUP_DONE"
+ glib:nick="stream-group-done">
+ <doc xml:space="preserve">Indicates that there is no more data for
+ the stream group ID in the message. Sent before EOS
+ in some instances and should be handled mostly the same. (Since 1.10)</doc>
+ </member>
+ <member name="eos"
+ value="28174"
+ c:identifier="GST_EVENT_EOS"
+ glib:nick="eos">
+ <doc xml:space="preserve">End-Of-Stream. No more data is to be expected to follow
+ without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT
+ event.</doc>
+ </member>
+ <member name="toc"
+ value="30750"
+ c:identifier="GST_EVENT_TOC"
+ glib:nick="toc">
+ <doc xml:space="preserve">An event which indicates that a new table of contents (TOC)
+ was found or updated.</doc>
+ </member>
+ <member name="protection"
+ value="33310"
+ c:identifier="GST_EVENT_PROTECTION"
+ glib:nick="protection">
+ <doc xml:space="preserve">An event which indicates that new or updated
+ encryption information has been found in the stream.</doc>
+ </member>
+ <member name="segment_done"
+ value="38406"
+ c:identifier="GST_EVENT_SEGMENT_DONE"
+ glib:nick="segment-done">
+ <doc xml:space="preserve">Marks the end of a segment playback.</doc>
+ </member>
+ <member name="gap"
+ value="40966"
+ c:identifier="GST_EVENT_GAP"
+ glib:nick="gap">
+ <doc xml:space="preserve">Marks a gap in the datastream.</doc>
+ </member>
+ <member name="qos"
+ value="48641"
+ c:identifier="GST_EVENT_QOS"
+ glib:nick="qos">
+ <doc xml:space="preserve">A quality message. Used to indicate to upstream elements
+ that the downstream elements should adjust their processing
+ rate.</doc>
+ </member>
+ <member name="seek"
+ value="51201"
+ c:identifier="GST_EVENT_SEEK"
+ glib:nick="seek">
+ <doc xml:space="preserve">A request for a new playback position and rate.</doc>
+ </member>
+ <member name="navigation"
+ value="53761"
+ c:identifier="GST_EVENT_NAVIGATION"
+ glib:nick="navigation">
+ <doc xml:space="preserve">Navigation events are usually used for communicating
+ user requests, such as mouse or keyboard movements,
+ to upstream elements.</doc>
+ </member>
+ <member name="latency"
+ value="56321"
+ c:identifier="GST_EVENT_LATENCY"
+ glib:nick="latency">
+ <doc xml:space="preserve">Notification of new latency adjustment. Sinks will use
+ the latency information to adjust their synchronisation.</doc>
+ </member>
+ <member name="step"
+ value="58881"
+ c:identifier="GST_EVENT_STEP"
+ glib:nick="step">
+ <doc xml:space="preserve">A request for stepping through the media. Sinks will usually
+ execute the step operation.</doc>
+ </member>
+ <member name="reconfigure"
+ value="61441"
+ c:identifier="GST_EVENT_RECONFIGURE"
+ glib:nick="reconfigure">
+ <doc xml:space="preserve">A request for upstream renegotiating caps and reconfiguring.</doc>
+ </member>
+ <member name="toc_select"
+ value="64001"
+ c:identifier="GST_EVENT_TOC_SELECT"
+ glib:nick="toc-select">
+ <doc xml:space="preserve">A request for a new playback position based on TOC
+ entry's UID.</doc>
+ </member>
+ <member name="select_streams"
+ value="66561"
+ c:identifier="GST_EVENT_SELECT_STREAMS"
+ glib:nick="select-streams">
+ <doc xml:space="preserve">A request to select one or more streams (Since 1.10)</doc>
+ </member>
+ <member name="custom_upstream"
+ value="69121"
+ c:identifier="GST_EVENT_CUSTOM_UPSTREAM"
+ glib:nick="custom-upstream">
+ <doc xml:space="preserve">Upstream custom event</doc>
+ </member>
+ <member name="custom_downstream"
+ value="71686"
+ c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"
+ glib:nick="custom-downstream">
+ <doc xml:space="preserve">Downstream custom event that travels in the
+ data flow.</doc>
+ </member>
+ <member name="custom_downstream_oob"
+ value="74242"
+ c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"
+ glib:nick="custom-downstream-oob">
+ <doc xml:space="preserve">Custom out-of-band downstream event.</doc>
+ </member>
+ <member name="custom_downstream_sticky"
+ value="76830"
+ c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_STICKY"
+ glib:nick="custom-downstream-sticky">
+ <doc xml:space="preserve">Custom sticky downstream event.</doc>
+ </member>
+ <member name="custom_both"
+ value="79367"
+ c:identifier="GST_EVENT_CUSTOM_BOTH"
+ glib:nick="custom-both">
+ <doc xml:space="preserve">Custom upstream or downstream event.
+ In-band when travelling downstream.</doc>
+ </member>
+ <member name="custom_both_oob"
+ value="81923"
+ c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"
+ glib:nick="custom-both-oob">
+ <doc xml:space="preserve">Custom upstream or downstream out-of-band event.</doc>
+ </member>
+ <function name="get_flags" c:identifier="gst_event_type_get_flags">
+ <doc xml:space="preserve">Gets the #GstEventTypeFlags associated with @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEventTypeFlags.</doc>
+ <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEventType</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_name" c:identifier="gst_event_type_get_name">
+ <doc xml:space="preserve">Get a printable name for the given event type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the event.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the event type</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_quark" c:identifier="gst_event_type_to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given event type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the event type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the event type</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <bitfield name="EventTypeFlags"
+ glib:type-name="GstEventTypeFlags"
+ glib:get-type="gst_event_type_flags_get_type"
+ c:type="GstEventTypeFlags">
+ <doc xml:space="preserve">#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.</doc>
+ <member name="upstream"
+ value="1"
+ c:identifier="GST_EVENT_TYPE_UPSTREAM"
+ glib:nick="upstream">
+ <doc xml:space="preserve">Set if the event can travel upstream.</doc>
+ </member>
+ <member name="downstream"
+ value="2"
+ c:identifier="GST_EVENT_TYPE_DOWNSTREAM"
+ glib:nick="downstream">
+ <doc xml:space="preserve">Set if the event can travel downstream.</doc>
+ </member>
+ <member name="serialized"
+ value="4"
+ c:identifier="GST_EVENT_TYPE_SERIALIZED"
+ glib:nick="serialized">
+ <doc xml:space="preserve">Set if the event should be serialized with data
+ flow.</doc>
+ </member>
+ <member name="sticky"
+ value="8"
+ c:identifier="GST_EVENT_TYPE_STICKY"
+ glib:nick="sticky">
+ <doc xml:space="preserve">Set if the event is sticky on the pads.</doc>
+ </member>
+ <member name="sticky_multi"
+ value="16"
+ c:identifier="GST_EVENT_TYPE_STICKY_MULTI"
+ glib:nick="sticky-multi">
+ <doc xml:space="preserve">Multiple sticky events can be on a pad, each
+ identified by the event name.</doc>
+ </member>
+ </bitfield>
+ <constant name="FLAG_SET_MASK_EXACT"
+ value="4294967295"
+ c:type="GST_FLAG_SET_MASK_EXACT"
+ version="1.6">
+ <doc xml:space="preserve">A mask value with all bits set, for use as a
+GstFlagSet mask where all flag bits must match
+exactly</doc>
+ <type name="guint" c:type="guint"/>
+ </constant>
+ <constant name="FORMAT_PERCENT_MAX"
+ value="1000000"
+ c:type="GST_FORMAT_PERCENT_MAX">
+ <doc xml:space="preserve">The PERCENT format is between 0 and this value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </constant>
+ <constant name="FORMAT_PERCENT_SCALE"
+ value="10000"
+ c:type="GST_FORMAT_PERCENT_SCALE">
+ <doc xml:space="preserve">The value used to scale down the reported PERCENT format value to
+its real value.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </constant>
+ <constant name="FOURCC_FORMAT" value="c%c%c%c" c:type="GST_FOURCC_FORMAT">
+ <doc xml:space="preserve">Can be used together with #GST_FOURCC_ARGS to properly output a
+#guint32 fourcc value in a printf()-style text message.
+
+|[
+printf ("fourcc: %" GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS (fcc));
+]|</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="FlagSet"
+ c:symbol-prefix="flagset"
+ glib:type-name="GstFlagSet"
+ glib:get-type="gst_flagset_get_type"
+ glib:fundamental="1">
+ <function name="register"
+ c:identifier="gst_flagset_register"
+ version="1.6">
+ <doc xml:space="preserve">Create a new sub-class of #GST_TYPE_FLAG_SET
+which will pretty-print the human-readable flags
+when serializing, for easier debugging.</doc>
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags_type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GType of a #G_TYPE_FLAGS type.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </class>
+ <enumeration name="FlowReturn"
+ glib:type-name="GstFlowReturn"
+ glib:get-type="gst_flow_return_get_type"
+ c:type="GstFlowReturn">
+ <doc xml:space="preserve">The result of passing data to a pad.
+
+Note that the custom return values should not be exposed outside of the
+element scope.</doc>
+ <member name="custom_success_2"
+ value="102"
+ c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"
+ glib:nick="custom-success-2">
+ <doc xml:space="preserve">Pre-defined custom success code.</doc>
+ </member>
+ <member name="custom_success_1"
+ value="101"
+ c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"
+ glib:nick="custom-success-1">
+ <doc xml:space="preserve">Pre-defined custom success code (define your
+ custom success code to this to avoid compiler
+ warnings).</doc>
+ </member>
+ <member name="custom_success"
+ value="100"
+ c:identifier="GST_FLOW_CUSTOM_SUCCESS"
+ glib:nick="custom-success">
+ <doc xml:space="preserve">Elements can use values starting from
+ this (and higher) to define custom success
+ codes.</doc>
+ </member>
+ <member name="ok" value="0" c:identifier="GST_FLOW_OK" glib:nick="ok">
+ <doc xml:space="preserve">Data passing was ok.</doc>
+ </member>
+ <member name="not_linked"
+ value="-1"
+ c:identifier="GST_FLOW_NOT_LINKED"
+ glib:nick="not-linked">
+ <doc xml:space="preserve">Pad is not linked.</doc>
+ </member>
+ <member name="flushing"
+ value="-2"
+ c:identifier="GST_FLOW_FLUSHING"
+ glib:nick="flushing">
+ <doc xml:space="preserve">Pad is flushing.</doc>
+ </member>
+ <member name="eos"
+ value="-3"
+ c:identifier="GST_FLOW_EOS"
+ glib:nick="eos">
+ <doc xml:space="preserve">Pad is EOS.</doc>
+ </member>
+ <member name="not_negotiated"
+ value="-4"
+ c:identifier="GST_FLOW_NOT_NEGOTIATED"
+ glib:nick="not-negotiated">
+ <doc xml:space="preserve">Pad is not negotiated.</doc>
+ </member>
+ <member name="error"
+ value="-5"
+ c:identifier="GST_FLOW_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">Some (fatal) error occurred. Element generating
+ this error should post an error message with more
+ details.</doc>
+ </member>
+ <member name="not_supported"
+ value="-6"
+ c:identifier="GST_FLOW_NOT_SUPPORTED"
+ glib:nick="not-supported">
+ <doc xml:space="preserve">This operation is not supported.</doc>
+ </member>
+ <member name="custom_error"
+ value="-100"
+ c:identifier="GST_FLOW_CUSTOM_ERROR"
+ glib:nick="custom-error">
+ <doc xml:space="preserve">Elements can use values starting from
+ this (and lower) to define custom error codes.</doc>
+ </member>
+ <member name="custom_error_1"
+ value="-101"
+ c:identifier="GST_FLOW_CUSTOM_ERROR_1"
+ glib:nick="custom-error-1">
+ <doc xml:space="preserve">Pre-defined custom error code (define your
+ custom error code to this to avoid compiler
+ warnings).</doc>
+ </member>
+ <member name="custom_error_2"
+ value="-102"
+ c:identifier="GST_FLOW_CUSTOM_ERROR_2"
+ glib:nick="custom-error-2">
+ <doc xml:space="preserve">Pre-defined custom error code.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="Format"
+ glib:type-name="GstFormat"
+ glib:get-type="gst_format_get_type"
+ c:type="GstFormat">
+ <doc xml:space="preserve">Standard predefined formats</doc>
+ <member name="undefined"
+ value="0"
+ c:identifier="GST_FORMAT_UNDEFINED"
+ glib:nick="undefined">
+ <doc xml:space="preserve">undefined format</doc>
+ </member>
+ <member name="default"
+ value="1"
+ c:identifier="GST_FORMAT_DEFAULT"
+ glib:nick="default">
+ <doc xml:space="preserve">the default format of the pad/element. This can be
+ samples for raw audio, frames/fields for raw video (some, but not all,
+ elements support this; use @GST_FORMAT_TIME if you don't have a good
+ reason to query for samples/frames)</doc>
+ </member>
+ <member name="bytes"
+ value="2"
+ c:identifier="GST_FORMAT_BYTES"
+ glib:nick="bytes">
+ <doc xml:space="preserve">bytes</doc>
+ </member>
+ <member name="time"
+ value="3"
+ c:identifier="GST_FORMAT_TIME"
+ glib:nick="time">
+ <doc xml:space="preserve">time in nanoseconds</doc>
+ </member>
+ <member name="buffers"
+ value="4"
+ c:identifier="GST_FORMAT_BUFFERS"
+ glib:nick="buffers">
+ <doc xml:space="preserve">buffers (few, if any, elements implement this as of
+ May 2009)</doc>
+ </member>
+ <member name="percent"
+ value="5"
+ c:identifier="GST_FORMAT_PERCENT"
+ glib:nick="percent">
+ <doc xml:space="preserve">percentage of stream (few, if any, elements implement
+ this as of May 2009)</doc>
+ </member>
+ <function name="get_by_nick" c:identifier="gst_format_get_by_nick">
+ <doc xml:space="preserve">Return the format registered with the given nick.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The format with @nick or GST_FORMAT_UNDEFINED
+if the format was not registered.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">The nick of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_details" c:identifier="gst_format_get_details">
+ <doc xml:space="preserve">Get details about the given format.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstFormatDefinition for @format or %NULL
+on failure.
+
+MT safe.</doc>
+ <type name="FormatDefinition" c:type="const GstFormatDefinition*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format to get details of</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_name" c:identifier="gst_format_get_name">
+ <doc xml:space="preserve">Get a printable name for the given format. Do not modify or free.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a reference to the static name of the format
+or %NULL if the format is unknown.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="iterate_definitions"
+ c:identifier="gst_format_iterate_definitions">
+ <doc xml:space="preserve">Iterate all the registered formats. The format definition is read
+only.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a GstIterator of #GstFormatDefinition.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ </function>
+ <function name="register" c:identifier="gst_format_register">
+ <doc xml:space="preserve">Create a new GstFormat based on the nick or return an
+already registered format with that nick.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new GstFormat or an already registered format
+with the same nick.
+
+MT safe.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">The nick of the new format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">The description of the new format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_quark" c:identifier="gst_format_to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the format or 0 if the format
+is unknown.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <record name="FormatDefinition" c:type="GstFormatDefinition">
+ <doc xml:space="preserve">A format definition</doc>
+ <field name="value" writable="1">
+ <doc xml:space="preserve">The unique id of this format</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </field>
+ <field name="nick" writable="1">
+ <doc xml:space="preserve">A short nick of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" writable="1">
+ <doc xml:space="preserve">A longer description of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="quark" writable="1">
+ <doc xml:space="preserve">A quark for the nick</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </field>
+ </record>
+ <class name="Fraction"
+ c:symbol-prefix="fraction"
+ glib:type-name="GstFraction"
+ glib:get-type="gst_fraction_get_type"
+ glib:fundamental="1">
+ </class>
+ <class name="FractionRange"
+ c:symbol-prefix="fraction_range"
+ glib:type-name="GstFractionRange"
+ glib:get-type="gst_fraction_range_get_type"
+ glib:fundamental="1">
+ </class>
+ <constant name="GROUP_ID_INVALID"
+ value="0"
+ c:type="GST_GROUP_ID_INVALID"
+ version="1.14">
+ <doc xml:space="preserve">A value which is guaranteed to never be returned by
+gst_util_group_id_next().
+
+Can be used as a default value in variables used to store group_id.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <class name="GhostPad"
+ c:symbol-prefix="ghost_pad"
+ c:type="GstGhostPad"
+ parent="ProxyPad"
+ glib:type-name="GstGhostPad"
+ glib:get-type="gst_ghost_pad_get_type"
+ glib:type-struct="GhostPadClass">
+ <doc xml:space="preserve">GhostPads are useful when organizing pipelines with #GstBin like elements.
+The idea here is to create hierarchical element graphs. The bin element
+contains a sub-graph. Now one would like to treat the bin-element like any
+other #GstElement. This is where GhostPads come into play. A GhostPad acts as
+a proxy for another pad. Thus the bin can have sink and source ghost-pads
+that are associated with sink and source pads of the child elements.
+
+If the target pad is known at creation time, gst_ghost_pad_new() is the
+function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target()
+to create the ghost-pad and use gst_ghost_pad_set_target() to establish the
+association later on.
+
+Note that GhostPads add overhead to the data processing of a pipeline.</doc>
+ <constructor name="new" c:identifier="gst_ghost_pad_new">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new pad, or %NULL to assign a default name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to ghost.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_template"
+ c:identifier="gst_ghost_pad_new_from_template">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new pad, or %NULL to assign a default name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to ghost.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadTemplate to use on the ghostpad.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_no_target"
+ c:identifier="gst_ghost_pad_new_no_target">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new pad, or %NULL to assign a default name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dir" transfer-ownership="none">
+ <doc xml:space="preserve">the direction of the ghostpad</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_no_target_from_template"
+ c:identifier="gst_ghost_pad_new_no_target_from_template">
+ <doc xml:space="preserve">Create a new ghostpad based on @templ, without setting a target. The
+direction will be taken from the @templ.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new pad, or %NULL to assign a default name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadTemplate to create the ghostpad from.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <function name="activate_mode_default"
+ c:identifier="gst_ghost_pad_activate_mode_default">
+ <doc xml:space="preserve">Invoke the default activate mode function of a ghost pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the operation was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to activate or deactivate.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the requested activation mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">whether the pad should be active or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="internal_activate_mode_default"
+ c:identifier="gst_ghost_pad_internal_activate_mode_default">
+ <doc xml:space="preserve">Invoke the default activate mode function of a proxy pad that is
+owned by a ghost pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the operation was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to activate or deactivate.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the requested activation mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">whether the pad should be active or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="construct" c:identifier="gst_ghost_pad_construct">
+ <doc xml:space="preserve">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, "direction", @dir, ..., NULL).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the construction succeeds, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="gpad" transfer-ownership="none">
+ <doc xml:space="preserve">the newly allocated ghost pad</doc>
+ <type name="GhostPad" c:type="GstGhostPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_target" c:identifier="gst_ghost_pad_get_target">
+ <doc xml:space="preserve">Get the target pad of @gpad. Unref target pad after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the target #GstPad, can be
+%NULL if the ghostpad has no target set. Unref target pad after
+usage.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="gpad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstGhostPad</doc>
+ <type name="GhostPad" c:type="GstGhostPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_target" c:identifier="gst_ghost_pad_set_target">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the new target could be set. This function
+ can return %FALSE when the internal pads could not be linked.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="gpad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstGhostPad</doc>
+ <type name="GhostPad" c:type="GstGhostPad*"/>
+ </instance-parameter>
+ <parameter name="newtarget"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the new pad target</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="pad">
+ <type name="ProxyPad" c:type="GstProxyPad"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <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" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="GhostPadPrivate" c:type="GstGhostPadPrivate" disguised="1">
+ </record>
+ <class name="Int64Range"
+ c:symbol-prefix="int64_range"
+ glib:type-name="GstInt64Range"
+ glib:get-type="gst_int64_range_get_type"
+ glib:fundamental="1">
+ </class>
+ <class name="IntRange"
+ c:symbol-prefix="int_range"
+ glib:type-name="GstIntRange"
+ glib:get-type="gst_int_range_get_type"
+ glib:fundamental="1">
+ </class>
+ <record name="Iterator"
+ c:type="GstIterator"
+ glib:type-name="GstIterator"
+ glib:get-type="gst_iterator_get_type"
+ c:symbol-prefix="iterator">
+ <doc xml:space="preserve">A GstIterator is used to retrieve multiple objects from another object in
+a threadsafe way.
+
+Various GStreamer objects provide access to their internal structures using
+an iterator.
+
+Note that if calling a GstIterator function results in your code receiving
+a refcounted object (with, say, g_value_get_object()), the refcount for that
+object will not be increased. Your code is responsible for taking a reference
+if it wants to continue using it later.
+
+The basic use pattern of an iterator is as follows:
+|[&lt;!-- language="C" --&gt;
+ GstIterator *it = _get_iterator(object);
+ GValue item = G_VALUE_INIT;
+ done = FALSE;
+ while (!done) {
+ switch (gst_iterator_next (it, &amp;amp;item)) {
+ case GST_ITERATOR_OK:
+ ...get/use/change item here...
+ g_value_reset (&amp;amp;item);
+ break;
+ case GST_ITERATOR_RESYNC:
+ ...rollback changes to items...
+ gst_iterator_resync (it);
+ break;
+ case GST_ITERATOR_ERROR:
+ ...wrong parameters were given...
+ done = TRUE;
+ break;
+ case GST_ITERATOR_DONE:
+ done = TRUE;
+ break;
+ }
+ }
+ g_value_unset (&amp;amp;item);
+ gst_iterator_free (it);
+]|</doc>
+ <field name="copy" writable="1">
+ <doc xml:space="preserve">The function to copy the iterator</doc>
+ <type name="IteratorCopyFunction" c:type="GstIteratorCopyFunction"/>
+ </field>
+ <field name="next" writable="1">
+ <doc xml:space="preserve">The function to get the next item in the iterator</doc>
+ <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+ </field>
+ <field name="item" writable="1">
+ <doc xml:space="preserve">The function to be called for each item retrieved</doc>
+ <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+ </field>
+ <field name="resync" writable="1">
+ <doc xml:space="preserve">The function to call when a resync is needed.</doc>
+ <type name="IteratorResyncFunction"
+ c:type="GstIteratorResyncFunction"/>
+ </field>
+ <field name="free" writable="1">
+ <doc xml:space="preserve">The function to call when the iterator is freed</doc>
+ <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+ </field>
+ <field name="pushed" writable="1">
+ <doc xml:space="preserve">The iterator that is currently pushed with gst_iterator_push()</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">The type of the object that this iterator will return</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="lock" writable="1">
+ <doc xml:space="preserve">The lock protecting the data structure and the cookie.</doc>
+ <type name="GLib.Mutex" c:type="GMutex*"/>
+ </field>
+ <field name="cookie" writable="1">
+ <doc xml:space="preserve">The cookie; the value of the master_cookie when this iterator was
+ created.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="master_cookie" writable="1">
+ <doc xml:space="preserve">A pointer to the master cookie.</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the size of the iterator</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_iterator_new"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstIterator.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the iterator structure</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">#GType of children</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="lock" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a #GMutex.</doc>
+ <type name="GLib.Mutex" c:type="GMutex*"/>
+ </parameter>
+ <parameter name="master_cookie" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a guint32 that is changed when the items in the
+ iterator changed.</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="copy" transfer-ownership="none">
+ <doc xml:space="preserve">copy function</doc>
+ <type name="IteratorCopyFunction"
+ c:type="GstIteratorCopyFunction"/>
+ </parameter>
+ <parameter name="next" transfer-ownership="none">
+ <doc xml:space="preserve">function to get next item</doc>
+ <type name="IteratorNextFunction"
+ c:type="GstIteratorNextFunction"/>
+ </parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">function to call on each item retrieved</doc>
+ <type name="IteratorItemFunction"
+ c:type="GstIteratorItemFunction"/>
+ </parameter>
+ <parameter name="resync" transfer-ownership="none">
+ <doc xml:space="preserve">function to resync the iterator</doc>
+ <type name="IteratorResyncFunction"
+ c:type="GstIteratorResyncFunction"/>
+ </parameter>
+ <parameter name="free" transfer-ownership="none">
+ <doc xml:space="preserve">function to free the iterator</doc>
+ <type name="IteratorFreeFunction"
+ c:type="GstIteratorFreeFunction"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_list"
+ c:identifier="gst_iterator_new_list"
+ introspectable="0">
+ <doc xml:space="preserve">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.
+
+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().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstIterator for @list.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">#GType of elements</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="lock" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a #GMutex protecting the list.</doc>
+ <type name="GLib.Mutex" c:type="GMutex*"/>
+ </parameter>
+ <parameter name="master_cookie" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a guint32 that is incremented when the list
+ is changed.</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to the list</doc>
+ <type name="GLib.List" c:type="GList**">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </parameter>
+ <parameter name="owner" transfer-ownership="none">
+ <doc xml:space="preserve">object owning the list</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">function to call on each item retrieved</doc>
+ <type name="IteratorItemFunction"
+ c:type="GstIteratorItemFunction"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_single" c:identifier="gst_iterator_new_single">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstIterator for @object.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">#GType of the passed object</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">object that this iterator should return</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="gst_iterator_copy">
+ <doc xml:space="preserve">Copy the iterator and its state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new copy of @it.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstIterator</doc>
+ <type name="Iterator" c:type="const GstIterator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="filter" c:identifier="gst_iterator_filter">
+ <doc xml:space="preserve">Create a new iterator from an existing iterator. The new iterator
+will only return those elements that match the given compare function @func.
+The first parameter that is passed to @func is the #GValue of the current
+iterator element and the second parameter is @user_data. @func should
+return 0 for elements that should be included in the filtered iterator.
+
+When this iterator is freed, @it will also be freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstIterator.
+
+MT safe.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to filter</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="func" transfer-ownership="none" scope="call">
+ <doc xml:space="preserve">the compare function to select elements</doc>
+ <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <doc xml:space="preserve">user data passed to the compare function</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_custom" c:identifier="gst_iterator_find_custom">
+ <doc xml:space="preserve">Find the first element in @it that matches the compare function @func.
+@func should return 0 when the element is found. The first parameter
+to @func will be the current element of the iterator and the
+second parameter will be @user_data.
+The result will be stored in @elem if a result is found.
+
+The iterator will not be freed.
+
+This function will return %FALSE if an error happened to the iterator
+or if the element wasn't found.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Returns %TRUE if the element was found, else %FALSE.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to iterate</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="2">
+ <doc xml:space="preserve">the compare function to use</doc>
+ <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+ </parameter>
+ <parameter name="elem"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a #GValue where to store the result</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the compare function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fold" c:identifier="gst_iterator_fold">
+ <doc xml:space="preserve">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
+@ret.
+
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A #GstIteratorResult, as described above.
+
+MT safe.</doc>
+ <type name="IteratorResult" c:type="GstIteratorResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to fold over</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="2">
+ <doc xml:space="preserve">the fold function</doc>
+ <type name="IteratorFoldFunction"
+ c:type="GstIteratorFoldFunction"/>
+ </parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">the seed value passed to the fold function</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the fold function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="gst_iterator_foreach">
+ <doc xml:space="preserve">Iterate over all element of @it and call the given function @func for
+each element.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result call to gst_iterator_fold(). The iterator will not be
+freed.
+
+MT safe.</doc>
+ <type name="IteratorResult" c:type="GstIteratorResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to iterate</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to call for each element.</doc>
+ <type name="IteratorForeachFunction"
+ c:type="GstIteratorForeachFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_iterator_free">
+ <doc xml:space="preserve">Free the iterator.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to free</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="next" c:identifier="gst_iterator_next">
+ <doc xml:space="preserve">Get the next item from the iterator in @elem.
+
+Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
+value. @elem must have been initialized to the type of the iterator or
+initialized to zeroes with g_value_unset(). The caller is responsible for
+unsetting or resetting @elem with g_value_unset() or g_value_reset()
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The result of the iteration. Unset @elem after usage.
+
+MT safe.</doc>
+ <type name="IteratorResult" c:type="GstIteratorResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to iterate</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="elem"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to hold next element</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_iterator_push">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to use</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ <parameter name="other" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to push</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="resync" c:identifier="gst_iterator_resync">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstIterator to resync</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="IteratorCopyFunction" c:type="GstIteratorCopyFunction">
+ <doc xml:space="preserve">This function will be called when creating a copy of @it and should
+create a copy of all custom iterator fields or increase their
+reference counts.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">The original iterator</doc>
+ <type name="Iterator" c:type="const GstIterator*"/>
+ </parameter>
+ <parameter name="copy" transfer-ownership="none">
+ <doc xml:space="preserve">The copied iterator</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="IteratorFoldFunction" c:type="GstIteratorFoldFunction">
+ <doc xml:space="preserve">A function to be passed to gst_iterator_fold().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the fold should continue, %FALSE if it should stop.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">the item to fold</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue collecting the result</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">data passed to gst_iterator_fold()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="IteratorForeachFunction"
+ c:type="GstIteratorForeachFunction">
+ <doc xml:space="preserve">A function that is called by gst_iterator_foreach() for every element.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">The item</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">User data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="IteratorFreeFunction" c:type="GstIteratorFreeFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">the iterator</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="IteratorItem"
+ glib:type-name="GstIteratorItem"
+ glib:get-type="gst_iterator_item_get_type"
+ c:type="GstIteratorItem">
+ <doc xml:space="preserve">The result of a #GstIteratorItemFunction.</doc>
+ <member name="skip"
+ value="0"
+ c:identifier="GST_ITERATOR_ITEM_SKIP"
+ glib:nick="skip">
+ <doc xml:space="preserve">Skip this item</doc>
+ </member>
+ <member name="pass"
+ value="1"
+ c:identifier="GST_ITERATOR_ITEM_PASS"
+ glib:nick="pass">
+ <doc xml:space="preserve">Return item</doc>
+ </member>
+ <member name="end"
+ value="2"
+ c:identifier="GST_ITERATOR_ITEM_END"
+ glib:nick="end">
+ <doc xml:space="preserve">Stop after this item.</doc>
+ </member>
+ </enumeration>
+ <callback name="IteratorItemFunction" c:type="GstIteratorItemFunction">
+ <doc xml:space="preserve">The function that will be called after the next item of the iterator
+has been retrieved. This function can be used to skip items or stop
+the iterator.
+
+The function will be called with the iterator lock held.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the operation.</doc>
+ <type name="IteratorItem" c:type="GstIteratorItem"/>
+ </return-value>
+ <parameters>
+ <parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">the iterator</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">the item being retrieved.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="IteratorNextFunction" c:type="GstIteratorNextFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the operation.</doc>
+ <type name="IteratorResult" c:type="GstIteratorResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">the iterator</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ <parameter name="result" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to hold the next item</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="IteratorResult"
+ glib:type-name="GstIteratorResult"
+ glib:get-type="gst_iterator_result_get_type"
+ c:type="GstIteratorResult">
+ <doc xml:space="preserve">The result of gst_iterator_next().</doc>
+ <member name="done"
+ value="0"
+ c:identifier="GST_ITERATOR_DONE"
+ glib:nick="done">
+ <doc xml:space="preserve">No more items in the iterator</doc>
+ </member>
+ <member name="ok"
+ value="1"
+ c:identifier="GST_ITERATOR_OK"
+ glib:nick="ok">
+ <doc xml:space="preserve">An item was retrieved</doc>
+ </member>
+ <member name="resync"
+ value="2"
+ c:identifier="GST_ITERATOR_RESYNC"
+ glib:nick="resync">
+ <doc xml:space="preserve">Datastructure changed while iterating</doc>
+ </member>
+ <member name="error"
+ value="3"
+ c:identifier="GST_ITERATOR_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">An error happened</doc>
+ </member>
+ </enumeration>
+ <callback name="IteratorResyncFunction" c:type="GstIteratorResyncFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="it" transfer-ownership="none">
+ <doc xml:space="preserve">the iterator</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <constant name="LICENSE_UNKNOWN"
+ value="unknown"
+ c:type="GST_LICENSE_UNKNOWN">
+ <doc xml:space="preserve">To be used in GST_PLUGIN_DEFINE if unsure about the licence.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="LOCK_FLAG_READWRITE"
+ value="3"
+ c:type="GST_LOCK_FLAG_READWRITE">
+ <doc xml:space="preserve">GstLockFlags value alias for GST_LOCK_FLAG_READ | GST_LOCK_FLAG_WRITE</doc>
+ <type name="LockFlags" c:type="GstLockFlags"/>
+ </constant>
+ <enumeration name="LibraryError"
+ glib:type-name="GstLibraryError"
+ glib:get-type="gst_library_error_get_type"
+ c:type="GstLibraryError"
+ glib:error-domain="gst-library-error-quark">
+ <doc xml:space="preserve">Library errors are for errors from the library being used by elements
+(initializing, finalizing, settings, ...)</doc>
+ <member name="failed"
+ value="1"
+ c:identifier="GST_LIBRARY_ERROR_FAILED"
+ glib:nick="failed">
+ <doc xml:space="preserve">a general error which doesn't fit in any other
+category. Make sure you add a custom message to the error call.</doc>
+ </member>
+ <member name="too_lazy"
+ value="2"
+ c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"
+ glib:nick="too-lazy">
+ <doc xml:space="preserve">do not use this except as a placeholder for
+deciding where to go while developing code.</doc>
+ </member>
+ <member name="init"
+ value="3"
+ c:identifier="GST_LIBRARY_ERROR_INIT"
+ glib:nick="init">
+ <doc xml:space="preserve">used when the library could not be opened.</doc>
+ </member>
+ <member name="shutdown"
+ value="4"
+ c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"
+ glib:nick="shutdown">
+ <doc xml:space="preserve">used when the library could not be closed.</doc>
+ </member>
+ <member name="settings"
+ value="5"
+ c:identifier="GST_LIBRARY_ERROR_SETTINGS"
+ glib:nick="settings">
+ <doc xml:space="preserve">used when the library doesn't accept settings.</doc>
+ </member>
+ <member name="encode"
+ value="6"
+ c:identifier="GST_LIBRARY_ERROR_ENCODE"
+ glib:nick="encode">
+ <doc xml:space="preserve">used when the library generated an encoding error.</doc>
+ </member>
+ <member name="num_errors"
+ value="7"
+ c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"
+ glib:nick="num-errors">
+ <doc xml:space="preserve">the number of library error types.</doc>
+ </member>
+ <function name="quark" c:identifier="gst_library_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <bitfield name="LockFlags"
+ glib:type-name="GstLockFlags"
+ glib:get-type="gst_lock_flags_get_type"
+ c:type="GstLockFlags">
+ <doc xml:space="preserve">Flags used when locking miniobjects</doc>
+ <member name="read"
+ value="1"
+ c:identifier="GST_LOCK_FLAG_READ"
+ glib:nick="read">
+ <doc xml:space="preserve">lock for read access</doc>
+ </member>
+ <member name="write"
+ value="2"
+ c:identifier="GST_LOCK_FLAG_WRITE"
+ glib:nick="write">
+ <doc xml:space="preserve">lock for write access</doc>
+ </member>
+ <member name="exclusive"
+ value="4"
+ c:identifier="GST_LOCK_FLAG_EXCLUSIVE"
+ glib:nick="exclusive">
+ <doc xml:space="preserve">lock for exclusive access</doc>
+ </member>
+ <member name="last"
+ value="256"
+ c:identifier="GST_LOCK_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">first flag that can be used for custom purposes</doc>
+ </member>
+ </bitfield>
+ <callback name="LogFunction" c:type="GstLogFunction">
+ <doc xml:space="preserve">Function prototype for a logging function that can be registered with
+gst_debug_add_log_function().
+Use G_GNUC_NO_INSTRUMENT on that function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugCategory</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDebugLevel</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">file name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">function name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">line number</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message</doc>
+ <type name="DebugMessage" c:type="GstDebugMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="7">
+ <doc xml:space="preserve">user data for the log function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <constant name="MAP_READWRITE" value="3" c:type="GST_MAP_READWRITE">
+ <doc xml:space="preserve">GstMapFlags value alias for GST_MAP_READ | GST_MAP_WRITE</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </constant>
+ <constant name="META_TAG_MEMORY_STR"
+ value="memory"
+ c:type="GST_META_TAG_MEMORY_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata stays relevant as long as memory layout is unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="MSECOND" value="1000000" c:type="GST_MSECOND">
+ <doc xml:space="preserve">Constant that defines one GStreamer millisecond.</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </constant>
+ <bitfield name="MapFlags"
+ glib:type-name="GstMapFlags"
+ glib:get-type="gst_map_flags_get_type"
+ c:type="GstMapFlags">
+ <doc xml:space="preserve">Flags used when mapping memory</doc>
+ <member name="read"
+ value="1"
+ c:identifier="GST_MAP_READ"
+ glib:nick="read">
+ <doc xml:space="preserve">map for read access</doc>
+ </member>
+ <member name="write"
+ value="2"
+ c:identifier="GST_MAP_WRITE"
+ glib:nick="write">
+ <doc xml:space="preserve">map for write access</doc>
+ </member>
+ <member name="flag_last"
+ value="65536"
+ c:identifier="GST_MAP_FLAG_LAST"
+ glib:nick="flag-last">
+ <doc xml:space="preserve">first flag that can be used for custom purposes</doc>
+ </member>
+ </bitfield>
+ <record name="MapInfo" c:type="GstMapInfo">
+ <doc xml:space="preserve">A structure containing the result of a map operation such as
+gst_memory_map(). It contains the data and size.</doc>
+ <field name="memory" writable="1">
+ <doc xml:space="preserve">a pointer to the mapped memory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">flags used when mapping the memory</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">a pointer to the mapped data</doc>
+ <array length="3" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the valid size in @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="maxsize" writable="1">
+ <doc xml:space="preserve">the maximum bytes in @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="user_data" writable="1">
+ <doc xml:space="preserve">extra private user_data that the implementation of the memory
+ can use to store extra info.</doc>
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="Memory"
+ c:type="GstMemory"
+ glib:type-name="GstMemory"
+ glib:get-type="gst_memory_get_type"
+ c:symbol-prefix="memory">
+ <doc xml:space="preserve">GstMemory is a lightweight refcounted object that wraps a region of memory.
+They are typically used to manage the data of a #GstBuffer.
+
+A GstMemory object has an allocated region of memory of maxsize. The maximum
+size does not change during the lifetime of the memory object. The memory
+also has an offset and size property that specifies the valid range of memory
+in the allocated region.
+
+Memory is usually created by allocators with a gst_allocator_alloc()
+method call. When %NULL is used as the allocator, the default allocator will
+be used.
+
+New allocators can be registered with gst_allocator_register().
+Allocators are identified by name and can be retrieved with
+gst_allocator_find(). gst_allocator_set_default() can be used to change the
+default allocator.
+
+New memory can be created with gst_memory_new_wrapped() that wraps the memory
+allocated elsewhere.
+
+Refcounting of the memory block is performed with gst_memory_ref() and
+gst_memory_unref().
+
+The size of the memory can be retrieved and changed with
+gst_memory_get_sizes() and gst_memory_resize() respectively.
+
+Getting access to the data of the memory is performed with gst_memory_map().
+The call will return a pointer to offset bytes into the region of memory.
+After the memory access is completed, gst_memory_unmap() should be called.
+
+Memory can be copied with gst_memory_copy(), which will return a writable
+copy. gst_memory_share() will create a new memory block that shares the
+memory with an existing memory block at a custom offset and with a custom
+size.
+
+Memory can be efficiently merged when gst_memory_is_span() returns %TRUE.</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">parent structure</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="allocator" writable="1">
+ <doc xml:space="preserve">pointer to the #GstAllocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </field>
+ <field name="parent" writable="1">
+ <doc xml:space="preserve">parent memory block</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </field>
+ <field name="maxsize" writable="1">
+ <doc xml:space="preserve">the maximum size allocated</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="align" writable="1">
+ <doc xml:space="preserve">the alignment of the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">the offset where valid data starts</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the size of valid data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <constructor name="new_wrapped" c:identifier="gst_memory_new_wrapped">
+ <doc xml:space="preserve">Allocate a new memory block that wraps the given @data.
+
+The prefix/padding must be filled with 0 if @flags contains
+#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMemoryFlags</doc>
+ <type name="MemoryFlags" c:type="GstMemoryFlags"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data to
+ wrap</doc>
+ <array length="4" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">allocated size of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset in @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of valid data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="async"
+ closure="5">
+ <doc xml:space="preserve">called with @user_data when the memory is freed</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="gst_memory_copy">
+ <doc xml:space="preserve">Return a copy of @size bytes from @mem starting from @offset. This copy is
+guaranteed to be writable. @size can be set to -1 to return a copy
+from @offset to the end of the memory region.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset to copy from</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size to copy, or -1 to copy to the end of the memory region</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sizes" c:identifier="gst_memory_get_sizes">
+ <doc xml:space="preserve">Get the current @size, @offset and @maxsize of @mem.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the current sizes of @mem</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to offset</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ <parameter name="maxsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to maxsize</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_memory_init" introspectable="0">
+ <doc xml:space="preserve">Initializes a newly allocated @mem with the given parameters. This function
+will call gst_mini_object_init() with the default memory parameters.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMemoryFlags</doc>
+ <type name="MemoryFlags" c:type="GstMemoryFlags"/>
+ </parameter>
+ <parameter name="allocator" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAllocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent of @mem</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">the total size of the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">the alignment of the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">The offset in the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of valid data in the memory</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_span" c:identifier="gst_memory_is_span">
+ <doc xml:space="preserve">Check if @mem1 and mem2 share the memory with a common parent memory object
+and that the memory is contiguous.
+
+If this is the case, the memory of @mem1 and @mem2 can be merged
+efficiently by performing gst_memory_share() on the parent object from
+the returned @offset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the memory is contiguous and of a common parent.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="mem2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a result offset</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_type" c:identifier="gst_memory_is_type" version="1.2">
+ <doc xml:space="preserve">Check if @mem if allocated with an allocator for @mem_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @mem was allocated from an allocator for @mem_type.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="mem_type" transfer-ownership="none">
+ <doc xml:space="preserve">a memory type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="make_mapped" c:identifier="gst_memory_make_mapped">
+ <doc xml:space="preserve">Create a #GstMemory object that is mapped with @flags. If @mem is mappable
+with @flags, this function returns the mapped @mem directly. Otherwise a
+mapped copy of @mem is returned.
+
+This function takes ownership of old @mem and returns a reference to a new
+#GstMemory.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstMemory object mapped
+with @flags or %NULL when a mapping is not possible.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="info"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer for info</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">mapping flags</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map" c:identifier="gst_memory_map">
+ <doc xml:space="preserve">Fill @info with the pointer and sizes of the memory in @mem that can be
+accessed according to @flags.
+
+This function can return %FALSE for various reasons:
+- the memory backed by @mem is not accessible with the given @flags.
+- the memory was already mapped with a different mapping.
+
+@info and its contents remain valid for as long as @mem is valid and
+until gst_memory_unmap() is called.
+
+For each gst_memory_map() call, a corresponding gst_memory_unmap() call
+should be done.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the map operation was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="info"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer for info</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">mapping flags</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="resize" c:identifier="gst_memory_resize">
+ <doc xml:space="preserve">Resize the memory region. @mem should be writable and offset + size should be
+less than the maxsize of @mem.
+
+#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED will be
+cleared when offset or padding is increased respectively.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">a new offset</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">a new size</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="share" c:identifier="gst_memory_share">
+ <doc xml:space="preserve">Return a shared copy of @size bytes from @mem starting from @offset. No
+memory copy is performed and the memory region is simply shared. The result
+is guaranteed to be non-writable. @size can be set to -1 to return a shared
+copy from @offset to the end of the memory region.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMemory.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset to share from</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size to share, or -1 to share to the end of the memory region</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_memory_unmap">
+ <doc xml:space="preserve">Release the memory obtained with gst_memory_map()</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMapInfo</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="MemoryCopyFunction" c:type="GstMemoryCopyFunction">
+ <doc xml:space="preserve">Copy @size bytes from @mem starting at @offset and return them wrapped in a
+new GstMemory object.
+If @size is set to -1, all bytes starting at @offset are copied.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMemory object wrapping a copy of the requested region in
+@mem.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">an offset</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">a size or -1</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="MemoryFlags"
+ glib:type-name="GstMemoryFlags"
+ glib:get-type="gst_memory_flags_get_type"
+ c:type="GstMemoryFlags">
+ <doc xml:space="preserve">Flags for wrapped memory.</doc>
+ <member name="readonly"
+ value="2"
+ c:identifier="GST_MEMORY_FLAG_READONLY"
+ glib:nick="readonly">
+ <doc xml:space="preserve">memory is readonly. It is not allowed to map the
+memory with #GST_MAP_WRITE.</doc>
+ </member>
+ <member name="no_share"
+ value="16"
+ c:identifier="GST_MEMORY_FLAG_NO_SHARE"
+ glib:nick="no-share">
+ <doc xml:space="preserve">memory must not be shared. Copies will have to be
+made when this memory needs to be shared between buffers.</doc>
+ </member>
+ <member name="zero_prefixed"
+ value="32"
+ c:identifier="GST_MEMORY_FLAG_ZERO_PREFIXED"
+ glib:nick="zero-prefixed">
+ <doc xml:space="preserve">the memory prefix is filled with 0 bytes</doc>
+ </member>
+ <member name="zero_padded"
+ value="64"
+ c:identifier="GST_MEMORY_FLAG_ZERO_PADDED"
+ glib:nick="zero-padded">
+ <doc xml:space="preserve">the memory padding is filled with 0 bytes</doc>
+ </member>
+ <member name="physically_contiguous"
+ value="128"
+ c:identifier="GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS"
+ glib:nick="physically-contiguous">
+ <doc xml:space="preserve">the memory is physically contiguous. (Since 1.2)</doc>
+ </member>
+ <member name="not_mappable"
+ value="256"
+ c:identifier="GST_MEMORY_FLAG_NOT_MAPPABLE"
+ glib:nick="not-mappable">
+ <doc xml:space="preserve">the memory can't be mapped via gst_memory_map() without any preconditions. (Since 1.2)</doc>
+ </member>
+ <member name="last"
+ value="1048576"
+ c:identifier="GST_MEMORY_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">first flag that can be used for custom purposes</doc>
+ </member>
+ </bitfield>
+ <callback name="MemoryIsSpanFunction" c:type="GstMemoryIsSpanFunction">
+ <doc xml:space="preserve">Check if @mem1 and @mem2 occupy contiguous memory and return the offset of
+@mem1 in the parent buffer in @offset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @mem1 and @mem2 are in contiguous memory.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="mem2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">a result offset</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MemoryMapFullFunction" c:type="GstMemoryMapFullFunction">
+ <doc xml:space="preserve">Get the memory of @mem that can be accessed according to the mode specified
+in @info's flags. The function should return a pointer that contains at least
+@maxsize bytes.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer to memory of which at least @maxsize bytes can be
+accessed according to the access pattern in @info's flags.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMapInfo to map with</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">size to map</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MemoryMapFunction" c:type="GstMemoryMapFunction">
+ <doc xml:space="preserve">Get the memory of @mem that can be accessed according to the mode specified
+in @flags. The function should return a pointer that contains at least
+@maxsize bytes.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer to memory of which at least @maxsize bytes can be
+accessed according to the access pattern in @flags.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">size to map</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">access mode for the memory</doc>
+ <type name="MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MemoryShareFunction" c:type="GstMemoryShareFunction">
+ <doc xml:space="preserve">Share @size bytes from @mem starting at @offset and return them wrapped in a
+new GstMemory object. If @size is set to -1, all bytes starting at @offset are
+shared. This function does not make a copy of the bytes in @mem.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMemory object sharing the requested region in @mem.</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">an offset</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">a size or -1</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MemoryUnmapFullFunction"
+ c:type="GstMemoryUnmapFullFunction">
+ <doc xml:space="preserve">Return the pointer previously retrieved with gst_memory_map() with @info.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMapInfo</doc>
+ <type name="MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MemoryUnmapFunction" c:type="GstMemoryUnmapFunction">
+ <doc xml:space="preserve">Return the pointer previously retrieved with gst_memory_map().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMemory</doc>
+ <type name="Memory" c:type="GstMemory*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="Message"
+ c:type="GstMessage"
+ glib:type-name="GstMessage"
+ glib:get-type="gst_message_get_type"
+ c:symbol-prefix="message">
+ <doc xml:space="preserve">Messages are implemented as a subclass of #GstMiniObject with a generic
+#GstStructure as the content. This allows for writing custom messages without
+requiring an API change while allowing a wide range of different types
+of messages.
+
+Messages are posted by objects in the pipeline and are passed to the
+application using the #GstBus.
+
+The basic use pattern of posting a message on a #GstBus is as follows:
+|[&lt;!-- language="C" --&gt;
+ gst_bus_post (bus, gst_message_new_eos());
+]|
+
+A #GstElement usually posts messages on the bus provided by the parent
+container using gst_element_post_message().</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">the parent structure</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the #GstMessageType of the message</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </field>
+ <field name="timestamp" writable="1">
+ <doc xml:space="preserve">the timestamp of the message</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="src" writable="1">
+ <doc xml:space="preserve">the src of the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </field>
+ <field name="seqnum" writable="1">
+ <doc xml:space="preserve">the sequence number of the message</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="lock" readable="0" private="1">
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="cond" readable="0" private="1">
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <constructor name="new_application"
+ c:identifier="gst_message_new_application">
+ <doc xml:space="preserve">Create a new application-typed message. GStreamer will never create these
+messages; they are a gift from us to you. Enjoy.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new application message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the structure for the message. The message
+ will take ownership of the structure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_async_done"
+ c:identifier="gst_message_new_async_done">
+ <doc xml:space="preserve">The message is posted when elements completed an ASYNC state change.
+@running_time contains the time of the desired running_time when this
+elements goes to PLAYING. A value of #GST_CLOCK_TIME_NONE for @running_time
+means that the element has no clock interaction and thus doesn't care about
+the running_time of the pipeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new async_done message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the desired running_time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_async_start"
+ c:identifier="gst_message_new_async_start">
+ <doc xml:space="preserve">This message is posted by elements when they start an ASYNC state change.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new async_start message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_buffering"
+ c:identifier="gst_message_new_buffering">
+ <doc xml:space="preserve">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
+@percent is 100, the application can set the pipeline (back) to PLAYING.
+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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new buffering message.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="percent" transfer-ownership="none">
+ <doc xml:space="preserve">The buffering percent</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_clock_lost"
+ c:identifier="gst_message_new_clock_lost">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new clock lost message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">the clock that was lost</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_clock_provide"
+ c:identifier="gst_message_new_clock_provide">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new provide clock message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">the clock it provides</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ <parameter name="ready" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sender can provide a clock</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_custom" c:identifier="gst_message_new_custom">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMessageType to distinguish messages</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="structure"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the structure for the
+ message. The message will take ownership of the structure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_device_added"
+ c:identifier="gst_message_new_device_added"
+ version="1.4">
+ <doc xml:space="preserve">Creates a new device-added message. The device-added message is produced by
+#GstDeviceProvider or a #GstDeviceMonitor. They announce the appearance
+of monitored devices.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject that created the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">The new #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_device_removed"
+ c:identifier="gst_message_new_device_removed"
+ version="1.4">
+ <doc xml:space="preserve">Creates a new device-removed message. The device-removed message is produced
+by #GstDeviceProvider or a #GstDeviceMonitor. They announce the
+disappearance of monitored devices.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject that created the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="device" transfer-ownership="none">
+ <doc xml:space="preserve">The removed #GstDevice</doc>
+ <type name="Device" c:type="GstDevice*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_duration_changed"
+ c:identifier="gst_message_new_duration_changed">
+ <doc xml:space="preserve">Create a new duration changed message. This message is posted by elements
+that know the duration of a stream when the duration changes. This message
+is received by bins and is used to calculate the total duration of a
+pipeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new duration-changed message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_element" c:identifier="gst_message_new_element">
+ <doc xml:space="preserve">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
+"the firewire cable was unplugged". The format of the message should be
+documented in the element's documentation. The structure field can be %NULL.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new element message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">The structure for the
+ message. The message will take ownership of the structure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_eos" c:identifier="gst_message_new_eos">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new eos message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_error" c:identifier="gst_message_new_error">
+ <doc xml:space="preserve">Create a new error message. The message will copy @error and
+@debug. This message is posted by element when a fatal event
+occurred. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new error message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_error_with_details"
+ c:identifier="gst_message_new_error_with_details"
+ version="1.10">
+ <doc xml:space="preserve">Create a new error message. The message will copy @error and
+@debug. This message is posted by element when a fatal event
+occurred. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new error message.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="full">
+ <doc xml:space="preserve">(allow-none): A GstStructure with details</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_have_context"
+ c:identifier="gst_message_new_have_context"
+ version="1.2">
+ <doc xml:space="preserve">This message is posted when an element has a new local #GstContext.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new have-context message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="context" transfer-ownership="full">
+ <doc xml:space="preserve">the context</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_info" c:identifier="gst_message_new_info">
+ <doc xml:space="preserve">Create a new info message. The message will make copies of @error and
+@debug.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new info message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_info_with_details"
+ c:identifier="gst_message_new_info_with_details"
+ version="1.10">
+ <doc xml:space="preserve">Create a new info message. The message will make copies of @error and
+@debug.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new warning message.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="full">
+ <doc xml:space="preserve">(allow-none): A GstStructure with details</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_latency" c:identifier="gst_message_new_latency">
+ <doc xml:space="preserve">This message can be posted by elements when their latency requirements have
+changed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new latency message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_need_context"
+ c:identifier="gst_message_new_need_context"
+ version="1.2">
+ <doc xml:space="preserve">This message is posted when an element needs a specific #GstContext.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new need-context message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">The context type that is needed</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_new_clock"
+ c:identifier="gst_message_new_new_clock">
+ <doc xml:space="preserve">Create a new clock message. This message is posted whenever the
+pipeline selects a new clock for the pipeline.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new new clock message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">the new selected clock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_progress" c:identifier="gst_message_new_progress">
+ <doc xml:space="preserve">Progress messages are posted by elements when they use an asynchronous task
+to perform actions triggered by a state change.
+
+@code contains a well defined string describing the action.
+@text should contain a user visible string detailing the current action.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The new qos message.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstProgressType</doc>
+ <type name="ProgressType" c:type="GstProgressType"/>
+ </parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">a progress code</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="text" transfer-ownership="none">
+ <doc xml:space="preserve">free, user visible text describing the progress</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_property_notify"
+ c:identifier="gst_message_new_property_notify"
+ version="1.10">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject whose property changed (may or may not be a #GstElement)</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property that changed</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="val"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new property value, or %NULL</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_qos" c:identifier="gst_message_new_qos">
+ <doc xml:space="preserve">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).
+
+@running_time, @stream_time, @timestamp, @duration should be set to the
+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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new qos message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="live" transfer-ownership="none">
+ <doc xml:space="preserve">if the message was generated by a live element</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running time of the buffer that generated the message</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="stream_time" transfer-ownership="none">
+ <doc xml:space="preserve">the stream time of the buffer that generated the message</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the timestamps of the buffer that generated the message</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the buffer that generated the message</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_redirect"
+ c:identifier="gst_message_new_redirect"
+ version="1.10">
+ <doc xml:space="preserve">Creates a new redirect message and adds a new entry to it. Redirect messages
+are posted when an element detects that the actual data has to be retrieved
+from a different location. This is useful if such a redirection cannot be
+handled inside a source element, for example when HTTP 302/303 redirects
+return a non-HTTP URL.
+
+The redirect message can hold multiple entries. The first one is added
+when the redirect message is created, with the given location, tag_list,
+entry_struct arguments. Use gst_message_add_redirect_entry() to add more
+entries.
+
+Each entry has a location, a tag list, and a structure. All of these are
+optional. The tag list and structure are useful for additional metadata,
+such as bitrate statistics for the given location.
+
+By default, message recipients should treat entries in the order they are
+stored. The recipient should therefore try entry #0 first, and if this
+entry is not acceptable or working, try entry #1 etc. Senders must make
+sure that they add entries in this order. However, recipients are free to
+ignore the order and pick an entry that is "best" for them. One example
+would be a recipient that scans the entries for the one with the highest
+bitrate tag.
+
+The specified location string is copied. However, ownership over the tag
+list and structure are transferred to the message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject whose property changed (may or may not be a #GstElement)</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="location" transfer-ownership="none">
+ <doc xml:space="preserve">location string for the new entry</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag_list"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">tag list for the new entry</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="entry_struct"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">structure for the new entry</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_request_state"
+ c:identifier="gst_message_new_request_state">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new request state message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">The new requested state</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_reset_time"
+ c:identifier="gst_message_new_reset_time">
+ <doc xml:space="preserve">This message is posted when the pipeline running-time should be reset to
+@running_time, like after a flushing seek.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new reset_time message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the requested running-time</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_segment_done"
+ c:identifier="gst_message_new_segment_done">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new segment done message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format of the position being done</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position of the segment being done</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_segment_start"
+ c:identifier="gst_message_new_segment_start">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new segment start message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format of the position being played</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The position of the segment being played</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_state_changed"
+ c:identifier="gst_message_new_state_changed">
+ <doc xml:space="preserve">Create a state change message. This message is posted whenever an element
+changed its state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new state change message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="oldstate" transfer-ownership="none">
+ <doc xml:space="preserve">the previous state</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="newstate" transfer-ownership="none">
+ <doc xml:space="preserve">the new (current) state</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ <parameter name="pending" transfer-ownership="none">
+ <doc xml:space="preserve">the pending (target) state</doc>
+ <type name="State" c:type="GstState"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_state_dirty"
+ c:identifier="gst_message_new_state_dirty">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new state dirty message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_step_done"
+ c:identifier="gst_message_new_step_done">
+ <doc xml:space="preserve">This message is posted by elements when they complete a part, when @intermediate set
+to %TRUE, or a complete step operation.
+
+@duration will contain the amount of time (in GST_FORMAT_TIME) of the stepped
+@amount of media in format @format.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new step_done message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of @amount</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="amount" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of stepped data</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the rate of the stepped amount</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="flush" transfer-ownership="none">
+ <doc xml:space="preserve">is this an flushing step</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="intermediate" transfer-ownership="none">
+ <doc xml:space="preserve">is this an intermediate step</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the data</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="eos" transfer-ownership="none">
+ <doc xml:space="preserve">the step caused EOS</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_step_start"
+ c:identifier="gst_message_new_step_start">
+ <doc xml:space="preserve">This message is posted by elements when they accept or activate a new step
+event for @amount in @format.
+
+@active is set to %FALSE when the element accepted the new step event and has
+queued it for execution in the streaming threads.
+
+@active is set to %TRUE when the element has activated the step operation and
+is now ready to start executing the step in the streaming thread. After this
+message is emitted, the application can queue a new step operation in the
+element.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new step_start message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">if the step is active or queued</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of @amount</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="amount" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of stepped data</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the rate of the stepped amount</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="flush" transfer-ownership="none">
+ <doc xml:space="preserve">is this an flushing step</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="intermediate" transfer-ownership="none">
+ <doc xml:space="preserve">is this an intermediate step</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_collection"
+ c:identifier="gst_message_new_stream_collection"
+ version="1.10">
+ <doc xml:space="preserve">Creates a new stream-collection message. The message is used to announce new
+#GstStreamCollection</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject that created the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_start"
+ c:identifier="gst_message_new_stream_start">
+ <doc xml:space="preserve">Create a new stream_start message. This message is generated and posted in
+the sink elements of a GstBin. The bin will only forward the STREAM_START
+message to the application if all sinks have posted an STREAM_START message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new stream_start message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_stream_status"
+ c:identifier="gst_message_new_stream_status">
+ <doc xml:space="preserve">Create a new stream status message. This message is posted when a streaming
+thread is created/destroyed or when the state changed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new stream status message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The stream status type.</doc>
+ <type name="StreamStatusType" c:type="GstStreamStatusType"/>
+ </parameter>
+ <parameter name="owner" transfer-ownership="none">
+ <doc xml:space="preserve">the owner element of @src.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_streams_selected"
+ c:identifier="gst_message_new_streams_selected"
+ version="1.10">
+ <doc xml:space="preserve">Creates a new steams-selected message. The message is used to announce
+that an array of streams has been selected. This is generally in response
+to a #GST_EVENT_SELECT_STREAMS event, or when an element (such as decodebin3)
+makes an initial selection of streams.
+
+The message also contains the #GstStreamCollection to which the various streams
+belong to.
+
+Users of gst_message_new_streams_selected() can add the selected streams with
+gst_message_streams_selected_add().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated #GstMessage</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstObject that created the message</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_structure_change"
+ c:identifier="gst_message_new_structure_change">
+ <doc xml:space="preserve">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.
+
+@src should be the sinkpad that unlinked or linked.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new structure change message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The change type.</doc>
+ <type name="StructureChangeType" c:type="GstStructureChangeType"/>
+ </parameter>
+ <parameter name="owner" transfer-ownership="none">
+ <doc xml:space="preserve">The owner element of @src.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="busy" transfer-ownership="none">
+ <doc xml:space="preserve">Whether the structure change is busy.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_tag" c:identifier="gst_message_new_tag">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new tag message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="tag_list" transfer-ownership="full">
+ <doc xml:space="preserve">the tag list for the message.</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_toc" c:identifier="gst_message_new_toc">
+ <doc xml:space="preserve">Create a new TOC message. The message is posted by elements
+that discovered or updated a TOC.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new TOC message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">#GstToc structure for the message.</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </parameter>
+ <parameter name="updated" transfer-ownership="none">
+ <doc xml:space="preserve">whether TOC was updated or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_warning" c:identifier="gst_message_new_warning">
+ <doc xml:space="preserve">Create a new warning message. The message will make copies of @error and
+@debug.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new warning message.
+
+MT safe.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_warning_with_details"
+ c:identifier="gst_message_new_warning_with_details"
+ version="1.10">
+ <doc xml:space="preserve">Create a new warning message. The message will make copies of @error and
+@debug.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new warning message.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The object originating the message.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">The GError for this message.</doc>
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="debug" transfer-ownership="none">
+ <doc xml:space="preserve">A debugging string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="full">
+ <doc xml:space="preserve">(allow-none): A GstStructure with details</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_redirect_entry"
+ c:identifier="gst_message_add_redirect_entry"
+ version="1.10">
+ <doc xml:space="preserve">Creates and appends a new entry.
+
+The specified location string is copied. However, ownership over the tag
+list and structure are transferred to the message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_REDIRECT</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="location" transfer-ownership="none">
+ <doc xml:space="preserve">location string for the new entry</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag_list"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">tag list for the new entry</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="entry_struct"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">structure for the new entry</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_num_redirect_entries"
+ c:identifier="gst_message_get_num_redirect_entries"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of entries stored in the message</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_REDIRECT</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_seqnum" c:identifier="gst_message_get_seqnum">
+ <doc xml:space="preserve">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 have the same sequence number unless
+that correspondence was made explicitly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The message's sequence number.
+
+MT safe.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_status_object"
+ c:identifier="gst_message_get_stream_status_object">
+ <doc xml:space="preserve">Extracts the object managing the streaming thread from @message.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a GValue containing the object that manages the
+streaming thread. 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.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_structure" c:identifier="gst_message_get_structure">
+ <doc xml:space="preserve">Access the structure of the message.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The structure of the message. The
+structure is still 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.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMessage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_name" c:identifier="gst_message_has_name">
+ <doc xml:space="preserve">Checks if @message has the given @name. This function is usually used to
+check the name of a custom message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @name matches the name of the message structure.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMessage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name to check</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_async_done"
+ c:identifier="gst_message_parse_async_done">
+ <doc xml:space="preserve">Extract the running_time from the async_done message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_ASYNC_DONE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the running_time or %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffering"
+ c:identifier="gst_message_parse_buffering">
+ <doc xml:space="preserve">Extracts the buffering percent from the GstMessage. see also
+gst_message_new_buffering().
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_BUFFERING.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="percent"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Return location for the percent.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffering_stats"
+ c:identifier="gst_message_parse_buffering_stats">
+ <doc xml:space="preserve">Extracts the buffering stats values from @message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_BUFFERING.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="mode"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a buffering mode, or %NULL</doc>
+ <type name="BufferingMode" c:type="GstBufferingMode*"/>
+ </parameter>
+ <parameter name="avg_in"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the average input rate, or %NULL</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="avg_out"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the average output rate, or %NULL</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="buffering_left"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">amount of buffering time left in
+ milliseconds, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_clock_lost"
+ c:identifier="gst_message_parse_clock_lost">
+ <doc xml:space="preserve">Extracts the lost clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_CLOCK_LOST.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to hold the lost clock</doc>
+ <type name="Clock" c:type="GstClock**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_clock_provide"
+ c:identifier="gst_message_parse_clock_provide">
+ <doc xml:space="preserve">Extracts the clock and ready flag from the GstMessage.
+The clock object returned remains valid until the message is freed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_CLOCK_PROVIDE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to hold a clock
+ object, or %NULL</doc>
+ <type name="Clock" c:type="GstClock**"/>
+ </parameter>
+ <parameter name="ready"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to hold the ready flag, or %NULL</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_context_type"
+ c:identifier="gst_message_parse_context_type"
+ version="1.2">
+ <doc xml:space="preserve">Parse a context type from an existing GST_MESSAGE_NEED_CONTEXT message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if the parsing succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_MESSAGE_NEED_CONTEXT type message</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="context_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the context type, or %NULL</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_device_added"
+ c:identifier="gst_message_parse_device_added"
+ version="1.4">
+ <doc xml:space="preserve">Parses a device-added message. The device-added message is produced by
+#GstDeviceProvider or a #GstDeviceMonitor. It announces the appearance
+of monitored devices.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_DEVICE_ADDED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="device"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location where to store a
+ pointer to the new #GstDevice, or %NULL</doc>
+ <type name="Device" c:type="GstDevice**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_device_removed"
+ c:identifier="gst_message_parse_device_removed"
+ version="1.4">
+ <doc xml:space="preserve">Parses a device-removed message. The device-removed message is produced by
+#GstDeviceProvider or a #GstDeviceMonitor. It announces the
+disappearance of monitored devices.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_DEVICE_REMOVED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="device"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location where to store a
+ pointer to the removed #GstDevice, or %NULL</doc>
+ <type name="Device" c:type="GstDevice**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_error" c:identifier="gst_message_parse_error">
+ <doc xml:space="preserve">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:
+|[&lt;!-- language="C" --&gt;
+ ...
+ switch (GST_MESSAGE_TYPE (msg)) {
+ case GST_MESSAGE_ERROR: {
+ GError *err = NULL;
+ gchar *dbg_info = NULL;
+
+ gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
+ g_printerr ("ERROR from element %s: %s\n",
+ GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
+ g_printerr ("Debugging info: %s\n", (dbg_info) ? dbg_info : "none");
+ g_error_free (err);
+ g_free (dbg_info);
+ break;
+ }
+ ...
+ }
+ ...
+]|
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_ERROR.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="gerror"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the GError</doc>
+ <type name="GLib.Error" c:type="GError**"/>
+ </parameter>
+ <parameter name="debug"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the debug message,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_error_details"
+ c:identifier="gst_message_parse_error_details"
+ version="1.10">
+ <doc xml:space="preserve">Returns the optional details structure, may be NULL if none.
+The returned structure must not be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The message object</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="structure"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the returned details</doc>
+ <type name="Structure" c:type="const GstStructure**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_group_id"
+ c:identifier="gst_message_parse_group_id"
+ version="1.2">
+ <doc xml:space="preserve">Extract the group from the STREAM_START message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message had a group id set, %FALSE otherwise
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STREAM_START.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="group_id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the group id or
+ %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_have_context"
+ c:identifier="gst_message_parse_have_context"
+ version="1.2">
+ <doc xml:space="preserve">Extract the context from the HAVE_CONTEXT message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_HAVE_CONTEXT.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="context"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the
+ context or %NULL</doc>
+ <type name="Context" c:type="GstContext**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_info" c:identifier="gst_message_parse_info">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_INFO.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="gerror"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the GError</doc>
+ <type name="GLib.Error" c:type="GError**"/>
+ </parameter>
+ <parameter name="debug"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the debug message,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_info_details"
+ c:identifier="gst_message_parse_info_details"
+ version="1.10">
+ <doc xml:space="preserve">Returns the optional details structure, may be NULL if none
+The returned structure must not be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The message object</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="structure"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the returned details structure</doc>
+ <type name="Structure" c:type="const GstStructure**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_new_clock"
+ c:identifier="gst_message_parse_new_clock">
+ <doc xml:space="preserve">Extracts the new clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_NEW_CLOCK.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to hold the selected
+ new clock</doc>
+ <type name="Clock" c:type="GstClock**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_progress" c:identifier="gst_message_parse_progress">
+ <doc xml:space="preserve">Parses the progress @type, @code and @text.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_PROGRESS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the type</doc>
+ <type name="ProgressType" c:type="GstProgressType*"/>
+ </parameter>
+ <parameter name="code"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the code</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="text"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the text</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_property_notify"
+ c:identifier="gst_message_parse_property_notify"
+ version="1.10">
+ <doc xml:space="preserve">Parses a property-notify message. These will be posted on the bus only
+when set up with gst_element_add_property_notify_watch() or
+gst_element_add_property_deep_notify_watch().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_PROPERTY_NOTIFY</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="object"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location where to store a
+ pointer to the object whose property got changed, or %NULL</doc>
+ <type name="Object" c:type="GstObject**"/>
+ </parameter>
+ <parameter name="property_name"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">return location for
+ the name of the property that got changed, or %NULL</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="property_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">return location for
+ the new value of the property that got changed, or %NULL. This will
+ only be set if the property notify watch was told to include the value
+ when it was set up</doc>
+ <type name="GObject.Value" c:type="const GValue**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_qos" c:identifier="gst_message_parse_qos">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_QOS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="live"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if the message was generated by a live element</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the running time of the buffer that
+ generated the message</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="stream_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the stream time of the buffer that
+ generated the message</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the timestamps of the buffer that
+ generated the message</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the duration of the buffer that
+ generated the message</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_qos_stats"
+ c:identifier="gst_message_parse_qos_stats">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_QOS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Units of the 'processed' and 'dropped' fields.
+ Video sinks and video filters will use GST_FORMAT_BUFFERS (frames).
+ Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT
+ (samples).</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="processed"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Total number of units correctly processed
+ since the last state change to READY or a flushing operation.</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="dropped"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Total number of units dropped since the last
+ state change to READY or a flushing operation.</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_qos_values"
+ c:identifier="gst_message_parse_qos_values">
+ <doc xml:space="preserve">Extract the QoS values that have been calculated/analysed from the QoS data
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_QOS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="jitter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">The difference of the running-time against
+ the deadline.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="proportion"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Long term prediction of the ideal rate
+ relative to normal rate to get optimal quality.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="quality"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">An element dependent integer value that
+ specifies the current quality level of the element. The default
+ maximum quality is 1000000.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_redirect_entry"
+ c:identifier="gst_message_parse_redirect_entry"
+ version="1.10">
+ <doc xml:space="preserve">Parses the location and/or structure from the entry with the given index.
+The index must be between 0 and gst_message_get_num_redirect_entries() - 1.
+Returned pointers are valid for as long as this message exists.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_REDIRECT</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="entry_index" transfer-ownership="none">
+ <doc xml:space="preserve">index of the entry to parse</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="location"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">return location for
+ the pointer to the entry's location string, or %NULL</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="tag_list"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">return location for
+ the pointer to the entry's tag list, or %NULL</doc>
+ <type name="TagList" c:type="GstTagList**"/>
+ </parameter>
+ <parameter name="entry_struct"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">return location
+ for the pointer to the entry's structure, or %NULL</doc>
+ <type name="Structure" c:type="const GstStructure**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_request_state"
+ c:identifier="gst_message_parse_request_state">
+ <doc xml:space="preserve">Extract the requested state from the request_state message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_REQUEST_STATE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="state"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the requested state or %NULL</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_reset_time"
+ c:identifier="gst_message_parse_reset_time">
+ <doc xml:space="preserve">Extract the running-time from the RESET_TIME message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_RESET_TIME.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the running_time or
+ %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_segment_done"
+ c:identifier="gst_message_parse_segment_done">
+ <doc xml:space="preserve">Extracts the position and format from the segment done message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_SEGMENT_DONE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the format, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the position, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_segment_start"
+ c:identifier="gst_message_parse_segment_start">
+ <doc xml:space="preserve">Extracts the position and format from the segment start message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_SEGMENT_START.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the format, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Result location for the position, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_state_changed"
+ c:identifier="gst_message_parse_state_changed">
+ <doc xml:space="preserve">Extracts the old and new states from the GstMessage.
+
+Typical usage of this function might be:
+|[&lt;!-- language="C" --&gt;
+ ...
+ switch (GST_MESSAGE_TYPE (msg)) {
+ case GST_MESSAGE_STATE_CHANGED: {
+ GstState old_state, new_state;
+
+ gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
+ g_print ("Element %s changed state from %s to %s.\n",
+ GST_OBJECT_NAME (msg-&gt;src),
+ gst_element_state_get_name (old_state),
+ gst_element_state_get_name (new_state));
+ break;
+ }
+ ...
+ }
+ ...
+]|
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstMessage of type GST_MESSAGE_STATE_CHANGED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="oldstate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the previous state, or %NULL</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="newstate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the new (current) state, or %NULL</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ <parameter name="pending"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the pending (target) state, or %NULL</doc>
+ <type name="State" c:type="GstState*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_step_done"
+ c:identifier="gst_message_parse_step_done">
+ <doc xml:space="preserve">Extract the values the step_done message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STEP_DONE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the format</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="amount"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the amount</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the rate</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="flush"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the flush flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="intermediate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the intermediate flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the duration</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="eos"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the EOS flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_step_start"
+ c:identifier="gst_message_parse_step_start">
+ <doc xml:space="preserve">Extract the values from step_start message.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STEP_DONE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="active"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the active flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the format</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="amount"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the amount</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the rate</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="flush"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the flush flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="intermediate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result location for the intermediate flag</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_collection"
+ c:identifier="gst_message_parse_stream_collection"
+ version="1.10">
+ <doc xml:space="preserve">Parses a stream-collection message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_STREAM_COLLECTION</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="collection"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location where to store a
+ pointer to the #GstStreamCollection, or %NULL</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_stream_status"
+ c:identifier="gst_message_parse_stream_status">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to hold the status type</doc>
+ <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
+ </parameter>
+ <parameter name="owner"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The owner element of the message source</doc>
+ <type name="Element" c:type="GstElement**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_streams_selected"
+ c:identifier="gst_message_parse_streams_selected"
+ version="1.10">
+ <doc xml:space="preserve">Parses a streams-selected message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="collection"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location where to store a
+ pointer to the #GstStreamCollection, or %NULL</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_structure_change"
+ c:identifier="gst_message_parse_structure_change">
+ <doc xml:space="preserve">Extracts the change type and completion status from the GstMessage.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STRUCTURE_CHANGE.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to hold the change type</doc>
+ <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
+ </parameter>
+ <parameter name="owner"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">The owner element of the
+ message source</doc>
+ <type name="Element" c:type="GstElement**"/>
+ </parameter>
+ <parameter name="busy"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to hold whether the change is in
+ progress or has been completed</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_tag" c:identifier="gst_message_parse_tag">
+ <doc xml:space="preserve">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:
+|[&lt;!-- language="C" --&gt;
+ ...
+ switch (GST_MESSAGE_TYPE (msg)) {
+ case GST_MESSAGE_TAG: {
+ GstTagList *tags = NULL;
+
+ gst_message_parse_tag (msg, &amp;amp;tags);
+ g_print ("Got tags from element %s\n", GST_OBJECT_NAME (msg-&gt;src));
+ handle_tags (tags);
+ gst_tag_list_unref (tags);
+ break;
+ }
+ ...
+ }
+ ...
+]|
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_TAG.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="tag_list"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the tag-list.</doc>
+ <type name="TagList" c:type="GstTagList**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_toc" c:identifier="gst_message_parse_toc">
+ <doc xml:space="preserve">Extract the TOC from the #GstMessage. The TOC returned in the
+output argument is a copy; the caller must free it with
+gst_toc_unref() when done.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstMessage of type GST_MESSAGE_TOC.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="toc"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the TOC.</doc>
+ <type name="Toc" c:type="GstToc**"/>
+ </parameter>
+ <parameter name="updated"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the updated flag.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_warning" c:identifier="gst_message_parse_warning">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_WARNING.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="gerror"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the GError</doc>
+ <type name="GLib.Error" c:type="GError**"/>
+ </parameter>
+ <parameter name="debug"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the debug message,
+ or %NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_warning_details"
+ c:identifier="gst_message_parse_warning_details"
+ version="1.10">
+ <doc xml:space="preserve">Returns the optional details structure, may be NULL if none
+The returned structure must not be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The message object</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="structure"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the returned details structure</doc>
+ <type name="Structure" c:type="const GstStructure**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_buffering_stats"
+ c:identifier="gst_message_set_buffering_stats">
+ <doc xml:space="preserve">Configures the buffering stats values in @message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_BUFFERING.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a buffering mode</doc>
+ <type name="BufferingMode" c:type="GstBufferingMode"/>
+ </parameter>
+ <parameter name="avg_in" transfer-ownership="none">
+ <doc xml:space="preserve">the average input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="avg_out" transfer-ownership="none">
+ <doc xml:space="preserve">the average output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="buffering_left" transfer-ownership="none">
+ <doc xml:space="preserve">amount of buffering time left in milliseconds</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_group_id"
+ c:identifier="gst_message_set_group_id"
+ version="1.2">
+ <doc xml:space="preserve">Sets the group id on the stream-start message.
+
+All streams that have the same group id are supposed to be played
+together, i.e. all streams inside a container file should have the
+same group id but different stream ids. The group id should change
+each time the stream is started, resulting in different group ids
+each time a file is played for example.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="group_id" transfer-ownership="none">
+ <doc xml:space="preserve">the group id</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_stats" c:identifier="gst_message_set_qos_stats">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_QOS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">Units of the 'processed' and 'dropped' fields. Video sinks and video
+filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="processed" transfer-ownership="none">
+ <doc xml:space="preserve">Total number of units correctly processed since the last state
+change to READY or a flushing operation.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="dropped" transfer-ownership="none">
+ <doc xml:space="preserve">Total number of units dropped since the last state change to READY
+or a flushing operation.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_values" c:identifier="gst_message_set_qos_values">
+ <doc xml:space="preserve">Set the QoS values that have been calculated/analysed from the QoS data
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_QOS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="jitter" transfer-ownership="none">
+ <doc xml:space="preserve">The difference of the running-time against the deadline.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="proportion" transfer-ownership="none">
+ <doc xml:space="preserve">Long term prediction of the ideal rate relative to normal rate
+to get optimal quality.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="quality" transfer-ownership="none">
+ <doc xml:space="preserve">An element dependent integer value that specifies the current
+quality level of the element. The default maximum quality is 1000000.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_seqnum" c:identifier="gst_message_set_seqnum">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="seqnum" transfer-ownership="none">
+ <doc xml:space="preserve">A sequence number.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream_status_object"
+ c:identifier="gst_message_set_stream_status_object">
+ <doc xml:space="preserve">Configures the object handling the streaming thread. This is usually a
+GstTask object but other objects might be added in the future.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object controlling the streaming</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="streams_selected_add"
+ c:identifier="gst_message_streams_selected_add"
+ version="1.10">
+ <doc xml:space="preserve">Adds the @stream to the @message.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream to add to @message</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="streams_selected_get_size"
+ c:identifier="gst_message_streams_selected_get_size"
+ version="1.10">
+ <doc xml:space="preserve">Returns the number of streams contained in the @message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of streams contained within.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="streams_selected_get_stream"
+ c:identifier="gst_message_streams_selected_get_stream"
+ version="1.10">
+ <doc xml:space="preserve">Retrieves the #GstStream with index @index from the @message.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">Index of the stream to retrieve</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="writable_structure"
+ c:identifier="gst_message_writable_structure"
+ version="1.14">
+ <doc xml:space="preserve">Get a writable version of the structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The structure of the message. The structure
+is still owned by the message, which means that you should not free
+it and that the pointer becomes invalid when you free the message.
+This function checks if @message is writable and will never return
+%NULL.
+
+MT safe.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMessage.</doc>
+ <type name="Message" c:type="GstMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="MessageType"
+ glib:type-name="GstMessageType"
+ glib:get-type="gst_message_type_get_type"
+ c:type="GstMessageType">
+ <doc xml:space="preserve">The different message types that are available.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_MESSAGE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">an undefined message</doc>
+ </member>
+ <member name="eos"
+ value="1"
+ c:identifier="GST_MESSAGE_EOS"
+ glib:nick="eos">
+ <doc xml:space="preserve">end-of-stream reached in a pipeline. The application will
+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.</doc>
+ </member>
+ <member name="error"
+ value="2"
+ c:identifier="GST_MESSAGE_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">an error occurred. When the application receives an error
+message it should stop playback of the pipeline and not assume that more
+data will be played.</doc>
+ </member>
+ <member name="warning"
+ value="4"
+ c:identifier="GST_MESSAGE_WARNING"
+ glib:nick="warning">
+ <doc xml:space="preserve">a warning occurred.</doc>
+ </member>
+ <member name="info"
+ value="8"
+ c:identifier="GST_MESSAGE_INFO"
+ glib:nick="info">
+ <doc xml:space="preserve">an info message occurred</doc>
+ </member>
+ <member name="tag"
+ value="16"
+ c:identifier="GST_MESSAGE_TAG"
+ glib:nick="tag">
+ <doc xml:space="preserve">a tag was found.</doc>
+ </member>
+ <member name="buffering"
+ value="32"
+ c:identifier="GST_MESSAGE_BUFFERING"
+ glib:nick="buffering">
+ <doc xml:space="preserve">the pipeline is buffering. When the application
+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.</doc>
+ </member>
+ <member name="state_changed"
+ value="64"
+ c:identifier="GST_MESSAGE_STATE_CHANGED"
+ glib:nick="state-changed">
+ <doc xml:space="preserve">a state change happened</doc>
+ </member>
+ <member name="state_dirty"
+ value="128"
+ c:identifier="GST_MESSAGE_STATE_DIRTY"
+ glib:nick="state-dirty">
+ <doc xml:space="preserve">an element changed state in a streaming thread.
+This message is deprecated.</doc>
+ </member>
+ <member name="step_done"
+ value="256"
+ c:identifier="GST_MESSAGE_STEP_DONE"
+ glib:nick="step-done">
+ <doc xml:space="preserve">a stepping operation finished.</doc>
+ </member>
+ <member name="clock_provide"
+ value="512"
+ c:identifier="GST_MESSAGE_CLOCK_PROVIDE"
+ glib:nick="clock-provide">
+ <doc xml:space="preserve">an element notifies its capability of providing
+ a clock. This message is used internally and
+ never forwarded to the application.</doc>
+ </member>
+ <member name="clock_lost"
+ value="1024"
+ c:identifier="GST_MESSAGE_CLOCK_LOST"
+ glib:nick="clock-lost">
+ <doc xml:space="preserve">The current clock as selected by the pipeline became
+ 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.</doc>
+ </member>
+ <member name="new_clock"
+ value="2048"
+ c:identifier="GST_MESSAGE_NEW_CLOCK"
+ glib:nick="new-clock">
+ <doc xml:space="preserve">a new clock was selected in the pipeline.</doc>
+ </member>
+ <member name="structure_change"
+ value="4096"
+ c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"
+ glib:nick="structure-change">
+ <doc xml:space="preserve">the structure of the pipeline changed. This
+message is used internally and never forwarded to the application.</doc>
+ </member>
+ <member name="stream_status"
+ value="8192"
+ c:identifier="GST_MESSAGE_STREAM_STATUS"
+ glib:nick="stream-status">
+ <doc xml:space="preserve">status about a stream, emitted when it starts,
+ stops, errors, etc..</doc>
+ </member>
+ <member name="application"
+ value="16384"
+ c:identifier="GST_MESSAGE_APPLICATION"
+ glib:nick="application">
+ <doc xml:space="preserve">message posted by the application, possibly
+ via an application-specific element.</doc>
+ </member>
+ <member name="element"
+ value="32768"
+ c:identifier="GST_MESSAGE_ELEMENT"
+ glib:nick="element">
+ <doc xml:space="preserve">element-specific message, see the specific element's
+ documentation</doc>
+ </member>
+ <member name="segment_start"
+ value="65536"
+ c:identifier="GST_MESSAGE_SEGMENT_START"
+ glib:nick="segment-start">
+ <doc xml:space="preserve">pipeline started playback of a segment. This
+message is used internally and never forwarded to the application.</doc>
+ </member>
+ <member name="segment_done"
+ value="131072"
+ c:identifier="GST_MESSAGE_SEGMENT_DONE"
+ glib:nick="segment-done">
+ <doc xml:space="preserve">pipeline completed playback of a segment. This
+message is forwarded to the application after all elements that posted
+@GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message.</doc>
+ </member>
+ <member name="duration_changed"
+ value="262144"
+ c:identifier="GST_MESSAGE_DURATION_CHANGED"
+ glib:nick="duration-changed">
+ <doc xml:space="preserve">The duration of a pipeline changed. The
+application can get the new duration with a duration query.</doc>
+ </member>
+ <member name="latency"
+ value="524288"
+ c:identifier="GST_MESSAGE_LATENCY"
+ glib:nick="latency">
+ <doc xml:space="preserve">Posted by elements when their latency changes. The
+application should recalculate and distribute a new latency.</doc>
+ </member>
+ <member name="async_start"
+ value="1048576"
+ c:identifier="GST_MESSAGE_ASYNC_START"
+ glib:nick="async-start">
+ <doc xml:space="preserve">Posted by elements when they start an ASYNC
+#GstStateChange. This message is not forwarded to the application but is used
+internally.</doc>
+ </member>
+ <member name="async_done"
+ value="2097152"
+ c:identifier="GST_MESSAGE_ASYNC_DONE"
+ glib:nick="async-done">
+ <doc xml:space="preserve">Posted by elements when they complete an ASYNC
+#GstStateChange. The application will only receive this message from the toplevel
+pipeline.</doc>
+ </member>
+ <member name="request_state"
+ value="4194304"
+ c:identifier="GST_MESSAGE_REQUEST_STATE"
+ glib:nick="request-state">
+ <doc xml:space="preserve">Posted by elements when they want the pipeline to
+change state. This message is a suggestion to the application which can
+decide to perform the state change on (part of) the pipeline.</doc>
+ </member>
+ <member name="step_start"
+ value="8388608"
+ c:identifier="GST_MESSAGE_STEP_START"
+ glib:nick="step-start">
+ <doc xml:space="preserve">A stepping operation was started.</doc>
+ </member>
+ <member name="qos"
+ value="16777216"
+ c:identifier="GST_MESSAGE_QOS"
+ glib:nick="qos">
+ <doc xml:space="preserve">A buffer was dropped or an element changed its processing
+strategy for Quality of Service reasons.</doc>
+ </member>
+ <member name="progress"
+ value="33554432"
+ c:identifier="GST_MESSAGE_PROGRESS"
+ glib:nick="progress">
+ <doc xml:space="preserve">A progress message.</doc>
+ </member>
+ <member name="toc"
+ value="67108864"
+ c:identifier="GST_MESSAGE_TOC"
+ glib:nick="toc">
+ <doc xml:space="preserve">A new table of contents (TOC) was found or previously found TOC
+was updated.</doc>
+ </member>
+ <member name="reset_time"
+ value="134217728"
+ c:identifier="GST_MESSAGE_RESET_TIME"
+ glib:nick="reset-time">
+ <doc xml:space="preserve">Message to request resetting the pipeline's
+ running time from the pipeline. This is an internal message which
+ applications will likely never receive.</doc>
+ </member>
+ <member name="stream_start"
+ value="268435456"
+ c:identifier="GST_MESSAGE_STREAM_START"
+ glib:nick="stream-start">
+ <doc xml:space="preserve">Message indicating start of a new stream. Useful
+ e.g. when using playbin in gapless playback mode, to get notified when
+ the next title actually starts playing (which will be some time after
+ the URI for the next title has been set).</doc>
+ </member>
+ <member name="need_context"
+ value="536870912"
+ c:identifier="GST_MESSAGE_NEED_CONTEXT"
+ glib:nick="need-context">
+ <doc xml:space="preserve">Message indicating that an element wants a specific context (Since 1.2)</doc>
+ </member>
+ <member name="have_context"
+ value="1073741824"
+ c:identifier="GST_MESSAGE_HAVE_CONTEXT"
+ glib:nick="have-context">
+ <doc xml:space="preserve">Message indicating that an element created a context (Since 1.2)</doc>
+ </member>
+ <member name="extended"
+ value="2147483648"
+ c:identifier="GST_MESSAGE_EXTENDED"
+ glib:nick="extended">
+ <doc xml:space="preserve">Message is an extended message type (see below).
+ These extended message IDs can't be used directly with mask-based API
+ like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still
+ filter for GST_MESSAGE_EXTENDED and then check the result for the
+ specific type. (Since 1.4)</doc>
+ </member>
+ <member name="device_added"
+ value="2147483649"
+ c:identifier="GST_MESSAGE_DEVICE_ADDED"
+ glib:nick="device-added">
+ <doc xml:space="preserve">Message indicating a #GstDevice was added to
+ a #GstDeviceProvider (Since 1.4)</doc>
+ </member>
+ <member name="device_removed"
+ value="2147483650"
+ c:identifier="GST_MESSAGE_DEVICE_REMOVED"
+ glib:nick="device-removed">
+ <doc xml:space="preserve">Message indicating a #GstDevice was removed
+ from a #GstDeviceProvider (Since 1.4)</doc>
+ </member>
+ <member name="property_notify"
+ value="2147483651"
+ c:identifier="GST_MESSAGE_PROPERTY_NOTIFY"
+ glib:nick="property-notify">
+ <doc xml:space="preserve">Message indicating a #GObject property has
+ changed (Since 1.10)</doc>
+ </member>
+ <member name="stream_collection"
+ value="2147483652"
+ c:identifier="GST_MESSAGE_STREAM_COLLECTION"
+ glib:nick="stream-collection">
+ <doc xml:space="preserve">Message indicating a new #GstStreamCollection
+ is available (Since 1.10)</doc>
+ </member>
+ <member name="streams_selected"
+ value="2147483653"
+ c:identifier="GST_MESSAGE_STREAMS_SELECTED"
+ glib:nick="streams-selected">
+ <doc xml:space="preserve">Message indicating the active selection of
+ #GstStreams has changed (Since 1.10)</doc>
+ </member>
+ <member name="redirect"
+ value="2147483654"
+ c:identifier="GST_MESSAGE_REDIRECT"
+ glib:nick="redirect">
+ <doc xml:space="preserve">Message indicating to request the application to
+ try to play the given URL(s). Useful if for example a HTTP 302/303
+ response is received with a non-HTTP URL inside. (Since 1.10)</doc>
+ </member>
+ <member name="any"
+ value="4294967295"
+ c:identifier="GST_MESSAGE_ANY"
+ glib:nick="any">
+ <doc xml:space="preserve">mask for all of the above messages.</doc>
+ </member>
+ <function name="get_name" c:identifier="gst_message_type_get_name">
+ <doc xml:space="preserve">Get a printable name for the given message type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the message.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the message type</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_quark" c:identifier="gst_message_type_to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given message type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the message type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the message type</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </bitfield>
+ <record name="Meta" c:type="GstMeta">
+ <doc xml:space="preserve">The #GstMeta structure should be included as the first member of a #GstBuffer
+metadata structure. The structure defines the API of the metadata and should
+be accessible to all elements using the metadata.
+
+A metadata API is registered with gst_meta_api_type_register() which takes a
+name for the metadata API and some tags associated with the metadata.
+With gst_meta_api_type_has_tag() one can check if a certain metadata API
+contains a given tag.
+
+Multiple implementations of a metadata API can be registered.
+To implement a metadata API, gst_meta_register() should be used. This
+function takes all parameters needed to create, free and transform metadata
+along with the size of the metadata. The function returns a #GstMetaInfo
+structure that contains the information for the implementation of the API.
+
+A specific implementation can be retrieved by name with gst_meta_get_info().
+
+See #GstBuffer for how the metadata can be added, retrieved and removed from
+buffers.</doc>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">extra flags for the metadata</doc>
+ <type name="MetaFlags" c:type="GstMetaFlags"/>
+ </field>
+ <field name="info" writable="1">
+ <doc xml:space="preserve">pointer to the #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </field>
+ <function name="api_type_get_tags"
+ c:identifier="gst_meta_api_type_get_tags"
+ version="1.2">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an array of tags as strings.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="api_type_has_tag"
+ c:identifier="gst_meta_api_type_has_tag">
+ <doc xml:space="preserve">Check if @api was registered with @tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @api was registered with @tag.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag to check</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="api_type_register"
+ c:identifier="gst_meta_api_type_register">
+ <doc xml:space="preserve">Register and return a GType for the @api and associate it with
+@tags.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a unique GType for @api.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API to register</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tags" transfer-ownership="none">
+ <doc xml:space="preserve">tags for @api</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_info" c:identifier="gst_meta_get_info">
+ <doc xml:space="preserve">Lookup a previously registered meta info structure by its implementation name
+@impl.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #GstMetaInfo with @impl, or
+%NULL when no such metainfo exists.</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="impl" transfer-ownership="none">
+ <doc xml:space="preserve">the name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="register" c:identifier="gst_meta_register">
+ <doc xml:space="preserve">Register a new #GstMeta implementation.
+
+The same @info can be retrieved later with gst_meta_get_info() by using
+@impl as the key.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #GstMetaInfo that can be used to
+access metadata.</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">the type of the #GstMeta API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="impl" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstMeta implementation</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the #GstMeta structure</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="init_func" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a #GstMetaInitFunction</doc>
+ <type name="MetaInitFunction" c:type="GstMetaInitFunction"/>
+ </parameter>
+ <parameter name="free_func" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a #GstMetaFreeFunction</doc>
+ <type name="MetaFreeFunction" c:type="GstMetaFreeFunction"/>
+ </parameter>
+ <parameter name="transform_func"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">a #GstMetaTransformFunction</doc>
+ <type name="MetaTransformFunction"
+ c:type="GstMetaTransformFunction"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="MetaFlags"
+ glib:type-name="GstMetaFlags"
+ glib:get-type="gst_meta_flags_get_type"
+ c:type="GstMetaFlags">
+ <doc xml:space="preserve">Extra metadata flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_META_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="readonly"
+ value="1"
+ c:identifier="GST_META_FLAG_READONLY"
+ glib:nick="readonly">
+ <doc xml:space="preserve">metadata should not be modified</doc>
+ </member>
+ <member name="pooled"
+ value="2"
+ c:identifier="GST_META_FLAG_POOLED"
+ glib:nick="pooled">
+ <doc xml:space="preserve">metadata is managed by a bufferpool</doc>
+ </member>
+ <member name="locked"
+ value="4"
+ c:identifier="GST_META_FLAG_LOCKED"
+ glib:nick="locked">
+ <doc xml:space="preserve">metadata should not be removed</doc>
+ </member>
+ <member name="last"
+ value="65536"
+ c:identifier="GST_META_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">additional flags can be added starting from this flag.</doc>
+ </member>
+ </bitfield>
+ <callback name="MetaFreeFunction" c:type="GstMetaFreeFunction">
+ <doc xml:space="preserve">Function called when @meta is freed in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMeta</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="MetaInfo" c:type="GstMetaInfo">
+ <doc xml:space="preserve">The #GstMetaInfo provides information about a specific metadata
+structure.</doc>
+ <field name="api" writable="1">
+ <doc xml:space="preserve">tag identifying the metadata structure and api</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">type identifying the implementor of the api</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">size of the metadata</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="init_func" writable="1">
+ <doc xml:space="preserve">function for initializing the metadata</doc>
+ <type name="MetaInitFunction" c:type="GstMetaInitFunction"/>
+ </field>
+ <field name="free_func" writable="1">
+ <doc xml:space="preserve">function for freeing the metadata</doc>
+ <type name="MetaFreeFunction" c:type="GstMetaFreeFunction"/>
+ </field>
+ <field name="transform_func" writable="1">
+ <doc xml:space="preserve">function for transforming the metadata</doc>
+ <type name="MetaTransformFunction" c:type="GstMetaTransformFunction"/>
+ </field>
+ </record>
+ <callback name="MetaInitFunction" c:type="GstMetaInitFunction">
+ <doc xml:space="preserve">Function called when @meta is initialized in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMeta</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters passed to the init function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="MetaTransformCopy" c:type="GstMetaTransformCopy">
+ <doc xml:space="preserve">Extra data passed to a "gst-copy" transform #GstMetaTransformFunction.</doc>
+ <field name="region" writable="1">
+ <doc xml:space="preserve">%TRUE if only region is copied</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">the offset to copy, 0 if @region is %FALSE, otherwise &gt; 0</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the size to copy, -1 or the buffer size when @region is %FALSE</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ </record>
+ <callback name="MetaTransformFunction" c:type="GstMetaTransformFunction">
+ <doc xml:space="preserve">Function called for each @meta in @buffer as a result of performing a
+transformation on @transbuf. Additional @type specific transform data
+is passed to the function as @data.
+
+Implementations should check the @type of the transform and parse
+additional type specific fields in @data that should be used to update
+the metadata on @transbuf.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the transform could be performed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="transbuf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMeta</doc>
+ <type name="Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the transform type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">transform specific data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="MiniObject" c:type="GstMiniObject">
+ <doc xml:space="preserve">#GstMiniObject is a simple structure that can be used to implement refcounted
+types.
+
+Subclasses will include #GstMiniObject as the first member in their structure
+and then call gst_mini_object_init() to initialize the #GstMiniObject fields.
+
+gst_mini_object_ref() and gst_mini_object_unref() increment and decrement the
+refcount respectively. When the refcount of a mini-object reaches 0, the
+dispose function is called first and when this returns %TRUE, the free
+function of the miniobject is called.
+
+A copy can be made with gst_mini_object_copy().
+
+gst_mini_object_is_writable() will return %TRUE when the refcount of the
+object is exactly 1, meaning the current caller has the only reference to the
+object. gst_mini_object_make_writable() will return a writable version of the
+object, which might be a new copy when the refcount was not 1.
+
+Opaque data can be associated with a #GstMiniObject with
+gst_mini_object_set_qdata() and gst_mini_object_get_qdata(). The data is
+meant to be specific to the particular object and is not automatically copied
+with gst_mini_object_copy() or similar methods.
+
+A weak reference can be added and remove with gst_mini_object_weak_ref()
+and gst_mini_object_weak_unref() respectively.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the GType of the object</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="refcount" writable="1">
+ <doc xml:space="preserve">atomic refcount</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="lockstate" writable="1">
+ <doc xml:space="preserve">atomic state of the locks</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">extra flags.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="copy" introspectable="0" writable="1">
+ <doc xml:space="preserve">a copy function</doc>
+ <type name="MiniObjectCopyFunction"
+ c:type="GstMiniObjectCopyFunction"/>
+ </field>
+ <field name="dispose" writable="1">
+ <doc xml:space="preserve">a dispose function</doc>
+ <type name="MiniObjectDisposeFunction"
+ c:type="GstMiniObjectDisposeFunction"/>
+ </field>
+ <field name="free" writable="1">
+ <doc xml:space="preserve">the free function</doc>
+ <type name="MiniObjectFreeFunction"
+ c:type="GstMiniObjectFreeFunction"/>
+ </field>
+ <field name="n_qdata" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="qdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <method name="copy"
+ c:identifier="gst_mini_object_copy"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a copy of the mini-object.
+
+MT safe</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new mini-object if copying is
+possible, %NULL otherwise.</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object to copy</doc>
+ <type name="MiniObject" c:type="const GstMiniObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_qdata" c:identifier="gst_mini_object_get_qdata">
+ <doc xml:space="preserve">This function gets back user data pointers stored via
+gst_mini_object_set_qdata().</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The user data pointer set, or
+%NULL</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The GstMiniObject to get a stored user data pointer from</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="quark" transfer-ownership="none">
+ <doc xml:space="preserve">A #GQuark, naming the user data pointer</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init"
+ c:identifier="gst_mini_object_init"
+ introspectable="0">
+ <doc xml:space="preserve">Initializes a mini-object with the desired type and copy/dispose/free
+functions.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMiniObject</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">initial #GstMiniObjectFlags</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of the mini-object to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="copy_func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the copy function, or %NULL</doc>
+ <type name="MiniObjectCopyFunction"
+ c:type="GstMiniObjectCopyFunction"/>
+ </parameter>
+ <parameter name="dispose_func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the dispose function, or %NULL</doc>
+ <type name="MiniObjectDisposeFunction"
+ c:type="GstMiniObjectDisposeFunction"/>
+ </parameter>
+ <parameter name="free_func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the free function or %NULL</doc>
+ <type name="MiniObjectFreeFunction"
+ c:type="GstMiniObjectFreeFunction"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_writable" c:identifier="gst_mini_object_is_writable">
+ <doc xml:space="preserve">If @mini_object has the LOCKABLE flag set, check if the current EXCLUSIVE
+lock on @object is the only one, this means that changes to the object will
+not be visible to any other object.
+
+If the LOCKABLE flag is not set, check if the refcount of @mini_object is
+exactly 1, meaning that no other reference exists to the object and that the
+object is therefore writable.
+
+Modification of a mini-object should only be done after verifying that it
+is writable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the object is writable.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object to check</doc>
+ <type name="MiniObject" c:type="const GstMiniObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="lock" c:identifier="gst_mini_object_lock">
+ <doc xml:space="preserve">Lock the mini-object with the specified access mode in @flags.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @object could be locked.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object to lock</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstLockFlags</doc>
+ <type name="LockFlags" c:type="GstLockFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="make_writable"
+ c:identifier="gst_mini_object_make_writable"
+ introspectable="0">
+ <doc xml:space="preserve">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</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a mini-object (possibly the same pointer) that
+ is writable.</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="full">
+ <doc xml:space="preserve">the mini-object to make writable</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_mini_object_ref" introspectable="0">
+ <doc xml:space="preserve">Increase the reference count of the mini-object.
+
+Note that the refcount affects the writability
+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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the mini-object.</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_qdata" c:identifier="gst_mini_object_set_qdata">
+ <doc xml:space="preserve">This sets an opaque, named pointer on a miniobject.
+The name is specified through a #GQuark (retrieved e.g. via
+g_quark_from_static_string()), and the pointer
+can be gotten back from the @object with gst_mini_object_get_qdata()
+until the @object is disposed.
+Setting a previously set user data pointer, overrides (frees)
+the old pointer set, using %NULL as pointer essentially
+removes the data stored.
+
+@destroy may be specified which is called with @data as argument
+when the @object is disposed, or the data is being overwritten by
+a call to gst_mini_object_set_qdata() with the same @quark.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMiniObject</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="quark" transfer-ownership="none">
+ <doc xml:space="preserve">A #GQuark, naming the user data pointer</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">An opaque user data pointer</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">Function to invoke with @data as argument, when @data
+ needs to be freed</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="steal_qdata" c:identifier="gst_mini_object_steal_qdata">
+ <doc xml:space="preserve">This function gets back user data pointers stored via gst_mini_object_set_qdata()
+and removes the data from @object without invoking its destroy() function (if
+any was set).</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The user data pointer set, or
+%NULL</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The GstMiniObject to get a stored user data pointer from</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="quark" transfer-ownership="none">
+ <doc xml:space="preserve">A #GQuark, naming the user data pointer</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unlock" c:identifier="gst_mini_object_unlock">
+ <doc xml:space="preserve">Unlock the mini-object with the specified access mode in @flags.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object to unlock</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstLockFlags</doc>
+ <type name="LockFlags" c:type="GstLockFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unref"
+ c:identifier="gst_mini_object_unref"
+ introspectable="0">
+ <doc xml:space="preserve">Decreases the reference count of the mini-object, possibly freeing
+the mini-object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mini_object" transfer-ownership="none">
+ <doc xml:space="preserve">the mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="weak_ref"
+ c:identifier="gst_mini_object_weak_ref"
+ introspectable="0">
+ <doc xml:space="preserve">Adds a weak reference callback to a mini object. Weak references are
+used for notification when a mini object is finalized. They are called
+"weak references" because they allow you to safely hold a pointer
+to the mini object without calling gst_mini_object_ref()
+(gst_mini_object_ref() adds a strong reference, that is, forces the object
+to stay alive).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMiniObject to reference weakly</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="notify" transfer-ownership="none" closure="1">
+ <doc xml:space="preserve">callback to invoke before the mini object is freed</doc>
+ <type name="MiniObjectNotify" c:type="GstMiniObjectNotify"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">extra data to pass to notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="weak_unref"
+ c:identifier="gst_mini_object_weak_unref"
+ introspectable="0">
+ <doc xml:space="preserve">Removes a weak reference callback from a mini object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMiniObject to remove a weak reference from</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </instance-parameter>
+ <parameter name="notify" transfer-ownership="none" closure="1">
+ <doc xml:space="preserve">callback to search for</doc>
+ <type name="MiniObjectNotify" c:type="GstMiniObjectNotify"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">data to search for</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="replace" c:identifier="gst_mini_object_replace">
+ <doc xml:space="preserve">Atomically modifies a pointer to point to a new mini-object.
+The reference count of @olddata is decreased and the reference count of
+@newdata is increased.
+
+Either @newdata and the value pointed to by @olddata may be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @newdata was different from @olddata</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a pointer to a
+ mini-object to be replaced</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ <parameter name="newdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to new mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="steal"
+ c:identifier="gst_mini_object_steal"
+ introspectable="0">
+ <doc xml:space="preserve">Replace the current #GstMiniObject pointer to by @olddata with %NULL and
+return the old value.</doc>
+ <return-value nullable="1">
+ <doc xml:space="preserve">the #GstMiniObject at @oldata</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a pointer to a mini-object to
+ be stolen</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="take" c:identifier="gst_mini_object_take">
+ <doc xml:space="preserve">Modifies a pointer to point to a new mini-object. The modification
+is done atomically. This version is similar to gst_mini_object_replace()
+except that it does not increase the refcount of @newdata and thus
+takes ownership of @newdata.
+
+Either @newdata and the value pointed to by @olddata may be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @newdata was different from @olddata</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a pointer to a mini-object to
+ be replaced</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ <parameter name="newdata" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to new mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <callback name="MiniObjectCopyFunction"
+ c:type="GstMiniObjectCopyFunction"
+ introspectable="0">
+ <doc xml:space="preserve">Function prototype for methods to create copies of instances.</doc>
+ <return-value>
+ <doc xml:space="preserve">reference to cloned instance.</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">MiniObject to copy</doc>
+ <type name="MiniObject" c:type="const GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MiniObjectDisposeFunction"
+ c:type="GstMiniObjectDisposeFunction">
+ <doc xml:space="preserve">Function prototype for when a miniobject has lost its last refcount.
+Implementation 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 dispose function, the function should return %TRUE
+and the memory associated with the object is freed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the object should be cleaned up.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">MiniObject to dispose</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="MiniObjectFlags"
+ glib:type-name="GstMiniObjectFlags"
+ glib:get-type="gst_mini_object_flags_get_type"
+ c:type="GstMiniObjectFlags">
+ <doc xml:space="preserve">Flags for the mini object</doc>
+ <member name="lockable"
+ value="1"
+ c:identifier="GST_MINI_OBJECT_FLAG_LOCKABLE"
+ glib:nick="lockable">
+ <doc xml:space="preserve">the object can be locked and unlocked with
+gst_mini_object_lock() and gst_mini_object_unlock().</doc>
+ </member>
+ <member name="lock_readonly"
+ value="2"
+ c:identifier="GST_MINI_OBJECT_FLAG_LOCK_READONLY"
+ glib:nick="lock-readonly">
+ <doc xml:space="preserve">the object is permanently locked in
+READONLY mode. Only read locks can be performed on the object.</doc>
+ </member>
+ <member name="may_be_leaked"
+ value="4"
+ c:identifier="GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED"
+ glib:nick="may-be-leaked">
+ <doc xml:space="preserve">the object is expected to stay alive
+even after gst_deinit() has been called and so should be ignored by leak
+detection tools. (Since 1.10)</doc>
+ </member>
+ <member name="last"
+ value="16"
+ c:identifier="GST_MINI_OBJECT_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">first flag that can be used by subclasses.</doc>
+ </member>
+ </bitfield>
+ <callback name="MiniObjectFreeFunction" c:type="GstMiniObjectFreeFunction">
+ <doc xml:space="preserve">Virtual function prototype for methods to free resources used by
+mini-objects.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">MiniObject to free</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="MiniObjectNotify" c:type="GstMiniObjectNotify">
+ <doc xml:space="preserve">A #GstMiniObjectNotify function can be added to a mini object as a
+callback that gets triggered when gst_mini_object_unref() drops the
+last ref and @obj is about to be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="0">
+ <doc xml:space="preserve">data that was provided when the notify was added</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">the mini object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <constant name="NSECOND" value="1" c:type="GST_NSECOND">
+ <doc xml:space="preserve">Constant that defines one GStreamer nanosecond</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </constant>
+ <class name="Object"
+ c:symbol-prefix="object"
+ c:type="GstObject"
+ parent="GObject.InitiallyUnowned"
+ abstract="1"
+ glib:type-name="GstObject"
+ glib:get-type="gst_object_get_type"
+ glib:type-struct="ObjectClass">
+ <doc xml:space="preserve">#GstObject provides a root for the object hierarchy tree filed in by the
+GStreamer library. It is currently a thin wrapper on top of
+#GInitiallyUnowned. It is an abstract class that is not very usable on its own.
+
+#GstObject gives us basic refcounting, parenting functionality and locking.
+Most of the functions are just extended for special GStreamer needs and can be
+found under the same name in the base class of #GstObject which is #GObject
+(e.g. g_object_ref() becomes gst_object_ref()).
+
+Since #GstObject derives from #GInitiallyUnowned, it also inherits the
+floating reference. Be aware that functions such as gst_bin_add() and
+gst_element_add_pad() take ownership of the floating reference.
+
+In contrast to #GObject instances, #GstObject adds a name property. The functions
+gst_object_set_name() and gst_object_get_name() are used to set/get the name
+of the object.
+
+## controlled properties
+
+Controlled properties offers a lightweight way to adjust gobject properties
+over stream-time. It works by using time-stamped value pairs that are queued
+for element-properties. At run-time the elements continuously pull value
+changes for the current stream-time.
+
+What needs to be changed in a #GstElement?
+Very little - it is just two steps to make a plugin controllable!
+
+ * mark gobject-properties paramspecs that make sense to be controlled,
+ by GST_PARAM_CONTROLLABLE.
+
+ * when processing data (get, chain, loop function) at the beginning call
+ gst_object_sync_values(element,timestamp).
+ This will make the controller update all GObject properties that are
+ under its control with the current values based on the timestamp.
+
+What needs to be done in applications? Again it's not a lot to change.
+
+ * create a #GstControlSource.
+ csource = gst_interpolation_control_source_new ();
+ g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
+
+ * Attach the #GstControlSource on the controller to a property.
+ gst_object_add_control_binding (object, gst_direct_control_binding_new (object, "prop1", csource));
+
+ * Set the control values
+ gst_timed_value_control_source_set ((GstTimedValueControlSource *)csource,0 * GST_SECOND, value1);
+ gst_timed_value_control_source_set ((GstTimedValueControlSource *)csource,1 * GST_SECOND, value2);
+
+ * start your pipeline</doc>
+ <function name="check_uniqueness"
+ c:identifier="gst_object_check_uniqueness">
+ <doc xml:space="preserve">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
+careful when passing a list with a locked object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a #GstObject named @name does not appear in @list,
+%FALSE if it does.
+
+MT safe. Grabs and releases the LOCK of each object in the list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a list of #GstObject to
+ check through</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Object"/>
+ </type>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name to search for</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="default_deep_notify"
+ c:identifier="gst_object_default_deep_notify">
+ <doc xml:space="preserve">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's LOCK for getting its
+ path string.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the #GObject that signalled the notify.</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="orig" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject that initiated the notify.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GParamSpec of the property.</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="excluded_props"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">
+ a set of user-specified properties to exclude or %NULL to show
+ all changes.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="ref_sink"
+ c:identifier="gst_object_ref_sink"
+ introspectable="0">
+ <doc xml:space="preserve">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 "assumes ownership"
+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.
+
+For more background on "floating references" please see the #GObject
+documentation.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="object"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstObject to sink</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="replace" c:identifier="gst_object_replace">
+ <doc xml:space="preserve">Atomically modifies a pointer to point to a new object.
+The reference count of @oldobj is decreased and the reference count of
+@newobj is increased.
+
+Either @newobj and the value pointed to by @oldobj may be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @newobj was different from @oldobj</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="oldobj"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a place of
+ a #GstObject to replace</doc>
+ <type name="Object" c:type="GstObject**"/>
+ </parameter>
+ <parameter name="newobj"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a new #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="deep_notify">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="GstObject*"/>
+ </instance-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>
+ </virtual-method>
+ <method name="add_control_binding"
+ c:identifier="gst_object_add_control_binding">
+ <doc xml:space="preserve">Attach the #GstControlBinding to the object. If there already was a
+#GstControlBinding for this property it will be replaced.
+
+The object's reference count will be incremented, and any floating
+reference will be removed (see gst_object_ref_sink())</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if the given @binding has not been setup for this object or
+has been setup for a non suitable property, %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the controller object</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstControlBinding that should be used</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="default_error" c:identifier="gst_object_default_error">
+ <doc xml:space="preserve">A default error function that uses g_printerr() to display the error message
+and the optional debug sting..
+
+The default handler will simply print the error string using g_print.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstObject that initiated the error.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="error" transfer-ownership="none">
+ <doc xml:space="preserve">the GError.</doc>
+ <type name="GLib.Error" c:type="const GError*"/>
+ </parameter>
+ <parameter name="debug"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an additional debug information string, or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_control_binding"
+ c:identifier="gst_object_get_control_binding">
+ <doc xml:space="preserve">Gets the corresponding #GstControlBinding for the property. This should be
+unreferenced again after use.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstControlBinding for
+@property_name or %NULL if the property is not controlled.</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the property</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_control_rate"
+ c:identifier="gst_object_get_control_rate">
+ <doc xml:space="preserve">Obtain the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+
+If the @object is not under property control, this will return
+%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing.
+
+The control-rate is not expected to change if the element is in
+%GST_STATE_PAUSED or %GST_STATE_PLAYING.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the control rate in nanoseconds</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_g_value_array"
+ c:identifier="gst_object_get_g_value_array">
+ <doc xml:space="preserve">Gets a number of #GValues for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+#GValue.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values" transfer-ownership="none">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <array length="3" zero-terminated="0" c:type="GValue*">
+ <type name="GObject.Value" c:type="GValue"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_object_get_name">
+ <doc xml:space="preserve">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.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the name of @object. g_free()
+after usage.
+
+MT safe. This function grabs and releases @object's LOCK.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_parent" c:identifier="gst_object_get_parent">
+ <doc xml:space="preserve">Returns the parent of @object. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">parent of @object, this can be
+ %NULL if @object has no parent. unref after usage.
+
+MT safe. Grabs and releases @object's LOCK.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_path_string" c:identifier="gst_object_get_path_string">
+ <doc xml:space="preserve">Generates a string describing the path of @object in
+the object hierarchy. Only useful (or used) for debugging.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string describing the path of @object. You must
+ g_free() the string after usage.
+
+MT safe. Grabs and releases the #GstObject's LOCK for all objects
+ in the hierarchy.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_value" c:identifier="gst_object_get_value">
+ <doc xml:space="preserve">Gets the value for the given controlled property at the requested time.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the GValue of the property at the given time,
+or %NULL if the property isn't controlled.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change should be read from</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_value_array"
+ c:identifier="gst_object_get_value_array"
+ introspectable="0">
+ <doc xml:space="preserve">Gets a number of values for the given controlled property starting at the
+requested time. The array @values need to hold enough space for @n_values of
+the same type as the objects property's type.
+
+This function is useful if one wants to e.g. draw a graph of the control
+curve or apply a control curve sample by sample.
+
+The values are unboxed and ready to be used. The similar function
+gst_object_get_g_value_array() returns the array as #GValues and is
+better suites for bindings.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the property to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">the time spacing between subsequent values</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_values" transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="values"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">array to put control-values in</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_active_control_bindings"
+ c:identifier="gst_object_has_active_control_bindings">
+ <doc xml:space="preserve">Check if the @object has active controlled properties.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the object has active controlled properties</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_ancestor"
+ c:identifier="gst_object_has_ancestor"
+ deprecated="1">
+ <doc xml:space="preserve">Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.</doc>
+ <doc-deprecated xml:space="preserve">Use gst_object_has_as_ancestor() instead.
+
+MT safe. Grabs and releases @object's locks.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @ancestor is an ancestor of @object.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="ancestor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check as ancestor</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_as_ancestor" c:identifier="gst_object_has_as_ancestor">
+ <doc xml:space="preserve">Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @ancestor is an ancestor of @object.
+
+MT safe. Grabs and releases @object's locks.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="ancestor" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check as ancestor</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_as_parent"
+ c:identifier="gst_object_has_as_parent"
+ version="1.6">
+ <doc xml:space="preserve">Check if @parent is the parent of @object.
+E.g. a #GstElement can check if it owns a given #GstPad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if either @object or @parent is %NULL. %TRUE if @parent is
+ the parent of @object. Otherwise %FALSE.
+
+MT safe. Grabs and releases @object's locks.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to check as parent</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_object_ref">
+ <doc xml:space="preserve">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);</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to @object</doc>
+ <type name="Object" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to reference</doc>
+ <type name="Object" c:type="gpointer"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_control_binding"
+ c:identifier="gst_object_remove_control_binding">
+ <doc xml:space="preserve">Removes the corresponding #GstControlBinding. If it was the
+last ref of the binding, it will be disposed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the binding could be removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="binding" transfer-ownership="none">
+ <doc xml:space="preserve">the binding</doc>
+ <type name="ControlBinding" c:type="GstControlBinding*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_control_binding_disabled"
+ c:identifier="gst_object_set_control_binding_disabled">
+ <doc xml:space="preserve">This function is used to disable the control bindings on a property for
+some time, i.e. gst_object_sync_values() will do nothing for the
+property.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">property to disable</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="disabled" transfer-ownership="none">
+ <doc xml:space="preserve">boolean that specifies whether to disable the controller
+or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_control_bindings_disabled"
+ c:identifier="gst_object_set_control_bindings_disabled">
+ <doc xml:space="preserve">This function is used to disable all controlled properties of the @object for
+some time, i.e. gst_object_sync_values() will do nothing.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="disabled" transfer-ownership="none">
+ <doc xml:space="preserve">boolean that specifies whether to disable the controller
+or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_control_rate"
+ c:identifier="gst_object_set_control_rate">
+ <doc xml:space="preserve">Change the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+
+The control-rate should not change if the element is in %GST_STATE_PAUSED or
+%GST_STATE_PLAYING.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="control_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the new control-rate in nanoseconds.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_name" c:identifier="gst_object_set_name">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the name could be set. Since Objects that have
+a parent cannot be renamed, this function returns %FALSE in those
+cases.
+
+MT safe. This function grabs and releases @object's LOCK.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new name of object</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_parent" c:identifier="gst_object_set_parent">
+ <doc xml:space="preserve">Sets the parent of @object to @parent. The object's reference count will
+be incremented, and any floating reference will be removed (see gst_object_ref_sink()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @parent could be set or %FALSE when @object
+already had a parent or @object and @parent are the same.
+
+MT safe. Grabs and releases @object's LOCK.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">new parent of object</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="suggest_next_sync"
+ c:identifier="gst_object_suggest_next_sync">
+ <doc xml:space="preserve">Returns a suggestion for timestamps where buffers should be split
+to get best controller results.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Returns the suggested timestamp or %GST_CLOCK_TIME_NONE
+if no control-rate was set.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sync_values" c:identifier="gst_object_sync_values">
+ <doc xml:space="preserve">Sets the properties of the object, according to the #GstControlSources that
+(maybe) handle them and for the given timestamp.
+
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the controller values could be applied to the object
+properties, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that has controlled properties</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time that should be processed</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unparent" c:identifier="gst_object_unparent">
+ <doc xml:space="preserve">Clear the parent of @object, removing the associated reference.
+This function decreases the refcount of @object.
+
+MT safe. Grabs and releases @object's lock.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to unparent</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_object_unref">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to unreference</doc>
+ <type name="Object" c:type="gpointer"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="name"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="parent" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The parent of the object. Please note, that when changing the 'parent'
+property, we don't emit #GObject::notify and #GstObject::deep-notify
+signals due to locking issues. In some cases one can use
+#GstBin::element-added or #GstBin::element-removed signals on the parent to
+achieve a similar effect.</doc>
+ <type name="Object"/>
+ </property>
+ <field name="object">
+ <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+ </field>
+ <field name="lock">
+ <doc xml:space="preserve">object LOCK</doc>
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="name">
+ <doc xml:space="preserve">The name of the object</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="parent">
+ <doc xml:space="preserve">this object's parent, weak ref</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </field>
+ <field name="flags">
+ <doc xml:space="preserve">flags for this object</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="control_bindings" readable="0" private="1">
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="control_rate" readable="0" private="1">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="last_sync" readable="0" private="1">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <glib:signal name="deep-notify"
+ when="first"
+ no-recurse="1"
+ detailed="1"
+ no-hooks="1">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="prop_object" transfer-ownership="none">
+ <doc xml:space="preserve">the object that originated the signal</doc>
+ <type name="Object"/>
+ </parameter>
+ <parameter name="prop" transfer-ownership="none">
+ <doc xml:space="preserve">the property that changed</doc>
+ <type name="GObject.ParamSpec"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="ObjectClass"
+ c:type="GstObjectClass"
+ glib:is-gtype-struct-for="Object">
+ <doc xml:space="preserve">GStreamer base object class.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">parent</doc>
+ <type name="GObject.InitiallyUnownedClass"
+ c:type="GInitiallyUnownedClass"/>
+ </field>
+ <field name="path_string_separator">
+ <doc xml:space="preserve">separator used by gst_object_get_path_string()</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="deep_notify">
+ <callback name="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="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="ObjectFlags"
+ glib:type-name="GstObjectFlags"
+ glib:get-type="gst_object_flags_get_type"
+ c:type="GstObjectFlags">
+ <doc xml:space="preserve">The standard flags that an gstobject may have.</doc>
+ <member name="may_be_leaked"
+ value="1"
+ c:identifier="GST_OBJECT_FLAG_MAY_BE_LEAKED"
+ glib:nick="may-be-leaked">
+ <doc xml:space="preserve">the object is expected to stay alive even
+after gst_deinit() has been called and so should be ignored by leak
+detection tools. (Since 1.10)</doc>
+ </member>
+ <member name="last"
+ value="16"
+ c:identifier="GST_OBJECT_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">subclasses can add additional flags starting from this flag</doc>
+ </member>
+ </bitfield>
+ <constant name="PARAM_CONTROLLABLE"
+ value="512"
+ c:type="GST_PARAM_CONTROLLABLE">
+ <doc xml:space="preserve">Use this flag on GObject properties to signal they can make sense to be.
+controlled over time. This hint is used by the GstController.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PARAM_MUTABLE_PAUSED"
+ value="2048"
+ c:type="GST_PARAM_MUTABLE_PAUSED">
+ <doc xml:space="preserve">Use this flag on GObject properties of GstElements to indicate that
+they can be changed when the element is in the PAUSED or lower state.
+This flag implies GST_PARAM_MUTABLE_READY.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PARAM_MUTABLE_PLAYING"
+ value="4096"
+ c:type="GST_PARAM_MUTABLE_PLAYING">
+ <doc xml:space="preserve">Use this flag on GObject properties of GstElements to indicate that
+they can be changed when the element is in the PLAYING or lower state.
+This flag implies GST_PARAM_MUTABLE_PAUSED.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PARAM_MUTABLE_READY"
+ value="1024"
+ c:type="GST_PARAM_MUTABLE_READY">
+ <doc xml:space="preserve">Use this flag on GObject properties of GstElements to indicate that
+they can be changed when the element is in the READY or lower state.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PARAM_USER_SHIFT"
+ value="65536"
+ c:type="GST_PARAM_USER_SHIFT">
+ <doc xml:space="preserve">Bits based on GST_PARAM_USER_SHIFT can be used by 3rd party applications.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PROTECTION_SYSTEM_ID_CAPS_FIELD"
+ value="protection-system"
+ c:type="GST_PROTECTION_SYSTEM_ID_CAPS_FIELD"
+ version="1.6">
+ <doc xml:space="preserve">The field name in a GstCaps that is used to signal the UUID of the protection
+system.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="PTR_FORMAT" value="paA" c:type="GST_PTR_FORMAT">
+ <doc xml:space="preserve">printf format type used to debug GStreamer types. You can use this in
+combination with GStreamer's debug logging system as well as the functions
+gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
+to pretty-print the following types: #GstCaps, #GstStructure,
+#GstCapsFeatures, #GstTagList, #GstDateTime, #GstBuffer, #GstBufferList,
+#GstMessage, #GstEvent, #GstQuery, #GstContext, #GstPad, #GstObject. All
+#GObject types will be printed as typename plus pointer, and everything
+else will simply be printed as pointer address.
+
+This can only be used on types whose size is &gt;= sizeof(gpointer).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="Pad"
+ c:symbol-prefix="pad"
+ c:type="GstPad"
+ parent="Object"
+ glib:type-name="GstPad"
+ glib:get-type="gst_pad_get_type"
+ glib:type-struct="PadClass">
+ <doc xml:space="preserve">A #GstElement is linked to other elements via "pads", which are extremely
+light-weight generic link points.
+
+Pads have a #GstPadDirection, source pads produce data, sink pads consume
+data.
+
+Pads are typically created from a #GstPadTemplate with
+gst_pad_new_from_template() and are then added to a #GstElement. This usually
+happens when the element is created but it can also happen dynamically based
+on the data that the element is processing or based on the pads that the
+application requests.
+
+Pads without pad templates can be created with gst_pad_new(),
+which takes a direction and a name as an argument. If the name is %NULL,
+then a guaranteed unique name will be assigned to it.
+
+A #GstElement creating a pad will typically use the various
+gst_pad_set_*_function() calls to register callbacks for events, queries or
+dataflow on the pads.
+
+gst_pad_get_parent() will retrieve the #GstElement that owns the pad.
+
+After two pads are retrieved from an element by gst_element_get_static_pad(),
+the pads can be linked with gst_pad_link(). (For quick links,
+you can also use gst_element_link(), which will make the obvious
+link for you if it's straightforward.). Pads can be unlinked again with
+gst_pad_unlink(). gst_pad_get_peer() can be used to check what the pad is
+linked to.
+
+Before dataflow is possible on the pads, they need to be activated with
+gst_pad_set_active().
+
+gst_pad_query() and gst_pad_peer_query() can be used to query various
+properties of the pad and the stream.
+
+To send a #GstEvent on a pad, use gst_pad_send_event() and
+gst_pad_push_event(). Some events will be sticky on the pad, meaning that
+after they pass on the pad they can be queried later with
+gst_pad_get_sticky_event() and gst_pad_sticky_events_foreach().
+gst_pad_get_current_caps() and gst_pad_has_current_caps() are convenience
+functions to query the current sticky CAPS event on a pad.
+
+GstElements will use gst_pad_push() and gst_pad_pull_range() to push out
+or pull in a buffer.
+
+The dataflow, events and queries that happen on a pad can be monitored with
+probes that can be installed with gst_pad_add_probe(). gst_pad_is_blocked()
+can be used to check if a block probe is installed on the pad.
+gst_pad_is_blocking() checks if the blocking probe is currently blocking the
+pad. gst_pad_remove_probe() is used to remove a previously installed probe
+and unblock blocking probes if any.
+
+Pad have an offset that can be retrieved with gst_pad_get_offset(). This
+offset will be applied to the running_time of all data passing over the pad.
+gst_pad_set_offset() can be used to change the offset.
+
+Convenience functions exist to start, pause and stop the task on a pad with
+gst_pad_start_task(), gst_pad_pause_task() and gst_pad_stop_task()
+respectively.</doc>
+ <constructor name="new" c:identifier="gst_pad_new">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.
+
+MT safe.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the new pad.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadDirection of the pad.</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_static_template"
+ c:identifier="gst_pad_new_from_static_template">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStaticPadTemplate to use</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the pad</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_template"
+ c:identifier="gst_pad_new_from_template">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPad, or %NULL in
+case of an error.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">the pad template to use</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the pad</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <function name="link_get_name"
+ c:identifier="gst_pad_link_get_name"
+ version="1.4">
+ <doc xml:space="preserve">Gets a string representing the given pad-link return.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a static string with the name of the pad-link return.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadLinkReturn to get the name of.</doc>
+ <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="linked">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="peer" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unlinked">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="peer" transfer-ownership="none">
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="activate_mode" c:identifier="gst_pad_activate_mode">
+ <doc xml:space="preserve">Activates or deactivates the given pad in @mode via dispatching to the
+pad's activatemodefunc. For use from within pad activation functions only.
+
+If you don't know what this is, you probably don't want to call it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the operation was successful.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to activate or deactivate.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the requested activation mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">whether or not the pad should be active.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_probe" c:identifier="gst_pad_add_probe">
+ <doc xml:space="preserve">Be notified of different states of pads. The provided callback is called for
+every state that matches @mask.
+
+Probes are called in groups: First GST_PAD_PROBE_TYPE_BLOCK probes are
+called, then others, then finally GST_PAD_PROBE_TYPE_IDLE. The only
+exception here are GST_PAD_PROBE_TYPE_IDLE probes that are called
+immediately if the pad is already idle while calling gst_pad_add_probe().
+In each of the groups, probes are called in the order in which they were
+added.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an id or 0 if no probe is pending. The id can be used to remove the
+probe with gst_pad_remove_probe(). When using GST_PAD_PROBE_TYPE_IDLE it can
+happen that the probe can be run immediately and if the probe returns
+GST_PAD_PROBE_REMOVE this functions returns 0.
+
+MT safe.</doc>
+ <type name="gulong" c:type="gulong"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to add the probe to</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">the probe mask</doc>
+ <type name="PadProbeType" c:type="GstPadProbeType"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2"
+ destroy="3">
+ <doc xml:space="preserve">#GstPadProbeCallback that will be called with notifications of
+ the pad state</doc>
+ <type name="PadProbeCallback" c:type="GstPadProbeCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_data"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">#GDestroyNotify for user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="can_link" c:identifier="gst_pad_can_link">
+ <doc xml:space="preserve">Checks if the source pad and the sink pad are compatible so they can be
+linked.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads can be linked.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="srcpad" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sinkpad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="chain" c:identifier="gst_pad_chain">
+ <doc xml:space="preserve">Chain a buffer to @pad.
+
+The function returns #GST_FLOW_FLUSHING if the pad was flushing.
+
+If the buffer type is not acceptable for @pad (as negotiated with a
+preceding GST_EVENT_CAPS event), 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.
+
+MT safe.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad, returns GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to send, return GST_FLOW_ERROR
+ if not.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="chain_list" c:identifier="gst_pad_chain_list">
+ <doc xml:space="preserve">Chain a bufferlist to @pad.
+
+The function returns #GST_FLOW_FLUSHING if the pad was flushing.
+
+If @pad was not negotiated properly with a CAPS event, 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad, returns GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBufferList to send, return GST_FLOW_ERROR
+ if not.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="check_reconfigure"
+ c:identifier="gst_pad_check_reconfigure">
+ <doc xml:space="preserve">Check and clear the #GST_PAD_FLAG_NEED_RECONFIGURE flag on @pad and return %TRUE
+if the flag was set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the GST_PAD_FLAG_NEED_RECONFIGURE flag was set on @pad.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to check</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="create_stream_id" c:identifier="gst_pad_create_stream_id">
+ <doc xml:space="preserve">Creates a stream-id for the source #GstPad @pad by combining the
+upstream information with the optional @stream_id of the stream
+of @pad. @pad must have a parent #GstElement and which must have zero
+or one sinkpad. @stream_id can only be %NULL if the parent element
+of @pad has only a single source pad.
+
+This function generates an unique stream-id by getting the upstream
+stream-start event stream ID and appending @stream_id to it. If the
+element has no sinkpad it will generate an upstream stream-id by
+doing an URI query on the element and in the worst case just uses
+a random number. Source elements that don't implement the URI
+handler interface should ideally generate a unique, deterministic
+stream-id manually instead.
+
+Since stream IDs are sorted alphabetically, any numbers in the
+stream ID should be printed with a fixed number of characters,
+preceded by 0's, such as by using the format \%03u instead of \%u.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A stream-id for @pad. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">Parent #GstElement of @pad</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="stream_id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The stream-id</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_stream_id_printf"
+ c:identifier="gst_pad_create_stream_id_printf"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a stream-id for the source #GstPad @pad by combining the
+upstream information with the optional @stream_id of the stream
+of @pad. @pad must have a parent #GstElement and which must have zero
+or one sinkpad. @stream_id can only be %NULL if the parent element
+of @pad has only a single source pad.
+
+This function generates an unique stream-id by getting the upstream
+stream-start event stream ID and appending @stream_id to it. If the
+element has no sinkpad it will generate an upstream stream-id by
+doing an URI query on the element and in the worst case just uses
+a random number. Source elements that don't implement the URI
+handler interface should ideally generate a unique, deterministic
+stream-id manually instead.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A stream-id for @pad. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">Parent #GstElement of @pad</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="stream_id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The stream-id</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">parameters for the @stream_id format string</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_stream_id_printf_valist"
+ c:identifier="gst_pad_create_stream_id_printf_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a stream-id for the source #GstPad @pad by combining the
+upstream information with the optional @stream_id of the stream
+of @pad. @pad must have a parent #GstElement and which must have zero
+or one sinkpad. @stream_id can only be %NULL if the parent element
+of @pad has only a single source pad.
+
+This function generates an unique stream-id by getting the upstream
+stream-start event stream ID and appending @stream_id to it. If the
+element has no sinkpad it will generate an upstream stream-id by
+doing an URI query on the element and in the worst case just uses
+a random number. Source elements that don't implement the URI
+handler interface should ideally generate a unique, deterministic
+stream-id manually instead.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A stream-id for @pad. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">Parent #GstElement of @pad</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="stream_id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The stream-id</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">parameters for the @stream_id format string</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="event_default" c:identifier="gst_pad_event_default">
+ <doc xml:space="preserve">Invokes the default event handler for the given pad.
+
+The EOS event will pause the task associated with @pad before it is forwarded
+to all internally linked pads,
+
+The event is sent to all pads internally linked to @pad. This function
+takes ownership of @event.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was sent successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to call the default event handler on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to handle.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="forward" c:identifier="gst_pad_forward">
+ <doc xml:space="preserve">Calls @forward for all internally linked pads of @pad. This function deals with
+dynamically changing internal pads and will make sure that the @forward
+function is only called once for each pad.
+
+When @forward returns %TRUE, no further pads will be processed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if one of the dispatcher functions returned %TRUE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="forward"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a #GstPadForwardFunction</doc>
+ <type name="PadForwardFunction" c:type="GstPadForwardFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @forward</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allowed_caps" c:identifier="gst_pad_get_allowed_caps">
+ <doc xml:space="preserve">Gets the capabilities of the allowed media types that can flow through
+@pad and its peer.
+
+The allowed capabilities is calculated as the intersection of the results of
+calling gst_pad_query_caps() on @pad and its peer. The caller owns a reference
+on the resulting caps.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the allowed #GstCaps of the
+ pad link. Unref the caps when you no longer need it. This
+ function returns %NULL when @pad has no peer.
+
+MT safe.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_current_caps" c:identifier="gst_pad_get_current_caps">
+ <doc xml:space="preserve">Gets the capabilities currently configured on @pad with the last
+#GST_EVENT_CAPS event.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the current caps of the pad with
+incremented ref-count or %NULL when pad has no caps. Unref after usage.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the current capabilities of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_direction" c:identifier="gst_pad_get_direction">
+ <doc xml:space="preserve">Gets the direction of the pad. The direction of the pad is
+decided at construction time so this function does not take
+the LOCK.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadDirection of the pad.
+
+MT safe.</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the direction of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_element_private"
+ c:identifier="gst_pad_get_element_private">
+ <doc xml:space="preserve">Gets the private data of a pad.
+No locking is performed in this function.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #gpointer to the private data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to get the private data of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_last_flow_return"
+ c:identifier="gst_pad_get_last_flow_return"
+ version="1.4">
+ <doc xml:space="preserve">Gets the #GstFlowReturn return from the last data passed by this pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_offset" c:identifier="gst_pad_get_offset">
+ <doc xml:space="preserve">Get the offset applied to the running time of @pad. @pad has to be a source
+pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the offset.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template" c:identifier="gst_pad_get_pad_template">
+ <doc xml:space="preserve">Gets the template for @pad.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstPadTemplate from which
+ this pad was instantiated, or %NULL if this pad has no
+ template. Unref after usage.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pad_template_caps"
+ c:identifier="gst_pad_get_pad_template_caps">
+ <doc xml:space="preserve">Gets the capabilities for @pad's template.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps of this pad template.
+Unref after usage.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the template capabilities from.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_parent_element"
+ c:identifier="gst_pad_get_parent_element">
+ <doc xml:space="preserve">Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
+its parent is not an element, return %NULL.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the parent of the pad. The
+caller has a reference on the parent, so unref when you're finished
+with it.
+
+MT safe.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a pad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_peer" c:identifier="gst_pad_get_peer">
+ <doc xml:space="preserve">Gets the peer of @pad. This function refs the peer pad so
+you need to unref it after use.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the peer #GstPad. Unref after usage.
+
+MT safe.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the peer of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_range" c:identifier="gst_pad_get_range">
+ <doc xml:space="preserve">When @pad is flushing this function returns #GST_FLOW_FLUSHING
+immediately and @buffer is %NULL.
+
+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.
+
+If @buffer points to a variable holding %NULL, a valid new #GstBuffer will be
+placed in @buffer when this function returns #GST_FLOW_OK. The new buffer
+must be freed with gst_buffer_unref() after usage.
+
+When @buffer points to a variable that points to a valid #GstBuffer, the
+buffer will be filled with the result data when this function returns
+#GST_FLOW_OK. If the provided buffer is larger than @size, only
+@size bytes will be filled in the result buffer and its size will be updated
+accordingly.
+
+Note that less than @size bytes can be returned in @buffer when, for example,
+an EOS condition is near or when @buffer is not large enough to hold @size
+bytes. The caller should check the result buffer size to get the result size.
+
+When this function returns any other result value than #GST_FLOW_OK, @buffer
+will be unchanged.
+
+This is a lowlevel function. Usually gst_pad_pull_range() is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.
+
+MT safe.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a src #GstPad, returns #GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">The start offset of the buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The length of the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to hold the #GstBuffer,
+ returns #GST_FLOW_ERROR if %NULL.</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sticky_event" c:identifier="gst_pad_get_sticky_event">
+ <doc xml:space="preserve">Returns a new reference of the sticky event of type @event_type
+from the event.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstEvent of type
+@event_type or %NULL when no event of @event_type was on
+@pad. Unref after usage.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to get the event from.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event_type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEventType that should be retrieved.</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the event</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_stream"
+ c:identifier="gst_pad_get_stream"
+ version="1.10">
+ <doc xml:space="preserve">Returns the current #GstStream for the @pad, or %NULL if none has been
+set yet, i.e. the pad has not received a stream-start event yet.
+
+This is a convenience wrapper around gst_pad_get_sticky_event() and
+gst_event_parse_stream().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the current #GstStream for @pad, or %NULL.
+ unref the returned stream when no longer needed.</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_id"
+ c:identifier="gst_pad_get_stream_id"
+ version="1.2">
+ <doc xml:space="preserve">Returns the current stream-id for the @pad, or %NULL if none has been
+set yet, i.e. the pad has not received a stream-start event yet.
+
+This is a convenience wrapper around gst_pad_get_sticky_event() and
+gst_event_parse_stream_start().
+
+The returned stream-id string should be treated as an opaque string, its
+contents should not be interpreted.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly-allocated copy of the stream-id for
+ @pad, or %NULL. g_free() the returned string when no longer
+ needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_task_state"
+ c:identifier="gst_pad_get_task_state"
+ version="1.12">
+ <doc xml:space="preserve">Get @pad task state. If no task is currently
+set, #GST_TASK_STOPPED is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current state of @pad's task.</doc>
+ <type name="TaskState" c:type="GstTaskState"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to get task state from</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_current_caps" c:identifier="gst_pad_has_current_caps">
+ <doc xml:space="preserve">Check if @pad has caps set on it with a #GST_EVENT_CAPS event.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @pad has caps associated with it.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to check</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_active" c:identifier="gst_pad_is_active">
+ <doc xml:space="preserve">Query if a pad is active</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad is active.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to query</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_blocked" c:identifier="gst_pad_is_blocked">
+ <doc xml:space="preserve">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()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad is blocked.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to query</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_blocking" c:identifier="gst_pad_is_blocking">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad is blocking.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to query</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_linked" c:identifier="gst_pad_is_linked">
+ <doc xml:space="preserve">Checks if a @pad is linked to another pad or not.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad is linked, %FALSE otherwise.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">pad to check</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_internal_links"
+ c:identifier="gst_pad_iterate_internal_links">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_iterator_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstIterator of #GstPad
+ or %NULL when the pad does not have an iterator function
+ configured. Use gst_iterator_free() after usage.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the GstPad to get the internal links of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="iterate_internal_links_default"
+ c:identifier="gst_pad_iterate_internal_links_default">
+ <doc xml:space="preserve">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().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstPad, or %NULL if @pad
+has no parent. Unref each returned pad with gst_object_unref().</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to get the internal links of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link" c:identifier="gst_pad_link">
+ <doc xml:space="preserve">Links the source pad and the sink pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A result code indicating if the connection worked or
+ what went wrong.
+
+MT Safe.</doc>
+ <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="srcpad" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstPad to link.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sinkpad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad to link.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_full" c:identifier="gst_pad_link_full">
+ <doc xml:space="preserve">Links the source pad and the sink pad.
+
+This variant of #gst_pad_link provides a more granular control on the
+checks being done when linking. While providing some considerable speedups
+the caller of this method must be aware that wrong usage of those flags
+can cause severe issues. Refer to the documentation of #GstPadLinkCheck
+for more information.
+
+MT Safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A result code indicating if the connection worked or
+ what went wrong.</doc>
+ <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="srcpad" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstPad to link.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sinkpad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad to link.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the checks to validate when linking</doc>
+ <type name="PadLinkCheck" c:type="GstPadLinkCheck"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_maybe_ghosting"
+ c:identifier="gst_pad_link_maybe_ghosting"
+ version="1.10">
+ <doc xml:space="preserve">Links @src to @sink, creating any #GstGhostPad's in between as necessary.
+
+This is a convenience function to save having to create and add intermediate
+#GstGhostPad's as required for linking across #GstBin boundaries.
+
+If @src or @sink pads don't have parent elements or do not share a common
+ancestor, the link will fail.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether the link succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="link_maybe_ghosting_full"
+ c:identifier="gst_pad_link_maybe_ghosting_full"
+ version="1.10">
+ <doc xml:space="preserve">Links @src to @sink, creating any #GstGhostPad's in between as necessary.
+
+This is a convenience function to save having to create and add intermediate
+#GstGhostPad's as required for linking across #GstBin boundaries.
+
+If @src or @sink pads don't have parent elements or do not share a common
+ancestor, the link will fail.
+
+Calling gst_pad_link_maybe_ghosting_full() with
+@flags == %GST_PAD_LINK_CHECK_DEFAULT is the recommended way of linking
+pads with safety checks applied.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether the link succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">some #GstPadLinkCheck flags</doc>
+ <type name="PadLinkCheck" c:type="GstPadLinkCheck"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="mark_reconfigure" c:identifier="gst_pad_mark_reconfigure">
+ <doc xml:space="preserve">Mark a pad for needing reconfiguration. The next call to
+gst_pad_check_reconfigure() will return %TRUE after this call.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to mark</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="needs_reconfigure"
+ c:identifier="gst_pad_needs_reconfigure">
+ <doc xml:space="preserve">Check the #GST_PAD_FLAG_NEED_RECONFIGURE flag on @pad and return %TRUE
+if the flag was set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the GST_PAD_FLAG_NEED_RECONFIGURE flag is set on @pad.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to check</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pause_task" c:identifier="gst_pad_pause_task">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %TRUE if the task could be paused or %FALSE when the pad
+has no task.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to pause the task of</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peer_query" c:identifier="gst_pad_peer_query">
+ <doc xml:space="preserve">Performs gst_pad_query() on the peer of @pad.
+
+The caller is responsible for both the allocation and deallocation of
+the query structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed. This function returns %FALSE
+if @pad has no peer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to invoke the peer query on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery to perform.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peer_query_accept_caps"
+ c:identifier="gst_pad_peer_query_accept_caps">
+ <doc xml:space="preserve">Check if the peer of @pad accepts @caps. If @pad has no peer, this function
+returns %TRUE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the peer of @pad can accept the caps or @pad has no peer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to check the peer of</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to check on the pad</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peer_query_caps" c:identifier="gst_pad_peer_query_caps">
+ <doc xml:space="preserve">Gets the capabilities of the peer connected to this pad. Similar to
+gst_pad_query_caps().
+
+When called on srcpads @filter contains the caps that
+upstream could produce in the order preferred by upstream. When
+called on sinkpads @filter contains the caps accepted by
+downstream in the preferred order. @filter might be %NULL but
+if it is not %NULL the returned caps will be a subset of @filter.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the caps of the peer pad with incremented
+ref-count. When there is no peer pad, this function returns @filter or,
+when @filter is %NULL, ANY caps.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the capabilities of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCaps filter, or %NULL.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peer_query_convert"
+ c:identifier="gst_pad_peer_query_convert">
+ <doc xml:space="preserve">Queries the peer pad of a given sink pad to convert @src_val in @src_format
+to @dest_format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad, on whose peer pad to invoke the convert query on.
+ Must be a sink pad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat to convert from.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_val" transfer-ownership="none">
+ <doc xml:space="preserve">a value to convert.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat to convert to.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to the result.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peer_query_duration"
+ c:identifier="gst_pad_peer_query_duration">
+ <doc xml:space="preserve">Queries the peer pad of a given sink pad for the total stream duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad on whose peer pad to invoke the duration query on.
+ Must be a sink pad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location in which to store the total
+ duration, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peer_query_position"
+ c:identifier="gst_pad_peer_query_position">
+ <doc xml:space="preserve">Queries the peer of a given sink pad for the stream position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad on whose peer to invoke the position query on.
+ Must be a sink pad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="cur"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location in which to store the current
+ position, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="proxy_query_accept_caps"
+ c:identifier="gst_pad_proxy_query_accept_caps">
+ <doc xml:space="preserve">Checks if all internally linked pads of @pad accepts the caps in @query and
+returns the intersection of the results.
+
+This function is useful as a default accept caps query function for an element
+that can handle any stream format, but requires caps that are acceptable for
+all opposite pads.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @query could be executed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to proxy.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">an ACCEPT_CAPS #GstQuery.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="proxy_query_caps" c:identifier="gst_pad_proxy_query_caps">
+ <doc xml:space="preserve">Calls gst_pad_query_caps() for all internally linked pads of @pad and returns
+the intersection of the results.
+
+This function is useful as a default caps query 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @query could be executed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to proxy.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a CAPS #GstQuery.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pull_range" c:identifier="gst_pad_pull_range">
+ <doc xml:space="preserve">Pulls a @buffer from the peer pad or fills up a provided buffer.
+
+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.
+
+If @buffer points to a variable holding %NULL, a valid new #GstBuffer will be
+placed in @buffer when this function returns #GST_FLOW_OK. The new buffer
+must be freed with gst_buffer_unref() after usage. When this function
+returns any other result value, @buffer will still point to %NULL.
+
+When @buffer points to a variable that points to a valid #GstBuffer, the
+buffer will be filled with the result data when this function returns
+#GST_FLOW_OK. When this function returns any other result value,
+@buffer will be unchanged. If the provided buffer is larger than @size, only
+@size bytes will be filled in the result buffer and its size will be updated
+accordingly.
+
+Note that less than @size bytes can be returned in @buffer when, for example,
+an EOS condition is near or when @buffer is not large enough to hold @size
+bytes. The caller should check the result buffer size to get the result size.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the peer pad.
+
+MT safe.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad, returns GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">The start offset of the buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The length of the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to hold the #GstBuffer, returns
+ GST_FLOW_ERROR if %NULL.</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_pad_push">
+ <doc xml:space="preserve">Pushes a buffer to the peer of @pad.
+
+This function will call installed block probes before triggering any
+installed data probes.
+
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the peer pad.
+
+MT safe.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a source #GstPad, returns #GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to push returns GST_FLOW_ERROR
+ if not.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_event" c:identifier="gst_pad_push_event">
+ <doc xml:space="preserve">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 ownership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to push the event to.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to send to the pad.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_list" c:identifier="gst_pad_push_list">
+ <doc xml:space="preserve">Pushes a buffer list to the peer of @pad.
+
+This function will call installed block probes before triggering any
+installed data probes.
+
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the peer pad.
+
+MT safe.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a source #GstPad, returns #GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBufferList to push returns GST_FLOW_ERROR
+ if not.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query" c:identifier="gst_pad_query">
+ <doc xml:space="preserve">Dispatches a query to a pad. The query should have been allocated by the
+caller via one of the type-specific allocation functions. The element that
+the pad belongs to 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.
+
+Please also note that some queries might need a running pipeline to work.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to invoke the default query on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery to perform.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_accept_caps"
+ c:identifier="gst_pad_query_accept_caps">
+ <doc xml:space="preserve">Check if the given pad accepts the caps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad can accept the caps.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to check</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to check on the pad</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_caps" c:identifier="gst_pad_query_caps">
+ <doc xml:space="preserve">Gets the capabilities this pad can produce or consume.
+Note that this method doesn't necessarily return the caps set by sending a
+gst_event_new_caps() - use gst_pad_get_current_caps() for that instead.
+gst_pad_query_caps returns all possible caps a pad can operate with, using
+the pad's CAPS query function, If the query fails, this function will return
+@filter, if not %NULL, otherwise ANY.
+
+When called on sinkpads @filter contains the caps that
+upstream could produce in the order preferred by upstream. When
+called on srcpads @filter contains the caps accepted by
+downstream in the preferred order. @filter might be %NULL but
+if it is not %NULL the returned caps will be a subset of @filter.
+
+Note that this function does not return writable #GstCaps, use
+gst_caps_make_writable() before modifying the caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the caps of the pad with incremented ref-count.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to get the capabilities of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">suggested #GstCaps, or %NULL</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_convert" c:identifier="gst_pad_query_convert">
+ <doc xml:space="preserve">Queries a pad to convert @src_val in @src_format to @dest_format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to invoke the convert query on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat to convert from.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_val" transfer-ownership="none">
+ <doc xml:space="preserve">a value to convert.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat to convert to.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to the result.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_default" c:identifier="gst_pad_query_default">
+ <doc xml:space="preserve">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
+@pad, only one will be sent the query.
+Multi-sinkpad elements should implement custom query handlers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query was performed successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to call the default query handler on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery to handle.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_duration" c:identifier="gst_pad_query_duration">
+ <doc xml:space="preserve">Queries a pad for the total stream duration.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to invoke the duration query on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a location in which to store the total
+ duration, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_position" c:identifier="gst_pad_query_position">
+ <doc xml:space="preserve">Queries a pad for the stream position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to invoke the position query on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat requested</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="cur"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A location in which to store the current position, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_probe" c:identifier="gst_pad_remove_probe">
+ <doc xml:space="preserve">Remove the probe with @id from @pad.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad with the probe</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">the probe id to remove</doc>
+ <type name="gulong" c:type="gulong"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send_event" c:identifier="gst_pad_send_event">
+ <doc xml:space="preserve">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'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't need to bother itself with this information; the core handles
+all necessary locks and checks.
+
+This function takes ownership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event was handled.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad to send the event to.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to send to the pad.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_activate_function_full"
+ c:identifier="gst_pad_set_activate_function_full">
+ <doc xml:space="preserve">Sets the given activate function for @pad. The activate function will
+dispatch to gst_pad_activate_mode() 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="activate"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadActivateFunction to set.</doc>
+ <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @activate will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_activatemode_function_full"
+ c:identifier="gst_pad_set_activatemode_function_full">
+ <doc xml:space="preserve">Sets the given activate_mode function for the pad. An activate_mode function
+prepares the element for data passing.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="activatemode"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadActivateModeFunction to set.</doc>
+ <type name="PadActivateModeFunction"
+ c:type="GstPadActivateModeFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @activatemode will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_active" c:identifier="gst_pad_set_active">
+ <doc xml:space="preserve">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's activate
+function to perform the actual activation.
+
+If not @active, calls gst_pad_activate_mode() with the pad's current mode
+and a %FALSE argument.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the operation was successful.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to activate or deactivate.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">whether or not the pad should be active.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_chain_function_full"
+ c:identifier="gst_pad_set_chain_function_full">
+ <doc xml:space="preserve">Sets the given chain function for the pad. The chain function is called to
+process a #GstBuffer input buffer. see #GstPadChainFunction for more details.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="chain"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadChainFunction to set.</doc>
+ <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @chain will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_chain_list_function_full"
+ c:identifier="gst_pad_set_chain_list_function_full">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="chainlist"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadChainListFunction to set.</doc>
+ <type name="PadChainListFunction"
+ c:type="GstPadChainListFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @chainlist will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_element_private"
+ c:identifier="gst_pad_set_element_private">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to set the private data of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="priv"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The private data to attach to the pad.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_event_full_function_full"
+ c:identifier="gst_pad_set_event_full_function_full"
+ version="1.8">
+ <doc xml:space="preserve">Sets the given event handler for the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad of either direction.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadEventFullFunction to set.</doc>
+ <type name="PadEventFullFunction"
+ c:type="GstPadEventFullFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @event will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_event_function_full"
+ c:identifier="gst_pad_set_event_function_full">
+ <doc xml:space="preserve">Sets the given event handler for the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad of either direction.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadEventFunction to set.</doc>
+ <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @event will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_getrange_function_full"
+ c:identifier="gst_pad_set_getrange_function_full">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a source #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="get"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadGetRangeFunction to set.</doc>
+ <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @get will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_iterate_internal_links_function_full"
+ c:identifier="gst_pad_set_iterate_internal_links_function_full">
+ <doc xml:space="preserve">Sets the given internal link iterator function for the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad of either direction.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="iterintlink"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadIterIntLinkFunction to set.</doc>
+ <type name="PadIterIntLinkFunction"
+ c:type="GstPadIterIntLinkFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @iterintlink will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_link_function_full"
+ c:identifier="gst_pad_set_link_function_full">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="link"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadLinkFunction to set.</doc>
+ <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @link will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_offset" c:identifier="gst_pad_set_offset">
+ <doc xml:space="preserve">Set the offset that will be applied to the running time of @pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_query_function_full"
+ c:identifier="gst_pad_set_query_function_full">
+ <doc xml:space="preserve">Set the given query function for the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad of either direction.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="query"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadQueryFunction to set.</doc>
+ <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @query will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_unlink_function_full"
+ c:identifier="gst_pad_set_unlink_function_full">
+ <doc xml:space="preserve">Sets the given unlink function for the pad. It will be called
+when the pad is unlinked.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="unlink"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the #GstPadUnlinkFunction to set.</doc>
+ <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user_data passed to @notify</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify called when @unlink will not be used anymore.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start_task" c:identifier="gst_pad_start_task">
+ <doc xml:space="preserve">Starts a task that repeatedly calls @func with @user_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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %TRUE if the task could be started.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to start the task of</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the task function to call</doc>
+ <type name="TaskFunction" c:type="GstTaskFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the task function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when @user_data is no longer referenced</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sticky_events_foreach"
+ c:identifier="gst_pad_sticky_events_foreach">
+ <doc xml:space="preserve">Iterates all sticky events on @pad and calls @foreach_func for every
+event. If @foreach_func returns %FALSE the iteration is immediately stopped.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that should be used for iteration.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="foreach_func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the #GstPadStickyEventsForeachFunction that
+ should be called for every event.</doc>
+ <type name="PadStickyEventsForeachFunction"
+ c:type="GstPadStickyEventsForeachFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the optional user data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="stop_task" c:identifier="gst_pad_stop_task">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %TRUE if the task could be stopped or %FALSE on error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to stop the task of</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="store_sticky_event"
+ c:identifier="gst_pad_store_sticky_event"
+ version="1.2">
+ <doc xml:space="preserve">Store the sticky @event on @pad</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK on success, #GST_FLOW_FLUSHING when the pad
+was flushing or #GST_FLOW_EOS when the pad was EOS.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEvent</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unlink" c:identifier="gst_pad_unlink">
+ <doc xml:space="preserve">Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
+signal on both pads.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pads were unlinked. This function returns %FALSE if
+the pads were not linked together.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="srcpad" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstPad to unlink.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ <parameter name="sinkpad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad to unlink.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="use_fixed_caps" c:identifier="gst_pad_use_fixed_caps">
+ <doc xml:space="preserve">A helper function you can use that sets the FIXED_CAPS flag
+This way the default CAPS query will always return the negotiated caps
+or in case the pad is not negotiated, the padtemplate caps.
+
+The negotiated caps are the caps of the last CAPS event that passed on the
+pad. Use this function on a pad that, once it negotiated to a CAPS, cannot
+be renegotiated to something else.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to use</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="caps" transfer-ownership="none">
+ <type name="Caps"/>
+ </property>
+ <property name="direction"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="PadDirection"/>
+ </property>
+ <property name="offset"
+ version="1.6"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The offset that will be applied to the running time of the pad.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="template" writable="1" transfer-ownership="none">
+ <type name="PadTemplate"/>
+ </property>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="element_private">
+ <doc xml:space="preserve">private data owned by the parent element</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="padtemplate">
+ <doc xml:space="preserve">padtemplate for this pad</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </field>
+ <field name="direction">
+ <doc xml:space="preserve">the direction of the pad, cannot change after creating
+ the pad.</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </field>
+ <field name="stream_rec_lock" readable="0" private="1">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="task" readable="0" private="1">
+ <type name="Task" c:type="GstTask*"/>
+ </field>
+ <field name="block_cond" readable="0" private="1">
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <field name="probes" readable="0" private="1">
+ <type name="GLib.HookList" c:type="GHookList"/>
+ </field>
+ <field name="mode" readable="0" private="1">
+ <type name="PadMode" c:type="GstPadMode"/>
+ </field>
+ <field name="activatefunc" readable="0" private="1">
+ <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+ </field>
+ <field name="activatedata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="activatenotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="activatemodefunc" readable="0" private="1">
+ <type name="PadActivateModeFunction"
+ c:type="GstPadActivateModeFunction"/>
+ </field>
+ <field name="activatemodedata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="activatemodenotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="peer" readable="0" private="1">
+ <type name="Pad" c:type="GstPad*"/>
+ </field>
+ <field name="linkfunc" readable="0" private="1">
+ <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+ </field>
+ <field name="linkdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="linknotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="unlinkfunc" readable="0" private="1">
+ <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+ </field>
+ <field name="unlinkdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="unlinknotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="chainfunc" readable="0" private="1">
+ <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+ </field>
+ <field name="chaindata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="chainnotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="chainlistfunc" readable="0" private="1">
+ <type name="PadChainListFunction" c:type="GstPadChainListFunction"/>
+ </field>
+ <field name="chainlistdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="chainlistnotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="getrangefunc" readable="0" private="1">
+ <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+ </field>
+ <field name="getrangedata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="getrangenotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="eventfunc" readable="0" private="1">
+ <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+ </field>
+ <field name="eventdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="eventnotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="offset" readable="0" private="1">
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ <field name="queryfunc" readable="0" private="1">
+ <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+ </field>
+ <field name="querydata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="querynotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="iterintlinkfunc" readable="0" private="1">
+ <type name="PadIterIntLinkFunction"
+ c:type="GstPadIterIntLinkFunction"/>
+ </field>
+ <field name="iterintlinkdata" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="iterintlinknotify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="num_probes" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="num_blocked" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="PadPrivate" c:type="GstPadPrivate*"/>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <record name="abi" c:type="abi">
+ <field name="last_flowret" writable="1">
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </field>
+ <field name="eventfullfunc" writable="1">
+ <type name="PadEventFullFunction"
+ c:type="GstPadEventFullFunction"/>
+ </field>
+ </record>
+ </union>
+ <glib:signal name="linked" when="last">
+ <doc xml:space="preserve">Signals that a pad has been linked to the peer pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="peer" transfer-ownership="none">
+ <doc xml:space="preserve">the peer pad that has been connected</doc>
+ <type name="Pad"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="unlinked" when="last">
+ <doc xml:space="preserve">Signals that a pad has been unlinked from the peer pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="peer" transfer-ownership="none">
+ <doc xml:space="preserve">the peer pad that has been disconnected</doc>
+ <type name="Pad"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <callback name="PadActivateFunction" c:type="GstPadActivateFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could be activated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent of @pad</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadActivateModeFunction"
+ c:type="GstPadActivateModeFunction">
+ <doc xml:space="preserve">The prototype of the push and pull activate functions.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could be activated or deactivated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPad</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent of @pad</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the requested activation mode of @pad</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">activate or deactivate the pad.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadChainFunction" c:type="GstPadChainFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK for success</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad that performed the chain.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer that is chained, not %NULL.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadChainListFunction" c:type="GstPadChainListFunction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK for success</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the sink #GstPad that performed the chain.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBufferList that is chained, not %NULL.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </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">
+ <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">
+ <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="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="PadDirection"
+ glib:type-name="GstPadDirection"
+ glib:get-type="gst_pad_direction_get_type"
+ c:type="GstPadDirection">
+ <doc xml:space="preserve">The direction of a pad.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_PAD_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">direction is unknown.</doc>
+ </member>
+ <member name="src" value="1" c:identifier="GST_PAD_SRC" glib:nick="src">
+ <doc xml:space="preserve">the pad is a source pad.</doc>
+ </member>
+ <member name="sink"
+ value="2"
+ c:identifier="GST_PAD_SINK"
+ glib:nick="sink">
+ <doc xml:space="preserve">the pad is a sink pad.</doc>
+ </member>
+ </enumeration>
+ <callback name="PadEventFullFunction"
+ c:type="GstPadEventFullFunction"
+ version="1.8">
+ <doc xml:space="preserve">Function signature to handle an event for the pad.
+
+This variant is for specific elements that will take into account the
+last downstream flow return (from a pad push), in which case they can
+return it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if the event was handled properly, or any other
+#GstFlowReturn dependent on downstream state.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to handle the event.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to handle.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadEventFunction" c:type="GstPadEventFunction">
+ <doc xml:space="preserve">Function signature to handle an event for the pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could handle the event.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to handle the event.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEvent to handle.</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="PadFlags"
+ glib:type-name="GstPadFlags"
+ glib:get-type="gst_pad_flags_get_type"
+ c:type="GstPadFlags">
+ <doc xml:space="preserve">Pad state flags</doc>
+ <member name="blocked"
+ value="16"
+ c:identifier="GST_PAD_FLAG_BLOCKED"
+ glib:nick="blocked">
+ <doc xml:space="preserve">is dataflow on a pad blocked</doc>
+ </member>
+ <member name="flushing"
+ value="32"
+ c:identifier="GST_PAD_FLAG_FLUSHING"
+ glib:nick="flushing">
+ <doc xml:space="preserve">is pad flushing</doc>
+ </member>
+ <member name="eos"
+ value="64"
+ c:identifier="GST_PAD_FLAG_EOS"
+ glib:nick="eos">
+ <doc xml:space="preserve">is pad in EOS state</doc>
+ </member>
+ <member name="blocking"
+ value="128"
+ c:identifier="GST_PAD_FLAG_BLOCKING"
+ glib:nick="blocking">
+ <doc xml:space="preserve">is pad currently blocking on a buffer or event</doc>
+ </member>
+ <member name="need_parent"
+ value="256"
+ c:identifier="GST_PAD_FLAG_NEED_PARENT"
+ glib:nick="need-parent">
+ <doc xml:space="preserve">ensure that there is a parent object before calling
+ into the pad callbacks.</doc>
+ </member>
+ <member name="need_reconfigure"
+ value="512"
+ c:identifier="GST_PAD_FLAG_NEED_RECONFIGURE"
+ glib:nick="need-reconfigure">
+ <doc xml:space="preserve">the pad should be reconfigured/renegotiated.
+ The flag has to be unset manually after
+ reconfiguration happened.</doc>
+ </member>
+ <member name="pending_events"
+ value="1024"
+ c:identifier="GST_PAD_FLAG_PENDING_EVENTS"
+ glib:nick="pending-events">
+ <doc xml:space="preserve">the pad has pending events</doc>
+ </member>
+ <member name="fixed_caps"
+ value="2048"
+ c:identifier="GST_PAD_FLAG_FIXED_CAPS"
+ glib:nick="fixed-caps">
+ <doc xml:space="preserve">the pad is using fixed caps. This means that
+ once the caps are set on the pad, the default caps query function
+ will only return those caps.</doc>
+ </member>
+ <member name="proxy_caps"
+ value="4096"
+ c:identifier="GST_PAD_FLAG_PROXY_CAPS"
+ glib:nick="proxy-caps">
+ <doc xml:space="preserve">the default event and query handler will forward
+ all events and queries to the internally linked pads
+ instead of discarding them.</doc>
+ </member>
+ <member name="proxy_allocation"
+ value="8192"
+ c:identifier="GST_PAD_FLAG_PROXY_ALLOCATION"
+ glib:nick="proxy-allocation">
+ <doc xml:space="preserve">the default query handler will forward
+ allocation queries to the internally linked pads
+ instead of discarding them.</doc>
+ </member>
+ <member name="proxy_scheduling"
+ value="16384"
+ c:identifier="GST_PAD_FLAG_PROXY_SCHEDULING"
+ glib:nick="proxy-scheduling">
+ <doc xml:space="preserve">the default query handler will forward
+ scheduling queries to the internally linked pads
+ instead of discarding them.</doc>
+ </member>
+ <member name="accept_intersect"
+ value="32768"
+ c:identifier="GST_PAD_FLAG_ACCEPT_INTERSECT"
+ glib:nick="accept-intersect">
+ <doc xml:space="preserve">the default accept-caps handler will check
+ it the caps intersect the query-caps result instead
+ of checking for a subset. This is interesting for
+ parsers that can accept incompletely specified caps.</doc>
+ </member>
+ <member name="accept_template"
+ value="65536"
+ c:identifier="GST_PAD_FLAG_ACCEPT_TEMPLATE"
+ glib:nick="accept-template">
+ <doc xml:space="preserve">the default accept-caps handler will use
+ the template pad caps instead of query caps to
+ compare with the accept caps. Use this in combination
+ with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since 1.6)</doc>
+ </member>
+ <member name="last"
+ value="1048576"
+ c:identifier="GST_PAD_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <callback name="PadForwardFunction" c:type="GstPadForwardFunction">
+ <doc xml:space="preserve">A forward function is called for all internally linked pads, see
+gst_pad_forward().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the dispatching procedure has to be stopped.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that is forwarded.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">the gpointer to optional user data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadGetRangeFunction" c:type="GstPadGetRangeFunction">
+ <doc xml:space="preserve">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_mode() with the
+#GST_PAD_MODE_PULL.
+
+@offset and @length are always given in byte units. @offset must normally be a value
+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_EOS, which corresponds to EOS. In this case @buffer does not
+contain a valid buffer.
+
+The buffer size of @buffer will only be smaller than @length when @offset is
+near the end of the stream. In all other cases, the size of @buffer must be
+exactly the requested size.
+
+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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK for success and a valid buffer in @buffer. Any other
+return value leaves @buffer undefined.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the src #GstPad to perform the getrange on.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset of the range</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the range</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a memory location to hold the result buffer, cannot be %NULL.</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadIterIntLinkFunction" c:type="GstPadIterIntLinkFunction">
+ <doc xml:space="preserve">The signature of the internal pad link iterator function.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstIterator that will iterate over all pads that are
+linked to the given pad on the inside of the parent element.
+
+the caller must call gst_iterator_free() after usage.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstPad to query.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="PadLinkCheck"
+ glib:type-name="GstPadLinkCheck"
+ glib:get-type="gst_pad_link_check_get_type"
+ c:type="GstPadLinkCheck">
+ <doc xml:space="preserve">The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS
+and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are
+specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed.
+
+&gt; Only disable some of the checks if you are 100% certain you know the link
+&gt; will not fail because of hierarchy/caps compatibility failures. If uncertain,
+&gt; use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods
+&gt; for linking the pads.</doc>
+ <member name="nothing"
+ value="0"
+ c:identifier="GST_PAD_LINK_CHECK_NOTHING"
+ glib:nick="nothing">
+ <doc xml:space="preserve">Don't check hierarchy or caps compatibility.</doc>
+ </member>
+ <member name="hierarchy"
+ value="1"
+ c:identifier="GST_PAD_LINK_CHECK_HIERARCHY"
+ glib:nick="hierarchy">
+ <doc xml:space="preserve">Check the pads have same parents/grandparents.
+ Could be omitted if it is already known that the two elements that own the
+ pads are in the same bin.</doc>
+ </member>
+ <member name="template_caps"
+ value="2"
+ c:identifier="GST_PAD_LINK_CHECK_TEMPLATE_CAPS"
+ glib:nick="template-caps">
+ <doc xml:space="preserve">Check if the pads are compatible by using
+ their template caps. This is much faster than @GST_PAD_LINK_CHECK_CAPS, but
+ would be unsafe e.g. if one pad has %GST_CAPS_ANY.</doc>
+ </member>
+ <member name="caps"
+ value="4"
+ c:identifier="GST_PAD_LINK_CHECK_CAPS"
+ glib:nick="caps">
+ <doc xml:space="preserve">Check if the pads are compatible by comparing the
+ caps returned by gst_pad_query_caps().</doc>
+ </member>
+ <member name="no_reconfigure"
+ value="8"
+ c:identifier="GST_PAD_LINK_CHECK_NO_RECONFIGURE"
+ glib:nick="no-reconfigure">
+ <doc xml:space="preserve">Disables pushing a reconfigure event when pads are
+ linked.</doc>
+ </member>
+ <member name="default"
+ value="5"
+ c:identifier="GST_PAD_LINK_CHECK_DEFAULT"
+ glib:nick="default">
+ <doc xml:space="preserve">The default checks done when linking
+ pads (i.e. the ones used by gst_pad_link()).</doc>
+ </member>
+ </bitfield>
+ <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
+ <doc xml:space="preserve">Function signature to handle a new link on the pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the link with the specified peer.</doc>
+ <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that is linked.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="peer" transfer-ownership="none">
+ <doc xml:space="preserve">the peer #GstPad of the link</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="PadLinkReturn"
+ glib:type-name="GstPadLinkReturn"
+ glib:get-type="gst_pad_link_return_get_type"
+ c:type="GstPadLinkReturn">
+ <doc xml:space="preserve">Result values from gst_pad_link and friends.</doc>
+ <member name="ok"
+ value="0"
+ c:identifier="GST_PAD_LINK_OK"
+ glib:nick="ok">
+ <doc xml:space="preserve">link succeeded</doc>
+ </member>
+ <member name="wrong_hierarchy"
+ value="-1"
+ c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"
+ glib:nick="wrong-hierarchy">
+ <doc xml:space="preserve">pads have no common grandparent</doc>
+ </member>
+ <member name="was_linked"
+ value="-2"
+ c:identifier="GST_PAD_LINK_WAS_LINKED"
+ glib:nick="was-linked">
+ <doc xml:space="preserve">pad was already linked</doc>
+ </member>
+ <member name="wrong_direction"
+ value="-3"
+ c:identifier="GST_PAD_LINK_WRONG_DIRECTION"
+ glib:nick="wrong-direction">
+ <doc xml:space="preserve">pads have wrong direction</doc>
+ </member>
+ <member name="noformat"
+ value="-4"
+ c:identifier="GST_PAD_LINK_NOFORMAT"
+ glib:nick="noformat">
+ <doc xml:space="preserve">pads do not have common format</doc>
+ </member>
+ <member name="nosched"
+ value="-5"
+ c:identifier="GST_PAD_LINK_NOSCHED"
+ glib:nick="nosched">
+ <doc xml:space="preserve">pads cannot cooperate in scheduling</doc>
+ </member>
+ <member name="refused"
+ value="-6"
+ c:identifier="GST_PAD_LINK_REFUSED"
+ glib:nick="refused">
+ <doc xml:space="preserve">refused for some reason</doc>
+ </member>
+ </enumeration>
+ <enumeration name="PadMode"
+ glib:type-name="GstPadMode"
+ glib:get-type="gst_pad_mode_get_type"
+ c:type="GstPadMode">
+ <doc xml:space="preserve">The status of a GstPad. After activating a pad, which usually happens when the
+parent element goes from READY to PAUSED, the GstPadMode defines if the
+pad operates in push or pull mode.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_PAD_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">Pad will not handle dataflow</doc>
+ </member>
+ <member name="push"
+ value="1"
+ c:identifier="GST_PAD_MODE_PUSH"
+ glib:nick="push">
+ <doc xml:space="preserve">Pad handles dataflow in downstream push mode</doc>
+ </member>
+ <member name="pull"
+ value="2"
+ c:identifier="GST_PAD_MODE_PULL"
+ glib:nick="pull">
+ <doc xml:space="preserve">Pad handles dataflow in upstream pull mode</doc>
+ </member>
+ <function name="get_name" c:identifier="gst_pad_mode_get_name">
+ <doc xml:space="preserve">Return the name of a pad mode, for use in debug messages mostly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">short mnemonic for pad mode @mode</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the pad mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="PadPresence"
+ glib:type-name="GstPadPresence"
+ glib:get-type="gst_pad_presence_get_type"
+ c:type="GstPadPresence">
+ <doc xml:space="preserve">Indicates when this pad will become available.</doc>
+ <member name="always"
+ value="0"
+ c:identifier="GST_PAD_ALWAYS"
+ glib:nick="always">
+ <doc xml:space="preserve">the pad is always available</doc>
+ </member>
+ <member name="sometimes"
+ value="1"
+ c:identifier="GST_PAD_SOMETIMES"
+ glib:nick="sometimes">
+ <doc xml:space="preserve">the pad will become available depending on the media stream</doc>
+ </member>
+ <member name="request"
+ value="2"
+ c:identifier="GST_PAD_REQUEST"
+ glib:nick="request">
+ <doc xml:space="preserve">the pad is only available on request with
+ gst_element_request_pad().</doc>
+ </member>
+ </enumeration>
+ <record name="PadPrivate" c:type="GstPadPrivate" disguised="1">
+ </record>
+ <callback name="PadProbeCallback" c:type="GstPadProbeCallback">
+ <doc xml:space="preserve">Callback used by gst_pad_add_probe(). Gets called to notify about the current
+blocking type.
+
+The callback is allowed to modify the data pointer in @info.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadProbeReturn</doc>
+ <type name="PadProbeReturn" c:type="GstPadProbeReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that is blocked</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">#GstPadProbeInfo</doc>
+ <type name="PadProbeInfo" c:type="GstPadProbeInfo*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">the gpointer to optional user data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="PadProbeInfo" c:type="GstPadProbeInfo">
+ <doc xml:space="preserve">Info passed in the #GstPadProbeCallback.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the current probe type</doc>
+ <type name="PadProbeType" c:type="GstPadProbeType"/>
+ </field>
+ <field name="id" writable="1">
+ <doc xml:space="preserve">the id of the probe</doc>
+ <type name="gulong" c:type="gulong"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">type specific data, check the @type field to know the
+ datatype. This field can be %NULL.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">offset of pull probe, this field is valid when @type contains
+ #GST_PAD_PROBE_TYPE_PULL</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">size of pull probe, this field is valid when @type contains
+ #GST_PAD_PROBE_TYPE_PULL</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <record name="abi" c:type="abi">
+ <field name="flow_ret" writable="1">
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </field>
+ </record>
+ </union>
+ <method name="get_buffer" c:identifier="gst_pad_probe_info_get_buffer">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstBuffer from the probe</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadProbeInfo</doc>
+ <type name="PadProbeInfo" c:type="GstPadProbeInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_list"
+ c:identifier="gst_pad_probe_info_get_buffer_list">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstBufferList from the probe</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadProbeInfo</doc>
+ <type name="PadProbeInfo" c:type="GstPadProbeInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_event" c:identifier="gst_pad_probe_info_get_event">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstEvent from the probe</doc>
+ <type name="Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadProbeInfo</doc>
+ <type name="PadProbeInfo" c:type="GstPadProbeInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_query" c:identifier="gst_pad_probe_info_get_query">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstQuery from the probe</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadProbeInfo</doc>
+ <type name="PadProbeInfo" c:type="GstPadProbeInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="PadProbeReturn"
+ glib:type-name="GstPadProbeReturn"
+ glib:get-type="gst_pad_probe_return_get_type"
+ c:type="GstPadProbeReturn">
+ <doc xml:space="preserve">Different return values for the #GstPadProbeCallback.</doc>
+ <member name="drop"
+ value="0"
+ c:identifier="GST_PAD_PROBE_DROP"
+ glib:nick="drop">
+ <doc xml:space="preserve">drop data in data probes. For push mode this means that
+ the data item is not sent downstream. For pull mode, it means that
+ the data item is not passed upstream. In both cases, no other probes
+ are called for this item and %GST_FLOW_OK or %TRUE is returned to the
+ caller.</doc>
+ </member>
+ <member name="ok"
+ value="1"
+ c:identifier="GST_PAD_PROBE_OK"
+ glib:nick="ok">
+ <doc xml:space="preserve">normal probe return value. This leaves the probe in
+ place, and defers decisions about dropping or passing data to other
+ probes, if any. If there are no other probes, the default behaviour
+ for the probe type applies ('block' for blocking probes,
+ and 'pass' for non-blocking probes).</doc>
+ </member>
+ <member name="remove"
+ value="2"
+ c:identifier="GST_PAD_PROBE_REMOVE"
+ glib:nick="remove">
+ <doc xml:space="preserve">remove this probe.</doc>
+ </member>
+ <member name="pass"
+ value="3"
+ c:identifier="GST_PAD_PROBE_PASS"
+ glib:nick="pass">
+ <doc xml:space="preserve">pass the data item in the block probe and block on the
+ next item.</doc>
+ </member>
+ <member name="handled"
+ value="4"
+ c:identifier="GST_PAD_PROBE_HANDLED"
+ glib:nick="handled">
+ <doc xml:space="preserve">Data has been handled in the probe and will not be
+ forwarded further. For events and buffers this is the same behaviour as
+ %GST_PAD_PROBE_DROP (except that in this case you need to unref the buffer
+ or event yourself). For queries it will also return %TRUE to the caller.
+ The probe can also modify the #GstFlowReturn value by using the
+ #GST_PAD_PROBE_INFO_FLOW_RETURN() accessor.
+ Note that the resulting query must contain valid entries.
+ Since: 1.6</doc>
+ </member>
+ </enumeration>
+ <bitfield name="PadProbeType"
+ glib:type-name="GstPadProbeType"
+ glib:get-type="gst_pad_probe_type_get_type"
+ c:type="GstPadProbeType">
+ <doc xml:space="preserve">The different probing types that can occur. When either one of
+@GST_PAD_PROBE_TYPE_IDLE or @GST_PAD_PROBE_TYPE_BLOCK is used, the probe will be a
+blocking probe.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_PAD_PROBE_TYPE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid probe type</doc>
+ </member>
+ <member name="idle"
+ value="1"
+ c:identifier="GST_PAD_PROBE_TYPE_IDLE"
+ glib:nick="idle">
+ <doc xml:space="preserve">probe idle pads and block while the callback is called</doc>
+ </member>
+ <member name="block"
+ value="2"
+ c:identifier="GST_PAD_PROBE_TYPE_BLOCK"
+ glib:nick="block">
+ <doc xml:space="preserve">probe and block pads</doc>
+ </member>
+ <member name="buffer"
+ value="16"
+ c:identifier="GST_PAD_PROBE_TYPE_BUFFER"
+ glib:nick="buffer">
+ <doc xml:space="preserve">probe buffers</doc>
+ </member>
+ <member name="buffer_list"
+ value="32"
+ c:identifier="GST_PAD_PROBE_TYPE_BUFFER_LIST"
+ glib:nick="buffer-list">
+ <doc xml:space="preserve">probe buffer lists</doc>
+ </member>
+ <member name="event_downstream"
+ value="64"
+ c:identifier="GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM"
+ glib:nick="event-downstream">
+ <doc xml:space="preserve">probe downstream events</doc>
+ </member>
+ <member name="event_upstream"
+ value="128"
+ c:identifier="GST_PAD_PROBE_TYPE_EVENT_UPSTREAM"
+ glib:nick="event-upstream">
+ <doc xml:space="preserve">probe upstream events</doc>
+ </member>
+ <member name="event_flush"
+ value="256"
+ c:identifier="GST_PAD_PROBE_TYPE_EVENT_FLUSH"
+ glib:nick="event-flush">
+ <doc xml:space="preserve">probe flush events. This probe has to be
+ explicitly enabled and is not included in the
+ @@GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM or
+ @@GST_PAD_PROBE_TYPE_EVENT_UPSTREAM probe types.</doc>
+ </member>
+ <member name="query_downstream"
+ value="512"
+ c:identifier="GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM"
+ glib:nick="query-downstream">
+ <doc xml:space="preserve">probe downstream queries</doc>
+ </member>
+ <member name="query_upstream"
+ value="1024"
+ c:identifier="GST_PAD_PROBE_TYPE_QUERY_UPSTREAM"
+ glib:nick="query-upstream">
+ <doc xml:space="preserve">probe upstream queries</doc>
+ </member>
+ <member name="push"
+ value="4096"
+ c:identifier="GST_PAD_PROBE_TYPE_PUSH"
+ glib:nick="push">
+ <doc xml:space="preserve">probe push</doc>
+ </member>
+ <member name="pull"
+ value="8192"
+ c:identifier="GST_PAD_PROBE_TYPE_PULL"
+ glib:nick="pull">
+ <doc xml:space="preserve">probe pull</doc>
+ </member>
+ <member name="blocking"
+ value="3"
+ c:identifier="GST_PAD_PROBE_TYPE_BLOCKING"
+ glib:nick="blocking">
+ <doc xml:space="preserve">probe and block at the next opportunity, at data flow or when idle</doc>
+ </member>
+ <member name="data_downstream"
+ value="112"
+ c:identifier="GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM"
+ glib:nick="data-downstream">
+ <doc xml:space="preserve">probe downstream data (buffers, buffer lists, and events)</doc>
+ </member>
+ <member name="data_upstream"
+ value="128"
+ c:identifier="GST_PAD_PROBE_TYPE_DATA_UPSTREAM"
+ glib:nick="data-upstream">
+ <doc xml:space="preserve">probe upstream data (events)</doc>
+ </member>
+ <member name="data_both"
+ value="240"
+ c:identifier="GST_PAD_PROBE_TYPE_DATA_BOTH"
+ glib:nick="data-both">
+ <doc xml:space="preserve">probe upstream and downstream data (buffers, buffer lists, and events)</doc>
+ </member>
+ <member name="block_downstream"
+ value="114"
+ c:identifier="GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM"
+ glib:nick="block-downstream">
+ <doc xml:space="preserve">probe and block downstream data (buffers, buffer lists, and events)</doc>
+ </member>
+ <member name="block_upstream"
+ value="130"
+ c:identifier="GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM"
+ glib:nick="block-upstream">
+ <doc xml:space="preserve">probe and block upstream data (events)</doc>
+ </member>
+ <member name="event_both"
+ value="192"
+ c:identifier="GST_PAD_PROBE_TYPE_EVENT_BOTH"
+ glib:nick="event-both">
+ <doc xml:space="preserve">probe upstream and downstream events</doc>
+ </member>
+ <member name="query_both"
+ value="1536"
+ c:identifier="GST_PAD_PROBE_TYPE_QUERY_BOTH"
+ glib:nick="query-both">
+ <doc xml:space="preserve">probe upstream and downstream queries</doc>
+ </member>
+ <member name="all_both"
+ value="1776"
+ c:identifier="GST_PAD_PROBE_TYPE_ALL_BOTH"
+ glib:nick="all-both">
+ <doc xml:space="preserve">probe upstream events and queries and downstream buffers, buffer lists, events and queries</doc>
+ </member>
+ <member name="scheduling"
+ value="12288"
+ c:identifier="GST_PAD_PROBE_TYPE_SCHEDULING"
+ glib:nick="scheduling">
+ <doc xml:space="preserve">probe push and pull</doc>
+ </member>
+ </bitfield>
+ <callback name="PadQueryFunction" c:type="GstPadQueryFunction">
+ <doc xml:space="preserve">The signature of the query function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to query.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstQuery object to execute</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PadStickyEventsForeachFunction"
+ c:type="GstPadStickyEventsForeachFunction">
+ <doc xml:space="preserve">Callback used by gst_pad_sticky_events_foreach().
+
+When this function returns %TRUE, the next event will be
+returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return.
+
+When @event is set to %NULL, the item will be removed from the list of sticky events.
+@event can be replaced by assigning a new reference to it.
+This function is responsible for unreffing the old event when
+removing or modifying.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the iteration should continue</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="event"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a sticky #GstEvent.</doc>
+ <type name="Event" c:type="GstEvent**"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">the #gpointer to optional user data.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="PadTemplate"
+ c:symbol-prefix="pad_template"
+ c:type="GstPadTemplate"
+ parent="Object"
+ glib:type-name="GstPadTemplate"
+ glib:get-type="gst_pad_template_get_type"
+ glib:type-struct="PadTemplateClass">
+ <doc xml:space="preserve">Padtemplates describe the possible media types a pad or an elementfactory can
+handle. This allows for both inspection of handled types before loading the
+element plugin as well as identifying pads on elements that are not yet
+created (request or sometimes pads).
+
+Pad and PadTemplates have #GstCaps attached to it to describe the media type
+they are capable of dealing with. gst_pad_template_get_caps() or
+GST_PAD_TEMPLATE_CAPS() are used to get the caps of a padtemplate. It's not
+possible to modify the caps of a padtemplate after creation.
+
+PadTemplates have a #GstPadPresence property which identifies the lifetime
+of the pad and that can be retrieved with GST_PAD_TEMPLATE_PRESENCE(). Also
+the direction of the pad can be retrieved from the #GstPadTemplate with
+GST_PAD_TEMPLATE_DIRECTION().
+
+The GST_PAD_TEMPLATE_NAME_TEMPLATE () is important for GST_PAD_REQUEST pads
+because it has to be used as the name in the gst_element_get_request_pad()
+call to instantiate a pad from this template.
+
+Padtemplates can be created with gst_pad_template_new() or with
+gst_static_pad_template_get (), which creates a #GstPadTemplate from a
+#GstStaticPadTemplate that can be filled with the
+convenient GST_STATIC_PAD_TEMPLATE() macro.
+
+A padtemplate can be used to create a pad (see gst_pad_new_from_template()
+or gst_pad_new_from_static_template ()) or to add to an element class
+(see gst_element_class_add_static_pad_template ()).
+
+The following code example shows the code to create a pad from a padtemplate.
+|[&lt;!-- language="C" --&gt;
+ GstStaticPadTemplate my_template =
+ GST_STATIC_PAD_TEMPLATE (
+ "sink", // the name of the pad
+ GST_PAD_SINK, // the direction of the pad
+ GST_PAD_ALWAYS, // when this pad will be present
+ GST_STATIC_CAPS ( // the capabilities of the padtemplate
+ "audio/x-raw, "
+ "channels = (int) [ 1, 6 ]"
+ )
+ );
+ void
+ my_method (void)
+ {
+ GstPad *pad;
+ pad = gst_pad_new_from_static_template (&amp;amp;my_template, "sink");
+ ...
+ }
+]|
+
+The following example shows you how to add the padtemplate to an
+element class, this is usually done in the class_init of the class:
+|[&lt;!-- language="C" --&gt;
+ static void
+ my_element_class_init (GstMyElementClass *klass)
+ {
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+ gst_element_class_add_static_pad_template (gstelement_class, &amp;amp;my_template);
+ }
+]|</doc>
+ <constructor name="new" c:identifier="gst_pad_template_new">
+ <doc xml:space="preserve">Creates a new pad template with a name according to the given template
+and with the given arguments.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPadTemplate.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name_template" transfer-ownership="none">
+ <doc xml:space="preserve">the name template.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadDirection of the template.</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="presence" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadPresence of the pad.</doc>
+ <type name="PadPresence" c:type="GstPadPresence"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps set for the template.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_static_pad_template_with_gtype"
+ c:identifier="gst_pad_template_new_from_static_pad_template_with_gtype"
+ version="1.14">
+ <doc xml:space="preserve">Converts a #GstStaticPadTemplate into a #GstPadTemplate with a type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a new #GstPadTemplate.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad_template" transfer-ownership="none">
+ <doc xml:space="preserve">the static pad template</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </parameter>
+ <parameter name="pad_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the pad to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_with_gtype"
+ c:identifier="gst_pad_template_new_with_gtype"
+ version="1.14">
+ <doc xml:space="preserve">Creates a new pad template with a name according to the given template
+and with the given arguments.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a new #GstPadTemplate.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name_template" transfer-ownership="none">
+ <doc xml:space="preserve">the name template.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadDirection of the template.</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="presence" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPadPresence of the pad.</doc>
+ <type name="PadPresence" c:type="GstPadPresence"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps set for the template.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="pad_type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the pad to create</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="pad_created" invoker="pad_created">
+ <doc xml:space="preserve">Emit the pad-created signal for this template when created by this pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate that has been created</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that created it</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_caps" c:identifier="gst_pad_template_get_caps">
+ <doc xml:space="preserve">Gets the capabilities of the pad template.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps of the pad template.
+Unref after usage.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate to get capabilities of.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pad_created" c:identifier="gst_pad_template_pad_created">
+ <doc xml:space="preserve">Emit the pad-created signal for this template when created by this pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate that has been created</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that created it</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="caps"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The capabilities of the pad described by the pad template.</doc>
+ <type name="Caps"/>
+ </property>
+ <property name="direction"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The direction of the pad described by the pad template.</doc>
+ <type name="PadDirection"/>
+ </property>
+ <property name="gtype"
+ version="1.14"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The type of the pad described by the pad template.</doc>
+ <type name="GType" c:type="GType"/>
+ </property>
+ <property name="name-template"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The name template of the pad template.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="presence"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">When the pad described by the pad template will become available.</doc>
+ <type name="PadPresence"/>
+ </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>
+ <union name="ABI" c:type="ABI">
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <record name="abi" c:type="abi">
+ <field name="gtype" writable="1">
+ <type name="GType" c:type="GType"/>
+ </field>
+ </record>
+ </union>
+ <glib:signal name="pad-created" when="last">
+ <doc xml:space="preserve">This signal is fired when an element creates a pad from this template.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad that was created.</doc>
+ <type name="Pad"/>
+ </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">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadTemplate that has been created</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that created it</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="PadTemplateFlags"
+ glib:type-name="GstPadTemplateFlags"
+ glib:get-type="gst_pad_template_flags_get_type"
+ c:type="GstPadTemplateFlags">
+ <doc xml:space="preserve">Flags for the padtemplate</doc>
+ <member name="last"
+ value="256"
+ c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">first flag that can be used by subclasses.</doc>
+ </member>
+ </bitfield>
+ <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
+ <doc xml:space="preserve">Function signature to handle a unlinking the pad prom its peer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that is linked.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
+ flag is set, @parent is guaranteed to be not-%NULL and remain valid
+ during the execution of this function.</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="ParamArray"
+ c:symbol-prefix="param_spec_array"
+ parent="GObject.ParamSpec"
+ glib:type-name="GstParamArray"
+ glib:get-type="gst_param_spec_array_get_type"
+ glib:fundamental="1">
+ </class>
+ <class name="ParamFraction"
+ c:symbol-prefix="param_spec_fraction"
+ parent="GObject.ParamSpec"
+ glib:type-name="GstParamFraction"
+ glib:get-type="gst_param_spec_fraction_get_type"
+ glib:fundamental="1">
+ </class>
+ <record name="ParamSpecArray" c:type="GstParamSpecArray">
+ <doc xml:space="preserve">A GParamSpec derived structure that contains the meta data for fractional
+properties.</doc>
+ <field name="parent_instance" writable="1">
+ <doc xml:space="preserve">super class</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+ </field>
+ <field name="element_spec" writable="1">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </field>
+ </record>
+ <record name="ParamSpecFraction" c:type="GstParamSpecFraction">
+ <doc xml:space="preserve">A GParamSpec derived structure that contains the meta data for fractional
+properties.</doc>
+ <field name="parent_instance" writable="1">
+ <doc xml:space="preserve">super class</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+ </field>
+ <field name="min_num" writable="1">
+ <doc xml:space="preserve">minimal numerator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="min_den" writable="1">
+ <doc xml:space="preserve">minimal denominator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="max_num" writable="1">
+ <doc xml:space="preserve">maximal numerator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="max_den" writable="1">
+ <doc xml:space="preserve">maximal denominator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="def_num" writable="1">
+ <doc xml:space="preserve">default numerator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="def_den" writable="1">
+ <doc xml:space="preserve">default denominator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ </record>
+ <record name="ParentBufferMeta" c:type="GstParentBufferMeta" version="1.6">
+ <doc xml:space="preserve">The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer
+to hold a reference to another buffer that is only released when the child
+#GstBuffer is released.
+
+Typically, #GstParentBufferMeta is used when the child buffer is directly
+using the #GstMemory of the parent buffer, and wants to prevent the parent
+buffer from being returned to a buffer pool until the #GstMemory is available
+for re-use.</doc>
+ <field name="parent" writable="1">
+ <doc xml:space="preserve">the parent #GstMeta structure</doc>
+ <type name="Meta" c:type="GstMeta"/>
+ </field>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">the #GstBuffer on which a reference is being held.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_parent_buffer_meta_get_info"
+ version="1.6">
+ <doc xml:space="preserve">Get the global #GstMetaInfo describing the #GstParentBufferMeta meta.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="ParseContext"
+ c:type="GstParseContext"
+ glib:type-name="GstParseContext"
+ glib:get-type="gst_parse_context_get_type"
+ c:symbol-prefix="parse_context">
+ <doc xml:space="preserve">Opaque structure.</doc>
+ <constructor name="new" c:identifier="gst_parse_context_new">
+ <doc xml:space="preserve">Allocates a parse context for use with gst_parse_launch_full() or
+gst_parse_launchv_full().
+
+Free-function: gst_parse_context_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly-allocated parse context. Free
+ with gst_parse_context_free() when no longer needed.</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </return-value>
+ </constructor>
+ <method name="copy" c:identifier="gst_parse_context_copy">
+ <doc xml:space="preserve">Copies the @context.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A copied #GstParseContext</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstParseContext</doc>
+ <type name="ParseContext" c:type="const GstParseContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_parse_context_free">
+ <doc xml:space="preserve">Frees a parse context previously allocated with gst_parse_context_new().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstParseContext</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_missing_elements"
+ c:identifier="gst_parse_context_get_missing_elements">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a
+ %NULL-terminated array of element factory name strings of missing
+ elements. Free with g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstParseContext</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="ParseError"
+ glib:type-name="GstParseError"
+ glib:get-type="gst_parse_error_get_type"
+ c:type="GstParseError"
+ glib:error-domain="gst_parse_error">
+ <doc xml:space="preserve">The different parsing errors that can occur.</doc>
+ <member name="syntax"
+ value="0"
+ c:identifier="GST_PARSE_ERROR_SYNTAX"
+ glib:nick="syntax">
+ <doc xml:space="preserve">A syntax error occurred.</doc>
+ </member>
+ <member name="no_such_element"
+ value="1"
+ c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"
+ glib:nick="no-such-element">
+ <doc xml:space="preserve">The description contained an unknown element</doc>
+ </member>
+ <member name="no_such_property"
+ value="2"
+ c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"
+ glib:nick="no-such-property">
+ <doc xml:space="preserve">An element did not have a specified property</doc>
+ </member>
+ <member name="link"
+ value="3"
+ c:identifier="GST_PARSE_ERROR_LINK"
+ glib:nick="link">
+ <doc xml:space="preserve">There was an error linking two pads.</doc>
+ </member>
+ <member name="could_not_set_property"
+ value="4"
+ c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"
+ glib:nick="could-not-set-property">
+ <doc xml:space="preserve">There was an error setting a property</doc>
+ </member>
+ <member name="empty_bin"
+ value="5"
+ c:identifier="GST_PARSE_ERROR_EMPTY_BIN"
+ glib:nick="empty-bin">
+ <doc xml:space="preserve">An empty bin was specified.</doc>
+ </member>
+ <member name="empty"
+ value="6"
+ c:identifier="GST_PARSE_ERROR_EMPTY"
+ glib:nick="empty">
+ <doc xml:space="preserve">An empty description was specified</doc>
+ </member>
+ <member name="delayed_link"
+ value="7"
+ c:identifier="GST_PARSE_ERROR_DELAYED_LINK"
+ glib:nick="delayed-link">
+ <doc xml:space="preserve">A delayed link did not get resolved.</doc>
+ </member>
+ <function name="quark" c:identifier="gst_parse_error_quark">
+ <doc xml:space="preserve">Get the error quark used by the parsing subsystem.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark of the parse errors.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <bitfield name="ParseFlags"
+ glib:type-name="GstParseFlags"
+ glib:get-type="gst_parse_flags_get_type"
+ c:type="GstParseFlags">
+ <doc xml:space="preserve">Parsing options.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_PARSE_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">Do not use any special parsing options.</doc>
+ </member>
+ <member name="fatal_errors"
+ value="1"
+ c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"
+ glib:nick="fatal-errors">
+ <doc xml:space="preserve">Always return %NULL when an error occurs
+ (default behaviour is to return partially constructed bins or elements
+ in some cases)</doc>
+ </member>
+ <member name="no_single_element_bins"
+ value="2"
+ c:identifier="GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS"
+ glib:nick="no-single-element-bins">
+ <doc xml:space="preserve">If a bin only has a single element,
+ just return the element.</doc>
+ </member>
+ <member name="place_in_bin"
+ value="4"
+ c:identifier="GST_PARSE_FLAG_PLACE_IN_BIN"
+ glib:nick="place-in-bin">
+ <doc xml:space="preserve">If more than one toplevel element is described
+ by the pipeline description string, put them in a #GstBin instead of a
+ #GstPipeline. (Since 1.10)</doc>
+ </member>
+ </bitfield>
+ <class name="Pipeline"
+ c:symbol-prefix="pipeline"
+ c:type="GstPipeline"
+ parent="Bin"
+ glib:type-name="GstPipeline"
+ glib:get-type="gst_pipeline_get_type"
+ glib:type-struct="PipelineClass">
+ <doc xml:space="preserve">A #GstPipeline is a special #GstBin used as the toplevel container for
+the filter graph. The #GstPipeline will manage the selection and
+distribution of a global #GstClock as well as provide a #GstBus to the
+application.
+
+gst_pipeline_new() is used to create a pipeline. when you are done with
+the pipeline, use gst_object_unref() to free its resources including all
+added #GstElement objects (if not otherwise referenced).
+
+Elements are added and removed from the pipeline using the #GstBin
+methods like gst_bin_add() and gst_bin_remove() (see #GstBin).
+
+Before changing the state of the #GstPipeline (see #GstElement) a #GstBus
+can be retrieved with gst_pipeline_get_bus(). This bus can then be
+used to receive #GstMessage from the elements in the pipeline.
+
+By default, a #GstPipeline will automatically flush the pending #GstBus
+messages when going to the NULL state to ensure that no circular
+references exist when no messages are read from the #GstBus. This
+behaviour can be changed with gst_pipeline_set_auto_flush_bus().
+
+When the #GstPipeline performs the PAUSED to PLAYING state change it will
+select a clock for the elements. The clock selection algorithm will by
+default select a clock provided by an element that is most upstream
+(closest to the source). For live pipelines (ones that return
+#GST_STATE_CHANGE_NO_PREROLL from the gst_element_set_state() call) this
+will select the clock provided by the live source. For normal pipelines
+this will select a clock provided by the sinks (most likely the audio
+sink). If no element provides a clock, a default #GstSystemClock is used.
+
+The clock selection can be controlled with the gst_pipeline_use_clock()
+method, which will enforce a given clock on the pipeline. With
+gst_pipeline_auto_clock() the default clock selection algorithm can be
+restored.
+
+A #GstPipeline maintains a running time for the elements. The running
+time is defined as the difference between the current clock time and
+the base time. When the pipeline goes to READY or a flushing seek is
+performed on it, the running time is reset to 0. When the pipeline is
+set from PLAYING to PAUSED, the current clock time is sampled and used to
+configure the base time for the elements when the pipeline is set
+to PLAYING again. The effect is that the running time (as the difference
+between the clock time and the base time) will count how much time was spent
+in the PLAYING state. This default behaviour can be changed with the
+gst_element_set_start_time() method.</doc>
+ <implements name="ChildProxy"/>
+ <constructor name="new" c:identifier="gst_pipeline_new">
+ <doc xml:space="preserve">Create a new pipeline with the given name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">newly created GstPipeline
+
+MT safe.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">name of new pipeline</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="auto_clock" c:identifier="gst_pipeline_auto_clock">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_auto_flush_bus"
+ c:identifier="gst_pipeline_get_auto_flush_bus">
+ <doc xml:space="preserve">Check if @pipeline will automatically flush messages when going to
+the NULL state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether the pipeline will automatically flush its bus when
+going from READY to NULL state or not.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_bus" c:identifier="gst_pipeline_get_bus">
+ <doc xml:space="preserve">Gets the #GstBus of @pipeline. The bus allows applications to receive
+#GstMessage packets.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBus, unref after usage.
+
+MT safe.</doc>
+ <type name="Bus" c:type="GstBus*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_clock"
+ c:identifier="gst_pipeline_get_clock"
+ introspectable="0">
+ <doc xml:space="preserve">Gets the current clock used by @pipeline. Users of object
+oriented languages should use gst_pipeline_get_pipeline_clock()
+to avoid confusion with gst_element_get_clock() which has a different behavior.
+
+Unlike gst_element_get_clock(), this function will always return a
+clock, even if the pipeline is not in the PLAYING state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstClock, unref after usage.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_delay" c:identifier="gst_pipeline_get_delay">
+ <doc xml:space="preserve">Get the configured delay (see gst_pipeline_set_delay()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The configured delay.
+
+MT safe.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency"
+ c:identifier="gst_pipeline_get_latency"
+ version="1.6">
+ <doc xml:space="preserve">Gets the latency that should be configured on the pipeline. See
+gst_pipeline_set_latency().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Latency to configure on the pipeline or GST_CLOCK_TIME_NONE</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pipeline_clock"
+ c:identifier="gst_pipeline_get_pipeline_clock"
+ version="1.6">
+ <doc xml:space="preserve">Gets the current clock used by @pipeline.
+
+Unlike gst_element_get_clock(), this function will always return a
+clock, even if the pipeline is not in the PLAYING state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstClock, unref after usage.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_auto_flush_bus"
+ c:identifier="gst_pipeline_set_auto_flush_bus">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ <parameter name="auto_flush" transfer-ownership="none">
+ <doc xml:space="preserve">whether or not to automatically flush the bus when
+the pipeline goes from READY to NULL state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_clock"
+ c:identifier="gst_pipeline_set_clock"
+ introspectable="0">
+ <doc xml:space="preserve">Set the clock for @pipeline. The clock will be distributed
+to all the elements managed by the pipeline.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the clock could be set on the pipeline. %FALSE if
+ some element did not accept the clock.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">the clock to set</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_delay" c:identifier="gst_pipeline_set_delay">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ <parameter name="delay" transfer-ownership="none">
+ <doc xml:space="preserve">the delay</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency"
+ c:identifier="gst_pipeline_set_latency"
+ version="1.6">
+ <doc xml:space="preserve">Sets the latency that should be configured on the pipeline. Setting
+GST_CLOCK_TIME_NONE will restore the default behaviour of using the minimum
+latency from the LATENCY query. Setting this is usually not required and
+the pipeline will figure out an appropriate latency automatically.
+
+Setting a too low latency, especially lower than the minimum latency from
+the LATENCY query, will most likely cause the pipeline to fail.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ <parameter name="latency" transfer-ownership="none">
+ <doc xml:space="preserve">latency to configure</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="use_clock" c:identifier="gst_pipeline_use_clock">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pipeline" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPipeline</doc>
+ <type name="Pipeline" c:type="GstPipeline*"/>
+ </instance-parameter>
+ <parameter name="clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the clock to use</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="auto-flush-bus" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Whether or not to automatically flush all messages on the
+pipeline's bus when going from READY to NULL state. Please see
+gst_pipeline_set_auto_flush_bus() for more information on this option.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="delay" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The expected delay needed for elements to spin up to the
+PLAYING state expressed in nanoseconds.
+see gst_pipeline_set_delay() for more information on this option.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="latency"
+ version="1.6"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Latency to configure on the pipeline. See gst_pipeline_set_latency().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="bin">
+ <type name="Bin" c:type="GstBin"/>
+ </field>
+ <field name="fixed_clock">
+ <doc xml:space="preserve">The fixed clock of the pipeline, used when
+ GST_PIPELINE_FLAG_FIXED_CLOCK is set.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </field>
+ <field name="stream_time">
+ <doc xml:space="preserve">The stream time of the pipeline. A better name for this
+ property would be the running_time, the total time spent in the
+ PLAYING state without being flushed. (deprecated, use the start_time
+ on GstElement).</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="delay">
+ <doc xml:space="preserve">Extra delay added to base_time to compensate for computing delays
+ when setting elements to PLAYING.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="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" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="PipelineFlags"
+ glib:type-name="GstPipelineFlags"
+ glib:get-type="gst_pipeline_flags_get_type"
+ c:type="GstPipelineFlags">
+ <doc xml:space="preserve">Pipeline flags</doc>
+ <member name="fixed_clock"
+ value="524288"
+ c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"
+ glib:nick="fixed-clock">
+ <doc xml:space="preserve">this pipeline works with a fixed clock</doc>
+ </member>
+ <member name="last"
+ value="8388608"
+ c:identifier="GST_PIPELINE_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <record name="PipelinePrivate" c:type="GstPipelinePrivate" disguised="1">
+ </record>
+ <class name="Plugin"
+ c:symbol-prefix="plugin"
+ c:type="GstPlugin"
+ parent="Object"
+ glib:type-name="GstPlugin"
+ glib:get-type="gst_plugin_get_type"
+ glib:type-struct="PluginClass">
+ <doc xml:space="preserve">GStreamer is extensible, so #GstElement instances can be loaded at runtime.
+A plugin system can provide one or more of the basic
+&lt;application&gt;GStreamer&lt;/application&gt; #GstPluginFeature subclasses.
+
+A plugin should export a symbol &lt;symbol&gt;gst_plugin_desc&lt;/symbol&gt; that is a
+struct of type #GstPluginDesc.
+the plugin loader will check the version of the core library the plugin was
+linked against and will create a new #GstPlugin. It will then call the
+#GstPluginInitFunc function that was provided in the
+&lt;symbol&gt;gst_plugin_desc&lt;/symbol&gt;.
+
+Once you have a handle to a #GstPlugin (e.g. from the #GstRegistry), you
+can add any object that subclasses #GstPluginFeature.
+
+Usually plugins are always automatically loaded so you don't need to call
+gst_plugin_load() explicitly to bring it into memory. There are options to
+statically link plugins to an app or even use GStreamer without a plugin
+repository in which case gst_plugin_load() can be needed to bring the plugin
+into memory.</doc>
+ <function name="list_free" c:identifier="gst_plugin_list_free">
+ <doc xml:space="preserve">Unrefs each member of @list, then frees the list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">list of #GstPlugin</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Plugin"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="load_by_name" c:identifier="gst_plugin_load_by_name">
+ <doc xml:space="preserve">Load the named plugin. Refs the plugin.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a reference to a loaded plugin, or
+%NULL on error.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of plugin to load</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="load_file"
+ c:identifier="gst_plugin_load_file"
+ throws="1">
+ <doc xml:space="preserve">Loads the given plugin and refs it. Caller needs to unref after use.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a reference to the existing loaded GstPlugin, a
+reference to the newly-loaded GstPlugin, or %NULL if an error occurred.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <parameter name="filename" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin filename to load</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="register_static"
+ c:identifier="gst_plugin_register_static">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the plugin was registered correctly, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="major_version" transfer-ownership="none">
+ <doc xml:space="preserve">the major version number of the GStreamer core that the
+ plugin was compiled for, you can just use GST_VERSION_MAJOR here</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="minor_version" transfer-ownership="none">
+ <doc xml:space="preserve">the minor version number of the GStreamer core that the
+ plugin was compiled for, you can just use GST_VERSION_MINOR here</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a unique name of the plugin (ideally prefixed with an application- or
+ library-specific namespace prefix in order to avoid name conflicts in
+ case a similar plugin with the same name ever gets added to GStreamer)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">description of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="init_func" transfer-ownership="none" scope="call">
+ <doc xml:space="preserve">pointer to the init function of this plugin.</doc>
+ <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+ </parameter>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">version string of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="license" transfer-ownership="none">
+ <doc xml:space="preserve">effective license of plugin. Must be one of the approved licenses
+ (see #GstPluginDesc above) or the plugin will not be registered.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">source module plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="package" transfer-ownership="none">
+ <doc xml:space="preserve">shipped package plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="origin" transfer-ownership="none">
+ <doc xml:space="preserve">URL to provider of plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="register_static_full"
+ c:identifier="gst_plugin_register_static_full">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the plugin was registered correctly, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="major_version" transfer-ownership="none">
+ <doc xml:space="preserve">the major version number of the GStreamer core that the
+ plugin was compiled for, you can just use GST_VERSION_MAJOR here</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="minor_version" transfer-ownership="none">
+ <doc xml:space="preserve">the minor version number of the GStreamer core that the
+ plugin was compiled for, you can just use GST_VERSION_MINOR here</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a unique name of the plugin (ideally prefixed with an application- or
+ library-specific namespace prefix in order to avoid name conflicts in
+ case a similar plugin with the same name ever gets added to GStreamer)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">description of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="init_full_func"
+ transfer-ownership="none"
+ scope="call"
+ closure="10">
+ <doc xml:space="preserve">pointer to the init function with user data
+ of this plugin.</doc>
+ <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
+ </parameter>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">version string of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="license" transfer-ownership="none">
+ <doc xml:space="preserve">effective license of plugin. Must be one of the approved licenses
+ (see #GstPluginDesc above) or the plugin will not be registered.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">source module plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="package" transfer-ownership="none">
+ <doc xml:space="preserve">shipped package plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="origin" transfer-ownership="none">
+ <doc xml:space="preserve">URL to provider of plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">gpointer to user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="add_dependency" c:identifier="gst_plugin_add_dependency">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPlugin</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ <parameter name="env_vars"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">%NULL-terminated array of environment variables affecting the
+ 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.
+ "HOME/.mystuff/plugins".</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="paths"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">%NULL-terminated array of directories/paths where dependent files
+ may be, or %NULL.</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="names"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">%NULL-terminated array of file names (or file name suffixes,
+ depending on @flags) to be used in combination with the paths from
+ @paths and/or the paths extracted from the environment variables in
+ @env_vars, or %NULL.</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE</doc>
+ <type name="PluginDependencyFlags"
+ c:type="GstPluginDependencyFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_dependency_simple"
+ c:identifier="gst_plugin_add_dependency_simple">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPlugin</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ <parameter name="env_vars"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">one or more environment variables (separated by ':', ';' or ','),
+ 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.
+ "HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="paths"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">one ore more directory paths (separated by ':' or ';' or ','),
+ or %NULL. Example: "/usr/lib/mystuff/plugins"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="names"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">one or more file names or file name suffixes (separated by commas),
+ or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE</doc>
+ <type name="PluginDependencyFlags"
+ c:type="GstPluginDependencyFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_cache_data" c:identifier="gst_plugin_get_cache_data">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The cached data as a
+#GstStructure or %NULL.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">a plugin</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_description" c:identifier="gst_plugin_get_description">
+ <doc xml:space="preserve">Get the long descriptive name of the plugin</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the long name of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get long name of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_filename" c:identifier="gst_plugin_get_filename">
+ <doc xml:space="preserve">get the filename of the plugin</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the filename of the plugin</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the filename of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_license" c:identifier="gst_plugin_get_license">
+ <doc xml:space="preserve">get the license of the plugin</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the license of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the license of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_plugin_get_name">
+ <doc xml:space="preserve">Get the short name of the plugin</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the name of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_origin" c:identifier="gst_plugin_get_origin">
+ <doc xml:space="preserve">get the URL where the plugin comes from</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the origin of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the origin of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_package" c:identifier="gst_plugin_get_package">
+ <doc xml:space="preserve">get the package the plugin belongs to.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the package of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the package of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_release_date_string"
+ c:identifier="gst_plugin_get_release_date_string">
+ <doc xml:space="preserve">Get the release date (and possibly time) in form of a string, if available.
+
+For normal GStreamer plugin releases this will usually just be a date in
+the form of "YYYY-MM-DD", while pre-releases and builds from git may contain
+a time component after the date as well, in which case the string will be
+formatted like "YYYY-MM-DDTHH:MMZ" (e.g. "2012-04-30T09:30Z").
+
+There may be plugins that do not have a valid release date set on them.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the date string of the plugin, or %NULL if not
+available.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the release date of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_source" c:identifier="gst_plugin_get_source">
+ <doc xml:space="preserve">get the source module the plugin belongs to.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the source of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the source of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_version" c:identifier="gst_plugin_get_version">
+ <doc xml:space="preserve">get the version of the plugin</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the version of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to get the version of</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_loaded" c:identifier="gst_plugin_is_loaded">
+ <doc xml:space="preserve">queries if the plugin is loaded into memory</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is loaded, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to query</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="load" c:identifier="gst_plugin_load">
+ <doc xml:space="preserve">Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
+untouched. The normal use pattern of this function goes like this:
+
+|[
+GstPlugin *loaded_plugin;
+loaded_plugin = gst_plugin_load (plugin);
+// presumably, we're no longer interested in the potentially-unloaded plugin
+gst_object_unref (plugin);
+plugin = loaded_plugin;
+]|</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a reference to a loaded plugin, or
+%NULL on error.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">plugin to load</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_cache_data" c:identifier="gst_plugin_set_cache_data">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">a plugin</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </instance-parameter>
+ <parameter name="cache_data" transfer-ownership="full">
+ <doc xml:space="preserve">a structure containing the data to cache</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="PluginClass"
+ c:type="GstPluginClass"
+ disguised="1"
+ glib:is-gtype-struct-for="Plugin">
+ </record>
+ <bitfield name="PluginDependencyFlags"
+ glib:type-name="GstPluginDependencyFlags"
+ glib:get-type="gst_plugin_dependency_flags_get_type"
+ c:type="GstPluginDependencyFlags">
+ <doc xml:space="preserve">Flags used in connection with gst_plugin_add_dependency().</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no special flags</doc>
+ </member>
+ <member name="recurse"
+ value="1"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"
+ glib:nick="recurse">
+ <doc xml:space="preserve">recurse into subdirectories</doc>
+ </member>
+ <member name="paths_are_default_only"
+ value="2"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"
+ glib:nick="paths-are-default-only">
+ <doc xml:space="preserve">use paths
+ argument only if none of the environment variables is set</doc>
+ </member>
+ <member name="file_name_is_suffix"
+ value="4"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"
+ glib:nick="file-name-is-suffix">
+ <doc xml:space="preserve">interpret
+ filename argument as filter suffix and check all matching files in
+ the directory</doc>
+ </member>
+ <member name="file_name_is_prefix"
+ value="8"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX"
+ glib:nick="file-name-is-prefix">
+ <doc xml:space="preserve">interpret
+ filename argument as filter prefix and check all matching files in
+ the directory. Since 1.8.</doc>
+ </member>
+ <member name="paths_are_relative_to_exe"
+ value="16"
+ c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE"
+ glib:nick="paths-are-relative-to-exe">
+ <doc xml:space="preserve">interpret
+ non-absolute paths as relative to the main executable directory. Since
+ 1.14.</doc>
+ </member>
+ </bitfield>
+ <record name="PluginDesc" c:type="GstPluginDesc">
+ <doc xml:space="preserve">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.
+
+The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL,
+BSD, MIT/X11, Proprietary, unknown.</doc>
+ <field name="major_version" writable="1">
+ <doc xml:space="preserve">the major version number of core that plugin was compiled for</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="minor_version" writable="1">
+ <doc xml:space="preserve">the minor version number of core that plugin was compiled for</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="name" writable="1">
+ <doc xml:space="preserve">a unique name of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" writable="1">
+ <doc xml:space="preserve">description of plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="plugin_init" writable="1">
+ <doc xml:space="preserve">pointer to the init function of this plugin.</doc>
+ <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+ </field>
+ <field name="version" writable="1">
+ <doc xml:space="preserve">version of the plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="license" writable="1">
+ <doc xml:space="preserve">effective license of plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="source" writable="1">
+ <doc xml:space="preserve">source module plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="package" writable="1">
+ <doc xml:space="preserve">shipped package plugin belongs to</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="origin" writable="1">
+ <doc xml:space="preserve">URL to provider of plugin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="release_datetime" writable="1">
+ <doc xml:space="preserve">date time string in ISO 8601
+ format (or rather, a subset thereof), or %NULL. Allowed are the
+ following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with
+ 'T' a separator and 'Z' indicating UTC/Zulu time). This field
+ should be set via the GST_PACKAGE_RELEASE_DATETIME
+ preprocessor macro.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="PluginError"
+ glib:type-name="GstPluginError"
+ glib:get-type="gst_plugin_error_get_type"
+ c:type="GstPluginError"
+ glib:error-domain="gst_plugin_error">
+ <doc xml:space="preserve">The plugin loading errors</doc>
+ <member name="module"
+ value="0"
+ c:identifier="GST_PLUGIN_ERROR_MODULE"
+ glib:nick="module">
+ <doc xml:space="preserve">The plugin could not be loaded</doc>
+ </member>
+ <member name="dependencies"
+ value="1"
+ c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"
+ glib:nick="dependencies">
+ <doc xml:space="preserve">The plugin has unresolved dependencies</doc>
+ </member>
+ <member name="name_mismatch"
+ value="2"
+ c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"
+ glib:nick="name-mismatch">
+ <doc xml:space="preserve">The plugin has already be loaded from a different file</doc>
+ </member>
+ <function name="quark" c:identifier="gst_plugin_error_quark">
+ <doc xml:space="preserve">Get the error quark.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The error quark used in GError messages</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <class name="PluginFeature"
+ c:symbol-prefix="plugin_feature"
+ c:type="GstPluginFeature"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstPluginFeature"
+ glib:get-type="gst_plugin_feature_get_type"
+ glib:type-struct="PluginFeatureClass">
+ <doc xml:space="preserve">This is a base class for anything that can be added to a #GstPlugin.</doc>
+ <function name="list_copy" c:identifier="gst_plugin_feature_list_copy">
+ <doc xml:space="preserve">Copies the list of features. Caller should call @gst_plugin_feature_list_free
+when done with the list.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a copy of @list,
+ with each feature's reference count incremented.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list
+ of #GstPluginFeature</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="list_debug" c:identifier="gst_plugin_feature_list_debug">
+ <doc xml:space="preserve">Debug the plugin feature names in @list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GList of
+ plugin features</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="list_free" c:identifier="gst_plugin_feature_list_free">
+ <doc xml:space="preserve">Unrefs each member of @list, then frees the list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">list
+ of #GstPluginFeature</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rank_compare_func"
+ c:identifier="gst_plugin_feature_rank_compare_func">
+ <doc xml:space="preserve">Compares the two given #GstPluginFeature instances. This function can be
+used as a #GCompareFunc when sorting by rank and then by name.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">negative value if the rank of p1 &gt; the rank of p2 or the ranks are
+equal but the name of p1 comes before the name of p2; zero if the rank
+and names are equal; positive value if the rank of p1 &lt; the rank of p2 or the
+ranks are equal but the name of p2 comes before the name of p1</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="p1"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstPluginFeature</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ <parameter name="p2"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstPluginFeature</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="check_version"
+ c:identifier="gst_plugin_feature_check_version">
+ <doc xml:space="preserve">Checks whether the given plugin feature is at least
+ the required version</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the plugin feature has at least
+ the required version, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ <parameter name="min_major" transfer-ownership="none">
+ <doc xml:space="preserve">minimum required major version</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_minor" transfer-ownership="none">
+ <doc xml:space="preserve">minimum required minor version</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_micro" transfer-ownership="none">
+ <doc xml:space="preserve">minimum required micro version</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_plugin" c:identifier="gst_plugin_feature_get_plugin">
+ <doc xml:space="preserve">Get the plugin that provides this feature.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the plugin that provides this
+ feature, or %NULL. Unref with gst_object_unref() when no
+ longer needed.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_plugin_name"
+ c:identifier="gst_plugin_feature_get_plugin_name"
+ version="1.2">
+ <doc xml:space="preserve">Get the name of the plugin that provides this feature.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the name of the plugin that provides this
+ feature, or %NULL if the feature is not associated with a
+ plugin.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_rank" c:identifier="gst_plugin_feature_get_rank">
+ <doc xml:space="preserve">Gets the rank of a plugin feature.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The rank of the feature</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">a feature</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="load" c:identifier="gst_plugin_feature_load">
+ <doc xml:space="preserve">Loads the plugin containing @feature if it's not already loaded. @feature is
+unaffected; use the return value instead.
+
+Normally this function is used like this:
+|[&lt;!-- language="C" --&gt;
+GstPluginFeature *loaded_feature;
+
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we're no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+]|</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a reference to the loaded
+feature, or %NULL on error</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin feature to check</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_rank" c:identifier="gst_plugin_feature_set_rank">
+ <doc xml:space="preserve">Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">feature to rank</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </instance-parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <doc xml:space="preserve">rank value - higher number means more priority rank</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="PluginFeatureClass"
+ c:type="GstPluginFeatureClass"
+ disguised="1"
+ glib:is-gtype-struct-for="PluginFeature">
+ </record>
+ <callback name="PluginFeatureFilter" c:type="GstPluginFeatureFilter">
+ <doc xml:space="preserve">A function that can be used with e.g. gst_registry_feature_filter()
+to get a list of pluginfeature that match certain criteria.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for a positive match, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">the pluginfeature to check</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">the user_data that has been passed on e.g.
+ gst_registry_feature_filter()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PluginFilter" c:type="GstPluginFilter">
+ <doc xml:space="preserve">A function that can be used with e.g. gst_registry_plugin_filter()
+to get a list of plugins that match certain criteria.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for a positive match, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin to check</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">the user_data that has been passed on e.g. gst_registry_plugin_filter()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="PluginFlags"
+ glib:type-name="GstPluginFlags"
+ glib:get-type="gst_plugin_flags_get_type"
+ c:type="GstPluginFlags">
+ <doc xml:space="preserve">The plugin loading state</doc>
+ <member name="cached"
+ value="16"
+ c:identifier="GST_PLUGIN_FLAG_CACHED"
+ glib:nick="cached">
+ <doc xml:space="preserve">Temporarily loaded plugins</doc>
+ </member>
+ <member name="blacklisted"
+ value="32"
+ c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"
+ glib:nick="blacklisted">
+ <doc xml:space="preserve">The plugin won't be scanned (again)</doc>
+ </member>
+ </bitfield>
+ <callback name="PluginInitFullFunc" c:type="GstPluginInitFullFunc">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if plugin initialised successfully</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">The plugin object</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">extra data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="PluginInitFunc" c:type="GstPluginInitFunc">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if plugin initialised successfully</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">The plugin object</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="Poll" c:type="GstPoll" disguised="1">
+ <doc xml:space="preserve">A #GstPoll keeps track of file descriptors much like fd_set (used with
+select()) or a struct pollfd array (used with poll()). Once created with
+gst_poll_new(), the set can be used to wait for file descriptors to be
+readable and/or writable. It is possible to make this wait be controlled
+by specifying %TRUE for the @controllable flag when creating the set (or
+later calling gst_poll_set_controllable()).
+
+New file descriptors are added to the set using gst_poll_add_fd(), and
+removed using gst_poll_remove_fd(). Controlling which file descriptors
+should be waited for to become readable and/or writable are done using
+gst_poll_fd_ctl_read() and gst_poll_fd_ctl_write().
+
+Use gst_poll_wait() to wait for the file descriptors to actually become
+readable and/or writable, or to timeout if no file descriptor is available
+in time. The wait can be controlled by calling gst_poll_restart() and
+gst_poll_set_flushing().
+
+Once the file descriptor set has been waited for, one can use
+gst_poll_fd_has_closed() to see if the file descriptor has been closed,
+gst_poll_fd_has_error() to see if it has generated an error,
+gst_poll_fd_can_read() to see if it is possible to read from the file
+descriptor, and gst_poll_fd_can_write() to see if it is possible to
+write to it.</doc>
+ <method name="add_fd" c:identifier="gst_poll_add_fd">
+ <doc xml:space="preserve">Add a file descriptor to the file descriptor set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the file descriptor was successfully added to the set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_can_read" c:identifier="gst_poll_fd_can_read">
+ <doc xml:space="preserve">Check if @fd in @set has data to be read.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the descriptor has data to be read.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="const GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_can_write" c:identifier="gst_poll_fd_can_write">
+ <doc xml:space="preserve">Check if @fd in @set can be used for writing.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the descriptor can be used for writing.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="const GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_ctl_read" c:identifier="gst_poll_fd_ctl_read">
+ <doc xml:space="preserve">Control whether the descriptor @fd in @set will be monitored for
+readability.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the descriptor was successfully updated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">a new status.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_ctl_write" c:identifier="gst_poll_fd_ctl_write">
+ <doc xml:space="preserve">Control whether the descriptor @fd in @set will be monitored for
+writability.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the descriptor was successfully updated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">a new status.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_has_closed" c:identifier="gst_poll_fd_has_closed">
+ <doc xml:space="preserve">Check if @fd in @set has closed the connection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the connection was closed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="const GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_has_error" c:identifier="gst_poll_fd_has_error">
+ <doc xml:space="preserve">Check if @fd in @set has an error.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the descriptor has an error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="const GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fd_ignored" c:identifier="gst_poll_fd_ignored">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_poll_free">
+ <doc xml:space="preserve">Free a file descriptor set.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="full">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_read_gpollfd" c:identifier="gst_poll_get_read_gpollfd">
+ <doc xml:space="preserve">Get a GPollFD for the reading part of the control socket. This is useful when
+integrating with a GSource and GMainLoop.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a #GPollFD</doc>
+ <type name="GLib.PollFD" c:type="GPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read_control" c:identifier="gst_poll_read_control">
+ <doc xml:space="preserve">Read a byte from the control socket of the controllable @set.
+
+This function only works for timer #GstPoll objects created with
+gst_poll_new_timer().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success. %FALSE when when there was no byte to read or
+reading the byte failed. If there was no byte to read, and only then, errno
+will contain EWOULDBLOCK or EAGAIN. For all other values of errno this always signals a
+critical error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_fd" c:identifier="gst_poll_remove_fd">
+ <doc xml:space="preserve">Remove a file descriptor from the file descriptor set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the file descriptor was successfully removed from the set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor set.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a file descriptor.</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="restart" c:identifier="gst_poll_restart">
+ <doc xml:space="preserve">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.
+
+This function only works for non-timer #GstPoll objects created with
+gst_poll_new().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_controllable" c:identifier="gst_poll_set_controllable">
+ <doc xml:space="preserve">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().
+
+This function only works for non-timer #GstPoll objects created with
+gst_poll_new().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the controllability of @set could be updated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="controllable" transfer-ownership="none">
+ <doc xml:space="preserve">new controllable state.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing" c:identifier="gst_poll_set_flushing">
+ <doc xml:space="preserve">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.
+
+This function only works for non-timer #GstPoll objects created with
+gst_poll_new().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">new flushing state.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait" c:identifier="gst_poll_wait">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of #GstPollFD in @set that have activity or 0 when no
+activity was detected after @timeout. If an error occurs, -1 is returned
+and errno is set.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout in nanoseconds.</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="write_control" c:identifier="gst_poll_write_control">
+ <doc xml:space="preserve">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.
+
+This function only works for timer #GstPoll objects created with
+gst_poll_new_timer().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success. %FALSE when when the byte could not be written.
+errno contains the detailed error code but will never be EAGAIN, EINTR or
+EWOULDBLOCK. %FALSE always signals a critical error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="set" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPoll.</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="new" c:identifier="gst_poll_new" introspectable="0">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_poll_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstPoll, or %NULL in
+ case of an error. Free with gst_poll_free().</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </return-value>
+ <parameters>
+ <parameter name="controllable" transfer-ownership="none">
+ <doc xml:space="preserve">whether it should be possible to control a wait.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_timer"
+ c:identifier="gst_poll_new_timer"
+ introspectable="0">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_poll_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstPoll, or %NULL in
+ case of an error. Free with gst_poll_free().</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="PollFD" c:type="GstPollFD">
+ <doc xml:space="preserve">A file descriptor object.</doc>
+ <field name="fd" writable="1">
+ <doc xml:space="preserve">a file descriptor</doc>
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="idx" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <method name="init" c:identifier="gst_poll_fd_init">
+ <doc xml:space="preserve">Initializes @fd. Alternatively you can initialize it with
+#GST_POLL_FD_INIT.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="fd" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPollFD</doc>
+ <type name="PollFD" c:type="GstPollFD*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <interface name="Preset"
+ c:symbol-prefix="preset"
+ c:type="GstPreset"
+ glib:type-name="GstPreset"
+ glib:get-type="gst_preset_get_type"
+ glib:type-struct="PresetInterface">
+ <doc xml:space="preserve">This interface offers methods to query and manipulate parameter preset sets.
+A preset is a bunch of property settings, together with meta data and a name.
+The name of a preset serves as key for subsequent method calls to manipulate
+single presets.
+All instances of one type will share the list of presets. The list is created
+on demand, if presets are not used, the list is not created.
+
+The interface comes with a default implementation that serves most plugins.
+Wrapper plugins will override most methods to implement support for the
+native preset format of those wrapped plugins.
+One method that is useful to be overridden is gst_preset_get_property_names().
+With that one can control which properties are saved and in which order.
+When implementing support for read-only presets, one should set the vmethods
+for gst_preset_save_preset() and gst_preset_delete_preset() to %NULL.
+Applications can use gst_preset_is_editable() to check for that.
+
+The default implementation supports presets located in a system directory,
+application specific directory and in the users home directory. When getting
+a list of presets individual presets are read and overlaid in 1) system,
+2) application and 3) user order. Whenever an earlier entry is newer, the
+later entries will be updated. Since 1.8 you can also provide extra paths
+where to find presets through the GST_PRESET_PATH environment variable.
+Presets found in those paths will be concidered as "app presets".</doc>
+ <function name="get_app_dir" c:identifier="gst_preset_get_app_dir">
+ <doc xml:space="preserve">Gets the directory for application specific presets if set by the
+application.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the directory or %NULL, don't free or modify
+the string</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </return-value>
+ </function>
+ <function name="set_app_dir" c:identifier="gst_preset_set_app_dir">
+ <doc xml:space="preserve">Sets an extra directory as an absolute path that should be considered when
+looking for presets. Any presets in the application dir will shadow the
+system presets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if the dir already has been set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="app_dir" transfer-ownership="none">
+ <doc xml:space="preserve">the application specific preset dir</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="delete_preset" invoker="delete_preset">
+ <doc xml:space="preserve">Delete the given preset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_meta" invoker="get_meta">
+ <doc xml:space="preserve">Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. "comment". Returned values need to be released when done.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name
+or no value for the given @tag</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">value</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_preset_names" invoker="get_preset_names">
+ <doc xml:space="preserve">Get a copy of preset names as a %NULL terminated string array.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ list with names, use g_strfreev() after usage.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_property_names" invoker="get_property_names">
+ <doc xml:space="preserve">Get a the names of the GObject properties that can be used for presets.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">an
+ array of property names which should be freed with g_strfreev() after use.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="load_preset" invoker="load_preset">
+ <doc xml:space="preserve">Load the given preset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to load</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="rename_preset" invoker="rename_preset">
+ <doc xml:space="preserve">Renames a preset. If there is already a preset by the @new_name it will be
+overwritten.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="old_name" transfer-ownership="none">
+ <doc xml:space="preserve">current preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="new_name" transfer-ownership="none">
+ <doc xml:space="preserve">new preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="save_preset" invoker="save_preset">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to save</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_meta" invoker="set_meta">
+ <doc xml:space="preserve">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. "comment". Supplying %NULL for the
+@value will unset an existing value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="delete_preset" c:identifier="gst_preset_delete_preset">
+ <doc xml:space="preserve">Delete the given preset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_meta" c:identifier="gst_preset_get_meta">
+ <doc xml:space="preserve">Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. "comment". Returned values need to be released when done.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name
+or no value for the given @tag</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">value</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_preset_names"
+ c:identifier="gst_preset_get_preset_names">
+ <doc xml:space="preserve">Get a copy of preset names as a %NULL terminated string array.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ list with names, use g_strfreev() after usage.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_property_names"
+ c:identifier="gst_preset_get_property_names">
+ <doc xml:space="preserve">Get a the names of the GObject properties that can be used for presets.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">an
+ array of property names which should be freed with g_strfreev() after use.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_editable"
+ c:identifier="gst_preset_is_editable"
+ version="1.6">
+ <doc xml:space="preserve">Check if one can add new presets, change existing ones and remove presets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if presets are editable or %FALSE if they are static</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="load_preset" c:identifier="gst_preset_load_preset">
+ <doc xml:space="preserve">Load the given preset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to load</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="rename_preset" c:identifier="gst_preset_rename_preset">
+ <doc xml:space="preserve">Renames a preset. If there is already a preset by the @new_name it will be
+overwritten.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="old_name" transfer-ownership="none">
+ <doc xml:space="preserve">current preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="new_name" transfer-ownership="none">
+ <doc xml:space="preserve">new preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="save_preset" c:identifier="gst_preset_save_preset">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to save</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_meta" c:identifier="gst_preset_set_meta">
+ <doc xml:space="preserve">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. "comment". Supplying %NULL for the
+@value will unset an existing value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="PresetInterface"
+ c:type="GstPresetInterface"
+ glib:is-gtype-struct-for="Preset">
+ <doc xml:space="preserve">#GstPreset interface.</doc>
+ <field name="parent">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="get_preset_names">
+ <callback name="get_preset_names">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ list with names, use g_strfreev() after usage.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_property_names">
+ <callback name="get_property_names">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">an
+ array of property names which should be freed with g_strfreev() after use.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="load_preset">
+ <callback name="load_preset">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to load</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="save_preset">
+ <callback name="save_preset">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to save</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="rename_preset">
+ <callback name="rename_preset">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="old_name" transfer-ownership="none">
+ <doc xml:space="preserve">current preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="new_name" transfer-ownership="none">
+ <doc xml:space="preserve">new preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="delete_preset">
+ <callback name="delete_preset">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_meta">
+ <callback name="set_meta">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_meta">
+ <callback name="get_meta">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name
+or no value for the given @tag</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="preset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject that implements #GstPreset</doc>
+ <type name="Preset" c:type="GstPreset*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">preset name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">meta data item name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">value</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="ProgressType"
+ glib:type-name="GstProgressType"
+ glib:get-type="gst_progress_type_get_type"
+ c:type="GstProgressType">
+ <doc xml:space="preserve">The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the
+application of the status of asynchronous tasks.</doc>
+ <member name="start"
+ value="0"
+ c:identifier="GST_PROGRESS_TYPE_START"
+ glib:nick="start">
+ <doc xml:space="preserve">A new task started.</doc>
+ </member>
+ <member name="continue"
+ value="1"
+ c:identifier="GST_PROGRESS_TYPE_CONTINUE"
+ glib:nick="continue">
+ <doc xml:space="preserve">A task completed and a new one continues.</doc>
+ </member>
+ <member name="complete"
+ value="2"
+ c:identifier="GST_PROGRESS_TYPE_COMPLETE"
+ glib:nick="complete">
+ <doc xml:space="preserve">A task completed.</doc>
+ </member>
+ <member name="canceled"
+ value="3"
+ c:identifier="GST_PROGRESS_TYPE_CANCELED"
+ glib:nick="canceled">
+ <doc xml:space="preserve">A task was canceled.</doc>
+ </member>
+ <member name="error"
+ value="4"
+ c:identifier="GST_PROGRESS_TYPE_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">A task caused an error. An error message is also
+ posted on the bus.</doc>
+ </member>
+ </enumeration>
+ <record name="Promise"
+ c:type="GstPromise"
+ version="1.14"
+ glib:type-name="GstPromise"
+ glib:get-type="gst_promise_get_type"
+ c:symbol-prefix="promise">
+ <doc xml:space="preserve">The #GstPromise object implements the container for values that may
+be available later. i.e. a Future or a Promise in
+&lt;ulink url="https://en.wikipedia.org/wiki/Futures_and_promises"&gt;https://en.wikipedia.org/wiki/Futures_and_promises&lt;/ulink&gt;
+As with all Future/Promise-like functionality, there is the concept of the
+producer of the value and the consumer of the value.
+
+A #GstPromise is created with gst_promise_new() by the consumer and passed
+to the producer to avoid thread safety issues with the change callback.
+A #GstPromise can be replied to with a value (or an error) by the producer
+with gst_promise_reply(). gst_promise_interrupt() is for the consumer to
+indicate to the producer that the value is not needed anymore and producing
+that value can stop. The @GST_PROMISE_RESULT_EXPIRED state set by a call
+to gst_promise_expire() indicates to the consumer that a value will never
+be produced and is intended to be called by a third party that implements
+some notion of message handling such as #GstBus.
+A callback can also be installed at #GstPromise creation for
+result changes with gst_promise_new_with_change_func().
+The change callback can be used to chain #GstPromises's together as in the
+following example.
+|[&lt;!-- language="C" --&gt;
+const GstStructure *reply;
+GstPromise *p;
+if (gst_promise_wait (promise) != GST_PROMISE_RESULT_REPLIED)
+ return; // interrupted or expired value
+reply = gst_promise_get_reply (promise);
+if (error in reply)
+ return; // propagate error
+p = gst_promise_new_with_change_func (another_promise_change_func, user_data, notify);
+pass p to promise-using API
+]|
+
+Each #GstPromise starts out with a #GstPromiseResult of
+%GST_PROMISE_RESULT_PENDING and only ever transitions once
+into one of the other #GstPromiseResult's.
+
+In order to support multi-threaded code, gst_promise_reply(),
+gst_promise_interrupt() and gst_promise_expire() may all be from
+different threads with some restrictions and the final result of the promise
+is whichever call is made first. There are two restrictions on ordering:
+
+1. That gst_promise_reply() and gst_promise_interrupt() cannot be called
+after gst_promise_expire()
+2. That gst_promise_reply() and gst_promise_interrupt()
+cannot be called twice.
+
+The change function set with gst_promise_new_with_change_func() is
+called directly from either the gst_promise_reply(),
+gst_promise_interrupt() or gst_promise_expire() and can be called
+from an arbitrary thread. #GstPromise using APIs can restrict this to
+a single thread or a subset of threads but that is entirely up to the API
+that uses #GstPromise.</doc>
+ <field name="parent" writable="1">
+ <doc xml:space="preserve">parent #GstMiniObject</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <constructor name="new" c:identifier="gst_promise_new" version="1.14">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_with_change_func"
+ c:identifier="gst_promise_new_with_change_func"
+ version="1.14">
+ <doc xml:space="preserve">@func will be called exactly once when transitioning out of
+%GST_PROMISE_RESULT_PENDING into any of the other #GstPromiseResult
+states.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </return-value>
+ <parameters>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">a #GstPromiseChangeFunc to call</doc>
+ <type name="PromiseChangeFunc" c:type="GstPromiseChangeFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">argument to call @func with</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notification function that @user_data is no longer needed</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="expire" c:identifier="gst_promise_expire" version="1.14">
+ <doc xml:space="preserve">Expire a @promise. This will wake up any waiters with
+%GST_PROMISE_RESULT_EXPIRED. Called by a message loop when the parent
+message is handled and/or destroyed (possibly unanswered).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="promise" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_reply"
+ c:identifier="gst_promise_get_reply"
+ version="1.14">
+ <doc xml:space="preserve">Retrieve the reply set on @promise. @promise must be in
+%GST_PROMISE_RESULT_REPLIED and the returned structure is owned by @promise</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The reply set on @promise</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="promise" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="interrupt"
+ c:identifier="gst_promise_interrupt"
+ version="1.14">
+ <doc xml:space="preserve">Interrupt waiting for a @promise. This will wake up any waiters with
+%GST_PROMISE_RESULT_INTERRUPTED. Called when the consumer does not want
+the value produced anymore.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="promise" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reply" c:identifier="gst_promise_reply" version="1.14">
+ <doc xml:space="preserve">Set a reply on @promise. This will wake up any waiters with
+%GST_PROMISE_RESULT_REPLIED. Called by the producer of the value to
+indicate success (or failure).
+
+If @promise has already been interrupted by the consumer, then this reply
+is not visible to the consumer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="promise"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </instance-parameter>
+ <parameter name="s" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure with the the reply contents</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait" c:identifier="gst_promise_wait" version="1.14">
+ <doc xml:space="preserve">Wait for @promise to move out of the %GST_PROMISE_RESULT_PENDING state.
+If @promise is not in %GST_PROMISE_RESULT_PENDING then it will return
+immediately with the current result.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the promise</doc>
+ <type name="PromiseResult" c:type="GstPromiseResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="promise" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="PromiseChangeFunc"
+ c:type="GstPromiseChangeFunc"
+ version="1.14">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="promise" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPromise</doc>
+ <type name="Promise" c:type="GstPromise*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="PromiseResult"
+ version="1.14"
+ glib:type-name="GstPromiseResult"
+ glib:get-type="gst_promise_result_get_type"
+ c:type="GstPromiseResult">
+ <doc xml:space="preserve">The result of a #GstPromise</doc>
+ <member name="pending"
+ value="0"
+ c:identifier="GST_PROMISE_RESULT_PENDING"
+ glib:nick="pending">
+ <doc xml:space="preserve">Initial state. Waiting for transition to any
+ other state.</doc>
+ </member>
+ <member name="interrupted"
+ value="1"
+ c:identifier="GST_PROMISE_RESULT_INTERRUPTED"
+ glib:nick="interrupted">
+ <doc xml:space="preserve">Interrupted by the consumer as it doesn't
+ want the value anymore.</doc>
+ </member>
+ <member name="replied"
+ value="2"
+ c:identifier="GST_PROMISE_RESULT_REPLIED"
+ glib:nick="replied">
+ <doc xml:space="preserve">A producer marked a reply</doc>
+ </member>
+ <member name="expired"
+ value="3"
+ c:identifier="GST_PROMISE_RESULT_EXPIRED"
+ glib:nick="expired">
+ <doc xml:space="preserve">The promise expired (the carrying object
+ lost all refs) and the promise will never be fulfilled.</doc>
+ </member>
+ </enumeration>
+ <record name="ProtectionMeta" c:type="GstProtectionMeta" version="1.6">
+ <doc xml:space="preserve">Metadata type that holds information about a sample from a protection-protected
+track, including the information needed to decrypt it (if it is encrypted).</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">the parent #GstMeta.</doc>
+ <type name="Meta" c:type="GstMeta"/>
+ </field>
+ <field name="info" writable="1">
+ <doc xml:space="preserve">the cryptographic information needed to decrypt the sample.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </field>
+ <function name="get_info" c:identifier="gst_protection_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="ProxyPad"
+ c:symbol-prefix="proxy_pad"
+ c:type="GstProxyPad"
+ parent="Pad"
+ glib:type-name="GstProxyPad"
+ glib:get-type="gst_proxy_pad_get_type"
+ glib:type-struct="ProxyPadClass">
+ <function name="chain_default"
+ c:identifier="gst_proxy_pad_chain_default">
+ <doc xml:space="preserve">Invoke the default chain function of the proxy pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad, returns GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to send, return GST_FLOW_ERROR
+ if not.</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="chain_list_default"
+ c:identifier="gst_proxy_pad_chain_list_default">
+ <doc xml:space="preserve">Invoke the default chain list function of the proxy pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a sink #GstPad, returns GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="list" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBufferList to send, return GST_FLOW_ERROR
+ if not.</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="getrange_default"
+ c:identifier="gst_proxy_pad_getrange_default">
+ <doc xml:space="preserve">Invoke the default getrange function of the proxy pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn from the pad.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">a src #GstPad, returns #GST_FLOW_ERROR if not.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent" transfer-ownership="none">
+ <doc xml:space="preserve">the parent of @pad</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">The start offset of the buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The length of the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to hold the #GstBuffer,
+ returns #GST_FLOW_ERROR if %NULL.</doc>
+ <type name="Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="iterate_internal_links_default"
+ c:identifier="gst_proxy_pad_iterate_internal_links_default">
+ <doc xml:space="preserve">Invoke the default iterate internal links function of the proxy pad.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstIterator of #GstPad, or %NULL if @pad
+has no parent. Unref each returned pad with gst_object_unref().</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to get the internal links of.</doc>
+ <type name="Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @pad or %NULL</doc>
+ <type name="Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="get_internal" c:identifier="gst_proxy_pad_get_internal">
+ <doc xml:space="preserve">Get the internal pad of @pad. Unref target pad after usage.
+
+The internal pad of a #GstGhostPad is the internally used
+pad of opposite direction, which is used to link to the target.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the target #GstProxyPad, can
+be %NULL. Unref target pad after usage.</doc>
+ <type name="ProxyPad" c:type="GstProxyPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstProxyPad</doc>
+ <type name="ProxyPad" c:type="GstProxyPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="pad">
+ <type name="Pad" c:type="GstPad"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <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" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate" disguised="1">
+ </record>
+ <enumeration name="QOSType"
+ glib:type-name="GstQOSType"
+ glib:get-type="gst_qos_type_get_type"
+ c:type="GstQOSType">
+ <doc xml:space="preserve">The different types of QoS events that can be given to the
+gst_event_new_qos() method.</doc>
+ <member name="overflow"
+ value="0"
+ c:identifier="GST_QOS_TYPE_OVERFLOW"
+ glib:nick="overflow">
+ <doc xml:space="preserve">The QoS event type that is produced when upstream
+ elements are producing data too quickly and the element can't keep up
+ processing the data. Upstream should reduce their production rate. This
+ type is also used when buffers arrive early or in time.</doc>
+ </member>
+ <member name="underflow"
+ value="1"
+ c:identifier="GST_QOS_TYPE_UNDERFLOW"
+ glib:nick="underflow">
+ <doc xml:space="preserve">The QoS event type that is produced when upstream
+ elements are producing data too slowly and need to speed up their
+ production rate.</doc>
+ </member>
+ <member name="throttle"
+ value="2"
+ c:identifier="GST_QOS_TYPE_THROTTLE"
+ glib:nick="throttle">
+ <doc xml:space="preserve">The QoS event type that is produced when the
+ application enabled throttling to limit the data rate.</doc>
+ </member>
+ </enumeration>
+ <constant name="QUERY_NUM_SHIFT" value="8" c:type="GST_QUERY_NUM_SHIFT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="QUERY_TYPE_BOTH" value="3" c:type="GST_QUERY_TYPE_BOTH">
+ <doc xml:space="preserve">The same thing as #GST_QUERY_TYPE_UPSTREAM | #GST_QUERY_TYPE_DOWNSTREAM.</doc>
+ <type name="QueryTypeFlags" c:type="GstQueryTypeFlags"/>
+ </constant>
+ <record name="Query"
+ c:type="GstQuery"
+ glib:type-name="GstQuery"
+ glib:get-type="gst_query_get_type"
+ c:symbol-prefix="query">
+ <doc xml:space="preserve">Queries can be performed on pads (gst_pad_query()) and elements
+(gst_element_query()). Please note that some queries might need a running
+pipeline to work.
+
+Queries can be created using the gst_query_new_*() functions.
+Query values can be set using gst_query_set_*(), and parsed using
+gst_query_parse_*() helpers.
+
+The following example shows how to query the duration of a pipeline:
+|[&lt;!-- language="C" --&gt;
+ GstQuery *query;
+ gboolean res;
+ query = gst_query_new_duration (GST_FORMAT_TIME);
+ res = gst_element_query (pipeline, query);
+ if (res) {
+ gint64 duration;
+ gst_query_parse_duration (query, NULL, &amp;amp;duration);
+ g_print ("duration = %"GST_TIME_FORMAT, GST_TIME_ARGS (duration));
+ } else {
+ g_print ("duration query failed...");
+ }
+ gst_query_unref (query);
+]|</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">The parent #GstMiniObject type</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the #GstQueryType</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </field>
+ <constructor name="new_accept_caps"
+ c:identifier="gst_query_new_accept_caps">
+ <doc xml:space="preserve">Constructs a new query object for querying if @caps are accepted.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a fixed #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_allocation"
+ c:identifier="gst_query_new_allocation">
+ <doc xml:space="preserve">Constructs a new query object for querying the allocation properties.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the negotiated caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="need_pool" transfer-ownership="none">
+ <doc xml:space="preserve">return a pool</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
+ <doc xml:space="preserve">Constructs a new query object for querying the buffering status of
+a stream.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the default #GstFormat for the new query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_caps" c:identifier="gst_query_new_caps">
+ <doc xml:space="preserve">Constructs a new query object for querying the caps.
+
+The CAPS query should return the allowable caps for a pad in the context
+of the element'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, the CAPS query should ideally return the same caps
+as the pad template. In rare circumstances, an object property can affect
+the caps returned by the CAPS query, but this is discouraged.
+
+For most filters, the caps returned by CAPS query is directly affected by the
+allowed caps on other pads. For demuxers and decoders, the caps returned by
+the srcpad's getcaps function is directly related to the stream data. Again,
+the CAPS query should return the most specific caps it reasonably can, since this
+helps with autoplugging.
+
+The @filter is used to restrict the result caps, only the caps matching
+@filter should be returned from the CAPS query. Specifying a filter might
+greatly reduce the amount of processing an element needs to do.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <doc xml:space="preserve">a filter</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_context"
+ c:identifier="gst_query_new_context"
+ version="1.2">
+ <doc xml:space="preserve">Constructs a new query object for querying the pipeline-local context.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="context_type" transfer-ownership="none">
+ <doc xml:space="preserve">Context type to query</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_convert" c:identifier="gst_query_new_convert">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstFormat for the new query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to convert</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">the target #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_custom" c:identifier="gst_query_new_custom">
+ <doc xml:space="preserve">Constructs a new custom query object. Use gst_query_unref()
+when done with it.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the query type</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ <parameter name="structure"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a structure for the query</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_drain" c:identifier="gst_query_new_drain">
+ <doc xml:space="preserve">Constructs a new query object for querying the drain state.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_duration" c:identifier="gst_query_new_duration">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat for this duration query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_formats" c:identifier="gst_query_new_formats">
+ <doc xml:space="preserve">Constructs a new query object for querying formats of
+the stream.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_latency" c:identifier="gst_query_new_latency">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_position" c:identifier="gst_query_new_position">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the default #GstFormat for the new query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_scheduling"
+ c:identifier="gst_query_new_scheduling">
+ <doc xml:space="preserve">Constructs a new query object for querying the scheduling properties.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_seeking" c:identifier="gst_query_new_seeking">
+ <doc xml:space="preserve">Constructs a new query object for querying seeking properties of
+the stream.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the default #GstFormat for the new query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_segment" c:identifier="gst_query_new_segment">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat for the new query</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_uri" c:identifier="gst_query_new_uri">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_query_unref()</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </return-value>
+ </constructor>
+ <method name="add_allocation_meta"
+ c:identifier="gst_query_add_allocation_meta">
+ <doc xml:space="preserve">Add @api with @params as one of the supported metadata API to @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">the metadata API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">API specific parameters</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_allocation_param"
+ c:identifier="gst_query_add_allocation_param">
+ <doc xml:space="preserve">Add @allocator and its @params as a supported memory allocator.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the memory allocator</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstAllocationParams</doc>
+ <type name="AllocationParams" c:type="const GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_allocation_pool"
+ c:identifier="gst_query_add_allocation_pool">
+ <doc xml:space="preserve">Set the pool parameters in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_ALLOCATION.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="pool"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer size</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the min buffers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="max_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the max buffers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_buffering_range"
+ c:identifier="gst_query_add_buffering_range">
+ <doc xml:space="preserve">Set the buffering-ranges array field in @query. The current last
+start position of the array should be inferior to @start.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if the range was added or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_BUFFERING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">start position of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">stop position of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_scheduling_mode"
+ c:identifier="gst_query_add_scheduling_mode">
+ <doc xml:space="preserve">Add @mode as one of the supported scheduling modes to @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SCHEDULING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadMode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_allocation_meta"
+ c:identifier="gst_query_find_allocation_meta">
+ <doc xml:space="preserve">Check if @query has metadata @api set. When this function returns %TRUE,
+@index will contain the index where the requested API and the parameters
+can be found.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @api is in the list of metadata.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">the metadata API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="index"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_n_allocation_metas"
+ c:identifier="gst_query_get_n_allocation_metas">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the
+meta API array of the query's structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the metadata API array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_n_allocation_params"
+ c:identifier="gst_query_get_n_allocation_params">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the
+allocator params array of the query's structure.
+
+If no memory allocator is specified, the downstream element can handle
+the default memory allocator. The first memory allocator in the query
+should be generic and allow mapping to system memory, all following
+allocators should be ordered by preference with the preferred one first.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the allocator array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_n_allocation_pools"
+ c:identifier="gst_query_get_n_allocation_pools">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the
+pool array of the query's structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the pool array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_n_buffering_ranges"
+ c:identifier="gst_query_get_n_buffering_ranges">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the
+buffered-ranges array of the query's structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the range array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_BUFFERING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_n_scheduling_modes"
+ c:identifier="gst_query_get_n_scheduling_modes">
+ <doc xml:space="preserve">Retrieve the number of values currently stored in the
+scheduling mode array of the query's structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the scheduling mode array size as a #guint.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SCHEDULING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_structure" c:identifier="gst_query_get_structure">
+ <doc xml:space="preserve">Get the structure of a query.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GstStructure of the query. The
+ structure is still owned by the query and will therefore be freed when the
+ query is unreffed.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_scheduling_mode"
+ c:identifier="gst_query_has_scheduling_mode">
+ <doc xml:space="preserve">Check if @query has scheduling mode set.
+
+&gt; When checking if upstream supports pull mode, it is usually not
+&gt; enough to just check for GST_PAD_MODE_PULL with this function, you
+&gt; also want to check whether the scheduling flags returned by
+&gt; gst_query_parse_scheduling() have the seeking flag set (meaning
+&gt; random access is supported, not only sequential pulls).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @mode is in the list of scheduling modes.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SCHEDULING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the scheduling mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_scheduling_mode_with_flags"
+ c:identifier="gst_query_has_scheduling_mode_with_flags">
+ <doc xml:space="preserve">Check if @query has scheduling mode set and @flags is set in
+query scheduling flags.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @mode is in the list of scheduling modes
+ and @flags are compatible with query flags.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SCHEDULING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the scheduling mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstSchedulingFlags</doc>
+ <type name="SchedulingFlags" c:type="GstSchedulingFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_accept_caps"
+ c:identifier="gst_query_parse_accept_caps">
+ <doc xml:space="preserve">Get the caps from @query. The caps remains valid as long as @query remains
+valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to parse</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the caps</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_accept_caps_result"
+ c:identifier="gst_query_parse_accept_caps_result">
+ <doc xml:space="preserve">Parse the result from @query and store in @result.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ACCEPT_CAPS type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="result"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_allocation"
+ c:identifier="gst_query_parse_allocation">
+ <doc xml:space="preserve">Parse an allocation query, writing the requested caps in @caps and
+whether a pool is needed in @need_pool, if the respective parameters
+are non-%NULL.
+
+Pool details can be retrieved using gst_query_get_n_allocation_pools() and
+gst_query_parse_nth_allocation_pool().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ <parameter name="need_pool"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Whether a #GstBufferPool is needed</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffering_percent"
+ c:identifier="gst_query_parse_buffering_percent">
+ <doc xml:space="preserve">Get the percentage of buffered data. This is a value between 0 and 100.
+The @busy indicator is %TRUE when the buffering is in progress.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_BUFFERING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="busy"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if buffering is busy, or %NULL</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="percent"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a buffering percent, or %NULL</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffering_range"
+ c:identifier="gst_query_parse_buffering_range">
+ <doc xml:space="preserve">Parse an available query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-%NULL</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_BUFFERING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the format to set for the @segment_start
+ and @segment_end values, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the start to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="stop"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the stop to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="estimated_total"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">estimated total amount of download
+ time remaining in milliseconds, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_buffering_stats"
+ c:identifier="gst_query_parse_buffering_stats">
+ <doc xml:space="preserve">Extracts the buffering stats values from @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_BUFFERING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="mode"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a buffering mode, or %NULL</doc>
+ <type name="BufferingMode" c:type="GstBufferingMode*"/>
+ </parameter>
+ <parameter name="avg_in"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the average input rate, or %NULL</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="avg_out"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the average output rat, or %NULL</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="buffering_left"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">amount of buffering time left in
+ milliseconds, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_caps" c:identifier="gst_query_parse_caps">
+ <doc xml:space="preserve">Get the filter from the caps @query. The caps remains valid as long as
+@query remains valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to parse</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="filter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the caps filter</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_caps_result"
+ c:identifier="gst_query_parse_caps_result">
+ <doc xml:space="preserve">Get the caps result from @query. The caps remains valid as long as
+@query remains valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to parse</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the caps</doc>
+ <type name="Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_context"
+ c:identifier="gst_query_parse_context"
+ version="1.2">
+ <doc xml:space="preserve">Get the context from the context @query. The context remains valid as long as
+@query remains valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to parse</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="context"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to store the #GstContext</doc>
+ <type name="Context" c:type="GstContext**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_context_type"
+ c:identifier="gst_query_parse_context_type"
+ version="1.2">
+ <doc xml:space="preserve">Parse a context type from an existing GST_QUERY_CONTEXT query.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if the parsing succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_CONTEXT type query</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="context_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the context type, or %NULL</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_convert" c:identifier="gst_query_parse_convert">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="src_format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the #GstFormat of the
+ source value, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="src_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the source value, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="dest_format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the #GstFormat of the
+ destination value, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="dest_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the destination value,
+ or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_duration" c:identifier="gst_query_parse_duration">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the #GstFormat of the duration
+ value, or %NULL.</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the total duration, or %NULL.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_latency" c:identifier="gst_query_parse_latency">
+ <doc xml:space="preserve">Parse a latency query answer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="live"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">storage for live or %NULL</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="min_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the min latency or %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the max latency or %NULL</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_n_formats" c:identifier="gst_query_parse_n_formats">
+ <doc xml:space="preserve">Parse the number of formats in the formats @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="n_formats"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the number of formats in this query.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_allocation_meta"
+ c:identifier="gst_query_parse_nth_allocation_meta">
+ <doc xml:space="preserve">Parse an available query and get the metadata API
+at @index of the metadata API array.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GType of the metadata API at @index.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the metadata API array to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">API specific parameters</doc>
+ <type name="Structure" c:type="const GstStructure**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_allocation_param"
+ c:identifier="gst_query_parse_nth_allocation_param">
+ <doc xml:space="preserve">Parse an available query and get the allocator and its params
+at @index of the allocator array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the allocator array to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">variable to hold the result</doc>
+ <type name="Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters for the allocator</doc>
+ <type name="AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_allocation_pool"
+ c:identifier="gst_query_parse_nth_allocation_pool">
+ <doc xml:space="preserve">Get the pool parameters in @query.
+
+Unref @pool with gst_object_unref() when it's not needed any more.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_ALLOCATION.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">index to parse</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pool"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool**"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the buffer size</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="min_buffers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the min buffers</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="max_buffers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the max buffers</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_buffering_range"
+ c:identifier="gst_query_parse_nth_buffering_range">
+ <doc xml:space="preserve">Parse an available query and get the start and stop values stored
+at the @index of the buffered ranges array.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if the parsing succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_BUFFERING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the buffered-ranges array to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the start position to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="stop"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the stop position to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_format"
+ c:identifier="gst_query_parse_nth_format">
+ <doc xml:space="preserve">Parse the format query and retrieve the @nth format from it into
+@format. If the list contains less elements than @nth, @format will be
+set to GST_FORMAT_UNDEFINED.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth format to retrieve.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the nth format</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_nth_scheduling_mode"
+ c:identifier="gst_query_parse_nth_scheduling_mode">
+ <doc xml:space="preserve">Parse an available query and get the scheduling mode
+at @index of the scheduling modes array.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPadMode of the scheduling mode at @index.</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SCHEDULING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the scheduling modes array to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_position" c:identifier="gst_query_parse_position">
+ <doc xml:space="preserve">Parse a position query, writing the format into @format, and the position
+into @cur, if the respective parameters are non-%NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the #GstFormat of the
+ position values (may be %NULL)</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="cur"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the current position (may be %NULL)</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_scheduling"
+ c:identifier="gst_query_parse_scheduling">
+ <doc xml:space="preserve">Set the scheduling properties.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_SCHEDULING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="flags"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GstSchedulingFlags</doc>
+ <type name="SchedulingFlags" c:type="GstSchedulingFlags*"/>
+ </parameter>
+ <parameter name="minsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the suggested minimum size of pull requests</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="maxsize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the suggested maximum size of pull requests:</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="align"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the suggested alignment of pull requests</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_seeking" c:identifier="gst_query_parse_seeking">
+ <doc xml:space="preserve">Parse a seeking query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-%NULL</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_SEEKING type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the format to set for the @segment_start
+ and @segment_end values, or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="seekable"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the seekable flag to set, or %NULL</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="segment_start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the segment_start to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="segment_end"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the segment_end to set, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_segment" c:identifier="gst_query_parse_segment">
+ <doc xml:space="preserve">Parse a segment query answer. Any of @rate, @format, @start_value, and
+@stop_value may be %NULL, which will cause this value to be omitted.
+
+See gst_query_set_segment() for an explanation of the function arguments.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the rate of the segment, or %NULL</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="format"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the #GstFormat of the values,
+ or %NULL</doc>
+ <type name="Format" c:type="GstFormat*"/>
+ </parameter>
+ <parameter name="start_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the start value, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="stop_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the stop value, or %NULL</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_uri" c:identifier="gst_query_parse_uri">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="uri"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the current URI
+ (may be %NULL)</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_uri_redirection"
+ c:identifier="gst_query_parse_uri_redirection"
+ version="1.2">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="uri"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the redirect URI
+ (may be %NULL)</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_uri_redirection_permanent"
+ c:identifier="gst_query_parse_uri_redirection_permanent"
+ version="1.4">
+ <doc xml:space="preserve">Parse an URI query, and set @permanent to %TRUE if there is a redirection
+and it should be considered permanent. If a redirection is permanent,
+applications should update their internal storage of the URI, otherwise
+they should make all future requests to the original URI.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="permanent"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if the URI redirection is permanent
+ (may be %NULL)</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_nth_allocation_meta"
+ c:identifier="gst_query_remove_nth_allocation_meta">
+ <doc xml:space="preserve">Remove the metadata API at @index of the metadata API array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the metadata API array to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_nth_allocation_param"
+ c:identifier="gst_query_remove_nth_allocation_param"
+ version="1.2">
+ <doc xml:space="preserve">Remove the allocation param at @index of the allocation param array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the allocation param array to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_nth_allocation_pool"
+ c:identifier="gst_query_remove_nth_allocation_pool"
+ version="1.2">
+ <doc xml:space="preserve">Remove the allocation pool at @index of the allocation pool array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the allocation pool array to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_accept_caps_result"
+ c:identifier="gst_query_set_accept_caps_result">
+ <doc xml:space="preserve">Set @result as the result for the @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ACCEPT_CAPS type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="result" transfer-ownership="none">
+ <doc xml:space="preserve">the result to set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_buffering_percent"
+ c:identifier="gst_query_set_buffering_percent">
+ <doc xml:space="preserve">Set the percentage of buffered data. This is a value between 0 and 100.
+The @busy indicator is %TRUE when the buffering is in progress.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_BUFFERING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="busy" transfer-ownership="none">
+ <doc xml:space="preserve">if buffering is busy</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="percent" transfer-ownership="none">
+ <doc xml:space="preserve">a buffering percent</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_buffering_range"
+ c:identifier="gst_query_set_buffering_range">
+ <doc xml:space="preserve">Set the available query result fields in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format to set for the @start and @stop values</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">the stop to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="estimated_total" transfer-ownership="none">
+ <doc xml:space="preserve">estimated total amount of download time remaining in
+ milliseconds</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_buffering_stats"
+ c:identifier="gst_query_set_buffering_stats">
+ <doc xml:space="preserve">Configures the buffering stats values in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_BUFFERING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a buffering mode</doc>
+ <type name="BufferingMode" c:type="GstBufferingMode"/>
+ </parameter>
+ <parameter name="avg_in" transfer-ownership="none">
+ <doc xml:space="preserve">the average input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="avg_out" transfer-ownership="none">
+ <doc xml:space="preserve">the average output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="buffering_left" transfer-ownership="none">
+ <doc xml:space="preserve">amount of buffering time left in milliseconds</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_caps_result" c:identifier="gst_query_set_caps_result">
+ <doc xml:space="preserve">Set the @caps result in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to use</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the caps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_context"
+ c:identifier="gst_query_set_context"
+ version="1.2">
+ <doc xml:space="preserve">Answer a context query by setting the requested context.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery with query type GST_QUERY_CONTEXT</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">the requested #GstContext</doc>
+ <type name="Context" c:type="GstContext*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_convert" c:identifier="gst_query_set_convert">
+ <doc xml:space="preserve">Answer a convert query by setting the requested values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <doc xml:space="preserve">the source value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">the destination #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_value" transfer-ownership="none">
+ <doc xml:space="preserve">the destination value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_duration" c:identifier="gst_query_set_duration">
+ <doc xml:space="preserve">Answer a duration query by setting the requested value in the given format.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat for the duration</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the stream</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_formats"
+ c:identifier="gst_query_set_formats"
+ introspectable="0">
+ <doc xml:space="preserve">Set the formats query result fields in @query. The number of formats passed
+must be equal to @n_formats.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="n_formats" transfer-ownership="none">
+ <doc xml:space="preserve">the number of formats to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">A number of @GstFormats equal to @n_formats.</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_formatsv" c:identifier="gst_query_set_formatsv">
+ <doc xml:space="preserve">Set the formats query result fields in @query. The number of formats passed
+in the @formats array must be equal to @n_formats.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="n_formats" transfer-ownership="none">
+ <doc xml:space="preserve">the number of formats to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="formats" transfer-ownership="none">
+ <doc xml:space="preserve">an array containing @n_formats
+ @GstFormat values.</doc>
+ <array length="0" zero-terminated="0" c:type="GstFormat*">
+ <type name="Format" c:type="GstFormat"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_query_set_latency">
+ <doc xml:space="preserve">Answer a latency query by setting the requested values in the given format.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="live" transfer-ownership="none">
+ <doc xml:space="preserve">if there is a live element upstream</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="min_latency" transfer-ownership="none">
+ <doc xml:space="preserve">the minimal latency of the upstream elements</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max_latency" transfer-ownership="none">
+ <doc xml:space="preserve">the maximal latency of the upstream elements</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_nth_allocation_param"
+ c:identifier="gst_query_set_nth_allocation_param">
+ <doc xml:space="preserve">Parse an available query and get the allocator and its params
+at @index of the allocator array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a GST_QUERY_ALLOCATION type query #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">position in the allocator array to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="allocator"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">new allocator to set</doc>
+ <type name="Allocator" c:type="GstAllocator*"/>
+ </parameter>
+ <parameter name="params"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">parameters for the allocator</doc>
+ <type name="AllocationParams" c:type="const GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_nth_allocation_pool"
+ c:identifier="gst_query_set_nth_allocation_pool">
+ <doc xml:space="preserve">Set the pool parameters in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_ALLOCATION.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">index to modify</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pool"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstBufferPool</doc>
+ <type name="BufferPool" c:type="GstBufferPool*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer size</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the min buffers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="max_buffers" transfer-ownership="none">
+ <doc xml:space="preserve">the max buffers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_position" c:identifier="gst_query_set_position">
+ <doc xml:space="preserve">Answer a position query by setting the requested value in the given format.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery with query type GST_QUERY_POSITION</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the requested #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="cur" transfer-ownership="none">
+ <doc xml:space="preserve">the position to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_scheduling" c:identifier="gst_query_set_scheduling">
+ <doc xml:space="preserve">Set the scheduling properties.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstQuery of type GST_QUERY_SCHEDULING.</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstSchedulingFlags</doc>
+ <type name="SchedulingFlags" c:type="GstSchedulingFlags"/>
+ </parameter>
+ <parameter name="minsize" transfer-ownership="none">
+ <doc xml:space="preserve">the suggested minimum size of pull requests</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="maxsize" transfer-ownership="none">
+ <doc xml:space="preserve">the suggested maximum size of pull requests</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">the suggested alignment of pull requests</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_seeking" c:identifier="gst_query_set_seeking">
+ <doc xml:space="preserve">Set the seeking query result fields in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format to set for the @segment_start and @segment_end values</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="seekable" transfer-ownership="none">
+ <doc xml:space="preserve">the seekable flag to set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="segment_start" transfer-ownership="none">
+ <doc xml:space="preserve">the segment_start to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="segment_end" transfer-ownership="none">
+ <doc xml:space="preserve">the segment_end to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_segment" c:identifier="gst_query_set_segment">
+ <doc xml:space="preserve">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.
+
+@start_value and @stop_value will respectively contain the configured
+playback range start and stop values expressed in @format.
+The values are always between 0 and the duration of the media and
+@start_value &lt;= @stop_value. @rate will contain the playback rate. For
+negative rates, playback will actually happen from @stop_value to
+@start_value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the rate of the segment</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFormat of the segment values (@start_value and @stop_value)</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="start_value" transfer-ownership="none">
+ <doc xml:space="preserve">the start value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop_value" transfer-ownership="none">
+ <doc xml:space="preserve">the stop value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uri" c:identifier="gst_query_set_uri">
+ <doc xml:space="preserve">Answer a URI query by setting the requested URI.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery with query type GST_QUERY_URI</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uri_redirection"
+ c:identifier="gst_query_set_uri_redirection"
+ version="1.2">
+ <doc xml:space="preserve">Answer a URI query by setting the requested URI redirection.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery with query type GST_QUERY_URI</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uri_redirection_permanent"
+ c:identifier="gst_query_set_uri_redirection_permanent"
+ version="1.4">
+ <doc xml:space="preserve">Answer a URI query by setting the requested URI redirection
+to permanent or not.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery with query type %GST_QUERY_URI</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ <parameter name="permanent" transfer-ownership="none">
+ <doc xml:space="preserve">whether the redirect is permanent or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="writable_structure"
+ c:identifier="gst_query_writable_structure">
+ <doc xml:space="preserve">Get the structure of a query. This method should be called with a writable
+@query so that the returned structure is guaranteed to be writable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStructure of the query. The structure is
+ still owned by the query and will therefore be freed when the query
+ is unreffed.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Query" c:type="GstQuery*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="QueryType"
+ glib:type-name="GstQueryType"
+ glib:get-type="gst_query_type_get_type"
+ c:type="GstQueryType">
+ <doc xml:space="preserve">Standard predefined Query types</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_QUERY_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown query type</doc>
+ </member>
+ <member name="position"
+ value="2563"
+ c:identifier="GST_QUERY_POSITION"
+ glib:nick="position">
+ <doc xml:space="preserve">current position in stream</doc>
+ </member>
+ <member name="duration"
+ value="5123"
+ c:identifier="GST_QUERY_DURATION"
+ glib:nick="duration">
+ <doc xml:space="preserve">total duration of the stream</doc>
+ </member>
+ <member name="latency"
+ value="7683"
+ c:identifier="GST_QUERY_LATENCY"
+ glib:nick="latency">
+ <doc xml:space="preserve">latency of stream</doc>
+ </member>
+ <member name="jitter"
+ value="10243"
+ c:identifier="GST_QUERY_JITTER"
+ glib:nick="jitter">
+ <doc xml:space="preserve">current jitter of stream</doc>
+ </member>
+ <member name="rate"
+ value="12803"
+ c:identifier="GST_QUERY_RATE"
+ glib:nick="rate">
+ <doc xml:space="preserve">current rate of the stream</doc>
+ </member>
+ <member name="seeking"
+ value="15363"
+ c:identifier="GST_QUERY_SEEKING"
+ glib:nick="seeking">
+ <doc xml:space="preserve">seeking capabilities</doc>
+ </member>
+ <member name="segment"
+ value="17923"
+ c:identifier="GST_QUERY_SEGMENT"
+ glib:nick="segment">
+ <doc xml:space="preserve">segment start/stop positions</doc>
+ </member>
+ <member name="convert"
+ value="20483"
+ c:identifier="GST_QUERY_CONVERT"
+ glib:nick="convert">
+ <doc xml:space="preserve">convert values between formats</doc>
+ </member>
+ <member name="formats"
+ value="23043"
+ c:identifier="GST_QUERY_FORMATS"
+ glib:nick="formats">
+ <doc xml:space="preserve">query supported formats for convert</doc>
+ </member>
+ <member name="buffering"
+ value="28163"
+ c:identifier="GST_QUERY_BUFFERING"
+ glib:nick="buffering">
+ <doc xml:space="preserve">query available media for efficient seeking.</doc>
+ </member>
+ <member name="custom"
+ value="30723"
+ c:identifier="GST_QUERY_CUSTOM"
+ glib:nick="custom">
+ <doc xml:space="preserve">a custom application or element defined query.</doc>
+ </member>
+ <member name="uri"
+ value="33283"
+ c:identifier="GST_QUERY_URI"
+ glib:nick="uri">
+ <doc xml:space="preserve">query the URI of the source or sink.</doc>
+ </member>
+ <member name="allocation"
+ value="35846"
+ c:identifier="GST_QUERY_ALLOCATION"
+ glib:nick="allocation">
+ <doc xml:space="preserve">the buffer allocation properties</doc>
+ </member>
+ <member name="scheduling"
+ value="38401"
+ c:identifier="GST_QUERY_SCHEDULING"
+ glib:nick="scheduling">
+ <doc xml:space="preserve">the scheduling properties</doc>
+ </member>
+ <member name="accept_caps"
+ value="40963"
+ c:identifier="GST_QUERY_ACCEPT_CAPS"
+ glib:nick="accept-caps">
+ <doc xml:space="preserve">the accept caps query</doc>
+ </member>
+ <member name="caps"
+ value="43523"
+ c:identifier="GST_QUERY_CAPS"
+ glib:nick="caps">
+ <doc xml:space="preserve">the caps query</doc>
+ </member>
+ <member name="drain"
+ value="46086"
+ c:identifier="GST_QUERY_DRAIN"
+ glib:nick="drain">
+ <doc xml:space="preserve">wait till all serialized data is consumed downstream</doc>
+ </member>
+ <member name="context"
+ value="48643"
+ c:identifier="GST_QUERY_CONTEXT"
+ glib:nick="context">
+ <doc xml:space="preserve">query the pipeline-local context from
+ downstream or upstream (since 1.2)</doc>
+ </member>
+ <function name="get_flags" c:identifier="gst_query_type_get_flags">
+ <doc xml:space="preserve">Gets the #GstQueryTypeFlags associated with @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueryTypeFlags.</doc>
+ <type name="QueryTypeFlags" c:type="GstQueryTypeFlags"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueryType</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_name" c:identifier="gst_query_type_get_name">
+ <doc xml:space="preserve">Get a printable name for the given query type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the query.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the query type</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_quark" c:identifier="gst_query_type_to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given query type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the query type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the query type</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <bitfield name="QueryTypeFlags"
+ glib:type-name="GstQueryTypeFlags"
+ glib:get-type="gst_query_type_flags_get_type"
+ c:type="GstQueryTypeFlags">
+ <doc xml:space="preserve">#GstQueryTypeFlags indicate the aspects of the different #GstQueryType
+values. You can get the type flags of a #GstQueryType with the
+gst_query_type_get_flags() function.</doc>
+ <member name="upstream"
+ value="1"
+ c:identifier="GST_QUERY_TYPE_UPSTREAM"
+ glib:nick="upstream">
+ <doc xml:space="preserve">Set if the query can travel upstream.</doc>
+ </member>
+ <member name="downstream"
+ value="2"
+ c:identifier="GST_QUERY_TYPE_DOWNSTREAM"
+ glib:nick="downstream">
+ <doc xml:space="preserve">Set if the query can travel downstream.</doc>
+ </member>
+ <member name="serialized"
+ value="4"
+ c:identifier="GST_QUERY_TYPE_SERIALIZED"
+ glib:nick="serialized">
+ <doc xml:space="preserve">Set if the query should be serialized with data
+ flow.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="Rank"
+ glib:type-name="GstRank"
+ glib:get-type="gst_rank_get_type"
+ c:type="GstRank">
+ <doc xml:space="preserve">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
+@GST_RANK_PRIMARY.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_RANK_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">will be chosen last or not at all</doc>
+ </member>
+ <member name="marginal"
+ value="64"
+ c:identifier="GST_RANK_MARGINAL"
+ glib:nick="marginal">
+ <doc xml:space="preserve">unlikely to be chosen</doc>
+ </member>
+ <member name="secondary"
+ value="128"
+ c:identifier="GST_RANK_SECONDARY"
+ glib:nick="secondary">
+ <doc xml:space="preserve">likely to be chosen</doc>
+ </member>
+ <member name="primary"
+ value="256"
+ c:identifier="GST_RANK_PRIMARY"
+ glib:nick="primary">
+ <doc xml:space="preserve">will be chosen first</doc>
+ </member>
+ </enumeration>
+ <record name="ReferenceTimestampMeta"
+ c:type="GstReferenceTimestampMeta"
+ version="1.14">
+ <doc xml:space="preserve">#GstReferenceTimestampMeta can be used to attach alternative timestamps and
+possibly durations to a #GstBuffer. These are generally not according to
+the pipeline clock and could be e.g. the NTP timestamp when the media was
+captured.
+
+The reference is stored as a #GstCaps in @reference. Examples of valid
+references would be "timestamp/x-drivername-stream" for timestamps that are locally
+generated by some driver named "drivername" when generating the stream,
+e.g. based on a frame counter, or "timestamp/x-ntp, host=pool.ntp.org,
+port=123" for timestamps based on a specific NTP server.</doc>
+ <field name="parent" writable="1">
+ <doc xml:space="preserve">the parent #GstMeta structure</doc>
+ <type name="Meta" c:type="GstMeta"/>
+ </field>
+ <field name="reference" writable="1">
+ <doc xml:space="preserve">identifier for the timestamp reference.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="timestamp" writable="1">
+ <doc xml:space="preserve">timestamp</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="duration" writable="1">
+ <doc xml:space="preserve">duration, or %GST_CLOCK_TIME_NONE</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_reference_timestamp_meta_get_info"
+ version="1.14">
+ <doc xml:space="preserve">Get the global #GstMetaInfo describing the #GstReferenceTimestampMeta meta.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="Registry"
+ c:symbol-prefix="registry"
+ c:type="GstRegistry"
+ parent="Object"
+ glib:type-name="GstRegistry"
+ glib:get-type="gst_registry_get_type"
+ glib:type-struct="RegistryClass">
+ <doc xml:space="preserve">One registry holds the metadata of a set of plugins.
+
+&lt;emphasis role="bold"&gt;Design:&lt;/emphasis&gt;
+
+The #GstRegistry object is a list of plugins and some functions for dealing
+with them. Each #GstPlugin is matched 1-1 with a file on disk, and may or may
+not be loaded at a given time.
+
+The primary source, at all times, of plugin information is each plugin file
+itself. Thus, if an application wants information about a particular plugin,
+or wants to search for a feature that satisfies given criteria, the primary
+means of doing so is to load every plugin and look at the resulting
+information that is gathered in the default registry. Clearly, this is a time
+consuming process, so we cache information in the registry file. The format
+and location of the cache file is internal to gstreamer.
+
+On startup, plugins are searched for in the plugin search path. The following
+locations are checked in this order:
+
+* location from --gst-plugin-path commandline option.
+* the GST_PLUGIN_PATH environment variable.
+* the GST_PLUGIN_SYSTEM_PATH environment variable.
+* default locations (if GST_PLUGIN_SYSTEM_PATH is not set).
+ Those default locations are:
+ `$XDG_DATA_HOME/gstreamer-$GST_API_VERSION/plugins/`
+ and `$prefix/libs/gstreamer-$GST_API_VERSION/`.
+ [$XDG_DATA_HOME](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) defaults to
+ `$HOME/.local/share`.
+
+The registry cache file is loaded from
+`$XDG_CACHE_HOME/gstreamer-$GST_API_VERSION/registry-$ARCH.bin`
+(where $XDG_CACHE_HOME defaults to `$HOME/.cache`) or the file listed in the `GST_REGISTRY`
+env var. One reason to change the registry location is for testing.
+
+For each plugin that is found in the plugin search path, there could be 3
+possibilities for cached information:
+
+ * the cache may not contain information about a given file.
+ * the cache may have stale information.
+ * the cache may have current information.
+
+In the first two cases, the plugin is loaded and the cache updated. In
+addition to these cases, the cache may have entries for plugins that are not
+relevant to the current process. These are marked as not available to the
+current process. If the cache is updated for whatever reason, it is marked
+dirty.
+
+A dirty cache is written out at the end of initialization. Each entry is
+checked to make sure the information is minimally valid. If not, the entry is
+simply dropped.
+
+## Implementation notes:
+
+The "cache" and "registry" are different concepts and can represent
+different sets of plugins. For various reasons, at init time, the cache is
+stored in the default registry, and plugins not relevant to the current
+process are marked with the %GST_PLUGIN_FLAG_CACHED bit. These plugins are
+removed at the end of initialization.</doc>
+ <function name="fork_is_enabled"
+ c:identifier="gst_registry_fork_is_enabled">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if GStreamer will use the child helper process when
+rebuilding the registry.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="fork_set_enabled"
+ c:identifier="gst_registry_fork_set_enabled">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">whether rebuilding the registry can use a temporary child helper process.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get" c:identifier="gst_registry_get">
+ <doc xml:space="preserve">Retrieves the singleton plugin registry. The caller does not own a
+reference on the registry, as it is alive as long as GStreamer is
+initialized.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstRegistry.</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </return-value>
+ </function>
+ <method name="add_feature" c:identifier="gst_registry_add_feature">
+ <doc xml:space="preserve">Add the feature to the registry. The feature-added signal will be emitted.
+
+@feature's reference count will be incremented, and any floating
+reference will be removed (see gst_object_ref_sink())</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to add the plugin to</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">the feature to add</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_plugin" c:identifier="gst_registry_add_plugin">
+ <doc xml:space="preserve">Add the plugin to the registry. The plugin-added signal will be emitted.
+
+@plugin's reference count will be incremented, and any floating
+reference will be removed (see gst_object_ref_sink())</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to add the plugin to</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin to add</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="check_feature_version"
+ c:identifier="gst_registry_check_feature_version">
+ <doc xml:space="preserve">Checks whether a plugin feature by the given name exists in
+@registry and whether its version is at least the
+version required.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the feature could be found and the version is
+the same as the required version or newer, and %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRegistry</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="feature_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the feature (e.g. "oggdemux")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="min_major" transfer-ownership="none">
+ <doc xml:space="preserve">the minimum major version number</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_minor" transfer-ownership="none">
+ <doc xml:space="preserve">the minimum minor version number</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="min_micro" transfer-ownership="none">
+ <doc xml:space="preserve">the minimum micro version number</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="feature_filter" c:identifier="gst_registry_feature_filter">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstPluginFeature. Use gst_plugin_feature_list_free() after usage.
+
+MT safe.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">registry to query</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ scope="call"
+ closure="2">
+ <doc xml:space="preserve">the filter to use</doc>
+ <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
+ </parameter>
+ <parameter name="first" transfer-ownership="none">
+ <doc xml:space="preserve">only return first match</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the filter function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_feature" c:identifier="gst_registry_find_feature">
+ <doc xml:space="preserve">Find the pluginfeature with the given name and type in the registry.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the pluginfeature with the
+ given name and type or %NULL if the plugin was not
+ found. gst_object_unref() after usage.
+
+MT safe.</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to search</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the pluginfeature name to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the pluginfeature type to find</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find_plugin" c:identifier="gst_registry_find_plugin">
+ <doc xml:space="preserve">Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the plugin with the given name
+ or %NULL if the plugin was not found. gst_object_unref() after
+ usage.
+
+MT safe.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to search</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin name to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_feature_list"
+ c:identifier="gst_registry_get_feature_list">
+ <doc xml:space="preserve">Retrieves a #GList of #GstPluginFeature of @type.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstPluginFeature of @type. Use gst_plugin_feature_list_free() after use
+
+MT safe.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRegistry</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GType.</doc>
+ <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 xml:space="preserve">Retrieves a #GList of features of the plugin with name @name.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of
+ #GstPluginFeature. Use gst_plugin_feature_list_free() after usage.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="PluginFeature"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRegistry.</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a plugin name.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_feature_list_cookie"
+ c:identifier="gst_registry_get_feature_list_cookie">
+ <doc xml:space="preserve">Returns the registry's feature list cookie. This changes
+every time a feature is added or removed from the registry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the feature list cookie.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_plugin_list"
+ c:identifier="gst_registry_get_plugin_list">
+ <doc xml:space="preserve">Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of #GstPlugin.
+ Use gst_plugin_list_free() after usage.
+
+MT safe.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Plugin"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to search</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="lookup" c:identifier="gst_registry_lookup">
+ <doc xml:space="preserve">Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstPlugin if found, or
+ %NULL if not. gst_object_unref() after usage.</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to look up in</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="filename" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the file to look up</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="lookup_feature" c:identifier="gst_registry_lookup_feature">
+ <doc xml:space="preserve">Find a #GstPluginFeature with @name in @registry.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstPluginFeature with its refcount incremented,
+ use gst_object_unref() after usage.
+
+MT safe.</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRegistry</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstPluginFeature name</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="plugin_filter" c:identifier="gst_registry_plugin_filter">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GList of #GstPlugin.
+ Use gst_plugin_list_free() after usage.
+
+MT safe.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Plugin"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">registry to query</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ scope="call"
+ closure="2">
+ <doc xml:space="preserve">the filter to use</doc>
+ <type name="PluginFilter" c:type="GstPluginFilter"/>
+ </parameter>
+ <parameter name="first" transfer-ownership="none">
+ <doc xml:space="preserve">only return first match</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the filter function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_feature" c:identifier="gst_registry_remove_feature">
+ <doc xml:space="preserve">Remove the feature from the registry.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to remove the feature from</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">the feature to remove</doc>
+ <type name="PluginFeature" c:type="GstPluginFeature*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_plugin" c:identifier="gst_registry_remove_plugin">
+ <doc xml:space="preserve">Remove the plugin from the registry.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to remove the plugin from</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin to remove</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="scan_path" c:identifier="gst_registry_scan_path">
+ <doc xml:space="preserve">Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if registry changed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="registry" transfer-ownership="none">
+ <doc xml:space="preserve">the registry to add found plugins to</doc>
+ <type name="Registry" c:type="GstRegistry*"/>
+ </instance-parameter>
+ <parameter name="path" transfer-ownership="none">
+ <doc xml:space="preserve">the path to scan</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
+ </field>
+ <glib:signal name="feature-added" when="last">
+ <doc xml:space="preserve">Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="feature" transfer-ownership="none">
+ <doc xml:space="preserve">the feature that has been added</doc>
+ <type name="PluginFeature"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="plugin-added" when="last">
+ <doc xml:space="preserve">Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin" transfer-ownership="none">
+ <doc xml:space="preserve">the plugin that has been added</doc>
+ <type name="Plugin"/>
+ </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>
+ </record>
+ <record name="RegistryPrivate" c:type="GstRegistryPrivate" disguised="1">
+ </record>
+ <enumeration name="ResourceError"
+ glib:type-name="GstResourceError"
+ glib:get-type="gst_resource_error_get_type"
+ c:type="GstResourceError"
+ glib:error-domain="gst-resource-error-quark">
+ <doc xml:space="preserve">Resource errors are for any resource used by an element:
+memory, files, network connections, process space, ...
+They're typically used by source and sink elements.</doc>
+ <member name="failed"
+ value="1"
+ c:identifier="GST_RESOURCE_ERROR_FAILED"
+ glib:nick="failed">
+ <doc xml:space="preserve">a general error which doesn't fit in any other
+category. Make sure you add a custom message to the error call.</doc>
+ </member>
+ <member name="too_lazy"
+ value="2"
+ c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"
+ glib:nick="too-lazy">
+ <doc xml:space="preserve">do not use this except as a placeholder for
+deciding where to go while developing code.</doc>
+ </member>
+ <member name="not_found"
+ value="3"
+ c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"
+ glib:nick="not-found">
+ <doc xml:space="preserve">used when the resource could not be found.</doc>
+ </member>
+ <member name="busy"
+ value="4"
+ c:identifier="GST_RESOURCE_ERROR_BUSY"
+ glib:nick="busy">
+ <doc xml:space="preserve">used when resource is busy.</doc>
+ </member>
+ <member name="open_read"
+ value="5"
+ c:identifier="GST_RESOURCE_ERROR_OPEN_READ"
+ glib:nick="open-read">
+ <doc xml:space="preserve">used when resource fails to open for reading.</doc>
+ </member>
+ <member name="open_write"
+ value="6"
+ c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"
+ glib:nick="open-write">
+ <doc xml:space="preserve">used when resource fails to open for writing.</doc>
+ </member>
+ <member name="open_read_write"
+ value="7"
+ c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"
+ glib:nick="open-read-write">
+ <doc xml:space="preserve">used when resource cannot be opened for
+both reading and writing, or either (but unspecified which).</doc>
+ </member>
+ <member name="close"
+ value="8"
+ c:identifier="GST_RESOURCE_ERROR_CLOSE"
+ glib:nick="close">
+ <doc xml:space="preserve">used when the resource can't be closed.</doc>
+ </member>
+ <member name="read"
+ value="9"
+ c:identifier="GST_RESOURCE_ERROR_READ"
+ glib:nick="read">
+ <doc xml:space="preserve">used when the resource can't be read from.</doc>
+ </member>
+ <member name="write"
+ value="10"
+ c:identifier="GST_RESOURCE_ERROR_WRITE"
+ glib:nick="write">
+ <doc xml:space="preserve">used when the resource can't be written to.</doc>
+ </member>
+ <member name="seek"
+ value="11"
+ c:identifier="GST_RESOURCE_ERROR_SEEK"
+ glib:nick="seek">
+ <doc xml:space="preserve">used when a seek on the resource fails.</doc>
+ </member>
+ <member name="sync"
+ value="12"
+ c:identifier="GST_RESOURCE_ERROR_SYNC"
+ glib:nick="sync">
+ <doc xml:space="preserve">used when a synchronize on the resource fails.</doc>
+ </member>
+ <member name="settings"
+ value="13"
+ c:identifier="GST_RESOURCE_ERROR_SETTINGS"
+ glib:nick="settings">
+ <doc xml:space="preserve">used when settings can't be manipulated on.</doc>
+ </member>
+ <member name="no_space_left"
+ value="14"
+ c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"
+ glib:nick="no-space-left">
+ <doc xml:space="preserve">used when the resource has no space left.</doc>
+ </member>
+ <member name="not_authorized"
+ value="15"
+ c:identifier="GST_RESOURCE_ERROR_NOT_AUTHORIZED"
+ glib:nick="not-authorized">
+ <doc xml:space="preserve">used when the resource can't be opened
+ due to missing authorization.
+ (Since 1.2.4)</doc>
+ </member>
+ <member name="num_errors"
+ value="16"
+ c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"
+ glib:nick="num-errors">
+ <doc xml:space="preserve">the number of resource error types.</doc>
+ </member>
+ <function name="quark" c:identifier="gst_resource_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <constant name="SECOND" value="1000000000" c:type="GST_SECOND">
+ <doc xml:space="preserve">Constant that defines one GStreamer second.</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </constant>
+ <constant name="SEGMENT_FORMAT" value="paB" c:type="GST_SEGMENT_FORMAT">
+ <doc xml:space="preserve">printf format type used to debug GStreamer segments. You can use this in
+combination with GStreamer's debug logging system as well as the functions
+gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
+to pretty-print #GstSegment structures.
+This can only be used on pointers to GstSegment structures.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SEQNUM_INVALID"
+ value="0"
+ c:type="GST_SEQNUM_INVALID"
+ version="1.14">
+ <doc xml:space="preserve">A value which is guaranteed to never be returned by
+gst_util_seqnum_next().
+
+Can be used as a default value in variables used to store seqnum.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="STIME_FORMAT"
+ value="c%"
+ c:type="GST_STIME_FORMAT"
+ version="1.6">
+ <doc xml:space="preserve">A string that can be used in printf-like format strings to display a signed
+#GstClockTimeDiff or #gint64 value in h:m:s format. Use GST_TIME_ARGS() to
+construct the matching arguments.
+
+Example:
+|[
+printf("%" GST_STIME_FORMAT "\n", GST_STIME_ARGS(ts));
+]|</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <record name="Sample"
+ c:type="GstSample"
+ glib:type-name="GstSample"
+ glib:get-type="gst_sample_get_type"
+ c:symbol-prefix="sample">
+ <doc xml:space="preserve">A #GstSample is a small object containing data, a type, timing and
+extra arbitrary information.</doc>
+ <constructor name="new" c:identifier="gst_sample_new">
+ <doc xml:space="preserve">Create a new #GstSample with the provided details.
+
+Free-function: gst_sample_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstSample. gst_sample_unref()
+ after usage.</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstBuffer, or %NULL</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCaps, or %NULL</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="segment"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstSegment, or %NULL</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </parameter>
+ <parameter name="info"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstStructure, or %NULL</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_buffer" c:identifier="gst_sample_get_buffer">
+ <doc xml:space="preserve">Get the buffer associated with @sample</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the buffer of @sample or %NULL
+ when there is no buffer. The buffer remains valid as long as
+ @sample is valid. If you need to hold on to it for longer than
+ that, take a ref to the buffer with gst_buffer_ref().</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_list"
+ c:identifier="gst_sample_get_buffer_list"
+ version="1.6">
+ <doc xml:space="preserve">Get the buffer list associated with @sample</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the buffer list of @sample or %NULL
+ when there is no buffer list. The buffer list remains valid as long as
+ @sample is valid. If you need to hold on to it for longer than
+ that, take a ref to the buffer list with gst_mini_object_ref ().</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_sample_get_caps">
+ <doc xml:space="preserve">Get the caps associated with @sample</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the caps of @sample or %NULL
+ when there is no caps. The caps remain valid as long as @sample is
+ valid. If you need to hold on to the caps for longer than that,
+ take a ref to the caps with gst_caps_ref().</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_info" c:identifier="gst_sample_get_info">
+ <doc xml:space="preserve">Get extra information associated with @sample.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the extra info of @sample.
+ The info remains valid as long as @sample is valid.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_segment" c:identifier="gst_sample_get_segment">
+ <doc xml:space="preserve">Get the segment associated with @sample</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the segment of @sample.
+ The segment remains valid as long as @sample is valid.</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_buffer_list"
+ c:identifier="gst_sample_set_buffer_list"
+ version="1.6">
+ <doc xml:space="preserve">Set the buffer list associated with @sample</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Sample" c:type="GstSample*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="SchedulingFlags"
+ glib:type-name="GstSchedulingFlags"
+ glib:get-type="gst_scheduling_flags_get_type"
+ c:type="GstSchedulingFlags">
+ <doc xml:space="preserve">The different scheduling flags.</doc>
+ <member name="seekable"
+ value="1"
+ c:identifier="GST_SCHEDULING_FLAG_SEEKABLE"
+ glib:nick="seekable">
+ <doc xml:space="preserve">if seeking is possible</doc>
+ </member>
+ <member name="sequential"
+ value="2"
+ c:identifier="GST_SCHEDULING_FLAG_SEQUENTIAL"
+ glib:nick="sequential">
+ <doc xml:space="preserve">if sequential access is recommended</doc>
+ </member>
+ <member name="bandwidth_limited"
+ value="4"
+ c:identifier="GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED"
+ glib:nick="bandwidth-limited">
+ <doc xml:space="preserve">if bandwidth is limited and buffering possible (since 1.2)</doc>
+ </member>
+ </bitfield>
+ <enumeration name="SearchMode"
+ glib:type-name="GstSearchMode"
+ glib:get-type="gst_search_mode_get_type"
+ c:type="GstSearchMode">
+ <doc xml:space="preserve">The different search modes.</doc>
+ <member name="exact"
+ value="0"
+ c:identifier="GST_SEARCH_MODE_EXACT"
+ glib:nick="exact">
+ <doc xml:space="preserve">Only search for exact matches.</doc>
+ </member>
+ <member name="before"
+ value="1"
+ c:identifier="GST_SEARCH_MODE_BEFORE"
+ glib:nick="before">
+ <doc xml:space="preserve">Search for an exact match or the element just before.</doc>
+ </member>
+ <member name="after"
+ value="2"
+ c:identifier="GST_SEARCH_MODE_AFTER"
+ glib:nick="after">
+ <doc xml:space="preserve">Search for an exact match or the element just after.</doc>
+ </member>
+ </enumeration>
+ <bitfield name="SeekFlags"
+ glib:type-name="GstSeekFlags"
+ glib:get-type="gst_seek_flags_get_type"
+ c:type="GstSeekFlags">
+ <doc xml:space="preserve">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't have any indexes
+or timestamp markers in the stream. Specifying this flag might require a
+complete scan of the file in those cases.
+
+When performing a segment seek: after the playback of the segment completes,
+no EOS will be emitted 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 seamless
+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_TRICKMODE 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.
+
+Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to
+request that decoders skip all frames except key units, and
+%GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio
+decoders do no decoding at all, and simple output silence.
+
+The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous
+relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to
+select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified,
+the relevant location is a keyframe. If both flags are specified, the nearest
+of these locations will be selected. If none are specified, the implementation is
+free to select whichever it wants.
+
+The before and after here are in running time, so when playing backwards,
+the next location refers to the one that will played in next, and not the
+one that is located after in the actual source stream.
+
+Also see part-seeking.txt in the GStreamer design documentation for more
+details on the meaning of these flags and the behaviour expected of
+elements that handle them.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_SEEK_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flag</doc>
+ </member>
+ <member name="flush"
+ value="1"
+ c:identifier="GST_SEEK_FLAG_FLUSH"
+ glib:nick="flush">
+ <doc xml:space="preserve">flush pipeline</doc>
+ </member>
+ <member name="accurate"
+ value="2"
+ c:identifier="GST_SEEK_FLAG_ACCURATE"
+ glib:nick="accurate">
+ <doc xml:space="preserve">accurate position is requested, this might
+ be considerably slower for some formats.</doc>
+ </member>
+ <member name="key_unit"
+ value="4"
+ c:identifier="GST_SEEK_FLAG_KEY_UNIT"
+ glib:nick="key-unit">
+ <doc xml:space="preserve">seek to the nearest keyframe. This might be
+ faster but less accurate.</doc>
+ </member>
+ <member name="segment"
+ value="8"
+ c:identifier="GST_SEEK_FLAG_SEGMENT"
+ glib:nick="segment">
+ <doc xml:space="preserve">perform a segment seek.</doc>
+ </member>
+ <member name="trickmode"
+ value="16"
+ c:identifier="GST_SEEK_FLAG_TRICKMODE"
+ glib:nick="trickmode">
+ <doc xml:space="preserve">when doing fast forward or fast reverse playback, allow
+ elements to skip frames instead of generating all
+ frames. (Since 1.6)</doc>
+ </member>
+ <member name="skip"
+ value="16"
+ c:identifier="GST_SEEK_FLAG_SKIP"
+ glib:nick="skip">
+ <doc xml:space="preserve">Deprecated backward compatibility flag, replaced
+ by %GST_SEEK_FLAG_TRICKMODE</doc>
+ </member>
+ <member name="snap_before"
+ value="32"
+ c:identifier="GST_SEEK_FLAG_SNAP_BEFORE"
+ glib:nick="snap-before">
+ <doc xml:space="preserve">go to a location before the requested position,
+ if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before
+ the requested position the one at or before the seek target.</doc>
+ </member>
+ <member name="snap_after"
+ value="64"
+ c:identifier="GST_SEEK_FLAG_SNAP_AFTER"
+ glib:nick="snap-after">
+ <doc xml:space="preserve">go to a location after the requested position,
+ if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the
+ requested position.</doc>
+ </member>
+ <member name="snap_nearest"
+ value="96"
+ c:identifier="GST_SEEK_FLAG_SNAP_NEAREST"
+ glib:nick="snap-nearest">
+ <doc xml:space="preserve">go to a position near the requested position,
+ if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest
+ to the requested position, if both keyframes are at an equal
+ distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE.</doc>
+ </member>
+ <member name="trickmode_key_units"
+ value="128"
+ c:identifier="GST_SEEK_FLAG_TRICKMODE_KEY_UNITS"
+ glib:nick="trickmode-key-units">
+ <doc xml:space="preserve">when doing fast forward or fast reverse
+ playback, request that elements only decode keyframes
+ and skip all other content, for formats that have
+ keyframes. (Since 1.6)</doc>
+ </member>
+ <member name="trickmode_no_audio"
+ value="256"
+ c:identifier="GST_SEEK_FLAG_TRICKMODE_NO_AUDIO"
+ glib:nick="trickmode-no-audio">
+ <doc xml:space="preserve">when doing fast forward or fast reverse
+ playback, request that audio decoder elements skip
+ decoding and output only gap events or silence. (Since 1.6)</doc>
+ </member>
+ </bitfield>
+ <enumeration name="SeekType"
+ glib:type-name="GstSeekType"
+ glib:get-type="gst_seek_type_get_type"
+ c:type="GstSeekType">
+ <doc xml:space="preserve">The different types of seek events. When constructing a seek event with
+gst_event_new_seek() or when doing gst_segment_do_seek ().</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_SEEK_TYPE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no change in position is required</doc>
+ </member>
+ <member name="set"
+ value="1"
+ c:identifier="GST_SEEK_TYPE_SET"
+ glib:nick="set">
+ <doc xml:space="preserve">absolute position is requested</doc>
+ </member>
+ <member name="end"
+ value="2"
+ c:identifier="GST_SEEK_TYPE_END"
+ glib:nick="end">
+ <doc xml:space="preserve">relative position to duration is requested</doc>
+ </member>
+ </enumeration>
+ <record name="Segment"
+ c:type="GstSegment"
+ glib:type-name="GstSegment"
+ glib:get-type="gst_segment_get_type"
+ c:symbol-prefix="segment">
+ <doc xml:space="preserve">This helper structure holds the relevant values for tracking the region of
+interest in a media file, called a segment.
+
+The structure can be used for two purposes:
+
+ * performing seeks (handling seek events)
+ * tracking playback regions (handling newsegment events)
+
+The segment is usually configured by the application with a seek event which
+is propagated upstream and eventually handled by an element that performs the seek.
+
+The configured segment is then propagated back downstream with a newsegment event.
+This information is then used to clip media to the segment boundaries.
+
+A segment structure is initialized with gst_segment_init(), which takes a #GstFormat
+that will be used as the format of the segment values. The segment will be configured
+with a start value of 0 and a stop/duration of -1, which is undefined. The default
+rate and applied_rate is 1.0.
+
+The public duration field contains the duration of the segment. When using
+the segment for seeking, the start and time members should normally be left
+to their default 0 value. The stop position is left to -1 unless explicitly
+configured to a different value after a seek event.
+
+The current position in the segment should be set by changing the position
+member in the structure.
+
+For elements that perform seeks, the current segment should be updated with the
+gst_segment_do_seek() and the values from the seek event. This method will update
+all the segment fields. The position field will contain the new playback position.
+If the start_type was different from GST_SEEK_TYPE_NONE, playback continues from
+the position position, possibly with updated flags or rate.
+
+For elements that want to use #GstSegment to track the playback region,
+update the segment fields with the information from the newsegment event.
+The gst_segment_clip() method can be used to check and clip
+the media data to the segment boundaries.
+
+For elements that want to synchronize to the pipeline clock, gst_segment_to_running_time()
+can be used to convert a timestamp to a value that can be used to synchronize
+to the clock. This function takes into account the base as well as
+any rate or applied_rate conversions.
+
+For elements that need to perform operations on media data in stream_time,
+gst_segment_to_stream_time() can be used to convert a timestamp and the segment
+info to stream time (which is always between 0 and the duration of the stream).</doc>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">flags for this segment</doc>
+ <type name="SegmentFlags" c:type="GstSegmentFlags"/>
+ </field>
+ <field name="rate" writable="1">
+ <doc xml:space="preserve">the playback rate of the segment</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="applied_rate" writable="1">
+ <doc xml:space="preserve">the already applied rate to the segment</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">the format of the segment values</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </field>
+ <field name="base" writable="1">
+ <doc xml:space="preserve">the running time (plus elapsed time, see offset) of the segment start</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">the amount (in buffer timestamps) that has already been elapsed in
+ the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="start" writable="1">
+ <doc xml:space="preserve">the start of the segment in buffer timestamp time (PTS)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="stop" writable="1">
+ <doc xml:space="preserve">the stop of the segment in buffer timestamp time (PTS)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="time" writable="1">
+ <doc xml:space="preserve">the stream time of the segment start</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="position" writable="1">
+ <doc xml:space="preserve">the buffer timestamp position in the segment (used internally by
+ elements such as sources, demuxers or parsers to track progress)</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="duration" writable="1">
+ <doc xml:space="preserve">the duration of the stream</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <constructor name="new" c:identifier="gst_segment_new">
+ <doc xml:space="preserve">Allocate a new #GstSegment structure and initialize it using
+gst_segment_init().
+
+Free-function: gst_segment_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstSegment, free with gst_segment_free().</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </return-value>
+ </constructor>
+ <method name="clip" c:identifier="gst_segment_clip">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the given @start and @stop times fall partially or
+ completely in @segment, %FALSE if the values are completely outside
+ of the segment.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">the stop position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="clip_start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the clipped start position in the segment</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="clip_stop"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the clipped stop position in the segment</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_segment_copy">
+ <doc xml:space="preserve">Create a copy of given @segment.
+
+Free-function: gst_segment_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstSegment, free with gst_segment_free().</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy_into" c:identifier="gst_segment_copy_into">
+ <doc xml:space="preserve">Copy the contents of @src into @dest.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="do_seek" c:identifier="gst_segment_do_seek">
+ <doc xml:space="preserve">Update the segment structure with the field values of a seek event (see
+gst_event_new_seek()).
+
+After calling this method, the segment field position 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 position 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),
+@stop is ignored and @segment position is unmodified.
+
+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.
+
+@update will be set to %TRUE if a seek should be performed to the segment
+position field. This field can be %FALSE if, for example, only the @rate
+has been changed but not the playback position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the seek could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </instance-parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the rate of the segment.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the segment flags for the segment</doc>
+ <type name="SeekFlags" c:type="GstSeekFlags"/>
+ </parameter>
+ <parameter name="start_type" transfer-ownership="none">
+ <doc xml:space="preserve">the seek method</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the seek start value</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="stop_type" transfer-ownership="none">
+ <doc xml:space="preserve">the seek method</doc>
+ <type name="SeekType" c:type="GstSeekType"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">the seek stop value</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="update"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">boolean holding whether position was updated.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_segment_free">
+ <doc xml:space="preserve">Free the allocated segment @segment.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSegment</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_segment_init">
+ <doc xml:space="preserve">The start/position fields 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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_equal"
+ c:identifier="gst_segment_is_equal"
+ version="1.6">
+ <doc xml:space="preserve">Checks for two segments being equal. Equality here is defined
+as perfect equality, including floating point values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the segments are equal, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="s0" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="s1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="offset_running_time"
+ c:identifier="gst_segment_offset_running_time"
+ version="1.2.3">
+ <doc xml:space="preserve">Adjust the values in @segment so that @offset is applied to all
+future running-time calculations.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the segment could be updated successfully. If %FALSE is
+returned, @offset is not in @segment.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset to apply in the segment</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="position_from_running_time"
+ c:identifier="gst_segment_position_from_running_time"
+ version="1.8">
+ <doc xml:space="preserve">Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment for @running_time. This function returns
+-1 when @running_time is -1 or when it is not inside @segment.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="position_from_running_time_full"
+ c:identifier="gst_segment_position_from_running_time_full"
+ version="1.8">
+ <doc xml:space="preserve">Translate @running_time to the segment position using the currently configured
+segment. Compared to gst_segment_position_from_running_time() this function can
+return negative segment position.
+
+This function is typically used by elements that need to synchronize buffers
+against the clock or each other.
+
+@running_time can be any value and the result of this function for values
+outside of the segment is extrapolated.
+
+When 1 is returned, @running_time resulted in a positive position returned
+in @position.
+
+When this function returns -1, the returned @position should be negated
+to get the real negative segment position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a 1 or -1 on success, 0 on failure.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running-time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the resulting position in the segment</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="position_from_stream_time"
+ c:identifier="gst_segment_position_from_stream_time"
+ version="1.8">
+ <doc xml:space="preserve">Convert @stream_time into a position in the segment so that
+gst_segment_to_stream_time() with that position returns @stream_time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment for @stream_time. This function returns
+-1 when @stream_time is -1 or when it is not inside @segment.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="stream_time" transfer-ownership="none">
+ <doc xml:space="preserve">the stream_time in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="position_from_stream_time_full"
+ c:identifier="gst_segment_position_from_stream_time_full"
+ version="1.8">
+ <doc xml:space="preserve">Translate @stream_time to the segment position using the currently configured
+segment. Compared to gst_segment_position_from_stream_time() this function can
+return negative segment position.
+
+This function is typically used by elements that need to synchronize buffers
+against the clock or each other.
+
+@stream_time can be any value and the result of this function for values outside
+of the segment is extrapolated.
+
+When 1 is returned, @stream_time resulted in a positive position returned
+in @position.
+
+When this function returns -1, the returned @position should be negated
+to get the real negative segment position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a 1 or -1 on success, 0 on failure.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="stream_time" transfer-ownership="none">
+ <doc xml:space="preserve">the stream-time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the resulting position in the segment</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_running_time"
+ c:identifier="gst_segment_set_running_time">
+ <doc xml:space="preserve">Adjust the start/stop and base values of @segment such that the next valid
+buffer will be one with @running_time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the segment could be updated successfully. If %FALSE is
+returned, @running_time is -1 or not in @segment.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_position"
+ c:identifier="gst_segment_to_position"
+ deprecated="1">
+ <doc xml:space="preserve">Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.</doc>
+ <doc-deprecated xml:space="preserve">Use gst_segment_position_from_running_time() instead.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment for @running_time. This function returns
+-1 when @running_time is -1 or when it is not inside @segment.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_running_time"
+ c:identifier="gst_segment_to_running_time">
+ <doc xml:space="preserve">Translate @position to the total running time using the currently configured
+segment. 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 running 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the position as the total running time or -1 when an invalid position
+was given.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_running_time_full"
+ c:identifier="gst_segment_to_running_time_full"
+ version="1.6">
+ <doc xml:space="preserve">Translate @position to the total running time using the currently configured
+segment. Compared to gst_segment_to_running_time() this function can return
+negative running-time.
+
+This function is typically used by elements that need to synchronize buffers
+against the clock or eachother.
+
+@position can be any value and the result of this function for values outside
+of the segment is extrapolated.
+
+When 1 is returned, @position resulted in a positive running-time returned
+in @running_time.
+
+When this function returns -1, the returned @running_time should be negated
+to get the real negative running time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a 1 or -1 on success, 0 on failure.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result running-time</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_stream_time"
+ c:identifier="gst_segment_to_stream_time"
+ version="1.8">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the position in stream_time or -1 when an invalid position
+was given.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_stream_time_full"
+ c:identifier="gst_segment_to_stream_time_full"
+ version="1.8">
+ <doc xml:space="preserve">Translate @position to the total stream time using the currently configured
+segment. Compared to gst_segment_to_stream_time() this function can return
+negative stream-time.
+
+This function is typically used by elements that need to synchronize buffers
+against the clock or eachother.
+
+@position can be any value and the result of this function for values outside
+of the segment is extrapolated.
+
+When 1 is returned, @position resulted in a positive stream-time returned
+in @stream_time.
+
+When this function returns -1, the returned @stream_time should be negated
+to get the real negative stream time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a 1 or -1 on success, 0 on failure.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSegment structure.</doc>
+ <type name="Segment" c:type="const GstSegment*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format of the segment.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the position in the segment</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="stream_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result stream-time</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="SegmentFlags"
+ glib:type-name="GstSegmentFlags"
+ glib:get-type="gst_segment_flags_get_type"
+ c:type="GstSegmentFlags">
+ <doc xml:space="preserve">Flags for the GstSegment structure. Currently mapped to the corresponding
+values of the seek flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_SEGMENT_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="reset"
+ value="1"
+ c:identifier="GST_SEGMENT_FLAG_RESET"
+ glib:nick="reset">
+ <doc xml:space="preserve">reset the pipeline running_time to the segment
+ running_time</doc>
+ </member>
+ <member name="trickmode"
+ value="16"
+ c:identifier="GST_SEGMENT_FLAG_TRICKMODE"
+ glib:nick="trickmode">
+ <doc xml:space="preserve">perform skip playback (Since 1.6)</doc>
+ </member>
+ <member name="skip"
+ value="16"
+ c:identifier="GST_SEGMENT_FLAG_SKIP"
+ glib:nick="skip">
+ <doc xml:space="preserve">Deprecated backward compatibility flag, replaced
+ by @GST_SEGMENT_FLAG_TRICKMODE</doc>
+ </member>
+ <member name="segment"
+ value="8"
+ c:identifier="GST_SEGMENT_FLAG_SEGMENT"
+ glib:nick="segment">
+ <doc xml:space="preserve">send SEGMENT_DONE instead of EOS</doc>
+ </member>
+ <member name="trickmode_key_units"
+ value="128"
+ c:identifier="GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS"
+ glib:nick="trickmode-key-units">
+ <doc xml:space="preserve">Decode only keyframes, where
+ possible (Since 1.6)</doc>
+ </member>
+ <member name="trickmode_no_audio"
+ value="256"
+ c:identifier="GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO"
+ glib:nick="trickmode-no-audio">
+ <doc xml:space="preserve">Do not decode any audio, where
+ possible (Since 1.6)</doc>
+ </member>
+ </bitfield>
+ <bitfield name="StackTraceFlags"
+ version="1.12"
+ glib:type-name="GstStackTraceFlags"
+ glib:get-type="gst_stack_trace_flags_get_type"
+ c:type="GstStackTraceFlags">
+ <member name="full"
+ value="1"
+ c:identifier="GST_STACK_TRACE_SHOW_FULL"
+ glib:nick="full">
+ <doc xml:space="preserve">Try to retrieve as much information as
+ possible when getting the stack trace</doc>
+ </member>
+ </bitfield>
+ <enumeration name="State"
+ glib:type-name="GstState"
+ glib:get-type="gst_state_get_type"
+ c:type="GstState">
+ <doc xml:space="preserve">The possible states an element can be in. States can be changed using
+gst_element_set_state() and checked using gst_element_get_state().</doc>
+ <member name="void_pending"
+ value="0"
+ c:identifier="GST_STATE_VOID_PENDING"
+ glib:nick="void-pending">
+ <doc xml:space="preserve">no pending state.</doc>
+ </member>
+ <member name="null"
+ value="1"
+ c:identifier="GST_STATE_NULL"
+ glib:nick="null">
+ <doc xml:space="preserve">the NULL state or initial state of an element.</doc>
+ </member>
+ <member name="ready"
+ value="2"
+ c:identifier="GST_STATE_READY"
+ glib:nick="ready">
+ <doc xml:space="preserve">the element is ready to go to PAUSED.</doc>
+ </member>
+ <member name="paused"
+ value="3"
+ c:identifier="GST_STATE_PAUSED"
+ glib:nick="paused">
+ <doc xml:space="preserve">the element is PAUSED, it is ready to accept and
+ process data. Sink elements however only accept one
+ buffer and then block.</doc>
+ </member>
+ <member name="playing"
+ value="4"
+ c:identifier="GST_STATE_PLAYING"
+ glib:nick="playing">
+ <doc xml:space="preserve">the element is PLAYING, the #GstClock is running and
+ the data is flowing.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="StateChange"
+ glib:type-name="GstStateChange"
+ glib:get-type="gst_state_change_get_type"
+ c:type="GstStateChange">
+ <doc xml:space="preserve">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.</doc>
+ <member name="null_to_ready"
+ value="10"
+ c:identifier="GST_STATE_CHANGE_NULL_TO_READY"
+ glib:nick="null-to-ready">
+ <doc xml:space="preserve">state change from NULL to READY.
+ * 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.
+ * The element opens the device (in case feature need to be probed).</doc>
+ </member>
+ <member name="ready_to_paused"
+ value="19"
+ c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"
+ glib:nick="ready-to-paused">
+ <doc xml:space="preserve">state change from READY to PAUSED.
+ * The element pads are activated in order to receive data in PAUSED.
+ Streaming threads are started.
+ * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete
+ the state change when they have enough information. It is a requirement
+ for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change
+ when they receive the first buffer or %GST_EVENT_EOS (preroll).
+ Sinks also block the dataflow when in PAUSED.
+ * A pipeline resets the running_time to 0.
+ * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data.</doc>
+ </member>
+ <member name="paused_to_playing"
+ value="28"
+ c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"
+ glib:nick="paused-to-playing">
+ <doc xml:space="preserve">state change from PAUSED to PLAYING.
+ * Most elements ignore this state change.
+ * The pipeline selects a #GstClock and distributes this to all the children
+ before setting them to PLAYING. This means that it is only allowed to
+ synchronize on the #GstClock in the PLAYING state.
+ * The pipeline uses the #GstClock and the running_time to calculate the
+ base_time. The base_time is distributed to all children when performing
+ the state change.
+ * Sink elements stop blocking on the preroll buffer or event and start
+ rendering the data.
+ * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed
+ to post %GST_MESSAGE_EOS when not in the PLAYING state.
+ * While streaming in PAUSED or PLAYING elements can create and remove
+ sometimes pads.
+ * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS.</doc>
+ </member>
+ <member name="playing_to_paused"
+ value="35"
+ c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"
+ glib:nick="playing-to-paused">
+ <doc xml:space="preserve">state change from PLAYING to PAUSED.
+ * Most elements ignore this state change.
+ * The pipeline calculates the running_time based on the last selected
+ #GstClock and the base_time. It stores this information to continue
+ playback when going back to the PLAYING state.
+ * Sinks unblock any #GstClock wait calls.
+ * When a sink does not have a pending buffer to play, it returns
+ #GST_STATE_CHANGE_ASYNC from this state change and completes the state
+ change when it receives a new buffer or an %GST_EVENT_EOS.
+ * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted
+ when going back to the PLAYING state. The EOS messages are queued in
+ #GstBin containers.
+ * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL.</doc>
+ </member>
+ <member name="paused_to_ready"
+ value="26"
+ c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"
+ glib:nick="paused-to-ready">
+ <doc xml:space="preserve">state change from PAUSED to READY.
+ * Sinks unblock any waits in the preroll.
+ * Elements unblock any waits on devices
+ * Chain or get_range functions return %GST_FLOW_FLUSHING.
+ * The element pads are deactivated so that streaming becomes impossible and
+ all streaming threads are stopped.
+ * The sink forgets all negotiated formats
+ * Elements remove all sometimes pads</doc>
+ </member>
+ <member name="ready_to_null"
+ value="17"
+ c:identifier="GST_STATE_CHANGE_READY_TO_NULL"
+ glib:nick="ready-to-null">
+ <doc xml:space="preserve">state change from READY to NULL.
+ * Elements close devices
+ * Elements reset any internal state.</doc>
+ </member>
+ <member name="null_to_null"
+ value="9"
+ c:identifier="GST_STATE_CHANGE_NULL_TO_NULL"
+ glib:nick="null-to-null">
+ <doc xml:space="preserve">state change from NULL to NULL. (Since 1.14)</doc>
+ </member>
+ <member name="ready_to_ready"
+ value="18"
+ c:identifier="GST_STATE_CHANGE_READY_TO_READY"
+ glib:nick="ready-to-ready">
+ <doc xml:space="preserve">state change from READY to READY,
+This might happen when going to PAUSED asynchronously failed, in that case
+elements should make sure they are in a proper, coherent READY state. (Since 1.14)</doc>
+ </member>
+ <member name="paused_to_paused"
+ value="27"
+ c:identifier="GST_STATE_CHANGE_PAUSED_TO_PAUSED"
+ glib:nick="paused-to-paused">
+ <doc xml:space="preserve">state change from PAUSED to PAUSED.
+This might happen when elements were in PLAYING state and 'lost state',
+they should make sure to go back to real 'PAUSED' state (prerolling for example). (Since 1.14)</doc>
+ </member>
+ <member name="playing_to_playing"
+ value="36"
+ c:identifier="GST_STATE_CHANGE_PLAYING_TO_PLAYING"
+ glib:nick="playing-to-playing">
+ <doc xml:space="preserve">state change from PLAYING to PLAYING. (Since 1.14)</doc>
+ </member>
+ <function name="get_name"
+ c:identifier="gst_state_change_get_name"
+ version="1.14">
+ <doc xml:space="preserve">Gets a string representing the given state transition.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string with the name of the state
+ result.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="transition" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStateChange to get the name of.</doc>
+ <type name="StateChange" c:type="GstStateChange"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="StateChangeReturn"
+ glib:type-name="GstStateChangeReturn"
+ glib:get-type="gst_state_change_return_get_type"
+ c:type="GstStateChangeReturn">
+ <doc xml:space="preserve">The possible return values from a state change function such as
+gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure.</doc>
+ <member name="failure"
+ value="0"
+ c:identifier="GST_STATE_CHANGE_FAILURE"
+ glib:nick="failure">
+ <doc xml:space="preserve">the state change failed</doc>
+ </member>
+ <member name="success"
+ value="1"
+ c:identifier="GST_STATE_CHANGE_SUCCESS"
+ glib:nick="success">
+ <doc xml:space="preserve">the state change succeeded</doc>
+ </member>
+ <member name="async"
+ value="2"
+ c:identifier="GST_STATE_CHANGE_ASYNC"
+ glib:nick="async">
+ <doc xml:space="preserve">the state change will happen asynchronously</doc>
+ </member>
+ <member name="no_preroll"
+ value="3"
+ c:identifier="GST_STATE_CHANGE_NO_PREROLL"
+ glib:nick="no-preroll">
+ <doc xml:space="preserve">the state change succeeded but the element
+ cannot produce data in %GST_STATE_PAUSED.
+ This typically happens with live sources.</doc>
+ </member>
+ </enumeration>
+ <record name="StaticCaps" c:type="GstStaticCaps">
+ <doc xml:space="preserve">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.</doc>
+ <field name="caps" writable="1">
+ <doc xml:space="preserve">the cached #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="string" writable="1">
+ <doc xml:space="preserve">a string describing a caps</doc>
+ <type name="utf8" c:type="const char*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="cleanup" c:identifier="gst_static_caps_cleanup">
+ <doc xml:space="preserve">Clean up the cached caps contained in @static_caps.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="static_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStaticCaps to clean</doc>
+ <type name="StaticCaps" c:type="GstStaticCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get" c:identifier="gst_static_caps_get">
+ <doc xml:space="preserve">Converts a #GstStaticCaps to a #GstCaps.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a pointer to the #GstCaps. 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.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="static_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStaticCaps to convert</doc>
+ <type name="StaticCaps" c:type="GstStaticCaps*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
+ <doc xml:space="preserve">Structure describing the #GstStaticPadTemplate.</doc>
+ <field name="name_template" writable="1">
+ <doc xml:space="preserve">the name of the template</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="direction" writable="1">
+ <doc xml:space="preserve">the direction of the template</doc>
+ <type name="PadDirection" c:type="GstPadDirection"/>
+ </field>
+ <field name="presence" writable="1">
+ <doc xml:space="preserve">the presence of the template</doc>
+ <type name="PadPresence" c:type="GstPadPresence"/>
+ </field>
+ <field name="static_caps" writable="1">
+ <doc xml:space="preserve">the caps of the template.</doc>
+ <type name="StaticCaps" c:type="GstStaticCaps"/>
+ </field>
+ <method name="get" c:identifier="gst_static_pad_template_get">
+ <doc xml:space="preserve">Converts a #GstStaticPadTemplate into a #GstPadTemplate.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstPadTemplate.</doc>
+ <type name="PadTemplate" c:type="GstPadTemplate*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad_template" transfer-ownership="none">
+ <doc xml:space="preserve">the static pad template</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_static_pad_template_get_caps">
+ <doc xml:space="preserve">Gets the capabilities of the static pad template.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps 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.</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="templ" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStaticPadTemplate to get capabilities of.</doc>
+ <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="Stream"
+ c:symbol-prefix="stream"
+ c:type="GstStream"
+ version="1.10"
+ parent="Object"
+ glib:type-name="GstStream"
+ glib:get-type="gst_stream_get_type"
+ glib:type-struct="StreamClass">
+ <doc xml:space="preserve">A high-level object representing a single stream. It might be backed, or
+not, by an actual flow of data in a pipeline (#GstPad).
+
+A #GstStream does not care about data changes (such as decoding, encoding,
+parsing,...) as long as the underlying data flow corresponds to the same
+high-level flow (ex: a certain audio track).
+
+A #GstStream contains all the information pertinent to a stream, such as
+stream-id, tags, caps, type, ...
+
+Elements can subclass a #GstStream for internal usage (to contain information
+pertinent to streams of data).</doc>
+ <constructor name="new" c:identifier="gst_stream_new" version="1.10">
+ <doc xml:space="preserve">Create a new #GstStream for the given @stream_id, @caps, @type
+and @flags</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </return-value>
+ <parameters>
+ <parameter name="stream_id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the id for the new stream. If %NULL,
+a new one will be automatically generated</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps of the stream</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStreamType of the stream</doc>
+ <type name="StreamType" c:type="GstStreamType"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstStreamFlags of the stream</doc>
+ <type name="StreamFlags" c:type="GstStreamFlags"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_caps"
+ c:identifier="gst_stream_get_caps"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve the caps for @stream, if any</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GstCaps for @stream</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_flags"
+ c:identifier="gst_stream_get_stream_flags"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve the current stream flags for @stream</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstStreamFlags for @stream</doc>
+ <type name="StreamFlags" c:type="GstStreamFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_id"
+ c:identifier="gst_stream_get_stream_id"
+ version="1.10">
+ <doc xml:space="preserve">Returns the stream ID of @stream.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the stream ID of @stream. Only valid
+during the lifetime of @stream.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_type"
+ c:identifier="gst_stream_get_stream_type"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve the stream type for @stream</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstStreamType for @stream</doc>
+ <type name="StreamType" c:type="GstStreamType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tags"
+ c:identifier="gst_stream_get_tags"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve the tags for @stream, if any</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The #GstTagList for @stream</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_caps"
+ c:identifier="gst_stream_set_caps"
+ version="1.10">
+ <doc xml:space="preserve">Set the caps for the #GstStream</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream_flags"
+ c:identifier="gst_stream_set_stream_flags"
+ version="1.10">
+ <doc xml:space="preserve">Set the @flags for the @stream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the flags to set on @stream</doc>
+ <type name="StreamFlags" c:type="GstStreamFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream_type"
+ c:identifier="gst_stream_set_stream_type"
+ version="1.10">
+ <doc xml:space="preserve">Set the stream type of @stream</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ <parameter name="stream_type" transfer-ownership="none">
+ <doc xml:space="preserve">the type to set on @stream</doc>
+ <type name="StreamType" c:type="GstStreamType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tags"
+ c:identifier="gst_stream_set_tags"
+ version="1.10">
+ <doc xml:space="preserve">Set the tags for the #GstStream</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="stream" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="caps" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstCaps of the #GstStream.</doc>
+ <type name="Caps"/>
+ </property>
+ <property name="stream-flags"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="StreamFlags"/>
+ </property>
+ <property name="stream-id"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The unique identifier of the #GstStream. Can only be set at construction
+time.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="stream-type"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The #GstStreamType of the #GstStream. Can only be set at construction time.</doc>
+ <type name="StreamType"/>
+ </property>
+ <property name="tags" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTagList of the #GstStream.</doc>
+ <type name="TagList"/>
+ </property>
+ <field name="object" readable="0" private="1">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="stream_id">
+ <doc xml:space="preserve">The Stream Identifier for this #GstStream</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="StreamPrivate" c:type="GstStreamPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="StreamClass"
+ c:type="GstStreamClass"
+ glib:is-gtype-struct-for="Stream">
+ <doc xml:space="preserve">GstStream class structure</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="StreamCollection"
+ c:symbol-prefix="stream_collection"
+ c:type="GstStreamCollection"
+ version="1.10"
+ parent="Object"
+ glib:type-name="GstStreamCollection"
+ glib:get-type="gst_stream_collection_get_type"
+ glib:type-struct="StreamCollectionClass">
+ <doc xml:space="preserve">A collection of #GstStream that are available.
+
+A #GstStreamCollection will be provided by elements that can make those
+streams available. Applications can use the collection to show the user
+what streams are available by using %gst_stream_collection_get_stream()
+
+Once posted, a #GstStreamCollection is immutable. Updates are made by sending
+a new #GstStreamCollection message, which may or may not share some of
+the #GstStream objects from the collection it replaces. The receiver can check
+the sender of a stream collection message to know which collection is
+obsoleted.
+
+Several elements in a pipeline can provide #GstStreamCollection.
+
+Applications can activate streams from a collection by using the
+#GST_EVENT_SELECT_STREAMS event on a pipeline, bin or element.</doc>
+ <constructor name="new"
+ c:identifier="gst_stream_collection_new"
+ version="1.10">
+ <doc xml:space="preserve">Create a new #GstStreamCollection.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstStreamCollection.</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </return-value>
+ <parameters>
+ <parameter name="upstream_id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The stream id of the parent stream</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="stream_notify">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="collection" transfer-ownership="none">
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </instance-parameter>
+ <parameter name="stream" transfer-ownership="none">
+ <type name="Stream" c:type="GstStream*"/>
+ </parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_stream"
+ c:identifier="gst_stream_collection_add_stream"
+ version="1.10">
+ <doc xml:space="preserve">Add the given @stream to the @collection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @stream was properly added, else %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </instance-parameter>
+ <parameter name="stream" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStream to add</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_size"
+ c:identifier="gst_stream_collection_get_size"
+ version="1.10">
+ <doc xml:space="preserve">Get the number of streams this collection contains</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of streams that @collection contains</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream"
+ c:identifier="gst_stream_collection_get_stream"
+ version="1.10">
+ <doc xml:space="preserve">Retrieve the #GstStream with index @index from the collection.
+
+The caller should not modify the returned #GstStream</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A #GstStream</doc>
+ <type name="Stream" c:type="GstStream*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">Index of the stream to retrieve</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_upstream_id"
+ c:identifier="gst_stream_collection_get_upstream_id"
+ version="1.10">
+ <doc xml:space="preserve">Returns the upstream id of the @collection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The upstream id</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="collection" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamCollection</doc>
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="upstream-id"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="object" readable="0" private="1">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="upstream_id" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="StreamCollectionPrivate"
+ c:type="GstStreamCollectionPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="stream-notify"
+ when="first"
+ no-recurse="1"
+ detailed="1"
+ no-hooks="1">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Stream"/>
+ </parameter>
+ <parameter name="p0" transfer-ownership="none">
+ <type name="GObject.ParamSpec"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="StreamCollectionClass"
+ c:type="GstStreamCollectionClass"
+ glib:is-gtype-struct-for="StreamCollection">
+ <doc xml:space="preserve">GstStreamCollection class structure</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="stream_notify">
+ <callback name="stream_notify">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="collection" transfer-ownership="none">
+ <type name="StreamCollection" c:type="GstStreamCollection*"/>
+ </parameter>
+ <parameter name="stream" transfer-ownership="none">
+ <type name="Stream" c:type="GstStream*"/>
+ </parameter>
+ <parameter name="pspec" transfer-ownership="none">
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="StreamCollectionPrivate"
+ c:type="GstStreamCollectionPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="StreamError"
+ glib:type-name="GstStreamError"
+ glib:get-type="gst_stream_error_get_type"
+ c:type="GstStreamError"
+ glib:error-domain="gst-stream-error-quark">
+ <doc xml:space="preserve">Stream errors are for anything related to the stream being processed:
+format errors, media type errors, ...
+They're typically used by decoders, demuxers, converters, ...</doc>
+ <member name="failed"
+ value="1"
+ c:identifier="GST_STREAM_ERROR_FAILED"
+ glib:nick="failed">
+ <doc xml:space="preserve">a general error which doesn't fit in any other
+category. Make sure you add a custom message to the error call.</doc>
+ </member>
+ <member name="too_lazy"
+ value="2"
+ c:identifier="GST_STREAM_ERROR_TOO_LAZY"
+ glib:nick="too-lazy">
+ <doc xml:space="preserve">do not use this except as a placeholder for
+deciding where to go while developing code.</doc>
+ </member>
+ <member name="not_implemented"
+ value="3"
+ c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"
+ glib:nick="not-implemented">
+ <doc xml:space="preserve">use this when you do not want to implement
+this functionality yet.</doc>
+ </member>
+ <member name="type_not_found"
+ value="4"
+ c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"
+ glib:nick="type-not-found">
+ <doc xml:space="preserve">used when the element doesn't know the
+stream's type.</doc>
+ </member>
+ <member name="wrong_type"
+ value="5"
+ c:identifier="GST_STREAM_ERROR_WRONG_TYPE"
+ glib:nick="wrong-type">
+ <doc xml:space="preserve">used when the element doesn't handle this type
+of stream.</doc>
+ </member>
+ <member name="codec_not_found"
+ value="6"
+ c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"
+ glib:nick="codec-not-found">
+ <doc xml:space="preserve">used when there's no codec to handle the
+stream's type.</doc>
+ </member>
+ <member name="decode"
+ value="7"
+ c:identifier="GST_STREAM_ERROR_DECODE"
+ glib:nick="decode">
+ <doc xml:space="preserve">used when decoding fails.</doc>
+ </member>
+ <member name="encode"
+ value="8"
+ c:identifier="GST_STREAM_ERROR_ENCODE"
+ glib:nick="encode">
+ <doc xml:space="preserve">used when encoding fails.</doc>
+ </member>
+ <member name="demux"
+ value="9"
+ c:identifier="GST_STREAM_ERROR_DEMUX"
+ glib:nick="demux">
+ <doc xml:space="preserve">used when demuxing fails.</doc>
+ </member>
+ <member name="mux"
+ value="10"
+ c:identifier="GST_STREAM_ERROR_MUX"
+ glib:nick="mux">
+ <doc xml:space="preserve">used when muxing fails.</doc>
+ </member>
+ <member name="format"
+ value="11"
+ c:identifier="GST_STREAM_ERROR_FORMAT"
+ glib:nick="format">
+ <doc xml:space="preserve">used when the stream is of the wrong format
+(for example, wrong caps).</doc>
+ </member>
+ <member name="decrypt"
+ value="12"
+ c:identifier="GST_STREAM_ERROR_DECRYPT"
+ glib:nick="decrypt">
+ <doc xml:space="preserve">used when the stream is encrypted and can't be
+decrypted because this is not supported by the element.</doc>
+ </member>
+ <member name="decrypt_nokey"
+ value="13"
+ c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"
+ glib:nick="decrypt-nokey">
+ <doc xml:space="preserve">used when the stream is encrypted and
+can't be decrypted because no suitable key is available.</doc>
+ </member>
+ <member name="num_errors"
+ value="14"
+ c:identifier="GST_STREAM_ERROR_NUM_ERRORS"
+ glib:nick="num-errors">
+ <doc xml:space="preserve">the number of stream error types.</doc>
+ </member>
+ <function name="quark" c:identifier="gst_stream_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <bitfield name="StreamFlags"
+ version="1.2"
+ glib:type-name="GstStreamFlags"
+ glib:get-type="gst_stream_flags_get_type"
+ c:type="GstStreamFlags">
+ <member name="none"
+ value="0"
+ c:identifier="GST_STREAM_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">This stream has no special attributes</doc>
+ </member>
+ <member name="sparse"
+ value="1"
+ c:identifier="GST_STREAM_FLAG_SPARSE"
+ glib:nick="sparse">
+ <doc xml:space="preserve">This stream is a sparse stream (e.g. a subtitle
+ stream), data may flow only in irregular intervals with large gaps in
+ between.</doc>
+ </member>
+ <member name="select"
+ value="2"
+ c:identifier="GST_STREAM_FLAG_SELECT"
+ glib:nick="select">
+ <doc xml:space="preserve">This stream should be selected by default. This
+ flag may be used by demuxers to signal that a stream should be selected
+ by default in a playback scenario.</doc>
+ </member>
+ <member name="unselect"
+ value="4"
+ c:identifier="GST_STREAM_FLAG_UNSELECT"
+ glib:nick="unselect">
+ <doc xml:space="preserve">This stream should not be selected by default.
+ This flag may be used by demuxers to signal that a stream should not
+ be selected by default in a playback scenario, but only if explicitly
+ selected by the user (e.g. an audio track for the hard of hearing or
+ a director's commentary track).</doc>
+ </member>
+ </bitfield>
+ <record name="StreamPrivate" c:type="GstStreamPrivate" disguised="1">
+ </record>
+ <enumeration name="StreamStatusType"
+ glib:type-name="GstStreamStatusType"
+ glib:get-type="gst_stream_status_type_get_type"
+ c:type="GstStreamStatusType">
+ <doc xml:space="preserve">The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
+application of new streaming threads and their status.</doc>
+ <member name="create"
+ value="0"
+ c:identifier="GST_STREAM_STATUS_TYPE_CREATE"
+ glib:nick="create">
+ <doc xml:space="preserve">A new thread need to be created.</doc>
+ </member>
+ <member name="enter"
+ value="1"
+ c:identifier="GST_STREAM_STATUS_TYPE_ENTER"
+ glib:nick="enter">
+ <doc xml:space="preserve">a thread entered its loop function</doc>
+ </member>
+ <member name="leave"
+ value="2"
+ c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"
+ glib:nick="leave">
+ <doc xml:space="preserve">a thread left its loop function</doc>
+ </member>
+ <member name="destroy"
+ value="3"
+ c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"
+ glib:nick="destroy">
+ <doc xml:space="preserve">a thread is destroyed</doc>
+ </member>
+ <member name="start"
+ value="8"
+ c:identifier="GST_STREAM_STATUS_TYPE_START"
+ glib:nick="start">
+ <doc xml:space="preserve">a thread is started</doc>
+ </member>
+ <member name="pause"
+ value="9"
+ c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"
+ glib:nick="pause">
+ <doc xml:space="preserve">a thread is paused</doc>
+ </member>
+ <member name="stop"
+ value="10"
+ c:identifier="GST_STREAM_STATUS_TYPE_STOP"
+ glib:nick="stop">
+ <doc xml:space="preserve">a thread is stopped</doc>
+ </member>
+ </enumeration>
+ <bitfield name="StreamType"
+ version="1.10"
+ glib:type-name="GstStreamType"
+ glib:get-type="gst_stream_type_get_type"
+ c:type="GstStreamType">
+ <doc xml:space="preserve">#GstStreamType describes a high level classification set for
+flows of data in #GstStream objects.
+
+Note that this is a flag, and therefore users should not assume it
+will be a single value. Do not use the equality operator for checking
+whether a stream is of a certain type.</doc>
+ <member name="unknown"
+ value="1"
+ c:identifier="GST_STREAM_TYPE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">The stream is of unknown (unclassified) type.</doc>
+ </member>
+ <member name="audio"
+ value="2"
+ c:identifier="GST_STREAM_TYPE_AUDIO"
+ glib:nick="audio">
+ <doc xml:space="preserve">The stream is of audio data</doc>
+ </member>
+ <member name="video"
+ value="4"
+ c:identifier="GST_STREAM_TYPE_VIDEO"
+ glib:nick="video">
+ <doc xml:space="preserve">The stream carries video data</doc>
+ </member>
+ <member name="container"
+ value="8"
+ c:identifier="GST_STREAM_TYPE_CONTAINER"
+ glib:nick="container">
+ <doc xml:space="preserve">The stream is a muxed container type</doc>
+ </member>
+ <member name="text"
+ value="16"
+ c:identifier="GST_STREAM_TYPE_TEXT"
+ glib:nick="text">
+ <doc xml:space="preserve">The stream contains subtitle / subpicture data.</doc>
+ </member>
+ <function name="get_name"
+ c:identifier="gst_stream_type_get_name"
+ version="1.10">
+ <doc xml:space="preserve">Get a descriptive string for a given #GstStreamType</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A string describing the stream type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="stype" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamType</doc>
+ <type name="StreamType" c:type="GstStreamType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </bitfield>
+ <record name="Structure"
+ c:type="GstStructure"
+ glib:type-name="GstStructure"
+ glib:get-type="gst_structure_get_type"
+ c:symbol-prefix="structure">
+ <doc xml:space="preserve">A #GstStructure is a collection of key/value pairs. The keys are expressed
+as GQuarks and the values can be of any GType.
+
+In addition to the key/value pairs, a #GstStructure also has a name. The name
+starts with a letter and can be filled by letters, numbers and any of "/-_.:".
+
+#GstStructure is used by various GStreamer subsystems to store information
+in a flexible and extensible way. A #GstStructure does not have a refcount
+because it usually is part of a higher level object such as #GstCaps,
+#GstMessage, #GstEvent, #GstQuery. It provides a means to enforce mutability
+using the refcount of the parent with the gst_structure_set_parent_refcount()
+method.
+
+A #GstStructure can be created with gst_structure_new_empty() or
+gst_structure_new(), which both take a name and an optional set of
+key/value pairs along with the types of the values.
+
+Field values can be changed with gst_structure_set_value() or
+gst_structure_set().
+
+Field values can be retrieved with gst_structure_get_value() or the more
+convenient gst_structure_get_*() functions.
+
+Fields can be removed with gst_structure_remove_field() or
+gst_structure_remove_fields().
+
+Strings in structures must be ASCII or UTF-8 encoded. Other encodings are
+not allowed. Strings may be %NULL however.
+
+Be aware that the current #GstCaps / #GstStructure serialization into string
+has limited support for nested #GstCaps / #GstStructure fields. It can only
+support one level of nesting. Using more levels will lead to unexpected
+behavior when using serialization features, such as gst_caps_to_string() or
+gst_value_serialize() and their counterparts.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the GType of a structure</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="name" readable="0" private="1">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_structure_new"
+ introspectable="0">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of new structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="firstfield" transfer-ownership="none">
+ <doc xml:space="preserve">name of first field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_empty" c:identifier="gst_structure_new_empty">
+ <doc xml:space="preserve">Creates a new, empty #GstStructure with the given @name.
+
+See gst_structure_set_name() for constraints on the @name parameter.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of new structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_string"
+ c:identifier="gst_structure_new_from_string"
+ version="1.2">
+ <doc xml:space="preserve">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.
+
+The current implementation of serialization will lead to unexpected results
+when there are nested #GstCaps / #GstStructure deeper than one level.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstStructure or %NULL
+ when the string could not be parsed. Free with
+ gst_structure_free() after use.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of a #GstStructure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_id"
+ c:identifier="gst_structure_new_id"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstStructure with the given name as a GQuark, followed by
+fieldname quark, GType, argument(s) "triplets" in the same format as
+gst_structure_id_set(). Basically a convenience wrapper around
+gst_structure_new_id_empty() and gst_structure_id_set().
+
+The last variable argument must be %NULL (or 0).
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name_quark" transfer-ownership="none">
+ <doc xml:space="preserve">name of new structure</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="field_quark" transfer-ownership="none">
+ <doc xml:space="preserve">the GQuark for the name of the field to set</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_id_empty"
+ c:identifier="gst_structure_new_id_empty">
+ <doc xml:space="preserve">Creates a new, empty #GstStructure with the given name as a GQuark.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="quark" transfer-ownership="none">
+ <doc xml:space="preserve">name of new structure</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_valist"
+ c:identifier="gst_structure_new_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstStructure with the given @name. Structure fields
+are set according to the varargs in a manner similar to
+gst_structure_new().
+
+See gst_structure_set_name() for constraints on the @name parameter.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of new structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="firstfield" transfer-ownership="none">
+ <doc xml:space="preserve">name of first field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">variable argument list</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="can_intersect" c:identifier="gst_structure_can_intersect">
+ <doc xml:space="preserve">Tries intersecting @struct1 and @struct2 and reports whether the result
+would not be empty.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if intersection would not be empty</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="struct1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="struct2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_structure_copy">
+ <doc xml:space="preserve">Duplicates a #GstStructure and all its fields and values.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstStructure.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure to duplicate</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="filter_and_map_in_place"
+ c:identifier="gst_structure_filter_and_map_in_place"
+ version="1.6">
+ <doc xml:space="preserve">Calls the provided function once for each field in the #GstStructure. In
+contrast to gst_structure_foreach(), the function may modify the fields.
+In contrast to gst_structure_map_in_place(), the field is removed from
+the structure if %FALSE is returned from the function.
+The structure must be mutable.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="StructureFilterMapFunc"
+ c:type="GstStructureFilterMapFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate" c:identifier="gst_structure_fixate">
+ <doc xml:space="preserve">Fixate all values in @structure using gst_value_fixate().
+@structure will be modified in-place and should be writable.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field" c:identifier="gst_structure_fixate_field">
+ <doc xml:space="preserve">Fixates a #GstStructure by changing the given field with its fixated value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure field could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field_boolean"
+ c:identifier="gst_structure_fixate_field_boolean">
+ <doc xml:space="preserve">Fixates a #GstStructure by changing the given @field_name field to the given
+@target boolean if that field is not fixed yet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the target value of the fixation</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field_nearest_double"
+ c:identifier="gst_structure_fixate_field_nearest_double">
+ <doc xml:space="preserve">Fixates a #GstStructure by changing the given field to the nearest
+double to @target that is a subset of the existing field.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the target value of the fixation</doc>
+ <type name="gdouble" c:type="double"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field_nearest_fraction"
+ c:identifier="gst_structure_fixate_field_nearest_fraction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="target_numerator" transfer-ownership="none">
+ <doc xml:space="preserve">The numerator of the target value of the fixation</doc>
+ <type name="gint" c:type="const gint"/>
+ </parameter>
+ <parameter name="target_denominator" transfer-ownership="none">
+ <doc xml:space="preserve">The denominator of the target value of the fixation</doc>
+ <type name="gint" c:type="const gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field_nearest_int"
+ c:identifier="gst_structure_fixate_field_nearest_int">
+ <doc xml:space="preserve">Fixates a #GstStructure by changing the given field to the nearest
+integer to @target that is a subset of the existing field.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the target value of the fixation</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fixate_field_string"
+ c:identifier="gst_structure_fixate_field_string">
+ <doc xml:space="preserve">Fixates a #GstStructure by changing the given @field_name field to the given
+@target string if that field is not fixed yet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure could be fixated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field_name" transfer-ownership="none">
+ <doc xml:space="preserve">a field in @structure</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the target value of the fixation</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="gst_structure_foreach">
+ <doc xml:space="preserve">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()
+and gst_structure_filter_and_map_in_place().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the supplied function returns %TRUE For each of the fields,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="StructureForeachFunc"
+ c:type="GstStructureForeachFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_structure_free">
+ <doc xml:space="preserve">Frees a #GstStructure and all its fields and values. The structure must not
+have a parent when this function is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstStructure to free</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get" c:identifier="gst_structure_get" introspectable="0">
+ <doc xml:space="preserve">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 receive a new reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will receive a copy which you will need to
+release with either g_free() or the suitable function for the boxed type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if there was a problem reading any of the fields (e.g.
+ because the field requested did not exist, or was of a type other
+ than the type specified), otherwise %TRUE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="first_fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the first field to read</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_array" c:identifier="gst_structure_get_array">
+ <doc xml:space="preserve">This is useful in language bindings where unknown #GValue types are not
+supported. This function will convert the %GST_TYPE_ARRAY and
+%GST_TYPE_LIST into a newly allocated #GValueArray and return it through
+@array. Be aware that this is slower then getting the #GValue directly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GValueArray</doc>
+ <type name="GObject.ValueArray" c:type="GValueArray**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_boolean" c:identifier="gst_structure_get_boolean">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a boolean, this
+function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #gboolean to set</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_clock_time"
+ c:identifier="gst_structure_get_clock_time">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a #GstClockTime, this
+function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GstClockTime to set</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date" c:identifier="gst_structure_get_date">
+ <doc xml:space="preserve">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
+should be freed with g_date_free() when no longer needed (note: this is
+inconsistent with e.g. gst_structure_get_string() which doesn't return a
+copy of the string).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a data, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GDate to set</doc>
+ <type name="GLib.Date" c:type="GDate**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date_time" c:identifier="gst_structure_get_date_time">
+ <doc xml:space="preserve">Sets the datetime pointed to by @value corresponding to the datetime 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 reference of the datetime which
+should be unreffed with gst_date_time_unref() when no longer needed
+(note: this is inconsistent with e.g. gst_structure_get_string()
+which doesn't return a copy of the string).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a data, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GstDateTime to set</doc>
+ <type name="DateTime" c:type="GstDateTime**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_double" c:identifier="gst_structure_get_double">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a double, this
+function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a gdouble to set</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_enum" c:identifier="gst_structure_get_enum">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain an enum of the given
+type, this function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="enumtype" transfer-ownership="none">
+ <doc xml:space="preserve">the enum type of a field</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to an int to set</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_field_type"
+ c:identifier="gst_structure_get_field_type">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue of the field</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_flagset"
+ c:identifier="gst_structure_get_flagset"
+ version="1.6">
+ <doc xml:space="preserve">Read the GstFlagSet flags and mask out of the structure into the
+provided pointers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the values could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a GstFlagSet, this
+function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value_flags"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a guint for the flags field</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="value_mask"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a guint for the mask field</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_fraction" c:identifier="gst_structure_get_fraction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the values could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a GstFraction, this
+function returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value_numerator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to an int to set</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="value_denominator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to an int to set</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int" c:identifier="gst_structure_get_int">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to an int to set</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64"
+ c:identifier="gst_structure_get_int64"
+ version="1.4">
+ <doc xml:space="preserve">Sets the #gint64 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a #gint64, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #gint64 to set</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_list" c:identifier="gst_structure_get_list">
+ <doc xml:space="preserve">This is useful in language bindings where unknown #GValue types are not
+supported. This function will convert the %GST_TYPE_ARRAY and
+%GST_TYPE_LIST into a newly allocated GValueArray and return it through
+@array. Be aware that this is slower then getting the #GValue directly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.
+
+Since 1.12</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GValueArray</doc>
+ <type name="GObject.ValueArray" c:type="GValueArray**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_structure_get_name">
+ <doc xml:space="preserve">Get the name of @structure as a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the structure.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name_id" c:identifier="gst_structure_get_name_id">
+ <doc xml:space="preserve">Get the name of @structure as a GQuark.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark representing the name of the structure.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_string" c:identifier="gst_structure_get_string">
+ <doc xml:space="preserve">Finds the field corresponding to @fieldname, and returns the string
+contained in the field'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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer to the string or %NULL when the
+field did not exist or did not contain a string.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint" c:identifier="gst_structure_get_uint">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a uint, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a uint to set</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64"
+ c:identifier="gst_structure_get_uint64"
+ version="1.4">
+ <doc xml:space="preserve">Sets the #guint64 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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be set correctly. If there was no field
+with @fieldname or the existing field did not contain a #guint64, this function
+returns %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #guint64 to set</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_valist"
+ c:identifier="gst_structure_get_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+valist-variant of gst_structure_get(). Look at the documentation of
+gst_structure_get() for more details.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, or %FALSE if there was a problem reading any of the fields</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="first_fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the first field to read</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_value" c:identifier="gst_structure_get_value">
+ <doc xml:space="preserve">Get the value of the field with name @fieldname.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GValue corresponding to the field with the given
+name.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to get</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_field" c:identifier="gst_structure_has_field">
+ <doc xml:space="preserve">Check if @structure contains a field named @fieldname.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure contains a field with the given name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_field_typed"
+ c:identifier="gst_structure_has_field_typed">
+ <doc xml:space="preserve">Check if @structure contains a field named @fieldname and with GType @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure contains a field with the given name and type</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the type of a value</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_name" c:identifier="gst_structure_has_name">
+ <doc xml:space="preserve">Checks if the structure has the given name</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @name matches the name of the structure.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">structure name to check for</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_get"
+ c:identifier="gst_structure_id_get"
+ introspectable="0">
+ <doc xml:space="preserve">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'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 receive a new reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will receive a copy which you will need to
+release with either g_free() or the suitable function for the boxed type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if there was a problem reading any of the fields (e.g.
+ because the field requested did not exist, or was of a type other
+ than the type specified), otherwise %TRUE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="first_field_id" transfer-ownership="none">
+ <doc xml:space="preserve">the quark of the first field to read</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_get_valist"
+ c:identifier="gst_structure_id_get_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+valist-variant of gst_structure_id_get(). Look at the documentation of
+gst_structure_id_get() for more details.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, or %FALSE if there was a problem reading any of the fields</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="first_field_id" transfer-ownership="none">
+ <doc xml:space="preserve">the quark of the first field to read</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_get_value" c:identifier="gst_structure_id_get_value">
+ <doc xml:space="preserve">Get the value of the field with GQuark @field.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the #GValue corresponding to the field with the given
+name identifier.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">the #GQuark of the field to get</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_has_field" c:identifier="gst_structure_id_has_field">
+ <doc xml:space="preserve">Check if @structure contains a field named @field.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure contains a field with the given name</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">#GQuark of the field name</doc>
+ <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 xml:space="preserve">Check if @structure contains a field named @field and with GType @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the structure contains a field with the given name and type</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">#GQuark of the field name</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the type of a value</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_set"
+ c:identifier="gst_structure_id_set"
+ introspectable="0">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the GQuark for the name of the field to set</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_set_valist"
+ c:identifier="gst_structure_id_set_valist"
+ introspectable="0">
+ <doc xml:space="preserve">va_list form of gst_structure_id_set().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to set</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_set_value" c:identifier="gst_structure_id_set_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GQuark representing a field</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the new value of the field</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="id_take_value" c:identifier="gst_structure_id_take_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GQuark representing a field</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="full">
+ <doc xml:space="preserve">the new value of the field</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="intersect" c:identifier="gst_structure_intersect">
+ <doc xml:space="preserve">Intersects @struct1 and @struct2 and returns the intersection.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">Intersection of @struct1 and @struct2</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="struct1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="struct2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_equal" c:identifier="gst_structure_is_equal">
+ <doc xml:space="preserve">Tests if the two #GstStructure are equal.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the two structures have the same name and field.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="structure2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure.</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_subset" c:identifier="gst_structure_is_subset">
+ <doc xml:space="preserve">Checks if @subset is a subset of @superset, i.e. has the same
+structure name and for all fields that are existing in @superset,
+@subset has a value that is a subset of the value in @superset.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @subset is a subset of @superset</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="subset" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="superset" transfer-ownership="none">
+ <doc xml:space="preserve">a potentially greater #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map_in_place" c:identifier="gst_structure_map_in_place">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the supplied function returns %TRUE For each of the fields,
+%FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">a function to call for each field</doc>
+ <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="n_fields" c:identifier="gst_structure_n_fields">
+ <doc xml:space="preserve">Get the number of fields in the structure.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of fields in the structure</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="nth_field_name"
+ c:identifier="gst_structure_nth_field_name">
+ <doc xml:space="preserve">Get the name of the given field number, counting from 0 onwards.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the given field number</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index to get the name of</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_all_fields"
+ c:identifier="gst_structure_remove_all_fields">
+ <doc xml:space="preserve">Removes all fields in a GstStructure.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_field" c:identifier="gst_structure_remove_field">
+ <doc xml:space="preserve">Removes the field with the given name. If the field with the given
+name does not exist, the structure is unchanged.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_fields"
+ c:identifier="gst_structure_remove_fields"
+ introspectable="0">
+ <doc xml:space="preserve">Removes the fields with the given names. If a field does not exist, the
+argument is ignored.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">%NULL-terminated list of more fieldnames to remove</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_fields_valist"
+ c:identifier="gst_structure_remove_fields_valist"
+ introspectable="0">
+ <doc xml:space="preserve">va_list form of gst_structure_remove_fields().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">%NULL-terminated list of more fieldnames to remove</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_structure_set" introspectable="0">
+ <doc xml:space="preserve">Parses the variable arguments and sets fields accordingly. Fields that
+weren't already part of the structure are added as needed.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s). The last variable argument should be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_array" c:identifier="gst_structure_set_array">
+ <doc xml:space="preserve">This is useful in language bindings where unknown GValue types are not
+supported. This function will convert a @array to %GST_TYPE_ARRAY and set
+the field specified by @fieldname. Be aware that this is slower then using
+%GST_TYPE_ARRAY in a #GValue directly.
+
+Since 1.12</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to a #GValueArray</doc>
+ <type name="GObject.ValueArray" c:type="const GValueArray*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_list" c:identifier="gst_structure_set_list">
+ <doc xml:space="preserve">This is useful in language bindings where unknown GValue types are not
+supported. This function will convert a @array to %GST_TYPE_ARRAY and set
+the field specified by @fieldname. Be aware that this is slower then using
+%GST_TYPE_ARRAY in a #GValue directly.
+
+Since 1.12</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of a field</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to a #GValueArray</doc>
+ <type name="GObject.ValueArray" c:type="const GValueArray*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_name" c:identifier="gst_structure_set_name">
+ <doc xml:space="preserve">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 "/-_.:".</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the new name of the structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_parent_refcount"
+ c:identifier="gst_structure_set_parent_refcount">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the parent refcount could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="refcount" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the parent's refcount</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_valist"
+ c:identifier="gst_structure_set_valist"
+ introspectable="0">
+ <doc xml:space="preserve">va_list form of gst_structure_set().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="varargs" transfer-ownership="none">
+ <doc xml:space="preserve">variable arguments</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_value" c:identifier="gst_structure_set_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the new value of the field</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_value" c:identifier="gst_structure_take_value">
+ <doc xml:space="preserve">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. The function will take ownership of @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the field to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="full">
+ <doc xml:space="preserve">the new value of the field</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string" c:identifier="gst_structure_to_string">
+ <doc xml:space="preserve">Converts @structure to a human-readable string representation.
+
+For debugging purposes its easier to do something like this:
+|[&lt;!-- language="C" --&gt;
+GST_LOG ("structure is %" GST_PTR_FORMAT, structure);
+]|
+This prints the structure in human readable form.
+
+The current implementation of serialization will lead to unexpected results
+when there are nested #GstCaps / #GstStructure deeper than one level.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to string allocated by g_malloc().
+ g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="from_string" c:identifier="gst_structure_from_string">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstStructure or %NULL
+ when the string could not be parsed. Free with
+ gst_structure_free() after use.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of a #GstStructure.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="end"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1"
+ skip="1">
+ <doc xml:space="preserve">pointer to store the end of the string in.</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="StructureChangeType"
+ glib:type-name="GstStructureChangeType"
+ glib:get-type="gst_structure_change_type_get_type"
+ c:type="GstStructureChangeType">
+ <doc xml:space="preserve">The type of a %GST_MESSAGE_STRUCTURE_CHANGE.</doc>
+ <member name="link"
+ value="0"
+ c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"
+ glib:nick="link">
+ <doc xml:space="preserve">Pad linking is starting or done.</doc>
+ </member>
+ <member name="unlink"
+ value="1"
+ c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"
+ glib:nick="unlink">
+ <doc xml:space="preserve">Pad unlinking is starting or done.</doc>
+ </member>
+ </enumeration>
+ <callback name="StructureFilterMapFunc" c:type="GstStructureFilterMapFunc">
+ <doc xml:space="preserve">A function that will be called in gst_structure_filter_and_map_in_place().
+The function may modify @value, and the value will be removed from
+the structure if %FALSE is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the field should be preserved, %FALSE if it
+should be removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="field_id" transfer-ownership="none">
+ <doc xml:space="preserve">the #GQuark of the field name</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue of the field</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="StructureForeachFunc" c:type="GstStructureForeachFunc">
+ <doc xml:space="preserve">A function that will be called in gst_structure_foreach(). The function may
+not modify @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the foreach operation should continue, %FALSE if
+the foreach operation should stop with %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="field_id" transfer-ownership="none">
+ <doc xml:space="preserve">the #GQuark of the field name</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue of the field</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="StructureMapFunc" c:type="GstStructureMapFunc">
+ <doc xml:space="preserve">A function that will be called in gst_structure_map_in_place(). The function
+may modify @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the map operation should continue, %FALSE if
+the map operation should stop with %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="field_id" transfer-ownership="none">
+ <doc xml:space="preserve">the #GQuark of the field name</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue of the field</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="SystemClock"
+ c:symbol-prefix="system_clock"
+ c:type="GstSystemClock"
+ parent="Clock"
+ glib:type-name="GstSystemClock"
+ glib:get-type="gst_system_clock_get_type"
+ glib:type-struct="SystemClockClass">
+ <doc xml:space="preserve">The GStreamer core provides a GstSystemClock based on the system time.
+Asynchronous callbacks are scheduled from an internal thread.
+
+Clock implementors are encouraged to subclass this systemclock as it
+implements the async notification.
+
+Subclasses can however override all of the important methods for sync and
+async notifications to implement their own callback methods or blocking
+wait operations.</doc>
+ <function name="obtain" c:identifier="gst_system_clock_obtain">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the default clock.
+
+MT safe.</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </return-value>
+ </function>
+ <function name="set_default"
+ c:identifier="gst_system_clock_set_default"
+ version="1.4">
+ <doc xml:space="preserve">Sets the default system clock that can be obtained with
+gst_system_clock_obtain().
+
+This is mostly used for testing and debugging purposes when you
+want to have control over the time reported by the default system
+clock.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="new_clock"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstClock</doc>
+ <type name="Clock" c:type="GstClock*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <property name="clock-type" writable="1" transfer-ownership="none">
+ <type name="ClockType"/>
+ </property>
+ <field name="clock">
+ <type name="Clock" c:type="GstClock"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="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" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="SystemClockPrivate"
+ c:type="GstSystemClockPrivate"
+ disguised="1">
+ </record>
+ <constant name="TAG_ALBUM" value="album" c:type="GST_TAG_ALBUM">
+ <doc xml:space="preserve">album containing this data (string)
+
+The album name as it should be displayed, e.g. 'The Jazz Guitar'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_ARTIST"
+ value="album-artist"
+ c:type="GST_TAG_ALBUM_ARTIST">
+ <doc xml:space="preserve">The artist of the entire album, as it should be displayed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_ARTIST_SORTNAME"
+ value="album-artist-sortname"
+ c:type="GST_TAG_ALBUM_ARTIST_SORTNAME">
+ <doc xml:space="preserve">The artist of the entire album, as it should be sorted.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_GAIN"
+ value="replaygain-album-gain"
+ c:type="GST_TAG_ALBUM_GAIN">
+ <doc xml:space="preserve">album gain in db (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_PEAK"
+ value="replaygain-album-peak"
+ c:type="GST_TAG_ALBUM_PEAK">
+ <doc xml:space="preserve">peak of the album (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_SORTNAME"
+ value="album-sortname"
+ c:type="GST_TAG_ALBUM_SORTNAME">
+ <doc xml:space="preserve">album containing this data, as used for sorting (string)
+
+The album name as it should be sorted, e.g. 'Jazz Guitar, The'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_VOLUME_COUNT"
+ value="album-disc-count"
+ c:type="GST_TAG_ALBUM_VOLUME_COUNT">
+ <doc xml:space="preserve">count of discs inside collection this disc belongs to (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ALBUM_VOLUME_NUMBER"
+ value="album-disc-number"
+ c:type="GST_TAG_ALBUM_VOLUME_NUMBER">
+ <doc xml:space="preserve">disc number inside a collection (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_APPLICATION_DATA"
+ value="application-data"
+ c:type="GST_TAG_APPLICATION_DATA">
+ <doc xml:space="preserve">Arbitrary application data (sample)
+
+Some formats allow applications to add their own arbitrary data
+into files. This data is application dependent.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_APPLICATION_NAME"
+ value="application-name"
+ c:type="GST_TAG_APPLICATION_NAME">
+ <doc xml:space="preserve">Name of the application used to create the media (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ARTIST" value="artist" c:type="GST_TAG_ARTIST">
+ <doc xml:space="preserve">person(s) responsible for the recording (string)
+
+The artist name as it should be displayed, e.g. 'Jimi Hendrix' or
+'The Guitar Heroes'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ARTIST_SORTNAME"
+ value="artist-sortname"
+ c:type="GST_TAG_ARTIST_SORTNAME">
+ <doc xml:space="preserve">person(s) responsible for the recording, as used for sorting (string)
+
+The artist name as it should be sorted, e.g. 'Hendrix, Jimi' or
+'Guitar Heroes, The'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ATTACHMENT"
+ value="attachment"
+ c:type="GST_TAG_ATTACHMENT">
+ <doc xml:space="preserve">generic file attachment (sample) (sample taglist should specify the content
+type and if possible set "filename" to the file name of the
+attachment)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_AUDIO_CODEC"
+ value="audio-codec"
+ c:type="GST_TAG_AUDIO_CODEC">
+ <doc xml:space="preserve">codec the audio data is stored in (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_BEATS_PER_MINUTE"
+ value="beats-per-minute"
+ c:type="GST_TAG_BEATS_PER_MINUTE">
+ <doc xml:space="preserve">number of beats per minute in audio (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_BITRATE" value="bitrate" c:type="GST_TAG_BITRATE">
+ <doc xml:space="preserve">exact or average bitrate in bits/s (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CODEC" value="codec" c:type="GST_TAG_CODEC">
+ <doc xml:space="preserve">codec the data is stored in (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_COMMENT" value="comment" c:type="GST_TAG_COMMENT">
+ <doc xml:space="preserve">free text commenting the data (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_COMPOSER" value="composer" c:type="GST_TAG_COMPOSER">
+ <doc xml:space="preserve">person(s) who composed the recording (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_COMPOSER_SORTNAME"
+ value="composer-sortname"
+ c:type="GST_TAG_COMPOSER_SORTNAME">
+ <doc xml:space="preserve">The composer's name, used for sorting (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CONDUCTOR"
+ value="conductor"
+ c:type="GST_TAG_CONDUCTOR"
+ version="1.8">
+ <doc xml:space="preserve">conductor/performer refinement (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CONTACT" value="contact" c:type="GST_TAG_CONTACT">
+ <doc xml:space="preserve">contact information (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CONTAINER_FORMAT"
+ value="container-format"
+ c:type="GST_TAG_CONTAINER_FORMAT">
+ <doc xml:space="preserve">container format the data is stored in (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_COPYRIGHT"
+ value="copyright"
+ c:type="GST_TAG_COPYRIGHT">
+ <doc xml:space="preserve">copyright notice of the data (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_COPYRIGHT_URI"
+ value="copyright-uri"
+ c:type="GST_TAG_COPYRIGHT_URI">
+ <doc xml:space="preserve">URI to location where copyright details can be found (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DATE" value="date" c:type="GST_TAG_DATE">
+ <doc xml:space="preserve">date the data was created (#GDate structure)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DATE_TIME" value="datetime" c:type="GST_TAG_DATE_TIME">
+ <doc xml:space="preserve">date and time the data was created (#GstDateTime structure)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DESCRIPTION"
+ value="description"
+ c:type="GST_TAG_DESCRIPTION">
+ <doc xml:space="preserve">short text describing the content of the data (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DEVICE_MANUFACTURER"
+ value="device-manufacturer"
+ c:type="GST_TAG_DEVICE_MANUFACTURER">
+ <doc xml:space="preserve">Manufacturer of the device used to create the media (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DEVICE_MODEL"
+ value="device-model"
+ c:type="GST_TAG_DEVICE_MODEL">
+ <doc xml:space="preserve">Model of the device used to create the media (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_DURATION" value="duration" c:type="GST_TAG_DURATION">
+ <doc xml:space="preserve">length in GStreamer time units (nanoseconds) (unsigned 64-bit integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ENCODED_BY"
+ value="encoded-by"
+ c:type="GST_TAG_ENCODED_BY">
+ <doc xml:space="preserve">name of the person or organisation that encoded the file. May contain a
+copyright message if the person or organisation also holds the copyright
+(string)
+
+Note: do not use this field to describe the encoding application. Use
+#GST_TAG_APPLICATION_NAME or #GST_TAG_COMMENT for that.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ENCODER" value="encoder" c:type="GST_TAG_ENCODER">
+ <doc xml:space="preserve">encoder used to encode this stream (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ENCODER_VERSION"
+ value="encoder-version"
+ c:type="GST_TAG_ENCODER_VERSION">
+ <doc xml:space="preserve">version of the encoder used to encode this stream (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_EXTENDED_COMMENT"
+ value="extended-comment"
+ c:type="GST_TAG_EXTENDED_COMMENT">
+ <doc xml:space="preserve">key/value text commenting the data (string)
+
+Must be in the form of 'key=comment' or
+'key[lc]=comment' where 'lc' is an ISO-639
+language code.
+
+This tag is used for unknown Vorbis comment tags,
+unknown APE tags and certain ID3v2 comment fields.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GENRE" value="genre" c:type="GST_TAG_GENRE">
+ <doc xml:space="preserve">genre this data belongs to (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_CAPTURE_DIRECTION"
+ value="geo-location-capture-direction"
+ c:type="GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION">
+ <doc xml:space="preserve">Indicates the direction the device is pointing to when capturing
+a media. It is represented as degrees in floating point representation,
+0 means the geographic north, and increases clockwise (double from 0 to 360)
+
+See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_CITY"
+ value="geo-location-city"
+ c:type="GST_TAG_GEO_LOCATION_CITY">
+ <doc xml:space="preserve">The city (english name) where the media has been produced (string).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_COUNTRY"
+ value="geo-location-country"
+ c:type="GST_TAG_GEO_LOCATION_COUNTRY">
+ <doc xml:space="preserve">The country (english name) where the media has been produced (string).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_ELEVATION"
+ value="geo-location-elevation"
+ c:type="GST_TAG_GEO_LOCATION_ELEVATION">
+ <doc xml:space="preserve">geo elevation of where the media has been recorded or produced in meters
+according to WGS84 (zero is average sea level) (double).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_HORIZONTAL_ERROR"
+ value="geo-location-horizontal-error"
+ c:type="GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR">
+ <doc xml:space="preserve">Represents the expected error on the horizontal positioning in
+meters (double).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_LATITUDE"
+ value="geo-location-latitude"
+ c:type="GST_TAG_GEO_LOCATION_LATITUDE">
+ <doc xml:space="preserve">geo latitude location of where the media has been recorded or produced in
+degrees according to WGS84 (zero at the equator, negative values for southern
+latitudes) (double).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_LONGITUDE"
+ value="geo-location-longitude"
+ c:type="GST_TAG_GEO_LOCATION_LONGITUDE">
+ <doc xml:space="preserve">geo longitude location of where the media has been recorded or produced in
+degrees according to WGS84 (zero at the prime meridian in Greenwich/UK,
+negative values for western longitudes). (double).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_MOVEMENT_DIRECTION"
+ value="geo-location-movement-direction"
+ c:type="GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION">
+ <doc xml:space="preserve">Indicates the movement direction of the device performing the capture
+of a media. It is represented as degrees in floating point representation,
+0 means the geographic north, and increases clockwise (double from 0 to 360)
+
+See also #GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_MOVEMENT_SPEED"
+ value="geo-location-movement-speed"
+ c:type="GST_TAG_GEO_LOCATION_MOVEMENT_SPEED">
+ <doc xml:space="preserve">Speed of the capturing device when performing the capture.
+Represented in m/s. (double)
+
+See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_NAME"
+ value="geo-location-name"
+ c:type="GST_TAG_GEO_LOCATION_NAME">
+ <doc xml:space="preserve">human readable descriptive location of where the media has been recorded or
+produced. (string).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GEO_LOCATION_SUBLOCATION"
+ value="geo-location-sublocation"
+ c:type="GST_TAG_GEO_LOCATION_SUBLOCATION">
+ <doc xml:space="preserve">A location 'smaller' than GST_TAG_GEO_LOCATION_CITY that specifies better
+where the media has been produced. (e.g. the neighborhood) (string).
+
+This tag has been added as this is how it is handled/named in XMP's
+Iptc4xmpcore schema.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_GROUPING" value="grouping" c:type="GST_TAG_GROUPING">
+ <doc xml:space="preserve">Groups together media that are related and spans multiple tracks. An
+example are multiple pieces of a concerto. (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_HOMEPAGE" value="homepage" c:type="GST_TAG_HOMEPAGE">
+ <doc xml:space="preserve">Homepage for this media (i.e. artist or movie homepage) (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_IMAGE" value="image" c:type="GST_TAG_IMAGE">
+ <doc xml:space="preserve">image (sample) (sample taglist should specify the content type and preferably
+also set "image-type" field as #GstTagImageType)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_IMAGE_ORIENTATION"
+ value="image-orientation"
+ c:type="GST_TAG_IMAGE_ORIENTATION">
+ <doc xml:space="preserve">Represents the 'Orientation' tag from EXIF. Defines how the image
+should be rotated and mirrored for display. (string)
+
+This tag has a predefined set of allowed values:
+ "rotate-0"
+ "rotate-90"
+ "rotate-180"
+ "rotate-270"
+ "flip-rotate-0"
+ "flip-rotate-90"
+ "flip-rotate-180"
+ "flip-rotate-270"
+
+The naming is adopted according to a possible transformation to perform
+on the image to fix its orientation, obviously equivalent operations will
+yield the same result.
+
+Rotations indicated by the values are in clockwise direction and
+'flip' means an horizontal mirroring.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_INTERPRETED_BY"
+ value="interpreted-by"
+ c:type="GST_TAG_INTERPRETED_BY"
+ version="1.2">
+ <doc xml:space="preserve">Information about the people behind a remix and similar
+interpretations of another existing piece (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ISRC" value="isrc" c:type="GST_TAG_ISRC">
+ <doc xml:space="preserve">International Standard Recording Code - see http://www.ifpi.org/isrc/ (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_KEYWORDS" value="keywords" c:type="GST_TAG_KEYWORDS">
+ <doc xml:space="preserve">comma separated keywords describing the content (string).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LANGUAGE_CODE"
+ value="language-code"
+ c:type="GST_TAG_LANGUAGE_CODE">
+ <doc xml:space="preserve">ISO-639-2 or ISO-639-1 code for the language the content is in (string)
+
+There is utility API in libgsttag in gst-plugins-base to obtain a translated
+language name from the language code: gst_tag_get_language_name()</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LANGUAGE_NAME"
+ value="language-name"
+ c:type="GST_TAG_LANGUAGE_NAME">
+ <doc xml:space="preserve">Name of the language the content is in (string)
+
+Free-form name of the language the content is in, if a language code
+is not available. This tag should not be set in addition to a language
+code. It is undefined what language or locale the language name is in.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LICENSE" value="license" c:type="GST_TAG_LICENSE">
+ <doc xml:space="preserve">license of data (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LICENSE_URI"
+ value="license-uri"
+ c:type="GST_TAG_LICENSE_URI">
+ <doc xml:space="preserve">URI to location where license details can be found (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LOCATION" value="location" c:type="GST_TAG_LOCATION">
+ <doc xml:space="preserve">Origin of media as a URI (location, where the original of the file or stream
+is hosted) (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_LYRICS" value="lyrics" c:type="GST_TAG_LYRICS">
+ <doc xml:space="preserve">The lyrics of the media (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MAXIMUM_BITRATE"
+ value="maximum-bitrate"
+ c:type="GST_TAG_MAXIMUM_BITRATE">
+ <doc xml:space="preserve">maximum bitrate in bits/s (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MIDI_BASE_NOTE"
+ value="midi-base-note"
+ c:type="GST_TAG_MIDI_BASE_NOTE"
+ version="1.4">
+ <doc xml:space="preserve">&lt;ulink url="http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name"&gt;Midi note number&lt;/ulink&gt;
+of the audio track. This is useful for sample instruments and in particular
+for multi-samples.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MINIMUM_BITRATE"
+ value="minimum-bitrate"
+ c:type="GST_TAG_MINIMUM_BITRATE">
+ <doc xml:space="preserve">minimum bitrate in bits/s (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_NOMINAL_BITRATE"
+ value="nominal-bitrate"
+ c:type="GST_TAG_NOMINAL_BITRATE">
+ <doc xml:space="preserve">nominal bitrate in bits/s (unsigned integer). The actual bitrate might be
+different from this target bitrate.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ORGANIZATION"
+ value="organization"
+ c:type="GST_TAG_ORGANIZATION">
+ <doc xml:space="preserve">organization (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_PERFORMER"
+ value="performer"
+ c:type="GST_TAG_PERFORMER">
+ <doc xml:space="preserve">person(s) performing (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_PREVIEW_IMAGE"
+ value="preview-image"
+ c:type="GST_TAG_PREVIEW_IMAGE">
+ <doc xml:space="preserve">image that is meant for preview purposes, e.g. small icon-sized version
+(sample) (sample taglist should specify the content type)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_PRIVATE_DATA"
+ value="private-data"
+ c:type="GST_TAG_PRIVATE_DATA"
+ version="1.8">
+ <doc xml:space="preserve">Any private data that may be contained in tags (sample).
+
+It is represented by #GstSample in which #GstBuffer contains the
+binary data and the sample's info #GstStructure may contain any
+extra information that identifies the origin or meaning of the data.
+
+Private frames in ID3v2 tags ('PRIV' frames) will be represented
+using this tag, in which case the GstStructure will be named
+"ID3PrivateFrame" and contain a field named "owner" of type string
+which contains the owner-identification string from the tag.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_PUBLISHER"
+ value="publisher"
+ c:type="GST_TAG_PUBLISHER"
+ version="1.2">
+ <doc xml:space="preserve">Name of the label or publisher (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_REFERENCE_LEVEL"
+ value="replaygain-reference-level"
+ c:type="GST_TAG_REFERENCE_LEVEL">
+ <doc xml:space="preserve">reference level of track and album gain values (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SERIAL" value="serial" c:type="GST_TAG_SERIAL">
+ <doc xml:space="preserve">serial number of track (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SHOW_EPISODE_NUMBER"
+ value="show-episode-number"
+ c:type="GST_TAG_SHOW_EPISODE_NUMBER">
+ <doc xml:space="preserve">Number of the episode within a season/show (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SHOW_NAME"
+ value="show-name"
+ c:type="GST_TAG_SHOW_NAME">
+ <doc xml:space="preserve">Name of the show, used for displaying (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SHOW_SEASON_NUMBER"
+ value="show-season-number"
+ c:type="GST_TAG_SHOW_SEASON_NUMBER">
+ <doc xml:space="preserve">Number of the season of a show/series (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SHOW_SORTNAME"
+ value="show-sortname"
+ c:type="GST_TAG_SHOW_SORTNAME">
+ <doc xml:space="preserve">Name of the show, used for sorting (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_SUBTITLE_CODEC"
+ value="subtitle-codec"
+ c:type="GST_TAG_SUBTITLE_CODEC">
+ <doc xml:space="preserve">codec/format the subtitle data is stored in (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TITLE" value="title" c:type="GST_TAG_TITLE">
+ <doc xml:space="preserve">commonly used title (string)
+
+The title as it should be displayed, e.g. 'The Doll House'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TITLE_SORTNAME"
+ value="title-sortname"
+ c:type="GST_TAG_TITLE_SORTNAME">
+ <doc xml:space="preserve">commonly used title, as used for sorting (string)
+
+The title as it should be sorted, e.g. 'Doll House, The'</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TRACK_COUNT"
+ value="track-count"
+ c:type="GST_TAG_TRACK_COUNT">
+ <doc xml:space="preserve">count of tracks inside collection this track belongs to (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TRACK_GAIN"
+ value="replaygain-track-gain"
+ c:type="GST_TAG_TRACK_GAIN">
+ <doc xml:space="preserve">track gain in db (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TRACK_NUMBER"
+ value="track-number"
+ c:type="GST_TAG_TRACK_NUMBER">
+ <doc xml:space="preserve">track number inside a collection (unsigned integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_TRACK_PEAK"
+ value="replaygain-track-peak"
+ c:type="GST_TAG_TRACK_PEAK">
+ <doc xml:space="preserve">peak of the track (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_USER_RATING"
+ value="user-rating"
+ c:type="GST_TAG_USER_RATING">
+ <doc xml:space="preserve">Rating attributed by a person (likely the application user).
+The higher the value, the more the user likes this media
+(unsigned int from 0 to 100)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_VERSION" value="version" c:type="GST_TAG_VERSION">
+ <doc xml:space="preserve">version of this data (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_VIDEO_CODEC"
+ value="video-codec"
+ c:type="GST_TAG_VIDEO_CODEC">
+ <doc xml:space="preserve">codec the video data is stored in (string)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TIME_FORMAT"
+ value="u:%02u:%02u.%09u"
+ c:type="GST_TIME_FORMAT">
+ <doc xml:space="preserve">A string that can be used in printf-like format strings to display a
+#GstClockTime value in h:m:s format. Use GST_TIME_ARGS() to construct
+the matching arguments.
+
+Example:
+|[&lt;!-- language="C" --&gt;
+printf("%" GST_TIME_FORMAT "\n", GST_TIME_ARGS(ts));
+]|</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TOC_REPEAT_COUNT_INFINITE"
+ value="-1"
+ c:type="GST_TOC_REPEAT_COUNT_INFINITE"
+ version="1.4">
+ <doc xml:space="preserve">Special value for the repeat_count set in gst_toc_entry_set_loop() or
+returned by gst_toc_entry_set_loop() to indicate infinite looping.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <enumeration name="TagFlag"
+ glib:type-name="GstTagFlag"
+ glib:get-type="gst_tag_flag_get_type"
+ c:type="GstTagFlag">
+ <doc xml:space="preserve">Extra tag flags used when registering tags.</doc>
+ <member name="undefined"
+ value="0"
+ c:identifier="GST_TAG_FLAG_UNDEFINED"
+ glib:nick="undefined">
+ <doc xml:space="preserve">undefined flag</doc>
+ </member>
+ <member name="meta"
+ value="1"
+ c:identifier="GST_TAG_FLAG_META"
+ glib:nick="meta">
+ <doc xml:space="preserve">tag is meta data</doc>
+ </member>
+ <member name="encoded"
+ value="2"
+ c:identifier="GST_TAG_FLAG_ENCODED"
+ glib:nick="encoded">
+ <doc xml:space="preserve">tag is encoded</doc>
+ </member>
+ <member name="decoded"
+ value="3"
+ c:identifier="GST_TAG_FLAG_DECODED"
+ glib:nick="decoded">
+ <doc xml:space="preserve">tag is decoded</doc>
+ </member>
+ <member name="count"
+ value="4"
+ c:identifier="GST_TAG_FLAG_COUNT"
+ glib:nick="count">
+ <doc xml:space="preserve">number of tag flags</doc>
+ </member>
+ </enumeration>
+ <callback name="TagForeachFunc" c:type="GstTagForeachFunc">
+ <doc xml:space="preserve">A function that will be called in gst_tag_list_foreach(). The function may
+not modify the tag list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagList</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">a name of a tag in @list</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="TagList"
+ c:type="GstTagList"
+ glib:type-name="GstTagList"
+ glib:get-type="gst_tag_list_get_type"
+ c:symbol-prefix="tag_list">
+ <doc xml:space="preserve">List of tags and values used to describe media metadata.
+
+Strings in structures must be ASCII or UTF-8 encoded. Other encodings are
+not allowed. Strings must not be empty or %NULL.</doc>
+ <field name="mini_object" writable="1">
+ <doc xml:space="preserve">the parent type</doc>
+ <type name="MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_tag_list_new"
+ introspectable="0">
+ <doc xml:space="preserve">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).
+
+After creation you might also want to set a #GstTagScope on the returned
+taglist to signal if the contained tags are global or stream tags. By
+default stream scope is assumes. See gst_tag_list_set_scope().
+
+Free-function: gst_tag_list_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstTagList. Free with gst_tag_list_unref()
+ when no longer needed.</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">%NULL-terminated list of values to set</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_empty" c:identifier="gst_tag_list_new_empty">
+ <doc xml:space="preserve">Creates a new empty GstTagList.
+
+Free-function: gst_tag_list_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">An empty tag list</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_from_string"
+ c:identifier="gst_tag_list_new_from_string">
+ <doc xml:space="preserve">Deserializes a tag list.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstTagList, or %NULL in case of an
+error.</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="str" transfer-ownership="none">
+ <doc xml:space="preserve">a string created with gst_tag_list_to_string()</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_valist"
+ c:identifier="gst_tag_list_new_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Just like gst_tag_list_new(), only that it takes a va_list argument.
+Useful mostly for language bindings.
+
+Free-function: gst_tag_list_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstTagList. Free with gst_tag_list_unref()
+ when no longer needed.</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">tag / value pairs to set</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add" c:identifier="gst_tag_list_add" introspectable="0">
+ <doc xml:space="preserve">Sets the values for the given tags using the specified mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to set tags in</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">%NULL-terminated list of values to set</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_valist"
+ c:identifier="gst_tag_list_add_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the values for the given tags using the specified mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to set tags in</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">tag / value pairs to set</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_valist_values"
+ c:identifier="gst_tag_list_add_valist_values"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the GValues for the given tags using the specified mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to set tags in</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">tag / GValue pairs to set</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_value" c:identifier="gst_tag_list_add_value">
+ <doc xml:space="preserve">Sets the GValue for a given tag using the specified mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to set tags in</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">GValue for this tag</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_values"
+ c:identifier="gst_tag_list_add_values"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the GValues for the given tags using the specified mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to set tags in</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">GValues to set</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="gst_tag_list_foreach">
+ <doc xml:space="preserve">Calls the given function for each tag inside the tag list. Note that if there
+is no tag, the function won't be called at all.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to iterate over</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">function to be called for each tag</doc>
+ <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user specified data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_boolean" c:identifier="gst_tag_list_get_boolean">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_boolean_index"
+ c:identifier="gst_tag_list_get_boolean_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date" c:identifier="gst_tag_list_get_date">
+ <doc xml:space="preserve">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.
+
+Free-function: g_date_free</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a date was copied, %FALSE if the tag didn't exist in the
+ given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a GDate pointer
+ variable to store the result into</doc>
+ <type name="GLib.Date" c:type="GDate**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date_index" c:identifier="gst_tag_list_get_date_index">
+ <doc xml:space="preserve">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.
+
+Free-function: g_date_free</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="GLib.Date" c:type="GDate**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date_time" c:identifier="gst_tag_list_get_date_time">
+ <doc xml:space="preserve">Copies the first datetime for the given tag in the taglist into the variable
+pointed to by @value. Unref the date with gst_date_time_unref() when
+it is no longer needed.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a datetime was copied, %FALSE if the tag didn't exist in
+ the given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a #GstDateTime
+ pointer variable to store the result into</doc>
+ <type name="DateTime" c:type="GstDateTime**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_date_time_index"
+ c:identifier="gst_tag_list_get_date_time_index">
+ <doc xml:space="preserve">Gets the datetime that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Unref the datetime
+with gst_date_time_unref() when it is no longer needed.
+
+Free-function: gst_date_time_unref</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="DateTime" c:type="GstDateTime**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_double" c:identifier="gst_tag_list_get_double">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_double_index"
+ c:identifier="gst_tag_list_get_double_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float" c:identifier="gst_tag_list_get_float">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float_index"
+ c:identifier="gst_tag_list_get_float_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int" c:identifier="gst_tag_list_get_int">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64" c:identifier="gst_tag_list_get_int64">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64_index"
+ c:identifier="gst_tag_list_get_int64_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int_index" c:identifier="gst_tag_list_get_int_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pointer" c:identifier="gst_tag_list_get_pointer">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pointer_index"
+ c:identifier="gst_tag_list_get_pointer_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sample" c:identifier="gst_tag_list_get_sample">
+ <doc xml:space="preserve">Copies the first sample for the given tag in the taglist into the variable
+pointed to by @sample. Free the sample with gst_sample_unref() when it is
+no longer needed. You can retrieve the buffer from the sample using
+gst_sample_get_buffer() and the associated caps (if any) with
+gst_sample_get_caps().
+
+Free-function: gst_sample_unref</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a sample was returned, %FALSE if the tag didn't exist in
+ the given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="sample"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a GstSample
+ pointer variable to store the result into</doc>
+ <type name="Sample" c:type="GstSample**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sample_index"
+ c:identifier="gst_tag_list_get_sample_index">
+ <doc xml:space="preserve">Gets the sample that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @sample. Free the sample
+with gst_sample_unref() when it is no longer needed. You can retrieve the
+buffer from the sample using gst_sample_get_buffer() and the associated
+caps (if any) with gst_sample_get_caps().
+
+Free-function: gst_sample_unref</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a sample was copied, %FALSE if the tag didn't exist in the
+ given list or if it was %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="sample"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a GstSample
+ pointer variable to store the result into</doc>
+ <type name="Sample" c:type="GstSample**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_scope" c:identifier="gst_tag_list_get_scope">
+ <doc xml:space="preserve">Gets the scope of @list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The scope of @list</doc>
+ <type name="TagScope" c:type="GstTagScope"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_string" c:identifier="gst_tag_list_get_string">
+ <doc xml:space="preserve">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. The
+returned string is also guaranteed to be non-%NULL and non-empty.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_string_index"
+ c:identifier="gst_tag_list_get_string_index">
+ <doc xml:space="preserve">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. The
+returned string is also guaranteed to be non-%NULL and non-empty.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_tag_size" c:identifier="gst_tag_list_get_tag_size">
+ <doc xml:space="preserve">Checks how many value are stored in this tag list for the given tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of tags stored</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a taglist</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag to query</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint" c:identifier="gst_tag_list_get_uint">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64" c:identifier="gst_tag_list_get_uint64">
+ <doc xml:space="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64_index"
+ c:identifier="gst_tag_list_get_uint64_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint_index" c:identifier="gst_tag_list_get_uint_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_value_index"
+ c:identifier="gst_tag_list_get_value_index">
+ <doc xml:space="preserve">Gets the value that is at the given index for the given tag in the given
+list.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The GValue for the specified
+ entry or %NULL if the tag wasn't available or the tag
+ doesn't have as many entries</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert" c:identifier="gst_tag_list_insert">
+ <doc xml:space="preserve">Inserts the tags of the @from list into the first list using the given mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="into" transfer-ownership="none">
+ <doc xml:space="preserve">list to merge into</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">list to merge from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_empty" c:identifier="gst_tag_list_is_empty">
+ <doc xml:space="preserve">Checks if the given taglist is empty.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the taglist is empty, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagList.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal" c:identifier="gst_tag_list_is_equal">
+ <doc xml:space="preserve">Checks if the two given taglists are equal.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the taglists are equal, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="list2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="merge" c:identifier="gst_tag_list_merge">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_tag_list_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the new list</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list1"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">first list to merge</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="list2"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">second list to merge</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="n_tags" c:identifier="gst_tag_list_n_tags">
+ <doc xml:space="preserve">Get the number of tags in @list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of tags in @list.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagList.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="nth_tag_name" c:identifier="gst_tag_list_nth_tag_name">
+ <doc xml:space="preserve">Get the name of the tag in @list at @index.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The name of the tag at @index.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagList.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_string_index"
+ c:identifier="gst_tag_list_peek_string_index">
+ <doc xml:space="preserve">Peeks at 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 doesn't need
+to be freed by the caller. The returned string is also guaranteed to
+be non-%NULL and non-empty.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was set, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">number of entry to read out</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">location for the result</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_tag" c:identifier="gst_tag_list_remove_tag">
+ <doc xml:space="preserve">Removes the given tag from the taglist.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to remove tag from</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_scope" c:identifier="gst_tag_list_set_scope">
+ <doc xml:space="preserve">Sets the scope of @list to @scope. By default the scope
+of a taglist is stream scope.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </instance-parameter>
+ <parameter name="scope" transfer-ownership="none">
+ <doc xml:space="preserve">new scope for @list</doc>
+ <type name="TagScope" c:type="GstTagScope"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string" c:identifier="gst_tag_list_to_string">
+ <doc xml:space="preserve">Serializes a tag list to a string.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly-allocated string, or %NULL in case of
+ an error. The string must be freed with g_free() when no longer
+ needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="copy_value" c:identifier="gst_tag_list_copy_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">uninitialized #GValue to copy into</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <callback name="TagMergeFunc" c:type="GstTagMergeFunc">
+ <doc xml:space="preserve">A function for merging multiple values of a tag used when registering
+tags.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the destination #GValue</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="TagMergeMode"
+ glib:type-name="GstTagMergeMode"
+ glib:get-type="gst_tag_merge_mode_get_type"
+ c:type="GstTagMergeMode">
+ <doc xml:space="preserve">The different tag merging modes are basically replace, overwrite and append,
+but they can be seen from two directions. Given two taglists: (A) the tags
+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="all" colsep="1" rowsep="1"&gt;
+ &lt;title&gt;merge mode&lt;/title&gt;
+ &lt;tgroup cols='5' align='left'&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;</doc>
+ <member name="undefined"
+ value="0"
+ c:identifier="GST_TAG_MERGE_UNDEFINED"
+ glib:nick="undefined">
+ <doc xml:space="preserve">undefined merge mode</doc>
+ </member>
+ <member name="replace_all"
+ value="1"
+ c:identifier="GST_TAG_MERGE_REPLACE_ALL"
+ glib:nick="replace-all">
+ <doc xml:space="preserve">replace all tags (clear list and append)</doc>
+ </member>
+ <member name="replace"
+ value="2"
+ c:identifier="GST_TAG_MERGE_REPLACE"
+ glib:nick="replace">
+ <doc xml:space="preserve">replace tags</doc>
+ </member>
+ <member name="append"
+ value="3"
+ c:identifier="GST_TAG_MERGE_APPEND"
+ glib:nick="append">
+ <doc xml:space="preserve">append tags</doc>
+ </member>
+ <member name="prepend"
+ value="4"
+ c:identifier="GST_TAG_MERGE_PREPEND"
+ glib:nick="prepend">
+ <doc xml:space="preserve">prepend tags</doc>
+ </member>
+ <member name="keep"
+ value="5"
+ c:identifier="GST_TAG_MERGE_KEEP"
+ glib:nick="keep">
+ <doc xml:space="preserve">keep existing tags</doc>
+ </member>
+ <member name="keep_all"
+ value="6"
+ c:identifier="GST_TAG_MERGE_KEEP_ALL"
+ glib:nick="keep-all">
+ <doc xml:space="preserve">keep all existing tags</doc>
+ </member>
+ <member name="count"
+ value="7"
+ c:identifier="GST_TAG_MERGE_COUNT"
+ glib:nick="count">
+ <doc xml:space="preserve">the number of merge modes</doc>
+ </member>
+ </enumeration>
+ <enumeration name="TagScope"
+ glib:type-name="GstTagScope"
+ glib:get-type="gst_tag_scope_get_type"
+ c:type="GstTagScope">
+ <doc xml:space="preserve">GstTagScope specifies if a taglist applies to the complete
+medium or only to one single stream.</doc>
+ <member name="stream"
+ value="0"
+ c:identifier="GST_TAG_SCOPE_STREAM"
+ glib:nick="stream">
+ <doc xml:space="preserve">tags specific to this single stream</doc>
+ </member>
+ <member name="global"
+ value="1"
+ c:identifier="GST_TAG_SCOPE_GLOBAL"
+ glib:nick="global">
+ <doc xml:space="preserve">global tags for the complete medium</doc>
+ </member>
+ </enumeration>
+ <interface name="TagSetter"
+ c:symbol-prefix="tag_setter"
+ c:type="GstTagSetter"
+ glib:type-name="GstTagSetter"
+ glib:get-type="gst_tag_setter_get_type"
+ glib:type-struct="TagSetterInterface">
+ <doc xml:space="preserve">Element interface that allows setting of media metadata.
+
+Elements that support changing a stream's metadata will implement this
+interface. Examples of such elements are 'vorbisenc', 'theoraenc' and
+'id3v2mux'.
+
+If you just want to retrieve metadata in your application then all you
+need to do is watch for tag messages on your pipeline's bus. This
+interface is only for setting metadata, not for extracting it. To set tags
+from the application, find tagsetter elements and set tags using e.g.
+gst_tag_setter_merge_tags() or gst_tag_setter_add_tags(). Also consider
+setting the #GstTagMergeMode that is used for tag events that arrive at the
+tagsetter element (default mode is to keep existing tags).
+The application should do that before the element goes to %GST_STATE_PAUSED.
+
+Elements implementing the #GstTagSetter interface often have to merge
+any tags received from upstream and the tags set by the application via
+the interface. This can be done like this:
+
+|[&lt;!-- language="C" --&gt;
+GstTagMergeMode merge_mode;
+const GstTagList *application_tags;
+const GstTagList *event_tags;
+GstTagSetter *tagsetter;
+GstTagList *result;
+
+tagsetter = GST_TAG_SETTER (element);
+
+merge_mode = gst_tag_setter_get_tag_merge_mode (tagsetter);
+application_tags = gst_tag_setter_get_tag_list (tagsetter);
+event_tags = (const GstTagList *) element-&gt;event_tags;
+
+GST_LOG_OBJECT (tagsetter, "merging tags, merge mode = %d", merge_mode);
+GST_LOG_OBJECT (tagsetter, "event tags: %" GST_PTR_FORMAT, event_tags);
+GST_LOG_OBJECT (tagsetter, "set tags: %" GST_PTR_FORMAT, application_tags);
+
+result = gst_tag_list_merge (application_tags, event_tags, merge_mode);
+
+GST_LOG_OBJECT (tagsetter, "final tags: %" GST_PTR_FORMAT, result);
+]|</doc>
+ <prerequisite name="Element"/>
+ <method name="add_tag_valist"
+ c:identifier="gst_tag_setter_add_tag_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">tag / value pairs to set</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_tag_valist_values"
+ c:identifier="gst_tag_setter_add_tag_valist_values"
+ introspectable="0">
+ <doc xml:space="preserve">Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="var_args" transfer-ownership="none">
+ <doc xml:space="preserve">tag / GValue pairs to set</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_tag_value" c:identifier="gst_tag_setter_add_tag_value">
+ <doc xml:space="preserve">Adds the given tag / GValue pair on the setter using the given merge mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">GValue to set for the tag</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_tag_values"
+ c:identifier="gst_tag_setter_add_tag_values"
+ introspectable="0">
+ <doc xml:space="preserve">Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">more tag / GValue pairs to set</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_tags"
+ c:identifier="gst_tag_setter_add_tags"
+ introspectable="0">
+ <doc xml:space="preserve">Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to use</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">more tag / value pairs to set</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_tag_list" c:identifier="gst_tag_setter_get_tag_list">
+ <doc xml:space="preserve">Returns the current list of tags the setter uses. The list should not be
+modified or freed.
+
+This function is not thread-safe.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a current snapshot of the
+ taglist used in the setter or %NULL if none is used.</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tag_merge_mode"
+ c:identifier="gst_tag_setter_get_tag_merge_mode">
+ <doc xml:space="preserve">Queries the mode by which tags inside the setter are overwritten by tags
+from events</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the merge mode used inside the element.</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_tag_setter_merge_tags">
+ <doc xml:space="preserve">Merges the given list into the setter's list using the given mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a tag list to merge from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the mode to merge with</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset_tags" c:identifier="gst_tag_setter_reset_tags">
+ <doc xml:space="preserve">Reset the internal taglist. Elements should call this from within the
+state-change handler.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_tag_merge_mode"
+ c:identifier="gst_tag_setter_set_tag_merge_mode">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagSetter</doc>
+ <type name="TagSetter" c:type="GstTagSetter*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The mode with which tags are added</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="TagSetterInterface"
+ c:type="GstTagSetterInterface"
+ glib:is-gtype-struct-for="TagSetter">
+ <doc xml:space="preserve">#GstTagSetterInterface interface.</doc>
+ <field name="g_iface">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
+ <class name="Task"
+ c:symbol-prefix="task"
+ c:type="GstTask"
+ parent="Object"
+ glib:type-name="GstTask"
+ glib:get-type="gst_task_get_type"
+ glib:type-struct="TaskClass">
+ <doc xml:space="preserve">#GstTask is used by #GstElement and #GstPad to provide the data passing
+threads in a #GstPipeline.
+
+A #GstPad will typically start a #GstTask to push or pull data to/from the
+peer pads. Most source elements start a #GstTask to push data. In some cases
+a demuxer element can start a #GstTask to pull data from a peer element. This
+is typically done when the demuxer can perform random access on the upstream
+peer element for improved performance.
+
+Although convenience functions exist on #GstPad to start/pause/stop tasks, it
+might sometimes be needed to create a #GstTask manually if it is not related to
+a #GstPad.
+
+Before the #GstTask can be run, it needs a #GRecMutex that can be set with
+gst_task_set_lock().
+
+The task can be started, paused and stopped with gst_task_start(), gst_task_pause()
+and gst_task_stop() respectively or with the gst_task_set_state() function.
+
+A #GstTask will repeatedly call the #GstTaskFunction with the user data
+that was provided when creating the task with gst_task_new(). While calling
+the function it will acquire the provided lock. The provided lock is released
+when the task pauses or stops.
+
+Stopping a task with gst_task_stop() will not immediately make sure the task is
+not running anymore. Use gst_task_join() to make sure the task is completely
+stopped and the thread is stopped.
+
+After creating a #GstTask, use gst_object_unref() to free its resources. This can
+only be done when the task is not running anymore.
+
+Task functions can send a #GstMessage to send out-of-band data to the
+application. The application can receive messages from the #GstBus in its
+mainloop.
+
+For debugging purposes, the task will configure its object name as the thread
+name on Linux. Please note that the object name should be configured before the
+task is started; changing the object name after the task has been started, has
+no effect on the thread name.</doc>
+ <constructor name="new" c:identifier="gst_task_new">
+ <doc xml:space="preserve">Create a new Task that will repeatedly call the provided @func
+with @user_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 #GRecMutex must be configured using the
+gst_task_set_lock() function. This lock will always be acquired while
+@func is called.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstTask.
+
+MT safe.</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </return-value>
+ <parameters>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">The #GstTaskFunction to use</doc>
+ <type name="TaskFunction" c:type="GstTaskFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">User data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">the function to call when @user_data is no longer needed.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <function name="cleanup_all" c:identifier="gst_task_cleanup_all">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <method name="get_pool" c:identifier="gst_task_get_pool">
+ <doc xml:space="preserve">Get the #GstTaskPool that this task will use for its streaming
+threads.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstTaskPool used by @task. gst_object_unref()
+after usage.</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTask</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_state" c:identifier="gst_task_get_state">
+ <doc xml:space="preserve">Get the current state of the task.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTaskState of the task
+
+MT safe.</doc>
+ <type name="TaskState" c:type="GstTaskState"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to query</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="join" c:identifier="gst_task_join">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the task could be joined.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to join</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pause" c:identifier="gst_task_pause">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the task could be paused.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to pause</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_enter_callback"
+ c:identifier="gst_task_set_enter_callback">
+ <doc xml:space="preserve">Call @enter_func when the task function of @task is entered. @user_data will
+be passed to @enter_func and @notify will be called when @user_data is no
+longer referenced.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to use</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ <parameter name="enter_func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">a #GstTaskThreadFunc</doc>
+ <type name="TaskThreadFunc" c:type="GstTaskThreadFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @enter_func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when @user_data is no longer referenced</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_leave_callback"
+ c:identifier="gst_task_set_leave_callback">
+ <doc xml:space="preserve">Call @leave_func when the task function of @task is left. @user_data will
+be passed to @leave_func and @notify will be called when @user_data is no
+longer referenced.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to use</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ <parameter name="leave_func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">a #GstTaskThreadFunc</doc>
+ <type name="TaskThreadFunc" c:type="GstTaskThreadFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to @leave_func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when @user_data is no longer referenced</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_lock" c:identifier="gst_task_set_lock">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to use</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ <parameter name="mutex" transfer-ownership="none">
+ <doc xml:space="preserve">The #GRecMutex to use</doc>
+ <type name="GLib.RecMutex" c:type="GRecMutex*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_pool" c:identifier="gst_task_set_pool">
+ <doc xml:space="preserve">Set @pool as the new GstTaskPool for @task. Any new streaming threads that
+will be created by @task will now use @pool.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTask</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_state" c:identifier="gst_task_set_state">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the state could be changed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTask</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ <parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">the new task state</doc>
+ <type name="TaskState" c:type="GstTaskState"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start" c:identifier="gst_task_start">
+ <doc xml:space="preserve">Starts @task. The @task must have a lock associated with it using
+gst_task_set_lock() or this function will return %FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the task could be started.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to start</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop" c:identifier="gst_task_stop">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the task could be stopped.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask to stop</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="state">
+ <doc xml:space="preserve">the state of the task</doc>
+ <type name="TaskState" c:type="GstTaskState"/>
+ </field>
+ <field name="cond">
+ <doc xml:space="preserve">used to pause/resume the task</doc>
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <field name="lock">
+ <doc xml:space="preserve">The lock taken when iterating the task function</doc>
+ <type name="GLib.RecMutex" c:type="GRecMutex*"/>
+ </field>
+ <field name="func">
+ <doc xml:space="preserve">the function executed by this task</doc>
+ <type name="TaskFunction" c:type="GstTaskFunction"/>
+ </field>
+ <field name="user_data">
+ <doc xml:space="preserve">user_data passed to the task function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="notify">
+ <doc xml:space="preserve">GDestroyNotify for @user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="running">
+ <doc xml:space="preserve">a flag indicating that the task is running</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="thread" readable="0" private="1">
+ <type name="GLib.Thread" c:type="GThread*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TaskClass"
+ c:type="GstTaskClass"
+ glib:is-gtype-struct-for="Task">
+ <field name="parent_class">
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="pool" readable="0" private="1">
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="TaskFunction" c:type="GstTaskFunction">
+ <doc xml:space="preserve">A function that will repeatedly be called in the thread created by
+a #GstTask.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="0">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="TaskPool"
+ c:symbol-prefix="task_pool"
+ c:type="GstTaskPool"
+ parent="Object"
+ glib:type-name="GstTaskPool"
+ glib:get-type="gst_task_pool_get_type"
+ glib:type-struct="TaskPoolClass">
+ <doc xml:space="preserve">This object provides an abstraction for creating threads. The default
+implementation uses a regular GThreadPool to start tasks.
+
+Subclasses can be made to create custom threads.</doc>
+ <constructor name="new" c:identifier="gst_task_pool_new">
+ <doc xml:space="preserve">Create a new default task pool. The default task pool will use a regular
+GThreadPool for threads.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstTaskPool. gst_object_unref() after usage.</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </return-value>
+ </constructor>
+ <virtual-method name="cleanup" invoker="cleanup">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="join" invoker="join">
+ <doc xml:space="preserve">Join a task and/or return it to the pool. @id is the id obtained from
+gst_task_pool_push().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the id</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare" invoker="prepare" throws="1">
+ <doc xml:space="preserve">Prepare the taskpool for accepting gst_task_pool_push() operations.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="push" invoker="push" throws="1">
+ <doc xml:space="preserve">Start the execution of a new thread from @pool.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer that should be used
+for the gst_task_pool_join function. This pointer can be %NULL, you
+must check @error to detect errors.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="async"
+ closure="1">
+ <doc xml:space="preserve">the function to call</doc>
+ <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="cleanup" c:identifier="gst_task_pool_cleanup">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="join" c:identifier="gst_task_pool_join">
+ <doc xml:space="preserve">Join a task and/or return it to the pool. @id is the id obtained from
+gst_task_pool_push().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the id</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prepare" c:identifier="gst_task_pool_prepare" throws="1">
+ <doc xml:space="preserve">Prepare the taskpool for accepting gst_task_pool_push() operations.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_task_pool_push" throws="1">
+ <doc xml:space="preserve">Start the execution of a new thread from @pool.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer that should be used
+for the gst_task_pool_join function. This pointer can be %NULL, you
+must check @error to detect errors.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="async"
+ closure="1">
+ <doc xml:space="preserve">the function to call</doc>
+ <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="pool" readable="0" private="1">
+ <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TaskPoolClass"
+ c:type="GstTaskPoolClass"
+ glib:is-gtype-struct-for="TaskPool">
+ <doc xml:space="preserve">The #GstTaskPoolClass object.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="prepare">
+ <callback name="prepare" throws="1">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="cleanup">
+ <callback name="cleanup">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="push">
+ <callback name="push" throws="1">
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a pointer that should be used
+for the gst_task_pool_join function. This pointer can be %NULL, you
+must check @error to detect errors.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="async"
+ closure="2">
+ <doc xml:space="preserve">the function to call</doc>
+ <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="join">
+ <callback name="join">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pool" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTaskPool</doc>
+ <type name="TaskPool" c:type="GstTaskPool*"/>
+ </parameter>
+ <parameter name="id"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the id</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="TaskPoolFunction" c:type="GstTaskPoolFunction">
+ <doc xml:space="preserve">Task function, see gst_task_pool_push().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="0">
+ <doc xml:space="preserve">user data for the task function</doc>
+ <type name="gpointer" c:type="void*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="TaskPrivate" c:type="GstTaskPrivate" disguised="1">
+ </record>
+ <enumeration name="TaskState"
+ glib:type-name="GstTaskState"
+ glib:get-type="gst_task_state_get_type"
+ c:type="GstTaskState">
+ <doc xml:space="preserve">The different states a task can be in</doc>
+ <member name="started"
+ value="0"
+ c:identifier="GST_TASK_STARTED"
+ glib:nick="started">
+ <doc xml:space="preserve">the task is started and running</doc>
+ </member>
+ <member name="stopped"
+ value="1"
+ c:identifier="GST_TASK_STOPPED"
+ glib:nick="stopped">
+ <doc xml:space="preserve">the task is stopped</doc>
+ </member>
+ <member name="paused"
+ value="2"
+ c:identifier="GST_TASK_PAUSED"
+ glib:nick="paused">
+ <doc xml:space="preserve">the task is paused</doc>
+ </member>
+ </enumeration>
+ <callback name="TaskThreadFunc" c:type="GstTaskThreadFunc">
+ <doc xml:space="preserve">Custom GstTask thread callback functions that can be installed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="task" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTask</doc>
+ <type name="Task" c:type="GstTask*"/>
+ </parameter>
+ <parameter name="thread" transfer-ownership="none">
+ <doc xml:space="preserve">The #GThread</doc>
+ <type name="GLib.Thread" c:type="GThread*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="TimedValue" c:type="GstTimedValue">
+ <doc xml:space="preserve">Structure for saving a timestamp and a value.</doc>
+ <field name="timestamp" writable="1">
+ <doc xml:space="preserve">timestamp of the value change</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="value" writable="1">
+ <doc xml:space="preserve">the corresponding value</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ </record>
+ <record name="Toc"
+ c:type="GstToc"
+ glib:type-name="GstToc"
+ glib:get-type="gst_toc_get_type"
+ c:symbol-prefix="toc">
+ <doc xml:space="preserve">#GstToc functions are used to create/free #GstToc and #GstTocEntry structures.
+Also they are used to convert #GstToc into #GstStructure and vice versa.
+
+#GstToc lets you to inform other elements in pipeline or application that playing
+source has some kind of table of contents (TOC). These may be chapters, editions,
+angles or other types. For example: DVD chapters, Matroska chapters or cue sheet
+TOC. Such TOC will be useful for applications to display instead of just a
+playlist.
+
+Using TOC is very easy. Firstly, create #GstToc structure which represents root
+contents of the source. You can also attach TOC-specific tags to it. Then fill
+it with #GstTocEntry entries by appending them to the #GstToc using
+gst_toc_append_entry(), and appending subentries to a #GstTocEntry using
+gst_toc_entry_append_sub_entry().
+
+Note that root level of the TOC can contain only either editions or chapters. You
+should not mix them together at the same level. Otherwise you will get serialization
+/deserialization errors. Make sure that no one of the entries has negative start and
+ stop values.
+
+Use gst_event_new_toc() to create a new TOC #GstEvent, and gst_event_parse_toc() to
+parse received TOC event. Use gst_event_new_toc_select() to create a new TOC select #GstEvent,
+and gst_event_parse_toc_select() to parse received TOC select event. The same rule for
+the #GstMessage: gst_message_new_toc() to create new TOC #GstMessage, and
+gst_message_parse_toc() to parse received TOC message.
+
+TOCs can have global scope or current scope. Global scope TOCs contain
+all entries that can possibly be selected using a toc select event, and
+are what an application is usually interested in. TOCs with current scope
+only contain the parts of the TOC relevant to the currently selected/playing
+stream; the current scope TOC is used by downstream elements such as muxers
+to write correct TOC entries when transcoding files, for example. When
+playing a DVD, the global TOC would contain a hierarchy of all titles,
+chapters and angles, for example, while the current TOC would only contain
+the chapters for the currently playing title if playback of a specific
+title was requested.
+
+Applications and plugins should not rely on TOCs having a certain kind of
+structure, but should allow for different alternatives. For example, a
+simple CUE sheet embedded in a file may be presented as a flat list of
+track entries, or could have a top-level edition node (or some other
+alternative type entry) with track entries underneath that node; or even
+multiple top-level edition nodes (or some other alternative type entries)
+each with track entries underneath, in case the source file has extracted
+a track listing from different sources).</doc>
+ <constructor name="new" c:identifier="gst_toc_new">
+ <doc xml:space="preserve">Create a new #GstToc structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">newly allocated #GstToc structure, free it
+ with gst_toc_unref().</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </return-value>
+ <parameters>
+ <parameter name="scope" transfer-ownership="none">
+ <doc xml:space="preserve">scope of this TOC</doc>
+ <type name="TocScope" c:type="GstTocScope"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="append_entry" c:identifier="gst_toc_append_entry">
+ <doc xml:space="preserve">Appends the #GstTocEntry @entry to @toc.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstToc instance</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </instance-parameter>
+ <parameter name="entry" transfer-ownership="full">
+ <doc xml:space="preserve">A #GstTocEntry</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dump" c:identifier="gst_toc_dump">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <type name="Toc" c:type="GstToc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="find_entry" c:identifier="gst_toc_find_entry">
+ <doc xml:space="preserve">Find #GstTocEntry with given @uid in the @toc.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">#GstTocEntry with specified
+@uid from the @toc, or %NULL if not found.</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">#GstToc to search in.</doc>
+ <type name="Toc" c:type="const GstToc*"/>
+ </instance-parameter>
+ <parameter name="uid" transfer-ownership="none">
+ <doc xml:space="preserve">UID to find #GstTocEntry with.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_entries" c:identifier="gst_toc_get_entries">
+ <doc xml:space="preserve">Gets the list of #GstTocEntry of @toc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A #GList of #GstTocEntry for @entry</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TocEntry"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstToc instance</doc>
+ <type name="Toc" c:type="const GstToc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_scope" c:identifier="gst_toc_get_scope">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">scope of @toc</doc>
+ <type name="TocScope" c:type="GstTocScope"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstToc instance</doc>
+ <type name="Toc" c:type="const GstToc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tags" c:identifier="gst_toc_get_tags">
+ <doc xml:space="preserve">Gets the tags for @toc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagList for @entry</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstToc instance</doc>
+ <type name="Toc" c:type="const GstToc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_toc_merge_tags">
+ <doc xml:space="preserve">Merge @tags into the existing tags of @toc using @mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstToc instance</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstTagList or %NULL</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagMergeMode</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tags" c:identifier="gst_toc_set_tags">
+ <doc xml:space="preserve">Set a #GstTagList with tags for the complete @toc.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="toc" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstToc instance</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstTagList or %NULL</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="TocEntry"
+ c:type="GstTocEntry"
+ glib:type-name="GstTocEntry"
+ glib:get-type="gst_toc_entry_get_type"
+ c:symbol-prefix="toc_entry">
+ <constructor name="new" c:identifier="gst_toc_entry_new">
+ <doc xml:space="preserve">Create new #GstTocEntry structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">newly allocated #GstTocEntry structure, free it with gst_toc_entry_unref().</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">entry type.</doc>
+ <type name="TocEntryType" c:type="GstTocEntryType"/>
+ </parameter>
+ <parameter name="uid" transfer-ownership="none">
+ <doc xml:space="preserve">unique ID (UID) in the whole TOC.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="append_sub_entry"
+ c:identifier="gst_toc_entry_append_sub_entry">
+ <doc xml:space="preserve">Appends the #GstTocEntry @subentry to @entry.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="subentry" transfer-ownership="full">
+ <doc xml:space="preserve">A #GstTocEntry</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_entry_type"
+ c:identifier="gst_toc_entry_get_entry_type">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@entry's entry type</doc>
+ <type name="TocEntryType" c:type="GstTocEntryType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocEntry</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_loop"
+ c:identifier="gst_toc_entry_get_loop"
+ version="1.4">
+ <doc xml:space="preserve">Get @loop_type and @repeat_count values from the @entry and write them into
+appropriate storages. Loops are e.g. used by sampled instruments. GStreamer
+is not automatically applying the loop. The application can process this
+meta data and use it e.g. to send a seek-event to loop a section.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if all non-%NULL storage pointers were filled with appropriate
+values, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">#GstTocEntry to get values from.</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="loop_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the loop_type
+ value, leave %NULL if not need.</doc>
+ <type name="TocLoopType" c:type="GstTocLoopType*"/>
+ </parameter>
+ <parameter name="repeat_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the repeat_count
+ value, leave %NULL if not need.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_parent" c:identifier="gst_toc_entry_get_parent">
+ <doc xml:space="preserve">Gets the parent #GstTocEntry of @entry.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The parent #GstTocEntry of @entry</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_start_stop_times"
+ c:identifier="gst_toc_entry_get_start_stop_times">
+ <doc xml:space="preserve">Get @start and @stop values from the @entry and write them into appropriate
+storages.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if all non-%NULL storage pointers were filled with appropriate
+values, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">#GstTocEntry to get values from.</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the start value, leave
+ %NULL if not need.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ <parameter name="stop"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the storage for the stop value, leave
+ %NULL if not need.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sub_entries"
+ c:identifier="gst_toc_entry_get_sub_entries">
+ <doc xml:space="preserve">Gets the sub-entries of @entry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A #GList of #GstTocEntry of @entry</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TocEntry"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tags" c:identifier="gst_toc_entry_get_tags">
+ <doc xml:space="preserve">Gets the tags for @entry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagList for @entry</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_toc" c:identifier="gst_toc_entry_get_toc">
+ <doc xml:space="preserve">Gets the parent #GstToc of @entry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The parent #GstToc of @entry</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uid" c:identifier="gst_toc_entry_get_uid">
+ <doc xml:space="preserve">Gets the UID of @entry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The UID of @entry</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_alternative"
+ c:identifier="gst_toc_entry_is_alternative">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @entry's type is an alternative type, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocEntry</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_sequence" c:identifier="gst_toc_entry_is_sequence">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @entry's type is a sequence type, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocEntry</doc>
+ <type name="TocEntry" c:type="const GstTocEntry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_toc_entry_merge_tags">
+ <doc xml:space="preserve">Merge @tags into the existing tags of @entry using @mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstTagList or %NULL</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTagMergeMode</doc>
+ <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_loop"
+ c:identifier="gst_toc_entry_set_loop"
+ version="1.4">
+ <doc xml:space="preserve">Set @loop_type and @repeat_count values for the @entry.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">#GstTocEntry to set values.</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="loop_type" transfer-ownership="none">
+ <doc xml:space="preserve">loop_type value to set.</doc>
+ <type name="TocLoopType" c:type="GstTocLoopType"/>
+ </parameter>
+ <parameter name="repeat_count" transfer-ownership="none">
+ <doc xml:space="preserve">repeat_count value to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_start_stop_times"
+ c:identifier="gst_toc_entry_set_start_stop_times">
+ <doc xml:space="preserve">Set @start and @stop values for the @entry.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">#GstTocEntry to set values.</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">start value to set.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">stop value to set.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tags" c:identifier="gst_toc_entry_set_tags">
+ <doc xml:space="preserve">Set a #GstTagList with tags for the complete @entry.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="entry" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTocEntry instance</doc>
+ <type name="TocEntry" c:type="GstTocEntry*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstTagList or %NULL</doc>
+ <type name="TagList" c:type="GstTagList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="TocEntryType"
+ glib:type-name="GstTocEntryType"
+ glib:get-type="gst_toc_entry_type_get_type"
+ c:type="GstTocEntryType">
+ <doc xml:space="preserve">The different types of TOC entries (see #GstTocEntry).
+
+There are two types of TOC entries: alternatives or parts in a sequence.</doc>
+ <member name="angle"
+ value="-3"
+ c:identifier="GST_TOC_ENTRY_TYPE_ANGLE"
+ glib:nick="angle">
+ <doc xml:space="preserve">entry is an angle (i.e. an alternative)</doc>
+ </member>
+ <member name="version"
+ value="-2"
+ c:identifier="GST_TOC_ENTRY_TYPE_VERSION"
+ glib:nick="version">
+ <doc xml:space="preserve">entry is a version (i.e. alternative)</doc>
+ </member>
+ <member name="edition"
+ value="-1"
+ c:identifier="GST_TOC_ENTRY_TYPE_EDITION"
+ glib:nick="edition">
+ <doc xml:space="preserve">entry is an edition (i.e. alternative)</doc>
+ </member>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_TOC_ENTRY_TYPE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid entry type value</doc>
+ </member>
+ <member name="title"
+ value="1"
+ c:identifier="GST_TOC_ENTRY_TYPE_TITLE"
+ glib:nick="title">
+ <doc xml:space="preserve">entry is a title (i.e. a part of a sequence)</doc>
+ </member>
+ <member name="track"
+ value="2"
+ c:identifier="GST_TOC_ENTRY_TYPE_TRACK"
+ glib:nick="track">
+ <doc xml:space="preserve">entry is a track (i.e. a part of a sequence)</doc>
+ </member>
+ <member name="chapter"
+ value="3"
+ c:identifier="GST_TOC_ENTRY_TYPE_CHAPTER"
+ glib:nick="chapter">
+ <doc xml:space="preserve">entry is a chapter (i.e. a part of a sequence)</doc>
+ </member>
+ <function name="get_nick" c:identifier="gst_toc_entry_type_get_nick">
+ <doc xml:space="preserve">Converts @type to a string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Returns a human-readable string for @type. This string is
+ only for debugging purpose and should not be displayed in a user
+ interface.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocEntryType.</doc>
+ <type name="TocEntryType" c:type="GstTocEntryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="TocLoopType"
+ version="1.4"
+ glib:type-name="GstTocLoopType"
+ glib:get-type="gst_toc_loop_type_get_type"
+ c:type="GstTocLoopType">
+ <doc xml:space="preserve">How a #GstTocEntry should be repeated. By default, entries are played a
+single time.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_TOC_LOOP_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">single forward playback</doc>
+ </member>
+ <member name="forward"
+ value="1"
+ c:identifier="GST_TOC_LOOP_FORWARD"
+ glib:nick="forward">
+ <doc xml:space="preserve">repeat forward</doc>
+ </member>
+ <member name="reverse"
+ value="2"
+ c:identifier="GST_TOC_LOOP_REVERSE"
+ glib:nick="reverse">
+ <doc xml:space="preserve">repeat backward</doc>
+ </member>
+ <member name="ping_pong"
+ value="3"
+ c:identifier="GST_TOC_LOOP_PING_PONG"
+ glib:nick="ping-pong">
+ <doc xml:space="preserve">repeat forward and backward</doc>
+ </member>
+ </enumeration>
+ <enumeration name="TocScope"
+ glib:type-name="GstTocScope"
+ glib:get-type="gst_toc_scope_get_type"
+ c:type="GstTocScope">
+ <doc xml:space="preserve">The scope of a TOC.</doc>
+ <member name="global"
+ value="1"
+ c:identifier="GST_TOC_SCOPE_GLOBAL"
+ glib:nick="global">
+ <doc xml:space="preserve">global TOC representing all selectable options
+ (this is what applications are usually interested in)</doc>
+ </member>
+ <member name="current"
+ value="2"
+ c:identifier="GST_TOC_SCOPE_CURRENT"
+ glib:nick="current">
+ <doc xml:space="preserve">TOC for the currently active/selected stream
+ (this is a TOC representing the current stream from start to EOS,
+ and is what a TOC writer / muxer is usually interested in; it will
+ usually be a subset of the global TOC, e.g. just the chapters of
+ the current title, or the chapters selected for playback from the
+ current title)</doc>
+ </member>
+ </enumeration>
+ <interface name="TocSetter"
+ c:symbol-prefix="toc_setter"
+ c:type="GstTocSetter"
+ glib:type-name="GstTocSetter"
+ glib:get-type="gst_toc_setter_get_type"
+ glib:type-struct="TocSetterInterface">
+ <doc xml:space="preserve">Element interface that allows setting of the TOC.
+
+Elements that support some kind of chapters or editions (or tracks like in
+the FLAC cue sheet) will implement this interface.
+
+If you just want to retrieve the TOC in your application then all you
+need to do is watch for TOC messages on your pipeline's bus (or you can
+perform TOC query). This interface is only for setting TOC data, not for
+extracting it. To set TOC from the application, find proper tocsetter element
+and set TOC using gst_toc_setter_set_toc().
+
+Elements implementing the #GstTocSetter interface can extend existing TOC
+by getting extend UID for that (you can use gst_toc_find_entry() to retrieve it)
+with any TOC entries received from downstream.</doc>
+ <prerequisite name="Element"/>
+ <method name="get_toc" c:identifier="gst_toc_setter_get_toc">
+ <doc xml:space="preserve">Return current TOC the setter uses. The TOC should not be
+modified without making it writable first.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">TOC set, or %NULL. Unref with
+ gst_toc_unref() when no longer needed</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocSetter.</doc>
+ <type name="TocSetter" c:type="GstTocSetter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_toc_setter_reset">
+ <doc xml:space="preserve">Reset the internal TOC. Elements should call this from within the
+state-change handler.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocSetter.</doc>
+ <type name="TocSetter" c:type="GstTocSetter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_toc" c:identifier="gst_toc_setter_set_toc">
+ <doc xml:space="preserve">Set the given TOC on the setter. Previously set TOC will be
+unreffed before setting a new one.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="setter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocSetter.</doc>
+ <type name="TocSetter" c:type="GstTocSetter*"/>
+ </instance-parameter>
+ <parameter name="toc"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstToc to set.</doc>
+ <type name="Toc" c:type="GstToc*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="TocSetterInterface"
+ c:type="GstTocSetterInterface"
+ glib:is-gtype-struct-for="TocSetter">
+ <doc xml:space="preserve">#GstTocSetterInterface interface.</doc>
+ <field name="g_iface">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
+ <class name="Tracer"
+ c:symbol-prefix="tracer"
+ c:type="GstTracer"
+ parent="Object"
+ abstract="1"
+ glib:type-name="GstTracer"
+ glib:get-type="gst_tracer_get_type"
+ glib:type-struct="TracerClass">
+ <doc xml:space="preserve">Tracing modules will subclass #GstTracer and register through
+gst_tracer_register(). Modules can attach to various hook-types - see
+gst_tracing_register_hook(). When invoked they receive hook specific
+contextual data, which they must not modify.</doc>
+ <property name="params"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent">
+ <type name="Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TracerPrivate" c:type="GstTracerPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TracerClass"
+ c:type="GstTracerClass"
+ glib:is-gtype-struct-for="Tracer">
+ <field name="parent_class">
+ <type name="ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TracerFactory"
+ c:symbol-prefix="tracer_factory"
+ c:type="GstTracerFactory"
+ version="1.8"
+ parent="PluginFeature"
+ glib:type-name="GstTracerFactory"
+ glib:get-type="gst_tracer_factory_get_type"
+ glib:type-struct="TracerFactoryClass">
+ <doc xml:space="preserve">Use gst_tracer_factory_get_list() to get a list of tracer factories known to
+GStreamer.</doc>
+ <function name="get_list"
+ c:identifier="gst_tracer_factory_get_list"
+ version="1.8">
+ <doc xml:space="preserve">Gets the list of all registered tracer factories. You must free the
+list using gst_plugin_feature_list_free().
+
+The returned factories are sorted by factory name.
+
+Free-function: gst_plugin_feature_list_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of all
+ registered #GstTracerFactory.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TracerFactory"/>
+ </type>
+ </return-value>
+ </function>
+ <method name="get_tracer_type"
+ c:identifier="gst_tracer_factory_get_tracer_type">
+ <doc xml:space="preserve">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().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GType for tracers managed by this factory or 0 if
+the factory is not loaded.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">factory to get managed #GType from</doc>
+ <type name="TracerFactory" c:type="GstTracerFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="TracerFactoryClass"
+ c:type="GstTracerFactoryClass"
+ disguised="1"
+ glib:is-gtype-struct-for="TracerFactory">
+ </record>
+ <record name="TracerPrivate" c:type="GstTracerPrivate" disguised="1">
+ </record>
+ <class name="TracerRecord"
+ c:symbol-prefix="tracer_record"
+ c:type="GstTracerRecord"
+ parent="Object"
+ glib:type-name="GstTracerRecord"
+ glib:get-type="gst_tracer_record_get_type"
+ glib:type-struct="TracerRecordClass">
+ <doc xml:space="preserve">Tracing modules will create instances of this class to announce the data they
+will log and create a log formatter.</doc>
+ </class>
+ <record name="TracerRecordClass"
+ c:type="GstTracerRecordClass"
+ disguised="1"
+ glib:is-gtype-struct-for="TracerRecord">
+ </record>
+ <bitfield name="TracerValueFlags"
+ glib:type-name="GstTracerValueFlags"
+ glib:get-type="gst_tracer_value_flags_get_type"
+ c:type="GstTracerValueFlags">
+ <doc xml:space="preserve">Flag that describe the value. These flags help applications processing the
+logs to understand the values.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_TRACER_VALUE_FLAGS_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="optional"
+ value="1"
+ c:identifier="GST_TRACER_VALUE_FLAGS_OPTIONAL"
+ glib:nick="optional">
+ <doc xml:space="preserve">the value is optional. When using this flag
+ one need to have an additional boolean arg before this value in the
+ var-args list passed to gst_tracer_record_log().</doc>
+ </member>
+ <member name="aggregated"
+ value="2"
+ c:identifier="GST_TRACER_VALUE_FLAGS_AGGREGATED"
+ glib:nick="aggregated">
+ <doc xml:space="preserve">the value is a combined figure, since the
+ start of tracing. Examples are averages or timestamps.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="TracerValueScope"
+ version="1.8"
+ glib:type-name="GstTracerValueScope"
+ glib:get-type="gst_tracer_value_scope_get_type"
+ c:type="GstTracerValueScope">
+ <doc xml:space="preserve">Tracing record will contain fields that contain a meassured value or extra
+meta-data. One such meta data are values that tell where a measurement was
+taken. This enumerating declares to which scope such a meta data field
+relates to. If it is e.g. %GST_TRACER_VALUE_SCOPE_PAD, then each of the log
+events may contain values for different #GstPads.</doc>
+ <member name="process"
+ value="0"
+ c:identifier="GST_TRACER_VALUE_SCOPE_PROCESS"
+ glib:nick="process">
+ <doc xml:space="preserve">the value is related to the process</doc>
+ </member>
+ <member name="thread"
+ value="1"
+ c:identifier="GST_TRACER_VALUE_SCOPE_THREAD"
+ glib:nick="thread">
+ <doc xml:space="preserve">the value is related to a thread</doc>
+ </member>
+ <member name="element"
+ value="2"
+ c:identifier="GST_TRACER_VALUE_SCOPE_ELEMENT"
+ glib:nick="element">
+ <doc xml:space="preserve">the value is related to an #GstElement</doc>
+ </member>
+ <member name="pad"
+ value="3"
+ c:identifier="GST_TRACER_VALUE_SCOPE_PAD"
+ glib:nick="pad">
+ <doc xml:space="preserve">the value is related to a #GstPad</doc>
+ </member>
+ </enumeration>
+ <record name="TypeFind" c:type="GstTypeFind">
+ <doc xml:space="preserve">The following functions allow you to detect the media type of an unknown
+stream.</doc>
+ <field name="peek">
+ <callback name="peek">
+ <return-value transfer-ownership="none">
+ <type name="guint8" c:type="const guint8*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="suggest">
+ <callback name="suggest">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="probability" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">The data used by the caller of the typefinding function.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="get_length">
+ <callback name="get_length">
+ <return-value transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="get_length" c:identifier="gst_type_find_get_length">
+ <doc xml:space="preserve">Get the length of the data stream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the data stream, or 0 if it is not available.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTypeFind the function was called with</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek" c:identifier="gst_type_find_peek">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the
+ requested data, or %NULL if that data is not available.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTypeFind object the function was called with</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">The offset</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">The number of bytes to return</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="suggest" c:identifier="gst_type_find_suggest">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTypeFind object the function was called with</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </instance-parameter>
+ <parameter name="probability" transfer-ownership="none">
+ <doc xml:space="preserve">The probability in percent that the suggestion is right</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">The fixed #GstCaps to suggest</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="suggest_simple"
+ c:identifier="gst_type_find_suggest_simple"
+ introspectable="0">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTypeFind object the function was called with</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </instance-parameter>
+ <parameter name="probability" transfer-ownership="none">
+ <doc xml:space="preserve">The probability in percent that the suggestion is right</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="media_type" transfer-ownership="none">
+ <doc xml:space="preserve">the media type of the suggested caps</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="fieldname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">first field of the suggested caps, or %NULL</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">additional arguments to the suggested caps in the same format as the
+ arguments passed to gst_structure_new() (ie. triplets of field name,
+ field GType and field value)</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="register" c:identifier="gst_type_find_register">
+ <doc xml:space="preserve">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's plugin initialization.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstPlugin, or %NULL for a static typefind function</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">The name for registering</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <doc xml:space="preserve">The rank (or importance) of this typefind function</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="6"
+ destroy="7">
+ <doc xml:space="preserve">The #GstTypeFindFunction to use</doc>
+ <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+ </parameter>
+ <parameter name="extensions"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Optional comma-separated list of extensions
+ that could belong to this type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="possible_caps" transfer-ownership="none">
+ <doc xml:space="preserve">Optionally the caps that could be returned when typefinding
+ succeeds</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Optional user data. This user data must be available until the plugin
+ is unloaded.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="data_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">a #GDestroyNotify that will be called on @data when the plugin
+ is unloaded.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <class name="TypeFindFactory"
+ c:symbol-prefix="type_find_factory"
+ c:type="GstTypeFindFactory"
+ parent="PluginFeature"
+ glib:type-name="GstTypeFindFactory"
+ glib:get-type="gst_type_find_factory_get_type"
+ glib:type-struct="TypeFindFactoryClass">
+ <doc xml:space="preserve">These functions allow querying informations about registered typefind
+functions. How to create and register these functions is described in
+the section &lt;link linkend="gstreamer-Writing-typefind-functions"&gt;
+"Writing typefind functions"&lt;/link&gt;.
+
+The following example shows how to write a very simple typefinder that
+identifies the given data. You can get quite a bit more complicated than
+that though.
+|[&lt;!-- language="C" --&gt;
+ typedef struct {
+ guint8 *data;
+ guint size;
+ guint probability;
+ GstCaps *data;
+ } MyTypeFind;
+ static void
+ my_peek (gpointer data, gint64 offset, guint size)
+ {
+ MyTypeFind *find = (MyTypeFind *) data;
+ if (offset &amp;gt;= 0 &amp;amp;&amp;amp; offset + size &amp;lt;= find-&gt;size) {
+ return find-&gt;data + offset;
+ }
+ return NULL;
+ }
+ static void
+ my_suggest (gpointer data, guint probability, GstCaps *caps)
+ {
+ MyTypeFind *find = (MyTypeFind *) data;
+ if (probability &amp;gt; find-&gt;probability) {
+ find-&gt;probability = probability;
+ gst_caps_replace (&amp;amp;find-&gt;caps, caps);
+ }
+ }
+ static GstCaps *
+ find_type (guint8 *data, guint size)
+ {
+ GList *walk, *type_list;
+ MyTypeFind find = {data, size, 0, NULL};
+ GstTypeFind gst_find = {my_peek, my_suggest, &amp;amp;find, };
+ walk = type_list = gst_type_find_factory_get_list ();
+ while (walk) {
+ GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk-&gt;data);
+ walk = g_list_next (walk)
+ gst_type_find_factory_call_function (factory, &amp;amp;gst_find);
+ }
+ g_list_free (type_list);
+ return find.caps;
+ };
+]|</doc>
+ <function name="get_list" c:identifier="gst_type_find_factory_get_list">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_plugin_feature_list_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of all
+ registered #GstTypeFindFactory.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="TypeFindFactory"/>
+ </type>
+ </return-value>
+ </function>
+ <method name="call_function"
+ c:identifier="gst_type_find_factory_call_function">
+ <doc xml:space="preserve">Calls the #GstTypeFindFunction associated with this factory.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTypeFindFactory</doc>
+ <type name="TypeFindFactory" c:type="GstTypeFindFactory*"/>
+ </instance-parameter>
+ <parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">a properly setup #GstTypeFind entry. The get_data
+ and suggest_type members must be set.</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_type_find_factory_get_caps">
+ <doc xml:space="preserve">Gets the #GstCaps associated with a typefind factory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps associated with this factory</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTypeFindFactory</doc>
+ <type name="TypeFindFactory" c:type="GstTypeFindFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_extensions"
+ c:identifier="gst_type_find_factory_get_extensions">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">
+ a %NULL-terminated array of extensions associated with this factory</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTypeFindFactory</doc>
+ <type name="TypeFindFactory" c:type="GstTypeFindFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_function"
+ c:identifier="gst_type_find_factory_has_function">
+ <doc xml:space="preserve">Check whether the factory has a typefind function. Typefind factories
+without typefind functions are a last-effort fallback mechanism to
+e.g. assume a certain media type based on the file extension.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the factory has a typefind functions set, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="factory" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTypeFindFactory</doc>
+ <type name="TypeFindFactory" c:type="GstTypeFindFactory*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="TypeFindFactoryClass"
+ c:type="GstTypeFindFactoryClass"
+ disguised="1"
+ glib:is-gtype-struct-for="TypeFindFactory">
+ </record>
+ <callback name="TypeFindFunction" c:type="GstTypeFindFunction">
+ <doc xml:space="preserve">A function that will be called by typefinding.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="find" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstTypeFind structure</doc>
+ <type name="TypeFind" c:type="GstTypeFind*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">optional data to pass to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="TypeFindProbability"
+ glib:type-name="GstTypeFindProbability"
+ glib:get-type="gst_type_find_probability_get_type"
+ c:type="GstTypeFindProbability">
+ <doc xml:space="preserve">The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_TYPE_FIND_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">type undetected.</doc>
+ </member>
+ <member name="minimum"
+ value="1"
+ c:identifier="GST_TYPE_FIND_MINIMUM"
+ glib:nick="minimum">
+ <doc xml:space="preserve">unlikely typefind.</doc>
+ </member>
+ <member name="possible"
+ value="50"
+ c:identifier="GST_TYPE_FIND_POSSIBLE"
+ glib:nick="possible">
+ <doc xml:space="preserve">possible type detected.</doc>
+ </member>
+ <member name="likely"
+ value="80"
+ c:identifier="GST_TYPE_FIND_LIKELY"
+ glib:nick="likely">
+ <doc xml:space="preserve">likely a type was detected.</doc>
+ </member>
+ <member name="nearly_certain"
+ value="99"
+ c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"
+ glib:nick="nearly-certain">
+ <doc xml:space="preserve">nearly certain that a type was detected.</doc>
+ </member>
+ <member name="maximum"
+ value="100"
+ c:identifier="GST_TYPE_FIND_MAXIMUM"
+ glib:nick="maximum">
+ <doc xml:space="preserve">very certain a type was detected.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="URIError"
+ glib:type-name="GstURIError"
+ glib:get-type="gst_uri_error_get_type"
+ c:type="GstURIError"
+ glib:error-domain="gst-uri-error-quark">
+ <doc xml:space="preserve">Different URI-related errors that can occur.</doc>
+ <member name="unsupported_protocol"
+ value="0"
+ c:identifier="GST_URI_ERROR_UNSUPPORTED_PROTOCOL"
+ glib:nick="unsupported-protocol">
+ <doc xml:space="preserve">The protocol is not supported</doc>
+ </member>
+ <member name="bad_uri"
+ value="1"
+ c:identifier="GST_URI_ERROR_BAD_URI"
+ glib:nick="bad-uri">
+ <doc xml:space="preserve">There was a problem with the URI</doc>
+ </member>
+ <member name="bad_state"
+ value="2"
+ c:identifier="GST_URI_ERROR_BAD_STATE"
+ glib:nick="bad-state">
+ <doc xml:space="preserve">Could not set or change the URI because the
+ URI handler was in a state where that is not possible or not permitted</doc>
+ </member>
+ <member name="bad_reference"
+ value="3"
+ c:identifier="GST_URI_ERROR_BAD_REFERENCE"
+ glib:nick="bad-reference">
+ <doc xml:space="preserve">There was a problem with the entity that
+ the URI references</doc>
+ </member>
+ <function name="quark" c:identifier="gst_uri_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <interface name="URIHandler"
+ c:symbol-prefix="uri_handler"
+ c:type="GstURIHandler"
+ glib:type-name="GstURIHandler"
+ glib:get-type="gst_uri_handler_get_type"
+ glib:type-struct="URIHandlerInterface">
+ <doc xml:space="preserve">The #GstURIHandler is an interface that is implemented by Source and Sink
+#GstElement to unify handling of URI.
+
+An application can use the following functions to quickly get an element
+that handles the given URI for reading or writing
+(gst_element_make_from_uri()).
+
+Source and Sink plugins should implement this interface when possible.</doc>
+ <virtual-method name="get_uri" invoker="get_uri">
+ <doc xml:space="preserve">Gets the currently handled URI.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the URI currently handled by
+ the @handler. Returns %NULL if there are no URI currently
+ handled. The returned string must be freed with g_free() when no
+ longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_uri" invoker="set_uri" throws="1">
+ <doc xml:space="preserve">Tries to set the URI of the given handler.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the URI was set successfully, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">URI to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_protocols"
+ c:identifier="gst_uri_handler_get_protocols">
+ <doc xml:space="preserve">Gets the list of protocols supported by @handler. This list may not be
+modified.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the
+ supported protocols. Returns %NULL if the @handler isn't
+ implemented properly, or the @handler doesn't support any
+ protocols.</doc>
+ <array c:type="const gchar* const*">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler.</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri" c:identifier="gst_uri_handler_get_uri">
+ <doc xml:space="preserve">Gets the currently handled URI.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the URI currently handled by
+ the @handler. Returns %NULL if there are no URI currently
+ handled. The returned string must be freed with g_free() when no
+ longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri_type" c:identifier="gst_uri_handler_get_uri_type">
+ <doc xml:space="preserve">Gets the type of the given URI handler</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstURIType of the URI handler.
+Returns #GST_URI_UNKNOWN if the @handler isn't implemented correctly.</doc>
+ <type name="URIType" c:type="GstURIType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler.</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_uri" c:identifier="gst_uri_handler_set_uri" throws="1">
+ <doc xml:space="preserve">Tries to set the URI of the given handler.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the URI was set successfully, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">URI to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="URIHandlerInterface"
+ c:type="GstURIHandlerInterface"
+ glib:is-gtype-struct-for="URIHandler">
+ <doc xml:space="preserve">Any #GstElement using this interface should implement these methods.</doc>
+ <field name="parent">
+ <doc xml:space="preserve">The parent interface type</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="get_type">
+ <callback name="get_type">
+ <return-value transfer-ownership="none">
+ <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">
+ <callback name="get_protocols">
+ <return-value transfer-ownership="none">
+ <array c:type="const gchar* const*">
+ <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="get_uri">
+ <callback name="get_uri">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the URI currently handled by
+ the @handler. Returns %NULL if there are no URI currently
+ handled. The returned string must be freed with g_free() when no
+ longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_uri">
+ <callback name="set_uri" throws="1">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the URI was set successfully, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="handler" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstURIHandler</doc>
+ <type name="URIHandler" c:type="GstURIHandler*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">URI to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <enumeration name="URIType"
+ glib:type-name="GstURIType"
+ glib:get-type="gst_uri_type_get_type"
+ c:type="GstURIType">
+ <doc xml:space="preserve">The different types of URI direction.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_URI_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">The URI direction is unknown</doc>
+ </member>
+ <member name="sink"
+ value="1"
+ c:identifier="GST_URI_SINK"
+ glib:nick="sink">
+ <doc xml:space="preserve">The URI is a consumer.</doc>
+ </member>
+ <member name="src" value="2" c:identifier="GST_URI_SRC" glib:nick="src">
+ <doc xml:space="preserve">The URI is a producer.</doc>
+ </member>
+ </enumeration>
+ <constant name="URI_NO_PORT" value="0" c:type="GST_URI_NO_PORT">
+ <doc xml:space="preserve">Value for #GstUri&lt;!-- --&gt;.port to indicate no port number.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="USECOND" value="1000" c:type="GST_USECOND">
+ <doc xml:space="preserve">Constant that defines one GStreamer microsecond.</doc>
+ <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </constant>
+ <record name="Uri"
+ c:type="GstUri"
+ glib:type-name="GstUri"
+ glib:get-type="gst_uri_get_type"
+ c:symbol-prefix="uri">
+ <doc xml:space="preserve">A #GstUri object can be used to parse and split a URI string into its
+constituant parts. Two #GstUri objects can be joined to make a new #GstUri
+using the algorithm described in RFC3986.</doc>
+ <constructor name="new" c:identifier="gst_uri_new" version="1.6">
+ <doc xml:space="preserve">Creates a new #GstUri object with the given URI parts. The path and query
+strings will be broken down into their elements. All strings should not be
+escaped except where indicated.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstUri object.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <parameter name="scheme"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The scheme for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="userinfo"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The user-info for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="host"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The host name for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">The port number for the new URI or %GST_URI_NO_PORT.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="path"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The path for the new URI with '/' separating path
+ elements.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="query"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The query string for the new URI with '&amp;' separating
+ query elements. Elements containing '&amp;' characters
+ should encode them as "&amp;percnt;26".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="fragment"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The fragment name for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="append_path"
+ c:identifier="gst_uri_append_path"
+ version="1.6">
+ <doc xml:space="preserve">Append a path onto the end of the path in the URI. The path is not
+normalized, call #gst_uri_normalize() to normalize the path.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the path was appended successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="relative_path" transfer-ownership="none">
+ <doc xml:space="preserve">Relative path to append to the end of the current path.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_path_segment"
+ c:identifier="gst_uri_append_path_segment"
+ version="1.6">
+ <doc xml:space="preserve">Append a single path segment onto the end of the URI path.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the path was appended successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="path_segment" transfer-ownership="none">
+ <doc xml:space="preserve">The path segment string to append to the URI path.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="equal" c:identifier="gst_uri_equal" version="1.6">
+ <doc xml:space="preserve">Compares two #GstUri objects to see if they represent the same normalized
+URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the normalized versions of the two URI's would be equal.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="first" transfer-ownership="none">
+ <doc xml:space="preserve">First #GstUri to compare.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ <parameter name="second" transfer-ownership="none">
+ <doc xml:space="preserve">Second #GstUri to compare.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="from_string_with_base"
+ c:identifier="gst_uri_from_string_with_base"
+ version="1.6">
+ <doc xml:space="preserve">Like gst_uri_from_string() but also joins with a base URI.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstUri object.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="base"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The base URI to join the new URI with.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI string to parse.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_fragment"
+ c:identifier="gst_uri_get_fragment"
+ version="1.6">
+ <doc xml:space="preserve">Get the fragment name from the URI or %NULL if it doesn't exist.
+If @uri is %NULL then returns %NULL.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The host name from the #GstUri object or %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">This #GstUri object.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_host" c:identifier="gst_uri_get_host" version="1.6">
+ <doc xml:space="preserve">Get the host name from the URI or %NULL if it doesn't exist.
+If @uri is %NULL then returns %NULL.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The host name from the #GstUri object or %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">This #GstUri object.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_media_fragment_table"
+ c:identifier="gst_uri_get_media_fragment_table"
+ version="1.12">
+ <doc xml:space="preserve">Get the media fragment table from the URI, as defined by "Media Fragments URI 1.0".
+Hash table returned by this API is a list of "key-value" pairs, and the each
+pair is generated by splitting "URI fragment" per "&amp;" sub-delims, then "key"
+and "value" are splitted by "=" sub-delims. The "key" returned by this API may
+be undefined keyword by standard.
+A value may be %NULL to indicate that the key should appear in the fragment
+string in the URI, but does not have a value. Free the returned #GHashTable
+with #g_hash_table_unref() when it is no longer required.
+Modifying this hash table does not affect the fragment in the URI.
+
+See more about Media Fragments URI 1.0 (W3C) at https://www.w3.org/TR/media-frags/</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The
+ fragment hash table from the URI.</doc>
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="utf8"/>
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to get the fragment table from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_path" c:identifier="gst_uri_get_path" version="1.6">
+ <doc xml:space="preserve">Extract the path string from the URI object.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">(nullable): The path from the URI. Once finished
+ with the string should be g_free()'d.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstUri to get the path from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_path_segments"
+ c:identifier="gst_uri_get_path_segments"
+ version="1.6">
+ <doc xml:space="preserve">Get a list of path segments from the URI.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of path segment
+ strings or %NULL if no path segments are available. Free the list
+ when no longer needed with g_list_free_full(list, g_free).</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to get the path from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_path_string"
+ c:identifier="gst_uri_get_path_string"
+ version="1.6">
+ <doc xml:space="preserve">Extract the path string from the URI object as a percent encoded URI path.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The path from the URI. Once finished
+ with the string should be g_free()'d.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstUri to get the path from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_port" c:identifier="gst_uri_get_port" version="1.6">
+ <doc xml:space="preserve">Get the port number from the URI or %GST_URI_NO_PORT if it doesn't exist.
+If @uri is %NULL then returns %GST_URI_NO_PORT.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The port number from the #GstUri object or %GST_URI_NO_PORT.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">This #GstUri object.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_query_keys"
+ c:identifier="gst_uri_get_query_keys"
+ version="1.6">
+ <doc xml:space="preserve">Get a list of the query keys from the URI.</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">A list of keys from
+ the URI query. Free the list with g_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to examine.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_query_string"
+ c:identifier="gst_uri_get_query_string"
+ version="1.6">
+ <doc xml:space="preserve">Get a percent encoded URI query string from the @uri.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A percent encoded query string. Use
+ g_free() when no longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to get the query string from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_query_table"
+ c:identifier="gst_uri_get_query_table"
+ version="1.6">
+ <doc xml:space="preserve">Get the query table from the URI. Keys and values in the table are freed
+with g_free when they are deleted. A value may be %NULL to indicate that
+the key should appear in the query string in the URI, but does not have a
+value. Free the returned #GHashTable with #g_hash_table_unref() when it is
+no longer required. Modifying this hash table will modify the query in the
+URI.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The query
+ hash table from the URI.</doc>
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="utf8"/>
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to get the query table from.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_query_value"
+ c:identifier="gst_uri_get_query_value"
+ version="1.6">
+ <doc xml:space="preserve">Get the value associated with the @query_key key. Will return %NULL if the
+key has no value or if the key does not exist in the URI query table. Because
+%NULL is returned for both missing keys and keys with no value, you should
+use gst_uri_query_has_key() to determine if a key is present in the URI
+query.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The value for the given key, or %NULL if not found.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to examine.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ <parameter name="query_key" transfer-ownership="none">
+ <doc xml:space="preserve">The key to lookup.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_scheme" c:identifier="gst_uri_get_scheme">
+ <doc xml:space="preserve">Get the scheme name from the URI or %NULL if it doesn't exist.
+If @uri is %NULL then returns %NULL.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The scheme from the #GstUri object or %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">This #GstUri object.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_userinfo"
+ c:identifier="gst_uri_get_userinfo"
+ version="1.6">
+ <doc xml:space="preserve">Get the userinfo (usually in the form "username:password") from the URI
+or %NULL if it doesn't exist. If @uri is %NULL then returns %NULL.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The userinfo from the #GstUri object or %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">This #GstUri object.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_normalized"
+ c:identifier="gst_uri_is_normalized"
+ version="1.6">
+ <doc xml:space="preserve">Tests the @uri to see if it is normalized. A %NULL @uri is considered to be
+normalized.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the URI is normalized or is %NULL.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstUri to test to see if it is normalized.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_writable"
+ c:identifier="gst_uri_is_writable"
+ version="1.6">
+ <doc xml:space="preserve">Check if it is safe to write to this #GstUri.
+
+Check if the refcount of @uri is exactly 1, meaning that no other
+reference exists to the #GstUri and that the #GstUri is therefore writable.
+
+Modification of a #GstUri should only be done after verifying that it is
+writable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if it is safe to write to the object.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstUri object to test.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="join" c:identifier="gst_uri_join" version="1.6">
+ <doc xml:space="preserve">Join a reference URI onto a base URI using the method from RFC 3986.
+If either URI is %NULL then the other URI will be returned with the ref count
+increased.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A #GstUri which represents the base
+ with the reference URI joined on.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="base_uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The base URI to join another to.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="ref_uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The reference URI to join onto the
+ base URI.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="make_writable"
+ c:identifier="gst_uri_make_writable"
+ version="1.6">
+ <doc xml:space="preserve">Make the #GstUri writable.
+
+Checks if @uri is writable, and if so the original object is returned. If
+not, then a writable copy is made and returned. This gives away the
+reference to @uri and returns a reference to the new #GstUri.
+If @uri is %NULL then %NULL is returned.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A writable version of @uri.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="full">
+ <doc xml:space="preserve">The #GstUri object to make writable.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="new_with_base"
+ c:identifier="gst_uri_new_with_base"
+ version="1.6">
+ <doc xml:space="preserve">Like gst_uri_new(), but joins the new URI onto a base URI.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new URI joined onto @base.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="base"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The base URI to join the new URI to.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="scheme"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The scheme for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="userinfo"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The user-info for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="host"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The host name for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">The port number for the new URI or %GST_URI_NO_PORT.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="path"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The path for the new URI with '/' separating path
+ elements.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="query"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The query string for the new URI with '&amp;' separating
+ query elements. Elements containing '&amp;' characters
+ should encode them as "&amp;percnt;26".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="fragment"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The fragment name for the new URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="normalize" c:identifier="gst_uri_normalize" version="1.6">
+ <doc xml:space="preserve">Normalization will remove extra path segments ("." and "..") from the URI. It
+will also convert the scheme and host name to lower case and any
+percent-encoded values to uppercase.
+
+The #GstUri object must be writable. Check with gst_uri_is_writable() or use
+gst_uri_make_writable() first.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the URI was modified.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstUri to normalize.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="query_has_key"
+ c:identifier="gst_uri_query_has_key"
+ version="1.6">
+ <doc xml:space="preserve">Check if there is a query table entry for the @query_key key.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @query_key exists in the URI query table.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to examine.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ <parameter name="query_key" transfer-ownership="none">
+ <doc xml:space="preserve">The key to lookup.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_query_key"
+ c:identifier="gst_uri_remove_query_key"
+ version="1.6">
+ <doc xml:space="preserve">Remove an entry from the query table by key.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the key existed in the table and was removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="query_key" transfer-ownership="none">
+ <doc xml:space="preserve">The key to remove.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_fragment"
+ c:identifier="gst_uri_set_fragment"
+ version="1.6">
+ <doc xml:space="preserve">Sets the fragment string in the URI. Use a value of %NULL in @fragment to
+unset the fragment string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the fragment was set/unset successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="fragment"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The fragment string to set.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_host" c:identifier="gst_uri_set_host" version="1.6">
+ <doc xml:space="preserve">Set or unset the host for the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the host was set/unset successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="host" transfer-ownership="none">
+ <doc xml:space="preserve">The new host string to set or %NULL to unset.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_path" c:identifier="gst_uri_set_path" version="1.6">
+ <doc xml:space="preserve">Sets or unsets the path in the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the path was set successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="path" transfer-ownership="none">
+ <doc xml:space="preserve">The new path to set with path segments separated by '/', or use %NULL
+ to unset the path.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_path_segments"
+ c:identifier="gst_uri_set_path_segments"
+ version="1.6">
+ <doc xml:space="preserve">Replace the path segments list in the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the path segments were set successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="path_segments"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The new
+ path list to set.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_path_string"
+ c:identifier="gst_uri_set_path_string"
+ version="1.6">
+ <doc xml:space="preserve">Sets or unsets the path in the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the path was set successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="path" transfer-ownership="none">
+ <doc xml:space="preserve">The new percent encoded path to set with path segments separated by
+'/', or use %NULL to unset the path.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_port" c:identifier="gst_uri_set_port" version="1.6">
+ <doc xml:space="preserve">Set or unset the port number for the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the port number was set/unset successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">The new port number to set or %GST_URI_NO_PORT to unset.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_query_string"
+ c:identifier="gst_uri_set_query_string"
+ version="1.6">
+ <doc xml:space="preserve">Sets or unsets the query table in the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query table was set successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The new percent encoded query string to use to populate the query
+ table, or use %NULL to unset the query table.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_query_table"
+ c:identifier="gst_uri_set_query_table"
+ version="1.6">
+ <doc xml:space="preserve">Set the query table to use in the URI. The old table is unreferenced and a
+reference to the new one is used instead. A value if %NULL for @query_table
+will remove the query string from the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the new table was sucessfully used for the query table.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="query_table"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The new
+ query table to use.</doc>
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="utf8"/>
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_query_value"
+ c:identifier="gst_uri_set_query_value"
+ version="1.6">
+ <doc xml:space="preserve">This inserts or replaces a key in the query table. A @query_value of %NULL
+indicates that the key has no associated value, but will still be present in
+the query string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query table was sucessfully updated.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="query_key" transfer-ownership="none">
+ <doc xml:space="preserve">The key for the query entry.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="query_value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The value for the key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_scheme"
+ c:identifier="gst_uri_set_scheme"
+ version="1.6">
+ <doc xml:space="preserve">Set or unset the scheme for the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the scheme was set/unset successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="scheme" transfer-ownership="none">
+ <doc xml:space="preserve">The new scheme to set or %NULL to unset the scheme.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_userinfo"
+ c:identifier="gst_uri_set_userinfo"
+ version="1.6">
+ <doc xml:space="preserve">Set or unset the user information for the URI.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the user information was set/unset successfully.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #GstUri to modify.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </instance-parameter>
+ <parameter name="userinfo" transfer-ownership="none">
+ <doc xml:space="preserve">The new user-information string to set or %NULL to unset.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string" c:identifier="gst_uri_to_string" version="1.6">
+ <doc xml:space="preserve">Convert the URI to a string.
+
+Returns the URI as held in this object as a #gchar* nul-terminated string.
+The caller should g_free() the string once they are finished with it.
+The string is put together as described in RFC 3986.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The string version of the URI.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">This #GstUri to convert to a string.</doc>
+ <type name="Uri" c:type="const GstUri*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="construct"
+ c:identifier="gst_uri_construct"
+ deprecated="1">
+ <doc xml:space="preserve">Constructs a URI for a given valid protocol and location.
+
+Free-function: g_free</doc>
+ <doc-deprecated xml:space="preserve">Use GstURI instead.</doc-deprecated>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new string for this URI. Returns %NULL if the
+ given URI protocol is not valid, or the given location is %NULL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">Protocol for URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="location" transfer-ownership="none">
+ <doc xml:space="preserve">Location for URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="from_string"
+ c:identifier="gst_uri_from_string"
+ version="1.6">
+ <doc xml:space="preserve">Parses a URI string into a new #GstUri object. Will return NULL if the URI
+cannot be parsed.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A new #GstUri object, or NULL.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI string to parse.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_location" c:identifier="gst_uri_get_location">
+ <doc xml:space="preserve">Extracts the location out of a given valid URI, ie. the protocol and "://"
+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().
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the location for this URI. Returns
+ %NULL if the URI isn't valid. If the URI does not contain a location, an
+ empty string is returned.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_protocol" c:identifier="gst_uri_get_protocol">
+ <doc xml:space="preserve">Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The protocol for this URI.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="has_protocol" c:identifier="gst_uri_has_protocol">
+ <doc xml:space="preserve">Checks if the protocol of a given valid URI matches @protocol.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the protocol matches.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">a protocol string (e.g. "http")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="is_valid" c:identifier="gst_uri_is_valid">
+ <doc xml:space="preserve">Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by ":" and maybe a string identifying the location.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the string is a valid URI</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="join_strings"
+ c:identifier="gst_uri_join_strings"
+ version="1.6">
+ <doc xml:space="preserve">This is a convenience function to join two URI strings and return the result.
+The returned string should be g_free()'d after use.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A string representing the percent-encoded join of
+ the two URIs.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="base_uri" transfer-ownership="none">
+ <doc xml:space="preserve">The percent-encoded base URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ref_uri" transfer-ownership="none">
+ <doc xml:space="preserve">The percent-encoded reference URI to join to the @base_uri.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="protocol_is_supported"
+ c:identifier="gst_uri_protocol_is_supported">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to check for a source or a sink</doc>
+ <type name="URIType" c:type="const GstURIType"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">Protocol that should be checked for (e.g. "http" or "smb")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="protocol_is_valid"
+ c:identifier="gst_uri_protocol_is_valid">
+ <doc xml:space="preserve">Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, '+', '-' and '.' and must
+start with a alphabetic character. See RFC 3986 Section 3.1.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the string is a valid protocol identifier, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">A string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <constant name="VALUE_EQUAL" value="0" c:type="GST_VALUE_EQUAL">
+ <doc xml:space="preserve">Indicates that the first value provided to a comparison function
+(gst_value_compare()) is equal to the second one.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VALUE_GREATER_THAN"
+ value="1"
+ c:type="GST_VALUE_GREATER_THAN">
+ <doc xml:space="preserve">Indicates that the first value provided to a comparison function
+(gst_value_compare()) is greater than the second one.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VALUE_LESS_THAN" value="-1" c:type="GST_VALUE_LESS_THAN">
+ <doc xml:space="preserve">Indicates that the first value provided to a comparison function
+(gst_value_compare()) is lesser than the second one.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VALUE_UNORDERED" value="2" c:type="GST_VALUE_UNORDERED">
+ <doc xml:space="preserve">Indicates that the comparison function (gst_value_compare()) can not
+determine a order for the two provided values.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VERSION_MAJOR" value="1" c:type="GST_VERSION_MAJOR">
+ <doc xml:space="preserve">The major version of GStreamer at compile time:</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VERSION_MICRO" value="0" c:type="GST_VERSION_MICRO">
+ <doc xml:space="preserve">The micro version of GStreamer at compile time:</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VERSION_MINOR" value="14" c:type="GST_VERSION_MINOR">
+ <doc xml:space="preserve">The minor version of GStreamer at compile time:</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VERSION_NANO" value="0" c:type="GST_VERSION_NANO">
+ <doc xml:space="preserve">The nano version of GStreamer at compile time:
+Actual releases have 0, GIT versions have 1, prerelease versions have 2-...</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <class name="ValueArray"
+ c:symbol-prefix="value_array"
+ c:type="GstValueArray"
+ glib:type-name="GstValueArray"
+ glib:get-type="gst_value_array_get_type"
+ glib:fundamental="1">
+ <function name="append_and_take_value"
+ c:identifier="gst_value_array_append_and_take_value"
+ version="1.2">
+ <doc xml:space="preserve">Appends @append_value to the GstValueArray in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="append_value" transfer-ownership="full">
+ <doc xml:space="preserve">the value to append</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="append_value"
+ c:identifier="gst_value_array_append_value">
+ <doc xml:space="preserve">Appends @append_value to the GstValueArray in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="append_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to append</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_size" c:identifier="gst_value_array_get_size">
+ <doc xml:space="preserve">Gets the number of values contained in @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_value" c:identifier="gst_value_array_get_value">
+ <doc xml:space="preserve">Gets the value that is a member of the array contained in @value and
+has the index @index.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the value at the given index</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">index of value to get from the array</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="prepend_value"
+ c:identifier="gst_value_array_prepend_value">
+ <doc xml:space="preserve">Prepends @prepend_value to the GstValueArray in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="prepend_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to prepend</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </class>
+ <callback name="ValueCompareFunc" c:type="GstValueCompareFunc">
+ <doc xml:space="preserve">Used together with gst_value_compare() to compare #GValue items.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN
+or GST_VALUE_UNORDERED</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">first value for comparison</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">second value for comparison</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc">
+ <doc xml:space="preserve">Used by gst_value_deserialize() to parse a non-binary form into the #GValue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <doc xml:space="preserve">a string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="ValueList"
+ c:symbol-prefix="value_list"
+ glib:type-name="GstValueList"
+ glib:get-type="gst_value_list_get_type"
+ glib:fundamental="1">
+ <function name="append_and_take_value"
+ c:identifier="gst_value_list_append_and_take_value"
+ version="1.2">
+ <doc xml:space="preserve">Appends @append_value to the GstValueList in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="append_value" transfer-ownership="full">
+ <doc xml:space="preserve">the value to append</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="append_value" c:identifier="gst_value_list_append_value">
+ <doc xml:space="preserve">Appends @append_value to the GstValueList in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="append_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to append</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="concat" c:identifier="gst_value_list_concat">
+ <doc xml:space="preserve">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.
+@dest will be initialized to the type #GST_TYPE_LIST.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">an uninitialized #GValue to take the result</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_size" c:identifier="gst_value_list_get_size">
+ <doc xml:space="preserve">Gets the number of values contained in @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of values</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_value" c:identifier="gst_value_list_get_value">
+ <doc xml:space="preserve">Gets the value that is a member of the list contained in @value and
+has the index @index.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the value at the given index</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">index of value to get from the list</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="merge" c:identifier="gst_value_list_merge">
+ <doc xml:space="preserve">Merges copies of @value1 and @value2. Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.
+
+The result will be put into @dest and will either be a list that will not
+contain any duplicates, or a non-list type (if @value1 and @value2
+were equal).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">an uninitialized #GValue to take the result</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="prepend_value"
+ c:identifier="gst_value_list_prepend_value">
+ <doc xml:space="preserve">Prepends @prepend_value to the GstValueList in @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="prepend_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value to prepend</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </class>
+ <callback name="ValueSerializeFunc" c:type="GstValueSerializeFunc">
+ <doc xml:space="preserve">Used by gst_value_serialize() to obtain a non-binary form of the #GValue.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the string representation of the value</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="ValueTable" c:type="GstValueTable">
+ <doc xml:space="preserve">VTable for the #GValue @type.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">a #GType</doc>
+ <type name="GType" c:type="GType"/>
+ </field>
+ <field name="compare" writable="1">
+ <doc xml:space="preserve">a #GstValueCompareFunc</doc>
+ <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
+ </field>
+ <field name="serialize" writable="1">
+ <doc xml:space="preserve">a #GstValueSerializeFunc</doc>
+ <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
+ </field>
+ <field name="deserialize" writable="1">
+ <doc xml:space="preserve">a #GstValueDeserializeFunc</doc>
+ <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <function name="buffer_get_max_memory"
+ c:identifier="gst_buffer_get_max_memory"
+ moved-to="Buffer.get_max_memory"
+ version="1.2">
+ <doc xml:space="preserve">Get the maximum amount of memory blocks that a buffer can hold. This is a
+compile time constant that can be queried with the function.
+
+When more memory blocks are added, existing memory blocks will be merged
+together to make room for the new block.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of memory blocks that a buffer can hold.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ </function>
+ <function name="calculate_linear_regression"
+ c:identifier="gst_calculate_linear_regression"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Calculates the linear regression of the values @xy and places the
+result in @m_num, @m_denom, @b and @xbase, representing the function
+ y(x) = m_num/m_denom * (x - xbase) + b
+that has the least-square distance from all points @x and @y.
+
+@r_squared will contain the remaining error.
+
+If @temp is not %NULL, it will be used as temporary space for the function,
+in which case the function works without any allocation at all. If @temp is
+%NULL, an allocation will take place. @temp should have at least the same
+amount of memory allocated as @xy, i.e. 2*n*sizeof(GstClockTime).
+
+&gt; This function assumes (x,y) values with reasonable large differences
+&gt; between them. It will not calculate the exact results if the differences
+&gt; between neighbouring values are too small due to not being able to
+&gt; represent sub-integer values during the calculations.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the linear regression was successfully calculated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="xy" transfer-ownership="none">
+ <doc xml:space="preserve">Pairs of (x,y) values</doc>
+ <type name="ClockTime" c:type="const GstClockTime*"/>
+ </parameter>
+ <parameter name="temp" transfer-ownership="none">
+ <doc xml:space="preserve">Temporary scratch space used by the function</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="n" transfer-ownership="none">
+ <doc xml:space="preserve">number of (x,y) pairs</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="m_num"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">numerator of calculated slope</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="m_denom"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">denominator of calculated slope</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="b"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Offset at Y-axis</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="xbase"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Offset at X-axis</doc>
+ <type name="ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="r_squared"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">R-squared</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="caps_features_from_string"
+ c:identifier="gst_caps_features_from_string"
+ moved-to="CapsFeatures.from_string"
+ version="1.2">
+ <doc xml:space="preserve">Creates a #GstCapsFeatures from a string representation.
+
+Free-function: gst_caps_features_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstCapsFeatures or
+ %NULL when the string could not be parsed. Free with
+ gst_caps_features_free() after use.</doc>
+ <type name="CapsFeatures" c:type="GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of a #GstCapsFeatures.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="caps_from_string"
+ c:identifier="gst_caps_from_string"
+ moved-to="Caps.from_string">
+ <doc xml:space="preserve">Converts @caps from a string representation.
+
+The current implementation of serialization will lead to unexpected results
+when there are nested #GstCaps / #GstStructure deeper than one level.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated #GstCaps</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string to convert to #GstCaps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="core_error_quark"
+ c:identifier="gst_core_error_quark"
+ moved-to="CoreError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="debug_add_log_function"
+ c:identifier="gst_debug_add_log_function">
+ <doc xml:space="preserve">Adds the logging function to the list of logging functions.
+Be sure to use #G_GNUC_NO_INSTRUMENT on that function, it is needed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the function to use</doc>
+ <type name="LogFunction" c:type="GstLogFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when @user_data is not used anymore</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_add_ring_buffer_logger"
+ c:identifier="gst_debug_add_ring_buffer_logger"
+ version="1.14">
+ <doc xml:space="preserve">Adds a memory ringbuffer based debug logger that stores up to
+@max_size_per_thread bytes of logs per thread and times out threads after
+@thread_timeout seconds of inactivity.
+
+Logs can be fetched with gst_debug_ring_buffer_logger_get_logs() and the
+logger can be removed again with gst_debug_remove_ring_buffer_logger().
+Only one logger at a time is possible.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="max_size_per_thread" transfer-ownership="none">
+ <doc xml:space="preserve">Maximum size of log per thread in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="thread_timeout" transfer-ownership="none">
+ <doc xml:space="preserve">Timeout for threads in seconds</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_bin_to_dot_data"
+ c:identifier="gst_debug_bin_to_dot_data">
+ <doc xml:space="preserve">To aid debugging applications one can use this method to obtain the whole
+network of gstreamer elements that form the pipeline into an dot file.
+This data can be processed with graphviz to get an image.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string containing the pipeline in graphviz
+dot format.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">the top-level pipeline that should be analyzed</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="none">
+ <type name="DebugGraphDetails" c:type="GstDebugGraphDetails"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_bin_to_dot_file"
+ c:identifier="gst_debug_bin_to_dot_file">
+ <doc xml:space="preserve">To aid debugging applications one can use this method to write out the whole
+network of gstreamer elements that form the pipeline into an dot file.
+This file can be processed with graphviz to get an image.
+&lt;informalexample&gt;&lt;programlisting&gt;
+ dot -Tpng -oimage.png graph_lowlevel.dot
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">the top-level pipeline that should be analyzed</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="none">
+ <type name="DebugGraphDetails" c:type="GstDebugGraphDetails"/>
+ </parameter>
+ <parameter name="file_name" transfer-ownership="none">
+ <doc xml:space="preserve">output base filename (e.g. "myplayer")</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_bin_to_dot_file_with_ts"
+ c:identifier="gst_debug_bin_to_dot_file_with_ts">
+ <doc xml:space="preserve">This works like gst_debug_bin_to_dot_file(), but adds the current timestamp
+to the filename, so that it can be used to take multiple snapshots.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin" transfer-ownership="none">
+ <doc xml:space="preserve">the top-level pipeline that should be analyzed</doc>
+ <type name="Bin" c:type="GstBin*"/>
+ </parameter>
+ <parameter name="details" transfer-ownership="none">
+ <type name="DebugGraphDetails" c:type="GstDebugGraphDetails"/>
+ </parameter>
+ <parameter name="file_name" transfer-ownership="none">
+ <doc xml:space="preserve">output base filename (e.g. "myplayer")</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_construct_term_color"
+ c:identifier="gst_debug_construct_term_color">
+ <doc xml:space="preserve">Constructs a string that can be used for getting the desired color in color
+terminals.
+You need to free the string after use.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string containing the color
+ definition</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="colorinfo" transfer-ownership="none">
+ <doc xml:space="preserve">the color info</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_construct_win_color"
+ c:identifier="gst_debug_construct_win_color">
+ <doc xml:space="preserve">Constructs an integer that can be used for getting the desired color in
+windows' terminals (cmd.exe). As there is no mean to underline, we simply
+ignore this attribute.
+
+This function returns 0 on non-windows machines.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an integer containing the color definition</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="colorinfo" transfer-ownership="none">
+ <doc xml:space="preserve">the color info</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_get_all_categories"
+ c:identifier="gst_debug_get_all_categories">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">the list of
+ debug categories</doc>
+ <type name="GLib.SList" c:type="GSList*">
+ <type name="DebugCategory"/>
+ </type>
+ </return-value>
+ </function>
+ <function name="debug_get_color_mode"
+ c:identifier="gst_debug_get_color_mode"
+ version="1.2">
+ <doc xml:space="preserve">Changes the coloring mode for debug output.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">see @GstDebugColorMode for possible values.</doc>
+ <type name="DebugColorMode" c:type="GstDebugColorMode"/>
+ </return-value>
+ </function>
+ <function name="debug_get_default_threshold"
+ c:identifier="gst_debug_get_default_threshold">
+ <doc xml:space="preserve">Returns the default threshold that is used for new categories.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the default threshold level</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </return-value>
+ </function>
+ <function name="debug_get_stack_trace"
+ c:identifier="gst_debug_get_stack_trace"
+ version="1.12">
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a stack trace, if libunwind or glibc backtrace are
+present, else %NULL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">A set of #GstStackTraceFlags to determine how the stack
+trace should look like. Pass 0 to retrieve a minimal backtrace.</doc>
+ <type name="StackTraceFlags" c:type="GstStackTraceFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_is_active" c:identifier="gst_debug_is_active">
+ <doc xml:space="preserve">Checks if debugging output is activated.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if debugging is activated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="debug_is_colored" c:identifier="gst_debug_is_colored">
+ <doc xml:space="preserve">Checks if the debugging output should be colored.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the debug output should be colored.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="debug_level_get_name"
+ c:identifier="gst_debug_level_get_name"
+ moved-to="DebugLevel.get_name">
+ <doc xml:space="preserve">Get the string representation of a debugging level</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">the level to get the name for</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_log" c:identifier="gst_debug_log" introspectable="0">
+ <doc xml:space="preserve">Logs the given message using the currently registered debugging handlers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">category to log</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">level of the message is in</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">the function that emitted the message</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">the line from that the message was emitted, usually __LINE__</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="object"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the object this message relates to,
+ or %NULL if none</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">optional arguments for the format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_log_default" c:identifier="gst_debug_log_default">
+ <doc xml:space="preserve">The default logging handler used by GStreamer. Logging functions get called
+whenever a macro like GST_DEBUG or similar is used. By default this function
+is setup to output the message and additional info to stderr (or the log file
+specified via the GST_DEBUG_FILE environment variable) as received via
+@user_data.
+
+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);</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">category to log</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">level of the message</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">the function that emitted the message</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">the line from that the message was emitted, usually __LINE__</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="object"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the object this message relates to,
+ or %NULL if none</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the actual message</doc>
+ <type name="DebugMessage" c:type="GstDebugMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the FILE* to log to</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_log_valist"
+ c:identifier="gst_debug_log_valist"
+ introspectable="0">
+ <doc xml:space="preserve">Logs the given message using the currently registered debugging handlers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">category to log</doc>
+ <type name="DebugCategory" c:type="GstDebugCategory*"/>
+ </parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">level of the message is in</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ <parameter name="file" transfer-ownership="none">
+ <doc xml:space="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="function" transfer-ownership="none">
+ <doc xml:space="preserve">the function that emitted the message</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="line" transfer-ownership="none">
+ <doc xml:space="preserve">the line from that the message was emitted, usually __LINE__</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="object"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the object this message relates to,
+ or %NULL if none</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <doc xml:space="preserve">optional arguments for the format</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_print_stack_trace"
+ c:identifier="gst_debug_print_stack_trace">
+ <doc xml:space="preserve">If libunwind or glibc backtrace are present
+a stack trace is printed.</doc>
+ <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 xml:space="preserve">Removes all registered instances of the given logging functions.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">How many instances of the function were removed</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="call">
+ <doc xml:space="preserve">the log function to remove, or %NULL to
+ remove the default log function</doc>
+ <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 xml:space="preserve">Removes all registered instances of log functions with the given user data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">How many instances of the function were removed</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data of the log function to remove</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_remove_ring_buffer_logger"
+ c:identifier="gst_debug_remove_ring_buffer_logger"
+ version="1.14">
+ <doc xml:space="preserve">Removes any previously added ring buffer logger with
+gst_debug_add_ring_buffer_logger().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="debug_ring_buffer_logger_get_logs"
+ c:identifier="gst_debug_ring_buffer_logger_get_logs"
+ version="1.14">
+ <doc xml:space="preserve">Fetches the current logs per thread from the ring buffer logger. See
+gst_debug_add_ring_buffer_logger() for details.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">NULL-terminated array of
+strings with the debug output per thread</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="debug_set_active" c:identifier="gst_debug_set_active">
+ <doc xml:space="preserve">If activated, debugging messages are sent to the debugging
+handlers.
+It makes sense to deactivate it for speed issues.
+&gt; This function is not threadsafe. It makes sense to only call it
+during initialization.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to use debugging output or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_set_color_mode"
+ c:identifier="gst_debug_set_color_mode"
+ version="1.2">
+ <doc xml:space="preserve">Changes the coloring mode for debug output.
+
+This function may be called before gst_init().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The coloring mode for debug output. See @GstDebugColorMode.</doc>
+ <type name="DebugColorMode" c:type="GstDebugColorMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_set_color_mode_from_string"
+ c:identifier="gst_debug_set_color_mode_from_string"
+ version="1.2">
+ <doc xml:space="preserve">Changes the coloring mode for debug output.
+
+This function may be called before gst_init().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">The coloring mode for debug output. One of the following:
+"on", "auto", "off", "disable", "unix".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_set_colored" c:identifier="gst_debug_set_colored">
+ <doc xml:space="preserve">Sets or unsets the use of coloured debugging output.
+Same as gst_debug_set_color_mode () with the argument being
+being GST_DEBUG_COLOR_MODE_ON or GST_DEBUG_COLOR_MODE_OFF.
+
+This function may be called before gst_init().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="colored" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to use colored output or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_set_default_threshold"
+ c:identifier="gst_debug_set_default_threshold">
+ <doc xml:space="preserve">Sets the default threshold to the given level and updates all categories to
+use this threshold.
+
+This function may be called before gst_init().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">level to set</doc>
+ <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 xml:space="preserve">Sets all categories which match the given glob style pattern to the given
+level.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the categories to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">level to set them to</doc>
+ <type name="DebugLevel" c:type="GstDebugLevel"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_set_threshold_from_string"
+ c:identifier="gst_debug_set_threshold_from_string"
+ version="1.2">
+ <doc xml:space="preserve">Sets the debug logging wanted in the same form as with the GST_DEBUG
+environment variable. You can use wildcards such as '*', but note that
+the order matters when you use wild cards, e.g. "foosrc:6,*src:3,*:2" sets
+everything to log level 2.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">comma-separated list of "category:level" pairs to be used
+ as debug logging levels</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="reset" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to clear all previously-set debug levels before setting
+ new thresholds
+%FALSE if adding the threshold described by @list to the one already set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_unset_threshold_for_name"
+ c:identifier="gst_debug_unset_threshold_for_name">
+ <doc xml:space="preserve">Resets all categories with the given name back to the default level.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">name of the categories to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="deinit" c:identifier="gst_deinit">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="dynamic_type_register"
+ c:identifier="gst_dynamic_type_register">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin" transfer-ownership="none">
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="error_get_message" c:identifier="gst_error_get_message">
+ <doc xml:space="preserve">Get a string describing the error message in the current locale.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string describing
+ the error message (in UTF-8 encoding)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="domain" transfer-ownership="none">
+ <doc xml:space="preserve">the GStreamer error domain this error belongs to.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">the error code belonging to the domain.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_type_get_flags"
+ c:identifier="gst_event_type_get_flags"
+ moved-to="EventType.get_flags">
+ <doc xml:space="preserve">Gets the #GstEventTypeFlags associated with @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEventTypeFlags.</doc>
+ <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEventType</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_type_get_name"
+ c:identifier="gst_event_type_get_name"
+ moved-to="EventType.get_name">
+ <doc xml:space="preserve">Get a printable name for the given event type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the event.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the event type</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_type_to_quark"
+ c:identifier="gst_event_type_to_quark"
+ moved-to="EventType.to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given event type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the event type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the event type</doc>
+ <type name="EventType" c:type="GstEventType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="filename_to_uri"
+ c:identifier="gst_filename_to_uri"
+ throws="1">
+ <doc xml:space="preserve">Similar to g_filename_to_uri(), but attempts to handle relative file paths
+as well. Before converting @filename into an URI, it will be prefixed by
+the current working directory if it is a relative path, and then the path
+will be canonicalised so that it doesn't contain any './' or '../' segments.
+
+On Windows #filename should be in UTF-8 encoding.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">newly-allocated URI string, or NULL on error. The caller must
+ free the URI string with g_free() when no longer needed.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="filename" transfer-ownership="none">
+ <doc xml:space="preserve">absolute or relative file name path</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="flow_get_name" c:identifier="gst_flow_get_name">
+ <doc xml:space="preserve">Gets a string representing the given flow return.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a static string with the name of the flow return.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn to get the name of.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="flow_to_quark" c:identifier="gst_flow_to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given GstFlowReturn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the flow return or 0 if an
+invalid return was specified.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn to get the quark of.</doc>
+ <type name="FlowReturn" c:type="GstFlowReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="format_get_by_nick"
+ c:identifier="gst_format_get_by_nick"
+ moved-to="Format.get_by_nick">
+ <doc xml:space="preserve">Return the format registered with the given nick.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The format with @nick or GST_FORMAT_UNDEFINED
+if the format was not registered.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">The nick of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="format_get_details"
+ c:identifier="gst_format_get_details"
+ moved-to="Format.get_details">
+ <doc xml:space="preserve">Get details about the given format.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The #GstFormatDefinition for @format or %NULL
+on failure.
+
+MT safe.</doc>
+ <type name="FormatDefinition" c:type="const GstFormatDefinition*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format to get details of</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="format_get_name"
+ c:identifier="gst_format_get_name"
+ moved-to="Format.get_name">
+ <doc xml:space="preserve">Get a printable name for the given format. Do not modify or free.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a reference to the static name of the format
+or %NULL if the format is unknown.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="format_iterate_definitions"
+ c:identifier="gst_format_iterate_definitions"
+ moved-to="Format.iterate_definitions">
+ <doc xml:space="preserve">Iterate all the registered formats. The format definition is read
+only.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a GstIterator of #GstFormatDefinition.</doc>
+ <type name="Iterator" c:type="GstIterator*"/>
+ </return-value>
+ </function>
+ <function name="format_register"
+ c:identifier="gst_format_register"
+ moved-to="Format.register">
+ <doc xml:space="preserve">Create a new GstFormat based on the nick or return an
+already registered format with that nick.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A new GstFormat or an already registered format
+with the same nick.
+
+MT safe.</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">The nick of the new format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">The description of the new format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="format_to_quark"
+ c:identifier="gst_format_to_quark"
+ moved-to="Format.to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the format or 0 if the format
+is unknown.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFormat</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="formats_contains" c:identifier="gst_formats_contains">
+ <doc xml:space="preserve">See if the given format is inside the format array.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the format is found inside the array</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="formats" transfer-ownership="none">
+ <doc xml:space="preserve">The format array to search</doc>
+ <array c:type="GstFormat*">
+ <type name="Format" c:type="GstFormat"/>
+ </array>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format to find</doc>
+ <type name="Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_main_executable_path"
+ c:identifier="gst_get_main_executable_path"
+ version="1.14">
+ <doc xml:space="preserve">This helper is mostly helpful for plugins that need to
+inspect the folder of the main executable to determine
+their set of features.
+
+When a plugin is initialized from the gst-plugin-scanner
+external process, the returned path will be the same as from the
+parent process.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The path of the executable that
+ initialized GStreamer, or %NULL if it could not be determined.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ </function>
+ <function name="info_strdup_printf"
+ c:identifier="gst_info_strdup_printf"
+ version="1.8"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates, fills and returns a 0-terminated string from the printf style
+@format string and corresponding arguments.
+
+See gst_info_vasprintf() for when this function is required.
+
+Free with g_free().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated null terminated string or %NULL on any error</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the printf arguments for @format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="info_strdup_vprintf"
+ c:identifier="gst_info_strdup_vprintf"
+ version="1.8"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates, fills and returns a null terminated string from the printf style
+@format string and @args.
+
+See gst_info_vasprintf() for when this function is required.
+
+Free with g_free().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly allocated null terminated string or %NULL on any error</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <doc xml:space="preserve">the va_list of printf arguments for @format</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="info_vasprintf"
+ c:identifier="gst_info_vasprintf"
+ version="1.8"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates and fills a string large enough (including the terminating null
+byte) to hold the specified printf style @format and @args.
+
+This function deals with the GStreamer specific printf specifiers
+#GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. If you do not have these specifiers
+in your @format string, you do not need to use this function and can use
+alternatives such as g_vasprintf().
+
+Free @result with g_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the length of the string allocated into @result or -1 on any error</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="result"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the resulting string</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <doc xml:space="preserve">the va_list of printf arguments for @format</doc>
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="init" c:identifier="gst_init">
+ <doc xml:space="preserve">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="gst-running"&gt;Running GStreamer Applications&lt;/link&gt;
+for how to disable automatic registry updates.
+
+&gt; This function will terminate your program if it was unable to initialize
+&gt; GStreamer for some reason. If you want your program to fall back,
+&gt; use gst_init_check() instead.
+
+WARNING: This function does not work in the same way as corresponding
+functions in other glib-style libraries, such as gtk_init\(\). In
+particular, unknown command line options cause this function to
+abort program execution.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="argc"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argc</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="argv"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argv</doc>
+ <array length="0" zero-terminated="0" c:type="char**">
+ <type name="utf8" c:type="char*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="init_check" c:identifier="gst_init_check" throws="1">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if GStreamer could be initialized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="argc"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argc</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="argv"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to application's argv</doc>
+ <array length="0" zero-terminated="0" c:type="char**">
+ <type name="utf8" c:type="char*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="init_get_option_group"
+ c:identifier="gst_init_get_option_group"
+ introspectable="0">
+ <doc xml:space="preserve">Returns a #GOptionGroup with GStreamer'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).</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a pointer to GStreamer's option group.</doc>
+ <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+ </return-value>
+ </function>
+ <function name="is_caps_features" c:identifier="gst_is_caps_features">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="is_initialized" c:identifier="gst_is_initialized">
+ <doc xml:space="preserve">Use this function to check if GStreamer has been initialized with gst_init()
+or gst_init_check().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if initialization has been done, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="library_error_quark"
+ c:identifier="gst_library_error_quark"
+ moved-to="LibraryError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="make_element_message_details"
+ c:identifier="gst_make_element_message_details"
+ introspectable="0">
+ <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="const char*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_type_get_name"
+ c:identifier="gst_message_type_get_name"
+ moved-to="MessageType.get_name">
+ <doc xml:space="preserve">Get a printable name for the given message type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the message.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the message type</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_type_to_quark"
+ c:identifier="gst_message_type_to_quark"
+ moved-to="MessageType.to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given message type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the message type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the message type</doc>
+ <type name="MessageType" c:type="GstMessageType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="meta_api_type_get_tags"
+ c:identifier="gst_meta_api_type_get_tags"
+ moved-to="Meta.api_type_get_tags"
+ version="1.2">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an array of tags as strings.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="meta_api_type_has_tag"
+ c:identifier="gst_meta_api_type_has_tag"
+ moved-to="Meta.api_type_has_tag">
+ <doc xml:space="preserve">Check if @api was registered with @tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @api was registered with @tag.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag to check</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="meta_api_type_register"
+ c:identifier="gst_meta_api_type_register"
+ moved-to="Meta.api_type_register">
+ <doc xml:space="preserve">Register and return a GType for the @api and associate it with
+@tags.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a unique GType for @api.</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">an API to register</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="tags" transfer-ownership="none">
+ <doc xml:space="preserve">tags for @api</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="meta_get_info"
+ c:identifier="gst_meta_get_info"
+ moved-to="Meta.get_info">
+ <doc xml:space="preserve">Lookup a previously registered meta info structure by its implementation name
+@impl.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #GstMetaInfo with @impl, or
+%NULL when no such metainfo exists.</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="impl" transfer-ownership="none">
+ <doc xml:space="preserve">the name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="meta_register"
+ c:identifier="gst_meta_register"
+ moved-to="Meta.register">
+ <doc xml:space="preserve">Register a new #GstMeta implementation.
+
+The same @info can be retrieved later with gst_meta_get_info() by using
+@impl as the key.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #GstMetaInfo that can be used to
+access metadata.</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="api" transfer-ownership="none">
+ <doc xml:space="preserve">the type of the #GstMeta API</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="impl" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstMeta implementation</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the #GstMeta structure</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="init_func" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a #GstMetaInitFunction</doc>
+ <type name="MetaInitFunction" c:type="GstMetaInitFunction"/>
+ </parameter>
+ <parameter name="free_func" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a #GstMetaFreeFunction</doc>
+ <type name="MetaFreeFunction" c:type="GstMetaFreeFunction"/>
+ </parameter>
+ <parameter name="transform_func"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">a #GstMetaTransformFunction</doc>
+ <type name="MetaTransformFunction"
+ c:type="GstMetaTransformFunction"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="mini_object_replace"
+ c:identifier="gst_mini_object_replace"
+ moved-to="MiniObject.replace">
+ <doc xml:space="preserve">Atomically modifies a pointer to point to a new mini-object.
+The reference count of @olddata is decreased and the reference count of
+@newdata is increased.
+
+Either @newdata and the value pointed to by @olddata may be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @newdata was different from @olddata</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a pointer to a
+ mini-object to be replaced</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ <parameter name="newdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to new mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="mini_object_steal"
+ c:identifier="gst_mini_object_steal"
+ moved-to="MiniObject.steal"
+ introspectable="0">
+ <doc xml:space="preserve">Replace the current #GstMiniObject pointer to by @olddata with %NULL and
+return the old value.</doc>
+ <return-value nullable="1">
+ <doc xml:space="preserve">the #GstMiniObject at @oldata</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a pointer to a mini-object to
+ be stolen</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="mini_object_take"
+ c:identifier="gst_mini_object_take"
+ moved-to="MiniObject.take">
+ <doc xml:space="preserve">Modifies a pointer to point to a new mini-object. The modification
+is done atomically. This version is similar to gst_mini_object_replace()
+except that it does not increase the refcount of @newdata and thus
+takes ownership of @newdata.
+
+Either @newdata and the value pointed to by @olddata may be %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @newdata was different from @olddata</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="olddata"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a pointer to a mini-object to
+ be replaced</doc>
+ <type name="MiniObject" c:type="GstMiniObject**"/>
+ </parameter>
+ <parameter name="newdata" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to new mini-object</doc>
+ <type name="MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pad_mode_get_name"
+ c:identifier="gst_pad_mode_get_name"
+ moved-to="PadMode.get_name">
+ <doc xml:space="preserve">Return the name of a pad mode, for use in debug messages mostly.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">short mnemonic for pad mode @mode</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the pad mode</doc>
+ <type name="PadMode" c:type="GstPadMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="param_spec_array"
+ c:identifier="gst_param_spec_array"
+ version="1.14">
+ <doc xml:space="preserve">This function creates a GstArray GParamSpec for use by objects/elements
+that want to expose properties of GstArray type. This function is
+typically * used in connection with g_object_class_install_property() in a
+GObjects's instance_init function.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly created parameter specification</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">canonical name of the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">nick name for the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="blurb" transfer-ownership="none">
+ <doc xml:space="preserve">description of the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="element_spec" transfer-ownership="none">
+ <doc xml:space="preserve">GParamSpec of the array</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the property specified</doc>
+ <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="param_spec_fraction"
+ c:identifier="gst_param_spec_fraction">
+ <doc xml:space="preserve">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's
+instance_init function.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a newly created parameter specification</doc>
+ <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">canonical name of the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">nick name for the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="blurb" transfer-ownership="none">
+ <doc xml:space="preserve">description of the property specified</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="min_num" transfer-ownership="none">
+ <doc xml:space="preserve">minimum value (fraction numerator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="min_denom" transfer-ownership="none">
+ <doc xml:space="preserve">minimum value (fraction denominator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="max_num" transfer-ownership="none">
+ <doc xml:space="preserve">maximum value (fraction numerator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="max_denom" transfer-ownership="none">
+ <doc xml:space="preserve">maximum value (fraction denominator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="default_num" transfer-ownership="none">
+ <doc xml:space="preserve">default value (fraction numerator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="default_denom" transfer-ownership="none">
+ <doc xml:space="preserve">default value (fraction denominator)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the property specified</doc>
+ <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parent_buffer_meta_api_get_type"
+ c:identifier="gst_parent_buffer_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="parent_buffer_meta_get_info"
+ c:identifier="gst_parent_buffer_meta_get_info"
+ moved-to="ParentBufferMeta.get_info"
+ version="1.6">
+ <doc xml:space="preserve">Get the global #GstMetaInfo describing the #GstParentBufferMeta meta.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="parse_bin_from_description"
+ c:identifier="gst_parse_bin_from_description"
+ throws="1">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a
+ newly-created bin, or %NULL if an error occurred.</doc>
+ <type name="Bin" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin_description" transfer-ownership="none">
+ <doc xml:space="preserve">command line describing the bin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+ <doc xml:space="preserve">whether to automatically create ghost pads
+ for unlinked source or sink pads within the bin</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_bin_from_description_full"
+ c:identifier="gst_parse_bin_from_description_full"
+ throws="1">
+ <doc xml:space="preserve">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).</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a newly-created
+ element, which is guaranteed to be a bin unless
+ GST_FLAG_NO_SINGLE_ELEMENT_BINS was passed, or %NULL if an error
+ occurred.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="bin_description" transfer-ownership="none">
+ <doc xml:space="preserve">command line describing the bin</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+ <doc xml:space="preserve">whether to automatically create ghost pads
+ for unlinked source or sink pads within the bin</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="context"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a parse context allocated with
+ gst_parse_context_new(), or %NULL</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+ <type name="ParseFlags" c:type="GstParseFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_error_quark"
+ c:identifier="gst_parse_error_quark"
+ moved-to="ParseError.quark">
+ <doc xml:space="preserve">Get the error quark used by the parsing subsystem.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark of the parse errors.</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="parse_launch" c:identifier="gst_parse_launch" throws="1">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new element on success, %NULL on
+ failure. If more than one toplevel element is specified by the
+ @pipeline_description, all elements are put into a #GstPipeline, which
+ than is returned.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pipeline_description" transfer-ownership="none">
+ <doc xml:space="preserve">the command line describing the pipeline</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_launch_full"
+ c:identifier="gst_parse_launch_full"
+ throws="1">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new element on success, %NULL on
+ failure. If more than one toplevel element is specified by the
+ @pipeline_description, all elements are put into a #GstPipeline, which
+ then is returned (unless the GST_PARSE_FLAG_PLACE_IN_BIN flag is set, in
+ which case they are put in a #GstBin instead).</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pipeline_description" transfer-ownership="none">
+ <doc xml:space="preserve">the command line describing the pipeline</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="context"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a parse context allocated with
+ gst_parse_context_new(), or %NULL</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+ <type name="ParseFlags" c:type="GstParseFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_launchv" c:identifier="gst_parse_launchv" throws="1">
+ <doc xml:space="preserve">Create a new element based on command line syntax.
+@error will contain an error message if an erroneous pipeline is specified.
+An error does not mean that the pipeline could not be constructed.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new element on success and %NULL
+on failure.</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="argv" transfer-ownership="none">
+ <doc xml:space="preserve">null-terminated array of arguments</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_launchv_full"
+ c:identifier="gst_parse_launchv_full"
+ throws="1">
+ <doc xml:space="preserve">Create a new element based on command line syntax.
+@error will contain an error message if an erroneous pipeline is specified.
+An error does not mean that the pipeline could not be constructed.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new element on success; on
+ failure, either %NULL or a 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)</doc>
+ <type name="Element" c:type="GstElement*"/>
+ </return-value>
+ <parameters>
+ <parameter name="argv" transfer-ownership="none">
+ <doc xml:space="preserve">null-terminated array of arguments</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="context"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a parse context allocated with
+ gst_parse_context_new(), or %NULL</doc>
+ <type name="ParseContext" c:type="GstParseContext*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+ <type name="ParseFlags" c:type="GstParseFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="plugin_error_quark"
+ c:identifier="gst_plugin_error_quark"
+ moved-to="PluginError.quark">
+ <doc xml:space="preserve">Get the error quark.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The error quark used in GError messages</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="poll_new"
+ c:identifier="gst_poll_new"
+ moved-to="Poll.new"
+ introspectable="0">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_poll_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstPoll, or %NULL in
+ case of an error. Free with gst_poll_free().</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </return-value>
+ <parameters>
+ <parameter name="controllable" transfer-ownership="none">
+ <doc xml:space="preserve">whether it should be possible to control a wait.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="poll_new_timer"
+ c:identifier="gst_poll_new_timer"
+ moved-to="Poll.new_timer"
+ introspectable="0">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_poll_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstPoll, or %NULL in
+ case of an error. Free with gst_poll_free().</doc>
+ <type name="Poll" c:type="GstPoll*"/>
+ </return-value>
+ </function>
+ <function name="preset_get_app_dir"
+ c:identifier="gst_preset_get_app_dir"
+ moved-to="Preset.get_app_dir">
+ <doc xml:space="preserve">Gets the directory for application specific presets if set by the
+application.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the directory or %NULL, don't free or modify
+the string</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </return-value>
+ </function>
+ <function name="preset_set_app_dir"
+ c:identifier="gst_preset_set_app_dir"
+ moved-to="Preset.set_app_dir">
+ <doc xml:space="preserve">Sets an extra directory as an absolute path that should be considered when
+looking for presets. Any presets in the application dir will shadow the
+system presets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE for success, %FALSE if the dir already has been set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="app_dir" transfer-ownership="none">
+ <doc xml:space="preserve">the application specific preset dir</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="print"
+ c:identifier="gst_print"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Outputs a formatted message via the GLib print handler. The default print
+handler simply outputs the message to stdout.
+
+This function will not append a new-line character at the end, unlike
+gst_println() which will.
+
+All strings must be in ASCII or UTF-8 encoding.
+
+This function differs from g_print() in that it supports all the additional
+printf specifiers that are supported by GStreamer's debug logging system,
+such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT.
+
+This function is primarily for printing debug output.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the printf arguments for @format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="printerr"
+ c:identifier="gst_printerr"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Outputs a formatted message via the GLib error message handler. The default
+handler simply outputs the message to stderr.
+
+This function will not append a new-line character at the end, unlike
+gst_printerrln() which will.
+
+All strings must be in ASCII or UTF-8 encoding.
+
+This function differs from g_printerr() in that it supports the additional
+printf specifiers that are supported by GStreamer's debug logging system,
+such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT.
+
+This function is primarily for printing debug output.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the printf arguments for @format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="printerrln"
+ c:identifier="gst_printerrln"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Outputs a formatted message via the GLib error message handler. The default
+handler simply outputs the message to stderr.
+
+This function will append a new-line character at the end, unlike
+gst_printerr() which will not.
+
+All strings must be in ASCII or UTF-8 encoding.
+
+This function differs from g_printerr() in that it supports the additional
+printf specifiers that are supported by GStreamer's debug logging system,
+such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT.
+
+This function is primarily for printing debug output.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the printf arguments for @format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="println"
+ c:identifier="gst_println"
+ version="1.12"
+ introspectable="0">
+ <doc xml:space="preserve">Outputs a formatted message via the GLib print handler. The default print
+handler simply outputs the message to stdout.
+
+This function will append a new-line character at the end, unlike
+gst_print() which will not.
+
+All strings must be in ASCII or UTF-8 encoding.
+
+This function differs from g_print() in that it supports all the additional
+printf specifiers that are supported by GStreamer's debug logging system,
+such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT.
+
+This function is primarily for printing debug output.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a printf style format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">the printf arguments for @format</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="protection_filter_systems_by_available_decryptors"
+ c:identifier="gst_protection_filter_systems_by_available_decryptors"
+ version="1.14">
+ <doc xml:space="preserve">Iterates the supplied list of UUIDs and checks the GstRegistry for
+all the decryptors supporting one of the supplied UUIDs.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A null terminated array containing all
+the @system_identifiers supported by the set of available decryptors, or
+%NULL if no matches were found.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="system_identifiers" transfer-ownership="none">
+ <doc xml:space="preserve">A null terminated array of strings
+that contains the UUID values of each protection system that is to be
+checked.</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="protection_meta_api_get_type"
+ c:identifier="gst_protection_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="protection_meta_get_info"
+ c:identifier="gst_protection_meta_get_info"
+ moved-to="ProtectionMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="protection_select_system"
+ c:identifier="gst_protection_select_system"
+ version="1.6">
+ <doc xml:space="preserve">Iterates the supplied list of UUIDs and checks the GstRegistry for
+an element that supports one of the supplied UUIDs. If more than one
+element matches, the system ID of the highest ranked element is selected.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">One of the strings from
+@system_identifiers that indicates the highest ranked element that
+implements the protection system indicated by that system ID, or %NULL if no
+element has been found.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="system_identifiers" transfer-ownership="none">
+ <doc xml:space="preserve">A null terminated array of strings
+that contains the UUID values of each protection system that is to be
+checked.</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_type_get_flags"
+ c:identifier="gst_query_type_get_flags"
+ moved-to="QueryType.get_flags">
+ <doc xml:space="preserve">Gets the #GstQueryTypeFlags associated with @type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueryTypeFlags.</doc>
+ <type name="QueryTypeFlags" c:type="GstQueryTypeFlags"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueryType</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_type_get_name"
+ c:identifier="gst_query_type_get_name"
+ moved-to="QueryType.get_name">
+ <doc xml:space="preserve">Get a printable name for the given query type. Do not modify or free.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a reference to the static name of the query.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the query type</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_type_to_quark"
+ c:identifier="gst_query_type_to_quark"
+ moved-to="QueryType.to_quark">
+ <doc xml:space="preserve">Get the unique quark for the given query type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the quark associated with the query type</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the query type</doc>
+ <type name="QueryType" c:type="GstQueryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="reference_timestamp_meta_api_get_type"
+ c:identifier="gst_reference_timestamp_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="reference_timestamp_meta_get_info"
+ c:identifier="gst_reference_timestamp_meta_get_info"
+ moved-to="ReferenceTimestampMeta.get_info"
+ version="1.14">
+ <doc xml:space="preserve">Get the global #GstMetaInfo describing the #GstReferenceTimestampMeta meta.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstMetaInfo</doc>
+ <type name="MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="resource_error_quark"
+ c:identifier="gst_resource_error_quark"
+ moved-to="ResourceError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="segtrap_is_enabled" c:identifier="gst_segtrap_is_enabled">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if GStreamer is allowed to install a custom SIGSEGV handler.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="segtrap_set_enabled"
+ c:identifier="gst_segtrap_set_enabled">
+ <doc xml:space="preserve">Applications might want to disable/enable the SIGSEGV handling of
+the GStreamer core. See gst_segtrap_is_enabled() for more information.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">whether a custom SIGSEGV handler should be installed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="state_change_get_name"
+ c:identifier="gst_state_change_get_name"
+ moved-to="StateChange.get_name"
+ version="1.14">
+ <doc xml:space="preserve">Gets a string representing the given state transition.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string with the name of the state
+ result.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="transition" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStateChange to get the name of.</doc>
+ <type name="StateChange" c:type="GstStateChange"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="static_caps_get_type"
+ c:identifier="gst_static_caps_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="static_pad_template_get_type"
+ c:identifier="gst_static_pad_template_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="stream_error_quark"
+ c:identifier="gst_stream_error_quark"
+ moved-to="StreamError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="stream_type_get_name"
+ c:identifier="gst_stream_type_get_name"
+ moved-to="StreamType.get_name"
+ version="1.10">
+ <doc xml:space="preserve">Get a descriptive string for a given #GstStreamType</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">A string describing the stream type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="stype" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStreamType</doc>
+ <type name="StreamType" c:type="GstStreamType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="structure_from_string"
+ c:identifier="gst_structure_from_string"
+ moved-to="Structure.from_string">
+ <doc xml:space="preserve">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.
+
+Free-function: gst_structure_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstStructure or %NULL
+ when the string could not be parsed. Free with
+ gst_structure_free() after use.</doc>
+ <type name="Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of a #GstStructure.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="end"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1"
+ skip="1">
+ <doc xml:space="preserve">pointer to store the end of the string in.</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_exists" c:identifier="gst_tag_exists">
+ <doc xml:space="preserve">Checks if the given type is already registered.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the type is already registered</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">name of the tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_description"
+ c:identifier="gst_tag_get_description">
+ <doc xml:space="preserve">Returns the human-readable description of this tag, You must not change or
+free this string.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the human-readable description of this tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_flag" c:identifier="gst_tag_get_flag">
+ <doc xml:space="preserve">Gets the flag of @tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the flag of this tag.</doc>
+ <type name="TagFlag" c:type="GstTagFlag"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
+ <doc xml:space="preserve">Returns the human-readable name of this tag, You must not change or free
+this string.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the human-readable name of this tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_type" c:identifier="gst_tag_get_type">
+ <doc xml:space="preserve">Gets the #GType used for this tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GType of this tag</doc>
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">the tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_is_fixed" c:identifier="gst_tag_is_fixed">
+ <doc xml:space="preserve">Checks if the given tag is fixed. A fixed tag can only contain one value.
+Unfixed tags can contain lists of values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if the given tag is fixed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to check</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_copy_value"
+ c:identifier="gst_tag_list_copy_value"
+ moved-to="TagList.copy_value">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE, if a value was copied, %FALSE if the tag didn't exist in the
+ given list.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">uninitialized #GValue to copy into</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">list to get the tag from</doc>
+ <type name="TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">tag to read out</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_merge_strings_with_comma"
+ c:identifier="gst_tag_merge_strings_with_comma">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">uninitialized GValue to store result in</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">GValue to copy from</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_merge_use_first"
+ c:identifier="gst_tag_merge_use_first">
+ <doc xml:space="preserve">This is a convenience function for the func argument of gst_tag_register().
+It creates a copy of the first value from the list.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">uninitialized GValue to store result in</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">GValue to copy from</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_register" c:identifier="gst_tag_register">
+ <doc xml:space="preserve">Registers a new tag type for the use with GStreamer'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't rely
+on your supplied values.
+
+Important: if you do not supply a merge function the implication will be
+that there can only be one single value for this tag in a tag list and
+any additional values will silently 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.
+
+Two default merge functions are provided: gst_tag_merge_use_first() and
+gst_tag_merge_strings_with_comma().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name or identifier string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="flag" transfer-ownership="none">
+ <doc xml:space="preserve">a flag describing the type of tag info</doc>
+ <type name="TagFlag" c:type="GstTagFlag"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the type this data is in</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">human-readable name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="blurb" transfer-ownership="none">
+ <doc xml:space="preserve">a human-readable description about this tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="call">
+ <doc xml:space="preserve">function for merging multiple values of this tag, or %NULL</doc>
+ <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_register_static"
+ c:identifier="gst_tag_register_static">
+ <doc xml:space="preserve">Registers a new tag type for the use with GStreamer's type system.
+
+Same as gst_tag_register(), but @name, @nick, and @blurb must be
+static strings or inlined strings, as they will not be copied. (GStreamer
+plugins will be made resident once loaded, so this function can be used
+even from dynamically loaded plugins.)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name or identifier string (string constant)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="flag" transfer-ownership="none">
+ <doc xml:space="preserve">a flag describing the type of tag info</doc>
+ <type name="TagFlag" c:type="GstTagFlag"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the type this data is in</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="nick" transfer-ownership="none">
+ <doc xml:space="preserve">human-readable name or short description (string constant)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="blurb" transfer-ownership="none">
+ <doc xml:space="preserve">a human-readable description for this tag (string constant)</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="call">
+ <doc xml:space="preserve">function for merging multiple values of this tag, or %NULL</doc>
+ <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="toc_entry_type_get_nick"
+ c:identifier="gst_toc_entry_type_get_nick"
+ moved-to="TocEntryType.get_nick">
+ <doc xml:space="preserve">Converts @type to a string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Returns a human-readable string for @type. This string is
+ only for debugging purpose and should not be displayed in a user
+ interface.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTocEntryType.</doc>
+ <type name="TocEntryType" c:type="GstTocEntryType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_get_type" c:identifier="gst_type_find_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="type_find_register"
+ c:identifier="gst_type_find_register"
+ moved-to="TypeFind.register">
+ <doc xml:space="preserve">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's plugin initialization.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success, %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="plugin"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">A #GstPlugin, or %NULL for a static typefind function</doc>
+ <type name="Plugin" c:type="GstPlugin*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">The name for registering</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="rank" transfer-ownership="none">
+ <doc xml:space="preserve">The rank (or importance) of this typefind function</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="6"
+ destroy="7">
+ <doc xml:space="preserve">The #GstTypeFindFunction to use</doc>
+ <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+ </parameter>
+ <parameter name="extensions"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Optional comma-separated list of extensions
+ that could belong to this type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="possible_caps" transfer-ownership="none">
+ <doc xml:space="preserve">Optionally the caps that could be returned when typefinding
+ succeeds</doc>
+ <type name="Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Optional user data. This user data must be available until the plugin
+ is unloaded.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="data_notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a #GDestroyNotify that will be called on @data when the plugin
+ is unloaded.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="update_registry" c:identifier="gst_update_registry">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the registry has been updated successfully (does not
+ imply that there were changes), otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="uri_construct"
+ c:identifier="gst_uri_construct"
+ moved-to="Uri.construct"
+ deprecated="1">
+ <doc xml:space="preserve">Constructs a URI for a given valid protocol and location.
+
+Free-function: g_free</doc>
+ <doc-deprecated xml:space="preserve">Use GstURI instead.</doc-deprecated>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new string for this URI. Returns %NULL if the
+ given URI protocol is not valid, or the given location is %NULL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">Protocol for URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="location" transfer-ownership="none">
+ <doc xml:space="preserve">Location for URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_error_quark"
+ c:identifier="gst_uri_error_quark"
+ moved-to="URIError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="uri_from_string"
+ c:identifier="gst_uri_from_string"
+ moved-to="Uri.from_string"
+ version="1.6">
+ <doc xml:space="preserve">Parses a URI string into a new #GstUri object. Will return NULL if the URI
+cannot be parsed.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A new #GstUri object, or NULL.</doc>
+ <type name="Uri" c:type="GstUri*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI string to parse.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_get_location"
+ c:identifier="gst_uri_get_location"
+ moved-to="Uri.get_location">
+ <doc xml:space="preserve">Extracts the location out of a given valid URI, ie. the protocol and "://"
+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().
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the location for this URI. Returns
+ %NULL if the URI isn't valid. If the URI does not contain a location, an
+ empty string is returned.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_get_protocol"
+ c:identifier="gst_uri_get_protocol"
+ moved-to="Uri.get_protocol">
+ <doc xml:space="preserve">Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The protocol for this URI.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_has_protocol"
+ c:identifier="gst_uri_has_protocol"
+ moved-to="Uri.has_protocol">
+ <doc xml:space="preserve">Checks if the protocol of a given valid URI matches @protocol.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the protocol matches.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">a protocol string (e.g. "http")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_is_valid"
+ c:identifier="gst_uri_is_valid"
+ moved-to="Uri.is_valid">
+ <doc xml:space="preserve">Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by ":" and maybe a string identifying the location.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the string is a valid URI</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">A URI string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_join_strings"
+ c:identifier="gst_uri_join_strings"
+ moved-to="Uri.join_strings"
+ version="1.6">
+ <doc xml:space="preserve">This is a convenience function to join two URI strings and return the result.
+The returned string should be g_free()'d after use.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A string representing the percent-encoded join of
+ the two URIs.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="base_uri" transfer-ownership="none">
+ <doc xml:space="preserve">The percent-encoded base URI.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ref_uri" transfer-ownership="none">
+ <doc xml:space="preserve">The percent-encoded reference URI to join to the @base_uri.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_protocol_is_supported"
+ c:identifier="gst_uri_protocol_is_supported"
+ moved-to="Uri.protocol_is_supported">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">Whether to check for a source or a sink</doc>
+ <type name="URIType" c:type="const GstURIType"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">Protocol that should be checked for (e.g. "http" or "smb")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="uri_protocol_is_valid"
+ c:identifier="gst_uri_protocol_is_valid"
+ moved-to="Uri.protocol_is_valid">
+ <doc xml:space="preserve">Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, '+', '-' and '.' and must
+start with a alphabetic character. See RFC 3986 Section 3.1.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the string is a valid protocol identifier, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">A string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_array_binary_search"
+ c:identifier="gst_util_array_binary_search">
+ <doc xml:space="preserve">Searches inside @array for @search_data by using the comparison function
+@search_func. @array must be sorted ascending.
+
+As @search_data is always passed as second argument to @search_func it'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)).</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The address of the found
+element or %NULL if nothing was found</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="array"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the sorted input array</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="num_elements" transfer-ownership="none">
+ <doc xml:space="preserve">number of elements in the array</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="element_size" transfer-ownership="none">
+ <doc xml:space="preserve">size of every element in bytes</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="search_func"
+ transfer-ownership="none"
+ scope="call"
+ closure="6">
+ <doc xml:space="preserve">function to compare two elements, @search_data will always be passed as second argument</doc>
+ <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">search mode that should be used</doc>
+ <type name="SearchMode" c:type="GstSearchMode"/>
+ </parameter>
+ <parameter name="search_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">element that should be found</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">data to pass to @search_func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_double_to_fraction"
+ c:identifier="gst_util_double_to_fraction">
+ <doc xml:space="preserve">Transforms a #gdouble to a fraction and simplifies
+the result.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">#gdouble to transform</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="dest_n"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a #gint to hold the result numerator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="dest_d"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a #gint to hold the result denominator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_dump_buffer"
+ c:identifier="gst_util_dump_buffer"
+ version="1.14">
+ <doc xml:space="preserve">Dumps the buffer memory into a hex representation. Useful for debugging.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer whose memory to dump</doc>
+ <type name="Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_dump_mem" c:identifier="gst_util_dump_mem">
+ <doc xml:space="preserve">Dumps the memory block into a hex representation. Useful for debugging.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="mem" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the memory to dump</doc>
+ <array length="1" zero-terminated="0" c:type="guchar*">
+ <type name="guint8" c:type="guchar"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the memory block to dump</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_fraction_add" c:identifier="gst_util_fraction_add">
+ <doc xml:space="preserve">Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE on overflow, %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="a_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="a_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="res_n"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to #gint to hold the result numerator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="res_d"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to #gint to hold the result denominator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_fraction_compare"
+ c:identifier="gst_util_fraction_compare">
+ <doc xml:space="preserve">Compares the fractions @a_n/@a_d and @b_n/@b_d and returns
+-1 if a &lt; b, 0 if a = b and 1 if a &gt; b.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">-1 if a &lt; b; 0 if a = b; 1 if a &gt; b.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="a_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="a_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_fraction_multiply"
+ c:identifier="gst_util_fraction_multiply">
+ <doc xml:space="preserve">Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE on overflow, %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="a_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="a_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of first value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of second value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="res_n"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to #gint to hold the result numerator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="res_d"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to #gint to hold the result denominator</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_fraction_to_double"
+ c:identifier="gst_util_fraction_to_double">
+ <doc xml:space="preserve">Transforms a fraction to a #gdouble.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src_n" transfer-ownership="none">
+ <doc xml:space="preserve">Fraction numerator as #gint</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="src_d" transfer-ownership="none">
+ <doc xml:space="preserve">Fraction denominator #gint</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a #gdouble for the result</doc>
+ <type name="gdouble" 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="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_get_object_array"
+ c:identifier="gst_util_get_object_array"
+ version="1.12">
+ <doc xml:space="preserve">Get a property of type %GST_TYPE_ARRAY and transform it into a
+#GValueArray. This allow language bindings to get GST_TYPE_ARRAY
+properties which are otherwise not an accessible type.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object to set the array to</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a return #GValueArray</doc>
+ <type name="GObject.ValueArray" c:type="GValueArray**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_get_timestamp" c:identifier="gst_util_get_timestamp">
+ <doc xml:space="preserve">Get a timestamp as GstClockTime to be used for interval measurements.
+The timestamp should not be interpreted in any other way.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the timestamp</doc>
+ <type name="ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ </function>
+ <function name="util_greatest_common_divisor"
+ c:identifier="gst_util_greatest_common_divisor">
+ <doc xml:space="preserve">Calculates the greatest common divisor of @a
+and @b.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Greatest common divisor of @a and @b</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="a" transfer-ownership="none">
+ <doc xml:space="preserve">First value as #gint</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="b" transfer-ownership="none">
+ <doc xml:space="preserve">Second value as #gint</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_greatest_common_divisor_int64"
+ c:identifier="gst_util_greatest_common_divisor_int64">
+ <doc xml:space="preserve">Calculates the greatest common divisor of @a
+and @b.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Greatest common divisor of @a and @b</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="a" transfer-ownership="none">
+ <doc xml:space="preserve">First value as #gint64</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="b" transfer-ownership="none">
+ <doc xml:space="preserve">Second value as #gint64</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_group_id_next" c:identifier="gst_util_group_id_next">
+ <doc xml:space="preserve">Return a constantly incrementing group id.
+
+This function is used to generate a new group-id for the
+stream-start event.
+
+This function never returns %GST_GROUP_ID_INVALID (which is 0)</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A constantly incrementing unsigned integer, which might
+overflow back to 0 at some point.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ </function>
+ <function name="util_guint64_to_gdouble"
+ c:identifier="gst_util_guint64_to_gdouble">
+ <return-value transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_seqnum_compare"
+ c:identifier="gst_util_seqnum_compare">
+ <doc xml:space="preserve">Compare two sequence numbers, handling wraparound.
+
+The current implementation just returns (gint32)(@s1 - @s2).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A negative number if @s1 is before @s2, 0 if they are equal, or a
+positive number if @s1 is after @s2.</doc>
+ <type name="gint32" c:type="gint32"/>
+ </return-value>
+ <parameters>
+ <parameter name="s1" transfer-ownership="none">
+ <doc xml:space="preserve">A sequence number.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="s2" transfer-ownership="none">
+ <doc xml:space="preserve">Another sequence number.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_seqnum_next" c:identifier="gst_util_seqnum_next">
+ <doc xml:space="preserve">Return a constantly incrementing sequence number.
+
+This function is used internally to GStreamer to be able to determine which
+events and messages are "the same". 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.
+
+This function never returns %GST_SEQNUM_INVALID (which is 0).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A constantly incrementing 32-bit unsigned integer, which might
+overflow at some point. Use gst_util_seqnum_compare() to make sure
+you handle wraparound correctly.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ </function>
+ <function name="util_set_object_arg"
+ c:identifier="gst_util_set_object_arg">
+ <doc xml:space="preserve">Converts 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
+@name or when @value cannot be converted to the type of the property.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object to set the argument of</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the argument to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the string value to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_set_object_array"
+ c:identifier="gst_util_set_object_array"
+ version="1.12">
+ <doc xml:space="preserve">Transfer a #GValueArray to %GST_TYPE_ARRAY and set this value on the
+specified property name. This allow language bindings to set GST_TYPE_ARRAY
+properties which are otherwise not an accessible type.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object to set the array to</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the property to set</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValueArray containing the values</doc>
+ <type name="GObject.ValueArray" c:type="const GValueArray*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_set_value_from_string"
+ c:identifier="gst_util_set_value_from_string">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">the value to set</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="value_str" transfer-ownership="none">
+ <doc xml:space="preserve">the string to get the value from</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale" c:identifier="gst_util_uint64_scale">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">the number to scale</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale_ceil"
+ c:identifier="gst_util_uint64_scale_ceil">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">the number to scale</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale_int"
+ c:identifier="gst_util_uint64_scale_int">
+ <doc xml:space="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision. @num must be non-negative and
+@denom must be positive.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">numerator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">denominator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale_int_ceil"
+ c:identifier="gst_util_uint64_scale_int_ceil">
+ <doc xml:space="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision. @num must be non-negative and
+@denom must be positive.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">numerator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">denominator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale_int_round"
+ c:identifier="gst_util_uint64_scale_int_round">
+ <doc xml:space="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision. @num must be non-negative and
+@denom must be positive.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">numerator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">denominator of the scale factor.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="util_uint64_scale_round"
+ c:identifier="gst_util_uint64_scale_round">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@val * @num / @denom. In the case of an overflow, this
+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().</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">the number to scale</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="denom" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the scale ratio</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_can_compare" c:identifier="gst_value_can_compare">
+ <doc xml:space="preserve">Determines if @value1 and @value2 can be compared.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the values can be compared</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to compare</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to compare</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_can_intersect"
+ c:identifier="gst_value_can_intersect">
+ <doc xml:space="preserve">Determines if intersecting two values will produce a valid result.
+Two values will produce a valid intersection if they have the same
+type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the values can intersect</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to intersect</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to intersect</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_can_subtract" c:identifier="gst_value_can_subtract">
+ <doc xml:space="preserve">Checks if it's possible to subtract @subtrahend from @minuend.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a subtraction is possible</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="minuend" transfer-ownership="none">
+ <doc xml:space="preserve">the value to subtract from</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="subtrahend" transfer-ownership="none">
+ <doc xml:space="preserve">the value to subtract</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_can_union" c:identifier="gst_value_can_union">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there is a function allowing the two values to
+be unioned.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to union</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to union</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_compare" c:identifier="gst_value_compare">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">comparison result</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to compare</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to compare</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_deserialize" c:identifier="gst_value_deserialize">
+ <doc xml:space="preserve">Tries to deserialize a string into the type specified by the given GValue.
+If the operation succeeds, %TRUE is returned, %FALSE otherwise.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GValue to fill with contents of
+ deserialization</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">string to deserialize</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_fixate" c:identifier="gst_value_fixate">
+ <doc xml:space="preserve">Fixate @src into a new value @dest.
+For ranges, the first element is taken. For lists and arrays, the
+first item is fixated and returned.
+If @src is already fixed, this function returns %FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @dest contains a fixated version of @src.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue destination</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue to fixate</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_fraction_multiply"
+ c:identifier="gst_value_fraction_multiply">
+ <doc xml:space="preserve">Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets
+@product to the product of the two fractions.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE in case of an error (like integer overflow), %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="product" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="factor1" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="factor2" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_fraction_subtract"
+ c:identifier="gst_value_fraction_subtract">
+ <doc xml:space="preserve">Subtracts the @subtrahend from the @minuend and sets @dest to the result.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE in case of an error (like integer overflow), %TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="minuend" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="subtrahend" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_bitmask" c:identifier="gst_value_get_bitmask">
+ <doc xml:space="preserve">Gets the bitmask specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the bitmask.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_BITMASK</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_caps" c:identifier="gst_value_get_caps">
+ <doc xml:space="preserve">Gets the contents of @value. The reference count of the returned
+#GstCaps will not be modified, therefore the caller must take one
+before getting rid of the @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the contents of @value</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_CAPS</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_caps_features"
+ c:identifier="gst_value_get_caps_features">
+ <doc xml:space="preserve">Gets the contents of @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the contents of @value</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_CAPS_FEATURES</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_double_range_max"
+ c:identifier="gst_value_get_double_range_max">
+ <doc xml:space="preserve">Gets the maximum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum of the range</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_double_range_min"
+ c:identifier="gst_value_get_double_range_min">
+ <doc xml:space="preserve">Gets the minimum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the minimum of the range</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_flagset_flags"
+ c:identifier="gst_value_get_flagset_flags"
+ version="1.6">
+ <doc xml:space="preserve">Retrieve the flags field of a GstFlagSet @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the flags field of the flagset instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FLAG_SET</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_flagset_mask"
+ c:identifier="gst_value_get_flagset_mask"
+ version="1.6">
+ <doc xml:space="preserve">Retrieve the mask field of a GstFlagSet @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the mask field of the flagset instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FLAG_SET</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_fraction_denominator"
+ c:identifier="gst_value_get_fraction_denominator">
+ <doc xml:space="preserve">Gets the denominator of the fraction specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the fraction.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_fraction_numerator"
+ c:identifier="gst_value_get_fraction_numerator">
+ <doc xml:space="preserve">Gets the numerator of the fraction specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the fraction.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_fraction_range_max"
+ c:identifier="gst_value_get_fraction_range_max">
+ <doc xml:space="preserve">Gets the maximum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the maximum of the range</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_fraction_range_min"
+ c:identifier="gst_value_get_fraction_range_min">
+ <doc xml:space="preserve">Gets the minimum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the minimum of the range</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int64_range_max"
+ c:identifier="gst_value_get_int64_range_max">
+ <doc xml:space="preserve">Gets the maximum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int64_range_min"
+ c:identifier="gst_value_get_int64_range_min">
+ <doc xml:space="preserve">Gets the minimum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the minimum of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int64_range_step"
+ c:identifier="gst_value_get_int64_range_step">
+ <doc xml:space="preserve">Gets the step of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the step of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int_range_max"
+ c:identifier="gst_value_get_int_range_max">
+ <doc xml:space="preserve">Gets the maximum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int_range_min"
+ c:identifier="gst_value_get_int_range_min">
+ <doc xml:space="preserve">Gets the minimum of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the minimum of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_int_range_step"
+ c:identifier="gst_value_get_int_range_step">
+ <doc xml:space="preserve">Gets the step of the range specified by @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the step of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_get_structure"
+ c:identifier="gst_value_get_structure">
+ <doc xml:space="preserve">Gets the contents of @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the contents of @value</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_STRUCTURE</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_init_and_copy"
+ c:identifier="gst_value_init_and_copy">
+ <doc xml:space="preserve">Initialises the target value to be of the same type as source and then copies
+the contents from source to target.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">the target value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source value</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_intersect" c:identifier="gst_value_intersect">
+ <doc xml:space="preserve">Calculates the intersection of two values. If the values have
+a non-empty intersection, the value representing the intersection
+is placed in @dest, unless %NULL. If the intersection is non-empty,
+@dest is not modified.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the intersection is non-empty</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">
+ a uninitialized #GValue that will hold the calculated
+ intersection value. May be %NULL if the resulting set if not
+ needed.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to intersect</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to intersect</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_is_fixed" c:identifier="gst_value_is_fixed">
+ <doc xml:space="preserve">Tests if the given GValue, if available in a GstStructure (or any other
+container) contains a "fixed" (which means: one value) or an "unfixed"
+(which means: multiple possible values, such as data lists or data
+ranges) value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">true if the value is "fixed".</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the #GValue to check</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_is_subset" c:identifier="gst_value_is_subset">
+ <doc xml:space="preserve">Check that @value1 is a subset of @value2.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is @value1 is a subset of @value2</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_register" c:identifier="gst_value_register">
+ <doc xml:space="preserve">Registers functions to perform calculations on #GValue items of a given
+type. Each type can only be added once.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="table" transfer-ownership="none">
+ <doc xml:space="preserve">structure containing functions to register</doc>
+ <type name="ValueTable" c:type="const GstValueTable*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_serialize" c:identifier="gst_value_serialize">
+ <doc xml:space="preserve">tries to transform the given @value into a string representation that allows
+getting back this string later on using gst_value_deserialize().
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the serialization for @value
+or %NULL if none exists</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a #GValue to serialize</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_bitmask" c:identifier="gst_value_set_bitmask">
+ <doc xml:space="preserve">Sets @value to the bitmask specified by @bitmask.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_BITMASK</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="bitmask" transfer-ownership="none">
+ <doc xml:space="preserve">the bitmask</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_caps" c:identifier="gst_value_set_caps">
+ <doc xml:space="preserve">Sets the contents of @value to @caps. A reference to the
+provided @caps will be taken by the @value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_CAPS</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the caps to set the value to</doc>
+ <type name="Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_caps_features"
+ c:identifier="gst_value_set_caps_features">
+ <doc xml:space="preserve">Sets the contents of @value to @features.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_CAPS_FEATURES</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="features" transfer-ownership="none">
+ <doc xml:space="preserve">the features to set the value to</doc>
+ <type name="CapsFeatures" c:type="const GstCapsFeatures*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_double_range"
+ c:identifier="gst_value_set_double_range">
+ <doc xml:space="preserve">Sets @value to the range specified by @start and @end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_flagset"
+ c:identifier="gst_value_set_flagset"
+ version="1.6">
+ <doc xml:space="preserve">Sets @value to the flags and mask values provided in @flags and @mask.
+The @flags value indicates the values of flags, the @mask represents
+which bits in the flag value have been set, and which are "don't care"</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to %GST_TYPE_FLAG_SET</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">The value of the flags set or unset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">The mask indicate which flags bits must match for comparisons</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_fraction" c:identifier="gst_value_set_fraction">
+ <doc xml:space="preserve">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.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="numerator" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator of the fraction</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denominator" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator of the fraction</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_fraction_range"
+ c:identifier="gst_value_set_fraction_range">
+ <doc xml:space="preserve">Sets @value to the range specified by @start and @end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range (a GST_TYPE_FRACTION GValue)</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range (a GST_TYPE_FRACTION GValue)</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_fraction_range_full"
+ c:identifier="gst_value_set_fraction_range_full">
+ <doc xml:space="preserve">Sets @value to the range specified by @numerator_start/@denominator_start
+and @numerator_end/@denominator_end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="numerator_start" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator start of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denominator_start" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator start of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="numerator_end" transfer-ownership="none">
+ <doc xml:space="preserve">the numerator end of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="denominator_end" transfer-ownership="none">
+ <doc xml:space="preserve">the denominator end of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_int64_range"
+ c:identifier="gst_value_set_int64_range">
+ <doc xml:space="preserve">Sets @value to the range specified by @start and @end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_int64_range_step"
+ c:identifier="gst_value_set_int64_range_step">
+ <doc xml:space="preserve">Sets @value to the range specified by @start, @end and @step.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="step" transfer-ownership="none">
+ <doc xml:space="preserve">the step of the range</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_int_range"
+ c:identifier="gst_value_set_int_range">
+ <doc xml:space="preserve">Sets @value to the range specified by @start and @end.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_int_range_step"
+ c:identifier="gst_value_set_int_range_step">
+ <doc xml:space="preserve">Sets @value to the range specified by @start, @end and @step.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">the end of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="step" transfer-ownership="none">
+ <doc xml:space="preserve">the step of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_set_structure"
+ c:identifier="gst_value_set_structure">
+ <doc xml:space="preserve">Sets the contents of @value to @structure.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a GValue initialized to GST_TYPE_STRUCTURE</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <doc xml:space="preserve">the structure to set the value to</doc>
+ <type name="Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_subtract" c:identifier="gst_value_subtract">
+ <doc xml:space="preserve">Subtracts @subtrahend from @minuend and stores the result in @dest.
+Note that this means subtraction as in sets, not as in mathematics.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the subtraction is not empty</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the destination value
+ for the result if the subtraction is not empty. May be %NULL,
+ in which case the resulting set will not be computed, which can
+ give a fair speedup.</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="minuend" transfer-ownership="none">
+ <doc xml:space="preserve">the value to subtract from</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="subtrahend" transfer-ownership="none">
+ <doc xml:space="preserve">the value to subtract</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="value_union" c:identifier="gst_value_union">
+ <doc xml:space="preserve">Creates a GValue corresponding to the union of @value1 and @value2.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the union succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">the destination value</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ <parameter name="value1" transfer-ownership="none">
+ <doc xml:space="preserve">a value to union</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ <parameter name="value2" transfer-ownership="none">
+ <doc xml:space="preserve">another value to union</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="version" c:identifier="gst_version">
+ <doc xml:space="preserve">Gets the version number of the GStreamer library.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="major"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the major version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="minor"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the minor version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="micro"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the micro version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="nano"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the nano version number</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="version_string" c:identifier="gst_version_string">
+ <doc xml:space="preserve">This function returns a string that is useful for describing this version
+of GStreamer to the outside world: user agent strings, logging, ...</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string describing this version
+ of GStreamer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstApp-1.0.gir b/girs/GstApp-1.0.gir
new file mode 100644
index 0000000000..9913b72d62
--- /dev/null
+++ b/girs/GstApp-1.0.gir
@@ -0,0 +1,1935 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <package name="gstreamer-app-1.0"/>
+ <c:include name="gst/app/app.h"/>
+ <namespace name="GstApp"
+ version="1.0"
+ shared-library="libgstapp-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <class name="AppSink"
+ c:symbol-prefix="app_sink"
+ c:type="GstAppSink"
+ parent="GstBase.BaseSink"
+ glib:type-name="GstAppSink"
+ glib:get-type="gst_app_sink_get_type"
+ glib:type-struct="AppSinkClass">
+ <doc xml:space="preserve">Appsink is a sink plugin that supports many different methods for making
+the application get a handle on the GStreamer data in a pipeline. Unlike
+most GStreamer elements, Appsink provides external API functions.
+
+appsink can be used by linking to the gstappsink.h header file to access the
+methods or by using the appsink action signals and properties.
+
+The normal way of retrieving samples from appsink is by using the
+gst_app_sink_pull_sample() and gst_app_sink_pull_preroll() methods.
+These methods block until a sample becomes available in the sink or when the
+sink is shut down or reaches EOS. There are also timed variants of these
+methods, gst_app_sink_try_pull_sample() and gst_app_sink_try_pull_preroll(),
+which accept a timeout parameter to limit the amount of time to wait.
+
+Appsink will internally use a queue to collect buffers from the streaming
+thread. If the application is not pulling samples fast enough, this queue
+will consume a lot of memory over time. The "max-buffers" property can be
+used to limit the queue size. The "drop" property controls whether the
+streaming thread blocks or if older buffers are dropped when the maximum
+queue size is reached. Note that blocking the streaming thread can negatively
+affect real-time performance and should be avoided.
+
+If a blocking behaviour is not desirable, setting the "emit-signals" property
+to %TRUE will make appsink emit the "new-sample" and "new-preroll" signals
+when a sample can be pulled without blocking.
+
+The "caps" property on appsink can be used to control the formats that
+appsink can receive. This property can contain non-fixed caps, the format of
+the pulled samples can be obtained by getting the sample caps.
+
+If one of the pull-preroll or pull-sample methods return %NULL, the appsink
+is stopped or in the EOS state. You can check for the EOS state with the
+"eos" property or with the gst_app_sink_is_eos() method.
+
+The eos signal can also be used to be informed when the EOS state is reached
+to avoid polling.</doc>
+ <implements name="Gst.URIHandler"/>
+ <virtual-method name="eos">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="new_preroll">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="new_sample">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pull_preroll" invoker="pull_preroll">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample().
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+
+This function blocks until a preroll sample or EOS is received or the appsink
+element is set to the READY/NULL state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pull_sample" invoker="pull_sample">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull samples at its own rate. Note that when the application does not
+pull samples fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="try_pull_preroll"
+ invoker="try_pull_preroll"
+ version="1.10">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample().
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS
+condition.
+
+This function blocks until a preroll sample or EOS is received, the appsink
+element is set to the READY/NULL state, or the timeout expires.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for the preroll sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="try_pull_sample"
+ invoker="try_pull_sample"
+ version="1.10">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state or the timeout expires.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull samples at its own rate. Note that when the application does not
+pull samples fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS
+condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for a sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_buffer_list_support"
+ c:identifier="gst_app_sink_get_buffer_list_support"
+ version="1.12">
+ <doc xml:space="preserve">Check if @appsink supports buffer lists.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @appsink supports buffer lists.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_app_sink_get_caps">
+ <doc xml:space="preserve">Get the configured caps on @appsink.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps accepted by the sink. gst_caps_unref() after usage.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_drop" c:identifier="gst_app_sink_get_drop">
+ <doc xml:space="preserve">Check if @appsink will drop old buffers when the maximum amount of queued
+buffers is reached.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @appsink is dropping old buffers when the queue is
+filled.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_emit_signals"
+ c:identifier="gst_app_sink_get_emit_signals">
+ <doc xml:space="preserve">Check if appsink will emit the "new-preroll" and "new-sample" signals.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @appsink is emiting the "new-preroll" and "new-sample"
+signals.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_buffers"
+ c:identifier="gst_app_sink_get_max_buffers">
+ <doc xml:space="preserve">Get the maximum amount of buffers that can be queued in @appsink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The maximum amount of buffers that can be queued.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_wait_on_eos"
+ c:identifier="gst_app_sink_get_wait_on_eos">
+ <doc xml:space="preserve">Check if @appsink will wait for all buffers to be consumed when an EOS is
+received.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @appsink will wait for all buffers to be consumed when an
+EOS is received.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_eos" c:identifier="gst_app_sink_is_eos">
+ <doc xml:space="preserve">Check if @appsink is EOS, which is when no more samples can be pulled because
+an EOS event was received.
+
+This function also returns %TRUE when the appsink is not in the PAUSED or
+PLAYING state.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if no more samples can be pulled and the appsink is EOS.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pull_preroll" c:identifier="gst_app_sink_pull_preroll">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample().
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+
+This function blocks until a preroll sample or EOS is received or the appsink
+element is set to the READY/NULL state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pull_sample" c:identifier="gst_app_sink_pull_sample">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull samples at its own rate. Note that when the application does not
+pull samples fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_buffer_list_support"
+ c:identifier="gst_app_sink_set_buffer_list_support"
+ version="1.12">
+ <doc xml:space="preserve">Instruct @appsink to enable or disable buffer list support.
+
+For backwards-compatibility reasons applications need to opt in
+to indicate that they will be able to handle buffer lists.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="enable_lists" transfer-ownership="none">
+ <doc xml:space="preserve">enable or disable buffer list support</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_callbacks"
+ c:identifier="gst_app_sink_set_callbacks"
+ introspectable="0">
+ <doc xml:space="preserve">Set callbacks which will be executed for each new preroll, new sample and eos.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+
+If callbacks are installed, no signals will be emitted for performance
+reasons.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="callbacks" transfer-ownership="none">
+ <doc xml:space="preserve">the callbacks</doc>
+ <type name="AppSinkCallbacks" c:type="GstAppSinkCallbacks*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a user_data argument for the callbacks</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a destroy notify function</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_caps" c:identifier="gst_app_sink_set_caps">
+ <doc xml:space="preserve">Set the capabilities on the appsink element. This function takes
+a copy of the caps structure. After calling this method, the sink will only
+accept caps that match @caps. If @caps is non-fixed, or incomplete,
+you must check the caps on the samples to get the actual used caps.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">caps to set</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_drop" c:identifier="gst_app_sink_set_drop">
+ <doc xml:space="preserve">Instruct @appsink to drop old buffers when the maximum amount of queued
+buffers is reached.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="drop" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_emit_signals"
+ c:identifier="gst_app_sink_set_emit_signals">
+ <doc xml:space="preserve">Make appsink emit the "new-preroll" and "new-sample" signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="emit" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_buffers"
+ c:identifier="gst_app_sink_set_max_buffers">
+ <doc xml:space="preserve">Set the maximum amount of buffers that can be queued in @appsink. After this
+amount of buffers are queued in appsink, any more buffers will block upstream
+elements until a sample is pulled from @appsink.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="max" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum number of buffers to queue</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_wait_on_eos"
+ c:identifier="gst_app_sink_set_wait_on_eos">
+ <doc xml:space="preserve">Instruct @appsink to wait for all buffers to be consumed when an EOS is received.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="wait" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="try_pull_preroll"
+ c:identifier="gst_app_sink_try_pull_preroll"
+ version="1.10">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample().
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS
+condition.
+
+This function blocks until a preroll sample or EOS is received, the appsink
+element is set to the READY/NULL state, or the timeout expires.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for the preroll sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="try_pull_sample"
+ c:identifier="gst_app_sink_try_pull_sample"
+ version="1.10">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state or the timeout expires.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull samples at its own rate. Note that when the application does not
+pull samples fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS
+condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for a sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="buffer-list" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="caps" writable="1" transfer-ownership="none">
+ <type name="Gst.Caps"/>
+ </property>
+ <property name="drop" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="emit-signals" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="eos" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="max-buffers" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="wait-on-eos" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="basesink">
+ <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AppSinkPrivate" c:type="GstAppSinkPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="eos" when="last">
+ <doc xml:space="preserve">Signal that the end-of-stream has been reached. This signal is emitted from
+the streaming thread.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="new-preroll" when="last">
+ <doc xml:space="preserve">Signal that a new preroll sample is available.
+
+This signal is emitted from the streaming thread and only when the
+"emit-signals" property is %TRUE.
+
+The new preroll sample can be retrieved with the "pull-preroll" action
+signal or gst_app_sink_pull_preroll() either from this signal callback
+or from any other thread.
+
+Note that this signal is only emitted when the "emit-signals" property is
+set to %TRUE, which it is not by default for performance reasons.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="new-sample" when="last">
+ <doc xml:space="preserve">Signal that a new sample is available.
+
+This signal is emitted from the streaming thread and only when the
+"emit-signals" property is %TRUE.
+
+The new sample can be retrieved with the "pull-sample" action
+signal or gst_app_sink_pull_sample() either from this signal callback
+or from any other thread.
+
+Note that this signal is only emitted when the "emit-signals" property is
+set to %TRUE, which it is not by default for performance reasons.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="pull-preroll" when="last" action="1">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample() or the "pull-sample" action signal.
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+
+This function blocks until a preroll sample or EOS is received or the appsink
+element is set to the READY/NULL state.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.</doc>
+ <type name="Gst.Sample"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="pull-sample" when="last" action="1">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered samples will be put in a queue so that the application
+can pull samples at its own rate.
+
+Note that when the application does not pull samples fast enough, the
+queued samples could consume a lot of memory, especially when dealing with
+raw video frames. It's possible to control the behaviour of the queue with
+the "drop" and "max-buffers" properties.
+
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.</doc>
+ <type name="Gst.Sample"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="try-pull-preroll"
+ when="last"
+ action="1"
+ version="1.10">
+ <doc xml:space="preserve">Get the last preroll sample in @appsink. This was the sample that caused the
+appsink to preroll in the PAUSED state.
+
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the sample right
+after the seek position.
+
+Calling this function will clear the internal reference to the preroll
+buffer.
+
+Note that the preroll sample will also be returned as the first sample
+when calling gst_app_sink_pull_sample() or the "pull-sample" action signal.
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS
+condition.
+
+This function blocks until a preroll sample or EOS is received, the appsink
+element is set to the READY/NULL state, or the timeout expires.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.</doc>
+ <type name="Gst.Sample"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for the preroll sample</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="try-pull-sample"
+ when="last"
+ action="1"
+ version="1.10">
+ <doc xml:space="preserve">This function blocks until a sample or EOS becomes available or the appsink
+element is set to the READY/NULL state or the timeout expires.
+
+This function will only return samples when the appsink is in the PLAYING
+state. All rendered samples will be put in a queue so that the application
+can pull samples at its own rate.
+
+Note that when the application does not pull samples fast enough, the
+queued samples could consume a lot of memory, especially when dealing with
+raw video frames. It's possible to control the behaviour of the queue with
+the "drop" and "max-buffers" properties.
+
+If an EOS event was received before any buffers or the timeout expires,
+this function returns %NULL. Use gst_app_sink_is_eos () to check
+for the EOS condition.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.</doc>
+ <type name="Gst.Sample"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for a sample</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="AppSinkCallbacks"
+ c:type="GstAppSinkCallbacks"
+ introspectable="0">
+ <doc xml:space="preserve">A set of callbacks that can be installed on the appsink with
+gst_app_sink_set_callbacks().</doc>
+ <field name="eos">
+ <callback name="eos">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="new_preroll">
+ <callback name="new_preroll">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="new_sample">
+ <callback name="new_sample">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AppSinkClass"
+ c:type="GstAppSinkClass"
+ glib:is-gtype-struct-for="AppSink">
+ <field name="basesink_class">
+ <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+ </field>
+ <field name="eos">
+ <callback name="eos">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="new_preroll">
+ <callback name="new_preroll">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="new_sample">
+ <callback name="new_sample">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pull_preroll">
+ <callback name="pull_preroll">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pull_sample">
+ <callback name="pull_sample">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="try_pull_preroll">
+ <callback name="try_pull_preroll">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+ Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for the preroll sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="try_pull_sample">
+ <callback name="try_pull_sample">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires.
+Call gst_sample_unref() after usage.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSink</doc>
+ <type name="AppSink" c:type="GstAppSink*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time to wait for a sample</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AppSinkPrivate" c:type="GstAppSinkPrivate" disguised="1">
+ </record>
+ <class name="AppSrc"
+ c:symbol-prefix="app_src"
+ c:type="GstAppSrc"
+ parent="GstBase.BaseSrc"
+ glib:type-name="GstAppSrc"
+ glib:get-type="gst_app_src_get_type"
+ glib:type-struct="AppSrcClass">
+ <doc xml:space="preserve">The appsrc element can be used by applications to insert data into a
+GStreamer pipeline. Unlike most GStreamer elements, appsrc provides
+external API functions.
+
+appsrc can be used by linking with the libgstapp library to access the
+methods directly or by using the appsrc action signals.
+
+Before operating appsrc, the caps property must be set to fixed caps
+describing the format of the data that will be pushed with appsrc. An
+exception to this is when pushing buffers with unknown caps, in which case no
+caps should be set. This is typically true of file-like sources that push raw
+byte buffers. If you don't want to explicitly set the caps, you can use
+gst_app_src_push_sample. This method gets the caps associated with the
+sample and sets them on the appsrc replacing any previously set caps (if
+different from sample's caps).
+
+The main way of handing data to the appsrc element is by calling the
+gst_app_src_push_buffer() method or by emitting the push-buffer action signal.
+This will put the buffer onto a queue from which appsrc will read from in its
+streaming thread. It is important to note that data transport will not happen
+from the thread that performed the push-buffer call.
+
+The "max-bytes" property controls how much data can be queued in appsrc
+before appsrc considers the queue full. A filled internal queue will always
+signal the "enough-data" signal, which signals the application that it should
+stop pushing data into appsrc. The "block" property will cause appsrc to
+block the push-buffer method until free data becomes available again.
+
+When the internal queue is running out of data, the "need-data" signal is
+emitted, which signals the application that it should start pushing more data
+into appsrc.
+
+In addition to the "need-data" and "enough-data" signals, appsrc can emit the
+"seek-data" signal when the "stream-mode" property is set to "seekable" or
+"random-access". The signal argument will contain the new desired position in
+the stream expressed in the unit set with the "format" property. After
+receiving the seek-data signal, the application should push-buffers from the
+new position.
+
+These signals allow the application to operate the appsrc in two different
+ways:
+
+The push mode, in which the application repeatedly calls the push-buffer/push-sample
+method with a new buffer/sample. Optionally, the queue size in the appsrc
+can be controlled with the enough-data and need-data signals by respectively
+stopping/starting the push-buffer/push-sample calls. This is a typical
+mode of operation for the stream-type "stream" and "seekable". Use this
+mode when implementing various network protocols or hardware devices.
+
+The pull mode, in which the need-data signal triggers the next push-buffer call.
+This mode is typically used in the "random-access" stream-type. Use this
+mode for file access or other randomly accessable sources. In this mode, a
+buffer of exactly the amount of bytes given by the need-data signal should be
+pushed into appsrc.
+
+In all modes, the size property on appsrc should contain the total stream
+size in bytes. Setting this property is mandatory in the random-access mode.
+For the stream and seekable modes, setting this property is optional but
+recommended.
+
+When the application has finished pushing data into appsrc, it should call
+gst_app_src_end_of_stream() or emit the end-of-stream action signal. After
+this call, no more buffers can be pushed into appsrc until a flushing seek
+occurs or the state of the appsrc has gone through READY.</doc>
+ <implements name="Gst.URIHandler"/>
+ <virtual-method name="end_of_stream" invoker="end_of_stream">
+ <doc xml:space="preserve">Indicates to the appsrc element that the last buffer queued in the
+element is the last buffer of the stream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the EOS was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="enough_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="need_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="push_buffer" invoker="push_buffer">
+ <doc xml:space="preserve">Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad. This function takes ownership of the buffer.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer to push</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="push_buffer_list"
+ invoker="push_buffer_list"
+ version="1.14">
+ <doc xml:space="preserve">Adds a buffer list to the queue of buffers and buffer lists that the
+appsrc element will push to its source pad. This function takes ownership
+of @buffer_list.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer list was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBufferList to push</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="push_sample" invoker="push_sample" version="1.6">
+ <doc xml:space="preserve">Extract a buffer from the provided sample and adds it to the queue of
+buffers that the appsrc element will push to its source pad. Any
+previous caps that were set on appsrc will be replaced by the caps
+associated with the sample if not equal.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample from which buffer and caps may be
+extracted</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="seek_data">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="end_of_stream" c:identifier="gst_app_src_end_of_stream">
+ <doc xml:space="preserve">Indicates to the appsrc element that the last buffer queued in the
+element is the last buffer of the stream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the EOS was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_caps" c:identifier="gst_app_src_get_caps">
+ <doc xml:space="preserve">Get the configured caps on @appsrc.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps produced by the source. gst_caps_unref() after usage.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_current_level_bytes"
+ c:identifier="gst_app_src_get_current_level_bytes"
+ version="1.2">
+ <doc xml:space="preserve">Get the number of currently queued bytes inside @appsrc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of currently queued bytes.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_duration"
+ c:identifier="gst_app_src_get_duration"
+ version="1.10">
+ <doc xml:space="preserve">Get the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is
+not known.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the stream previously set with gst_app_src_set_duration();</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_emit_signals"
+ c:identifier="gst_app_src_get_emit_signals">
+ <doc xml:space="preserve">Check if appsrc will emit the "new-preroll" and "new-buffer" signals.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @appsrc is emitting the "new-preroll" and "new-buffer"
+signals.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_app_src_get_latency">
+ <doc xml:space="preserve">Retrieve the min and max latencies in @min and @max respectively.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="min"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the min latency</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="max"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the max latency</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_bytes" c:identifier="gst_app_src_get_max_bytes">
+ <doc xml:space="preserve">Get the maximum amount of bytes that can be queued in @appsrc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The maximum amount of bytes that can be queued.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_size" c:identifier="gst_app_src_get_size">
+ <doc xml:space="preserve">Get the size of the stream in bytes. A value of -1 means that the size is
+not known.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the size of the stream previously set with gst_app_src_set_size();</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_type"
+ c:identifier="gst_app_src_get_stream_type">
+ <doc xml:space="preserve">Get the stream type. Control the stream type of @appsrc
+with gst_app_src_set_stream_type().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the stream type.</doc>
+ <type name="AppStreamType" c:type="GstAppStreamType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push_buffer" c:identifier="gst_app_src_push_buffer">
+ <doc xml:space="preserve">Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad. This function takes ownership of the buffer.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer to push</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_buffer_list"
+ c:identifier="gst_app_src_push_buffer_list"
+ version="1.14">
+ <doc xml:space="preserve">Adds a buffer list to the queue of buffers and buffer lists that the
+appsrc element will push to its source pad. This function takes ownership
+of @buffer_list.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer list was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBufferList to push</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_sample"
+ c:identifier="gst_app_src_push_sample"
+ version="1.6">
+ <doc xml:space="preserve">Extract a buffer from the provided sample and adds it to the queue of
+buffers that the appsrc element will push to its source pad. Any
+previous caps that were set on appsrc will be replaced by the caps
+associated with the sample if not equal.
+
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample from which buffer and caps may be
+extracted</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_callbacks"
+ c:identifier="gst_app_src_set_callbacks"
+ introspectable="0">
+ <doc xml:space="preserve">Set callbacks which will be executed when data is needed, enough data has
+been collected or when a seek should be performed.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+
+If callbacks are installed, no signals will be emitted for performance
+reasons.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="callbacks" transfer-ownership="none">
+ <doc xml:space="preserve">the callbacks</doc>
+ <type name="AppSrcCallbacks" c:type="GstAppSrcCallbacks*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a user_data argument for the callbacks</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">a destroy notify function</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_caps" c:identifier="gst_app_src_set_caps">
+ <doc xml:space="preserve">Set the capabilities on the appsrc element. This function takes
+a copy of the caps structure. After calling this method, the source will
+only produce caps that match @caps. @caps must be fixed and the caps on the
+buffers must match the caps or left NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">caps to set</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_duration"
+ c:identifier="gst_app_src_set_duration"
+ version="1.10">
+ <doc xml:space="preserve">Set the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is
+not known.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration to set</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_emit_signals"
+ c:identifier="gst_app_src_set_emit_signals">
+ <doc xml:space="preserve">Make appsrc emit the "new-preroll" and "new-buffer" signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="emit" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_app_src_set_latency">
+ <doc xml:space="preserve">Configure the @min and @max latency in @src. If @min is set to -1, the
+default latency calculations for pseudo-live sources will be used.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="min" transfer-ownership="none">
+ <doc xml:space="preserve">the min latency</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="max" transfer-ownership="none">
+ <doc xml:space="preserve">the max latency</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_bytes" c:identifier="gst_app_src_set_max_bytes">
+ <doc xml:space="preserve">Set the maximum amount of bytes that can be queued in @appsrc.
+After the maximum amount of bytes are queued, @appsrc will emit the
+"enough-data" signal.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="max" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum number of bytes to queue</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_size" c:identifier="gst_app_src_set_size">
+ <doc xml:space="preserve">Set the size of the stream in bytes. A value of -1 means that the size is
+not known.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size to set</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_stream_type"
+ c:identifier="gst_app_src_set_stream_type">
+ <doc xml:space="preserve">Set the stream type on @appsrc. For seekable streams, the "seek" signal must
+be connected to.
+
+A stream_type stream</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="AppStreamType" c:type="GstAppStreamType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="block" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="caps" writable="1" transfer-ownership="none">
+ <type name="Gst.Caps"/>
+ </property>
+ <property name="current-level-bytes" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="duration" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="emit-signals" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="format" writable="1" transfer-ownership="none">
+ <type name="Gst.Format"/>
+ </property>
+ <property name="is-live" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="max-bytes" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="max-latency" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="min-latency" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="min-percent" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="size" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="stream-type" writable="1" transfer-ownership="none">
+ <type name="AppStreamType"/>
+ </property>
+ <field name="basesrc">
+ <type name="GstBase.BaseSrc" c:type="GstBaseSrc"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AppSrcPrivate" c:type="GstAppSrcPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="end-of-stream" when="last" action="1">
+ <doc xml:space="preserve">Notify @appsrc that no more buffer are available.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="enough-data" when="last">
+ <doc xml:space="preserve">Signal that the source has enough data. It is recommended that the
+application stops calling push-buffer until the need-data signal is
+emitted again to avoid excessive buffer queueing.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="need-data" when="last">
+ <doc xml:space="preserve">Signal that the source needs more data. In the callback or from another
+thread you should call push-buffer or end-of-stream.
+
+@length is just a hint and when it is set to -1, any number of bytes can be
+pushed into @appsrc.
+
+You can call push-buffer multiple times until the enough-data signal is
+fired.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of bytes needed.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="push-buffer" when="last" action="1">
+ <doc xml:space="preserve">Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad. This function does not take ownership of the
+buffer so the buffer needs to be unreffed after calling this function.
+
+When the block property is TRUE, this function can block until free space
+becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer to push</doc>
+ <type name="Gst.Buffer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="push-buffer-list"
+ when="last"
+ action="1"
+ version="1.14">
+ <doc xml:space="preserve">Adds a buffer list to the queue of buffers and buffer lists that the
+appsrc element will push to its source pad. This function does not take
+ownership of the buffer list so the buffer list needs to be unreffed
+after calling this function.
+
+When the block property is TRUE, this function can block until free space
+becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer list to push</doc>
+ <type name="Gst.BufferList"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="push-sample" when="last" action="1" version="1.6">
+ <doc xml:space="preserve">Extract a buffer from the provided sample and adds the extracted buffer
+to the queue of buffers that the appsrc element will
+push to its source pad. This function set the appsrc caps based on the caps
+in the sample and reset the caps if they change.
+Only the caps and the buffer of the provided sample are used and not
+for example the segment in the sample.
+This function does not take ownership of the
+sample so the sample needs to be unreffed after calling this function.
+
+When the block property is TRUE, this function can block until free space
+becomes available in the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a sample from which extract buffer to push</doc>
+ <type name="Gst.Sample"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="seek-data" when="last">
+ <doc xml:space="preserve">Seek to the given offset. The next push-buffer should produce buffers from
+the new @offset.
+This callback is only called for seekable stream types.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the seek succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset to seek to</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="AppSrcCallbacks"
+ c:type="GstAppSrcCallbacks"
+ introspectable="0">
+ <doc xml:space="preserve">A set of callbacks that can be installed on the appsrc with
+gst_app_src_set_callbacks().</doc>
+ <field name="need_data">
+ <callback name="need_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="enough_data">
+ <callback name="enough_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="seek_data">
+ <callback name="seek_data">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AppSrcClass"
+ c:type="GstAppSrcClass"
+ glib:is-gtype-struct-for="AppSrc">
+ <field name="basesrc_class">
+ <type name="GstBase.BaseSrcClass" c:type="GstBaseSrcClass"/>
+ </field>
+ <field name="need_data">
+ <callback name="need_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="enough_data">
+ <callback name="enough_data">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="seek_data">
+ <callback name="seek_data">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="push_buffer">
+ <callback name="push_buffer">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer to push</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="end_of_stream">
+ <callback name="end_of_stream">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the EOS was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="push_sample">
+ <callback name="push_sample">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample from which buffer and caps may be
+extracted</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="push_buffer_list">
+ <callback name="push_buffer_list">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_FLOW_OK when the buffer list was successfuly queued.
+#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_EOS when EOS occured.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="appsrc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAppSrc</doc>
+ <type name="AppSrc" c:type="GstAppSrc*"/>
+ </parameter>
+ <parameter name="buffer_list" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBufferList to push</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AppSrcPrivate" c:type="GstAppSrcPrivate" disguised="1">
+ </record>
+ <enumeration name="AppStreamType"
+ glib:type-name="GstAppStreamType"
+ glib:get-type="gst_app_stream_type_get_type"
+ c:type="GstAppStreamType">
+ <doc xml:space="preserve">The stream type.</doc>
+ <member name="stream"
+ value="0"
+ c:identifier="GST_APP_STREAM_TYPE_STREAM"
+ glib:nick="stream">
+ <doc xml:space="preserve">No seeking is supported in the stream, such as a
+live stream.</doc>
+ </member>
+ <member name="seekable"
+ value="1"
+ c:identifier="GST_APP_STREAM_TYPE_SEEKABLE"
+ glib:nick="seekable">
+ <doc xml:space="preserve">The stream is seekable but seeking might not
+be very fast, such as data from a webserver.</doc>
+ </member>
+ <member name="random_access"
+ value="2"
+ c:identifier="GST_APP_STREAM_TYPE_RANDOM_ACCESS"
+ glib:nick="random-access">
+ <doc xml:space="preserve">The stream is seekable and seeking is fast,
+such as in a local file.</doc>
+ </member>
+ </enumeration>
+ </namespace>
+</repository>
diff --git a/girs/GstAudio-1.0.gir b/girs/GstAudio-1.0.gir
new file mode 100644
index 0000000000..8c8bcd08b8
--- /dev/null
+++ b/girs/GstAudio-1.0.gir
@@ -0,0 +1,9738 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GLib" version="2.0"/>
+ <include name="GModule" version="2.0"/>
+ <include name="GObject" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <package name="gstreamer-audio-1.0"/>
+ <c:include name="gst/audio/audio.h"/>
+ <namespace name="GstAudio"
+ version="1.0"
+ shared-library="libgstaudio-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <constant name="AUDIO_CHANNELS_RANGE"
+ value="(int) [ 1, max ]"
+ c:type="GST_AUDIO_CHANNELS_RANGE">
+ <doc xml:space="preserve">Maximum range of allowed channels, for use in template caps strings.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_CONVERTER_OPT_DITHER_METHOD"
+ value="GstAudioConverter.dither-method"
+ c:type="GST_AUDIO_CONVERTER_OPT_DITHER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_AUDIO_DITHER_METHOD, The dither method to use when
+changing bit depth.
+Default is #GST_AUDIO_DITHER_NONE.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_CONVERTER_OPT_MIX_MATRIX"
+ value="GstAudioConverter.mix-matrix"
+ c:type="GST_AUDIO_CONVERTER_OPT_MIX_MATRIX">
+ <doc xml:space="preserve">#GST_TYPE_VALUE_LIST, The channel mapping matrix.
+
+The matrix coefficients must be between -1 and 1: the number of rows is equal
+to the number of output channels and the number of columns is equal to the
+number of input channels.
+
+## Example matrix generation code
+To generate the matrix using code:
+
+|[
+GValue v = G_VALUE_INIT;
+GValue v2 = G_VALUE_INIT;
+GValue v3 = G_VALUE_INIT;
+
+g_value_init (&amp;v2, GST_TYPE_ARRAY);
+g_value_init (&amp;v3, G_TYPE_DOUBLE);
+g_value_set_double (&amp;v3, 1);
+gst_value_array_append_value (&amp;v2, &amp;v3);
+g_value_unset (&amp;v3);
+[ Repeat for as many double as your input channels - unset and reinit v3 ]
+g_value_init (&amp;v, GST_TYPE_ARRAY);
+gst_value_array_append_value (&amp;v, &amp;v2);
+g_value_unset (&amp;v2);
+[ Repeat for as many v2's as your output channels - unset and reinit v2]
+g_object_set_property (G_OBJECT (audiomixmatrix), "matrix", &amp;v);
+g_value_unset (&amp;v);
+]|</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD"
+ value="GstAudioConverter.noise-shaping-method"
+ c:type="GST_AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_AUDIO_NOISE_SHAPING_METHOD, The noise shaping method to use
+to mask noise from quantization errors.
+Default is #GST_AUDIO_NOISE_SHAPING_NONE.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_CONVERTER_OPT_QUANTIZATION"
+ value="GstAudioConverter.quantization"
+ c:type="GST_AUDIO_CONVERTER_OPT_QUANTIZATION">
+ <doc xml:space="preserve">#G_TYPE_UINT, The quantization amount. Components will be
+quantized to multiples of this value.
+Default is 1</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_CONVERTER_OPT_RESAMPLER_METHOD"
+ value="GstAudioConverter.resampler-method"
+ c:type="GST_AUDIO_CONVERTER_OPT_RESAMPLER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_AUDIO_RESAMPLER_METHOD, The resampler method to use when
+changing sample rates.
+Default is #GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_DECODER_MAX_ERRORS"
+ value="10"
+ c:type="GST_AUDIO_DECODER_MAX_ERRORS">
+ <doc xml:space="preserve">Default maximum number of errors tolerated before signaling error.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="AUDIO_DECODER_SINK_NAME"
+ value="sink"
+ c:type="GST_AUDIO_DECODER_SINK_NAME">
+ <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_DECODER_SRC_NAME"
+ value="src"
+ c:type="GST_AUDIO_DECODER_SRC_NAME">
+ <doc xml:space="preserve">The name of the templates for the source pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_DEF_CHANNELS"
+ value="2"
+ c:type="GST_AUDIO_DEF_CHANNELS">
+ <doc xml:space="preserve">Standard number of channels used in consumer audio.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="AUDIO_DEF_FORMAT"
+ value="S16LE"
+ c:type="GST_AUDIO_DEF_FORMAT">
+ <doc xml:space="preserve">Standard format used in consumer audio.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_DEF_RATE" value="44100" c:type="GST_AUDIO_DEF_RATE">
+ <doc xml:space="preserve">Standard sampling rate used in consumer audio.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="AUDIO_ENCODER_SINK_NAME"
+ value="sink"
+ c:type="GST_AUDIO_ENCODER_SINK_NAME">
+ <doc xml:space="preserve">the name of the templates for the sink pad</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_ENCODER_SRC_NAME"
+ value="src"
+ c:type="GST_AUDIO_ENCODER_SRC_NAME">
+ <doc xml:space="preserve">the name of the templates for the source pad</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_FORMATS_ALL"
+ value=" { S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }"
+ c:type="GST_AUDIO_FORMATS_ALL">
+ <doc xml:space="preserve">List of all audio formats, for use in template caps strings.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RATE_RANGE"
+ value="(int) [ 1, max ]"
+ c:type="GST_AUDIO_RATE_RANGE">
+ <doc xml:space="preserve">Maximum range of allowed sample rates, for use in template caps strings.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_CUBIC_B"
+ value="GstAudioResampler.cubic-b"
+ c:type="GST_AUDIO_RESAMPLER_OPT_CUBIC_B">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, B parameter of the cubic filter.
+Values between 0.0 and 2.0 are accepted. 1.0 is the default.
+
+Below are some values of popular filters:
+ B C
+Hermite 0.0 0.0
+Spline 1.0 0.0
+Catmull-Rom 0.0 1/2</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_CUBIC_C"
+ value="GstAudioResampler.cubic-c"
+ c:type="GST_AUDIO_RESAMPLER_OPT_CUBIC_C">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, C parameter of the cubic filter.
+Values between 0.0 and 2.0 are accepted. 0.0 is the default.
+
+See #GST_AUDIO_RESAMPLER_OPT_CUBIC_B for some more common values</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_CUTOFF"
+ value="GstAudioResampler.cutoff"
+ c:type="GST_AUDIO_RESAMPLER_OPT_CUTOFF">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, Cutoff parameter for the filter. 0.940 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION"
+ value="GstAudioResampler.filter-interpolation"
+ c:type="GST_AUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION">
+ <doc xml:space="preserve">GST_TYPE_AUDIO_RESAMPLER_INTERPOLATION: how the filter coeficients should be
+ interpolated.
+GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC is default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_FILTER_MODE"
+ value="GstAudioResampler.filter-mode"
+ c:type="GST_AUDIO_RESAMPLER_OPT_FILTER_MODE">
+ <doc xml:space="preserve">GST_TYPE_AUDIO_RESAMPLER_FILTER_MODE: how the filter tables should be
+constructed.
+GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD"
+ value="GstAudioResampler.filter-mode-threshold"
+ c:type="GST_AUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD">
+ <doc xml:space="preserve">G_TYPE_UINT: the amount of memory to use for full filter tables before
+switching to interpolated filter tables.
+1048576 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE"
+ value="GstAudioResampler.filter-oversample"
+ c:type="GST_AUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE">
+ <doc xml:space="preserve">G_TYPE_UINT, oversampling to use when interpolating filters
+8 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR"
+ value="GstAudioResampler.max-phase-error"
+ c:type="GST_AUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR">
+ <doc xml:space="preserve">G_TYPE_DOUBLE: The maximum allowed phase error when switching sample
+rates.
+0.1 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_N_TAPS"
+ value="GstAudioResampler.n-taps"
+ c:type="GST_AUDIO_RESAMPLER_OPT_N_TAPS">
+ <doc xml:space="preserve">G_TYPE_INT: the number of taps to use for the filter.
+0 is the default and selects the taps automatically.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_STOP_ATTENUATION"
+ value="GstAudioResampler.stop-attenutation"
+ c:type="GST_AUDIO_RESAMPLER_OPT_STOP_ATTENUATION">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, stopband attenuation in decibels. The attenuation
+after the stopband for the kaiser window. 85 dB is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH"
+ value="GstAudioResampler.transition-bandwidth"
+ c:type="GST_AUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, transition bandwidth. The width of the
+transition band for the kaiser window. 0.087 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_QUALITY_DEFAULT"
+ value="4"
+ c:type="GST_AUDIO_RESAMPLER_QUALITY_DEFAULT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_QUALITY_MAX"
+ value="10"
+ c:type="GST_AUDIO_RESAMPLER_QUALITY_MAX">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="AUDIO_RESAMPLER_QUALITY_MIN"
+ value="0"
+ c:type="GST_AUDIO_RESAMPLER_QUALITY_MIN">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <class name="AudioAggregator"
+ c:symbol-prefix="audio_aggregator"
+ c:type="GstAudioAggregator"
+ parent="GstBase.Aggregator"
+ abstract="1"
+ glib:type-name="GstAudioAggregator"
+ glib:get-type="gst_audio_aggregator_get_type"
+ glib:type-struct="AudioAggregatorClass">
+ <doc xml:space="preserve">Subclasses must use (a subclass of) #GstAudioAggregatorPad for both
+their source and sink pads,
+gst_element_class_add_static_pad_template_with_gtype() is a convenient
+helper.
+
+#GstAudioAggregator can perform conversion on the data arriving
+on its sink pads, based on the format expected downstream: in order
+to enable that behaviour, the GType of the sink pads must either be
+a (subclass of) #GstAudioAggregatorConvertPad to use the default
+#GstAudioConverter implementation, or a subclass of #GstAudioAggregatorPad
+implementing #GstAudioAggregatorPad.convert_buffer.
+
+To allow for the output caps to change, the mechanism is the same as
+above, with the GType of the source pad.
+
+See #GstAudioMixer for an example.
+
+When conversion is enabled, #GstAudioAggregator will accept
+any type of raw audio caps and perform conversion
+on the data arriving on its sink pads, with whatever downstream
+expects as the target format.
+
+In case downstream caps are not fully fixated, it will use
+the first configured sink pad to finish fixating its source pad
+caps.
+
+A notable exception for now is the sample rate, sink pads must
+have the same sample rate as either the downstream requirement,
+or the first configured pad, or a combination of both (when
+downstream specifies a range or a set of acceptable rates).</doc>
+ <virtual-method name="aggregate_one_buffer">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aagg" transfer-ownership="none">
+ <type name="AudioAggregator" c:type="GstAudioAggregator*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="in_offset" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="out_offset" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="num_frames" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create_output_buffer">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aagg" transfer-ownership="none">
+ <type name="AudioAggregator" c:type="GstAudioAggregator*"/>
+ </instance-parameter>
+ <parameter name="num_frames" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="set_sink_caps"
+ c:identifier="gst_audio_aggregator_set_sink_caps">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aagg" transfer-ownership="none">
+ <type name="AudioAggregator" c:type="GstAudioAggregator*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="alignment-threshold"
+ writable="1"
+ transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="discont-wait" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="output-buffer-duration"
+ writable="1"
+ transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="parent">
+ <doc xml:space="preserve">The parent #GstAggregator</doc>
+ <type name="GstBase.Aggregator" c:type="GstAggregator"/>
+ </field>
+ <field name="current_caps">
+ <doc xml:space="preserve">The caps set by the subclass</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioAggregatorPrivate"
+ c:type="GstAudioAggregatorPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioAggregatorClass"
+ c:type="GstAudioAggregatorClass"
+ glib:is-gtype-struct-for="AudioAggregator">
+ <field name="parent_class">
+ <type name="GstBase.AggregatorClass" c:type="GstAggregatorClass"/>
+ </field>
+ <field name="create_output_buffer">
+ <callback name="create_output_buffer">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="aagg" transfer-ownership="none">
+ <type name="AudioAggregator" c:type="GstAudioAggregator*"/>
+ </parameter>
+ <parameter name="num_frames" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="aggregate_one_buffer">
+ <callback name="aggregate_one_buffer">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aagg" transfer-ownership="none">
+ <type name="AudioAggregator" c:type="GstAudioAggregator*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="in_offset" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="out_offset" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="num_frames" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="AudioAggregatorConvertPad"
+ c:symbol-prefix="audio_aggregator_convert_pad"
+ c:type="GstAudioAggregatorConvertPad"
+ parent="AudioAggregatorPad"
+ glib:type-name="GstAudioAggregatorConvertPad"
+ glib:get-type="gst_audio_aggregator_convert_pad_get_type"
+ glib:type-struct="AudioAggregatorConvertPadClass">
+ <doc xml:space="preserve">An implementation of GstPad that can be used with #GstAudioAggregator.
+
+See #GstAudioAggregator for more details.</doc>
+ <property name="converter-config" writable="1" transfer-ownership="none">
+ <type name="Gst.Structure"/>
+ </property>
+ <field name="parent">
+ <doc xml:space="preserve">The parent #GstAudioAggregatorPad</doc>
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioAggregatorConvertPadPrivate"
+ c:type="GstAudioAggregatorConvertPadPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioAggregatorConvertPadClass"
+ c:type="GstAudioAggregatorConvertPadClass"
+ glib:is-gtype-struct-for="AudioAggregatorConvertPad">
+ <field name="parent_class">
+ <type name="AudioAggregatorPadClass"
+ c:type="GstAudioAggregatorPadClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioAggregatorConvertPadPrivate"
+ c:type="GstAudioAggregatorConvertPadPrivate"
+ disguised="1">
+ </record>
+ <class name="AudioAggregatorPad"
+ c:symbol-prefix="audio_aggregator_pad"
+ c:type="GstAudioAggregatorPad"
+ parent="GstBase.AggregatorPad"
+ glib:type-name="GstAudioAggregatorPad"
+ glib:get-type="gst_audio_aggregator_pad_get_type"
+ glib:type-struct="AudioAggregatorPadClass">
+ <doc xml:space="preserve">The default implementation of GstPad used with #GstAudioAggregator</doc>
+ <virtual-method name="convert_buffer">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </instance-parameter>
+ <parameter name="in_info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="update_conversion_info">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <field name="parent">
+ <doc xml:space="preserve">The parent #GstAggregatorPad</doc>
+ <type name="GstBase.AggregatorPad" c:type="GstAggregatorPad"/>
+ </field>
+ <field name="info">
+ <doc xml:space="preserve">The audio info for this pad set from the incoming caps</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioAggregatorPadPrivate"
+ c:type="GstAudioAggregatorPadPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioAggregatorPadClass"
+ c:type="GstAudioAggregatorPadClass"
+ glib:is-gtype-struct-for="AudioAggregatorPad">
+ <field name="parent_class">
+ <type name="GstBase.AggregatorPadClass"
+ c:type="GstAggregatorPadClass"/>
+ </field>
+ <field name="convert_buffer">
+ <callback name="convert_buffer">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </parameter>
+ <parameter name="in_info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="update_conversion_info">
+ <callback name="update_conversion_info">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AudioAggregatorPad" c:type="GstAudioAggregatorPad*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioAggregatorPadPrivate"
+ c:type="GstAudioAggregatorPadPrivate"
+ disguised="1">
+ </record>
+ <record name="AudioAggregatorPrivate"
+ c:type="GstAudioAggregatorPrivate"
+ disguised="1">
+ </record>
+ <class name="AudioBaseSink"
+ c:symbol-prefix="audio_base_sink"
+ c:type="GstAudioBaseSink"
+ parent="GstBase.BaseSink"
+ glib:type-name="GstAudioBaseSink"
+ glib:get-type="gst_audio_base_sink_get_type"
+ glib:type-struct="AudioBaseSinkClass">
+ <doc xml:space="preserve">This is the base class for audio sinks. Subclasses need to implement the
+::create_ringbuffer vmethod. This base class will then take care of
+writing samples to the ringbuffer, synchronisation, clipping and flushing.</doc>
+ <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+ <doc xml:space="preserve">Create and return the #GstAudioRingBuffer for @sink. This function will
+call the ::create_ringbuffer vmethod and will set @sink as the parent of
+the returned buffer (see gst_object_set_parent()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @sink.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink.</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="payload">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="create_ringbuffer"
+ c:identifier="gst_audio_base_sink_create_ringbuffer">
+ <doc xml:space="preserve">Create and return the #GstAudioRingBuffer for @sink. This function will
+call the ::create_ringbuffer vmethod and will set @sink as the parent of
+the returned buffer (see gst_object_set_parent()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @sink.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink.</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_alignment_threshold"
+ c:identifier="gst_audio_base_sink_get_alignment_threshold">
+ <doc xml:space="preserve">Get the current alignment threshold, in nanoseconds, used by @sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current alignment threshold used by @sink.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_discont_wait"
+ c:identifier="gst_audio_base_sink_get_discont_wait">
+ <doc xml:space="preserve">Get the current discont wait, in nanoseconds, used by @sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current discont wait used by @sink.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_drift_tolerance"
+ c:identifier="gst_audio_base_sink_get_drift_tolerance">
+ <doc xml:space="preserve">Get the current drift tolerance, in microseconds, used by @sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current drift tolerance used by @sink.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_provide_clock"
+ c:identifier="gst_audio_base_sink_get_provide_clock">
+ <doc xml:space="preserve">Queries whether @sink will provide a clock or not. See also
+gst_audio_base_sink_set_provide_clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @sink will provide a clock.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_slave_method"
+ c:identifier="gst_audio_base_sink_get_slave_method">
+ <doc xml:space="preserve">Get the current slave method used by @sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current slave method used by @sink.</doc>
+ <type name="AudioBaseSinkSlaveMethod"
+ c:type="GstAudioBaseSinkSlaveMethod"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="report_device_failure"
+ c:identifier="gst_audio_base_sink_report_device_failure"
+ version="1.6">
+ <doc xml:space="preserve">Informs this base class that the audio output device has failed for
+some reason, causing a discontinuity (for example, because the device
+recovered from the error, but lost all contents of its ring buffer).
+This function is typically called by derived classes, and is useful
+for the custom slave method.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_alignment_threshold"
+ c:identifier="gst_audio_base_sink_set_alignment_threshold">
+ <doc xml:space="preserve">Controls the sink's alignment threshold.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="alignment_threshold" transfer-ownership="none">
+ <doc xml:space="preserve">the new alignment threshold in nanoseconds</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_custom_slaving_callback"
+ c:identifier="gst_audio_base_sink_set_custom_slaving_callback"
+ version="1.6">
+ <doc xml:space="preserve">Sets the custom slaving callback. This callback will
+be invoked if the slave-method property is set to
+GST_AUDIO_BASE_SINK_SLAVE_CUSTOM and the audio sink
+receives and plays samples.
+
+Setting the callback to NULL causes the sink to
+behave as if the GST_AUDIO_BASE_SINK_SLAVE_NONE
+method were used.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">a #GstAudioBaseSinkCustomSlavingCallback</doc>
+ <type name="AudioBaseSinkCustomSlavingCallback"
+ c:type="GstAudioBaseSinkCustomSlavingCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">called when user_data becomes unused</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_discont_wait"
+ c:identifier="gst_audio_base_sink_set_discont_wait">
+ <doc xml:space="preserve">Controls how long the sink will wait before creating a discontinuity.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="discont_wait" transfer-ownership="none">
+ <doc xml:space="preserve">the new discont wait in nanoseconds</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_drift_tolerance"
+ c:identifier="gst_audio_base_sink_set_drift_tolerance">
+ <doc xml:space="preserve">Controls the sink's drift tolerance.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="drift_tolerance" transfer-ownership="none">
+ <doc xml:space="preserve">the new drift tolerance in microseconds</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_provide_clock"
+ c:identifier="gst_audio_base_sink_set_provide_clock">
+ <doc xml:space="preserve">Controls whether @sink will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @sink. If @provide is %FALSE, gst_element_provide_clock() will return
+NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="provide" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_slave_method"
+ c:identifier="gst_audio_base_sink_set_slave_method">
+ <doc xml:space="preserve">Controls how clock slaving will be performed in @sink.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </instance-parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">the new slave method</doc>
+ <type name="AudioBaseSinkSlaveMethod"
+ c:type="GstAudioBaseSinkSlaveMethod"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="alignment-threshold"
+ writable="1"
+ transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="buffer-time" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="can-activate-pull"
+ writable="1"
+ transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="discont-wait" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">A window of time in nanoseconds to wait before creating a discontinuity as
+a result of breaching the drift-tolerance.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="drift-tolerance" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Controls the amount of time in microseconds that clocks are allowed
+to drift before resynchronisation happens.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="latency-time" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="provide-clock" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="slave-method" writable="1" transfer-ownership="none">
+ <type name="AudioBaseSinkSlaveMethod"/>
+ </property>
+ <field name="element">
+ <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+ </field>
+ <field name="ringbuffer">
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </field>
+ <field name="buffer_time">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="latency_time">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="next_sample">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="provided_clock">
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </field>
+ <field name="eos_rendering">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioBaseSinkPrivate" c:type="GstAudioBaseSinkPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioBaseSinkClass"
+ c:type="GstAudioBaseSinkClass"
+ glib:is-gtype-struct-for="AudioBaseSink">
+ <doc xml:space="preserve">#GstAudioBaseSink class. Override the vmethod to implement
+functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class.</doc>
+ <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+ </field>
+ <field name="create_ringbuffer">
+ <callback name="create_ringbuffer">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @sink.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink.</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="payload">
+ <callback name="payload">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="AudioBaseSinkCustomSlavingCallback"
+ c:type="GstAudioBaseSinkCustomSlavingCallback"
+ version="1.6">
+ <doc xml:space="preserve">This function is set with gst_audio_base_sink_set_custom_slaving_callback()
+and is called during playback. It receives the current time of external and
+internal clocks, which the callback can then use to apply any custom
+slaving/synchronization schemes.
+
+The external clock is the sink's element clock, the internal one is the
+internal audio clock. The internal audio clock's calibration is applied to
+the timestamps before they are passed to the callback. The difference between
+etime and itime is the skew; how much internal and external clock lie apart
+from each other. A skew of 0 means both clocks are perfectly in sync.
+itime &gt; etime means the external clock is going slower, while itime &lt; etime
+means it is going faster than the internal clock. etime and itime are always
+valid timestamps, except for when a discontinuity happens.
+
+requested_skew is an output value the callback can write to. It informs the
+sink of whether or not it should move the playout pointer, and if so, by how
+much. This pointer is only NULL if a discontinuity occurs; otherwise, it is
+safe to write to *requested_skew. The default skew is 0.
+
+The sink may experience discontinuities. If one happens, discont is TRUE,
+itime, etime are set to GST_CLOCK_TIME_NONE, and requested_skew is NULL.
+This makes it possible to reset custom clock slaving algorithms when a
+discontinuity happens.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSink</doc>
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink*"/>
+ </parameter>
+ <parameter name="etime" transfer-ownership="none">
+ <doc xml:space="preserve">external clock time</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="itime" transfer-ownership="none">
+ <doc xml:space="preserve">internal clock time</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="requested_skew" transfer-ownership="none">
+ <doc xml:space="preserve">skew amount requested by the callback</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+ </parameter>
+ <parameter name="discont_reason" transfer-ownership="none">
+ <doc xml:space="preserve">reason for discontinuity (if any)</doc>
+ <type name="AudioBaseSinkDiscontReason"
+ c:type="GstAudioBaseSinkDiscontReason"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="5">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="AudioBaseSinkDiscontReason"
+ version="1.6"
+ glib:type-name="GstAudioBaseSinkDiscontReason"
+ glib:get-type="gst_audio_base_sink_discont_reason_get_type"
+ c:type="GstAudioBaseSinkDiscontReason">
+ <doc xml:space="preserve">Different possible reasons for discontinuities. This enum is useful for the custom
+slave method.</doc>
+ <member name="no_discont"
+ value="0"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_NO_DISCONT"
+ glib:nick="no-discont">
+ <doc xml:space="preserve">No discontinuity occurred</doc>
+ </member>
+ <member name="new_caps"
+ value="1"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_NEW_CAPS"
+ glib:nick="new-caps">
+ <doc xml:space="preserve">New caps are set, causing renegotiotion</doc>
+ </member>
+ <member name="flush"
+ value="2"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_FLUSH"
+ glib:nick="flush">
+ <doc xml:space="preserve">Samples have been flushed</doc>
+ </member>
+ <member name="sync_latency"
+ value="3"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_SYNC_LATENCY"
+ glib:nick="sync-latency">
+ <doc xml:space="preserve">Sink was synchronized to the estimated latency (occurs during initialization)</doc>
+ </member>
+ <member name="alignment"
+ value="4"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_ALIGNMENT"
+ glib:nick="alignment">
+ <doc xml:space="preserve">Aligning buffers failed because the timestamps are too discontinuous</doc>
+ </member>
+ <member name="device_failure"
+ value="5"
+ c:identifier="GST_AUDIO_BASE_SINK_DISCONT_REASON_DEVICE_FAILURE"
+ glib:nick="device-failure">
+ <doc xml:space="preserve">Audio output device experienced and recovered from an error but introduced latency in the process (see also @gst_audio_base_sink_report_device_failure())</doc>
+ </member>
+ </enumeration>
+ <record name="AudioBaseSinkPrivate"
+ c:type="GstAudioBaseSinkPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="AudioBaseSinkSlaveMethod"
+ glib:type-name="GstAudioBaseSinkSlaveMethod"
+ glib:get-type="gst_audio_base_sink_slave_method_get_type"
+ c:type="GstAudioBaseSinkSlaveMethod">
+ <doc xml:space="preserve">Different possible clock slaving algorithms used when the internal audio
+clock is not selected as the pipeline master clock.</doc>
+ <member name="resample"
+ value="0"
+ c:identifier="GST_AUDIO_BASE_SINK_SLAVE_RESAMPLE"
+ glib:nick="resample">
+ <doc xml:space="preserve">Resample to match the master clock</doc>
+ </member>
+ <member name="skew"
+ value="1"
+ c:identifier="GST_AUDIO_BASE_SINK_SLAVE_SKEW"
+ glib:nick="skew">
+ <doc xml:space="preserve">Adjust playout pointer when master clock
+drifts too much.</doc>
+ </member>
+ <member name="none"
+ value="2"
+ c:identifier="GST_AUDIO_BASE_SINK_SLAVE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No adjustment is done.</doc>
+ </member>
+ <member name="custom"
+ value="3"
+ c:identifier="GST_AUDIO_BASE_SINK_SLAVE_CUSTOM"
+ glib:nick="custom">
+ <doc xml:space="preserve">Use custom clock slaving algorithm (Since: 1.6)</doc>
+ </member>
+ </enumeration>
+ <class name="AudioBaseSrc"
+ c:symbol-prefix="audio_base_src"
+ c:type="GstAudioBaseSrc"
+ parent="GstBase.PushSrc"
+ glib:type-name="GstAudioBaseSrc"
+ glib:get-type="gst_audio_base_src_get_type"
+ glib:type-struct="AudioBaseSrcClass">
+ <doc xml:space="preserve">This is the base class for audio sources. Subclasses need to implement the
+::create_ringbuffer vmethod. This base class will then take care of
+reading samples from the ringbuffer, synchronisation and flushing.</doc>
+ <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+ <doc xml:space="preserve">Create and return the #GstAudioRingBuffer for @src. This function will call
+the ::create_ringbuffer vmethod and will set @src as the parent of the
+returned buffer (see gst_object_set_parent()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @src.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc.</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="create_ringbuffer"
+ c:identifier="gst_audio_base_src_create_ringbuffer">
+ <doc xml:space="preserve">Create and return the #GstAudioRingBuffer for @src. This function will call
+the ::create_ringbuffer vmethod and will set @src as the parent of the
+returned buffer (see gst_object_set_parent()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @src.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc.</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_provide_clock"
+ c:identifier="gst_audio_base_src_get_provide_clock">
+ <doc xml:space="preserve">Queries whether @src will provide a clock or not. See also
+gst_audio_base_src_set_provide_clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @src will provide a clock.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_slave_method"
+ c:identifier="gst_audio_base_src_get_slave_method">
+ <doc xml:space="preserve">Get the current slave method used by @src.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current slave method used by @src.</doc>
+ <type name="AudioBaseSrcSlaveMethod"
+ c:type="GstAudioBaseSrcSlaveMethod"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_provide_clock"
+ c:identifier="gst_audio_base_src_set_provide_clock">
+ <doc xml:space="preserve">Controls whether @src will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @src. If @provide is %FALSE, gst_element_provide_clock() will return NULL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="provide" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_slave_method"
+ c:identifier="gst_audio_base_src_set_slave_method">
+ <doc xml:space="preserve">Controls how clock slaving will be performed in @src.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">the new slave method</doc>
+ <type name="AudioBaseSrcSlaveMethod"
+ c:type="GstAudioBaseSrcSlaveMethod"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="actual-buffer-time" transfer-ownership="none">
+ <doc xml:space="preserve">Actual configured size of audio buffer in microseconds.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="actual-latency-time" transfer-ownership="none">
+ <doc xml:space="preserve">Actual configured audio latency in microseconds.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="buffer-time" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="latency-time" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="provide-clock" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="slave-method" writable="1" transfer-ownership="none">
+ <type name="AudioBaseSrcSlaveMethod"/>
+ </property>
+ <field name="element">
+ <type name="GstBase.PushSrc" c:type="GstPushSrc"/>
+ </field>
+ <field name="ringbuffer">
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </field>
+ <field name="buffer_time">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="latency_time">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="next_sample">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="clock">
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioBaseSrcPrivate" c:type="GstAudioBaseSrcPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioBaseSrcClass"
+ c:type="GstAudioBaseSrcClass"
+ glib:is-gtype-struct-for="AudioBaseSrc">
+ <doc xml:space="preserve">#GstAudioBaseSrc class. Override the vmethod to implement
+functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class.</doc>
+ <type name="GstBase.PushSrcClass" c:type="GstPushSrcClass"/>
+ </field>
+ <field name="create_ringbuffer">
+ <callback name="create_ringbuffer">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The new ringbuffer of @src.</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioBaseSrc.</doc>
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioBaseSrcPrivate"
+ c:type="GstAudioBaseSrcPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="AudioBaseSrcSlaveMethod"
+ glib:type-name="GstAudioBaseSrcSlaveMethod"
+ glib:get-type="gst_audio_base_src_slave_method_get_type"
+ c:type="GstAudioBaseSrcSlaveMethod">
+ <doc xml:space="preserve">Different possible clock slaving algorithms when the internal audio clock was
+not selected as the pipeline clock.</doc>
+ <member name="resample"
+ value="0"
+ c:identifier="GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE"
+ glib:nick="resample">
+ <doc xml:space="preserve">Resample to match the master clock.</doc>
+ </member>
+ <member name="re_timestamp"
+ value="1"
+ c:identifier="GST_AUDIO_BASE_SRC_SLAVE_RE_TIMESTAMP"
+ glib:nick="re-timestamp">
+ <doc xml:space="preserve">Retimestamp output buffers with master
+clock time.</doc>
+ </member>
+ <member name="skew"
+ value="2"
+ c:identifier="GST_AUDIO_BASE_SRC_SLAVE_SKEW"
+ glib:nick="skew">
+ <doc xml:space="preserve">Adjust capture pointer when master clock
+drifts too much.</doc>
+ </member>
+ <member name="none"
+ value="3"
+ c:identifier="GST_AUDIO_BASE_SRC_SLAVE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No adjustment is done.</doc>
+ </member>
+ </enumeration>
+ <class name="AudioCdSrc"
+ c:symbol-prefix="audio_cd_src"
+ c:type="GstAudioCdSrc"
+ parent="GstBase.PushSrc"
+ glib:type-name="GstAudioCdSrc"
+ glib:get-type="gst_audio_cd_src_get_type"
+ glib:type-struct="AudioCdSrcClass">
+ <doc xml:space="preserve">Provides a base class for CD digital audio (CDDA) sources, which handles
+things like seeking, querying, discid calculation, tags, and buffer
+timestamping.
+
+## Using GstAudioCdSrc-based elements in applications
+
+GstAudioCdSrc registers two #GstFormat&lt;!-- --&gt;s of its own, namely
+the "track" format and the "sector" format. Applications will usually
+only find the "track" format interesting. You can retrieve that #GstFormat
+for use in seek events or queries with gst_format_get_by_nick("track").
+
+In order to query the number of tracks, for example, an application would
+set the CDDA source element to READY or PAUSED state and then query the
+the number of tracks via gst_element_query_duration() using the track
+format acquired above. Applications can query the currently playing track
+in the same way.
+
+Alternatively, applications may retrieve the currently playing track and
+the total number of tracks from the taglist that will posted on the bus
+whenever the CD is opened or the currently playing track changes. The
+taglist will contain GST_TAG_TRACK_NUMBER and GST_TAG_TRACK_COUNT tags.
+
+Applications playing back CD audio using playbin and cdda://n URIs should
+issue a seek command in track format to change between tracks, rather than
+setting a new cdda://n+1 URI on playbin (as setting a new URI on playbin
+involves closing and re-opening the CD device, which is much much slower).
+
+## Tags and meta-information
+
+CDDA sources will automatically emit a number of tags, details about which
+can be found in the libgsttag documentation. Those tags are:
+#GST_TAG_CDDA_CDDB_DISCID, #GST_TAG_CDDA_CDDB_DISCID_FULL,
+#GST_TAG_CDDA_MUSICBRAINZ_DISCID, #GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL,
+among others.
+
+## Tracks and Table of Contents (TOC)
+
+Applications will be informed of the available tracks via a TOC message
+on the pipeline's #GstBus. The #GstToc will contain a #GstTocEntry for
+each track, with information about each track. The duration for each
+track can be retrieved via the #GST_TAG_DURATION tag from each entry's
+tag list, or calculated via gst_toc_entry_get_start_stop_times().
+The track entries in the TOC will be sorted by track number.</doc>
+ <implements name="Gst.URIHandler"/>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </instance-parameter>
+ <parameter name="device" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="read_sector">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </instance-parameter>
+ <parameter name="sector" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_track" c:identifier="gst_audio_cd_src_add_track">
+ <doc xml:space="preserve">CDDA sources use this function from their start vfunc to announce the
+available data and audio tracks to the base source class. The caller
+should allocate @track on the stack, the base source will do a shallow
+copy of the structure (and take ownership of the taglist if there is one).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE on error, otherwise TRUE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioCdSrc</doc>
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </instance-parameter>
+ <parameter name="track" transfer-ownership="none">
+ <doc xml:space="preserve">address of #GstAudioCdSrcTrack to add</doc>
+ <type name="AudioCdSrcTrack" c:type="GstAudioCdSrcTrack*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="device" writable="1" transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="mode" writable="1" transfer-ownership="none">
+ <type name="AudioCdSrcMode"/>
+ </property>
+ <property name="track" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <field name="pushsrc">
+ <type name="GstBase.PushSrc" c:type="GstPushSrc"/>
+ </field>
+ <field name="tags">
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioCdSrcPrivate" c:type="GstAudioCdSrcPrivate*"/>
+ </field>
+ <field name="_gst_reserved1" readable="0" private="1">
+ <array zero-terminated="0" c:type="guint" fixed-size="2">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="_gst_reserved2" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioCdSrcClass"
+ c:type="GstAudioCdSrcClass"
+ glib:is-gtype-struct-for="AudioCdSrc">
+ <doc xml:space="preserve">Audio CD source base class.</doc>
+ <field name="pushsrc_class">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="GstBase.PushSrcClass" c:type="GstPushSrcClass"/>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </parameter>
+ <parameter name="device" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="read_sector">
+ <callback name="read_sector">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioCdSrc" c:type="GstAudioCdSrc*"/>
+ </parameter>
+ <parameter name="sector" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="AudioCdSrcMode"
+ glib:type-name="GstAudioCdSrcMode"
+ glib:get-type="gst_audio_cd_src_mode_get_type"
+ c:type="GstAudioCdSrcMode">
+ <doc xml:space="preserve">Mode in which the CD audio source operates. Influences timestamping,
+EOS handling and seeking.</doc>
+ <member name="normal"
+ value="0"
+ c:identifier="GST_AUDIO_CD_SRC_MODE_NORMAL"
+ glib:nick="normal">
+ <doc xml:space="preserve">each single track is a stream</doc>
+ </member>
+ <member name="continuous"
+ value="1"
+ c:identifier="GST_AUDIO_CD_SRC_MODE_CONTINUOUS"
+ glib:nick="continuous">
+ <doc xml:space="preserve">the entire disc is a single stream</doc>
+ </member>
+ </enumeration>
+ <record name="AudioCdSrcPrivate"
+ c:type="GstAudioCdSrcPrivate"
+ disguised="1">
+ </record>
+ <record name="AudioCdSrcTrack" c:type="GstAudioCdSrcTrack">
+ <doc xml:space="preserve">CD track abstraction to communicate TOC entries to the base class.
+
+This structure is only for use by sub-classed in connection with
+gst_audio_cd_src_add_track().
+
+Applications will be informed of the available tracks via a TOC message
+on the pipeline's #GstBus instead.</doc>
+ <field name="is_audio" writable="1">
+ <doc xml:space="preserve">Whether this is an audio track</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="num" writable="1">
+ <doc xml:space="preserve">Track number in TOC (usually starts from 1, but not always)</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="start" writable="1">
+ <doc xml:space="preserve">The first sector of this track (LBA)</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="end" writable="1">
+ <doc xml:space="preserve">The last sector of this track (LBA)</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="tags" writable="1">
+ <doc xml:space="preserve">Track-specific tags (e.g. from cd-text information), or NULL</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </field>
+ <field name="_gst_reserved1" readable="0" private="1">
+ <array zero-terminated="0" c:type="guint" fixed-size="2">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="_gst_reserved2" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioChannelMixer"
+ c:type="GstAudioChannelMixer"
+ disguised="1">
+ <method name="free" c:identifier="gst_audio_channel_mixer_free">
+ <doc xml:space="preserve">Free memory allocated by @mix.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mix" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioChannelMixer</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_passthrough"
+ c:identifier="gst_audio_channel_mixer_is_passthrough">
+ <doc xml:space="preserve">Check if @mix is in passthrough.
+
+Only N x N mix identity matrices are considered passthrough,
+this is determined by comparing the contents of the matrix
+with 0.0 and 1.0.
+
+As this is floating point comparisons, if the values have been
+generated, they should be rounded up or down by explicit
+assignment of 0.0 or 1.0 to values within a user-defined
+epsilon, this code doesn't make assumptions as to what may
+constitute an appropriate epsilon.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is @mix is passthrough.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mix" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioChannelMixer</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="samples" c:identifier="gst_audio_channel_mixer_samples">
+ <doc xml:space="preserve">In case the samples are interleaved, @in and @out must point to an
+array with a single element pointing to a block of interleaved samples.
+
+If non-interleaved samples are used, @in and @out must point to an
+array with pointers to memory blocks, one for each channel.
+
+Perform channel mixing on @in_data and write the result to @out_data.
+@in_data and @out_data need to be in @format and @layout.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mix" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioChannelMixer</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </instance-parameter>
+ <parameter name="in"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">input samples</doc>
+ <type name="gpointer" c:type="const gpointer"/>
+ </parameter>
+ <parameter name="out"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">output samples</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="samples" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_audio_channel_mixer_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new channel mixer object for the given parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioChannelMixer object, or %NULL if @format isn't supported.
+ Free with gst_audio_channel_mixer_free() after usage.</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioChannelMixerFlags</doc>
+ <type name="AudioChannelMixerFlags"
+ c:type="GstAudioChannelMixerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="in_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of input channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="in_position" transfer-ownership="none">
+ <doc xml:space="preserve">positions of input channels</doc>
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition*"/>
+ </parameter>
+ <parameter name="out_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of output channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_position" transfer-ownership="none">
+ <doc xml:space="preserve">positions of output channels</doc>
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_with_matrix"
+ c:identifier="gst_audio_channel_mixer_new_with_matrix"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new channel mixer object for the given parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioChannelMixer object, or %NULL if @format isn't supported,
+ @matrix is invalid, or @matrix is %NULL and @in_channels != @out_channels.
+ Free with gst_audio_channel_mixer_free() after usage.</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioChannelMixerFlags</doc>
+ <type name="AudioChannelMixerFlags"
+ c:type="GstAudioChannelMixerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="in_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of input channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of output channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="matrix"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">channel conversion matrix, m[@in_channels][@out_channels].
+ If identity matrix, passthrough applies. If %NULL, a (potentially truncated)
+ identity matrix is generated.</doc>
+ <type name="gfloat" c:type="gfloat**"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="AudioChannelMixerFlags"
+ glib:type-name="GstAudioChannelMixerFlags"
+ glib:get-type="gst_audio_channel_mixer_flags_get_type"
+ c:type="GstAudioChannelMixerFlags">
+ <doc xml:space="preserve">Flags passed to gst_audio_channel_mixer_new()</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_CHANNEL_MIXER_FLAGS_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flag</doc>
+ </member>
+ <member name="non_interleaved_in"
+ value="1"
+ c:identifier="GST_AUDIO_CHANNEL_MIXER_FLAGS_NON_INTERLEAVED_IN"
+ glib:nick="non-interleaved-in">
+ <doc xml:space="preserve">input channels are not interleaved</doc>
+ </member>
+ <member name="non_interleaved_out"
+ value="2"
+ c:identifier="GST_AUDIO_CHANNEL_MIXER_FLAGS_NON_INTERLEAVED_OUT"
+ glib:nick="non-interleaved-out">
+ <doc xml:space="preserve">output channels are not interleaved</doc>
+ </member>
+ <member name="unpositioned_in"
+ value="4"
+ c:identifier="GST_AUDIO_CHANNEL_MIXER_FLAGS_UNPOSITIONED_IN"
+ glib:nick="unpositioned-in">
+ <doc xml:space="preserve">input channels are explicitly unpositioned</doc>
+ </member>
+ <member name="unpositioned_out"
+ value="8"
+ c:identifier="GST_AUDIO_CHANNEL_MIXER_FLAGS_UNPOSITIONED_OUT"
+ glib:nick="unpositioned-out">
+ <doc xml:space="preserve">output channels are explicitly unpositioned</doc>
+ </member>
+ </bitfield>
+ <enumeration name="AudioChannelPosition"
+ glib:type-name="GstAudioChannelPosition"
+ glib:get-type="gst_audio_channel_position_get_type"
+ c:type="GstAudioChannelPosition">
+ <doc xml:space="preserve">Audio channel positions.
+
+These are the channels defined in SMPTE 2036-2-2008
+Table 1 for 22.2 audio systems with the Surround and Wide channels from
+DTS Coherent Acoustics (v.1.3.1) and 10.2 and 7.1 layouts. In the caps the
+actual channel layout is expressed with a channel count and a channel mask,
+which describes the existing channels. The positions in the bit mask correspond
+to the enum values.
+For negotiation it is allowed to have more bits set in the channel mask than
+the number of channels to specify the allowed channel positions but this is
+not allowed in negotiated caps. It is not allowed in any situation other
+than the one mentioned below to have less bits set in the channel mask than
+the number of channels.
+
+@GST_AUDIO_CHANNEL_POSITION_MONO can only be used with a single mono channel that
+has no direction information and would be mixed into all directional channels.
+This is expressed in caps by having a single channel and no channel mask.
+
+@GST_AUDIO_CHANNEL_POSITION_NONE can only be used if all channels have this position.
+This is expressed in caps by having a channel mask with no bits set.
+
+As another special case it is allowed to have two channels without a channel mask.
+This implicitely means that this is a stereo stream with a front left and front right
+channel.</doc>
+ <member name="none"
+ value="-3"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">used for position-less channels, e.g.
+ from a sound card that records 1024 channels; mutually exclusive with
+ any other channel position</doc>
+ </member>
+ <member name="mono"
+ value="-2"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_MONO"
+ glib:nick="mono">
+ <doc xml:space="preserve">Mono without direction;
+ can only be used with 1 channel</doc>
+ </member>
+ <member name="invalid"
+ value="-1"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid position</doc>
+ </member>
+ <member name="front_left"
+ value="0"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT"
+ glib:nick="front-left">
+ <doc xml:space="preserve">Front left</doc>
+ </member>
+ <member name="front_right"
+ value="1"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT"
+ glib:nick="front-right">
+ <doc xml:space="preserve">Front right</doc>
+ </member>
+ <member name="front_center"
+ value="2"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER"
+ glib:nick="front-center">
+ <doc xml:space="preserve">Front center</doc>
+ </member>
+ <member name="lfe1"
+ value="3"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_LFE1"
+ glib:nick="lfe1">
+ <doc xml:space="preserve">Low-frequency effects 1 (subwoofer)</doc>
+ </member>
+ <member name="rear_left"
+ value="4"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_LEFT"
+ glib:nick="rear-left">
+ <doc xml:space="preserve">Rear left</doc>
+ </member>
+ <member name="rear_right"
+ value="5"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT"
+ glib:nick="rear-right">
+ <doc xml:space="preserve">Rear right</doc>
+ </member>
+ <member name="front_left_of_center"
+ value="6"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER"
+ glib:nick="front-left-of-center">
+ <doc xml:space="preserve">Front left of center</doc>
+ </member>
+ <member name="front_right_of_center"
+ value="7"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER"
+ glib:nick="front-right-of-center">
+ <doc xml:space="preserve">Front right of center</doc>
+ </member>
+ <member name="rear_center"
+ value="8"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_CENTER"
+ glib:nick="rear-center">
+ <doc xml:space="preserve">Rear center</doc>
+ </member>
+ <member name="lfe2"
+ value="9"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_LFE2"
+ glib:nick="lfe2">
+ <doc xml:space="preserve">Low-frequency effects 2 (subwoofer)</doc>
+ </member>
+ <member name="side_left"
+ value="10"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT"
+ glib:nick="side-left">
+ <doc xml:space="preserve">Side left</doc>
+ </member>
+ <member name="side_right"
+ value="11"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT"
+ glib:nick="side-right">
+ <doc xml:space="preserve">Side right</doc>
+ </member>
+ <member name="top_front_left"
+ value="12"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT"
+ glib:nick="top-front-left">
+ <doc xml:space="preserve">Top front left</doc>
+ </member>
+ <member name="top_front_right"
+ value="13"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT"
+ glib:nick="top-front-right">
+ <doc xml:space="preserve">Top front right</doc>
+ </member>
+ <member name="top_front_center"
+ value="14"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER"
+ glib:nick="top-front-center">
+ <doc xml:space="preserve">Top front center</doc>
+ </member>
+ <member name="top_center"
+ value="15"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_CENTER"
+ glib:nick="top-center">
+ <doc xml:space="preserve">Top center</doc>
+ </member>
+ <member name="top_rear_left"
+ value="16"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT"
+ glib:nick="top-rear-left">
+ <doc xml:space="preserve">Top rear left</doc>
+ </member>
+ <member name="top_rear_right"
+ value="17"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT"
+ glib:nick="top-rear-right">
+ <doc xml:space="preserve">Top rear right</doc>
+ </member>
+ <member name="top_side_left"
+ value="18"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_LEFT"
+ glib:nick="top-side-left">
+ <doc xml:space="preserve">Top side right</doc>
+ </member>
+ <member name="top_side_right"
+ value="19"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_RIGHT"
+ glib:nick="top-side-right">
+ <doc xml:space="preserve">Top rear right</doc>
+ </member>
+ <member name="top_rear_center"
+ value="20"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER"
+ glib:nick="top-rear-center">
+ <doc xml:space="preserve">Top rear center</doc>
+ </member>
+ <member name="bottom_front_center"
+ value="21"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_CENTER"
+ glib:nick="bottom-front-center">
+ <doc xml:space="preserve">Bottom front center</doc>
+ </member>
+ <member name="bottom_front_left"
+ value="22"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_LEFT"
+ glib:nick="bottom-front-left">
+ <doc xml:space="preserve">Bottom front left</doc>
+ </member>
+ <member name="bottom_front_right"
+ value="23"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_RIGHT"
+ glib:nick="bottom-front-right">
+ <doc xml:space="preserve">Bottom front right</doc>
+ </member>
+ <member name="wide_left"
+ value="24"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_WIDE_LEFT"
+ glib:nick="wide-left">
+ <doc xml:space="preserve">Wide left (between front left and side left)</doc>
+ </member>
+ <member name="wide_right"
+ value="25"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_WIDE_RIGHT"
+ glib:nick="wide-right">
+ <doc xml:space="preserve">Wide right (between front right and side right)</doc>
+ </member>
+ <member name="surround_left"
+ value="26"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_SURROUND_LEFT"
+ glib:nick="surround-left">
+ <doc xml:space="preserve">Surround left (between rear left and side left)</doc>
+ </member>
+ <member name="surround_right"
+ value="27"
+ c:identifier="GST_AUDIO_CHANNEL_POSITION_SURROUND_RIGHT"
+ glib:nick="surround-right">
+ <doc xml:space="preserve">Surround right (between rear right and side right)</doc>
+ </member>
+ </enumeration>
+ <record name="AudioClippingMeta"
+ c:type="GstAudioClippingMeta"
+ version="1.8">
+ <doc xml:space="preserve">Extra buffer metadata describing how much audio has to be clipped from
+the start or end of a buffer. This is used for compressed formats, where
+the first frame usually has some additional samples due to encoder and
+decoder delays, and the last frame usually has some additional samples to
+be able to fill the complete last frame.
+
+This is used to ensure that decoded data in the end has the same amount of
+samples, and multiply decoded streams can be gaplessly concatenated.
+
+Note: If clipping of the start is done by adjusting the segment, this meta
+has to be dropped from buffers as otherwise clipping could happen twice.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">GstFormat of @start and @stop, GST_FORMAT_DEFAULT is samples</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </field>
+ <field name="start" writable="1">
+ <doc xml:space="preserve">Amount of audio to clip from start of buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="end" writable="1">
+ <doc xml:space="preserve">Amount of to clip from end of buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_audio_clipping_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="AudioClock"
+ c:symbol-prefix="audio_clock"
+ c:type="GstAudioClock"
+ parent="Gst.SystemClock"
+ glib:type-name="GstAudioClock"
+ glib:get-type="gst_audio_clock_get_type"
+ glib:type-struct="AudioClockClass">
+ <doc xml:space="preserve">#GstAudioClock makes it easy for elements to implement a #GstClock, they
+simply need to provide a function that returns the current clock time.
+
+This object is internally used to implement the clock in #GstAudioBaseSink.</doc>
+ <constructor name="new" c:identifier="gst_audio_clock_new">
+ <doc xml:space="preserve">Create a new #GstAudioClock instance. Whenever the clock time should be
+calculated it will call @func with @user_data. When @func returns
+#GST_CLOCK_TIME_NONE, the clock will return the last reported time.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAudioClock casted to a #GstClock.</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the clock</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2"
+ destroy="3">
+ <doc xml:space="preserve">a function</doc>
+ <type name="AudioClockGetTimeFunc"
+ c:type="GstAudioClockGetTimeFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">#GDestroyNotify for @user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="adjust" c:identifier="gst_audio_clock_adjust">
+ <doc xml:space="preserve">Adjust @time with the internal offset of the audio clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@time adjusted with the internal offset.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioClock</doc>
+ <type name="AudioClock" c:type="GstAudioClock*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_time" c:identifier="gst_audio_clock_get_time">
+ <doc xml:space="preserve">Report the time as returned by the #GstAudioClockGetTimeFunc without applying
+any offsets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the time as reported by the time function of the audio clock</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioClock</doc>
+ <type name="AudioClock" c:type="GstAudioClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="invalidate" c:identifier="gst_audio_clock_invalidate">
+ <doc xml:space="preserve">Invalidate the clock function. Call this function when the provided
+#GstAudioClockGetTimeFunc cannot be called anymore, for example, when the
+user_data becomes invalid.
+
+After calling this function, @clock will return the last returned time for
+the rest of its lifetime.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioClock</doc>
+ <type name="AudioClock" c:type="GstAudioClock*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_audio_clock_reset">
+ <doc xml:space="preserve">Inform @clock that future calls to #GstAudioClockGetTimeFunc will return values
+starting from @time. The clock will update an internal offset to make sure that
+future calls to internal_time will return an increasing result as required by
+the #GstClock object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioClock</doc>
+ <type name="AudioClock" c:type="GstAudioClock*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="clock">
+ <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+ </field>
+ <field name="func">
+ <type name="AudioClockGetTimeFunc" c:type="GstAudioClockGetTimeFunc"/>
+ </field>
+ <field name="user_data">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="destroy_notify">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="last_time" readable="0" private="1">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="time_offset" readable="0" private="1">
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioClockClass"
+ c:type="GstAudioClockClass"
+ glib:is-gtype-struct-for="AudioClock">
+ <field name="parent_class">
+ <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="AudioClockGetTimeFunc" c:type="GstAudioClockGetTimeFunc">
+ <doc xml:space="preserve">This function will be called whenever the current clock time needs to be
+calculated. If this function returns #GST_CLOCK_TIME_NONE, the last reported
+time will be returned by the clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the current time or #GST_CLOCK_TIME_NONE if the previous time should
+be used.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioClock</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="AudioConverter"
+ c:type="GstAudioConverter"
+ glib:type-name="GstAudioConverter"
+ glib:get-type="gst_audio_converter_get_type"
+ c:symbol-prefix="audio_converter">
+ <constructor name="new" c:identifier="gst_audio_converter_new">
+ <doc xml:space="preserve">Create a new #GstAudioConverter that is able to convert between @in and @out
+audio formats.
+
+@config contains extra configuration options, see #GST_VIDEO_CONVERTER_OPT_*
+parameters for details about the options and values.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAudioConverter or %NULL if conversion is not possible.</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">extra #GstAudioConverterFlags</doc>
+ <type name="AudioConverterFlags" c:type="GstAudioConverterFlags"/>
+ </parameter>
+ <parameter name="in_info" transfer-ownership="none">
+ <doc xml:space="preserve">a source #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <doc xml:space="preserve">a destination #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ <parameter name="config"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstStructure with configuration options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="convert"
+ c:identifier="gst_audio_converter_convert"
+ version="1.14">
+ <doc xml:space="preserve">Convenience wrapper around gst_audio_converter_samples(), which will
+perform allocation of the output buffer based on the result from
+gst_audio_converter_get_out_frames().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the conversion could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">extra #GstAudioConverterFlags</doc>
+ <type name="AudioConverterFlags" c:type="GstAudioConverterFlags"/>
+ </parameter>
+ <parameter name="in" transfer-ownership="none">
+ <doc xml:space="preserve">input data</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="in_size" transfer-ownership="none">
+ <doc xml:space="preserve">size of @in</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="out"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer where
+ the output data will be written</doc>
+ <array length="4" zero-terminated="0" c:type="gpointer*">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="out_size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer where the size of @out will be written</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_audio_converter_free">
+ <doc xml:space="preserve">Free a previously allocated @convert instance.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_config" c:identifier="gst_audio_converter_get_config">
+ <doc xml:space="preserve">Get the current configuration of @convert.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">
+ a #GstStructure that remains valid for as long as @convert is valid
+ or until gst_audio_converter_update_config() is called.</doc>
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="in_rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result input rate</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="out_rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">result output rate</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_in_frames"
+ c:identifier="gst_audio_converter_get_in_frames">
+ <doc xml:space="preserve">Calculate how many input frames are currently needed by @convert to produce
+@out_frames of output frames.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="out_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of output frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_latency"
+ c:identifier="gst_audio_converter_get_max_latency">
+ <doc xml:space="preserve">Get the maximum number of input frames that the converter would
+need before producing output.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the latency of @convert as expressed in the number of
+frames.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_out_frames"
+ c:identifier="gst_audio_converter_get_out_frames">
+ <doc xml:space="preserve">Calculate how many output frames can be produced when @in_frames input
+frames are given to @convert.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of output frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="in_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_audio_converter_reset">
+ <doc xml:space="preserve">Reset @convert to the state it was when it was first created, clearing
+any history it might currently have.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="samples" c:identifier="gst_audio_converter_samples">
+ <doc xml:space="preserve">Perform the conversion with @in_frames in @in to @out_frames in @out
+using @convert.
+
+In case the samples are interleaved, @in and @out must point to an
+array with a single element pointing to a block of interleaved samples.
+
+If non-interleaved samples are used, @in and @out must point to an
+array with pointers to memory blocks, one for each channel.
+
+@in may be %NULL, in which case @in_frames of silence samples are processed
+by the converter.
+
+This function always produces @out_frames of output and consumes @in_frames of
+input. Use gst_audio_converter_get_out_frames() and
+gst_audio_converter_get_in_frames() to make sure @in_frames and @out_frames
+are matching and @in and @out point to enough memory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the conversion could be performed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">extra #GstAudioConverterFlags</doc>
+ <type name="AudioConverterFlags" c:type="GstAudioConverterFlags"/>
+ </parameter>
+ <parameter name="in"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">input frames</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="in_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="out"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">output frames</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="out_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of output frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="supports_inplace"
+ c:identifier="gst_audio_converter_supports_inplace">
+ <doc xml:space="preserve">Returns whether the audio converter can perform the conversion in-place.
+The return value would be typically input to gst_base_transform_set_in_place()</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the conversion can be done in place.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="update_config"
+ c:identifier="gst_audio_converter_update_config">
+ <doc xml:space="preserve">Set @in_rate, @out_rate and @config as extra configuration for @convert.
+
+@in_rate and @out_rate specify the new sample rates of input and output
+formats. A value of 0 leaves the sample rate unchanged.
+
+@config can be %NULL, in which case, the current configuration is not
+changed.
+
+If the parameters in @config can not be set exactly, this function returns
+%FALSE and will try to update as much state as possible. The new state can
+then be retrieved and refined with gst_audio_converter_get_config().
+
+Look at the #GST_AUDIO_CONVERTER_OPT_* fields to check valid configuration
+option and values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when the new parameters could be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioConverter</doc>
+ <type name="AudioConverter" c:type="GstAudioConverter*"/>
+ </instance-parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="config"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstStructure or %NULL</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="AudioConverterFlags"
+ glib:type-name="GstAudioConverterFlags"
+ glib:get-type="gst_audio_converter_flags_get_type"
+ c:type="GstAudioConverterFlags">
+ <doc xml:space="preserve">Extra flags passed to gst_audio_converter_new() and gst_audio_converter_samples().</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_CONVERTER_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flag</doc>
+ </member>
+ <member name="in_writable"
+ value="1"
+ c:identifier="GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE"
+ glib:nick="in-writable">
+ <doc xml:space="preserve">the input sample arrays are writable and can be
+ used as temporary storage during conversion.</doc>
+ </member>
+ <member name="variable_rate"
+ value="2"
+ c:identifier="GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE"
+ glib:nick="variable-rate">
+ <doc xml:space="preserve">allow arbitrary rate updates with
+ gst_audio_converter_update_config().</doc>
+ </member>
+ </bitfield>
+ <class name="AudioDecoder"
+ c:symbol-prefix="audio_decoder"
+ c:type="GstAudioDecoder"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstAudioDecoder"
+ glib:get-type="gst_audio_decoder_get_type"
+ glib:type-struct="AudioDecoderClass">
+ <doc xml:space="preserve">This base class is for audio decoders turning encoded data into
+raw audio samples.
+
+GstAudioDecoder and subclass should cooperate as follows.
+
+## Configuration
+
+ * Initially, GstAudioDecoder calls @start when the decoder element
+ is activated, which allows subclass to perform any global setup.
+ Base class (context) parameters can already be set according to subclass
+ capabilities (or possibly upon receive more information in subsequent
+ @set_format).
+ * GstAudioDecoder calls @set_format to inform subclass of the format
+ of input audio data that it is about to receive.
+ While unlikely, it might be called more than once, if changing input
+ parameters require reconfiguration.
+ * GstAudioDecoder calls @stop at end of all processing.
+
+As of configuration stage, and throughout processing, GstAudioDecoder
+provides various (context) parameters, e.g. describing the format of
+output audio data (valid when output caps have been set) or current parsing state.
+Conversely, subclass can and should configure context to inform
+base class of its expectation w.r.t. buffer handling.
+
+## Data processing
+ * Base class gathers input data, and optionally allows subclass
+ to parse this into subsequently manageable (as defined by subclass)
+ chunks. Such chunks are subsequently referred to as 'frames',
+ though they may or may not correspond to 1 (or more) audio format frame.
+ * Input frame is provided to subclass' @handle_frame.
+ * If codec processing results in decoded data, subclass should call
+ @gst_audio_decoder_finish_frame to have decoded data pushed
+ downstream.
+ * Just prior to actually pushing a buffer downstream,
+ it is passed to @pre_push. Subclass should either use this callback
+ to arrange for additional downstream pushing or otherwise ensure such
+ custom pushing occurs after at least a method call has finished since
+ setting src pad caps.
+ * During the parsing process GstAudioDecoderClass will handle both
+ srcpad and sinkpad events. Sink events will be passed to subclass
+ if @event callback has been provided.
+
+## Shutdown phase
+
+ * GstAudioDecoder class calls @stop to inform the subclass that data
+ parsing will be stopped.
+
+Subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It also
+needs to set the fixed caps on srcpad, when the format is ensured. This
+is typically when base class calls subclass' @set_format function, though
+it might be delayed until calling @gst_audio_decoder_finish_frame.
+
+In summary, above process should have subclass concentrating on
+codec data processing while leaving other matters to base class,
+such as most notably timestamp handling. While it may exert more control
+in this area (see e.g. @pre_push), it is very much not recommended.
+
+In particular, base class will try to arrange for perfect output timestamps
+as much as possible while tracking upstream timestamps.
+To this end, if deviation between the next ideal expected perfect timestamp
+and upstream exceeds #GstAudioDecoder:tolerance, then resync to upstream
+occurs (which would happen always if the tolerance mechanism is disabled).
+
+In non-live pipelines, baseclass can also (configurably) arrange for
+output buffer aggregation which may help to redue large(r) numbers of
+small(er) buffers being pushed and processed downstream.
+
+On the other hand, it should be noted that baseclass only provides limited
+seeking support (upon explicit subclass request), as full-fledged support
+should rather be left to upstream demuxer, parser or alike. This simple
+approach caters for seeking and duration reporting using estimated input
+bitrates.
+
+Things that subclass need to take care of:
+
+ * Provide pad templates
+ * Set source pad caps when appropriate
+ * Set user-configurable properties to sane defaults for format and
+ implementing codec at hand, and convey some subclass capabilities and
+ expectations in context.
+
+ * Accept data in @handle_frame and provide encoded results to
+ @gst_audio_decoder_finish_frame. If it is prepared to perform
+ PLC, it should also accept NULL data in @handle_frame and provide for
+ data for indicated duration.</doc>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiate" invoker="negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstAudioInfo.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="parse">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="adapter" transfer-ownership="none">
+ <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="allocate_output_buffer"
+ c:identifier="gst_audio_decoder_allocate_output_buffer">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold an audio frame
+for @dec's current output format.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">allocated buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="finish_frame"
+ c:identifier="gst_audio_decoder_finish_frame">
+ <doc xml:space="preserve">Collects decoded data and pushes it downstream.
+
+@buf may be NULL in which case the indicated number of frames
+are discarded and considered to have produced no output
+(e.g. lead-in or setup frames).
+Otherwise, source pad caps must be set when it is called with valid
+data in @buf.
+
+Note that a frame received in gst_audio_decoder_handle_frame() may be
+invalidated by a call to this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn that should be escalated to caller (of caller)</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">decoded data</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of decoded frames represented by decoded data</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allocator"
+ c:identifier="gst_audio_decoder_get_allocator">
+ <doc xml:space="preserve">Lets #GstAudioDecoder sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocatorParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_audio_info"
+ c:identifier="gst_audio_decoder_get_audio_info">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAudioInfo describing the input audio format</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_delay" c:identifier="gst_audio_decoder_get_delay">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured decoder delay</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_drainable"
+ c:identifier="gst_audio_decoder_get_drainable">
+ <doc xml:space="preserve">Queries decoder drain handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if drainable handling is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_estimate_rate"
+ c:identifier="gst_audio_decoder_get_estimate_rate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured byte to time conversion setting</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_audio_decoder_get_latency">
+ <doc xml:space="preserve">Sets the variables pointed to by @min and @max to the currently configured
+latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="min"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to storage to hold minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to storage to hold maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_errors"
+ c:identifier="gst_audio_decoder_get_max_errors">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured decoder tolerated error count.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_min_latency"
+ c:identifier="gst_audio_decoder_get_min_latency">
+ <doc xml:space="preserve">Queries decoder's latency aggregation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">aggregation latency.
+
+MT safe.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_needs_format"
+ c:identifier="gst_audio_decoder_get_needs_format">
+ <doc xml:space="preserve">Queries decoder required format handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if required format handling is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_parse_state"
+ c:identifier="gst_audio_decoder_get_parse_state">
+ <doc xml:space="preserve">Return current parsing (sync and eos) state.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="sync"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a variable to hold the current sync state</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="eos"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a variable to hold the current eos state</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_plc" c:identifier="gst_audio_decoder_get_plc">
+ <doc xml:space="preserve">Queries decoder packet loss concealment handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if packet loss concealment is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_plc_aware"
+ c:identifier="gst_audio_decoder_get_plc_aware">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured plc handling</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tolerance"
+ c:identifier="gst_audio_decoder_get_tolerance">
+ <doc xml:space="preserve">Queries current audio jitter tolerance threshold.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">decoder audio jitter tolerance threshold.
+
+MT safe.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_audio_decoder_merge_tags">
+ <doc xml:space="preserve">Sets the audio decoder tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with gst_audio_decoder_merge_tags().
+
+Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList to merge, or NULL</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
+ <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="negotiate" c:identifier="gst_audio_decoder_negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstAudioInfo.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="proxy_getcaps"
+ c:identifier="gst_audio_decoder_proxy_getcaps"
+ version="1.6">
+ <doc xml:space="preserve">Returns caps that express @caps (or sink template caps if @caps == NULL)
+restricted to rate/channels/... combinations supported by downstream
+elements.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps owned by caller</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">initial caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">filter caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_allocation_caps"
+ c:identifier="gst_audio_decoder_set_allocation_caps"
+ version="1.10">
+ <doc xml:space="preserve">Sets a caps in allocation query which are different from the set
+pad's caps. Use this function before calling
+gst_audio_decoder_negotiate(). Setting to %NULL the allocation
+query will use the caps from the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="allocation_caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCaps or %NULL</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_drainable"
+ c:identifier="gst_audio_decoder_set_drainable">
+ <doc xml:space="preserve">Configures decoder drain handling. If drainable, subclass might
+be handed a NULL buffer to have it return any leftover decoded data.
+Otherwise, it is not considered so capable and will only ever be passed
+real data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_estimate_rate"
+ c:identifier="gst_audio_decoder_set_estimate_rate">
+ <doc xml:space="preserve">Allows baseclass to perform byte to time estimated conversion.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">whether to enable byte to time conversion</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_audio_decoder_set_latency">
+ <doc xml:space="preserve">Sets decoder latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="min" transfer-ownership="none">
+ <doc xml:space="preserve">minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max" transfer-ownership="none">
+ <doc xml:space="preserve">maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_errors"
+ c:identifier="gst_audio_decoder_set_max_errors">
+ <doc xml:space="preserve">Sets numbers of tolerated decoder errors, where a tolerated one is then only
+warned about, but more than tolerated will lead to fatal error. You can set
+-1 for never returning fatal errors. Default is set to
+GST_AUDIO_DECODER_MAX_ERRORS.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">max tolerated errors</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_min_latency"
+ c:identifier="gst_audio_decoder_set_min_latency">
+ <doc xml:space="preserve">Sets decoder minimum aggregation latency.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">new minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_needs_format"
+ c:identifier="gst_audio_decoder_set_needs_format">
+ <doc xml:space="preserve">Configures decoder format needs. If enabled, subclass needs to be
+negotiated with format caps before it can process any data. It will then
+never be handed any data before it has been configured.
+Otherwise, it might be handed data without having been configured and
+is then expected being able to do so either by default
+or based on the input data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_output_format"
+ c:identifier="gst_audio_decoder_set_output_format">
+ <doc xml:space="preserve">Configure output info on the srcpad of @dec.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_plc" c:identifier="gst_audio_decoder_set_plc">
+ <doc xml:space="preserve">Enable or disable decoder packet loss concealment, provided subclass
+and codec are capable and allow handling plc.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_plc_aware"
+ c:identifier="gst_audio_decoder_set_plc_aware">
+ <doc xml:space="preserve">Indicates whether or not subclass handles packet loss concealment (plc).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="plc" transfer-ownership="none">
+ <doc xml:space="preserve">new plc state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tolerance"
+ c:identifier="gst_audio_decoder_set_tolerance">
+ <doc xml:space="preserve">Configures decoder audio jitter tolerance threshold.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="tolerance" transfer-ownership="none">
+ <doc xml:space="preserve">new tolerance</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_use_default_pad_acceptcaps"
+ c:identifier="gst_audio_decoder_set_use_default_pad_acceptcaps"
+ version="1.6">
+ <doc xml:space="preserve">Lets #GstAudioDecoder sub-classes decide if they want the sink pad
+to use the default pad query handler to reply to accept-caps queries.
+
+By setting this to true it is possible to further customize the default
+handler with %GST_PAD_SET_ACCEPT_INTERSECT and
+%GST_PAD_SET_ACCEPT_TEMPLATE</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </instance-parameter>
+ <parameter name="use" transfer-ownership="none">
+ <doc xml:space="preserve">if the default pad accept-caps query handling should be used</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="min-latency" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="plc" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="tolerance" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="stream_lock">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="input_segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="output_segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioDecoderPrivate" c:type="GstAudioDecoderPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioDecoderClass"
+ c:type="GstAudioDecoderClass"
+ glib:is-gtype-struct-for="AudioDecoder">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @handle_frame (and likely @set_format) needs to be
+overridden.</doc>
+ <field name="element_class">
+ <doc xml:space="preserve">The parent class structure</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_format">
+ <callback name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="parse">
+ <callback name="parse">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="adapter" transfer-ownership="none">
+ <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_frame">
+ <callback name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pre_push">
+ <callback name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiate">
+ <callback name="negotiate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDecoder</doc>
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="getcaps">
+ <callback name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="dec" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_meta">
+ <callback name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioDecoder" c:type="GstAudioDecoder*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioDecoderPrivate"
+ c:type="GstAudioDecoderPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="AudioDitherMethod"
+ glib:type-name="GstAudioDitherMethod"
+ glib:get-type="gst_audio_dither_method_get_type"
+ c:type="GstAudioDitherMethod">
+ <doc xml:space="preserve">Set of available dithering methods.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_DITHER_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No dithering</doc>
+ </member>
+ <member name="rpdf"
+ value="1"
+ c:identifier="GST_AUDIO_DITHER_RPDF"
+ glib:nick="rpdf">
+ <doc xml:space="preserve">Rectangular dithering</doc>
+ </member>
+ <member name="tpdf"
+ value="2"
+ c:identifier="GST_AUDIO_DITHER_TPDF"
+ glib:nick="tpdf">
+ <doc xml:space="preserve">Triangular dithering (default)</doc>
+ </member>
+ <member name="tpdf_hf"
+ value="3"
+ c:identifier="GST_AUDIO_DITHER_TPDF_HF"
+ glib:nick="tpdf-hf">
+ <doc xml:space="preserve">High frequency triangular dithering</doc>
+ </member>
+ </enumeration>
+ <record name="AudioDownmixMeta" c:type="GstAudioDownmixMeta">
+ <doc xml:space="preserve">Extra buffer metadata describing audio downmixing matrix. This metadata is
+attached to audio buffers and contains a matrix to downmix the buffer number
+of channels to @channels.
+
+@matrix is an two-dimensional array of @to_channels times @from_channels
+coefficients, i.e. the i-th output channels is constructed by multiplicating
+the input channels with the coefficients in @matrix[i] and taking the sum
+of the results.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="from_position" writable="1">
+ <doc xml:space="preserve">the channel positions of the source</doc>
+ <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+ </field>
+ <field name="to_position" writable="1">
+ <doc xml:space="preserve">the channel positions of the destination</doc>
+ <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+ </field>
+ <field name="from_channels" writable="1">
+ <doc xml:space="preserve">the number of channels of the source</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="to_channels" writable="1">
+ <doc xml:space="preserve">the number of channels of the destination</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="matrix" writable="1">
+ <doc xml:space="preserve">the matrix coefficients.</doc>
+ <type name="gfloat" c:type="gfloat**"/>
+ </field>
+ <function name="get_info" c:identifier="gst_audio_downmix_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="AudioEncoder"
+ c:symbol-prefix="audio_encoder"
+ c:type="GstAudioEncoder"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstAudioEncoder"
+ glib:get-type="gst_audio_encoder_get_type"
+ glib:type-struct="AudioEncoderClass">
+ <doc xml:space="preserve">This base class is for audio encoders turning raw audio samples into
+encoded audio data.
+
+GstAudioEncoder and subclass should cooperate as follows.
+
+## Configuration
+
+ * Initially, GstAudioEncoder calls @start when the encoder element
+ is activated, which allows subclass to perform any global setup.
+
+ * GstAudioEncoder calls @set_format to inform subclass of the format
+ of input audio data that it is about to receive. Subclass should
+ setup for encoding and configure various base class parameters
+ appropriately, notably those directing desired input data handling.
+ While unlikely, it might be called more than once, if changing input
+ parameters require reconfiguration.
+
+ * GstAudioEncoder calls @stop at end of all processing.
+
+As of configuration stage, and throughout processing, GstAudioEncoder
+maintains various parameters that provide required context,
+e.g. describing the format of input audio data.
+Conversely, subclass can and should configure these context parameters
+to inform base class of its expectation w.r.t. buffer handling.
+
+## Data processing
+
+ * Base class gathers input sample data (as directed by the context's
+ frame_samples and frame_max) and provides this to subclass' @handle_frame.
+ * If codec processing results in encoded data, subclass should call
+ gst_audio_encoder_finish_frame() to have encoded data pushed
+ downstream. Alternatively, it might also call
+ gst_audio_encoder_finish_frame() (with a NULL buffer and some number of
+ dropped samples) to indicate dropped (non-encoded) samples.
+ * Just prior to actually pushing a buffer downstream,
+ it is passed to @pre_push.
+ * During the parsing process GstAudioEncoderClass will handle both
+ srcpad and sinkpad events. Sink events will be passed to subclass
+ if @event callback has been provided.
+
+## Shutdown phase
+
+ * GstAudioEncoder class calls @stop to inform the subclass that data
+ parsing will be stopped.
+
+Subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It also
+needs to set the fixed caps on srcpad, when the format is ensured. This
+is typically when base class calls subclass' @set_format function, though
+it might be delayed until calling @gst_audio_encoder_finish_frame.
+
+In summary, above process should have subclass concentrating on
+codec data processing while leaving other matters to base class,
+such as most notably timestamp handling. While it may exert more control
+in this area (see e.g. @pre_push), it is very much not recommended.
+
+In particular, base class will either favor tracking upstream timestamps
+(at the possible expense of jitter) or aim to arrange for a perfect stream of
+output timestamps, depending on #GstAudioEncoder:perfect-timestamp.
+However, in the latter case, the input may not be so perfect or ideal, which
+is handled as follows. An input timestamp is compared with the expected
+timestamp as dictated by input sample stream and if the deviation is less
+than #GstAudioEncoder:tolerance, the deviation is discarded.
+Otherwise, it is considered a discontuinity and subsequent output timestamp
+is resynced to the new position after performing configured discontinuity
+processing. In the non-perfect-timestamp case, an upstream variation
+exceeding tolerance only leads to marking DISCONT on subsequent outgoing
+(while timestamps are adjusted to upstream regardless of variation).
+While DISCONT is also marked in the perfect-timestamp case, this one
+optionally (see #GstAudioEncoder:hard-resync)
+performs some additional steps, such as clipping of (early) input samples
+or draining all currently remaining input data, depending on the direction
+of the discontuinity.
+
+If perfect timestamps are arranged, it is also possible to request baseclass
+(usually set by subclass) to provide additional buffer metadata (in OFFSET
+and OFFSET_END) fields according to granule defined semantics currently
+needed by oggmux. Specifically, OFFSET is set to granulepos (= sample count
+including buffer) and OFFSET_END to corresponding timestamp (as determined
+by same sample count and sample rate).
+
+Things that subclass need to take care of:
+
+ * Provide pad templates
+ * Set source pad caps when appropriate
+ * Inform base class of buffer processing needs using context's
+ frame_samples and frame_bytes.
+ * Set user-configurable properties to sane defaults for format and
+ implementing codec at hand, e.g. those controlling timestamp behaviour
+ and discontinuity processing.
+ * Accept data in @handle_frame and provide encoded results to
+ gst_audio_encoder_finish_frame().</doc>
+ <implements name="Gst.Preset"/>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiate" invoker="negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstCaps.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="allocate_output_buffer"
+ c:identifier="gst_audio_encoder_allocate_output_buffer">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold an encoded audio frame
+for @enc's current output format.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">allocated buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="finish_frame"
+ c:identifier="gst_audio_encoder_finish_frame">
+ <doc xml:space="preserve">Collects encoded data and pushes encoded data downstream.
+Source pad caps must be set when this is called.
+
+If @samples &lt; 0, then best estimate is all samples provided to encoder
+(subclass) so far. @buf may be NULL, in which case next number of @samples
+are considered discarded, e.g. as a result of discontinuous transmission,
+and a discontinuity is marked.
+
+Note that samples received in gst_audio_encoder_handle_frame()
+may be invalidated by a call to this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn that should be escalated to caller (of caller)</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">encoded data</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="samples" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples (per channel) represented by encoded data</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allocator"
+ c:identifier="gst_audio_encoder_get_allocator">
+ <doc xml:space="preserve">Lets #GstAudioEncoder sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocatorParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_audio_info"
+ c:identifier="gst_audio_encoder_get_audio_info">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAudioInfo describing the input audio format</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_drainable"
+ c:identifier="gst_audio_encoder_get_drainable">
+ <doc xml:space="preserve">Queries encoder drain handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if drainable handling is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_frame_max"
+ c:identifier="gst_audio_encoder_get_frame_max">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured maximum handled frames</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_frame_samples_max"
+ c:identifier="gst_audio_encoder_get_frame_samples_max">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently maximum requested samples per frame</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_frame_samples_min"
+ c:identifier="gst_audio_encoder_get_frame_samples_min">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently minimum requested samples per frame</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_hard_min"
+ c:identifier="gst_audio_encoder_get_hard_min">
+ <doc xml:space="preserve">Queries encoder hard minimum handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if hard minimum handling is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_hard_resync"
+ c:identifier="gst_audio_encoder_get_hard_resync">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_audio_encoder_get_latency">
+ <doc xml:space="preserve">Sets the variables pointed to by @min and @max to the currently configured
+latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="min"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to storage to hold minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to storage to hold maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_lookahead"
+ c:identifier="gst_audio_encoder_get_lookahead">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured encoder lookahead</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_mark_granule"
+ c:identifier="gst_audio_encoder_get_mark_granule">
+ <doc xml:space="preserve">Queries if the encoder will handle granule marking.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if granule marking is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_perfect_timestamp"
+ c:identifier="gst_audio_encoder_get_perfect_timestamp">
+ <doc xml:space="preserve">Queries encoder perfect timestamp behaviour.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if perfect timestamp setting enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tolerance"
+ c:identifier="gst_audio_encoder_get_tolerance">
+ <doc xml:space="preserve">Queries current audio jitter tolerance threshold.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">encoder audio jitter tolerance threshold.
+
+MT safe.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_audio_encoder_merge_tags">
+ <doc xml:space="preserve">Sets the audio encoder tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with gst_audio_encoder_merge_tags().
+
+Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
+ previously-set tags</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
+ <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="negotiate" c:identifier="gst_audio_encoder_negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstCaps.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="proxy_getcaps"
+ c:identifier="gst_audio_encoder_proxy_getcaps">
+ <doc xml:space="preserve">Returns caps that express @caps (or sink template caps if @caps == NULL)
+restricted to channel/rate combinations supported by downstream elements
+(e.g. muxers).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps owned by caller</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">initial caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">filter caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_allocation_caps"
+ c:identifier="gst_audio_encoder_set_allocation_caps"
+ version="1.10">
+ <doc xml:space="preserve">Sets a caps in allocation query which are different from the set
+pad's caps. Use this function before calling
+gst_audio_encoder_negotiate(). Setting to %NULL the allocation
+query will use the caps from the pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="allocation_caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstCaps or %NULL</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_drainable"
+ c:identifier="gst_audio_encoder_set_drainable">
+ <doc xml:space="preserve">Configures encoder drain handling. If drainable, subclass might
+be handed a NULL buffer to have it return any leftover encoded data.
+Otherwise, it is not considered so capable and will only ever be passed
+real data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_max"
+ c:identifier="gst_audio_encoder_set_frame_max">
+ <doc xml:space="preserve">Sets max number of frames accepted at once (assumed minimally 1).
+Requires @frame_samples_min and @frame_samples_max to be the equal.
+
+Note: This value will be reset to 0 every time before
+GstAudioEncoder::set_format() is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">number of frames</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_samples_max"
+ c:identifier="gst_audio_encoder_set_frame_samples_max">
+ <doc xml:space="preserve">Sets number of samples (per channel) subclass needs to be handed,
+at most or will be handed all available if 0.
+
+If an exact number of samples is required, gst_audio_encoder_set_frame_samples_min()
+must be called with the same number.
+
+Note: This value will be reset to 0 every time before
+GstAudioEncoder::set_format() is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples per frame</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_samples_min"
+ c:identifier="gst_audio_encoder_set_frame_samples_min">
+ <doc xml:space="preserve">Sets number of samples (per channel) subclass needs to be handed,
+at least or will be handed all available if 0.
+
+If an exact number of samples is required, gst_audio_encoder_set_frame_samples_max()
+must be called with the same number.
+
+Note: This value will be reset to 0 every time before
+GstAudioEncoder::set_format() is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples per frame</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_hard_min"
+ c:identifier="gst_audio_encoder_set_hard_min">
+ <doc xml:space="preserve">Configures encoder hard minimum handling. If enabled, subclass
+will never be handed less samples than it configured, which otherwise
+might occur near end-of-data handling. Instead, the leftover samples
+will simply be discarded.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_hard_resync"
+ c:identifier="gst_audio_encoder_set_hard_resync">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_headers" c:identifier="gst_audio_encoder_set_headers">
+ <doc xml:space="preserve">Set the codec headers to be sent downstream whenever requested.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="headers" transfer-ownership="full">
+ <doc xml:space="preserve">a list of
+ #GstBuffer containing the codec header</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Gst.Buffer"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_audio_encoder_set_latency">
+ <doc xml:space="preserve">Sets encoder latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="min" transfer-ownership="none">
+ <doc xml:space="preserve">minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max" transfer-ownership="none">
+ <doc xml:space="preserve">maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_lookahead"
+ c:identifier="gst_audio_encoder_set_lookahead">
+ <doc xml:space="preserve">Sets encoder lookahead (in units of input rate samples)
+
+Note: This value will be reset to 0 every time before
+GstAudioEncoder::set_format() is called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">lookahead</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mark_granule"
+ c:identifier="gst_audio_encoder_set_mark_granule">
+ <doc xml:space="preserve">Enable or disable encoder granule handling.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_output_format"
+ c:identifier="gst_audio_encoder_set_output_format">
+ <doc xml:space="preserve">Configure output caps on the srcpad of @enc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">#GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_perfect_timestamp"
+ c:identifier="gst_audio_encoder_set_perfect_timestamp">
+ <doc xml:space="preserve">Enable or disable encoder perfect output timestamp preference.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tolerance"
+ c:identifier="gst_audio_encoder_set_tolerance">
+ <doc xml:space="preserve">Configures encoder audio jitter tolerance threshold.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </instance-parameter>
+ <parameter name="tolerance" transfer-ownership="none">
+ <doc xml:space="preserve">new tolerance</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="hard-resync" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="mark-granule" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="perfect-timestamp"
+ writable="1"
+ transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="tolerance" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="stream_lock">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="input_segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="output_segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioEncoderPrivate" c:type="GstAudioEncoderPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioEncoderClass"
+ c:type="GstAudioEncoderClass"
+ glib:is-gtype-struct-for="AudioEncoder">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @set_format and @handle_frame needs to be overridden.</doc>
+ <field name="element_class">
+ <doc xml:space="preserve">The parent class structure</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_format">
+ <callback name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_frame">
+ <callback name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pre_push">
+ <callback name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="getcaps">
+ <callback name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiate">
+ <callback name="negotiate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioEncoder</doc>
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_meta">
+ <callback name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="AudioEncoder" c:type="GstAudioEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="17">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioEncoderPrivate"
+ c:type="GstAudioEncoderPrivate"
+ disguised="1">
+ </record>
+ <class name="AudioFilter"
+ c:symbol-prefix="audio_filter"
+ c:type="GstAudioFilter"
+ parent="GstBase.BaseTransform"
+ abstract="1"
+ glib:type-name="GstAudioFilter"
+ glib:get-type="gst_audio_filter_get_type"
+ glib:type-struct="AudioFilterClass">
+ <doc xml:space="preserve">#GstAudioFilter is a #GstBaseTransform&lt;!-- --&gt;-derived base class for simple audio
+filters, ie. those that output the same format that they get as input.
+
+#GstAudioFilter will parse the input format for you (with error checking)
+before calling your setup function. Also, elements deriving from
+#GstAudioFilter may use gst_audio_filter_class_add_pad_templates() from
+their class_init function to easily configure the set of caps/formats that
+the element is able to handle.
+
+Derived classes should override the #GstAudioFilterClass.setup() and
+#GstBaseTransformClass.transform_ip() and/or
+#GstBaseTransformClass.transform()
+virtual functions in their class_init function.</doc>
+ <virtual-method name="setup">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="AudioFilter" c:type="GstAudioFilter*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="basetransform">
+ <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+ </field>
+ <field name="info">
+ <type name="AudioInfo" c:type="GstAudioInfo"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioFilterClass"
+ c:type="GstAudioFilterClass"
+ glib:is-gtype-struct-for="AudioFilter">
+ <doc xml:space="preserve">In addition to the @setup virtual function, you should also override the
+GstBaseTransform::transform and/or GstBaseTransform::transform_ip virtual
+function.</doc>
+ <field name="basetransformclass">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="GstBase.BaseTransformClass"
+ c:type="GstBaseTransformClass"/>
+ </field>
+ <field name="setup">
+ <callback name="setup">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="AudioFilter" c:type="GstAudioFilter*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_pad_templates"
+ c:identifier="gst_audio_filter_class_add_pad_templates">
+ <doc xml:space="preserve">Convenience function to add pad templates to this element class, with
+@allowed_caps as the caps that can be handled.
+
+This function is usually used from within a GObject class_init function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="klass" transfer-ownership="none">
+ <doc xml:space="preserve">an #GstAudioFilterClass</doc>
+ <type name="AudioFilterClass" c:type="GstAudioFilterClass*"/>
+ </instance-parameter>
+ <parameter name="allowed_caps" transfer-ownership="none">
+ <doc xml:space="preserve">what formats the filter can handle, as #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="AudioFlags"
+ glib:type-name="GstAudioFlags"
+ glib:get-type="gst_audio_flags_get_type"
+ c:type="GstAudioFlags">
+ <doc xml:space="preserve">Extra audio flags</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no valid flag</doc>
+ </member>
+ <member name="unpositioned"
+ value="1"
+ c:identifier="GST_AUDIO_FLAG_UNPOSITIONED"
+ glib:nick="unpositioned">
+ <doc xml:space="preserve">the position array explicitly
+ contains unpositioned channels.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="AudioFormat"
+ glib:type-name="GstAudioFormat"
+ glib:get-type="gst_audio_format_get_type"
+ c:type="GstAudioFormat">
+ <doc xml:space="preserve">Enum value describing the most common audio formats.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_AUDIO_FORMAT_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown or unset audio format</doc>
+ </member>
+ <member name="encoded"
+ value="1"
+ c:identifier="GST_AUDIO_FORMAT_ENCODED"
+ glib:nick="encoded">
+ <doc xml:space="preserve">encoded audio format</doc>
+ </member>
+ <member name="s8"
+ value="2"
+ c:identifier="GST_AUDIO_FORMAT_S8"
+ glib:nick="s8">
+ <doc xml:space="preserve">8 bits in 8 bits, signed</doc>
+ </member>
+ <member name="u8"
+ value="3"
+ c:identifier="GST_AUDIO_FORMAT_U8"
+ glib:nick="u8">
+ <doc xml:space="preserve">8 bits in 8 bits, unsigned</doc>
+ </member>
+ <member name="s16le"
+ value="4"
+ c:identifier="GST_AUDIO_FORMAT_S16LE"
+ glib:nick="s16le">
+ <doc xml:space="preserve">16 bits in 16 bits, signed, little endian</doc>
+ </member>
+ <member name="s16be"
+ value="5"
+ c:identifier="GST_AUDIO_FORMAT_S16BE"
+ glib:nick="s16be">
+ <doc xml:space="preserve">16 bits in 16 bits, signed, big endian</doc>
+ </member>
+ <member name="u16le"
+ value="6"
+ c:identifier="GST_AUDIO_FORMAT_U16LE"
+ glib:nick="u16le">
+ <doc xml:space="preserve">16 bits in 16 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u16be"
+ value="7"
+ c:identifier="GST_AUDIO_FORMAT_U16BE"
+ glib:nick="u16be">
+ <doc xml:space="preserve">16 bits in 16 bits, unsigned, big endian</doc>
+ </member>
+ <member name="s24_32le"
+ value="8"
+ c:identifier="GST_AUDIO_FORMAT_S24_32LE"
+ glib:nick="s24-32le">
+ <doc xml:space="preserve">24 bits in 32 bits, signed, little endian</doc>
+ </member>
+ <member name="s24_32be"
+ value="9"
+ c:identifier="GST_AUDIO_FORMAT_S24_32BE"
+ glib:nick="s24-32be">
+ <doc xml:space="preserve">24 bits in 32 bits, signed, big endian</doc>
+ </member>
+ <member name="u24_32le"
+ value="10"
+ c:identifier="GST_AUDIO_FORMAT_U24_32LE"
+ glib:nick="u24-32le">
+ <doc xml:space="preserve">24 bits in 32 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u24_32be"
+ value="11"
+ c:identifier="GST_AUDIO_FORMAT_U24_32BE"
+ glib:nick="u24-32be">
+ <doc xml:space="preserve">24 bits in 32 bits, unsigned, big endian</doc>
+ </member>
+ <member name="s32le"
+ value="12"
+ c:identifier="GST_AUDIO_FORMAT_S32LE"
+ glib:nick="s32le">
+ <doc xml:space="preserve">32 bits in 32 bits, signed, little endian</doc>
+ </member>
+ <member name="s32be"
+ value="13"
+ c:identifier="GST_AUDIO_FORMAT_S32BE"
+ glib:nick="s32be">
+ <doc xml:space="preserve">32 bits in 32 bits, signed, big endian</doc>
+ </member>
+ <member name="u32le"
+ value="14"
+ c:identifier="GST_AUDIO_FORMAT_U32LE"
+ glib:nick="u32le">
+ <doc xml:space="preserve">32 bits in 32 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u32be"
+ value="15"
+ c:identifier="GST_AUDIO_FORMAT_U32BE"
+ glib:nick="u32be">
+ <doc xml:space="preserve">32 bits in 32 bits, unsigned, big endian</doc>
+ </member>
+ <member name="s24le"
+ value="16"
+ c:identifier="GST_AUDIO_FORMAT_S24LE"
+ glib:nick="s24le">
+ <doc xml:space="preserve">24 bits in 24 bits, signed, little endian</doc>
+ </member>
+ <member name="s24be"
+ value="17"
+ c:identifier="GST_AUDIO_FORMAT_S24BE"
+ glib:nick="s24be">
+ <doc xml:space="preserve">24 bits in 24 bits, signed, big endian</doc>
+ </member>
+ <member name="u24le"
+ value="18"
+ c:identifier="GST_AUDIO_FORMAT_U24LE"
+ glib:nick="u24le">
+ <doc xml:space="preserve">24 bits in 24 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u24be"
+ value="19"
+ c:identifier="GST_AUDIO_FORMAT_U24BE"
+ glib:nick="u24be">
+ <doc xml:space="preserve">24 bits in 24 bits, unsigned, big endian</doc>
+ </member>
+ <member name="s20le"
+ value="20"
+ c:identifier="GST_AUDIO_FORMAT_S20LE"
+ glib:nick="s20le">
+ <doc xml:space="preserve">20 bits in 24 bits, signed, little endian</doc>
+ </member>
+ <member name="s20be"
+ value="21"
+ c:identifier="GST_AUDIO_FORMAT_S20BE"
+ glib:nick="s20be">
+ <doc xml:space="preserve">20 bits in 24 bits, signed, big endian</doc>
+ </member>
+ <member name="u20le"
+ value="22"
+ c:identifier="GST_AUDIO_FORMAT_U20LE"
+ glib:nick="u20le">
+ <doc xml:space="preserve">20 bits in 24 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u20be"
+ value="23"
+ c:identifier="GST_AUDIO_FORMAT_U20BE"
+ glib:nick="u20be">
+ <doc xml:space="preserve">20 bits in 24 bits, unsigned, big endian</doc>
+ </member>
+ <member name="s18le"
+ value="24"
+ c:identifier="GST_AUDIO_FORMAT_S18LE"
+ glib:nick="s18le">
+ <doc xml:space="preserve">18 bits in 24 bits, signed, little endian</doc>
+ </member>
+ <member name="s18be"
+ value="25"
+ c:identifier="GST_AUDIO_FORMAT_S18BE"
+ glib:nick="s18be">
+ <doc xml:space="preserve">18 bits in 24 bits, signed, big endian</doc>
+ </member>
+ <member name="u18le"
+ value="26"
+ c:identifier="GST_AUDIO_FORMAT_U18LE"
+ glib:nick="u18le">
+ <doc xml:space="preserve">18 bits in 24 bits, unsigned, little endian</doc>
+ </member>
+ <member name="u18be"
+ value="27"
+ c:identifier="GST_AUDIO_FORMAT_U18BE"
+ glib:nick="u18be">
+ <doc xml:space="preserve">18 bits in 24 bits, unsigned, big endian</doc>
+ </member>
+ <member name="f32le"
+ value="28"
+ c:identifier="GST_AUDIO_FORMAT_F32LE"
+ glib:nick="f32le">
+ <doc xml:space="preserve">32-bit floating point samples, little endian</doc>
+ </member>
+ <member name="f32be"
+ value="29"
+ c:identifier="GST_AUDIO_FORMAT_F32BE"
+ glib:nick="f32be">
+ <doc xml:space="preserve">32-bit floating point samples, big endian</doc>
+ </member>
+ <member name="f64le"
+ value="30"
+ c:identifier="GST_AUDIO_FORMAT_F64LE"
+ glib:nick="f64le">
+ <doc xml:space="preserve">64-bit floating point samples, little endian</doc>
+ </member>
+ <member name="f64be"
+ value="31"
+ c:identifier="GST_AUDIO_FORMAT_F64BE"
+ glib:nick="f64be">
+ <doc xml:space="preserve">64-bit floating point samples, big endian</doc>
+ </member>
+ <member name="s16"
+ value="4"
+ c:identifier="GST_AUDIO_FORMAT_S16"
+ glib:nick="s16">
+ <doc xml:space="preserve">16 bits in 16 bits, signed, native endianness</doc>
+ </member>
+ <member name="u16"
+ value="6"
+ c:identifier="GST_AUDIO_FORMAT_U16"
+ glib:nick="u16">
+ <doc xml:space="preserve">16 bits in 16 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="s24_32"
+ value="8"
+ c:identifier="GST_AUDIO_FORMAT_S24_32"
+ glib:nick="s24-32">
+ <doc xml:space="preserve">24 bits in 32 bits, signed, native endianness</doc>
+ </member>
+ <member name="u24_32"
+ value="10"
+ c:identifier="GST_AUDIO_FORMAT_U24_32"
+ glib:nick="u24-32">
+ <doc xml:space="preserve">24 bits in 32 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="s32"
+ value="12"
+ c:identifier="GST_AUDIO_FORMAT_S32"
+ glib:nick="s32">
+ <doc xml:space="preserve">32 bits in 32 bits, signed, native endianness</doc>
+ </member>
+ <member name="u32"
+ value="14"
+ c:identifier="GST_AUDIO_FORMAT_U32"
+ glib:nick="u32">
+ <doc xml:space="preserve">32 bits in 32 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="s24"
+ value="16"
+ c:identifier="GST_AUDIO_FORMAT_S24"
+ glib:nick="s24">
+ <doc xml:space="preserve">24 bits in 24 bits, signed, native endianness</doc>
+ </member>
+ <member name="u24"
+ value="18"
+ c:identifier="GST_AUDIO_FORMAT_U24"
+ glib:nick="u24">
+ <doc xml:space="preserve">24 bits in 24 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="s20"
+ value="20"
+ c:identifier="GST_AUDIO_FORMAT_S20"
+ glib:nick="s20">
+ <doc xml:space="preserve">20 bits in 24 bits, signed, native endianness</doc>
+ </member>
+ <member name="u20"
+ value="22"
+ c:identifier="GST_AUDIO_FORMAT_U20"
+ glib:nick="u20">
+ <doc xml:space="preserve">20 bits in 24 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="s18"
+ value="24"
+ c:identifier="GST_AUDIO_FORMAT_S18"
+ glib:nick="s18">
+ <doc xml:space="preserve">18 bits in 24 bits, signed, native endianness</doc>
+ </member>
+ <member name="u18"
+ value="26"
+ c:identifier="GST_AUDIO_FORMAT_U18"
+ glib:nick="u18">
+ <doc xml:space="preserve">18 bits in 24 bits, unsigned, native endianness</doc>
+ </member>
+ <member name="f32"
+ value="28"
+ c:identifier="GST_AUDIO_FORMAT_F32"
+ glib:nick="f32">
+ <doc xml:space="preserve">32-bit floating point samples, native endianness</doc>
+ </member>
+ <member name="f64"
+ value="30"
+ c:identifier="GST_AUDIO_FORMAT_F64"
+ glib:nick="f64">
+ <doc xml:space="preserve">64-bit floating point samples, native endianness</doc>
+ </member>
+ <function name="build_integer"
+ c:identifier="gst_audio_format_build_integer">
+ <doc xml:space="preserve">Construct a #GstAudioFormat with given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormat or GST_AUDIO_FORMAT_UNKNOWN when no audio format
+exists with the given parameters.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="sign" transfer-ownership="none">
+ <doc xml:space="preserve">signed or unsigned format</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="endianness" transfer-ownership="none">
+ <doc xml:space="preserve">G_LITTLE_ENDIAN or G_BIG_ENDIAN</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">amount of bits used per sample</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="depth" transfer-ownership="none">
+ <doc xml:space="preserve">amount of used bits in @width</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="fill_silence"
+ c:identifier="gst_audio_format_fill_silence">
+ <doc xml:space="preserve">Fill @length bytes in @dest with silence samples for @info.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormatInfo</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a destination
+ to fill</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the length to fill</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="from_string" c:identifier="gst_audio_format_from_string">
+ <doc xml:space="preserve">Convert the @format string to its #GstAudioFormat.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioFormat for @format or GST_AUDIO_FORMAT_UNKNOWN when the
+string is not a known format.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_info" c:identifier="gst_audio_format_get_info">
+ <doc xml:space="preserve">Get the #GstAudioFormatInfo for @format</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAudioFormatInfo for @format.</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormat</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_string" c:identifier="gst_audio_format_to_string">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <bitfield name="AudioFormatFlags"
+ glib:type-name="GstAudioFormatFlags"
+ glib:get-type="gst_audio_format_flags_get_type"
+ c:type="GstAudioFormatFlags">
+ <doc xml:space="preserve">The different audio flags that a format info can have.</doc>
+ <member name="integer"
+ value="1"
+ c:identifier="GST_AUDIO_FORMAT_FLAG_INTEGER"
+ glib:nick="integer">
+ <doc xml:space="preserve">integer samples</doc>
+ </member>
+ <member name="float"
+ value="2"
+ c:identifier="GST_AUDIO_FORMAT_FLAG_FLOAT"
+ glib:nick="float">
+ <doc xml:space="preserve">float samples</doc>
+ </member>
+ <member name="signed"
+ value="4"
+ c:identifier="GST_AUDIO_FORMAT_FLAG_SIGNED"
+ glib:nick="signed">
+ <doc xml:space="preserve">signed samples</doc>
+ </member>
+ <member name="complex"
+ value="16"
+ c:identifier="GST_AUDIO_FORMAT_FLAG_COMPLEX"
+ glib:nick="complex">
+ <doc xml:space="preserve">complex layout</doc>
+ </member>
+ <member name="unpack"
+ value="32"
+ c:identifier="GST_AUDIO_FORMAT_FLAG_UNPACK"
+ glib:nick="unpack">
+ <doc xml:space="preserve">the format can be used in
+#GstAudioFormatUnpack and #GstAudioFormatPack functions</doc>
+ </member>
+ </bitfield>
+ <record name="AudioFormatInfo" c:type="GstAudioFormatInfo">
+ <doc xml:space="preserve">Information for an audio format.</doc>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">#GstAudioFormat</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </field>
+ <field name="name" writable="1">
+ <doc xml:space="preserve">string representation of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" writable="1">
+ <doc xml:space="preserve">user readable description of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">#GstAudioFormatFlags</doc>
+ <type name="AudioFormatFlags" c:type="GstAudioFormatFlags"/>
+ </field>
+ <field name="endianness" writable="1">
+ <doc xml:space="preserve">the endianness</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="width" writable="1">
+ <doc xml:space="preserve">amount of bits used for one sample</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="depth" writable="1">
+ <doc xml:space="preserve">amount of valid bits in @width</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="silence" writable="1">
+ <doc xml:space="preserve">@width/8 bytes with 1 silent sample</doc>
+ <array zero-terminated="0" c:type="guint8" fixed-size="8">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <field name="unpack_format" writable="1">
+ <doc xml:space="preserve">the format of the unpacked samples</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </field>
+ <field name="unpack_func" writable="1">
+ <doc xml:space="preserve">function to unpack samples</doc>
+ <type name="AudioFormatUnpack" c:type="GstAudioFormatUnpack"/>
+ </field>
+ <field name="pack_func" writable="1">
+ <doc xml:space="preserve">function to pack samples</doc>
+ <type name="AudioFormatPack" c:type="GstAudioFormatPack"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="AudioFormatPack" c:type="GstAudioFormatPack">
+ <doc xml:space="preserve">Packs @length samples from @src to the data array in format @info.
+The samples from source have each channel interleaved
+and will be packed into @data.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormatInfo</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="AudioPackFlags" c:type="GstAudioPackFlags"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a source array</doc>
+ <array zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to the destination
+ data</doc>
+ <array zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of samples to pack.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="AudioFormatUnpack" c:type="GstAudioFormatUnpack">
+ <doc xml:space="preserve">Unpacks @length samples from the given data of format @info.
+The samples will be unpacked into @dest which each channel
+interleaved. @dest should at least be big enough to hold @length *
+channels * size(unpack_format) bytes.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormatInfo</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="AudioPackFlags" c:type="GstAudioPackFlags"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a destination array</doc>
+ <array zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to the audio data</doc>
+ <array zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of samples to unpack.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="AudioInfo"
+ c:type="GstAudioInfo"
+ glib:type-name="GstAudioInfo"
+ glib:get-type="gst_audio_info_get_type"
+ c:symbol-prefix="audio_info">
+ <doc xml:space="preserve">Information describing audio properties. This information can be filled
+in from GstCaps with gst_audio_info_from_caps().
+
+Use the provided macros to access the info in this structure.</doc>
+ <field name="finfo" writable="1">
+ <doc xml:space="preserve">the format info of the audio</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">additional audio flags</doc>
+ <type name="AudioFlags" c:type="GstAudioFlags"/>
+ </field>
+ <field name="layout" writable="1">
+ <doc xml:space="preserve">audio layout</doc>
+ <type name="AudioLayout" c:type="GstAudioLayout"/>
+ </field>
+ <field name="rate" writable="1">
+ <doc xml:space="preserve">the audio sample rate</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="channels" writable="1">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="bpf" writable="1">
+ <doc xml:space="preserve">the number of bytes for one frame, this is the size of one
+ sample * @channels</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="position" writable="1">
+ <doc xml:space="preserve">the positions for each channel</doc>
+ <array zero-terminated="0"
+ c:type="GstAudioChannelPosition"
+ fixed-size="64">
+ <type name="AudioChannelPosition" c:type="GstAudioChannelPosition"/>
+ </array>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <constructor name="new" c:identifier="gst_audio_info_new">
+ <doc xml:space="preserve">Allocate a new #GstAudioInfo that is also initialized with
+gst_audio_info_init().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAudioInfo. free with gst_audio_info_free().</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </return-value>
+ </constructor>
+ <method name="convert" c:identifier="gst_audio_info_convert">
+ <doc xml:space="preserve">Converts among various #GstFormat types. This function handles
+GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT. For
+raw audio, GST_FORMAT_DEFAULT corresponds to audio frames. This
+function can be used to handle pad queries of the type GST_QUERY_CONVERT.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the conversion was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </instance-parameter>
+ <parameter name="src_fmt" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat of the @src_val</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_val" transfer-ownership="none">
+ <doc xml:space="preserve">value to convert</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_fmt" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat of the @dest_val</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to destination value</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_audio_info_copy">
+ <doc xml:space="preserve">Copy a GstAudioInfo structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAudioInfo. free with gst_audio_info_free.</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_audio_info_free">
+ <doc xml:space="preserve">Free a GstAudioInfo structure previously allocated with gst_audio_info_new()
+or gst_audio_info_copy().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="from_caps" c:identifier="gst_audio_info_from_caps">
+ <doc xml:space="preserve">Parse @caps and update @info.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @caps could be parsed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_audio_info_init">
+ <doc xml:space="preserve">Initialize @info with default values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal"
+ c:identifier="gst_audio_info_is_equal"
+ version="1.2">
+ <doc xml:space="preserve">Compares two #GstAudioInfo and returns whether they are equal or not</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @info and @other are equal, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </instance-parameter>
+ <parameter name="other" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_format" c:identifier="gst_audio_info_set_format">
+ <doc xml:space="preserve">Set the default info for the audio info of @format and @rate and @channels.
+
+Note: This initializes @info first, no values are preserved.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the samplerate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="position"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the channel positions</doc>
+ <array zero-terminated="0"
+ c:type="GstAudioChannelPosition*"
+ fixed-size="64">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_caps" c:identifier="gst_audio_info_to_caps">
+ <doc xml:space="preserve">Convert the values of @info into a #GstCaps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstCaps containing the
+ info of @info.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="const GstAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="AudioLayout"
+ glib:type-name="GstAudioLayout"
+ glib:get-type="gst_audio_layout_get_type"
+ c:type="GstAudioLayout">
+ <doc xml:space="preserve">Layout of the audio samples for the different channels.</doc>
+ <member name="interleaved"
+ value="0"
+ c:identifier="GST_AUDIO_LAYOUT_INTERLEAVED"
+ glib:nick="interleaved">
+ <doc xml:space="preserve">interleaved audio</doc>
+ </member>
+ <member name="non_interleaved"
+ value="1"
+ c:identifier="GST_AUDIO_LAYOUT_NON_INTERLEAVED"
+ glib:nick="non-interleaved">
+ <doc xml:space="preserve">non-interleaved audio</doc>
+ </member>
+ </enumeration>
+ <enumeration name="AudioNoiseShapingMethod"
+ glib:type-name="GstAudioNoiseShapingMethod"
+ glib:get-type="gst_audio_noise_shaping_method_get_type"
+ c:type="GstAudioNoiseShapingMethod">
+ <doc xml:space="preserve">Set of available noise shaping methods</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_NOISE_SHAPING_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No noise shaping (default)</doc>
+ </member>
+ <member name="error_feedback"
+ value="1"
+ c:identifier="GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK"
+ glib:nick="error-feedback">
+ <doc xml:space="preserve">Error feedback</doc>
+ </member>
+ <member name="simple"
+ value="2"
+ c:identifier="GST_AUDIO_NOISE_SHAPING_SIMPLE"
+ glib:nick="simple">
+ <doc xml:space="preserve">Simple 2-pole noise shaping</doc>
+ </member>
+ <member name="medium"
+ value="3"
+ c:identifier="GST_AUDIO_NOISE_SHAPING_MEDIUM"
+ glib:nick="medium">
+ <doc xml:space="preserve">Medium 5-pole noise shaping</doc>
+ </member>
+ <member name="high"
+ value="4"
+ c:identifier="GST_AUDIO_NOISE_SHAPING_HIGH"
+ glib:nick="high">
+ <doc xml:space="preserve">High 8-pole noise shaping</doc>
+ </member>
+ </enumeration>
+ <bitfield name="AudioPackFlags"
+ glib:type-name="GstAudioPackFlags"
+ glib:get-type="gst_audio_pack_flags_get_type"
+ c:type="GstAudioPackFlags">
+ <doc xml:space="preserve">The different flags that can be used when packing and unpacking.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_PACK_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No flag</doc>
+ </member>
+ <member name="truncate_range"
+ value="1"
+ c:identifier="GST_AUDIO_PACK_FLAG_TRUNCATE_RANGE"
+ glib:nick="truncate-range">
+ <doc xml:space="preserve">When the source has a smaller depth
+ than the target format, set the least significant bits of the target
+ to 0. This is likely sightly faster but less accurate. When this flag
+ is not specified, the most significant bits of the source are duplicated
+ in the least significant bits of the destination.</doc>
+ </member>
+ </bitfield>
+ <record name="AudioQuantize" c:type="GstAudioQuantize" disguised="1">
+ <method name="free" c:identifier="gst_audio_quantize_free">
+ <doc xml:space="preserve">Free a #GstAudioQuantize.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="quant" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioQuantize</doc>
+ <type name="AudioQuantize" c:type="GstAudioQuantize*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_audio_quantize_reset">
+ <doc xml:space="preserve">Reset @quant to the state is was when created, clearing any
+history it might have.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="quant" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioQuantize</doc>
+ <type name="AudioQuantize" c:type="GstAudioQuantize*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="samples" c:identifier="gst_audio_quantize_samples">
+ <doc xml:space="preserve">Perform quantization on @samples in @in and write the result to @out.
+
+In case the samples are interleaved, @in and @out must point to an
+array with a single element pointing to a block of interleaved samples.
+
+If non-interleaved samples are used, @in and @out must point to an
+array with pointers to memory blocks, one for each channel.
+
+@in and @out may point to the same memory location, in which case samples will be
+modified in-place.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="quant" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioQuantize</doc>
+ <type name="AudioQuantize" c:type="GstAudioQuantize*"/>
+ </instance-parameter>
+ <parameter name="in"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">input samples</doc>
+ <type name="gpointer" c:type="const gpointer"/>
+ </parameter>
+ <parameter name="out"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">output samples</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="samples" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_audio_quantize_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new quantizer object with the given parameters.
+
+Output samples will be quantized to a multiple of @quantizer. Better
+performance is achieved when @quantizer is a power of 2.
+
+Dithering and noise-shaping can be performed during quantization with
+the @dither and @ns parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioQuantize. Free with gst_audio_quantize_free().</doc>
+ <type name="AudioQuantize" c:type="GstAudioQuantize*"/>
+ </return-value>
+ <parameters>
+ <parameter name="dither" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDitherMethod</doc>
+ <type name="AudioDitherMethod" c:type="GstAudioDitherMethod"/>
+ </parameter>
+ <parameter name="ns" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioNoiseShapingMethod</doc>
+ <type name="AudioNoiseShapingMethod"
+ c:type="GstAudioNoiseShapingMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioQuantizeFlags</doc>
+ <type name="AudioQuantizeFlags" c:type="GstAudioQuantizeFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioFormat of the samples</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of channels in the samples</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="quantizer" transfer-ownership="none">
+ <doc xml:space="preserve">the quantizer to use</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="AudioQuantizeFlags"
+ glib:type-name="GstAudioQuantizeFlags"
+ glib:get-type="gst_audio_quantize_flags_get_type"
+ c:type="GstAudioQuantizeFlags">
+ <doc xml:space="preserve">Extra flags that can be passed to gst_audio_quantize_new()</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_QUANTIZE_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="non_interleaved"
+ value="1"
+ c:identifier="GST_AUDIO_QUANTIZE_FLAG_NON_INTERLEAVED"
+ glib:nick="non-interleaved">
+ <doc xml:space="preserve">samples are non-interleaved</doc>
+ </member>
+ </bitfield>
+ <record name="AudioResampler" c:type="GstAudioResampler" disguised="1">
+ <doc xml:space="preserve">#GstAudioResampler is a structure which holds the information
+required to perform various kinds of resampling filtering.</doc>
+ <method name="free"
+ c:identifier="gst_audio_resampler_free"
+ version="1.6">
+ <doc xml:space="preserve">Free a previously allocated #GstAudioResampler @resampler.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_in_frames"
+ c:identifier="gst_audio_resampler_get_in_frames">
+ <doc xml:space="preserve">Get the number of input frames that would currently be needed
+to produce @out_frames from @resampler.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of input frames needed for producing
+@out_frames of data from @resampler.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ <parameter name="out_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_latency"
+ c:identifier="gst_audio_resampler_get_max_latency">
+ <doc xml:space="preserve">Get the maximum number of input samples that the resampler would
+need before producing output.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the latency of @resampler as expressed in the number of
+frames.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_out_frames"
+ c:identifier="gst_audio_resampler_get_out_frames">
+ <doc xml:space="preserve">Get the number of output frames that would be currently available when
+@in_frames are given to @resampler.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of frames that would be availabe after giving
+@in_frames as input to @resampler.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ <parameter name="in_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="resample" c:identifier="gst_audio_resampler_resample">
+ <doc xml:space="preserve">Perform resampling on @in_frames frames in @in and write @out_frames to @out.
+
+In case the samples are interleaved, @in and @out must point to an
+array with a single element pointing to a block of interleaved samples.
+
+If non-interleaved samples are used, @in and @out must point to an
+array with pointers to memory blocks, one for each channel.
+
+@in may be %NULL, in which case @in_frames of silence samples are pushed
+into the resampler.
+
+This function always produces @out_frames of output and consumes @in_frames of
+input. Use gst_audio_resampler_get_out_frames() and
+gst_audio_resampler_get_in_frames() to make sure @in_frames and @out_frames
+are matching and @in and @out point to enough memory.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ <parameter name="in"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">input samples</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="in_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of input frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="out"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">output samples</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="out_frames" transfer-ownership="none">
+ <doc xml:space="preserve">number of output frames</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_audio_resampler_reset">
+ <doc xml:space="preserve">Reset @resampler to the state it was when it was first created, discarding
+all sample history.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="update" c:identifier="gst_audio_resampler_update">
+ <doc xml:space="preserve">Update the resampler parameters for @resampler. This function should
+not be called concurrently with any other function on @resampler.
+
+When @in_rate or @out_rate is 0, its value is unchanged.
+
+When @options is %NULL, the previously configured options are reused.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the new parameters could be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResampler</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </instance-parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">new input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">new output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">new options or %NULL</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new" c:identifier="gst_audio_resampler_new">
+ <doc xml:space="preserve">Make a new resampler.</doc>
+ <return-value transfer-ownership="full" skip="1">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResamplerMethod</doc>
+ <type name="AudioResamplerMethod"
+ c:type="GstAudioResamplerMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioResamplerFlags</doc>
+ <type name="AudioResamplerFlags" c:type="GstAudioResamplerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">extra options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="options_set_quality"
+ c:identifier="gst_audio_resampler_options_set_quality">
+ <doc xml:space="preserve">Set the parameters for resampling from @in_rate to @out_rate using @method
+for @quality in @options.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResamplerMethod</doc>
+ <type name="AudioResamplerMethod"
+ c:type="GstAudioResamplerMethod"/>
+ </parameter>
+ <parameter name="quality" transfer-ownership="none">
+ <doc xml:space="preserve">the quality</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="AudioResamplerFilterInterpolation"
+ glib:type-name="GstAudioResamplerFilterInterpolation"
+ glib:get-type="gst_audio_resampler_filter_interpolation_get_type"
+ c:type="GstAudioResamplerFilterInterpolation">
+ <doc xml:space="preserve">The different filter interpolation methods.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no interpolation</doc>
+ </member>
+ <member name="linear"
+ value="1"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_LINEAR"
+ glib:nick="linear">
+ <doc xml:space="preserve">linear interpolation of the
+ filter coeficients.</doc>
+ </member>
+ <member name="cubic"
+ value="2"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC"
+ glib:nick="cubic">
+ <doc xml:space="preserve">cubic interpolation of the
+ filter coeficients.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="AudioResamplerFilterMode"
+ glib:type-name="GstAudioResamplerFilterMode"
+ glib:get-type="gst_audio_resampler_filter_mode_get_type"
+ c:type="GstAudioResamplerFilterMode">
+ <doc xml:space="preserve">Select for the filter tables should be set up.</doc>
+ <member name="interpolated"
+ value="0"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_MODE_INTERPOLATED"
+ glib:nick="interpolated">
+ <doc xml:space="preserve">Use interpolated filter tables. This
+ uses less memory but more CPU and is slightly less accurate but it allows for more
+ efficient variable rate resampling with gst_audio_resampler_update().</doc>
+ </member>
+ <member name="full"
+ value="1"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_MODE_FULL"
+ glib:nick="full">
+ <doc xml:space="preserve">Use full filter table. This uses more memory
+ but less CPU.</doc>
+ </member>
+ <member name="auto"
+ value="2"
+ c:identifier="GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO"
+ glib:nick="auto">
+ <doc xml:space="preserve">Automatically choose between interpolated
+ and full filter tables.</doc>
+ </member>
+ </enumeration>
+ <bitfield name="AudioResamplerFlags"
+ glib:type-name="GstAudioResamplerFlags"
+ glib:get-type="gst_audio_resampler_flags_get_type"
+ c:type="GstAudioResamplerFlags">
+ <doc xml:space="preserve">Different resampler flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_RESAMPLER_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="non_interleaved_in"
+ value="1"
+ c:identifier="GST_AUDIO_RESAMPLER_FLAG_NON_INTERLEAVED_IN"
+ glib:nick="non-interleaved-in">
+ <doc xml:space="preserve">input samples are non-interleaved.
+ an array of blocks of samples, one for each channel, should be passed to the
+ resample function.</doc>
+ </member>
+ <member name="non_interleaved_out"
+ value="2"
+ c:identifier="GST_AUDIO_RESAMPLER_FLAG_NON_INTERLEAVED_OUT"
+ glib:nick="non-interleaved-out">
+ <doc xml:space="preserve">output samples are non-interleaved.
+ an array of blocks of samples, one for each channel, should be passed to the
+ resample function.</doc>
+ </member>
+ <member name="variable_rate"
+ value="4"
+ c:identifier="GST_AUDIO_RESAMPLER_FLAG_VARIABLE_RATE"
+ glib:nick="variable-rate">
+ <doc xml:space="preserve">optimize for dynamic updates of the sample
+ rates with gst_audio_resampler_update(). This will select an interpolating filter
+ when #GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO is configured.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="AudioResamplerMethod"
+ version="1.6"
+ glib:type-name="GstAudioResamplerMethod"
+ glib:get-type="gst_audio_resampler_method_get_type"
+ c:type="GstAudioResamplerMethod">
+ <doc xml:space="preserve">Different subsampling and upsampling methods</doc>
+ <member name="nearest"
+ value="0"
+ c:identifier="GST_AUDIO_RESAMPLER_METHOD_NEAREST"
+ glib:nick="nearest">
+ <doc xml:space="preserve">Duplicates the samples when
+ upsampling and drops when downsampling</doc>
+ </member>
+ <member name="linear"
+ value="1"
+ c:identifier="GST_AUDIO_RESAMPLER_METHOD_LINEAR"
+ glib:nick="linear">
+ <doc xml:space="preserve">Uses linear interpolation to reconstruct
+ missing samples and averaging to downsample</doc>
+ </member>
+ <member name="cubic"
+ value="2"
+ c:identifier="GST_AUDIO_RESAMPLER_METHOD_CUBIC"
+ glib:nick="cubic">
+ <doc xml:space="preserve">Uses cubic interpolation</doc>
+ </member>
+ <member name="blackman_nuttall"
+ value="3"
+ c:identifier="GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL"
+ glib:nick="blackman-nuttall">
+ <doc xml:space="preserve">Uses Blackman-Nuttall windowed sinc interpolation</doc>
+ </member>
+ <member name="kaiser"
+ value="4"
+ c:identifier="GST_AUDIO_RESAMPLER_METHOD_KAISER"
+ glib:nick="kaiser">
+ <doc xml:space="preserve">Uses Kaiser windowed sinc interpolation</doc>
+ </member>
+ </enumeration>
+ <class name="AudioRingBuffer"
+ c:symbol-prefix="audio_ring_buffer"
+ c:type="GstAudioRingBuffer"
+ parent="Gst.Object"
+ abstract="1"
+ glib:type-name="GstAudioRingBuffer"
+ glib:get-type="gst_audio_ring_buffer_get_type"
+ glib:type-struct="AudioRingBufferClass">
+ <doc xml:space="preserve">This object is the base class for audio ringbuffers used by the base
+audio source and sink classes.
+
+The ringbuffer abstracts a circular buffer of data. One reader and
+one writer can operate on the data from different threads in a lockfree
+manner. The base class is sufficiently flexible to be used as an
+abstraction for DMA based ringbuffers as well as a pure software
+implementations.</doc>
+ <function name="debug_spec_buff"
+ c:identifier="gst_audio_ring_buffer_debug_spec_buff">
+ <doc xml:space="preserve">Print debug info about the buffer sized in @spec to the debug log.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the spec to debug</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="debug_spec_caps"
+ c:identifier="gst_audio_ring_buffer_debug_spec_caps">
+ <doc xml:space="preserve">Print debug info about the parsed caps in @spec to the debug log.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the spec to debug</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_caps"
+ c:identifier="gst_audio_ring_buffer_parse_caps">
+ <doc xml:space="preserve">Parse @caps into @spec.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the caps could be parsed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">a spec</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="acquire" invoker="acquire">
+ <doc xml:space="preserve">Allocate the resources for the ringbuffer. This function fills
+in the data pointer of the ring buffer with a valid #GstBuffer
+to which samples can be written.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be acquired, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to acquire</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the specs of the buffer</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="activate" invoker="activate">
+ <doc xml:space="preserve">Activate @buf to start or stop pulling data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be activated in the requested mode,
+FALSE on error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to activate</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">the new mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="clear_all" invoker="clear_all">
+ <doc xml:space="preserve">Fill the ringbuffer with silence.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to clear</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="close_device" invoker="close_device">
+ <doc xml:space="preserve">Close the audio device associated with the ring buffer. The ring buffer
+should already have been released via gst_audio_ring_buffer_release().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be closed, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="commit" invoker="commit">
+ <doc xml:space="preserve">Commit @in_samples samples pointed to by @data to the ringbuffer @buf.
+
+@in_samples and @out_samples define the rate conversion to perform on the
+samples in @data. For negative rates, @out_samples must be negative and
+@in_samples positive.
+
+When @out_samples is positive, the first sample will be written at position @sample
+in the ringbuffer. When @out_samples is negative, the last sample will be written to
+@sample in reverse order.
+
+@out_samples does not need to be a multiple of the segment size of the ringbuffer
+although it is recommended for optimal performance.
+
+@accum will hold a temporary accumulator used in rate conversion and should be
+set to 0 when this function is first called. In case the commit operation is
+interrupted, one can resume the processing by passing the previously returned
+@accum value back to this function.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples written to the ringbuffer or -1 on error. The
+number of samples written can be less than @out_samples when @buf was interrupted
+with a flush or stop.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to commit</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">the sample position of the data</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to commit</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="in_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples in the data to commit</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples to write to the ringbuffer</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="accum"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">accumulator for rate conversion.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="delay" invoker="delay">
+ <doc xml:space="preserve">Get the number of samples queued in the audio device. This is
+usually less than the segment size but can be bigger when the
+implementation uses another internal buffer between the audio
+device.
+
+For playback ringbuffers this is the amount of samples transfered from the
+ringbuffer to the device but still not played.
+
+For capture ringbuffers this is the amount of samples in the device that are
+not yet transfered to the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples queued in the audio device.
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to query</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open_device" invoker="open_device">
+ <doc xml:space="preserve">Open the audio device associated with the ring buffer. Does not perform any
+setup on the device. You must open the device before acquiring the ring
+buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be opened, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pause" invoker="pause">
+ <doc xml:space="preserve">Pause processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be paused, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to pause</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="release" invoker="release">
+ <doc xml:space="preserve">Free the resources of the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be released, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to release</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="resume">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start" invoker="start">
+ <doc xml:space="preserve">Start processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be started, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to start</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop" invoker="stop">
+ <doc xml:space="preserve">Stop processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be stopped, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to stop</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="acquire" c:identifier="gst_audio_ring_buffer_acquire">
+ <doc xml:space="preserve">Allocate the resources for the ringbuffer. This function fills
+in the data pointer of the ring buffer with a valid #GstBuffer
+to which samples can be written.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be acquired, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to acquire</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the specs of the buffer</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="activate" c:identifier="gst_audio_ring_buffer_activate">
+ <doc xml:space="preserve">Activate @buf to start or stop pulling data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be activated in the requested mode,
+FALSE on error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to activate</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">the new mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="advance" c:identifier="gst_audio_ring_buffer_advance">
+ <doc xml:space="preserve">Subclasses should call this function to notify the fact that
+@advance segments are now processed by the device.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to advance</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="advance" transfer-ownership="none">
+ <doc xml:space="preserve">the number of segments written</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="clear" c:identifier="gst_audio_ring_buffer_clear">
+ <doc xml:space="preserve">Clear the given segment of the buffer with silence samples.
+This function is used by subclasses.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to clear</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">the segment to clear</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="clear_all" c:identifier="gst_audio_ring_buffer_clear_all">
+ <doc xml:space="preserve">Fill the ringbuffer with silence.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to clear</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="close_device"
+ c:identifier="gst_audio_ring_buffer_close_device">
+ <doc xml:space="preserve">Close the audio device associated with the ring buffer. The ring buffer
+should already have been released via gst_audio_ring_buffer_release().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be closed, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="commit" c:identifier="gst_audio_ring_buffer_commit">
+ <doc xml:space="preserve">Commit @in_samples samples pointed to by @data to the ringbuffer @buf.
+
+@in_samples and @out_samples define the rate conversion to perform on the
+samples in @data. For negative rates, @out_samples must be negative and
+@in_samples positive.
+
+When @out_samples is positive, the first sample will be written at position @sample
+in the ringbuffer. When @out_samples is negative, the last sample will be written to
+@sample in reverse order.
+
+@out_samples does not need to be a multiple of the segment size of the ringbuffer
+although it is recommended for optimal performance.
+
+@accum will hold a temporary accumulator used in rate conversion and should be
+set to 0 when this function is first called. In case the commit operation is
+interrupted, one can resume the processing by passing the previously returned
+@accum value back to this function.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples written to the ringbuffer or -1 on error. The
+number of samples written can be less than @out_samples when @buf was interrupted
+with a flush or stop.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to commit</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">the sample position of the data</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to commit</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="in_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples in the data to commit</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples to write to the ringbuffer</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="accum"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">accumulator for rate conversion.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="convert" c:identifier="gst_audio_ring_buffer_convert">
+ <doc xml:space="preserve">Convert @src_val in @src_fmt to the equivalent value in @dest_fmt. The result
+will be put in @dest_val.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the conversion succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="src_fmt" transfer-ownership="none">
+ <doc xml:space="preserve">the source format</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_val" transfer-ownership="none">
+ <doc xml:space="preserve">the source value</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_fmt" transfer-ownership="none">
+ <doc xml:space="preserve">the destination format</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location to store the converted value</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="delay" c:identifier="gst_audio_ring_buffer_delay">
+ <doc xml:space="preserve">Get the number of samples queued in the audio device. This is
+usually less than the segment size but can be bigger when the
+implementation uses another internal buffer between the audio
+device.
+
+For playback ringbuffers this is the amount of samples transfered from the
+ringbuffer to the device but still not played.
+
+For capture ringbuffers this is the amount of samples in the device that are
+not yet transfered to the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples queued in the audio device.
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to query</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="device_is_open"
+ c:identifier="gst_audio_ring_buffer_device_is_open">
+ <doc xml:space="preserve">Checks the status of the device associated with the ring buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device was open, FALSE if it was closed.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_acquired"
+ c:identifier="gst_audio_ring_buffer_is_acquired">
+ <doc xml:space="preserve">Check if the ringbuffer is acquired and ready to use.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the ringbuffer is acquired, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to check</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_active" c:identifier="gst_audio_ring_buffer_is_active">
+ <doc xml:space="preserve">Check if @buf is activated.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device is active.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_flushing"
+ c:identifier="gst_audio_ring_buffer_is_flushing">
+ <doc xml:space="preserve">Check if @buf is flushing.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device is flushing.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="may_start" c:identifier="gst_audio_ring_buffer_may_start">
+ <doc xml:space="preserve">Tell the ringbuffer that it is allowed to start playback when
+the ringbuffer is filled with samples.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="allowed" transfer-ownership="none">
+ <doc xml:space="preserve">the new value</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="open_device"
+ c:identifier="gst_audio_ring_buffer_open_device">
+ <doc xml:space="preserve">Open the audio device associated with the ring buffer. Does not perform any
+setup on the device. You must open the device before acquiring the ring
+buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be opened, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pause" c:identifier="gst_audio_ring_buffer_pause">
+ <doc xml:space="preserve">Pause processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be paused, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to pause</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="prepare_read"
+ c:identifier="gst_audio_ring_buffer_prepare_read">
+ <doc xml:space="preserve">Returns a pointer to memory where the data from segment @segment
+can be found. This function is mostly used by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE if the buffer is not started.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to read from</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="segment"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the segment to read</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="readptr"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">
+ the pointer to the memory where samples can be read</doc>
+ <array length="2" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ <parameter name="len"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of bytes to read</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read" c:identifier="gst_audio_ring_buffer_read">
+ <doc xml:space="preserve">Read @len samples from the ringbuffer into the memory pointed
+to by @data.
+The first sample should be read from position @sample in
+the ringbuffer.
+
+@len should not be a multiple of the segment size of the ringbuffer
+although it is recommended.
+
+@timestamp will return the timestamp associated with the data returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples read from the ringbuffer or -1 on
+error.
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to read from</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">the sample position of the data</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">where the data should be read</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples in data to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">where the timestamp is returned</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="release" c:identifier="gst_audio_ring_buffer_release">
+ <doc xml:space="preserve">Free the resources of the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be released, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to release</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="samples_done"
+ c:identifier="gst_audio_ring_buffer_samples_done">
+ <doc xml:space="preserve">Get the number of samples that were processed by the ringbuffer
+since it was last started. This does not include the number of samples not
+yet processed (see gst_audio_ring_buffer_delay()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples processed by the ringbuffer.
+
+MT safe.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to query</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_callback"
+ c:identifier="gst_audio_ring_buffer_set_callback"
+ shadowed-by="set_callback_full"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the given callback function on the buffer. This function
+will be called every time a segment has been written to a device.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to set the callback on</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="cb"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">the callback to set</doc>
+ <type name="AudioRingBufferCallback"
+ c:type="GstAudioRingBufferCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_callback_full"
+ c:identifier="gst_audio_ring_buffer_set_callback_full"
+ shadows="set_callback"
+ version="1.12">
+ <doc xml:space="preserve">Sets the given callback function on the buffer. This function
+will be called every time a segment has been written to a device.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to set the callback on</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="cb"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">the callback to set</doc>
+ <type name="AudioRingBufferCallback"
+ c:type="GstAudioRingBufferCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">function to be called when @user_data is no longer needed</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_channel_positions"
+ c:identifier="gst_audio_ring_buffer_set_channel_positions">
+ <doc xml:space="preserve">Tell the ringbuffer about the device's channel positions. This must
+be called in when the ringbuffer is acquired.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">the device channel positions</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing"
+ c:identifier="gst_audio_ring_buffer_set_flushing">
+ <doc xml:space="preserve">Set the ringbuffer to flushing mode or normal mode.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to flush</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">the new mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_sample"
+ c:identifier="gst_audio_ring_buffer_set_sample">
+ <doc xml:space="preserve">Make sure that the next sample written to the device is
+accounted for as being the @sample sample written to the
+device. This value will be used in reporting the current
+sample position of the ringbuffer.
+
+This function will also clear the buffer with silence.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to use</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">the sample number to set</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timestamp"
+ c:identifier="gst_audio_ring_buffer_set_timestamp">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ <parameter name="readseg" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start" c:identifier="gst_audio_ring_buffer_start">
+ <doc xml:space="preserve">Start processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be started, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to start</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop" c:identifier="gst_audio_ring_buffer_stop">
+ <doc xml:space="preserve">Stop processing samples from the ringbuffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be stopped, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to stop</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Gst.Object" c:type="GstObject"/>
+ </field>
+ <field name="cond">
+ <doc xml:space="preserve">used to signal start/stop/pause/resume actions</doc>
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <field name="open">
+ <doc xml:space="preserve">boolean indicating that the ringbuffer is open</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="acquired">
+ <doc xml:space="preserve">boolean indicating that the ringbuffer is acquired</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="memory">
+ <doc xml:space="preserve">data in the ringbuffer</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ <field name="size">
+ <doc xml:space="preserve">size of data in the ringbuffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="timestamps">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </field>
+ <field name="spec">
+ <doc xml:space="preserve">format and layout of the ringbuffer data</doc>
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec"/>
+ </field>
+ <field name="samples_per_seg">
+ <doc xml:space="preserve">number of samples in one segment</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="empty_seg">
+ <doc xml:space="preserve">pointer to memory holding one segment of silence samples</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ <field name="state">
+ <doc xml:space="preserve">state of the buffer</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="segdone">
+ <doc xml:space="preserve">readpointer in the ringbuffer</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="segbase">
+ <doc xml:space="preserve">segment corresponding to segment 0 (unused)</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="waiting">
+ <doc xml:space="preserve">is a reader or writer waiting for a free segment</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="callback" readable="0" private="1">
+ <type name="AudioRingBufferCallback"
+ c:type="GstAudioRingBufferCallback"/>
+ </field>
+ <field name="cb_data" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="need_reorder" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="channel_reorder_map" readable="0" private="1">
+ <array zero-terminated="0" c:type="gint" fixed-size="64">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </field>
+ <field name="flushing" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="may_start" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="active" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="cb_data_notify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <callback name="AudioRingBufferCallback"
+ c:type="GstAudioRingBufferCallback">
+ <doc xml:space="preserve">This function is set with gst_audio_ring_buffer_set_callback() and is
+called to fill the memory at @data with @len bytes of samples.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="rbuf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">target to fill</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">amount to fill</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="AudioRingBufferClass"
+ c:type="GstAudioRingBufferClass"
+ glib:is-gtype-struct-for="AudioRingBuffer">
+ <doc xml:space="preserve">The vmethods that subclasses can override to implement the ringbuffer.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">parent class</doc>
+ <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="open_device">
+ <callback name="open_device">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be opened, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="acquire">
+ <callback name="acquire">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be acquired, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to acquire</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the specs of the buffer</doc>
+ <type name="AudioRingBufferSpec"
+ c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="release">
+ <callback name="release">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be released, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to release</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close_device">
+ <callback name="close_device">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be closed, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be started, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to start</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pause">
+ <callback name="pause">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be paused, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to pause</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="resume">
+ <callback name="resume">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be stopped, FALSE on error.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to stop</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="delay">
+ <callback name="delay">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples queued in the audio device.
+
+MT safe.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to query</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="activate">
+ <callback name="activate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the device could be activated in the requested mode,
+FALSE on error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to activate</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">the new mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="commit">
+ <callback name="commit">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples written to the ringbuffer or -1 on error. The
+number of samples written can be less than @out_samples when @buf was interrupted
+with a flush or stop.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to commit</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">the sample position of the data</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to commit</doc>
+ <array length="3" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="in_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples in the data to commit</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_samples" transfer-ownership="none">
+ <doc xml:space="preserve">the number of samples to write to the ringbuffer</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="accum"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">accumulator for rate conversion.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="clear_all">
+ <callback name="clear_all">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioRingBuffer to clear</doc>
+ <type name="AudioRingBuffer" c:type="GstAudioRingBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="AudioRingBufferFormatType"
+ glib:type-name="GstAudioRingBufferFormatType"
+ glib:get-type="gst_audio_ring_buffer_format_type_get_type"
+ c:type="GstAudioRingBufferFormatType">
+ <doc xml:space="preserve">The format of the samples in the ringbuffer.</doc>
+ <member name="raw"
+ value="0"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW"
+ glib:nick="raw">
+ <doc xml:space="preserve">samples in linear or float</doc>
+ </member>
+ <member name="mu_law"
+ value="1"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW"
+ glib:nick="mu-law">
+ <doc xml:space="preserve">samples in mulaw</doc>
+ </member>
+ <member name="a_law"
+ value="2"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW"
+ glib:nick="a-law">
+ <doc xml:space="preserve">samples in alaw</doc>
+ </member>
+ <member name="ima_adpcm"
+ value="3"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM"
+ glib:nick="ima-adpcm">
+ <doc xml:space="preserve">samples in ima adpcm</doc>
+ </member>
+ <member name="mpeg"
+ value="4"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG"
+ glib:nick="mpeg">
+ <doc xml:space="preserve">samples in mpeg audio (but not AAC) format</doc>
+ </member>
+ <member name="gsm"
+ value="5"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM"
+ glib:nick="gsm">
+ <doc xml:space="preserve">samples in gsm format</doc>
+ </member>
+ <member name="iec958"
+ value="6"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958"
+ glib:nick="iec958">
+ <doc xml:space="preserve">samples in IEC958 frames (e.g. AC3)</doc>
+ </member>
+ <member name="ac3"
+ value="7"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3"
+ glib:nick="ac3">
+ <doc xml:space="preserve">samples in AC3 format</doc>
+ </member>
+ <member name="eac3"
+ value="8"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3"
+ glib:nick="eac3">
+ <doc xml:space="preserve">samples in EAC3 format</doc>
+ </member>
+ <member name="dts"
+ value="9"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS"
+ glib:nick="dts">
+ <doc xml:space="preserve">samples in DTS format</doc>
+ </member>
+ <member name="mpeg2_aac"
+ value="10"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC"
+ glib:nick="mpeg2-aac">
+ <doc xml:space="preserve">samples in MPEG-2 AAC ADTS format</doc>
+ </member>
+ <member name="mpeg4_aac"
+ value="11"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC"
+ glib:nick="mpeg4-aac">
+ <doc xml:space="preserve">samples in MPEG-4 AAC ADTS format</doc>
+ </member>
+ <member name="mpeg2_aac_raw"
+ value="12"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW"
+ glib:nick="mpeg2-aac-raw">
+ <doc xml:space="preserve">samples in MPEG-2 AAC raw format (Since 1.12)</doc>
+ </member>
+ <member name="mpeg4_aac_raw"
+ value="13"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW"
+ glib:nick="mpeg4-aac-raw">
+ <doc xml:space="preserve">samples in MPEG-4 AAC raw format (Since 1.12)</doc>
+ </member>
+ <member name="flac"
+ value="14"
+ c:identifier="GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC"
+ glib:nick="flac">
+ <doc xml:space="preserve">samples in FLAC format (Since 1.12)</doc>
+ </member>
+ </enumeration>
+ <record name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec">
+ <doc xml:space="preserve">The structure containing the format specification of the ringbuffer.</doc>
+ <field name="caps" writable="1">
+ <doc xml:space="preserve">The caps that generated the Spec.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the sample type</doc>
+ <type name="AudioRingBufferFormatType"
+ c:type="GstAudioRingBufferFormatType"/>
+ </field>
+ <field name="info" writable="1">
+ <doc xml:space="preserve">the #GstAudioInfo</doc>
+ <type name="AudioInfo" c:type="GstAudioInfo"/>
+ </field>
+ <field name="latency_time" writable="1">
+ <doc xml:space="preserve">the latency in microseconds</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="buffer_time" writable="1">
+ <doc xml:space="preserve">the total buffer size in microseconds</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="segsize" writable="1">
+ <doc xml:space="preserve">the size of one segment in bytes</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="segtotal" writable="1">
+ <doc xml:space="preserve">the total number of segments</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="seglatency" writable="1">
+ <doc xml:space="preserve">number of segments queued in the lower level device,
+ defaults to segtotal</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="AudioRingBufferState"
+ glib:type-name="GstAudioRingBufferState"
+ glib:get-type="gst_audio_ring_buffer_state_get_type"
+ c:type="GstAudioRingBufferState">
+ <doc xml:space="preserve">The state of the ringbuffer.</doc>
+ <member name="stopped"
+ value="0"
+ c:identifier="GST_AUDIO_RING_BUFFER_STATE_STOPPED"
+ glib:nick="stopped">
+ <doc xml:space="preserve">The ringbuffer is stopped</doc>
+ </member>
+ <member name="paused"
+ value="1"
+ c:identifier="GST_AUDIO_RING_BUFFER_STATE_PAUSED"
+ glib:nick="paused">
+ <doc xml:space="preserve">The ringbuffer is paused</doc>
+ </member>
+ <member name="started"
+ value="2"
+ c:identifier="GST_AUDIO_RING_BUFFER_STATE_STARTED"
+ glib:nick="started">
+ <doc xml:space="preserve">The ringbuffer is started</doc>
+ </member>
+ <member name="error"
+ value="3"
+ c:identifier="GST_AUDIO_RING_BUFFER_STATE_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">The ringbuffer has encountered an
+ error after it has been started, e.g. because the device was
+ disconnected (Since 1.2)</doc>
+ </member>
+ </enumeration>
+ <class name="AudioSink"
+ c:symbol-prefix="audio_sink"
+ c:type="GstAudioSink"
+ parent="AudioBaseSink"
+ glib:type-name="GstAudioSink"
+ glib:get-type="gst_audio_sink_get_type"
+ glib:type-struct="AudioSinkClass">
+ <doc xml:space="preserve">This is the most simple base class for audio sinks that only requires
+subclasses to implement a set of simple functions:
+
+* `open()` :Open the device.
+
+* `prepare()` :Configure the device with the specified format.
+
+* `write()` :Write samples to the device.
+
+* `reset()` :Unblock writes and flush the device.
+
+* `delay()` :Get the number of samples written but not yet played
+by the device.
+
+* `unprepare()` :Undo operations done by prepare.
+
+* `close()` :Close the device.
+
+All scheduling of samples and timestamps is done in this base class
+together with #GstAudioBaseSink using a default implementation of a
+#GstAudioRingBuffer that uses threads.</doc>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="delay">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unprepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="write">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </instance-parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="element">
+ <type name="AudioBaseSink" c:type="GstAudioBaseSink"/>
+ </field>
+ <field name="thread" readable="0" private="1">
+ <type name="GLib.Thread" c:type="GThread*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioSinkClass"
+ c:type="GstAudioSinkClass"
+ glib:is-gtype-struct-for="AudioSink">
+ <doc xml:space="preserve">#GstAudioSink class. Override the vmethods to implement functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure.</doc>
+ <type name="AudioBaseSinkClass" c:type="GstAudioBaseSinkClass"/>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare">
+ <callback name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <type name="AudioRingBufferSpec"
+ c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unprepare">
+ <callback name="unprepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="write">
+ <callback name="write">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="delay">
+ <callback name="delay">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reset">
+ <callback name="reset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="AudioSink" c:type="GstAudioSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="AudioSrc"
+ c:symbol-prefix="audio_src"
+ c:type="GstAudioSrc"
+ parent="AudioBaseSrc"
+ glib:type-name="GstAudioSrc"
+ glib:get-type="gst_audio_src_get_type"
+ glib:type-struct="AudioSrcClass">
+ <doc xml:space="preserve">This is the most simple base class for audio sources that only requires
+subclasses to implement a set of simple functions:
+
+* `open()` :Open the device.
+* `prepare()` :Configure the device with the specified format.
+* `read()` :Read samples from the device.
+* `reset()` :Unblock reads and flush the device.
+* `delay()` :Get the number of samples in the device but not yet read.
+* `unprepare()` :Undo operations done by prepare.
+* `close()` :Close the device.
+
+All scheduling of samples and timestamps is done in this base class
+together with #GstAudioBaseSrc using a default implementation of a
+#GstAudioRingBuffer that uses threads.</doc>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="delay">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <type name="AudioRingBufferSpec" c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="read">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unprepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <field name="element">
+ <type name="AudioBaseSrc" c:type="GstAudioBaseSrc"/>
+ </field>
+ <field name="thread" readable="0" private="1">
+ <type name="GLib.Thread" c:type="GThread*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AudioSrcClass"
+ c:type="GstAudioSrcClass"
+ glib:is-gtype-struct-for="AudioSrc">
+ <doc xml:space="preserve">#GstAudioSrc class. Override the vmethod to implement
+functionality.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class.</doc>
+ <type name="AudioBaseSrcClass" c:type="GstAudioBaseSrcClass"/>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare">
+ <callback name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <type name="AudioRingBufferSpec"
+ c:type="GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unprepare">
+ <callback name="unprepare">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="read">
+ <callback name="read">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="delay">
+ <callback name="delay">
+ <return-value transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reset">
+ <callback name="reset">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="AudioSrc" c:type="GstAudioSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AudioStreamAlign"
+ c:type="GstAudioStreamAlign"
+ version="1.14"
+ glib:type-name="GstAudioStreamAlign"
+ glib:get-type="gst_audio_stream_align_get_type"
+ c:symbol-prefix="audio_stream_align">
+ <doc xml:space="preserve">#GstAudioStreamAlign provides a helper object that helps tracking audio
+stream alignment and discontinuities, and detects discontinuities if
+possible.
+
+See gst_audio_stream_align_new() for a description of its parameters and
+gst_audio_stream_align_process() for the details of the processing.</doc>
+ <constructor name="new"
+ c:identifier="gst_audio_stream_align_new"
+ version="1.14">
+ <doc xml:space="preserve">Allocate a new #GstAudioStreamAlign with the given configuration. All
+processing happens according to sample rate @rate, until
+gst_audio_discont_wait_set_rate() is called with a new @rate.
+A negative rate can be used for reverse playback.
+
+@alignment_threshold gives the tolerance in nanoseconds after which a
+timestamp difference is considered a discontinuity. Once detected,
+@discont_wait nanoseconds have to pass without going below the threshold
+again until the output buffer is marked as a discontinuity. These can later
+be re-configured with gst_audio_stream_align_set_alignment_threshold() and
+gst_audio_stream_align_set_discont_wait().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAudioStreamAlign. free with gst_audio_stream_align_free().</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </return-value>
+ <parameters>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">a sample rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="alignment_threshold" transfer-ownership="none">
+ <doc xml:space="preserve">a alignment threshold in nanoseconds</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="discont_wait" transfer-ownership="none">
+ <doc xml:space="preserve">discont wait in nanoseconds</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy"
+ c:identifier="gst_audio_stream_align_copy"
+ version="1.14">
+ <doc xml:space="preserve">Copy a GstAudioStreamAlign structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAudioStreamAlign. free with gst_audio_stream_align_free.</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="const GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free"
+ c:identifier="gst_audio_stream_align_free"
+ version="1.14">
+ <doc xml:space="preserve">Free a GstAudioStreamAlign structure previously allocated with gst_audio_stream_align_new()
+or gst_audio_stream_align_copy().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_alignment_threshold"
+ c:identifier="gst_audio_stream_align_get_alignment_threshold">
+ <return-value transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_discont_wait"
+ c:identifier="gst_audio_stream_align_get_discont_wait">
+ <return-value transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_rate" c:identifier="gst_audio_stream_align_get_rate">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_samples_since_discont"
+ c:identifier="gst_audio_stream_align_get_samples_since_discont"
+ version="1.14">
+ <doc xml:space="preserve">Returns the number of samples that were processed since the last
+discontinuity was detected.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of samples processed since the last discontinuity.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timestamp_at_discont"
+ c:identifier="gst_audio_stream_align_get_timestamp_at_discont"
+ version="1.14">
+ <doc xml:space="preserve">Timestamp that was passed when a discontinuity was detected, i.e. the first
+timestamp after the discontinuity.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The last timestamp at when a discontinuity was detected</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="mark_discont"
+ c:identifier="gst_audio_stream_align_mark_discont"
+ version="1.14">
+ <doc xml:space="preserve">Marks the next buffer as discontinuous and resets timestamp tracking.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="process"
+ c:identifier="gst_audio_stream_align_process"
+ version="1.14">
+ <doc xml:space="preserve">Processes data with @timestamp and @n_samples, and returns the output
+timestamp, duration and sample position together with a boolean to signal
+whether a discontinuity was detected or not. All non-discontinuous data
+will have perfect timestamps and durations.
+
+A discontinuity is detected once the difference between the actual
+timestamp and the timestamp calculated from the sample count since the last
+discontinuity differs by more than the alignment threshold for a duration
+longer than discont wait.
+
+Note: In reverse playback, every buffer is considered discontinuous in the
+context of buffer flags because the last sample of the previous buffer is
+discontinuous with the first sample of the current one. However for this
+function they are only considered discontinuous in reverse playback if the
+first sample of the previous buffer is discontinuous with the last sample
+of the current one.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a discontinuity was detected, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioStreamAlign</doc>
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ <parameter name="discont" transfer-ownership="none">
+ <doc xml:space="preserve">if this data is considered to be discontinuous</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime of the start of the data</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="n_samples" transfer-ownership="none">
+ <doc xml:space="preserve">number of samples to process</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="out_timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output timestamp of the data</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="out_duration"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output duration of the data</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="out_sample_position"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output sample position of the start of the data</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_alignment_threshold"
+ c:identifier="gst_audio_stream_align_set_alignment_threshold">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ <parameter name="alignment_threshold" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_discont_wait"
+ c:identifier="gst_audio_stream_align_set_discont_wait">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ <parameter name="discont_wait" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_rate" c:identifier="gst_audio_stream_align_set_rate">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <type name="AudioStreamAlign" c:type="GstAudioStreamAlign*"/>
+ </instance-parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <constant name="META_TAG_AUDIO_CHANNELS_STR"
+ value="channels"
+ c:type="GST_META_TAG_AUDIO_CHANNELS_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata stays relevant as long as channels are unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_TAG_AUDIO_RATE_STR"
+ value="rate"
+ c:type="GST_META_TAG_AUDIO_RATE_STR"
+ version="1.8">
+ <doc xml:space="preserve">This metadata stays relevant as long as sample rate is unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_TAG_AUDIO_STR"
+ value="audio"
+ c:type="GST_META_TAG_AUDIO_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata is relevant for audio streams.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <interface name="StreamVolume"
+ c:symbol-prefix="stream_volume"
+ c:type="GstStreamVolume"
+ glib:type-name="GstStreamVolume"
+ glib:get-type="gst_stream_volume_get_type"
+ glib:type-struct="StreamVolumeInterface">
+ <doc xml:space="preserve">This interface is implemented by elements that provide a stream volume. Examples for
+such elements are #volume and #playbin.
+
+Applications can use this interface to get or set the current stream volume. For this
+the "volume" #GObject property can be used or the helper functions gst_stream_volume_set_volume()
+and gst_stream_volume_get_volume(). This volume is always a linear factor, i.e. 0.0 is muted
+1.0 is 100%. For showing the volume in a GUI it might make sense to convert it to
+a different format by using gst_stream_volume_convert_volume(). Volume sliders should usually
+use a cubic volume.
+
+Separate from the volume the stream can also be muted by the "mute" #GObject property or
+gst_stream_volume_set_mute() and gst_stream_volume_get_mute().
+
+Elements that provide some kind of stream volume should implement the "volume" and
+"mute" #GObject properties and handle setting and getting of them properly.
+The volume property is defined to be a linear volume factor.</doc>
+ <function name="convert_volume"
+ c:identifier="gst_stream_volume_convert_volume">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the converted volume</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat to convert from</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ <parameter name="to" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat to convert to</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Volume in @from format that should be converted</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="get_mute" c:identifier="gst_stream_volume_get_mute">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Returns %TRUE if the stream is muted</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolume that should be used</doc>
+ <type name="StreamVolume" c:type="GstStreamVolume*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_volume" c:identifier="gst_stream_volume_get_volume">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current stream volume as linear factor</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolume that should be used</doc>
+ <type name="StreamVolume" c:type="GstStreamVolume*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat which should be returned</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_mute" c:identifier="gst_stream_volume_set_mute">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolume that should be used</doc>
+ <type name="StreamVolume" c:type="GstStreamVolume*"/>
+ </instance-parameter>
+ <parameter name="mute" transfer-ownership="none">
+ <doc xml:space="preserve">Mute state that should be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_volume" c:identifier="gst_stream_volume_set_volume">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="volume" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolume that should be used</doc>
+ <type name="StreamVolume" c:type="GstStreamVolume*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat of @val</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Linear volume factor that should be set</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="mute" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="volume" writable="1" transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ </interface>
+ <enumeration name="StreamVolumeFormat" c:type="GstStreamVolumeFormat">
+ <doc xml:space="preserve">Different representations of a stream volume. gst_stream_volume_convert_volume()
+allows to convert between the different representations.
+
+Formulas to convert from a linear to a cubic or dB volume are
+cbrt(val) and 20 * log10 (val).</doc>
+ <member name="linear"
+ value="0"
+ c:identifier="GST_STREAM_VOLUME_FORMAT_LINEAR">
+ <doc xml:space="preserve">Linear scale factor, 1.0 = 100%</doc>
+ </member>
+ <member name="cubic"
+ value="1"
+ c:identifier="GST_STREAM_VOLUME_FORMAT_CUBIC">
+ <doc xml:space="preserve">Cubic volume scale</doc>
+ </member>
+ <member name="db" value="2" c:identifier="GST_STREAM_VOLUME_FORMAT_DB">
+ <doc xml:space="preserve">Logarithmic volume scale (dB, amplitude not power)</doc>
+ </member>
+ </enumeration>
+ <record name="StreamVolumeInterface"
+ c:type="GstStreamVolumeInterface"
+ glib:is-gtype-struct-for="StreamVolume">
+ <field name="iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
+ <function name="audio_buffer_clip" c:identifier="gst_audio_buffer_clip">
+ <doc xml:space="preserve">Clip the buffer to the given %GstSegment.
+
+After calling this function the caller does not own a reference to
+@buffer anymore.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">%NULL if the buffer is completely outside the configured segment,
+otherwise the clipped buffer is returned.
+
+If the buffer has no timestamp, it is assumed to be inside the segment and
+is not clipped</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">The buffer to clip.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <doc xml:space="preserve">Segment in %GST_FORMAT_TIME or %GST_FORMAT_DEFAULT to which
+ the buffer should be clipped.</doc>
+ <type name="Gst.Segment" c:type="const GstSegment*"/>
+ </parameter>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">sample rate.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="bpf" transfer-ownership="none">
+ <doc xml:space="preserve">size of one audio frame in bytes. This is the size of one sample *
+number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_buffer_reorder_channels"
+ c:identifier="gst_audio_buffer_reorder_channels">
+ <doc xml:space="preserve">Reorders @buffer from the channel positions @from to the channel
+positions @to. @from and @to must contain the same number of
+positions and the same positions, only in a different order.
+@buffer must be writable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the reordering was possible.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">The buffer to reorder.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The %GstAudioFormat of the buffer.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions in the buffer.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="to" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions to convert to.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_get_fallback_mask"
+ c:identifier="gst_audio_channel_get_fallback_mask"
+ version="1.8">
+ <doc xml:space="preserve">Get the fallback channel-mask for the given number of channels.
+
+This function returns a reasonable fallback channel-mask and should be
+called as a last resort when the specific channel map is unknown.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a fallback channel-mask for @channels or 0 when there is no
+mask and mono.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_mixer_new"
+ c:identifier="gst_audio_channel_mixer_new"
+ moved-to="AudioChannelMixer.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new channel mixer object for the given parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioChannelMixer object, or %NULL if @format isn't supported.
+ Free with gst_audio_channel_mixer_free() after usage.</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioChannelMixerFlags</doc>
+ <type name="AudioChannelMixerFlags"
+ c:type="GstAudioChannelMixerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="in_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of input channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="in_position" transfer-ownership="none">
+ <doc xml:space="preserve">positions of input channels</doc>
+ <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+ </parameter>
+ <parameter name="out_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of output channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_position" transfer-ownership="none">
+ <doc xml:space="preserve">positions of output channels</doc>
+ <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_mixer_new_with_matrix"
+ c:identifier="gst_audio_channel_mixer_new_with_matrix"
+ moved-to="AudioChannelMixer.new_with_matrix"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new channel mixer object for the given parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioChannelMixer object, or %NULL if @format isn't supported,
+ @matrix is invalid, or @matrix is %NULL and @in_channels != @out_channels.
+ Free with gst_audio_channel_mixer_free() after usage.</doc>
+ <type name="AudioChannelMixer" c:type="GstAudioChannelMixer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioChannelMixerFlags</doc>
+ <type name="AudioChannelMixerFlags"
+ c:type="GstAudioChannelMixerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="in_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of input channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_channels" transfer-ownership="none">
+ <doc xml:space="preserve">number of output channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="matrix"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">channel conversion matrix, m[@in_channels][@out_channels].
+ If identity matrix, passthrough applies. If %NULL, a (potentially truncated)
+ identity matrix is generated.</doc>
+ <type name="gfloat" c:type="gfloat**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_positions_from_mask"
+ c:identifier="gst_audio_channel_positions_from_mask">
+ <doc xml:space="preserve">Convert the @channels present in @channel_mask to a @position array
+(which should have at least @channels entries ensured by caller).
+If @channel_mask is set to 0, it is considered as 'not present' for purpose
+of conversion.
+A partially valid @channel_mask with less bits set than the number
+of channels is considered valid.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if channel and channel mask are valid and could be converted</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="channel_mask" transfer-ownership="none">
+ <doc xml:space="preserve">The input channel_mask</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The
+ %GstAudioChannelPosition&lt;!-- --&gt;s</doc>
+ <array length="0"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_positions_to_mask"
+ c:identifier="gst_audio_channel_positions_to_mask">
+ <doc xml:space="preserve">Convert the @position array of @channels channels to a bitmask.
+
+If @force_order is %TRUE it additionally checks if the channels are
+in the order required by GStreamer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the channel positions are valid and could be converted.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The %GstAudioChannelPositions</doc>
+ <array length="1"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="force_order" transfer-ownership="none">
+ <doc xml:space="preserve">Only consider the GStreamer channel order.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="channel_mask"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the output channel mask</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_positions_to_string"
+ c:identifier="gst_audio_channel_positions_to_string">
+ <doc xml:space="preserve">Converts @position to a human-readable string representation for
+debugging purposes.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string representing
+@position
+
+Since 1.10</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The %GstAudioChannelPositions
+ to convert.</doc>
+ <array length="1"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_channel_positions_to_valid_order"
+ c:identifier="gst_audio_channel_positions_to_valid_order">
+ <doc xml:space="preserve">Reorders the channel positions in @position from any order to
+the GStreamer channel order.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the channel positions are valid and reordering
+was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions to
+ reorder to.</doc>
+ <array length="1"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_check_valid_channel_positions"
+ c:identifier="gst_audio_check_valid_channel_positions">
+ <doc xml:space="preserve">Checks if @position contains valid channel positions for
+@channels channels. If @force_order is %TRUE it additionally
+checks if the channels are in the order required by GStreamer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the channel positions are valid.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="position" transfer-ownership="none">
+ <doc xml:space="preserve">The %GstAudioChannelPositions
+ to check.</doc>
+ <array length="1"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="force_order" transfer-ownership="none">
+ <doc xml:space="preserve">Only consider the GStreamer channel order.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_clipping_meta_api_get_type"
+ c:identifier="gst_audio_clipping_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="audio_clipping_meta_get_info"
+ c:identifier="gst_audio_clipping_meta_get_info"
+ moved-to="AudioClippingMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="audio_downmix_meta_api_get_type"
+ c:identifier="gst_audio_downmix_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="audio_downmix_meta_get_info"
+ c:identifier="gst_audio_downmix_meta_get_info"
+ moved-to="AudioDownmixMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="audio_format_build_integer"
+ c:identifier="gst_audio_format_build_integer"
+ moved-to="AudioFormat.build_integer">
+ <doc xml:space="preserve">Construct a #GstAudioFormat with given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormat or GST_AUDIO_FORMAT_UNKNOWN when no audio format
+exists with the given parameters.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="sign" transfer-ownership="none">
+ <doc xml:space="preserve">signed or unsigned format</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="endianness" transfer-ownership="none">
+ <doc xml:space="preserve">G_LITTLE_ENDIAN or G_BIG_ENDIAN</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">amount of bits used per sample</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="depth" transfer-ownership="none">
+ <doc xml:space="preserve">amount of used bits in @width</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_format_fill_silence"
+ c:identifier="gst_audio_format_fill_silence"
+ moved-to="AudioFormat.fill_silence">
+ <doc xml:space="preserve">Fill @length bytes in @dest with silence samples for @info.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormatInfo</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a destination
+ to fill</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the length to fill</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_format_from_string"
+ c:identifier="gst_audio_format_from_string"
+ moved-to="AudioFormat.from_string">
+ <doc xml:space="preserve">Convert the @format string to its #GstAudioFormat.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioFormat for @format or GST_AUDIO_FORMAT_UNKNOWN when the
+string is not a known format.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_format_get_info"
+ c:identifier="gst_audio_format_get_info"
+ moved-to="AudioFormat.get_info">
+ <doc xml:space="preserve">Get the #GstAudioFormatInfo for @format</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAudioFormatInfo for @format.</doc>
+ <type name="AudioFormatInfo" c:type="const GstAudioFormatInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioFormat</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_format_info_get_type"
+ c:identifier="gst_audio_format_info_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="audio_format_to_string"
+ c:identifier="gst_audio_format_to_string"
+ moved-to="AudioFormat.to_string">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_get_channel_reorder_map"
+ c:identifier="gst_audio_get_channel_reorder_map">
+ <doc xml:space="preserve">Returns a reorder map for @from to @to that can be used in
+custom channel reordering code, e.g. to convert from or to the
+GStreamer channel order. @from and @to must contain the same
+number of positions and the same positions, only in a
+different order.
+
+The resulting @reorder_map can be used for reordering by assigning
+channel i of the input to channel reorder_map[i] of the output.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the channel positions are valid and reordering
+is possible.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions to reorder from.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="to" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions to reorder to.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="reorder_map" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the reorder map.</doc>
+ <array zero-terminated="0" c:type="gint*">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_iec61937_frame_size"
+ c:identifier="gst_audio_iec61937_frame_size">
+ <doc xml:space="preserve">Calculated the size of the buffer expected by gst_audio_iec61937_payload() for
+payloading type from @spec.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the size or 0 if the given @type is not supported or cannot be
+payloaded.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the ringbufer spec</doc>
+ <type name="AudioRingBufferSpec"
+ c:type="const GstAudioRingBufferSpec*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_iec61937_payload"
+ c:identifier="gst_audio_iec61937_payload">
+ <doc xml:space="preserve">Payloads @src in the form specified by IEC 61937 for the type from @spec and
+stores the result in @dst. @src must contain exactly one frame of data and
+the frame is not checked for errors.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">transfer-full: %TRUE if the payloading was successful, %FALSE
+otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer containing the data to payload</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="src_n" transfer-ownership="none">
+ <doc xml:space="preserve">size of @src in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="dst" transfer-ownership="none">
+ <doc xml:space="preserve">the destination buffer to store the
+ payloaded contents in. Should not overlap with @src</doc>
+ <array length="3" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="dst_n" transfer-ownership="none">
+ <doc xml:space="preserve">size of @dst in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="spec" transfer-ownership="none">
+ <doc xml:space="preserve">the ringbufer spec for @src</doc>
+ <type name="AudioRingBufferSpec"
+ c:type="const GstAudioRingBufferSpec*"/>
+ </parameter>
+ <parameter name="endianness" transfer-ownership="none">
+ <doc xml:space="preserve">the expected byte order of the payloaded data</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_quantize_new"
+ c:identifier="gst_audio_quantize_new"
+ moved-to="AudioQuantize.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new quantizer object with the given parameters.
+
+Output samples will be quantized to a multiple of @quantizer. Better
+performance is achieved when @quantizer is a power of 2.
+
+Dithering and noise-shaping can be performed during quantization with
+the @dither and @ns parameters.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstAudioQuantize. Free with gst_audio_quantize_free().</doc>
+ <type name="AudioQuantize" c:type="GstAudioQuantize*"/>
+ </return-value>
+ <parameters>
+ <parameter name="dither" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioDitherMethod</doc>
+ <type name="AudioDitherMethod" c:type="GstAudioDitherMethod"/>
+ </parameter>
+ <parameter name="ns" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioNoiseShapingMethod</doc>
+ <type name="AudioNoiseShapingMethod"
+ c:type="GstAudioNoiseShapingMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioQuantizeFlags</doc>
+ <type name="AudioQuantizeFlags" c:type="GstAudioQuantizeFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioFormat of the samples</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of channels in the samples</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="quantizer" transfer-ownership="none">
+ <doc xml:space="preserve">the quantizer to use</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_reorder_channels"
+ c:identifier="gst_audio_reorder_channels">
+ <doc xml:space="preserve">Reorders @data from the channel positions @from to the channel
+positions @to. @from and @to must contain the same number of
+positions and the same positions, only in a different order.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the reordering was possible.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">The pointer to
+ the memory.</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The size of the memory.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The %GstAudioFormat of the buffer.</doc>
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions in the buffer.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="to" transfer-ownership="none">
+ <doc xml:space="preserve">The channel positions to convert to.</doc>
+ <array zero-terminated="0" c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_resampler_new"
+ c:identifier="gst_audio_resampler_new"
+ moved-to="AudioResampler.new">
+ <doc xml:space="preserve">Make a new resampler.</doc>
+ <return-value transfer-ownership="full" skip="1">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="AudioResampler" c:type="GstAudioResampler*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResamplerMethod</doc>
+ <type name="AudioResamplerMethod" c:type="GstAudioResamplerMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstAudioResamplerFlags</doc>
+ <type name="AudioResamplerFlags" c:type="GstAudioResamplerFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <type name="AudioFormat" c:type="GstAudioFormat"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">extra options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="audio_resampler_options_set_quality"
+ c:identifier="gst_audio_resampler_options_set_quality"
+ moved-to="AudioResampler.options_set_quality">
+ <doc xml:space="preserve">Set the parameters for resampling from @in_rate to @out_rate using @method
+for @quality in @options.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAudioResamplerMethod</doc>
+ <type name="AudioResamplerMethod" c:type="GstAudioResamplerMethod"/>
+ </parameter>
+ <parameter name="quality" transfer-ownership="none">
+ <doc xml:space="preserve">the quality</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="in_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the input rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="out_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the output rate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_audio_clipping_meta"
+ c:identifier="gst_buffer_add_audio_clipping_meta"
+ version="1.8">
+ <doc xml:space="preserve">Attaches #GstAudioClippingMeta metadata to @buffer with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioClippingMeta on @buffer.</doc>
+ <type name="AudioClippingMeta" c:type="GstAudioClippingMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">GstFormat of @start and @stop, GST_FORMAT_DEFAULT is samples</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">Amount of audio to clip from start of buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <doc xml:space="preserve">Amount of to clip from end of buffer</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_audio_downmix_meta"
+ c:identifier="gst_buffer_add_audio_downmix_meta">
+ <doc xml:space="preserve">Attaches #GstAudioDownmixMeta metadata to @buffer with the given parameters.
+
+@matrix is an two-dimensional array of @to_channels times @from_channels
+coefficients, i.e. the i-th output channels is constructed by multiplicating
+the input channels with the coefficients in @matrix[i] and taking the sum
+of the results.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioDownmixMeta on @buffer.</doc>
+ <type name="AudioDownmixMeta" c:type="GstAudioDownmixMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="from_position" transfer-ownership="none">
+ <doc xml:space="preserve">the channel positions
+ of the source</doc>
+ <array length="2"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="from_channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels of the source</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="to_position" transfer-ownership="none">
+ <doc xml:space="preserve">the channel positions of
+ the destination</doc>
+ <array length="4"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="to_channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels of the destination</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="matrix" transfer-ownership="none">
+ <doc xml:space="preserve">The matrix coefficients.</doc>
+ <type name="gfloat" c:type="const gfloat**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_get_audio_downmix_meta_for_channels"
+ c:identifier="gst_buffer_get_audio_downmix_meta_for_channels">
+ <doc xml:space="preserve">Find the #GstAudioDownmixMeta on @buffer for the given destination
+channel positions.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstAudioDownmixMeta on @buffer.</doc>
+ <type name="AudioDownmixMeta" c:type="GstAudioDownmixMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="to_position" transfer-ownership="none">
+ <doc xml:space="preserve">the channel positions of
+ the destination</doc>
+ <array length="2"
+ zero-terminated="0"
+ c:type="GstAudioChannelPosition*">
+ <type name="AudioChannelPosition"
+ c:type="GstAudioChannelPosition"/>
+ </array>
+ </parameter>
+ <parameter name="to_channels" transfer-ownership="none">
+ <doc xml:space="preserve">The number of channels of the destination</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="stream_volume_convert_volume"
+ c:identifier="gst_stream_volume_convert_volume"
+ moved-to="StreamVolume.convert_volume">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the converted volume</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="from" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat to convert from</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ <parameter name="to" transfer-ownership="none">
+ <doc xml:space="preserve">#GstStreamVolumeFormat to convert to</doc>
+ <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Volume in @from format that should be converted</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstBase-1.0.gir b/girs/GstBase-1.0.gir
new file mode 100644
index 0000000000..08ee2c704c
--- /dev/null
+++ b/girs/GstBase-1.0.gir
@@ -0,0 +1,12253 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GLib" version="2.0"/>
+ <include name="GModule" version="2.0"/>
+ <include name="GObject" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <package name="gstreamer-base-1.0"/>
+ <c:include name="gst/base/base.h"/>
+ <namespace name="GstBase"
+ version="1.0"
+ shared-library="libgstbase-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <class name="Adapter"
+ c:symbol-prefix="adapter"
+ c:type="GstAdapter"
+ parent="GObject.Object"
+ glib:type-name="GstAdapter"
+ glib:get-type="gst_adapter_get_type"
+ glib:type-struct="AdapterClass">
+ <doc xml:space="preserve">This class is for elements that receive buffers in an undesired size.
+While for example raw video contains one image per buffer, the same is not
+true for a lot of other formats, especially those that come directly from
+a file. So if you have undefined buffer sizes and require a specific size,
+this object is for you.
+
+An adapter is created with gst_adapter_new(). It can be freed again with
+g_object_unref().
+
+The theory of operation is like this: All buffers received are put
+into the adapter using gst_adapter_push() and the data is then read back
+in chunks of the desired size using gst_adapter_map()/gst_adapter_unmap()
+and/or gst_adapter_copy(). After the data has been processed, it is freed
+using gst_adapter_unmap().
+
+Other methods such as gst_adapter_take() and gst_adapter_take_buffer()
+combine gst_adapter_map() and gst_adapter_unmap() in one method and are
+potentially more convenient for some use cases.
+
+For example, a sink pad's chain function that needs to pass data to a library
+in 512-byte chunks could be implemented like this:
+|[&lt;!-- language="C" --&gt;
+static GstFlowReturn
+sink_pad_chain (GstPad *pad, GstObject *parent, GstBuffer *buffer)
+{
+ MyElement *this;
+ GstAdapter *adapter;
+ GstFlowReturn ret = GST_FLOW_OK;
+
+ this = MY_ELEMENT (parent);
+
+ adapter = this-&gt;adapter;
+
+ // put buffer into adapter
+ gst_adapter_push (adapter, buffer);
+
+ // while we can read out 512 bytes, process them
+ while (gst_adapter_available (adapter) &gt;= 512 &amp;&amp; ret == GST_FLOW_OK) {
+ const guint8 *data = gst_adapter_map (adapter, 512);
+ // use flowreturn as an error value
+ ret = my_library_foo (data);
+ gst_adapter_unmap (adapter);
+ gst_adapter_flush (adapter, 512);
+ }
+ return ret;
+}
+]|
+
+For another example, a simple element inside GStreamer that uses #GstAdapter
+is the libvisual element.
+
+An element using #GstAdapter in its sink pad chain function should ensure that
+when the FLUSH_STOP event is received, that any queued data is cleared using
+gst_adapter_clear(). Data should also be cleared or processed on EOS and
+when changing state from %GST_STATE_PAUSED to %GST_STATE_READY.
+
+Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might
+need to clear the adapter after a discontinuity.
+
+The adapter will keep track of the timestamps of the buffers
+that were pushed. The last seen timestamp before the current position
+can be queried with gst_adapter_prev_pts(). This function can
+optionally return the number of bytes between the start of the buffer that
+carried the timestamp and the current adapter position. The distance is
+useful when dealing with, for example, raw audio samples because it allows
+you to calculate the timestamp of the current adapter position by using the
+last seen timestamp and the amount of bytes since. Additionally, the
+gst_adapter_prev_pts_at_offset() can be used to determine the last
+seen timestamp at a particular offset in the adapter.
+
+The adapter will also keep track of the offset of the buffers
+(#GST_BUFFER_OFFSET) that were pushed. The last seen offset before the
+current position can be queried with gst_adapter_prev_offset(). This function
+can optionally return the number of bytes between the start of the buffer
+that carried the offset and the current adapter position.
+
+Additionally the adapter also keeps track of the PTS, DTS and buffer offset
+at the last discontinuity, which can be retrieved with
+gst_adapter_pts_at_discont(), gst_adapter_dts_at_discont() and
+gst_adapter_offset_at_discont(). The number of bytes that were consumed
+since then can be queried with gst_adapter_distance_from_discont().
+
+A last thing to note is that while #GstAdapter is pretty optimized,
+merging buffers still might be an operation that requires a malloc() and
+memcpy() operation, and these operations are not the fastest. Because of
+this, some functions like gst_adapter_available_fast() are provided to help
+speed up such cases should you want to. To avoid repeated memory allocations,
+gst_adapter_copy() can be used to copy data into a (statically allocated)
+user provided buffer.
+
+#GstAdapter is not MT safe. All operations on an adapter must be serialized by
+the caller. This is not normally a problem, however, as the normal use case
+of #GstAdapter is inside one pad's chain function, in which case access is
+serialized via the pad's STREAM_LOCK.
+
+Note that gst_adapter_push() takes ownership of the buffer passed. Use
+gst_buffer_ref() before pushing it into the adapter if you still want to
+access the buffer later. The adapter will never modify the data in the
+buffer pushed in it.</doc>
+ <constructor name="new" c:identifier="gst_adapter_new">
+ <doc xml:space="preserve">Creates a new #GstAdapter. Free with g_object_unref().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </return-value>
+ </constructor>
+ <method name="available" c:identifier="gst_adapter_available">
+ <doc xml:space="preserve">Gets the maximum amount of bytes available, that is it returns the maximum
+value that can be supplied to gst_adapter_map() without that function
+returning %NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes available in @adapter</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="available_fast" c:identifier="gst_adapter_available_fast">
+ <doc xml:space="preserve">Gets the maximum number of bytes that are immediately available without
+requiring any expensive operations (like copying the data into a
+temporary buffer).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes that are available in @adapter without expensive
+operations</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="clear" c:identifier="gst_adapter_clear">
+ <doc xml:space="preserve">Removes all buffers from @adapter.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy"
+ c:identifier="gst_adapter_copy"
+ shadowed-by="copy_bytes"
+ introspectable="0">
+ <doc xml:space="preserve">Copies @size bytes of data starting at @offset out of the buffers
+contained in #GstAdapter into an array @dest provided by the caller.
+
+The array @dest should be large enough to contain @size bytes.
+The user should check that the adapter has (@offset + @size) bytes
+available before calling this function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">
+ the memory to copy into</doc>
+ <array length="2" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of bytes to copy</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_bytes"
+ c:identifier="gst_adapter_copy_bytes"
+ shadows="copy"
+ version="1.4">
+ <doc xml:space="preserve">Similar to gst_adapter_copy, but more suitable for language bindings. @size
+bytes of data starting at @offset will be copied out of the buffers contained
+in @adapter and into a new #GBytes structure which is returned. Depending on
+the value of the @size argument an empty #GBytes structure may be returned.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GBytes structure containing the copied data.</doc>
+ <type name="GLib.Bytes" c:type="GBytes*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to copy</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="distance_from_discont"
+ c:identifier="gst_adapter_distance_from_discont">
+ <return-value transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="dts_at_discont"
+ c:identifier="gst_adapter_dts_at_discont"
+ version="1.10">
+ <doc xml:space="preserve">Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_CLOCK_TIME_NONE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The DTS at the last discont or GST_CLOCK_TIME_NONE.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="flush" c:identifier="gst_adapter_flush">
+ <doc xml:space="preserve">Flushes the first @flush bytes in the @adapter. The caller must ensure that
+at least this many bytes are available.
+
+See also: gst_adapter_map(), gst_adapter_unmap()</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="flush" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to flush</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer"
+ c:identifier="gst_adapter_get_buffer"
+ version="1.6">
+ <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
+does not flush them from the adapter. See gst_adapter_take_buffer()
+for details.
+
+Caller owns a reference to the returned buffer. gst_buffer_unref() after
+usage.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBuffer containing the first
+ @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ gst_buffer_unref() when no longer needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to get</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_fast"
+ c:identifier="gst_adapter_get_buffer_fast"
+ version="1.6">
+ <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
+does not flush them from the adapter. See gst_adapter_take_buffer_fast()
+for details.
+
+Caller owns a reference to the returned buffer. gst_buffer_unref() after
+usage.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBuffer containing the first
+ @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ gst_buffer_unref() when no longer needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to get</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_list"
+ c:identifier="gst_adapter_get_buffer_list"
+ version="1.6">
+ <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
+the @adapter but does not flush them from the adapter. See
+gst_adapter_take_buffer_list() for details.
+
+Caller owns the returned list. Call gst_buffer_list_unref() to free
+the list after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBufferList of buffers containing
+ the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
+ available</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to get</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_list"
+ c:identifier="gst_adapter_get_list"
+ version="1.6">
+ <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
+@adapter, but does not flush them from the adapter. See
+gst_adapter_take_list() for details.
+
+Caller owns returned list and contained buffers. gst_buffer_unref() each
+buffer in the list before freeing the list after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GList of
+ buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
+ bytes are not available</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Gst.Buffer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to get</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map" c:identifier="gst_adapter_map">
+ <doc xml:space="preserve">Gets the first @size bytes stored in the @adapter. The returned pointer is
+valid until the next function is called on the adapter.
+
+Note that setting the returned pointer as the data of a #GstBuffer is
+incorrect for general-purpose plugins. The reason is that if a downstream
+element stores the buffer so that it has access to it outside of the bounds
+of its chain function, the buffer will have an invalid data pointer after
+your element flushes the bytes. In that case you should use
+gst_adapter_take(), which returns a freshly-allocated buffer that you can set
+as #GstBuffer memory or the potentially more performant
+gst_adapter_take_buffer().
+
+Returns %NULL if @size bytes are not available.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">
+ a pointer to the first @size bytes of data, or %NULL</doc>
+ <array length="0" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of bytes to map/peek</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="masked_scan_uint32"
+ c:identifier="gst_adapter_masked_scan_uint32">
+ <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset.
+
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness. All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.
+
+This function calls gst_adapter_masked_scan_uint32_peek() passing %NULL
+for value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
+
+Example:
+|[
+// Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
+
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+]|</doc>
+ <type name="gssize" c:type="gssize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="pattern" transfer-ownership="none">
+ <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
+ the last scanned position.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes to scan from offset</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="masked_scan_uint32_peek"
+ c:identifier="gst_adapter_masked_scan_uint32_peek">
+ <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset. If a match is found, the value that matched
+is returned through @value, otherwise @value is left untouched.
+
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness. All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
+ <type name="gssize" c:type="gssize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="pattern" transfer-ownership="none">
+ <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
+ the last scanned position.</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes to scan from offset</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="offset_at_discont"
+ c:identifier="gst_adapter_offset_at_discont"
+ version="1.10">
+ <doc xml:space="preserve">Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_BUFFER_OFFSET_NONE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The offset at the last discont or GST_BUFFER_OFFSET_NONE.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="prev_dts" c:identifier="gst_adapter_prev_dts">
+ <doc xml:space="preserve">Get the dts that was before the current byte in the adapter. When
+@distance is given, the amount of bytes between the dts and the current
+position is returned.
+
+The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
+the adapter is first created or when it is cleared. This also means that before
+the first byte with a dts is removed from the adapter, the dts
+and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The previously seen dts.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="distance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prev_dts_at_offset"
+ c:identifier="gst_adapter_prev_dts_at_offset"
+ version="1.2">
+ <doc xml:space="preserve">Get the dts that was before the byte at offset @offset in the adapter. When
+@distance is given, the amount of bytes between the dts and the current
+position is returned.
+
+The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
+the adapter is first created or when it is cleared. This also means that before
+the first byte with a dts is removed from the adapter, the dts
+and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The previously seen dts at given offset.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="distance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prev_offset"
+ c:identifier="gst_adapter_prev_offset"
+ version="1.10">
+ <doc xml:space="preserve">Get the offset that was before the current byte in the adapter. When
+@distance is given, the amount of bytes between the offset and the current
+position is returned.
+
+The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0
+when the adapter is first created or when it is cleared. This also means that
+before the first byte with an offset is removed from the adapter, the offset
+and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The previous seen offset.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="distance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a location for distance, or %NULL</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prev_pts" c:identifier="gst_adapter_prev_pts">
+ <doc xml:space="preserve">Get the pts that was before the current byte in the adapter. When
+@distance is given, the amount of bytes between the pts and the current
+position is returned.
+
+The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
+the adapter is first created or when it is cleared. This also means that before
+the first byte with a pts is removed from the adapter, the pts
+and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The previously seen pts.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="distance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prev_pts_at_offset"
+ c:identifier="gst_adapter_prev_pts_at_offset"
+ version="1.2">
+ <doc xml:space="preserve">Get the pts that was before the byte at offset @offset in the adapter. When
+@distance is given, the amount of bytes between the pts and the current
+position is returned.
+
+The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
+the adapter is first created or when it is cleared. This also means that before
+the first byte with a pts is removed from the adapter, the pts
+and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The previously seen pts at given offset.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="distance"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pts_at_discont"
+ c:identifier="gst_adapter_pts_at_discont"
+ version="1.10">
+ <doc xml:space="preserve">Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_CLOCK_TIME_NONE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The PTS at the last discont or GST_CLOCK_TIME_NONE.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_adapter_push">
+ <doc xml:space="preserve">Adds the data from @buf to the data stored inside @adapter and takes
+ownership of the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBuffer to add to queue in the adapter</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take" c:identifier="gst_adapter_take">
+ <doc xml:space="preserve">Returns a freshly allocated buffer containing the first @nbytes bytes of the
+@adapter. The returned bytes will be flushed from the adapter.
+
+Caller owns returned value. g_free after usage.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">
+ oven-fresh hot data, or %NULL if @nbytes bytes are not available</doc>
+ <array length="0" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of bytes to take</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_buffer" c:identifier="gst_adapter_take_buffer">
+ <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes bytes of the
+@adapter. The returned bytes will be flushed from the adapter.
+This function is potentially more performant than
+gst_adapter_take() since it can reuse the memory in pushed buffers
+by subbuffering or merging. This function will always return a
+buffer with a single memory region.
+
+Note that no assumptions should be made as to whether certain buffer
+flags such as the DISCONT flag are set on the returned buffer, or not.
+The caller needs to explicitly set or unset flags that should be set or
+unset.
+
+Since 1.6 this will also copy over all GstMeta of the input buffers except
+for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
+
+Caller owns a reference to the returned buffer. gst_buffer_unref() after
+usage.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBuffer containing the first
+ @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ gst_buffer_unref() when no longer needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to take</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_buffer_fast"
+ c:identifier="gst_adapter_take_buffer_fast"
+ version="1.2">
+ <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter.
+The returned bytes will be flushed from the adapter. This function
+is potentially more performant than gst_adapter_take_buffer() since
+it can reuse the memory in pushed buffers by subbuffering or
+merging. Unlike gst_adapter_take_buffer(), the returned buffer may
+be composed of multiple non-contiguous #GstMemory objects, no
+copies are made.
+
+Note that no assumptions should be made as to whether certain buffer
+flags such as the DISCONT flag are set on the returned buffer, or not.
+The caller needs to explicitly set or unset flags that should be set or
+unset.
+
+This will also copy over all GstMeta of the input buffers except
+for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
+
+This function can return buffer up to the return value of
+gst_adapter_available() without making copies if possible.
+
+Caller owns a reference to the returned buffer. gst_buffer_unref() after
+usage.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBuffer containing the first
+ @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
+ gst_buffer_unref() when no longer needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to take</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_buffer_list"
+ c:identifier="gst_adapter_take_buffer_list"
+ version="1.6">
+ <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
+the @adapter. The returned bytes will be flushed from the adapter.
+When the caller can deal with individual buffers, this function is more
+performant because no memory should be copied.
+
+Caller owns the returned list. Call gst_buffer_list_unref() to free
+the list after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstBufferList of buffers containing
+ the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
+ available</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to take</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_list" c:identifier="gst_adapter_take_list">
+ <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
+@adapter. The returned bytes will be flushed from the adapter.
+When the caller can deal with individual buffers, this function is more
+performant because no memory should be copied.
+
+Caller owns returned list and contained buffers. gst_buffer_unref() each
+buffer in the list before freeing the list after usage.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GList of
+ buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
+ bytes are not available</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Gst.Buffer"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to take</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_adapter_unmap">
+ <doc xml:space="preserve">Releases the memory obtained with the last gst_adapter_map().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="adapter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAdapter</doc>
+ <type name="Adapter" c:type="GstAdapter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="AdapterClass"
+ c:type="GstAdapterClass"
+ disguised="1"
+ glib:is-gtype-struct-for="Adapter">
+ </record>
+ <class name="Aggregator"
+ c:symbol-prefix="aggregator"
+ c:type="GstAggregator"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstAggregator"
+ glib:get-type="gst_aggregator_get_type"
+ glib:type-struct="AggregatorClass">
+ <doc xml:space="preserve">Manages a set of pads with the purpose of aggregating their buffers.
+Control is given to the subclass when all pads have data.
+
+ * Base class for mixers and muxers. Subclasses should at least implement
+ the #GstAggregatorClass.aggregate() virtual method.
+
+ * Installs a #GstPadChainFunction, a #GstPadEventFullFunction and a
+ #GstPadQueryFunction to queue all serialized data packets per sink pad.
+ Subclasses should not overwrite those, but instead implement
+ #GstAggregatorClass.sink_event() and #GstAggregatorClass.sink_query() as
+ needed.
+
+ * When data is queued on all pads, the aggregate vmethod is called.
+
+ * One can peek at the data on any given GstAggregatorPad with the
+ gst_aggregator_pad_peek_buffer () method, and remove it from the pad
+ with the gst_aggregator_pad_pop_buffer () method. When a buffer
+ has been taken with pop_buffer (), a new buffer can be queued
+ on that pad.
+
+ * If the subclass wishes to push a buffer downstream in its aggregate
+ implementation, it should do so through the
+ gst_aggregator_finish_buffer () method. This method will take care
+ of sending and ordering mandatory events such as stream start, caps
+ and segment.
+
+ * Same goes for EOS events, which should not be pushed directly by the
+ subclass, it should instead return GST_FLOW_EOS in its aggregate
+ implementation.
+
+ * Note that the aggregator logic regarding gap event handling is to turn
+ these into gap buffers with matching PTS and duration. It will also
+ flag these buffers with GST_BUFFER_FLAG_GAP and GST_BUFFER_FLAG_DROPPABLE
+ to ease their identification and subsequent processing.
+
+ * Subclasses must use (a subclass of) #GstAggregatorPad for both their
+ sink and source pads.
+ See gst_element_class_add_static_pad_template_with_gtype().
+
+This class used to live in gst-plugins-bad and was moved to core.</doc>
+ <virtual-method name="aggregate">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="clip">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create_new_pad" introspectable="0">
+ <return-value>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <type name="Gst.PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="req_name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="finish_buffer" invoker="finish_buffer">
+ <doc xml:space="preserve">This method will push the provided output buffer downstream. If needed,
+mandatory events such as stream-start, caps, and segment events will be
+sent before pushing the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to push.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fixate_src_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_next_time">
+ <return-value transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiated_src_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="decide_query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_activate">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <type name="Gst.PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="update_src_caps">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="finish_buffer" c:identifier="gst_aggregator_finish_buffer">
+ <doc xml:space="preserve">This method will push the provided output buffer downstream. If needed,
+mandatory events such as stream-start, caps, and segment events will be
+sent before pushing the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggregator" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to push.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allocator" c:identifier="gst_aggregator_get_allocator">
+ <doc xml:space="preserve">Lets #GstAggregator sub-classes get the memory @allocator
+acquired by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocationParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_pool"
+ c:identifier="gst_aggregator_get_buffer_pool">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the instance of the #GstBufferPool used
+by @trans; free it after use it</doc>
+ <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_aggregator_get_latency">
+ <doc xml:space="preserve">Retrieves the latency values reported by @self in response to the latency
+query, or %GST_CLOCK_TIME_NONE if there is not live source connected and the element
+will not wait for the clock.
+
+Typically only called by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The latency or %GST_CLOCK_TIME_NONE if the element does not sync</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_aggregator_set_latency">
+ <doc xml:space="preserve">Lets #GstAggregator sub-classes tell the baseclass what their internal
+latency is. Will also post a LATENCY message on the bus so the pipeline
+can reconfigure its global latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="min_latency" transfer-ownership="none">
+ <doc xml:space="preserve">minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max_latency" transfer-ownership="none">
+ <doc xml:space="preserve">maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_src_caps" c:identifier="gst_aggregator_set_src_caps">
+ <doc xml:space="preserve">Sets the caps to be used on the src pad.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstCaps to set on the src pad.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="latency" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="start-time" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="start-time-selection"
+ introspectable="0"
+ writable="1"
+ transfer-ownership="none">
+ <type/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="srcpad">
+ <doc xml:space="preserve">the aggregator's source pad</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AggregatorPrivate" c:type="GstAggregatorPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AggregatorClass"
+ c:type="GstAggregatorClass"
+ glib:is-gtype-struct-for="Aggregator">
+ <doc xml:space="preserve">The aggregator base class will handle in a thread-safe way all manners of
+concurrent flushes, seeks, pad additions and removals, leaving to the
+subclass the responsibility of clipping buffers, and aggregating buffers in
+the way the implementor sees fit.
+
+It will also take care of event ordering (stream-start, segment, eos).
+
+Basically, a simple implementation will override @aggregate, and call
+_finish_buffer from inside that function.</doc>
+ <field name="parent_class">
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="clip">
+ <callback name="clip">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="finish_buffer">
+ <callback name="finish_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstAggregator</doc>
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer to push.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="aggregator_pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_activate">
+ <callback name="src_activate">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <type name="Gst.PadMode" c:type="GstPadMode"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="aggregate">
+ <callback name="aggregate">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_next_time">
+ <callback name="get_next_time">
+ <return-value transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="create_new_pad" introspectable="0">
+ <callback name="create_new_pad" introspectable="0">
+ <return-value>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="templ" transfer-ownership="none">
+ <type name="Gst.PadTemplate" c:type="GstPadTemplate*"/>
+ </parameter>
+ <parameter name="req_name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="update_src_caps">
+ <callback name="update_src_caps">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fixate_src_caps">
+ <callback name="fixate_src_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiated_src_caps">
+ <callback name="negotiated_src_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="decide_query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="AggregatorPad"
+ c:symbol-prefix="aggregator_pad"
+ c:type="GstAggregatorPad"
+ parent="Gst.Pad"
+ glib:type-name="GstAggregatorPad"
+ glib:get-type="gst_aggregator_pad_get_type"
+ glib:type-struct="AggregatorPadClass">
+ <doc xml:space="preserve">Pads managed by a #GstAggregor subclass.
+
+This class used to live in gst-plugins-bad and was moved to core.</doc>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggpad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="skip_buffer">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="aggpad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="drop_buffer" c:identifier="gst_aggregator_pad_drop_buffer">
+ <doc xml:space="preserve">Drop the buffer currently queued in @pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if there was a buffer queued in @pad, or FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad where to drop any pending buffer</doc>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="has_buffer"
+ c:identifier="gst_aggregator_pad_has_buffer"
+ version="1.14.1">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad has a buffer available as the next thing.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to check the buffer on</doc>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_eos" c:identifier="gst_aggregator_pad_is_eos">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad is EOS, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">an aggregator pad</doc>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_buffer" c:identifier="gst_aggregator_pad_peek_buffer">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A reference to the buffer in @pad or
+NULL if no buffer was queued. You should unref the buffer after
+usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to get buffer from</doc>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_buffer" c:identifier="gst_aggregator_pad_pop_buffer">
+ <doc xml:space="preserve">Steal the ref to the buffer currently queued in @pad.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The buffer in @pad or NULL if no buffer was
+ queued. You should unref the buffer after usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to get buffer from</doc>
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="Gst.Pad" c:type="GstPad"/>
+ </field>
+ <field name="segment">
+ <doc xml:space="preserve">last segment received.</doc>
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="priv">
+ <type name="AggregatorPadPrivate" c:type="GstAggregatorPadPrivate*"/>
+ </field>
+ <field name="_gst_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="AggregatorPadClass"
+ c:type="GstAggregatorPadClass"
+ glib:is-gtype-struct-for="AggregatorPad">
+ <field name="parent_class">
+ <type name="Gst.PadClass" c:type="GstPadClass"/>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggpad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="skip_buffer">
+ <callback name="skip_buffer">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="aggpad" transfer-ownership="none">
+ <type name="AggregatorPad" c:type="GstAggregatorPad*"/>
+ </parameter>
+ <parameter name="aggregator" transfer-ownership="none">
+ <type name="Aggregator" c:type="GstAggregator*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="AggregatorPadPrivate"
+ c:type="GstAggregatorPadPrivate"
+ disguised="1">
+ </record>
+ <record name="AggregatorPrivate"
+ c:type="GstAggregatorPrivate"
+ disguised="1">
+ </record>
+ <constant name="BASE_PARSE_FLAG_DRAINING"
+ value="2"
+ c:type="GST_BASE_PARSE_FLAG_DRAINING">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="BASE_PARSE_FLAG_LOST_SYNC"
+ value="1"
+ c:type="GST_BASE_PARSE_FLAG_LOST_SYNC">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="BASE_TRANSFORM_SINK_NAME"
+ value="sink"
+ c:type="GST_BASE_TRANSFORM_SINK_NAME">
+ <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="BASE_TRANSFORM_SRC_NAME"
+ value="src"
+ c:type="GST_BASE_TRANSFORM_SRC_NAME">
+ <doc xml:space="preserve">The name of the templates for the source pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="BaseParse"
+ c:symbol-prefix="base_parse"
+ c:type="GstBaseParse"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstBaseParse"
+ glib:get-type="gst_base_parse_get_type"
+ glib:type-struct="BaseParseClass">
+ <doc xml:space="preserve">This base class is for parser elements that process data and splits it
+into separate audio/video/whatever frames.
+
+It provides for:
+
+ * provides one sink pad and one source pad
+ * handles state changes
+ * can operate in pull mode or push mode
+ * handles seeking in both modes
+ * handles events (SEGMENT/EOS/FLUSH)
+ * handles queries (POSITION/DURATION/SEEKING/FORMAT/CONVERT)
+ * handles flushing
+
+The purpose of this base class is to provide the basic functionality of
+a parser and share a lot of rather complex code.
+
+# Description of the parsing mechanism:
+
+## Set-up phase
+
+ * #GstBaseParse calls @start to inform subclass that data processing is
+ about to start now.
+
+ * #GstBaseParse class calls @set_sink_caps to inform the subclass about
+ incoming sinkpad caps. Subclass could already set the srcpad caps
+ accordingly, but this might be delayed until calling
+ gst_base_parse_finish_frame() with a non-queued frame.
+
+ * At least at this point subclass needs to tell the #GstBaseParse class
+ how big data chunks it wants to receive (min_frame_size). It can do
+ this with gst_base_parse_set_min_frame_size().
+
+ * #GstBaseParse class sets up appropriate data passing mode (pull/push)
+ and starts to process the data.
+
+## Parsing phase
+
+ * #GstBaseParse gathers at least min_frame_size bytes of data either
+ by pulling it from upstream or collecting buffers in an internal
+ #GstAdapter.
+
+ * A buffer of (at least) min_frame_size bytes is passed to subclass with
+ @handle_frame. Subclass checks the contents and can optionally
+ return GST_FLOW_OK along with an amount of data to be skipped to find
+ a valid frame (which will result in a subsequent DISCONT).
+ If, otherwise, the buffer does not hold a complete frame,
+ @handle_frame can merely return and will be called again when additional
+ data is available. In push mode this amounts to an
+ additional input buffer (thus minimal additional latency), in pull mode
+ this amounts to some arbitrary reasonable buffer size increase.
+ Of course, gst_base_parse_set_min_frame_size() could also be used if a
+ very specific known amount of additional data is required.
+ If, however, the buffer holds a complete valid frame, it can pass
+ the size of this frame to gst_base_parse_finish_frame().
+ If acting as a converter, it can also merely indicate consumed input data
+ while simultaneously providing custom output data.
+ Note that baseclass performs some processing (such as tracking
+ overall consumed data rate versus duration) for each finished frame,
+ but other state is only updated upon each call to @handle_frame
+ (such as tracking upstream input timestamp).
+
+ Subclass is also responsible for setting the buffer metadata
+ (e.g. buffer timestamp and duration, or keyframe if applicable).
+ (although the latter can also be done by #GstBaseParse if it is
+ appropriately configured, see below). Frame is provided with
+ timestamp derived from upstream (as much as generally possible),
+ duration obtained from configuration (see below), and offset
+ if meaningful (in pull mode).
+
+ Note that @check_valid_frame might receive any small
+ amount of input data when leftover data is being drained (e.g. at EOS).
+
+ * As part of finish frame processing,
+ just prior to actually pushing the buffer in question,
+ it is passed to @pre_push_frame which gives subclass yet one
+ last chance to examine buffer metadata, or to send some custom (tag)
+ events, or to perform custom (segment) filtering.
+
+ * During the parsing process #GstBaseParseClass will handle both srcpad
+ and sinkpad events. They will be passed to subclass if @event or
+ @src_event callbacks have been provided.
+
+## Shutdown phase
+
+* #GstBaseParse class calls @stop to inform the subclass that data
+ parsing will be stopped.
+
+Subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It also
+needs to set the fixed caps on srcpad, when the format is ensured (e.g.
+when base class calls subclass' @set_sink_caps function).
+
+This base class uses %GST_FORMAT_DEFAULT as a meaning of frames. So,
+subclass conversion routine needs to know that conversion from
+%GST_FORMAT_TIME to %GST_FORMAT_DEFAULT must return the
+frame number that can be found from the given byte position.
+
+#GstBaseParse uses subclasses conversion methods also for seeking (or
+otherwise uses its own default one, see also below).
+
+Subclass @start and @stop functions will be called to inform the beginning
+and end of data processing.
+
+Things that subclass need to take care of:
+
+* Provide pad templates
+* Fixate the source pad caps when appropriate
+* Inform base class how big data chunks should be retrieved. This is
+ done with gst_base_parse_set_min_frame_size() function.
+* Examine data chunks passed to subclass with @handle_frame and pass
+ proper frame(s) to gst_base_parse_finish_frame(), and setting src pad
+ caps and timestamps on frame.
+* Provide conversion functions
+* Update the duration information with gst_base_parse_set_duration()
+* Optionally passthrough using gst_base_parse_set_passthrough()
+* Configure various baseparse parameters using
+ gst_base_parse_set_average_bitrate(), gst_base_parse_set_syncable()
+ and gst_base_parse_set_frame_rate().
+
+* In particular, if subclass is unable to determine a duration, but
+ parsing (or specs) yields a frames per seconds rate, then this can be
+ provided to #GstBaseParse to enable it to cater for
+ buffer time metadata (which will be taken from upstream as much as
+ possible). Internally keeping track of frame durations and respective
+ sizes that have been pushed provides #GstBaseParse with an estimated
+ bitrate. A default @convert (used if not overridden) will then use these
+ rates to perform obvious conversions. These rates are also used to
+ update (estimated) duration at regular frame intervals.</doc>
+ <virtual-method name="convert">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_value" transfer-ownership="none">
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="detect">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_sink_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ <parameter name="skipsize" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pre_push_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_sink_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_index_entry"
+ c:identifier="gst_base_parse_add_index_entry">
+ <doc xml:space="preserve">Adds an entry to the index associating @offset to @ts. It is recommended
+to only add keyframe entries. @force allows to bypass checks, such as
+whether the stream is (upstream) seekable, another entry is already "close"
+to the new entry, etc.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#gboolean indicating whether entry was added</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset of entry</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="ts" transfer-ownership="none">
+ <doc xml:space="preserve">timestamp associated with offset</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">whether entry refers to keyframe</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="force" transfer-ownership="none">
+ <doc xml:space="preserve">add entry disregarding sanity checks</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="convert_default"
+ c:identifier="gst_base_parse_convert_default">
+ <doc xml:space="preserve">Default implementation of "convert" vmethod in #GstBaseParse class.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if conversion was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat describing the source format.</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <doc xml:space="preserve">Source value to be converted.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat defining the converted format.</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer where the conversion result will be put.</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="drain" c:identifier="gst_base_parse_drain" version="1.12">
+ <doc xml:space="preserve">Drains the adapter until it is empty. It decreases the min_frame_size to
+match the current adapter size and calls chain method until the adapter
+is emptied or chain returns with error.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="finish_frame" c:identifier="gst_base_parse_finish_frame">
+ <doc xml:space="preserve">Collects parsed data and pushes this downstream.
+Source pad caps must be set when this is called.
+
+If @frame's out_buffer is set, that will be used as subsequent frame data.
+Otherwise, @size samples will be taken from the input and used for output,
+and the output's metadata (timestamps etc) will be taken as (optionally)
+set by the subclass on @frame's (input) buffer (which is otherwise
+ignored for any but the above purpose/information).
+
+Note that the latter buffer is invalidated by this call, whereas the
+caller retains ownership of @frame.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn that should be escalated to caller (of caller)</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParseFrame</doc>
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">consumed input data represented by frame</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags"
+ c:identifier="gst_base_parse_merge_tags"
+ version="1.6">
+ <doc xml:space="preserve">Sets the parser subclass's tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with gst_base_parse_merge_tags().
+
+Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
+ previously-set tags</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
+ <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_frame" c:identifier="gst_base_parse_push_frame">
+ <doc xml:space="preserve">Pushes the frame's buffer downstream, sends any pending events and
+does some timestamp and segment handling. Takes ownership of
+frame's buffer, though caller retains ownership of @frame.
+
+This must be called with sinkpad STREAM_LOCK held.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParseFrame</doc>
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_average_bitrate"
+ c:identifier="gst_base_parse_set_average_bitrate">
+ <doc xml:space="preserve">Optionally sets the average bitrate detected in media (if non-zero),
+e.g. based on metadata, as it will be posted to the application.
+
+By default, announced average bitrate is estimated. The average bitrate
+is used to estimate the total duration of the stream and to estimate
+a seek position, if there's no index and the format is syncable
+(see gst_base_parse_set_syncable()).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="bitrate" transfer-ownership="none">
+ <doc xml:space="preserve">average bitrate in bits/second</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_duration" c:identifier="gst_base_parse_set_duration">
+ <doc xml:space="preserve">Sets the duration of the currently playing media. Subclass can use this
+when it is able to determine duration and/or notices a change in the media
+duration. Alternatively, if @interval is non-zero (default), then stream
+duration is determined based on estimated bitrate, and updated every @interval
+frames.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="fmt" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat.</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">duration value.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="interval" transfer-ownership="none">
+ <doc xml:space="preserve">how often to update the duration estimate based on bitrate, or 0.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_rate"
+ c:identifier="gst_base_parse_set_frame_rate">
+ <doc xml:space="preserve">If frames per second is configured, parser can take care of buffer duration
+and timestamping. When performing segment clipping, or seeking to a specific
+location, a corresponding decoder might need an initial @lead_in and a
+following @lead_out number of frames to ensure the desired segment is
+entirely filled upon decoding.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBaseParse to set</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="fps_num" transfer-ownership="none">
+ <doc xml:space="preserve">frames per second (numerator).</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_den" transfer-ownership="none">
+ <doc xml:space="preserve">frames per second (denominator).</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="lead_in" transfer-ownership="none">
+ <doc xml:space="preserve">frames needed before a segment for subsequent decode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="lead_out" transfer-ownership="none">
+ <doc xml:space="preserve">frames needed after a segment</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_has_timing_info"
+ c:identifier="gst_base_parse_set_has_timing_info">
+ <doc xml:space="preserve">Set if frames carry timing information which the subclass can (generally)
+parse and provide. In particular, intrinsic (rather than estimated) time
+can be obtained following a seek.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="has_timing" transfer-ownership="none">
+ <doc xml:space="preserve">whether frames carry timing information</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_infer_ts" c:identifier="gst_base_parse_set_infer_ts">
+ <doc xml:space="preserve">By default, the base class might try to infer PTS from DTS and vice
+versa. While this is generally correct for audio data, it may not
+be otherwise. Sub-classes implementing such formats should disable
+timestamp inferring.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="infer_ts" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if parser should infer DTS/PTS from each other</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_base_parse_set_latency">
+ <doc xml:space="preserve">Sets the minimum and maximum (which may likely be equal) latency introduced
+by the parsing process. If there is such a latency, which depends on the
+particular parsing of the format, it typically corresponds to 1 frame duration.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="min_latency" transfer-ownership="none">
+ <doc xml:space="preserve">minimum parse latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max_latency" transfer-ownership="none">
+ <doc xml:space="preserve">maximum parse latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_min_frame_size"
+ c:identifier="gst_base_parse_set_min_frame_size">
+ <doc xml:space="preserve">Subclass can use this function to tell the base class that it needs to
+give at least #min_size buffers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParse.</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="min_size" transfer-ownership="none">
+ <doc xml:space="preserve">Minimum size of the data that this base class should give to
+ subclass.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_passthrough"
+ c:identifier="gst_base_parse_set_passthrough">
+ <doc xml:space="preserve">Set if the nature of the format or configuration does not allow (much)
+parsing, and the parser should operate in passthrough mode (which only
+applies when operating in push mode). That is, incoming buffers are
+pushed through unmodified, i.e. no @check_valid_frame or @parse_frame
+callbacks will be invoked, but @pre_push_frame will still be invoked,
+so subclass can perform as much or as little is appropriate for
+passthrough semantics in @pre_push_frame.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="passthrough" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if parser should run in passthrough mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_pts_interpolation"
+ c:identifier="gst_base_parse_set_pts_interpolation">
+ <doc xml:space="preserve">By default, the base class will guess PTS timestamps using a simple
+interpolation (previous timestamp + duration), which is incorrect for
+data streams with reordering, where PTS can go backward. Sub-classes
+implementing such formats should disable PTS interpolation.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="pts_interpolate" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if parser should interpolate PTS timestamps</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_syncable" c:identifier="gst_base_parse_set_syncable">
+ <doc xml:space="preserve">Set if frame starts can be identified. This is set by default and
+determines whether seeking based on bitrate averages
+is possible for a format/stream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="syncable" transfer-ownership="none">
+ <doc xml:space="preserve">set if frame starts can be identified</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ts_at_offset"
+ c:identifier="gst_base_parse_set_ts_at_offset"
+ version="1.2">
+ <doc xml:space="preserve">This function should only be called from a @handle_frame implementation.
+
+#GstBaseParse creates initial timestamps for frames by using the last
+timestamp seen in the stream before the frame starts. In certain
+cases, the correct timestamps will occur in the stream after the
+start of the frame, but before the start of the actual picture data.
+This function can be used to set the timestamps based on the offset
+into the frame data that the picture starts.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="parse" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseParse</doc>
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset into current buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="disable-passthrough"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">If set to %TRUE, baseparse will unconditionally force parsing of the
+incoming data. This can be required in the rare cases where the incoming
+side-data (caps, pts, dts, ...) is not trusted by the user and wants to
+force validation and parsing of the incoming data.
+If set to %FALSE, decision of whether to parse the data or not is up to
+the implementation (standard behaviour).</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element">
+ <doc xml:space="preserve">the parent element.</doc>
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="flags">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseParsePrivate" c:type="GstBaseParsePrivate*"/>
+ </field>
+ </class>
+ <record name="BaseParseClass"
+ c:type="GstBaseParseClass"
+ glib:is-gtype-struct-for="BaseParse">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @handle_frame needs to be overridden.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_sink_caps">
+ <callback name="set_sink_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_frame">
+ <callback name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ <parameter name="skipsize" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pre_push_frame">
+ <callback name="pre_push_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="convert">
+ <callback name="convert">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_value" transfer-ownership="none">
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_sink_caps">
+ <callback name="get_sink_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="detect">
+ <callback name="detect">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="parse" transfer-ownership="none">
+ <type name="BaseParse" c:type="GstBaseParse*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseParseFrame"
+ c:type="GstBaseParseFrame"
+ glib:type-name="GstBaseParseFrame"
+ glib:get-type="gst_base_parse_frame_get_type"
+ c:symbol-prefix="base_parse_frame">
+ <doc xml:space="preserve">Frame (context) data passed to each frame parsing virtual methods. In
+addition to providing the data to be checked for a valid frame or an already
+identified frame, it conveys additional metadata or control information
+from and to the subclass w.r.t. the particular frame in question (rather
+than global parameters). Some of these may apply to each parsing stage, others
+only to some a particular one. These parameters are effectively zeroed at start
+of each frame's processing, i.e. parsing virtual method invocation sequence.</doc>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">input data to be parsed for frames.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="out_buffer" writable="1">
+ <doc xml:space="preserve">output data.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">a combination of input and output #GstBaseParseFrameFlags that
+ convey additional context to subclass or allow subclass to tune
+ subsequent #GstBaseParse actions.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">media specific offset of input frame
+ Note that a converter may have a different one on the frame's buffer.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="overhead" writable="1">
+ <doc xml:space="preserve">subclass can set this to indicates the metadata overhead
+ for the given frame, which is then used to enable more accurate bitrate
+ computations. If this is -1, it is assumed that this frame should be
+ skipped in bitrate calculation.</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="size" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="_gst_reserved_i" readable="0" private="1">
+ <array zero-terminated="0" c:type="guint" fixed-size="2">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="_gst_reserved_p" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="_private_flags" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <constructor name="new" c:identifier="gst_base_parse_frame_new">
+ <doc xml:space="preserve">Allocates a new #GstBaseParseFrame. This function is mainly for bindings,
+elements written in C should usually allocate the frame on the stack and
+then use gst_base_parse_frame_init() to initialise it.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated #GstBaseParseFrame. Free with
+ gst_base_parse_frame_free() when no longer needed.</doc>
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the flags</doc>
+ <type name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags"/>
+ </parameter>
+ <parameter name="overhead" transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes in this frame which should be counted as
+ metadata overhead, ie. not used to calculate the average bitrate.
+ Set to -1 to mark the entire frame as metadata. If in doubt, set to 0.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="gst_base_parse_frame_copy">
+ <return-value transfer-ownership="full">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_base_parse_frame_free">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_base_parse_frame_init">
+ <doc xml:space="preserve">Sets a #GstBaseParseFrame to initial state. Currently this means
+all public fields are zero-ed and a private flag is set to make
+sure gst_base_parse_frame_free() only frees the contents but not
+the actual frame. Use this function to initialise a #GstBaseParseFrame
+allocated on the stack.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">#GstBaseParseFrame.</doc>
+ <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags">
+ <doc xml:space="preserve">Flags to be used in a #GstBaseParseFrame.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_NONE">
+ <doc xml:space="preserve">no flag</doc>
+ </member>
+ <member name="new_frame"
+ value="1"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME">
+ <doc xml:space="preserve">set by baseclass if current frame
+ is passed for processing to the subclass for the first time
+ (and not set on subsequent calls with same data).</doc>
+ </member>
+ <member name="no_frame"
+ value="2"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_NO_FRAME">
+ <doc xml:space="preserve">set to indicate this buffer should not be
+ counted as frame, e.g. if this frame is dependent on a previous one.
+ As it is not counted as a frame, bitrate increases but frame to time
+ conversions are maintained.</doc>
+ </member>
+ <member name="clip"
+ value="4"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_CLIP">
+ <doc xml:space="preserve">@pre_push_frame can set this to indicate
+ that regular segment clipping can still be performed (as opposed to
+ any custom one having been done).</doc>
+ </member>
+ <member name="drop"
+ value="8"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_DROP">
+ <doc xml:space="preserve">indicates to @finish_frame that the
+ the frame should be dropped (and might be handled internally by subclass)</doc>
+ </member>
+ <member name="queue"
+ value="16"
+ c:identifier="GST_BASE_PARSE_FRAME_FLAG_QUEUE">
+ <doc xml:space="preserve">indicates to @finish_frame that the
+ the frame should be queued for now and processed fully later
+ when the first non-queued frame is finished</doc>
+ </member>
+ </bitfield>
+ <record name="BaseParsePrivate" c:type="GstBaseParsePrivate" disguised="1">
+ </record>
+ <class name="BaseSink"
+ c:symbol-prefix="base_sink"
+ c:type="GstBaseSink"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstBaseSink"
+ glib:get-type="gst_base_sink_get_type"
+ glib:type-struct="BaseSinkClass">
+ <doc xml:space="preserve">#GstBaseSink is the base class for sink elements in GStreamer, such as
+xvimagesink or filesink. It is a layer on top of #GstElement that provides a
+simplified interface to plugin writers. #GstBaseSink handles many details
+for you, for example: preroll, clock synchronization, state changes,
+activation in push or pull mode, and queries.
+
+In most cases, when writing sink elements, there is no need to implement
+class methods from #GstElement or to set functions on pads, because the
+#GstBaseSink infrastructure should be sufficient.
+
+#GstBaseSink provides support for exactly one sink pad, which should be
+named "sink". A sink implementation (subclass of #GstBaseSink) should
+install a pad template in its class_init function, like so:
+|[&lt;!-- language="C" --&gt;
+static void
+my_element_class_init (GstMyElementClass *klass)
+{
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+ // sinktemplate should be a #GstStaticPadTemplate with direction
+ // %GST_PAD_SINK and name "sink"
+ gst_element_class_add_static_pad_template (gstelement_class, &amp;amp;sinktemplate);
+
+ gst_element_class_set_static_metadata (gstelement_class,
+ "Sink name",
+ "Sink",
+ "My Sink element",
+ "The author &lt;my.sink@my.email&gt;");
+}
+]|
+
+#GstBaseSink will handle the prerolling correctly. This means that it will
+return %GST_STATE_CHANGE_ASYNC from a state change to PAUSED until the first
+buffer arrives in this element. The base class will call the
+#GstBaseSinkClass.preroll() vmethod with this preroll buffer and will then
+commit the state change to the next asynchronously pending state.
+
+When the element is set to PLAYING, #GstBaseSink will synchronise on the
+clock using the times returned from #GstBaseSinkClass.get_times(). If this
+function returns %GST_CLOCK_TIME_NONE for the start time, no synchronisation
+will be done. Synchronisation can be disabled entirely by setting the object
+#GstBaseSink:sync property to %FALSE.
+
+After synchronisation the virtual method #GstBaseSinkClass.render() will be
+called. Subclasses should minimally implement this method.
+
+Subclasses that synchronise on the clock in the #GstBaseSinkClass.render()
+method are supported as well. These classes typically receive a buffer in
+the render method and can then potentially block on the clock while
+rendering. A typical example is an audiosink.
+These subclasses can use gst_base_sink_wait_preroll() to perform the
+blocking wait.
+
+Upon receiving the EOS event in the PLAYING state, #GstBaseSink will wait
+for the clock to reach the time indicated by the stop time of the last
+#GstBaseSinkClass.get_times() call before posting an EOS message. When the
+element receives EOS in PAUSED, preroll completes, the event is queued and an
+EOS message is posted when going to PLAYING.
+
+#GstBaseSink will internally use the %GST_EVENT_SEGMENT events to schedule
+synchronisation and clipping of buffers. Buffers that fall completely outside
+of the current segment are dropped. Buffers that fall partially in the
+segment are rendered (and prerolled). Subclasses should do any subbuffer
+clipping themselves when needed.
+
+#GstBaseSink will by default report the current playback position in
+%GST_FORMAT_TIME based on the current clock time and segment information.
+If no clock has been set on the element, the query will be forwarded
+upstream.
+
+The #GstBaseSinkClass.set_caps() function will be called when the subclass
+should configure itself to process a specific media type.
+
+The #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() virtual methods
+will be called when resources should be allocated. Any
+#GstBaseSinkClass.preroll(), #GstBaseSinkClass.render() and
+#GstBaseSinkClass.set_caps() function will be called between the
+#GstBaseSinkClass.start() and #GstBaseSinkClass.stop() calls.
+
+The #GstBaseSinkClass.event() virtual method will be called when an event is
+received by #GstBaseSink. Normally this method should only be overridden by
+very specific elements (such as file sinks) which need to handle the
+newsegment event specially.
+
+The #GstBaseSinkClass.unlock() method is called when the elements should
+unblock any blocking operations they perform in the
+#GstBaseSinkClass.render() method. This is mostly useful when the
+#GstBaseSinkClass.render() method performs a blocking write on a file
+descriptor, for example.
+
+The #GstBaseSink:max-lateness property affects how the sink deals with
+buffers that arrive too late in the sink. A buffer arrives too late in the
+sink when the presentation time (as a combination of the last segment, buffer
+timestamp and element base_time) plus the duration is before the current
+time of the clock.
+If the frame is later than max-lateness, the sink will drop the buffer
+without calling the render method.
+This feature is disabled if sync is disabled, the
+#GstBaseSinkClass.get_times() method does not return a valid start time or
+max-lateness is set to -1 (the default).
+Subclasses can use gst_base_sink_set_max_lateness() to configure the
+max-lateness value.
+
+The #GstBaseSink:qos property will enable the quality-of-service features of
+the basesink which gather statistics about the real-time performance of the
+clock synchronisation. For each buffer received in the sink, statistics are
+gathered and a QOS event is sent upstream with these numbers. This
+information can then be used by upstream elements to reduce their processing
+rate, for example.
+
+The #GstBaseSink:async property can be used to instruct the sink to never
+perform an ASYNC state change. This feature is mostly usable when dealing
+with non-synchronized streams or sparse streams.</doc>
+ <virtual-method name="activate_pull">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fixate">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_times">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare_list">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="preroll">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="render">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="render_list">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unlock">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unlock_stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="wait_event">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="do_preroll" c:identifier="gst_base_sink_do_preroll">
+ <doc xml:space="preserve">If the @sink spawns its own thread for pulling buffers from upstream it
+should call this method after it has pulled a buffer. If the element needed
+to preroll, this function will perform the preroll and will then block
+until the element state is changed.
+
+This function should be called with the PREROLL_LOCK held.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
+continue. Any other return value should be returned from the render vmethod.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">the mini object that caused the preroll</doc>
+ <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_blocksize" c:identifier="gst_base_sink_get_blocksize">
+ <doc xml:space="preserve">Get the number of bytes that the sink will pull when it is operating in pull
+mode.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes @sink will pull in pull mode.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_drop_out_of_segment"
+ c:identifier="gst_base_sink_get_drop_out_of_segment"
+ version="1.12">
+ <doc xml:space="preserve">Checks if @sink is currently configured to drop buffers which are outside
+the current segment</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sink is configured to drop buffers outside the
+current segment.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_last_sample"
+ c:identifier="gst_base_sink_get_last_sample">
+ <doc xml:space="preserve">Get the last sample that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails.
+
+The #GstCaps on the sample can be used to determine the type of the buffer.
+
+Free-function: gst_sample_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a #GstSample. gst_sample_unref() after
+ usage. This function returns %NULL when no buffer has arrived in the
+ sink yet or when the sink is not in PAUSED or PLAYING.</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_base_sink_get_latency">
+ <doc xml:space="preserve">Get the currently configured latency.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The configured latency.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_bitrate"
+ c:identifier="gst_base_sink_get_max_bitrate"
+ version="1.2">
+ <doc xml:space="preserve">Get the maximum amount of bits per second that the sink will render.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum number of bits per second @sink will render.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_lateness"
+ c:identifier="gst_base_sink_get_max_lateness">
+ <doc xml:space="preserve">Gets the max lateness value. See gst_base_sink_set_max_lateness() for
+more details.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The maximum time in nanoseconds that a buffer can be late
+before it is dropped and not rendered. A value of -1 means an
+unlimited time.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_render_delay"
+ c:identifier="gst_base_sink_get_render_delay">
+ <doc xml:space="preserve">Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
+information about the render delay.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the render delay of @sink.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_sync" c:identifier="gst_base_sink_get_sync">
+ <doc xml:space="preserve">Checks if @sink is currently configured to synchronize against the
+clock.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sink is configured to synchronize against the clock.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_throttle_time"
+ c:identifier="gst_base_sink_get_throttle_time">
+ <doc xml:space="preserve">Get the time that will be inserted between frames to control the
+maximum buffers per second.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of nanoseconds @sink will put between frames.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ts_offset" c:identifier="gst_base_sink_get_ts_offset">
+ <doc xml:space="preserve">Get the synchronisation offset of @sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The synchronisation offset.</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_async_enabled"
+ c:identifier="gst_base_sink_is_async_enabled">
+ <doc xml:space="preserve">Checks if @sink is currently configured to perform asynchronous state
+changes to PAUSED.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sink is configured to perform asynchronous state
+changes.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_last_sample_enabled"
+ c:identifier="gst_base_sink_is_last_sample_enabled">
+ <doc xml:space="preserve">Checks if @sink is currently configured to store the last received sample in
+the last-sample property.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sink is configured to store the last received sample.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_qos_enabled"
+ c:identifier="gst_base_sink_is_qos_enabled">
+ <doc xml:space="preserve">Checks if @sink is currently configured to send Quality-of-Service events
+upstream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the sink is configured to perform Quality-of-Service.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="query_latency" c:identifier="gst_base_sink_query_latency">
+ <doc xml:space="preserve">Query the sink for the latency parameters. The latency will be queried from
+the upstream elements. @live will be %TRUE if @sink is configured to
+synchronize against the clock. @upstream_live will be %TRUE if an upstream
+element is live.
+
+If both @live and @upstream_live are %TRUE, the sink will want to compensate
+for the latency introduced by the upstream elements by setting the
+@min_latency to a strictly positive value.
+
+This function is mostly used by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="live"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if the sink is live</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="upstream_live"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if an upstream element is live</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="min_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the min latency of the upstream elements</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the max latency of the upstream elements</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_async_enabled"
+ c:identifier="gst_base_sink_set_async_enabled">
+ <doc xml:space="preserve">Configures @sink to perform all state changes asynchronously. When async is
+disabled, the sink will immediately go to PAUSED instead of waiting for a
+preroll buffer. This feature is useful if the sink does not synchronize
+against the clock or when it is dealing with sparse streams.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">the new async value.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_blocksize" c:identifier="gst_base_sink_set_blocksize">
+ <doc xml:space="preserve">Set the number of bytes that the sink will pull when it is operating in pull
+mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="blocksize" transfer-ownership="none">
+ <doc xml:space="preserve">the blocksize in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_drop_out_of_segment"
+ c:identifier="gst_base_sink_set_drop_out_of_segment"
+ version="1.12">
+ <doc xml:space="preserve">Configure @sink to drop buffers which are outside the current segment</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="drop_out_of_segment" transfer-ownership="none">
+ <doc xml:space="preserve">drop buffers outside the segment</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_last_sample_enabled"
+ c:identifier="gst_base_sink_set_last_sample_enabled">
+ <doc xml:space="preserve">Configures @sink to store the last received sample in the last-sample
+property.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">the new enable-last-sample value.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_bitrate"
+ c:identifier="gst_base_sink_set_max_bitrate"
+ version="1.2">
+ <doc xml:space="preserve">Set the maximum amount of bits per second that the sink will render.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="max_bitrate" transfer-ownership="none">
+ <doc xml:space="preserve">the max_bitrate in bits per second</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_lateness"
+ c:identifier="gst_base_sink_set_max_lateness">
+ <doc xml:space="preserve">Sets the new max lateness value to @max_lateness. This value is
+used to decide if a buffer should be dropped or not based on the
+buffer timestamp and the current clock time. A value of -1 means
+an unlimited time.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="max_lateness" transfer-ownership="none">
+ <doc xml:space="preserve">the new max lateness value.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_enabled"
+ c:identifier="gst_base_sink_set_qos_enabled">
+ <doc xml:space="preserve">Configures @sink to send Quality-of-Service events upstream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">the new qos value.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_render_delay"
+ c:identifier="gst_base_sink_set_render_delay">
+ <doc xml:space="preserve">Set the render delay in @sink to @delay. The render delay is the time
+between actual rendering of a buffer and its synchronisation time. Some
+devices might delay media rendering which can be compensated for with this
+function.
+
+After calling this function, this sink will report additional latency and
+other sinks will adjust their latency to delay the rendering of their media.
+
+This function is usually called by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="delay" transfer-ownership="none">
+ <doc xml:space="preserve">the new delay</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_sync" c:identifier="gst_base_sink_set_sync">
+ <doc xml:space="preserve">Configures @sink to synchronize on the clock or not. When
+@sync is %FALSE, incoming samples will be played as fast as
+possible. If @sync is %TRUE, the timestamps of the incoming
+buffers will be used to schedule the exact render time of its
+contents.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="sync" transfer-ownership="none">
+ <doc xml:space="preserve">the new sync value.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_throttle_time"
+ c:identifier="gst_base_sink_set_throttle_time">
+ <doc xml:space="preserve">Set the time that will be inserted between rendered buffers. This
+can be used to control the maximum buffers per second that the sink
+will render.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="throttle" transfer-ownership="none">
+ <doc xml:space="preserve">the throttle time in nanoseconds</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ts_offset" c:identifier="gst_base_sink_set_ts_offset">
+ <doc xml:space="preserve">Adjust the synchronisation of @sink with @offset. A negative value will
+render buffers earlier than their timestamp. A positive value will delay
+rendering. This function can be used to fix playback of badly timestamped
+buffers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the new offset</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait" c:identifier="gst_base_sink_wait">
+ <doc xml:space="preserve">This function will wait for preroll to complete and will then block until @time
+is reached. It is usually called by subclasses that use their own internal
+synchronisation but want to let some synchronization (like EOS) be handled
+by the base class.
+
+This function should only be called with the PREROLL_LOCK held (like when
+receiving an EOS event in the ::event vmethod or when handling buffers in
+::render).
+
+The @time argument should be the running_time of when the timeout should happen
+and will be adjusted with any latency and offset configured in the sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time to be reached</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="jitter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait_clock" c:identifier="gst_base_sink_wait_clock">
+ <doc xml:space="preserve">This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation.
+
+If @time is not valid, no synchronisation is done and %GST_CLOCK_BADTIME is
+returned. Likewise, if synchronisation is disabled in the element or there
+is no clock, no synchronisation is done and %GST_CLOCK_BADTIME is returned.
+
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
+receiving a buffer in
+the #GstBaseSinkClass.render() vmethod.
+
+The @time argument should be the running_time of when this method should
+return and is not adjusted with any latency or offset configured in the
+sink.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GstClockReturn</doc>
+ <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time to be reached</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="jitter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait_preroll" c:identifier="gst_base_sink_wait_preroll">
+ <doc xml:space="preserve">If the #GstBaseSinkClass.render() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to render the remaining data.
+
+If the #GstBaseSinkClass.render() method can block on something else than
+the clock, it must also be ready to unblock immediately on
+the #GstBaseSinkClass.unlock() method and cause the
+#GstBaseSinkClass.render() method to immediately call this function.
+In this case, the subclass must be prepared to continue rendering where it
+left off if this function returns %GST_FLOW_OK.
+
+This function will block until a state change to PLAYING happens (in which
+case this function returns %GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns %GST_FLOW_FLUSHING).
+
+This function should only be called with the PREROLL_LOCK held, like in the
+render function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
+continue. Any other return value should be returned from the render vmethod.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="sink" transfer-ownership="none">
+ <doc xml:space="preserve">the sink</doc>
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="async" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">If set to %TRUE, the basesink will perform asynchronous state changes.
+When set to %FALSE, the sink will not signal the parent when it prerolls.
+Use this option when dealing with sparse streams or when synchronisation is
+not required.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="blocksize" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The amount of bytes to pull when operating in pull mode.</doc>
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="enable-last-sample"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Enable the last-sample property. If %FALSE, basesink doesn't keep a
+reference to the last buffer arrived and the last-sample property is always
+set to %NULL. This can be useful if you need buffers to be released as soon
+as possible, eg. if you're using a buffer pool.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="last-sample" transfer-ownership="none">
+ <doc xml:space="preserve">The last buffer that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails. This property
+can be %NULL when the sink has not yet received a buffer.</doc>
+ <type name="Gst.Sample"/>
+ </property>
+ <property name="max-bitrate"
+ version="1.2"
+ writable="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Control the maximum amount of bits that will be rendered per second.
+Setting this property to a value bigger than 0 will make the sink delay
+rendering of the buffers when it would exceed to max-bitrate.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="max-lateness" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="qos" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="render-delay" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The additional delay between synchronisation and actual rendering of the
+media. This property will add additional latency to the device in order to
+make other sinks compensate for the delay.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="sync" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="throttle-time" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">The time to insert between buffers. This property can be used to control
+the maximum amount of buffers per second to render. Setting this property
+to a value bigger than 0 will make the sink create THROTTLE QoS events.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="ts-offset" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Controls the final synchronisation, a negative value will render the buffer
+earlier while a positive value delays playback. This property can be
+used to fix synchronisation in bad files.</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="pad_mode">
+ <type name="Gst.PadMode" c:type="GstPadMode"/>
+ </field>
+ <field name="offset">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="can_activate_pull">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="can_activate_push">
+ <type name="gboolean" c:type="gboolean"/>
+ </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="eos">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="need_preroll">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="have_preroll">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="playing_async">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="have_newsegment">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="clock_id" readable="0" private="1">
+ <type name="Gst.ClockID" c:type="GstClockID"/>
+ </field>
+ <field name="sync" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="flushing" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="running" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="max_lateness" readable="0" private="1">
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseSinkClass"
+ c:type="GstBaseSinkClass"
+ glib:is-gtype-struct-for="BaseSink">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @render method should be overridden to
+output/present buffers.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Element parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="get_caps">
+ <callback name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_caps">
+ <callback name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fixate">
+ <callback name="fixate">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="activate_pull">
+ <callback name="activate_pull">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_times">
+ <callback name="get_times">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="end" transfer-ownership="none">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unlock">
+ <callback name="unlock">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unlock_stop">
+ <callback name="unlock_stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="query">
+ <callback name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="event">
+ <callback name="event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="wait_event">
+ <callback name="wait_event">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare">
+ <callback name="prepare">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare_list">
+ <callback name="prepare_list">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="preroll">
+ <callback name="preroll">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="render">
+ <callback name="render">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="render_list">
+ <callback name="render_list">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="sink" transfer-ownership="none">
+ <type name="BaseSink" c:type="GstBaseSink*"/>
+ </parameter>
+ <parameter name="buffer_list" transfer-ownership="none">
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate" disguised="1">
+ </record>
+ <class name="BaseSrc"
+ c:symbol-prefix="base_src"
+ c:type="GstBaseSrc"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstBaseSrc"
+ glib:get-type="gst_base_src_get_type"
+ glib:type-struct="BaseSrcClass">
+ <doc xml:space="preserve">This is a generic base class for source elements. The following
+types of sources are supported:
+
+ * random access sources like files
+ * seekable sources
+ * live sources
+
+The source can be configured to operate in any #GstFormat with the
+gst_base_src_set_format() method. The currently set format determines
+the format of the internal #GstSegment and any %GST_EVENT_SEGMENT
+events. The default format for #GstBaseSrc is %GST_FORMAT_BYTES.
+
+#GstBaseSrc always supports push mode scheduling. If the following
+conditions are met, it also supports pull mode scheduling:
+
+ * The format is set to %GST_FORMAT_BYTES (default).
+ * #GstBaseSrcClass.is_seekable() returns %TRUE.
+
+If all the conditions are met for operating in pull mode, #GstBaseSrc is
+automatically seekable in push mode as well. The following conditions must
+be met to make the element seekable in push mode when the format is not
+%GST_FORMAT_BYTES:
+
+* #GstBaseSrcClass.is_seekable() returns %TRUE.
+* #GstBaseSrcClass.query() can convert all supported seek formats to the
+ internal format as set with gst_base_src_set_format().
+* #GstBaseSrcClass.do_seek() is implemented, performs the seek and returns
+ %TRUE.
+
+When the element does not meet the requirements to operate in pull mode, the
+offset and length in the #GstBaseSrcClass.create() method should be ignored.
+It is recommended to subclass #GstPushSrc instead, in this situation. If the
+element can operate in pull mode but only with specific offsets and
+lengths, it is allowed to generate an error when the wrong values are passed
+to the #GstBaseSrcClass.create() function.
+
+#GstBaseSrc has support for live sources. Live sources are sources that when
+paused discard data, such as audio or video capture devices. A typical live
+source also produces data at a fixed rate and thus provides a clock to publish
+this rate.
+Use gst_base_src_set_live() to activate the live source mode.
+
+A live source does not produce data in the PAUSED state. This means that the
+#GstBaseSrcClass.create() method will not be called in PAUSED but only in
+PLAYING. To signal the pipeline that the element will not produce data, the
+return value from the READY to PAUSED state will be
+%GST_STATE_CHANGE_NO_PREROLL.
+
+A typical live source will timestamp the buffers it creates with the
+current running time of the pipeline. This is one reason why a live source
+can only produce data in the PLAYING state, when the clock is actually
+distributed and running.
+
+Live sources that synchronize and block on the clock (an audio source, for
+example) can use gst_base_src_wait_playing() when the
+#GstBaseSrcClass.create() function was interrupted by a state change to
+PAUSED.
+
+The #GstBaseSrcClass.get_times() method can be used to implement pseudo-live
+sources. It only makes sense to implement the #GstBaseSrcClass.get_times()
+function if the source is a live source. The #GstBaseSrcClass.get_times()
+function should return timestamps starting from 0, as if it were a non-live
+source. The base class will make sure that the timestamps are transformed
+into the current running_time. The base source will then wait for the
+calculated running_time before pushing out the buffer.
+
+For live sources, the base class will by default report a latency of 0.
+For pseudo live sources, the base class will by default measure the difference
+between the first buffer timestamp and the start time of get_times and will
+report this value as the latency.
+Subclasses should override the query function when this behaviour is not
+acceptable.
+
+There is only support in #GstBaseSrc for exactly one source pad, which
+should be named "src". A source implementation (subclass of #GstBaseSrc)
+should install a pad template in its class_init function, like so:
+|[&lt;!-- language="C" --&gt;
+static void
+my_element_class_init (GstMyElementClass *klass)
+{
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+ // srctemplate should be a #GstStaticPadTemplate with direction
+ // %GST_PAD_SRC and name "src"
+ gst_element_class_add_static_pad_template (gstelement_class, &amp;amp;srctemplate);
+
+ gst_element_class_set_static_metadata (gstelement_class,
+ "Source name",
+ "Source",
+ "My Source element",
+ "The author &lt;my.sink@my.email&gt;");
+}
+]|
+
+## Controlled shutdown of live sources in applications
+
+Applications that record from a live source may want to stop recording
+in a controlled way, so that the recording is stopped, but the data
+already in the pipeline is processed to the end (remember that many live
+sources would go on recording forever otherwise). For that to happen the
+application needs to make the source stop recording and send an EOS
+event down the pipeline. The application would then wait for an
+EOS message posted on the pipeline's bus to know when all data has
+been processed and the pipeline can safely be stopped.
+
+An application may send an EOS event to a source element to make it
+perform the EOS logic (send EOS event downstream or post a
+%GST_MESSAGE_SEGMENT_DONE on the bus). This can typically be done
+with the gst_element_send_event() function on the element or its parent bin.
+
+After the EOS has been sent to the element, the application should wait for
+an EOS message to be posted on the pipeline's bus. Once this EOS message is
+received, it may safely shut down the entire pipeline.</doc>
+ <virtual-method name="alloc">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create">
+ <doc xml:space="preserve">Ask the subclass to create a buffer with @offset and @size, the default
+implementation will call alloc and fill.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="do_seek">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <type name="Gst.Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fill">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fixate">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_times">
+ <doc xml:space="preserve">Given @buffer, return @start and @end time when it should be pushed
+out. The base class will sync on the clock using these times.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="end"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="is_seekable">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiate">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare_seek_segment">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="seek" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <type name="Gst.Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_caps" invoker="set_caps">
+ <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps could be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unlock">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="unlock_stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_allocator" c:identifier="gst_base_src_get_allocator">
+ <doc xml:space="preserve">Lets #GstBaseSrc sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after usage.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocationParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_blocksize" c:identifier="gst_base_src_get_blocksize">
+ <doc xml:space="preserve">Get the number of bytes that @src will push out with each buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes pushed with each buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_pool"
+ c:identifier="gst_base_src_get_buffer_pool">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the instance of the #GstBufferPool used
+by the src; unref it after usage.</doc>
+ <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_do_timestamp"
+ c:identifier="gst_base_src_get_do_timestamp">
+ <doc xml:space="preserve">Query if @src timestamps outgoing buffers based on the current running_time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the base class will automatically timestamp outgoing buffers.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_async" c:identifier="gst_base_src_is_async">
+ <doc xml:space="preserve">Get the current async behaviour of @src. See also gst_base_src_set_async().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @src is operating in async mode.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_live" c:identifier="gst_base_src_is_live">
+ <doc xml:space="preserve">Check if an element is in live mode.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if element is in live mode.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="new_seamless_segment"
+ c:identifier="gst_base_src_new_seamless_segment">
+ <doc xml:space="preserve">Prepare a new seamless segment for emission downstream. This function must
+only be called by derived sub-classes, and only from the create() function,
+as the stream-lock needs to be held.
+
+The format for the new segment will be the current format of the source, as
+configured with gst_base_src_set_format()</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if preparation of the seamless segment succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">The source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">The new start value for the segment</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">Stop value for the new segment</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">The new time value for the start of the new segment</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_latency" c:identifier="gst_base_src_query_latency">
+ <doc xml:space="preserve">Query the source for the latency parameters. @live will be %TRUE when @src is
+configured as a live source. @min_latency and @max_latency will be set
+to the difference between the running time and the timestamp of the first
+buffer.
+
+This function is mostly used by subclasses.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="live"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">if the source is live</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="min_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the min latency of the source</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the max latency of the source</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_async" c:identifier="gst_base_src_set_async">
+ <doc xml:space="preserve">Configure async behaviour in @src, no state change will block. The open,
+close, start, stop, play and pause virtual methods will be executed in a
+different thread and are thus allowed to perform blocking operations. Any
+blocking operation should be unblocked with the unlock vmethod.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="async" transfer-ownership="none">
+ <doc xml:space="preserve">new async mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_automatic_eos"
+ c:identifier="gst_base_src_set_automatic_eos"
+ version="1.4">
+ <doc xml:space="preserve">If @automatic_eos is %TRUE, @src will automatically go EOS if a buffer
+after the total size is returned. By default this is %TRUE but sources
+that can't return an authoritative size and only know that they're EOS
+when trying to read more should set this to %FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="automatic_eos" transfer-ownership="none">
+ <doc xml:space="preserve">automatic eos</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_blocksize" c:identifier="gst_base_src_set_blocksize">
+ <doc xml:space="preserve">Set the number of bytes that @src will push out with each buffer. When
+@blocksize is set to -1, a default length will be used.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="blocksize" transfer-ownership="none">
+ <doc xml:space="preserve">the new blocksize in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_caps" c:identifier="gst_base_src_set_caps">
+ <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps could be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_do_timestamp"
+ c:identifier="gst_base_src_set_do_timestamp">
+ <doc xml:space="preserve">Configure @src to automatically timestamp outgoing buffers based on the
+current running_time of the pipeline. This property is mostly useful for live
+sources.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the source</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">enable or disable timestamping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_dynamic_size"
+ c:identifier="gst_base_src_set_dynamic_size">
+ <doc xml:space="preserve">If not @dynamic, size is only updated when needed, such as when trying to
+read past current tracked size. Otherwise, size is checked for upon each
+read.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="dynamic" transfer-ownership="none">
+ <doc xml:space="preserve">new dynamic size mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_format" c:identifier="gst_base_src_set_format">
+ <doc xml:space="preserve">Sets the default format of the source. This will be the format used
+for sending SEGMENT events and for performing seeks.
+
+If a format of GST_FORMAT_BYTES is set, the element will be able to
+operate in pull mode if the #GstBaseSrcClass.is_seekable() returns %TRUE.
+
+This function must only be called in states &lt; %GST_STATE_PAUSED.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format to use</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_live" c:identifier="gst_base_src_set_live">
+ <doc xml:space="preserve">If the element listens to a live source, @live should
+be set to %TRUE.
+
+A live source will not produce data in the PAUSED state and
+will therefore not be able to participate in the PREROLL phase
+of a pipeline. To signal this fact to the application and the
+pipeline, the state change return value of the live source will
+be GST_STATE_CHANGE_NO_PREROLL.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="live" transfer-ownership="none">
+ <doc xml:space="preserve">new live-mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start_complete" c:identifier="gst_base_src_start_complete">
+ <doc xml:space="preserve">Complete an asynchronous start operation. When the subclass overrides the
+start method, it should call gst_base_src_start_complete() when the start
+operation completes either from the same thread or from an asynchronous
+helper thread.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="basesrc" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start_wait" c:identifier="gst_base_src_start_wait">
+ <doc xml:space="preserve">Wait until the start operation completes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="basesrc" transfer-ownership="none">
+ <doc xml:space="preserve">base source instance</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="submit_buffer_list"
+ c:identifier="gst_base_src_submit_buffer_list"
+ version="1.14">
+ <doc xml:space="preserve">Subclasses can call this from their create virtual method implementation
+to submit a buffer list to be pushed out later. This is useful in
+cases where the create function wants to produce multiple buffers to be
+pushed out in one go in form of a #GstBufferList, which can reduce overhead
+drastically, especially for packetised inputs (for data streams where
+the packetisation/chunking is not important it is usually more efficient
+to return larger buffers instead).
+
+Subclasses that use this function from their create function must return
+%GST_FLOW_OK and no buffer from their create virtual method implementation.
+If a buffer is returned after a buffer list has also been submitted via this
+function the behaviour is undefined.
+
+Subclasses must only call this function once per create function call and
+subclasses must only call this function when the source operates in push
+mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ <parameter name="buffer_list" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="wait_playing" c:identifier="gst_base_src_wait_playing">
+ <doc xml:space="preserve">If the #GstBaseSrcClass.create() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to produce the remaining data.
+
+This function will block until a state change to PLAYING happens (in which
+case this function returns %GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns %GST_FLOW_FLUSHING).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if @src is PLAYING and processing can
+continue. Any other return value should be returned from the create vmethod.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the src</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="blocksize" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="do-timestamp" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="num-buffers" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="typefind" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="live_lock">
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="live_cond">
+ <type name="GLib.Cond" c:type="GCond"/>
+ </field>
+ <field name="is_live">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="live_running">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="blocksize">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="can_activate_push">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="random_access">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="clock_id">
+ <type name="Gst.ClockID" c:type="GstClockID"/>
+ </field>
+ <field name="segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="need_newsegment">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="num_buffers">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="num_buffers_left">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="typefind">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="running">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="pending_seek">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </field>
+ <field name="priv">
+ <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseSrcClass"
+ c:type="GstBaseSrcClass"
+ glib:is-gtype-struct-for="BaseSrc">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @create method should be overridden to produce
+buffers.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Element parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="get_caps">
+ <callback name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiate">
+ <callback name="negotiate">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fixate">
+ <callback name="fixate">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_caps">
+ <callback name="set_caps">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps could be set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseSrc</doc>
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_times">
+ <callback name="get_times">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="end"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_size">
+ <callback name="get_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="is_seekable">
+ <callback name="is_seekable">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare_seek_segment">
+ <callback name="prepare_seek_segment">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="seek" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <type name="Gst.Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="do_seek">
+ <callback name="do_seek">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="segment" transfer-ownership="none">
+ <type name="Gst.Segment" c:type="GstSegment*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unlock">
+ <callback name="unlock">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unlock_stop">
+ <callback name="unlock_stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="query">
+ <callback name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="event">
+ <callback name="event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="create">
+ <callback name="create">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="alloc">
+ <callback name="alloc">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fill">
+ <callback name="fill">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="BaseSrc" c:type="GstBaseSrc*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="BaseSrcFlags" c:type="GstBaseSrcFlags">
+ <doc xml:space="preserve">The #GstElement flags that a basesrc element may have.</doc>
+ <member name="starting"
+ value="16384"
+ c:identifier="GST_BASE_SRC_FLAG_STARTING">
+ <doc xml:space="preserve">has source is starting</doc>
+ </member>
+ <member name="started"
+ value="32768"
+ c:identifier="GST_BASE_SRC_FLAG_STARTED">
+ <doc xml:space="preserve">has source been started</doc>
+ </member>
+ <member name="last"
+ value="1048576"
+ c:identifier="GST_BASE_SRC_FLAG_LAST">
+ <doc xml:space="preserve">offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate" disguised="1">
+ </record>
+ <class name="BaseTransform"
+ c:symbol-prefix="base_transform"
+ c:type="GstBaseTransform"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstBaseTransform"
+ glib:get-type="gst_base_transform_get_type"
+ glib:type-struct="BaseTransformClass">
+ <doc xml:space="preserve">This base class is for filter elements that process data. Elements
+that are suitable for implementation using #GstBaseTransform are ones
+where the size and caps of the output is known entirely from the input
+caps and buffer sizes. These include elements that directly transform
+one buffer into another, modify the contents of a buffer in-place, as
+well as elements that collate multiple input buffers into one output buffer,
+or that expand one input buffer into multiple output buffers. See below
+for more concrete use cases.
+
+It provides for:
+
+* one sinkpad and one srcpad
+* Possible formats on sink and source pad implemented
+ with custom transform_caps function. By default uses
+ same format on sink and source.
+
+* Handles state changes
+* Does flushing
+* Push mode
+* Pull mode if the sub-class transform can operate on arbitrary data
+
+# Use Cases
+
+## Passthrough mode
+
+ * Element has no interest in modifying the buffer. It may want to inspect it,
+ in which case the element should have a transform_ip function. If there
+ is no transform_ip function in passthrough mode, the buffer is pushed
+ intact.
+
+ * The #GstBaseTransformClass.passthrough_on_same_caps variable
+ will automatically set/unset passthrough based on whether the
+ element negotiates the same caps on both pads.
+
+ * #GstBaseTransformClass.passthrough_on_same_caps on an element that
+ doesn't implement a transform_caps function is useful for elements that
+ only inspect data (such as level)
+
+ * Example elements
+
+ * Level
+ * Videoscale, audioconvert, videoconvert, audioresample in certain modes.
+
+## Modifications in-place - input buffer and output buffer are the same thing.
+
+* The element must implement a transform_ip function.
+* Output buffer size must &lt;= input buffer size
+* If the always_in_place flag is set, non-writable buffers will be copied
+ and passed to the transform_ip function, otherwise a new buffer will be
+ created and the transform function called.
+
+* Incoming writable buffers will be passed to the transform_ip function
+ immediately.
+* only implementing transform_ip and not transform implies always_in_place = %TRUE
+
+ * Example elements:
+ * Volume
+ * Audioconvert in certain modes (signed/unsigned conversion)
+ * videoconvert in certain modes (endianness swapping)
+
+## Modifications only to the caps/metadata of a buffer
+
+* The element does not require writable data, but non-writable buffers
+ should be subbuffered so that the meta-information can be replaced.
+
+* Elements wishing to operate in this mode should replace the
+ prepare_output_buffer method to create subbuffers of the input buffer
+ and set always_in_place to %TRUE
+
+* Example elements
+ * Capsfilter when setting caps on outgoing buffers that have
+ none.
+ * identity when it is going to re-timestamp buffers by
+ datarate.
+
+## Normal mode
+ * always_in_place flag is not set, or there is no transform_ip function
+ * Element will receive an input buffer and output buffer to operate on.
+ * Output buffer is allocated by calling the prepare_output_buffer function.
+ * Example elements:
+ * Videoscale, videoconvert, audioconvert when doing
+ scaling/conversions
+
+## Special output buffer allocations
+ * Elements which need to do special allocation of their output buffers
+ beyond allocating output buffers via the negotiated allocator or
+ buffer pool should implement the prepare_output_buffer method.
+
+ * Example elements:
+ * efence
+
+# Sub-class settable flags on GstBaseTransform
+
+* passthrough
+
+ * Implies that in the current configuration, the sub-class is not interested in modifying the buffers.
+ * Elements which are always in passthrough mode whenever the same caps has been negotiated on both pads can set the class variable passthrough_on_same_caps to have this behaviour automatically.
+
+* always_in_place
+ * Determines whether a non-writable buffer will be copied before passing
+ to the transform_ip function.
+
+ * Implied %TRUE if no transform function is implemented.
+ * Implied %FALSE if ONLY transform function is implemented.</doc>
+ <virtual-method name="accept_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="before_transform">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="copy_metadata">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="filter_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="api" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="params" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fixate_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="othercaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="generate_output">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="outbuf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_unit_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="prepare_output_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="decide_query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="incaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="outcaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="submit_input_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="is_discont" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_ip">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="othercaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="othersize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_allocator"
+ c:identifier="gst_base_transform_get_allocator">
+ <doc xml:space="preserve">Lets #GstBaseTransform sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocationParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_pool"
+ c:identifier="gst_base_transform_get_buffer_pool">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the instance of the #GstBufferPool used
+by @trans; free it after use it</doc>
+ <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_in_place" c:identifier="gst_base_transform_is_in_place">
+ <doc xml:space="preserve">See if @trans is configured as a in_place transform.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the transform is configured in in_place mode.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBaseTransform to query</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_passthrough"
+ c:identifier="gst_base_transform_is_passthrough">
+ <doc xml:space="preserve">See if @trans is configured as a passthrough transform.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE is the transform is configured in passthrough mode.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBaseTransform to query</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_qos_enabled"
+ c:identifier="gst_base_transform_is_qos_enabled">
+ <doc xml:space="preserve">Queries if the transform will handle QoS.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if QoS is enabled.
+
+MT safe.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reconfigure_sink"
+ c:identifier="gst_base_transform_reconfigure_sink">
+ <doc xml:space="preserve">Instructs @trans to request renegotiation upstream. This function is
+typically called after properties on the transform were set that
+influence the input format.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reconfigure_src"
+ c:identifier="gst_base_transform_reconfigure_src">
+ <doc xml:space="preserve">Instructs @trans to renegotiate a new downstream transform on the next
+buffer. This function is typically called after properties on the transform
+were set that influence the output format.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_gap_aware"
+ c:identifier="gst_base_transform_set_gap_aware">
+ <doc xml:space="preserve">If @gap_aware is %FALSE (the default), output buffers will have the
+%GST_BUFFER_FLAG_GAP flag unset.
+
+If set to %TRUE, the element must handle output buffers with this flag set
+correctly, i.e. it can assume that the buffer contains neutral data but must
+unset the flag if the output is no neutral data.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="gap_aware" transfer-ownership="none">
+ <doc xml:space="preserve">New state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_in_place"
+ c:identifier="gst_base_transform_set_in_place">
+ <doc xml:space="preserve">Determines whether a non-writable buffer will be copied before passing
+to the transform_ip function.
+
+ * Always %TRUE if no transform function is implemented.
+ * Always %FALSE if ONLY transform function is implemented.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBaseTransform to modify</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="in_place" transfer-ownership="none">
+ <doc xml:space="preserve">Boolean value indicating that we would like to operate
+on in_place buffers.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_passthrough"
+ c:identifier="gst_base_transform_set_passthrough">
+ <doc xml:space="preserve">Set passthrough mode for this filter by default. This is mostly
+useful for filters that do not care about negotiation.
+
+Always %TRUE for filters which don't implement either a transform
+or transform_ip method.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstBaseTransform to set</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="passthrough" transfer-ownership="none">
+ <doc xml:space="preserve">boolean indicating passthrough mode.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_prefer_passthrough"
+ c:identifier="gst_base_transform_set_prefer_passthrough"
+ version="1.0.1">
+ <doc xml:space="preserve">If @prefer_passthrough is %TRUE (the default), @trans will check and
+prefer passthrough caps from the list of caps returned by the
+transform_caps vmethod.
+
+If set to %FALSE, the element must order the caps returned from the
+transform_caps function in such a way that the preferred format is
+first in the list. This can be interesting for transforms that can do
+passthrough transforms but prefer to do something else, like a
+capsfilter.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="prefer_passthrough" transfer-ownership="none">
+ <doc xml:space="preserve">New state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_enabled"
+ c:identifier="gst_base_transform_set_qos_enabled">
+ <doc xml:space="preserve">Enable or disable QoS handling in the transform.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="update_qos" c:identifier="gst_base_transform_update_qos">
+ <doc xml:space="preserve">Set the QoS parameters in the transform. This function is called internally
+when a QOS event is received but subclasses can provide custom information
+when needed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="proportion" transfer-ownership="none">
+ <doc xml:space="preserve">the proportion</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="diff" transfer-ownership="none">
+ <doc xml:space="preserve">the diff against the clock</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the timestamp of the buffer generating the QoS expressed in
+running_time.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="update_src_caps"
+ c:identifier="gst_base_transform_update_src_caps"
+ version="1.6">
+ <doc xml:space="preserve">Updates the srcpad caps and send the caps downstream. This function
+can be used by subclasses when they have already negotiated their caps
+but found a change in them (or computed new informations). This way,
+they can notify downstream about that change without loosing any
+buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps could be send downstream %FALSE otherwise</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBaseTransform</doc>
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </instance-parameter>
+ <parameter name="updated_caps" transfer-ownership="none">
+ <doc xml:space="preserve">An updated version of the srcpad caps to be pushed
+downstream</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="qos" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="have_segment">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="queued_buf">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="BaseTransformClass"
+ c:type="GstBaseTransformClass"
+ glib:is-gtype-struct-for="BaseTransform">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum either @transform or @transform_ip need to be overridden.
+If the element can overwrite the input data with the results (data is of the
+same type and quantity) it should provide @transform_ip.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Element parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="passthrough_on_same_caps">
+ <doc xml:space="preserve">If set to %TRUE, passthrough mode will be
+ automatically enabled if the caps are the same.
+ Set to %FALSE by default.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="transform_ip_on_passthrough">
+ <doc xml:space="preserve">If set to %TRUE, @transform_ip will be called in
+ passthrough mode. The passed buffer might not be
+ writable. When %FALSE, neither @transform nor
+ @transform_ip will be called in passthrough mode.
+ Set to %TRUE by default.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="transform_caps">
+ <callback name="transform_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fixate_caps">
+ <callback name="fixate_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="othercaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="accept_caps">
+ <callback name="accept_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_caps">
+ <callback name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="incaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="outcaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="query">
+ <callback name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="filter_meta">
+ <callback name="filter_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="api" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="params" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="decide_query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_size">
+ <callback name="transform_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="direction" transfer-ownership="none">
+ <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="othercaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="othersize"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_unit_size">
+ <callback name="get_unit_size">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="prepare_output_buffer">
+ <callback name="prepare_output_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="copy_metadata">
+ <callback name="copy_metadata">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_meta">
+ <callback name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="before_transform">
+ <callback name="before_transform">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform">
+ <callback name="transform">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="inbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_ip">
+ <callback name="transform_ip">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="submit_input_buffer">
+ <callback name="submit_input_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="is_discont" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="input" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="generate_output">
+ <callback name="generate_output">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="BaseTransform" c:type="GstBaseTransform*"/>
+ </parameter>
+ <parameter name="outbuf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="BaseTransformPrivate"
+ c:type="GstBaseTransformPrivate"
+ disguised="1">
+ </record>
+ <record name="BitReader" c:type="GstBitReader">
+ <doc xml:space="preserve">#GstBitReader provides a bit reader that can read any number of bits
+from a memory buffer. It provides functions for reading any number of bits
+into 8, 16, 32 and 64 bit variables.</doc>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">Data from which the bit reader will
+ read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="byte" writable="1">
+ <doc xml:space="preserve">Current byte position</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="bit" writable="1">
+ <doc xml:space="preserve">Bit position in the current byte</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="free" c:identifier="gst_bit_reader_free">
+ <doc xml:space="preserve">Frees a #GstBitReader instance, which was previously allocated by
+gst_bit_reader_new().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_bits_uint16"
+ c:identifier="gst_bit_reader_get_bits_uint16">
+ <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bits_uint32"
+ c:identifier="gst_bit_reader_get_bits_uint32">
+ <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bits_uint64"
+ c:identifier="gst_bit_reader_get_bits_uint64">
+ <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bits_uint8"
+ c:identifier="gst_bit_reader_get_bits_uint8">
+ <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pos" c:identifier="gst_bit_reader_get_pos">
+ <doc xml:space="preserve">Returns the current position of a #GstBitReader instance in bits.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current position of @reader in bits.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_remaining" c:identifier="gst_bit_reader_get_remaining">
+ <doc xml:space="preserve">Returns the remaining number of bits of a #GstBitReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The remaining number of bits of @reader instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_size" c:identifier="gst_bit_reader_get_size">
+ <doc xml:space="preserve">Returns the total number of bits of a #GstBitReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total number of bits of @reader instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_bit_reader_init">
+ <doc xml:space="preserve">Initializes a #GstBitReader instance to read from @data. This function
+can be called on already initialized instances.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data from which the bit reader should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_bits_uint16"
+ c:identifier="gst_bit_reader_peek_bits_uint16">
+ <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_bits_uint32"
+ c:identifier="gst_bit_reader_peek_bits_uint32">
+ <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_bits_uint64"
+ c:identifier="gst_bit_reader_peek_bits_uint64">
+ <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_bits_uint8"
+ c:identifier="gst_bit_reader_peek_bits_uint8">
+ <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="const GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">number of bits to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_pos" c:identifier="gst_bit_reader_set_pos">
+ <doc xml:space="preserve">Sets the new position of a #GstBitReader instance to @pos in bits.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
+otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="pos" transfer-ownership="none">
+ <doc xml:space="preserve">The new position in bits</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="skip" c:identifier="gst_bit_reader_skip">
+ <doc xml:space="preserve">Skips @nbits bits of the #GstBitReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @nbits bits could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ <parameter name="nbits" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bits to skip</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="skip_to_byte" c:identifier="gst_bit_reader_skip_to_byte">
+ <doc xml:space="preserve">Skips until the next byte.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_bit_reader_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
+
+Free-function: gst_bit_reader_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Data from which the #GstBitReader
+ should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="ByteReader" c:type="GstByteReader">
+ <doc xml:space="preserve">#GstByteReader provides a byte reader that can read different integer and
+floating point types from a memory buffer. It provides functions for reading
+signed/unsigned, little/big endian integers of 8, 16, 24, 32 and 64 bits
+and functions for reading little/big endian floating points numbers of
+32 and 64 bits. It also provides functions to read NUL-terminated strings
+in various character encodings.</doc>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">Data from which the bit reader will
+ read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="byte" writable="1">
+ <doc xml:space="preserve">Current byte position</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="dup_data" c:identifier="gst_byte_reader_dup_data">
+ <doc xml:space="preserve">Free-function: g_free
+
+Returns a newly-allocated copy of the current data
+position if at least @size bytes are left and
+updates the current position. Free with g_free() when no longer needed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Size in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a
+ #guint8 pointer variable in which to store the result</doc>
+ <array length="0" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dup_string_utf16"
+ c:identifier="gst_byte_reader_dup_string_utf16">
+ <doc xml:space="preserve">Free-function: g_free
+
+Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-16 string in the data (this could be an empty string
+as well), and advances the current position.
+
+No input checking for valid UTF-16 is done. This function is endianness
+agnostic - you should not assume the UTF-16 characters are in host
+endianness.
+
+This function will fail if no NUL-terminator was found in in the data.
+
+Note: there is no peek or get variant of this function to ensure correct
+byte alignment of the UTF-16 string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
+ string put into @str must be freed with g_free() when no longer needed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="str"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a
+ #guint16 pointer variable in which to store the result</doc>
+ <array c:type="guint16**">
+ <type name="guint16" c:type="guint16*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dup_string_utf32"
+ c:identifier="gst_byte_reader_dup_string_utf32">
+ <doc xml:space="preserve">Free-function: g_free
+
+Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-32 string in the data (this could be an empty string
+as well), and advances the current position.
+
+No input checking for valid UTF-32 is done. This function is endianness
+agnostic - you should not assume the UTF-32 characters are in host
+endianness.
+
+This function will fail if no NUL-terminator was found in in the data.
+
+Note: there is no peek or get variant of this function to ensure correct
+byte alignment of the UTF-32 string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
+ string put into @str must be freed with g_free() when no longer needed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="str"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a
+ #guint32 pointer variable in which to store the result</doc>
+ <array c:type="guint32**">
+ <type name="guint32" c:type="guint32*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dup_string_utf8"
+ c:identifier="gst_byte_reader_dup_string_utf8">
+ <doc xml:space="preserve">Free-function: g_free
+
+FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be read into @str, %FALSE otherwise. The
+ string put into @str must be freed with g_free() when no longer needed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="str"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of a
+ #gchar pointer variable in which to store the result</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_byte_reader_free">
+ <doc xml:space="preserve">Frees a #GstByteReader instance, which was previously allocated by
+gst_byte_reader_new().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_data" c:identifier="gst_byte_reader_get_data">
+ <doc xml:space="preserve">Returns a constant pointer to the current data
+position if at least @size bytes are left and
+updates the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Size in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">address of a
+ #guint8 pointer variable in which to store the result</doc>
+ <array length="0" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float32_be"
+ c:identifier="gst_byte_reader_get_float32_be">
+ <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float32_le"
+ c:identifier="gst_byte_reader_get_float32_le">
+ <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float64_be"
+ c:identifier="gst_byte_reader_get_float64_be">
+ <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_float64_le"
+ c:identifier="gst_byte_reader_get_float64_le">
+ <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int16_be" c:identifier="gst_byte_reader_get_int16_be">
+ <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
+ <type name="gint16" c:type="gint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int16_le" c:identifier="gst_byte_reader_get_int16_le">
+ <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
+ <type name="gint16" c:type="gint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int24_be" c:identifier="gst_byte_reader_get_int24_be">
+ <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int24_le" c:identifier="gst_byte_reader_get_int24_le">
+ <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int32_be" c:identifier="gst_byte_reader_get_int32_be">
+ <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int32_le" c:identifier="gst_byte_reader_get_int32_le">
+ <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64_be" c:identifier="gst_byte_reader_get_int64_be">
+ <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int64_le" c:identifier="gst_byte_reader_get_int64_le">
+ <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_int8" c:identifier="gst_byte_reader_get_int8">
+ <doc xml:space="preserve">Read a signed 8 bit integer into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
+ <type name="gint8" c:type="gint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pos" c:identifier="gst_byte_reader_get_pos">
+ <doc xml:space="preserve">Returns the current position of a #GstByteReader instance in bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current position of @reader in bytes.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_remaining"
+ c:identifier="gst_byte_reader_get_remaining">
+ <doc xml:space="preserve">Returns the remaining number of bytes of a #GstByteReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The remaining number of bytes of @reader instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_size" c:identifier="gst_byte_reader_get_size">
+ <doc xml:space="preserve">Returns the total number of bytes of a #GstByteReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total number of bytes of @reader instance.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_string_utf8"
+ c:identifier="gst_byte_reader_get_string_utf8">
+ <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator),
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+
+No input checking for valid UTF-8 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be found, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="str"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">address of a
+ #gchar pointer variable in which to store the result</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_sub_reader"
+ c:identifier="gst_byte_reader_get_sub_reader"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
+data from the current position of @reader. This is useful to read chunked
+formats and make sure that one doesn't read beyond the size of the sub-chunk.
+
+Unlike gst_byte_reader_peek_sub_reader(), this function also modifies the
+position of @reader and moves it forward by @size bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
+ the current position, and otherwise TRUE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="sub_reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of @sub_reader in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint16_be"
+ c:identifier="gst_byte_reader_get_uint16_be">
+ <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint16_le"
+ c:identifier="gst_byte_reader_get_uint16_le">
+ <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint24_be"
+ c:identifier="gst_byte_reader_get_uint24_be">
+ <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint24_le"
+ c:identifier="gst_byte_reader_get_uint24_le">
+ <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint32_be"
+ c:identifier="gst_byte_reader_get_uint32_be">
+ <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint32_le"
+ c:identifier="gst_byte_reader_get_uint32_le">
+ <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64_be"
+ c:identifier="gst_byte_reader_get_uint64_be">
+ <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint64_le"
+ c:identifier="gst_byte_reader_get_uint64_le">
+ <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
+and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uint8" c:identifier="gst_byte_reader_get_uint8">
+ <doc xml:space="preserve">Read an unsigned 8 bit integer into @val and update the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_byte_reader_init">
+ <doc xml:space="preserve">Initializes a #GstByteReader instance to read from @data. This function
+can be called on already initialized instances.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data from which
+ the #GstByteReader should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="masked_scan_uint32"
+ c:identifier="gst_byte_reader_masked_scan_uint32">
+ <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
+starting from offset @offset relative to the current position.
+
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness. All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.
+
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
+
+Example:
+|[
+// Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
+
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+]|</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="pattern" transfer-ownership="none">
+ <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset from which to start scanning, relative to the current
+ position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes to scan from offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="masked_scan_uint32_peek"
+ c:identifier="gst_byte_reader_masked_scan_uint32_peek"
+ version="1.6">
+ <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
+starting from offset @offset relative to the current position.
+
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness. All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.
+
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="mask" transfer-ownership="none">
+ <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="pattern" transfer-ownership="none">
+ <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset from which to start scanning, relative to the current
+ position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">number of bytes to scan from offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_data" c:identifier="gst_byte_reader_peek_data">
+ <doc xml:space="preserve">Returns a constant pointer to the current data
+position if at least @size bytes are left and
+keeps the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Size in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">address of a
+ #guint8 pointer variable in which to store the result</doc>
+ <array length="0" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_float32_be"
+ c:identifier="gst_byte_reader_peek_float32_be">
+ <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_float32_le"
+ c:identifier="gst_byte_reader_peek_float32_le">
+ <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_float64_be"
+ c:identifier="gst_byte_reader_peek_float64_be">
+ <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_float64_le"
+ c:identifier="gst_byte_reader_peek_float64_le">
+ <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int16_be"
+ c:identifier="gst_byte_reader_peek_int16_be">
+ <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
+ <type name="gint16" c:type="gint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int16_le"
+ c:identifier="gst_byte_reader_peek_int16_le">
+ <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
+ <type name="gint16" c:type="gint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int24_be"
+ c:identifier="gst_byte_reader_peek_int24_be">
+ <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int24_le"
+ c:identifier="gst_byte_reader_peek_int24_le">
+ <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int32_be"
+ c:identifier="gst_byte_reader_peek_int32_be">
+ <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int32_le"
+ c:identifier="gst_byte_reader_peek_int32_le">
+ <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int64_be"
+ c:identifier="gst_byte_reader_peek_int64_be">
+ <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int64_le"
+ c:identifier="gst_byte_reader_peek_int64_le">
+ <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_int8" c:identifier="gst_byte_reader_peek_int8">
+ <doc xml:space="preserve">Read a signed 8 bit integer into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
+ <type name="gint8" c:type="gint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_string_utf8"
+ c:identifier="gst_byte_reader_peek_string_utf8">
+ <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator).
+The current position will be maintained. This will work for any
+NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+
+No input checking for valid UTF-8 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="str"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">address of a
+ #gchar pointer variable in which to store the result</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_sub_reader"
+ c:identifier="gst_byte_reader_peek_sub_reader"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
+data from the current position of @reader. This is useful to read chunked
+formats and make sure that one doesn't read beyond the size of the sub-chunk.
+
+Unlike gst_byte_reader_get_sub_reader(), this function does not modify the
+current position of @reader.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
+ the current position, and otherwise TRUE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="sub_reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of @sub_reader in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint16_be"
+ c:identifier="gst_byte_reader_peek_uint16_be">
+ <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint16_le"
+ c:identifier="gst_byte_reader_peek_uint16_le">
+ <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint24_be"
+ c:identifier="gst_byte_reader_peek_uint24_be">
+ <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint24_le"
+ c:identifier="gst_byte_reader_peek_uint24_le">
+ <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint32_be"
+ c:identifier="gst_byte_reader_peek_uint32_be">
+ <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint32_le"
+ c:identifier="gst_byte_reader_peek_uint32_le">
+ <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint64_be"
+ c:identifier="gst_byte_reader_peek_uint64_be">
+ <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint64_le"
+ c:identifier="gst_byte_reader_peek_uint64_le">
+ <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
+but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek_uint8" c:identifier="gst_byte_reader_peek_uint8">
+ <doc xml:space="preserve">Read an unsigned 8 bit integer into @val but keep the current position.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="const GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="val"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_pos" c:identifier="gst_byte_reader_set_pos">
+ <doc xml:space="preserve">Sets the new position of a #GstByteReader instance to @pos in bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
+otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="pos" transfer-ownership="none">
+ <doc xml:space="preserve">The new position in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="skip" c:identifier="gst_byte_reader_skip">
+ <doc xml:space="preserve">Skips @nbytes bytes of the #GstByteReader instance.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @nbytes bytes could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ <parameter name="nbytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to skip</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="skip_string_utf16"
+ c:identifier="gst_byte_reader_skip_string_utf16">
+ <doc xml:space="preserve">Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+
+No input checking for valid UTF-16 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="skip_string_utf32"
+ c:identifier="gst_byte_reader_skip_string_utf32">
+ <doc xml:space="preserve">Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+
+No input checking for valid UTF-32 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="skip_string_utf8"
+ c:identifier="gst_byte_reader_skip_string_utf8">
+ <doc xml:space="preserve">Skips a NUL-terminated string in the #GstByteReader instance, advancing
+the current position to the byte after the string. This will work for
+any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+
+This function will fail if no NUL-terminator was found in in the data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="reader" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_byte_reader_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
+
+Free-function: gst_byte_reader_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data from which the
+ #GstByteReader should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="ByteWriter" c:type="GstByteWriter">
+ <doc xml:space="preserve">#GstByteWriter provides a byte writer and reader that can write/read different
+integer and floating point types to/from a memory buffer. It provides functions
+for writing/reading signed/unsigned, little/big endian integers of 8, 16, 24,
+32 and 64 bits and functions for reading little/big endian floating points numbers of
+32 and 64 bits. It also provides functions to write/read NUL-terminated strings
+in various character encodings.</doc>
+ <field name="parent" writable="1">
+ <doc xml:space="preserve">#GstByteReader parent</doc>
+ <type name="ByteReader" c:type="GstByteReader"/>
+ </field>
+ <field name="alloc_size" writable="1">
+ <doc xml:space="preserve">Allocation size of the data</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="fixed" writable="1">
+ <doc xml:space="preserve">If %TRUE no reallocations are allowed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="owned" writable="1">
+ <doc xml:space="preserve">If %FALSE no reallocations are allowed and copies of data are returned</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="ensure_free_space"
+ c:identifier="gst_byte_writer_ensure_free_space">
+ <doc xml:space="preserve">Checks if enough free space from the current write cursor is
+available and reallocates if necessary.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if at least @size bytes are still available</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Number of bytes that should be available</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fill" c:identifier="gst_byte_writer_fill">
+ <doc xml:space="preserve">Writes @size bytes containing @value to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">Value to be written</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Number of bytes to be written</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_byte_writer_free">
+ <doc xml:space="preserve">Frees @writer and all memory allocated by it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="full">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free_and_get_buffer"
+ c:identifier="gst_byte_writer_free_and_get_buffer">
+ <doc xml:space="preserve">Frees @writer and all memory allocated by it except
+the current data, which is returned as #GstBuffer.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
+ after usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="full">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free_and_get_data"
+ c:identifier="gst_byte_writer_free_and_get_data">
+ <doc xml:space="preserve">Frees @writer and all memory allocated by it except
+the current data, which is returned.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the current data. g_free() after usage.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="full">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_remaining"
+ c:identifier="gst_byte_writer_get_remaining">
+ <doc xml:space="preserve">Returns the remaining size of data that can still be written. If
+-1 is returned the remaining size is only limited by system resources.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the remaining size of data that can still be written</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="const GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_byte_writer_init">
+ <doc xml:space="preserve">Initializes @writer to an empty instance</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init_with_data"
+ c:identifier="gst_byte_writer_init_with_data">
+ <doc xml:space="preserve">Initializes @writer with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Memory area for writing</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="initialized" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init_with_size"
+ c:identifier="gst_byte_writer_init_with_size">
+ <doc xml:space="preserve">Initializes @writer with the given initial data size.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fixed" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_buffer" c:identifier="gst_byte_writer_put_buffer">
+ <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the data could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">source #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset to copy from</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">total size to copy. If -1, all data is copied</doc>
+ <type name="gssize" c:type="gssize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_data" c:identifier="gst_byte_writer_put_data">
+ <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Data to write</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_float32_be"
+ c:identifier="gst_byte_writer_put_float32_be">
+ <doc xml:space="preserve">Writes a big endian 32 bit float to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_float32_le"
+ c:identifier="gst_byte_writer_put_float32_le">
+ <doc xml:space="preserve">Writes a little endian 32 bit float to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_float64_be"
+ c:identifier="gst_byte_writer_put_float64_be">
+ <doc xml:space="preserve">Writes a big endian 64 bit float to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_float64_le"
+ c:identifier="gst_byte_writer_put_float64_le">
+ <doc xml:space="preserve">Writes a little endian 64 bit float to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int16_be" c:identifier="gst_byte_writer_put_int16_be">
+ <doc xml:space="preserve">Writes a signed big endian 16 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint16" c:type="gint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int16_le" c:identifier="gst_byte_writer_put_int16_le">
+ <doc xml:space="preserve">Writes a signed little endian 16 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint16" c:type="gint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int24_be" c:identifier="gst_byte_writer_put_int24_be">
+ <doc xml:space="preserve">Writes a signed big endian 24 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int24_le" c:identifier="gst_byte_writer_put_int24_le">
+ <doc xml:space="preserve">Writes a signed little endian 24 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int32_be" c:identifier="gst_byte_writer_put_int32_be">
+ <doc xml:space="preserve">Writes a signed big endian 32 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int32_le" c:identifier="gst_byte_writer_put_int32_le">
+ <doc xml:space="preserve">Writes a signed little endian 32 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int64_be" c:identifier="gst_byte_writer_put_int64_be">
+ <doc xml:space="preserve">Writes a signed big endian 64 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int64_le" c:identifier="gst_byte_writer_put_int64_le">
+ <doc xml:space="preserve">Writes a signed little endian 64 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_int8" c:identifier="gst_byte_writer_put_int8">
+ <doc xml:space="preserve">Writes a signed 8 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_string_utf16"
+ c:identifier="gst_byte_writer_put_string_utf16">
+ <doc xml:space="preserve">Writes a NUL-terminated UTF16 string to @writer (including the terminator).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">UTF16 string to write</doc>
+ <array c:type="guint16*">
+ <type name="guint16" c:type="guint16"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_string_utf32"
+ c:identifier="gst_byte_writer_put_string_utf32">
+ <doc xml:space="preserve">Writes a NUL-terminated UTF32 string to @writer (including the terminator).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">UTF32 string to write</doc>
+ <array c:type="guint32*">
+ <type name="guint32" c:type="guint32"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_string_utf8"
+ c:identifier="gst_byte_writer_put_string_utf8">
+ <doc xml:space="preserve">Writes a NUL-terminated UTF8 string to @writer (including the terminator).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">UTF8 string to write</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint16_be"
+ c:identifier="gst_byte_writer_put_uint16_be">
+ <doc xml:space="preserve">Writes a unsigned big endian 16 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint16_le"
+ c:identifier="gst_byte_writer_put_uint16_le">
+ <doc xml:space="preserve">Writes a unsigned little endian 16 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint24_be"
+ c:identifier="gst_byte_writer_put_uint24_be">
+ <doc xml:space="preserve">Writes a unsigned big endian 24 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint24_le"
+ c:identifier="gst_byte_writer_put_uint24_le">
+ <doc xml:space="preserve">Writes a unsigned little endian 24 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint32_be"
+ c:identifier="gst_byte_writer_put_uint32_be">
+ <doc xml:space="preserve">Writes a unsigned big endian 32 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint32_le"
+ c:identifier="gst_byte_writer_put_uint32_le">
+ <doc xml:space="preserve">Writes a unsigned little endian 32 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint64_be"
+ c:identifier="gst_byte_writer_put_uint64_be">
+ <doc xml:space="preserve">Writes a unsigned big endian 64 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint64_le"
+ c:identifier="gst_byte_writer_put_uint64_le">
+ <doc xml:space="preserve">Writes a unsigned little endian 64 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="put_uint8" c:identifier="gst_byte_writer_put_uint8">
+ <doc xml:space="preserve">Writes a unsigned 8 bit integer to @writer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the value could be written</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">Value to write</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_byte_writer_reset">
+ <doc xml:space="preserve">Resets @writer and frees the data if it's
+owned by @writer.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset_and_get_buffer"
+ c:identifier="gst_byte_writer_reset_and_get_buffer">
+ <doc xml:space="preserve">Resets @writer and returns the current data as buffer.
+
+Free-function: gst_buffer_unref</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
+ after usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="reset_and_get_data"
+ c:identifier="gst_byte_writer_reset_and_get_data">
+ <doc xml:space="preserve">Resets @writer and returns the current data.
+
+Free-function: g_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the current data. g_free() after
+usage.</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="writer" transfer-ownership="none">
+ <doc xml:space="preserve">#GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_byte_writer_new"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ </function>
+ <function name="new_with_data"
+ c:identifier="gst_byte_writer_new_with_data"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning.
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Memory area for writing</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="initialized" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_with_size"
+ c:identifier="gst_byte_writer_new_with_size"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
+initial data size.
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fixed" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="CollectData" c:type="GstCollectData">
+ <doc xml:space="preserve">Structure used by the collect_pads.</doc>
+ <field name="collect" writable="1">
+ <doc xml:space="preserve">owner #GstCollectPads</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </field>
+ <field name="pad" writable="1">
+ <doc xml:space="preserve">#GstPad managed by this data</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">currently queued buffer.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="pos" writable="1">
+ <doc xml:space="preserve">position in the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="segment" writable="1">
+ <doc xml:space="preserve">last segment received.</doc>
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="state" readable="0" private="1">
+ <type name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="CollectDataPrivate" c:type="GstCollectDataPrivate*"/>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <record name="abi" c:type="abi">
+ <field name="dts" writable="1">
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ </record>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </union>
+ </record>
+ <callback name="CollectDataDestroyNotify"
+ c:type="GstCollectDataDestroyNotify">
+ <doc xml:space="preserve">A function that will be called when the #GstCollectData will be freed.
+It is passed the pointer to the structure and should free any custom
+memory and resources allocated for it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectData that will be freed</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="CollectDataPrivate"
+ c:type="GstCollectDataPrivate"
+ disguised="1">
+ </record>
+ <class name="CollectPads"
+ c:symbol-prefix="collect_pads"
+ c:type="GstCollectPads"
+ parent="Gst.Object"
+ glib:type-name="GstCollectPads"
+ glib:get-type="gst_collect_pads_get_type"
+ glib:type-struct="CollectPadsClass">
+ <doc xml:space="preserve">Manages a set of pads that operate in collect mode. This means that control
+is given to the manager of this object when all pads have data.
+
+ * Collectpads are created with gst_collect_pads_new(). A callback should then
+ be installed with gst_collect_pads_set_function ().
+
+ * Pads are added to the collection with gst_collect_pads_add_pad()/
+ gst_collect_pads_remove_pad(). The pad has to be a sinkpad. When added,
+ the chain, event and query functions of the pad are overridden. The
+ element_private of the pad is used to store private information for the
+ collectpads.
+
+ * For each pad, data is queued in the _chain function or by
+ performing a pull_range.
+
+ * When data is queued on all pads in waiting mode, the callback function is called.
+
+ * Data can be dequeued from the pad with the gst_collect_pads_pop() method.
+ One can peek at the data with the gst_collect_pads_peek() function.
+ These functions will return %NULL if the pad received an EOS event. When all
+ pads return %NULL from a gst_collect_pads_peek(), the element can emit an EOS
+ event itself.
+
+ * Data can also be dequeued in byte units using the gst_collect_pads_available(),
+ gst_collect_pads_read_buffer() and gst_collect_pads_flush() calls.
+
+ * Elements should call gst_collect_pads_start() and gst_collect_pads_stop() in
+ their state change functions to start and stop the processing of the collectpads.
+ The gst_collect_pads_stop() call should be called before calling the parent
+ element state change function in the PAUSED_TO_READY state change to ensure
+ no pad is blocked and the element can finish streaming.
+
+ * gst_collect_pads_set_waiting() sets a pad to waiting or non-waiting mode.
+ CollectPads element is not waiting for data to be collected on non-waiting pads.
+ Thus these pads may but need not have data when the callback is called.
+ All pads are in waiting mode by default.</doc>
+ <constructor name="new" c:identifier="gst_collect_pads_new">
+ <doc xml:space="preserve">Create a new instance of #GstCollectPads.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstCollectPads, or %NULL in case of an error.</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </return-value>
+ </constructor>
+ <method name="add_pad" c:identifier="gst_collect_pads_add_pad">
+ <doc xml:space="preserve">Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+
+You can also specify a #GstCollectDataDestroyNotify that will be called
+just before the #GstCollectData structure is freed. It is passed the
+pointer to the structure and should free any custom memory and resources
+allocated for it.
+
+Keeping a pad locked in waiting state is only relevant when using
+the default collection algorithm (providing the oldest buffer).
+It ensures a buffer must be available on this pad for a collection
+to take place. This is of typical use to a muxer element where
+non-subtitle streams should always be in waiting state,
+e.g. to assure that caps information is available on all these streams
+when initial headers have to be written.
+
+The pad will be automatically activated in push mode when @pads is
+started.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a new #GstCollectData to identify the
+ new pad. Or %NULL if wrong parameters are supplied.</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to add</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the returned #GstCollectData structure</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="destroy_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">function to be called before the returned
+ #GstCollectData structure is freed</doc>
+ <type name="CollectDataDestroyNotify"
+ c:type="GstCollectDataDestroyNotify"/>
+ </parameter>
+ <parameter name="lock" transfer-ownership="none">
+ <doc xml:space="preserve">whether to lock this pad in usual waiting state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="available" c:identifier="gst_collect_pads_available">
+ <doc xml:space="preserve">Query how much bytes can be read from each queued buffer. This means
+that the result of this call is the maximum number of bytes that can
+be read from each of the pads.
+
+This function should be called with @pads STREAM_LOCK held, such as
+in the callback.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The maximum number of bytes queued on all pads. This function
+returns 0 if a pad has no queued buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to query</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="clip_running_time"
+ c:identifier="gst_collect_pads_clip_running_time">
+ <doc xml:space="preserve">Convenience clipping function that converts incoming buffer's timestamp
+to running time, or clips the buffer if outside configured segment.
+
+Since 1.6, this clipping function also sets the DTS parameter of the
+GstCollectData structure. This version of the running time DTS can be
+negative. G_MININT64 is used to indicate invalid value.</doc>
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="cdata" transfer-ownership="none">
+ <doc xml:space="preserve">collect data of corresponding pad</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">buffer being clipped</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuf"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">output buffer with running time, or NULL if clipped</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data (unused)</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="event_default"
+ c:identifier="gst_collect_pads_event_default">
+ <doc xml:space="preserve">Default #GstCollectPads event handling that elements should always
+chain up to to ensure proper operation. Element might however indicate
+event should not be forwarded downstream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">collect data of corresponding pad</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">event being processed</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="discard" transfer-ownership="none">
+ <doc xml:space="preserve">process but do not send event downstream</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="flush" c:identifier="gst_collect_pads_flush">
+ <doc xml:space="preserve">Flush @size bytes from the pad @data.
+
+This function should be called with @pads STREAM_LOCK held, such as
+in the callback.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of bytes flushed This can be less than @size and
+is 0 if the pad was end-of-stream.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to query</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to flush</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="peek" c:identifier="gst_collect_pads_peek">
+ <doc xml:space="preserve">Peek at the buffer currently queued in @data. This function
+should be called with the @pads STREAM_LOCK held, such as in the callback
+handler.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The buffer in @data or %NULL if no
+buffer is queued. should unref the buffer after usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to peek</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pop" c:identifier="gst_collect_pads_pop">
+ <doc xml:space="preserve">Pop the buffer currently queued in @data. This function
+should be called with the @pads STREAM_LOCK held, such as in the callback
+handler.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">The buffer in @data or %NULL if no
+buffer was queued. You should unref the buffer after usage.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to pop</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="query_default"
+ c:identifier="gst_collect_pads_query_default">
+ <doc xml:space="preserve">Default #GstCollectPads query handling that elements should always
+chain up to to ensure proper operation. Element might however indicate
+query should not be forwarded downstream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">collect data of corresponding pad</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">query being processed</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="discard" transfer-ownership="none">
+ <doc xml:space="preserve">process but do not send event downstream</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read_buffer" c:identifier="gst_collect_pads_read_buffer">
+ <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data.
+
+This function should be called with @pads STREAM_LOCK held, such as in the
+callback.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A sub buffer. The size of the buffer can
+be less that requested. A return of %NULL signals that the pad is
+end-of-stream. Unref the buffer after use.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to query</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_pad" c:identifier="gst_collect_pads_remove_pad">
+ <doc xml:space="preserve">Remove a pad from the collection of collect pads. This function will also
+free the #GstCollectData and all the resources that were allocated with
+gst_collect_pads_add_pad().
+
+The pad will be deactivated automatically when @pads is stopped.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could be removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the pad to remove</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_buffer_function"
+ c:identifier="gst_collect_pads_set_buffer_function">
+ <doc xml:space="preserve">Set the callback function and user data that will be called with
+the oldest buffer when all pads have been collected, or %NULL on EOS.
+If a buffer is passed, the callback owns a reference and must unref
+it.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to set</doc>
+ <type name="CollectPadsBufferFunction"
+ c:type="GstCollectPadsBufferFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_clip_function"
+ c:identifier="gst_collect_pads_set_clip_function">
+ <doc xml:space="preserve">Install a clipping function that is called right after a buffer is received
+on a pad managed by @pads. See #GstCollectPadsClipFunction for more info.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="clipfunc"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">clip function to install</doc>
+ <type name="CollectPadsClipFunction"
+ c:type="GstCollectPadsClipFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data to pass to @clip_func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_compare_function"
+ c:identifier="gst_collect_pads_set_compare_function">
+ <doc xml:space="preserve">Set the timestamp comparison function.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the pads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to set</doc>
+ <type name="CollectPadsCompareFunction"
+ c:type="GstCollectPadsCompareFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_event_function"
+ c:identifier="gst_collect_pads_set_event_function">
+ <doc xml:space="preserve">Set the event callback function and user data that will be called when
+collectpads has received an event originating from one of the collected
+pads. If the event being processed is a serialized one, this callback is
+called with @pads STREAM_LOCK held, otherwise not. As this lock should be
+held when calling a number of CollectPads functions, it should be acquired
+if so (unusually) needed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to set</doc>
+ <type name="CollectPadsEventFunction"
+ c:type="GstCollectPadsEventFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flush_function"
+ c:identifier="gst_collect_pads_set_flush_function"
+ version="1.4">
+ <doc xml:space="preserve">Install a flush function that is called when the internal
+state of all pads should be flushed as part of flushing seek
+handling. See #GstCollectPadsFlushFunction for more info.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">flush function to install</doc>
+ <type name="CollectPadsFlushFunction"
+ c:type="GstCollectPadsFlushFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data to pass to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing" c:identifier="gst_collect_pads_set_flushing">
+ <doc xml:space="preserve">Change the flushing state of all the pads in the collection. No pad
+is able to accept anymore data when @flushing is %TRUE. Calling this
+function with @flushing %FALSE makes @pads accept data again.
+Caller must ensure that downstream streaming (thread) is not blocked,
+e.g. by sending a FLUSH_START downstream.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">desired state of the pads</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_function" c:identifier="gst_collect_pads_set_function">
+ <doc xml:space="preserve">CollectPads provides a default collection algorithm that will determine
+the oldest buffer available on all of its pads, and then delegate
+to a configured callback.
+However, if circumstances are more complicated and/or more control
+is desired, this sets a callback that will be invoked instead when
+all the pads added to the collection have buffers queued.
+Evidently, this callback is not compatible with
+gst_collect_pads_set_buffer_function() callback.
+If this callback is set, the former will be unset.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to set</doc>
+ <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_query_function"
+ c:identifier="gst_collect_pads_set_query_function">
+ <doc xml:space="preserve">Set the query callback function and user data that will be called after
+collectpads has received a query originating from one of the collected
+pads. If the query being processed is a serialized one, this callback is
+called with @pads STREAM_LOCK held, otherwise not. As this lock should be
+held when calling a number of CollectPads functions, it should be acquired
+if so (unusually) needed.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">the function to set</doc>
+ <type name="CollectPadsQueryFunction"
+ c:type="GstCollectPadsQueryFunction"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data passed to the function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_waiting" c:identifier="gst_collect_pads_set_waiting">
+ <doc xml:space="preserve">Sets a pad to waiting or non-waiting mode, if at least this pad
+has not been created with locked waiting state,
+in which case nothing happens.
+
+This function should be called with @pads STREAM_LOCK held, such as
+in the callback.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="waiting" transfer-ownership="none">
+ <doc xml:space="preserve">boolean indicating whether this pad should operate
+ in waiting or non-waiting mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="src_event_default"
+ c:identifier="gst_collect_pads_src_event_default"
+ version="1.4">
+ <doc xml:space="preserve">Default #GstCollectPads event handling for the src pad of elements.
+Elements can chain up to this to let flushing seek event handling
+be done by #GstCollectPads.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">src #GstPad that received the event</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">event being processed</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start" c:identifier="gst_collect_pads_start">
+ <doc xml:space="preserve">Starts the processing of data in the collect_pads.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop" c:identifier="gst_collect_pads_stop">
+ <doc xml:space="preserve">Stops the processing of data in the collect_pads. this function
+will also unblock any blocking operations.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to use</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="take_buffer" c:identifier="gst_collect_pads_take_buffer">
+ <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data. Flushes the amount
+of read bytes.
+
+This function should be called with @pads STREAM_LOCK held, such as in the
+callback.
+
+MT safe.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">A sub buffer. The size of the buffer can
+be less that requested. A return of %NULL signals that the pad is
+end-of-stream. Unref the buffer after use.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the collectpads to query</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to use</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to read</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="object">
+ <type name="Gst.Object" c:type="GstObject"/>
+ </field>
+ <field name="data">
+ <doc xml:space="preserve">#GList of #GstCollectData managed
+ by this #GstCollectPads.</doc>
+ <type name="GLib.SList" c:type="GSList*">
+ <type name="CollectData"/>
+ </type>
+ </field>
+ <field name="stream_lock" readable="0" private="1">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <callback name="CollectPadsBufferFunction"
+ c:type="GstCollectPadsBufferFunction">
+ <doc xml:space="preserve">A function that will be called when a (considered oldest) buffer can be muxed.
+If all pads have reached EOS, this function is called with %NULL @buffer
+and %NULL @data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectData of pad that has received the buffer</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <doc xml:space="preserve">user data passed to gst_collect_pads_set_buffer_function()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="CollectPadsClass"
+ c:type="GstCollectPadsClass"
+ glib:is-gtype-struct-for="CollectPads">
+ <field name="parent_class">
+ <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="CollectPadsClipFunction"
+ c:type="GstCollectPadsClipFunction">
+ <doc xml:space="preserve">A function that will be called when @inbuffer is received on the pad managed
+by @data in the collectpad object @pads.
+
+The function should use the segment of @data and the negotiated media type on
+the pad to perform clipping of @inbuffer.
+
+This function takes ownership of @inbuffer and should output a buffer in
+@outbuffer or return %NULL in @outbuffer if the buffer should be dropped.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn that corresponds to the result of clipping.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCollectPads</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCollectData</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="inbuffer" transfer-ownership="full">
+ <doc xml:space="preserve">the input #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="outbuffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the output #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="4">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CollectPadsCompareFunction"
+ c:type="GstCollectPadsCompareFunction">
+ <doc xml:space="preserve">A function for comparing two timestamps of buffers or newsegments collected on one pad.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Integer less than zero when first timestamp is deemed older than the second one.
+ Zero if the timestamps are deemed equally old.
+ Integer greater than zero when second timestamp is deemed older than the first one.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads that is comparing the timestamps</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="data1" transfer-ownership="none">
+ <doc xml:space="preserve">the first #GstCollectData</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="timestamp1" transfer-ownership="none">
+ <doc xml:space="preserve">the first timestamp</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="data2" transfer-ownership="none">
+ <doc xml:space="preserve">the second #GstCollectData</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="timestamp2" transfer-ownership="none">
+ <doc xml:space="preserve">the second timestamp</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="5">
+ <doc xml:space="preserve">user data passed to gst_collect_pads_set_compare_function()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CollectPadsEventFunction"
+ c:type="GstCollectPadsEventFunction">
+ <doc xml:space="preserve">A function that will be called while processing an event. It takes
+ownership of the event and is responsible for chaining up (to
+gst_collect_pads_event_default()) or dropping events (such typical cases
+being handled by the default handler).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that received an event</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEvent received</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <doc xml:space="preserve">user data passed to gst_collect_pads_set_event_function()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CollectPadsFlushFunction"
+ c:type="GstCollectPadsFlushFunction"
+ version="1.4">
+ <doc xml:space="preserve">A function that will be called while processing a flushing seek event.
+
+The function should flush any internal state of the element and the state of
+all the pads. It should clear only the state not directly managed by the
+@pads object. It is therefore not necessary to call
+gst_collect_pads_set_flushing nor gst_collect_pads_clear from this function.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCollectPads</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="CollectPadsFunction" c:type="GstCollectPadsFunction">
+ <doc xml:space="preserve">A function that will be called when all pads have received data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">user data passed to gst_collect_pads_set_function()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="CollectPadsPrivate"
+ c:type="GstCollectPadsPrivate"
+ disguised="1">
+ </record>
+ <callback name="CollectPadsQueryFunction"
+ c:type="GstCollectPadsQueryFunction">
+ <doc xml:space="preserve">A function that will be called while processing a query. It takes
+ownership of the query and is responsible for chaining up (to
+events downstream (with gst_pad_event_default()).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="pads" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
+ <type name="CollectPads" c:type="GstCollectPads*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that received an event</doc>
+ <type name="CollectData" c:type="GstCollectData*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEvent received</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <doc xml:space="preserve">user data passed to gst_collect_pads_set_query_function()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags">
+ <member name="eos" value="1" c:identifier="GST_COLLECT_PADS_STATE_EOS">
+ <doc xml:space="preserve">Set if collectdata's pad is EOS.</doc>
+ </member>
+ <member name="flushing"
+ value="2"
+ c:identifier="GST_COLLECT_PADS_STATE_FLUSHING">
+ <doc xml:space="preserve">Set if collectdata's pad is flushing.</doc>
+ </member>
+ <member name="new_segment"
+ value="4"
+ c:identifier="GST_COLLECT_PADS_STATE_NEW_SEGMENT">
+ <doc xml:space="preserve">Set if collectdata's pad received a
+ new_segment event.</doc>
+ </member>
+ <member name="waiting"
+ value="8"
+ c:identifier="GST_COLLECT_PADS_STATE_WAITING">
+ <doc xml:space="preserve">Set if collectdata's pad must be waited
+ for when collecting.</doc>
+ </member>
+ <member name="locked"
+ value="16"
+ c:identifier="GST_COLLECT_PADS_STATE_LOCKED">
+ <doc xml:space="preserve">Set collectdata's pad WAITING state must
+ not be changed.
+#GstCollectPadsStateFlags indicate private state of a collectdata('s pad).</doc>
+ </member>
+ </bitfield>
+ <class name="DataQueue"
+ c:symbol-prefix="data_queue"
+ c:type="GstDataQueue"
+ parent="GObject.Object"
+ glib:type-name="GstDataQueue"
+ glib:get-type="gst_data_queue_get_type"
+ glib:type-struct="DataQueueClass">
+ <doc xml:space="preserve">#GstDataQueue is an object that handles threadsafe queueing of objects. It
+also provides size-related functionality. This object should be used for
+any #GstElement that wishes to provide some sort of queueing functionality.</doc>
+ <constructor name="new"
+ c:identifier="gst_data_queue_new"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstDataQueue. If @fullcallback or @emptycallback are supplied, then
+the #GstDataQueue will call the respective callback to signal full or empty condition.
+If the callbacks are NULL the #GstDataQueue will instead emit 'full' and 'empty'
+signals.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </return-value>
+ <parameters>
+ <parameter name="checkfull" transfer-ownership="none">
+ <doc xml:space="preserve">the callback used to tell if the element considers the queue full
+or not.</doc>
+ <type name="DataQueueCheckFullFunction"
+ c:type="GstDataQueueCheckFullFunction"/>
+ </parameter>
+ <parameter name="fullcallback" transfer-ownership="none">
+ <doc xml:space="preserve">the callback which will be called when the queue is considered full.</doc>
+ <type name="DataQueueFullCallback"
+ c:type="GstDataQueueFullCallback"/>
+ </parameter>
+ <parameter name="emptycallback"
+ transfer-ownership="none"
+ closure="3">
+ <doc xml:space="preserve">the callback which will be called when the queue is considered empty.</doc>
+ <type name="DataQueueEmptyCallback"
+ c:type="GstDataQueueEmptyCallback"/>
+ </parameter>
+ <parameter name="checkdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #gpointer that will be passed to the @checkfull, @fullcallback,
+ and @emptycallback callbacks.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="empty">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="full">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="drop_head"
+ c:identifier="gst_data_queue_drop_head"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Pop and unref the head-most #GstMiniObject with the given #GType.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if an element was removed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstDataQueue to drop an item from.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">The #GType of the item to drop.</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="flush"
+ c:identifier="gst_data_queue_flush"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
+#gst_data_queue_pop will be released.
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_level"
+ c:identifier="gst_data_queue_get_level"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Get the current level of the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstDataQueue</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">the location to store the result</doc>
+ <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_empty"
+ c:identifier="gst_data_queue_is_empty"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Queries if there are any items in the @queue.
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @queue is empty.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_full"
+ c:identifier="gst_data_queue_is_full"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Queries if @queue is full. This check will be done using the
+#GstDataQueueCheckFullFunction registered with @queue.
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @queue is full.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="limits_changed"
+ c:identifier="gst_data_queue_limits_changed"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Inform the queue that the limits for the fullness check have changed and that
+any blocking gst_data_queue_push() should be unblocked to recheck the limits.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstDataQueue</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek"
+ c:identifier="gst_data_queue_peek"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Retrieves the first @item available on the @queue without removing it.
+If the queue is currently empty, the call will block until at least
+one item is available, OR the @queue is set to the flushing state.
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
+ <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pop"
+ c:identifier="gst_data_queue_pop"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Retrieves the first @item available on the @queue. If the queue is currently
+empty, the call will block until at least one item is available, OR the
+@queue is set to the flushing state.
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
+ <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push"
+ c:identifier="gst_data_queue_push"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
+on the @queue. If the @queue is full, the call will block until space is
+available, OR the @queue is set to flushing state.
+MT safe.
+
+Note that this function has slightly different semantics than gst_pad_push()
+and gst_pad_push_event(): this function only takes ownership of @item and
+the #GstMiniObject contained in @item if the push was successful. If %FALSE
+is returned, the caller is responsible for freeing @item and its contents.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueueItem.</doc>
+ <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_force"
+ c:identifier="gst_data_queue_push_force"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
+on the @queue. It ignores if the @queue is full or not and forces the @item
+to be pushed anyway.
+MT safe.
+
+Note that this function has slightly different semantics than gst_pad_push()
+and gst_pad_push_event(): this function only takes ownership of @item and
+the #GstMiniObject contained in @item if the push was successful. If %FALSE
+is returned, the caller is responsible for freeing @item and its contents.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="item" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueueItem.</doc>
+ <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing"
+ c:identifier="gst_data_queue_set_flushing"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Sets the queue to flushing state if @flushing is %TRUE. If set to flushing
+state, any incoming data on the @queue will be discarded. Any call currently
+blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
+away with a return value of %FALSE. While the @queue is in flushing state,
+all calls to those two functions will return %FALSE.
+
+MT Safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean stating if the queue will be flushing or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="current-level-bytes" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="current-level-time" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="current-level-visible" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <field name="object">
+ <doc xml:space="preserve">the parent structure</doc>
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="DataQueuePrivate" c:type="GstDataQueuePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="empty" when="first" introspectable="0">
+ <doc xml:space="preserve">Reports that the queue became empty (empty).
+A queue is empty if the total amount of visible items inside it (num-visible, time,
+size) is lower than the boundary values which can be set through the GObject
+properties.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="full" when="first" introspectable="0">
+ <doc xml:space="preserve">Reports that the queue became full (full).
+A queue is full if the total amount of data inside it (num-visible, time,
+size) is higher than the boundary values which can be set through the GObject
+properties.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ </class>
+ <callback name="DataQueueCheckFullFunction"
+ c:type="GstDataQueueCheckFullFunction"
+ introspectable="0">
+ <doc xml:space="preserve">The prototype of the function used to inform the queue that it should be
+considered as full.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the queue should be considered full.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="queue" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDataQueue.</doc>
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </parameter>
+ <parameter name="visible" transfer-ownership="none">
+ <doc xml:space="preserve">The number of visible items currently in the queue.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="bytes" transfer-ownership="none">
+ <doc xml:space="preserve">The amount of bytes currently in the queue.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="time" transfer-ownership="none">
+ <doc xml:space="preserve">The accumulated duration of the items currently in the queue.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="checkdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The #gpointer registered when the #GstDataQueue was created.</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="DataQueueClass"
+ c:type="GstDataQueueClass"
+ glib:is-gtype-struct-for="DataQueue">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ <field name="empty">
+ <callback name="empty">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="full">
+ <callback name="full">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </parameter>
+ <parameter name="checkdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="queue" transfer-ownership="none">
+ <type name="DataQueue" c:type="GstDataQueue*"/>
+ </parameter>
+ <parameter name="checkdata"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="DataQueueItem" c:type="GstDataQueueItem" introspectable="0">
+ <doc xml:space="preserve">Structure used by #GstDataQueue. You can supply a different structure, as
+long as the top of the structure is identical to this structure.</doc>
+ <field name="object" writable="1">
+ <doc xml:space="preserve">the #GstMiniObject to queue.</doc>
+ <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the size in bytes of the miniobject.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="duration" writable="1">
+ <doc xml:space="preserve">the duration in #GstClockTime of the miniobject. Can not be
+%GST_CLOCK_TIME_NONE.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="visible" writable="1">
+ <doc xml:space="preserve">%TRUE if @object should be considered as a visible object.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="destroy" writable="1">
+ <doc xml:space="preserve">The #GDestroyNotify function to use to free the #GstDataQueueItem.
+This function should also drop the reference to @object the owner of the
+#GstDataQueueItem is assumed to hold.</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="DataQueuePrivate" c:type="GstDataQueuePrivate" disguised="1">
+ </record>
+ <record name="DataQueueSize" c:type="GstDataQueueSize" introspectable="0">
+ <doc xml:space="preserve">Structure describing the size of a queue.</doc>
+ <field name="visible" writable="1">
+ <doc xml:space="preserve">number of buffers</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="bytes" writable="1">
+ <doc xml:space="preserve">number of bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="time" writable="1">
+ <doc xml:space="preserve">amount of time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ </record>
+ <record name="FlowCombiner"
+ c:type="GstFlowCombiner"
+ version="1.4"
+ glib:type-name="GstFlowCombiner"
+ glib:get-type="gst_flow_combiner_get_type"
+ c:symbol-prefix="flow_combiner">
+ <doc xml:space="preserve">Utility struct to help handling #GstFlowReturn combination. Useful for
+#GstElement&lt;!-- --&gt;s that have multiple source pads and need to combine
+the different #GstFlowReturn for those pads.
+
+#GstFlowCombiner works by using the last #GstFlowReturn for all #GstPad
+it has in its list and computes the combined return value and provides
+it to the caller.
+
+To add a new pad to the #GstFlowCombiner use gst_flow_combiner_add_pad().
+The new #GstPad is stored with a default value of %GST_FLOW_OK.
+
+In case you want a #GstPad to be removed, use gst_flow_combiner_remove_pad().
+
+Please be aware that this struct isn't thread safe as its designed to be
+ used by demuxers, those usually will have a single thread operating it.
+
+These functions will take refs on the passed #GstPad&lt;!-- --&gt;s.
+
+Aside from reducing the user's code size, the main advantage of using this
+helper struct is to follow the standard rules for #GstFlowReturn combination.
+These rules are:
+
+* %GST_FLOW_EOS: only if all returns are EOS too
+* %GST_FLOW_NOT_LINKED: only if all returns are NOT_LINKED too
+* %GST_FLOW_ERROR or below: if at least one returns an error return
+* %GST_FLOW_NOT_NEGOTIATED: if at least one returns a not-negotiated return
+* %GST_FLOW_FLUSHING: if at least one returns flushing
+* %GST_FLOW_OK: otherwise
+
+%GST_FLOW_ERROR or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are
+returned immediatelly from the gst_flow_combiner_update_flow() function.</doc>
+ <constructor name="new"
+ c:identifier="gst_flow_combiner_new"
+ version="1.4">
+ <doc xml:space="preserve">Creates a new #GstFlowCombiner, use gst_flow_combiner_free() to free it.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstFlowCombiner</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </return-value>
+ </constructor>
+ <method name="add_pad"
+ c:identifier="gst_flow_combiner_add_pad"
+ version="1.4">
+ <doc xml:space="preserve">Adds a new #GstPad to the #GstFlowCombiner.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad that is being added</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="clear"
+ c:identifier="gst_flow_combiner_clear"
+ version="1.6">
+ <doc xml:space="preserve">Removes all pads from a #GstFlowCombiner and resets it to its initial state.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_flow_combiner_free" version="1.4">
+ <doc xml:space="preserve">Frees a #GstFlowCombiner struct and all its internal data.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner to free</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_flow_combiner_ref" version="1.12.1">
+ <doc xml:space="preserve">Increments the reference count on the #GstFlowCombiner.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstFlowCombiner.</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner to add a reference to.</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_pad"
+ c:identifier="gst_flow_combiner_remove_pad"
+ version="1.4">
+ <doc xml:space="preserve">Removes a #GstPad from the #GstFlowCombiner.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad to remove</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset"
+ c:identifier="gst_flow_combiner_reset"
+ version="1.6">
+ <doc xml:space="preserve">Reset flow combiner and all pads to their initial state without removing pads.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unref"
+ c:identifier="gst_flow_combiner_unref"
+ version="1.12.1">
+ <doc xml:space="preserve">Decrements the reference count on the #GstFlowCombiner.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner to unreference.</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="update_flow"
+ c:identifier="gst_flow_combiner_update_flow"
+ version="1.4">
+ <doc xml:space="preserve">Computes the combined flow return for the pads in it.
+
+The #GstFlowReturn parameter should be the last flow return update for a pad
+in this #GstFlowCombiner. It will use this value to be able to shortcut some
+combinations and avoid looking over all pads again. e.g. The last combined
+return is the same as the latest obtained #GstFlowReturn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The combined #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ <parameter name="fret" transfer-ownership="none">
+ <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="update_pad_flow"
+ c:identifier="gst_flow_combiner_update_pad_flow"
+ version="1.6">
+ <doc xml:space="preserve">Sets the provided pad's last flow return to provided value and computes
+the combined flow return for the pads in it.
+
+The #GstFlowReturn parameter should be the last flow return update for a pad
+in this #GstFlowCombiner. It will use this value to be able to shortcut some
+combinations and avoid looking over all pads again. e.g. The last combined
+return is the same as the latest obtained #GstFlowReturn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The combined #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="combiner" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstFlowCombiner</doc>
+ <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstPad whose #GstFlowReturn to update</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="fret" transfer-ownership="none">
+ <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="PushSrc"
+ c:symbol-prefix="push_src"
+ c:type="GstPushSrc"
+ parent="BaseSrc"
+ glib:type-name="GstPushSrc"
+ glib:get-type="gst_push_src_get_type"
+ glib:type-struct="PushSrcClass">
+ <doc xml:space="preserve">This class is mostly useful for elements that cannot do
+random access, or at least very slowly. The source usually
+prefers to push out a fixed size buffer.
+
+Subclasses usually operate in a format that is different from the
+default GST_FORMAT_BYTES format of #GstBaseSrc.
+
+Classes extending this base class will usually be scheduled
+in a push based mode. If the peer accepts to operate without
+offsets and within the limits of the allowed block size, this
+class can operate in getrange based mode automatically. To make
+this possible, the subclass should implement and override the
+SCHEDULING query.
+
+The subclass should extend the methods from the baseclass in
+addition to the ::create method.
+
+Seeking, flushing, scheduling and sync is all handled by this
+base class.</doc>
+ <virtual-method name="alloc">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="create">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="fill">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="parent">
+ <type name="BaseSrc" c:type="GstBaseSrc"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="PushSrcClass"
+ c:type="GstPushSrcClass"
+ glib:is-gtype-struct-for="PushSrc">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @fill method should be overridden to produce
+buffers.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Element parent class</doc>
+ <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
+ </field>
+ <field name="create">
+ <callback name="create">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="alloc">
+ <callback name="alloc">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="fill">
+ <callback name="fill">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <type name="PushSrc" c:type="GstPushSrc*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="QueueArray"
+ c:type="GstQueueArray"
+ disguised="1"
+ introspectable="0">
+ <doc xml:space="preserve">#GstQueueArray is an object that provides standard queue functionality
+based on an array instead of linked lists. This reduces the overhead
+caused by memory management by a large factor.</doc>
+ <method name="drop_element"
+ c:identifier="gst_queue_array_drop_element"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Drops the queue element at position @idx from queue @array.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the dropped element</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">index to drop</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="drop_struct"
+ c:identifier="gst_queue_array_drop_struct"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Drops the queue element at position @idx from queue @array and copies the
+data of the element or structure that was removed into @p_struct if
+@p_struct is set (not NULL).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE on success, or FALSE on error</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">index to drop</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="p_struct"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">address into which to store the data of the dropped structure, or NULL</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="find"
+ c:identifier="gst_queue_array_find"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Finds an element in the queue @array, either by comparing every element
+with @func or by looking up @data if no compare function @func is provided,
+and returning the index of the found element.
+
+Note that the index is not 0-based, but an internal index number with a
+random offset. The index can be used in connection with
+gst_queue_array_drop_element(). FIXME: return index 0-based and make
+gst_queue_array_drop_element() take a 0-based index.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Index of the found element or -1 if nothing was found.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">comparison function, or %NULL to find @data by value</doc>
+ <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">data for comparison function</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free"
+ c:identifier="gst_queue_array_free"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Frees queue @array and all memory associated to it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_length"
+ c:identifier="gst_queue_array_get_length"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the length of the queue @array</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the length of the queue @array.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_empty"
+ c:identifier="gst_queue_array_is_empty"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Checks if the queue @array is empty.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the queue @array is empty</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_head"
+ c:identifier="gst_queue_array_peek_head"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the head of the queue @array and does not
+remove it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The head of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_head_struct"
+ c:identifier="gst_queue_array_peek_head_struct"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the head of the queue @array without removing it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
+ data pointed to by the returned pointer stays valid only as long as
+ the queue array is not modified further!</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_tail"
+ c:identifier="gst_queue_array_peek_tail"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the tail of the queue @array, but does not remove it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The tail of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="peek_tail_struct"
+ c:identifier="gst_queue_array_peek_tail_struct"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the tail of the queue @array, but does not remove it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The tail of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_head"
+ c:identifier="gst_queue_array_pop_head"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Returns and head of the queue @array and removes
+it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The head of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_head_struct"
+ c:identifier="gst_queue_array_pop_head_struct"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the head of the queue @array and removes it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
+ data pointed to by the returned pointer stays valid only as long as
+ the queue array is not modified further!</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_tail"
+ c:identifier="gst_queue_array_pop_tail"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the tail of the queue @array and removes
+it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The tail of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pop_tail_struct"
+ c:identifier="gst_queue_array_pop_tail_struct"
+ version="1.14"
+ introspectable="0">
+ <doc xml:space="preserve">Returns the tail of the queue @array and removes
+it from the queue.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The tail of the queue</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push_tail"
+ c:identifier="gst_queue_array_push_tail"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Pushes @data to the tail of the queue @array.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">object to push</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_tail_struct"
+ c:identifier="gst_queue_array_push_tail_struct">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="array" transfer-ownership="none">
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </instance-parameter>
+ <parameter name="p_struct"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_queue_array_new"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
+queue size of @initial_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </return-value>
+ <parameters>
+ <parameter name="initial_size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of the new queue</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_for_struct"
+ c:identifier="gst_queue_array_new_for_struct"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
+of size @struct_size, with an initial queue size of @initial_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </return-value>
+ <parameters>
+ <parameter name="struct_size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="initial_size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of the new queue</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <callback name="TypeFindHelperGetRangeFunction"
+ c:type="GstTypeFindHelperGetRangeFunction">
+ <doc xml:space="preserve">This function will be called by gst_type_find_helper_get_range() when
+typefinding functions request to peek at the data of a stream at certain
+offsets. 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 supposed to behave exactly like a #GstPadGetRangeFunction.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">GST_FLOW_OK for success</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject that will handle the getrange request</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @obj or %NULL</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset of the range</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the range</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a memory location to hold the result buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <function name="bit_reader_new"
+ c:identifier="gst_bit_reader_new"
+ moved-to="BitReader.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
+
+Free-function: gst_bit_reader_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBitReader instance</doc>
+ <type name="BitReader" c:type="GstBitReader*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Data from which the #GstBitReader
+ should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="byte_reader_new"
+ c:identifier="gst_byte_reader_new"
+ moved-to="ByteReader.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
+
+Free-function: gst_byte_reader_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteReader instance</doc>
+ <type name="ByteReader" c:type="GstByteReader*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data from which the
+ #GstByteReader should read</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="byte_writer_new"
+ c:identifier="gst_byte_writer_new"
+ moved-to="ByteWriter.new"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ </function>
+ <function name="byte_writer_new_with_data"
+ c:identifier="gst_byte_writer_new_with_data"
+ moved-to="ByteWriter.new_with_data"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning.
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Memory area for writing</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of @data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="initialized" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="byte_writer_new_with_size"
+ c:identifier="gst_byte_writer_new_with_size"
+ moved-to="ByteWriter.new_with_size"
+ introspectable="0">
+ <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
+initial data size.
+
+Free-function: gst_byte_writer_free</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstByteWriter instance</doc>
+ <type name="ByteWriter" c:type="GstByteWriter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fixed" transfer-ownership="none">
+ <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="queue_array_new"
+ c:identifier="gst_queue_array_new"
+ moved-to="QueueArray.new"
+ version="1.2"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
+queue size of @initial_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </return-value>
+ <parameters>
+ <parameter name="initial_size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of the new queue</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="queue_array_new_for_struct"
+ c:identifier="gst_queue_array_new_for_struct"
+ moved-to="QueueArray.new_for_struct"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
+of size @struct_size, with an initial queue size of @initial_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstQueueArray object</doc>
+ <type name="QueueArray" c:type="GstQueueArray*"/>
+ </return-value>
+ <parameters>
+ <parameter name="struct_size" transfer-ownership="none">
+ <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="initial_size" transfer-ownership="none">
+ <doc xml:space="preserve">Initial size of the new queue</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_helper" c:identifier="gst_type_find_helper">
+ <doc xml:space="preserve">Tries to find what type of data is flowing from the given source #GstPad.
+
+Free-function: gst_caps_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstCaps corresponding to the data
+ stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A source #GstPad</doc>
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The length in bytes</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_helper_for_buffer"
+ c:identifier="gst_type_find_helper_for_buffer">
+ <doc xml:space="preserve">Tries to find what type of data is contained in the given #GstBuffer, the
+assumption being that the buffer represents the beginning of the stream or
+file.
+
+All available typefinders will be called on the data in order of rank. If
+a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
+typefinding is stopped immediately and the found caps will be returned
+right away. Otherwise, all available typefind functions will the tried,
+and the caps with the highest probability will be returned, or %NULL if
+the content of the buffer could not be identified.
+
+Free-function: gst_caps_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstCaps corresponding to the data,
+ or %NULL if no type could be found. The caller should free the caps
+ returned with gst_caps_unref().</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer with data to typefind</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="prob"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to store the probability of the found
+ caps, or %NULL</doc>
+ <type name="Gst.TypeFindProbability"
+ c:type="GstTypeFindProbability*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_helper_for_data"
+ c:identifier="gst_type_find_helper_for_data">
+ <doc xml:space="preserve">Tries to find what type of data is contained in the given @data, the
+assumption being that the data represents the beginning of the stream or
+file.
+
+All available typefinders will be called on the data in order of rank. If
+a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
+typefinding is stopped immediately and the found caps will be returned
+right away. Otherwise, all available typefind functions will the tried,
+and the caps with the highest probability will be returned, or %NULL if
+the content of @data could not be identified.
+
+Free-function: gst_caps_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstCaps corresponding to the data,
+ or %NULL if no type could be found. The caller should free the caps
+ returned with gst_caps_unref().</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">* a pointer with data to typefind</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="prob"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to store the probability of the found
+ caps, or %NULL</doc>
+ <type name="Gst.TypeFindProbability"
+ c:type="GstTypeFindProbability*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_helper_for_extension"
+ c:identifier="gst_type_find_helper_for_extension">
+ <doc xml:space="preserve">Tries to find the best #GstCaps associated with @extension.
+
+All available typefinders will be checked against the extension in order
+of rank. The caps of the first typefinder that can handle @extension will be
+returned.
+
+Free-function: gst_caps_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstCaps corresponding to
+ @extension, or %NULL if no type could be found. The caller should free
+ the caps returned with gst_caps_unref().</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="extension" transfer-ownership="none">
+ <doc xml:space="preserve">an extension</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="type_find_helper_get_range"
+ c:identifier="gst_type_find_helper_get_range">
+ <doc xml:space="preserve">Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+
+When @extension is not %NULL, this function will first try the typefind
+functions for the given extension, which might speed up the typefinding
+in many cases.
+
+Free-function: gst_caps_unref</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">the #GstCaps corresponding to the data
+ stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject that will be passed as first argument to @func</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="parent"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the parent of @obj or %NULL</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="func" transfer-ownership="none" scope="call">
+ <doc xml:space="preserve">A generic #GstTypeFindHelperGetRangeFunction that will
+ be used to access data at random offsets when doing the typefinding</doc>
+ <type name="TypeFindHelperGetRangeFunction"
+ c:type="GstTypeFindHelperGetRangeFunction"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">The length in bytes</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="extension" transfer-ownership="none">
+ <doc xml:space="preserve">extension of the media</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="prob"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to store the probability of the found
+ caps, or %NULL</doc>
+ <type name="Gst.TypeFindProbability"
+ c:type="GstTypeFindProbability*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstController-1.0.gir b/girs/GstController-1.0.gir
new file mode 100644
index 0000000000..af78936baf
--- /dev/null
+++ b/girs/GstController-1.0.gir
@@ -0,0 +1,931 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GLib" version="2.0"/>
+ <include name="GModule" version="2.0"/>
+ <include name="GObject" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <package name="gstreamer-controller-1.0"/>
+ <c:include name="gst/controller/controller.h"/>
+ <namespace name="GstController"
+ version="1.0"
+ shared-library="libgstcontroller-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <class name="ARGBControlBinding"
+ c:symbol-prefix="argb_control_binding"
+ c:type="GstARGBControlBinding"
+ parent="Gst.ControlBinding"
+ glib:type-name="GstARGBControlBinding"
+ glib:get-type="gst_argb_control_binding_get_type"
+ glib:type-struct="ARGBControlBindingClass">
+ <doc xml:space="preserve">A value mapping object that attaches multiple control sources to a guint
+gobject properties representing a color. A control value of 0.0 will turn the
+color component off and a value of 1.0 will be the color level.</doc>
+ <constructor name="new" c:identifier="gst_argb_control_binding_new">
+ <doc xml:space="preserve">Create a new control-binding that attaches the given #GstControlSource to the
+#GObject property.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the new #GstARGBControlBinding</doc>
+ <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object of the property</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the property-name to attach the control source</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="cs_a" transfer-ownership="none">
+ <doc xml:space="preserve">the control source for the alpha channel</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="cs_r" transfer-ownership="none">
+ <doc xml:space="preserve">the control source for the red channel</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="cs_g" transfer-ownership="none">
+ <doc xml:space="preserve">the control source for the green channel</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ <parameter name="cs_b" transfer-ownership="none">
+ <doc xml:space="preserve">the control source for the blue channel</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="control-source-a"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="Gst.ControlSource"/>
+ </property>
+ <property name="control-source-b"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="Gst.ControlSource"/>
+ </property>
+ <property name="control-source-g"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="Gst.ControlSource"/>
+ </property>
+ <property name="control-source-r"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="Gst.ControlSource"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
+ </field>
+ <field name="cs_a" readable="0" private="1">
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </field>
+ <field name="cs_r" readable="0" private="1">
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </field>
+ <field name="cs_g" readable="0" private="1">
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </field>
+ <field name="cs_b" readable="0" private="1">
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </field>
+ <field name="cur_value" readable="0" private="1">
+ <type name="GObject.Value" c:type="GValue"/>
+ </field>
+ <field name="last_value" readable="0" private="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="ARGBControlBindingClass"
+ c:type="GstARGBControlBindingClass"
+ glib:is-gtype-struct-for="ARGBControlBinding">
+ <doc xml:space="preserve">The class structure of #GstARGBControlBinding.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Parent class</doc>
+ <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ControlPoint"
+ c:type="GstControlPoint"
+ glib:type-name="GstControlPoint"
+ glib:get-type="gst_control_point_get_type"
+ c:symbol-prefix="control_point">
+ <doc xml:space="preserve">An internal structure for value+time and various temporary
+values used for interpolation. This "inherits" from
+GstTimedValue.</doc>
+ <field name="timestamp" writable="1">
+ <doc xml:space="preserve">timestamp of the value change</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="value" writable="1">
+ <doc xml:space="preserve">the new value</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <union name="cache" c:type="cache">
+ <record name="cubic" c:type="cubic">
+ <field name="h" writable="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="z" writable="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ </record>
+ <record name="cubic_monotonic" c:type="cubic_monotonic">
+ <field name="c1s" writable="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="c2s" writable="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="c3s" writable="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ </record>
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="guint8" fixed-size="64">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ </union>
+ <method name="copy" c:identifier="gst_control_point_copy">
+ <return-value transfer-ownership="full">
+ <type name="ControlPoint" c:type="GstControlPoint*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cp" transfer-ownership="none">
+ <type name="ControlPoint" c:type="GstControlPoint*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_control_point_free">
+ <doc xml:space="preserve">Frees all data allocated by a #GstControlPoint instance.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cp" transfer-ownership="none">
+ <doc xml:space="preserve">the object to free</doc>
+ <type name="ControlPoint" c:type="GstControlPoint*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="DirectControlBinding"
+ c:symbol-prefix="direct_control_binding"
+ c:type="GstDirectControlBinding"
+ parent="Gst.ControlBinding"
+ glib:type-name="GstDirectControlBinding"
+ glib:get-type="gst_direct_control_binding_get_type"
+ glib:type-struct="DirectControlBindingClass">
+ <doc xml:space="preserve">A value mapping object that attaches control sources to gobject properties. It
+will map the control values directly to the target property range. If a
+non-absolute direct control binding is used, the value range [0.0 ... 1.0]
+is mapped to full target property range, and all values outside the range
+will be clipped. An absolute control binding will not do any value
+transformations.</doc>
+ <constructor name="new" c:identifier="gst_direct_control_binding_new">
+ <doc xml:space="preserve">Create a new control-binding that attaches the #GstControlSource to the
+#GObject property. It will map the control source range [0.0 ... 1.0] to
+the full target property range, and clip all values outside this range.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the new #GstDirectControlBinding</doc>
+ <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object of the property</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the property-name to attach the control source</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="cs" transfer-ownership="none">
+ <doc xml:space="preserve">the control source</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_absolute"
+ c:identifier="gst_direct_control_binding_new_absolute"
+ version="1.6">
+ <doc xml:space="preserve">Create a new control-binding that attaches the #GstControlSource to the
+#GObject property. It will directly map the control source values to the
+target property range without any transformations.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the new #GstDirectControlBinding</doc>
+ <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">the object of the property</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the property-name to attach the control source</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="cs" transfer-ownership="none">
+ <doc xml:space="preserve">the control source</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="absolute"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="control-source"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="Gst.ControlSource"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
+ </field>
+ <field name="cs" readable="0" private="1">
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </field>
+ <field name="cur_value" readable="0" private="1">
+ <type name="GObject.Value" c:type="GValue"/>
+ </field>
+ <field name="last_value" readable="0" private="1">
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="byte_size" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="convert_value" readable="0" private="1">
+ <type name="DirectControlBindingConvertValue"
+ c:type="GstDirectControlBindingConvertValue"/>
+ </field>
+ <field name="convert_g_value" readable="0" private="1">
+ <type name="DirectControlBindingConvertGValue"
+ c:type="GstDirectControlBindingConvertGValue"/>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <field name="_gst_reserved" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <record name="abi" c:type="abi">
+ <field name="want_absolute" writable="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ </record>
+ </union>
+ </class>
+ <record name="DirectControlBindingClass"
+ c:type="GstDirectControlBindingClass"
+ glib:is-gtype-struct-for="DirectControlBinding">
+ <doc xml:space="preserve">The class structure of #GstDirectControlBinding.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">Parent class</doc>
+ <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="DirectControlBindingConvertGValue"
+ c:type="GstDirectControlBindingConvertGValue">
+ <doc xml:space="preserve">Function to map a control-value to the target GValue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstDirectControlBinding instance</doc>
+ <type name="DirectControlBinding" c:type="GstDirectControlBinding*"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value returned by the cotnrol source</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="dest_value" transfer-ownership="none">
+ <doc xml:space="preserve">the target GValue</doc>
+ <type name="GObject.Value" c:type="GValue*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="DirectControlBindingConvertValue"
+ c:type="GstDirectControlBindingConvertValue">
+ <doc xml:space="preserve">Function to map a control-value to the target plain data type.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstDirectControlBinding instance</doc>
+ <type name="DirectControlBinding" c:type="GstDirectControlBinding*"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <doc xml:space="preserve">the value returned by the cotnrol source</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="dest_value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the target location</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="InterpolationControlSource"
+ c:symbol-prefix="interpolation_control_source"
+ c:type="GstInterpolationControlSource"
+ parent="TimedValueControlSource"
+ glib:type-name="GstInterpolationControlSource"
+ glib:get-type="gst_interpolation_control_source_get_type"
+ glib:type-struct="InterpolationControlSourceClass">
+ <doc xml:space="preserve">#GstInterpolationControlSource is a #GstControlSource, that interpolates values between user-given
+control points. It supports several interpolation modes and property types.
+
+To use #GstInterpolationControlSource get a new instance by calling
+gst_interpolation_control_source_new(), bind it to a #GParamSpec and set some
+control points by calling gst_timed_value_control_source_set().
+
+All functions are MT-safe.</doc>
+ <constructor name="new"
+ c:identifier="gst_interpolation_control_source_new">
+ <doc xml:space="preserve">This returns a new, unbound #GstInterpolationControlSource.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, unbound #GstInterpolationControlSource.</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </return-value>
+ </constructor>
+ <property name="mode" writable="1" transfer-ownership="none">
+ <type name="InterpolationMode"/>
+ </property>
+ <field name="parent">
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="InterpolationControlSourcePrivate"
+ c:type="GstInterpolationControlSourcePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="InterpolationControlSourceClass"
+ c:type="GstInterpolationControlSourceClass"
+ glib:is-gtype-struct-for="InterpolationControlSource">
+ <field name="parent_class">
+ <type name="TimedValueControlSourceClass"
+ c:type="GstTimedValueControlSourceClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="InterpolationControlSourcePrivate"
+ c:type="GstInterpolationControlSourcePrivate"
+ disguised="1">
+ </record>
+ <enumeration name="InterpolationMode"
+ glib:type-name="GstInterpolationMode"
+ glib:get-type="gst_interpolation_mode_get_type"
+ c:type="GstInterpolationMode">
+ <doc xml:space="preserve">The various interpolation modes available.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_INTERPOLATION_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">steps-like interpolation, default</doc>
+ </member>
+ <member name="linear"
+ value="1"
+ c:identifier="GST_INTERPOLATION_MODE_LINEAR"
+ glib:nick="linear">
+ <doc xml:space="preserve">linear interpolation</doc>
+ </member>
+ <member name="cubic"
+ value="2"
+ c:identifier="GST_INTERPOLATION_MODE_CUBIC"
+ glib:nick="cubic">
+ <doc xml:space="preserve">cubic interpolation (natural), may overshoot
+ the min or max values set by the control point, but is more 'curvy'</doc>
+ </member>
+ <member name="cubic_monotonic"
+ value="3"
+ c:identifier="GST_INTERPOLATION_MODE_CUBIC_MONOTONIC"
+ glib:nick="cubic-monotonic">
+ <doc xml:space="preserve">monotonic cubic interpolation, will not
+ produce any values outside of the min-max range set by the control points
+ (Since 1.8)</doc>
+ </member>
+ </enumeration>
+ <class name="LFOControlSource"
+ c:symbol-prefix="lfo_control_source"
+ c:type="GstLFOControlSource"
+ parent="Gst.ControlSource"
+ glib:type-name="GstLFOControlSource"
+ glib:get-type="gst_lfo_control_source_get_type"
+ glib:type-struct="LFOControlSourceClass">
+ <doc xml:space="preserve">#GstLFOControlSource is a #GstControlSource, that provides several periodic
+waveforms as control values.
+
+To use #GstLFOControlSource get a new instance by calling
+gst_lfo_control_source_new(), bind it to a #GParamSpec and set the relevant
+properties.
+
+All functions are MT-safe.</doc>
+ <constructor name="new" c:identifier="gst_lfo_control_source_new">
+ <doc xml:space="preserve">This returns a new, unbound #GstLFOControlSource.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, unbound #GstLFOControlSource.</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </return-value>
+ </constructor>
+ <property name="amplitude" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Specifies the amplitude for the waveform of this #GstLFOControlSource.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="frequency" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Specifies the frequency that should be used for the waveform
+of this #GstLFOControlSource. It should be large enough
+so that the period is longer than one nanosecond.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="offset" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Specifies the value offset for the waveform of this #GstLFOControlSource.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </property>
+ <property name="timeshift" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Specifies the timeshift to the right that should be used for the waveform
+of this #GstLFOControlSource in nanoseconds.
+
+To get a n nanosecond shift to the left use
+"(GST_SECOND / frequency) - n".</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="waveform" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Specifies the waveform that should be used for this #GstLFOControlSource.</doc>
+ <type name="LFOWaveform"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.ControlSource" c:type="GstControlSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="LFOControlSourcePrivate"
+ c:type="GstLFOControlSourcePrivate*"/>
+ </field>
+ <field name="lock" readable="0" private="1">
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="LFOControlSourceClass"
+ c:type="GstLFOControlSourceClass"
+ glib:is-gtype-struct-for="LFOControlSource">
+ <field name="parent_class">
+ <type name="Gst.ControlSourceClass" c:type="GstControlSourceClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="LFOControlSourcePrivate"
+ c:type="GstLFOControlSourcePrivate"
+ disguised="1">
+ </record>
+ <enumeration name="LFOWaveform"
+ glib:type-name="GstLFOWaveform"
+ glib:get-type="gst_lfo_waveform_get_type"
+ c:type="GstLFOWaveform">
+ <doc xml:space="preserve">The various waveform modes available.</doc>
+ <member name="sine"
+ value="0"
+ c:identifier="GST_LFO_WAVEFORM_SINE"
+ glib:nick="sine">
+ <doc xml:space="preserve">sine waveform</doc>
+ </member>
+ <member name="square"
+ value="1"
+ c:identifier="GST_LFO_WAVEFORM_SQUARE"
+ glib:nick="square">
+ <doc xml:space="preserve">square waveform</doc>
+ </member>
+ <member name="saw"
+ value="2"
+ c:identifier="GST_LFO_WAVEFORM_SAW"
+ glib:nick="saw">
+ <doc xml:space="preserve">saw waveform</doc>
+ </member>
+ <member name="reverse_saw"
+ value="3"
+ c:identifier="GST_LFO_WAVEFORM_REVERSE_SAW"
+ glib:nick="reverse-saw">
+ <doc xml:space="preserve">reverse saw waveform</doc>
+ </member>
+ <member name="triangle"
+ value="4"
+ c:identifier="GST_LFO_WAVEFORM_TRIANGLE"
+ glib:nick="triangle">
+ <doc xml:space="preserve">triangle waveform</doc>
+ </member>
+ </enumeration>
+ <class name="ProxyControlBinding"
+ c:symbol-prefix="proxy_control_binding"
+ c:type="GstProxyControlBinding"
+ parent="Gst.ControlBinding"
+ glib:type-name="GstProxyControlBinding"
+ glib:get-type="gst_proxy_control_binding_get_type"
+ glib:type-struct="ProxyControlBindingClass">
+ <doc xml:space="preserve">A #GstControlBinding that forwards requests to another #GstControlBinding</doc>
+ <constructor name="new"
+ c:identifier="gst_proxy_control_binding_new"
+ version="1.12">
+ <doc xml:space="preserve">#GstProxyControlBinding forwards all access to data or sync_values()
+requests from @property_name on @object to the control binding at
+@ref_property_name on @ref_object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a new #GstControlBinding that proxies the control interface between
+properties on different #GstObject's</doc>
+ <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the property name in @object to control</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ref_object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstObject to forward all
+ #GstControlBinding requests to</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="ref_property_name" transfer-ownership="none">
+ <doc xml:space="preserve">the property_name in @ref_object to control</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <field name="parent" readable="0" private="1">
+ <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
+ </field>
+ <field name="ref_object" readable="0" private="1">
+ <type name="GObject.WeakRef" c:type="GWeakRef"/>
+ </field>
+ <field name="property_name" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="_padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="ProxyControlBindingClass"
+ c:type="GstProxyControlBindingClass"
+ glib:is-gtype-struct-for="ProxyControlBinding">
+ <doc xml:space="preserve">Opaque #GstProxyControlBindingClass struct</doc>
+ <field name="parent_class" readable="0" private="1">
+ <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
+ </field>
+ <field name="_padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="TimedValueControlSource"
+ c:symbol-prefix="timed_value_control_source"
+ c:type="GstTimedValueControlSource"
+ parent="Gst.ControlSource"
+ abstract="1"
+ glib:type-name="GstTimedValueControlSource"
+ glib:get-type="gst_timed_value_control_source_get_type"
+ glib:type-struct="TimedValueControlSourceClass">
+ <doc xml:space="preserve">Base class for #GstControlSource that use time-stamped values.
+
+When overriding bind, chain up first to give this bind implementation a
+chance to setup things.
+
+All functions are MT-safe.</doc>
+ <method name="find_control_point_iter"
+ c:identifier="gst_timed_value_control_source_find_control_point_iter">
+ <doc xml:space="preserve">Find last value before given timestamp in control point list.
+If all values in the control point list come after the given
+timestamp or no values exist, %NULL is returned.
+
+For use in control source implementations.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the found #GSequenceIter or %NULL</doc>
+ <type name="GLib.SequenceIter" c:type="GSequenceIter*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the control source to search in</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the search key</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_all"
+ c:identifier="gst_timed_value_control_source_get_all">
+ <doc xml:space="preserve">Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">a copy
+of the list, or %NULL if the property isn't handled by the controller</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Gst.TimedValue"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource to get the list from</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_count"
+ c:identifier="gst_timed_value_control_source_get_count">
+ <doc xml:space="preserve">Get the number of control points that are set.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of control points that are set.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource to get the number of values from</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_timed_value_control_source_set">
+ <doc xml:space="preserve">Set the value of given controller-handled property at a certain time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change is scheduled for</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the control-value</doc>
+ <type name="gdouble" c:type="const gdouble"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_from_list"
+ c:identifier="gst_timed_value_control_source_set_from_list">
+ <doc xml:space="preserve">Sets multiple timed values at once.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ <parameter name="timedvalues" transfer-ownership="none">
+ <doc xml:space="preserve">a list
+with #GstTimedValue items</doc>
+ <type name="GLib.SList" c:type="const GSList*">
+ <type name="Gst.TimedValue"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unset" c:identifier="gst_timed_value_control_source_unset">
+ <doc xml:space="preserve">Used to remove the value of given controller-handled property at a certain
+time.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">FALSE if the value couldn't be unset (i.e. not found, TRUE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the time the control-change should be removed from</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unset_all"
+ c:identifier="gst_timed_value_control_source_unset_all">
+ <doc xml:space="preserve">Used to remove all time-stamped values of given controller-handled property</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <field name="parent">
+ <type name="Gst.ControlSource" c:type="GstControlSource"/>
+ </field>
+ <field name="lock">
+ <type name="GLib.Mutex" c:type="GMutex"/>
+ </field>
+ <field name="values">
+ <type name="GLib.Sequence" c:type="GSequence*"/>
+ </field>
+ <field name="nvalues">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="valid_cache">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TimedValueControlSourcePrivate"
+ c:type="GstTimedValueControlSourcePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="value-added" when="first" version="1.6">
+ <doc xml:space="preserve">Emited right after the new value has been added to @self</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timed_value" transfer-ownership="none">
+ <doc xml:space="preserve">The newly added #GstTimedValue</doc>
+ <type name="ControlPoint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="value-changed" when="first" version="1.6">
+ <doc xml:space="preserve">Emited right after the new value has been set on @timed_signals</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timed_value" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstTimedValue where the value changed</doc>
+ <type name="ControlPoint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="value-removed" when="first" version="1.6">
+ <doc xml:space="preserve">Emited when @timed_value is removed from @self</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="timed_value" transfer-ownership="none">
+ <doc xml:space="preserve">The removed #GstTimedValue</doc>
+ <type name="ControlPoint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="TimedValueControlSourceClass"
+ c:type="GstTimedValueControlSourceClass"
+ glib:is-gtype-struct-for="TimedValueControlSource">
+ <field name="parent_class">
+ <type name="Gst.ControlSourceClass" c:type="GstControlSourceClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TimedValueControlSourcePrivate"
+ c:type="GstTimedValueControlSourcePrivate"
+ disguised="1">
+ </record>
+ <class name="TriggerControlSource"
+ c:symbol-prefix="trigger_control_source"
+ c:type="GstTriggerControlSource"
+ parent="TimedValueControlSource"
+ glib:type-name="GstTriggerControlSource"
+ glib:get-type="gst_trigger_control_source_get_type"
+ glib:type-struct="TriggerControlSourceClass">
+ <doc xml:space="preserve">#GstTriggerControlSource is a #GstControlSource, that returns values from user-given
+control points. It allows for a tolerance on the time-stamps.
+
+To use #GstTriggerControlSource get a new instance by calling
+gst_trigger_control_source_new(), bind it to a #GParamSpec and set some
+control points by calling gst_timed_value_control_source_set().
+
+All functions are MT-safe.</doc>
+ <constructor name="new" c:identifier="gst_trigger_control_source_new">
+ <doc xml:space="preserve">This returns a new, unbound #GstTriggerControlSource.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new, unbound #GstTriggerControlSource.</doc>
+ <type name="Gst.ControlSource" c:type="GstControlSource*"/>
+ </return-value>
+ </constructor>
+ <property name="tolerance" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <field name="parent">
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TriggerControlSourcePrivate"
+ c:type="GstTriggerControlSourcePrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TriggerControlSourceClass"
+ c:type="GstTriggerControlSourceClass"
+ glib:is-gtype-struct-for="TriggerControlSource">
+ <field name="parent_class">
+ <type name="TimedValueControlSourceClass"
+ c:type="GstTimedValueControlSourceClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TriggerControlSourcePrivate"
+ c:type="GstTriggerControlSourcePrivate"
+ disguised="1">
+ </record>
+ <function name="timed_value_control_invalidate_cache"
+ c:identifier="gst_timed_value_control_invalidate_cache">
+ <doc xml:space="preserve">Reset the controlled value cache.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTimedValueControlSource</doc>
+ <type name="TimedValueControlSource"
+ c:type="GstTimedValueControlSource*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstNet-1.0.gir b/girs/GstNet-1.0.gir
new file mode 100644
index 0000000000..076f880690
--- /dev/null
+++ b/girs/GstNet-1.0.gir
@@ -0,0 +1,861 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="GLib" version="2.0"/>
+ <include name="GModule" version="2.0"/>
+ <include name="GObject" version="2.0"/>
+ <include name="Gio" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <package name="gstreamer-net-1.0"/>
+ <c:include name="gst/net/net.h"/>
+ <namespace name="GstNet"
+ version="1.0"
+ shared-library="libgstnet-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <constant name="NET_TIME_PACKET_SIZE"
+ value="16"
+ c:type="GST_NET_TIME_PACKET_SIZE">
+ <doc xml:space="preserve">The size of the packets sent between network clocks.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <record name="NetAddressMeta" c:type="GstNetAddressMeta">
+ <doc xml:space="preserve">#GstNetAddressMeta can be used to store a network address (a #GSocketAddress)
+in a #GstBuffer so that it network elements can track the to and from address
+of the buffer.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">the parent type</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="addr" writable="1">
+ <doc xml:space="preserve">a #GSocketAddress stored as metadata</doc>
+ <type name="Gio.SocketAddress" c:type="GSocketAddress*"/>
+ </field>
+ <function name="get_info" c:identifier="gst_net_address_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="NetClientClock"
+ c:symbol-prefix="net_client_clock"
+ c:type="GstNetClientClock"
+ parent="Gst.SystemClock"
+ glib:type-name="GstNetClientClock"
+ glib:get-type="gst_net_client_clock_get_type"
+ glib:type-struct="NetClientClockClass">
+ <doc xml:space="preserve">#GstNetClientClock implements a custom #GstClock that synchronizes its time
+to a remote time provider such as #GstNetTimeProvider. #GstNtpClock
+implements a #GstClock that synchronizes its time to a remote NTPv4 server.
+
+A new clock is created with gst_net_client_clock_new() or
+gst_ntp_clock_new(), which takes the address and port of the remote time
+provider along with a name and an initial time.
+
+This clock will poll the time provider and will update its calibration
+parameters based on the local and remote observations.
+
+The "round-trip" property limits the maximum round trip packets can take.
+
+Various parameters of the clock can be configured with the parent #GstClock
+"timeout", "window-size" and "window-threshold" object properties.
+
+A #GstNetClientClock and #GstNtpClock is typically set on a #GstPipeline with
+gst_pipeline_use_clock().
+
+If you set a #GstBus on the clock via the "bus" object property, it will
+send @GST_MESSAGE_ELEMENT messages with an attached #GstStructure containing
+statistics about clock accuracy and network traffic.</doc>
+ <constructor name="new" c:identifier="gst_net_client_clock_new">
+ <doc xml:space="preserve">Create a new #GstNetClientInternalClock that will report the time
+provided by the #GstNetTimeProvider on @remote_address and
+@remote_port.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstClock that receives a time from the remote
+clock.</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a name for the clock</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="remote_address" transfer-ownership="none">
+ <doc xml:space="preserve">the address or hostname of the remote clock provider</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="remote_port" transfer-ownership="none">
+ <doc xml:space="preserve">the port of the remote clock provider</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="base_time" transfer-ownership="none">
+ <doc xml:space="preserve">initial time of the clock</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="address"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="base-time"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="bus" writable="1" transfer-ownership="none">
+ <type name="Gst.Bus"/>
+ </property>
+ <property name="internal-clock" transfer-ownership="none">
+ <type name="Gst.Clock"/>
+ </property>
+ <property name="minimum-update-interval"
+ writable="1"
+ transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="port"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="qos-dscp" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="round-trip-limit" writable="1" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="clock">
+ <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="NetClientClockPrivate" c:type="GstNetClientClockPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="NetClientClockClass"
+ c:type="GstNetClientClockClass"
+ glib:is-gtype-struct-for="NetClientClock">
+ <field name="parent_class">
+ <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="NetClientClockPrivate"
+ c:type="GstNetClientClockPrivate"
+ disguised="1">
+ </record>
+ <record name="NetControlMessageMeta" c:type="GstNetControlMessageMeta">
+ <doc xml:space="preserve">#GstNetControlMessageMeta can be used to store control messages (ancillary
+data) which was received with or is to be sent alongside the buffer data.
+When used with socket sinks and sources which understand this meta it allows
+sending and receiving ancillary data such as unix credentials (See
+#GUnixCredentialsMessage) and Unix file descriptions (See #GUnixFDMessage).</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">the parent type</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="message" writable="1">
+ <doc xml:space="preserve">a #GSocketControlMessage stored as metadata</doc>
+ <type name="Gio.SocketControlMessage" c:type="GSocketControlMessage*"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_net_control_message_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="NetTimePacket"
+ c:type="GstNetTimePacket"
+ glib:type-name="GstNetTimePacket"
+ glib:get-type="gst_net_time_packet_get_type"
+ c:symbol-prefix="net_time_packet">
+ <doc xml:space="preserve">Various functions for receiving, sending an serializing #GstNetTimePacket
+structures.</doc>
+ <field name="local_time" writable="1">
+ <doc xml:space="preserve">the local time when this packet was sent</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="remote_time" writable="1">
+ <doc xml:space="preserve">the remote time observation</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <constructor name="new" c:identifier="gst_net_time_packet_new">
+ <doc xml:space="preserve">Creates a new #GstNetTimePacket from a buffer received over the network. The
+caller is responsible for ensuring that @buffer is at least
+#GST_NET_TIME_PACKET_SIZE bytes long.
+
+If @buffer is %NULL, the local and remote times will be set to
+#GST_CLOCK_TIME_NONE.
+
+MT safe. Caller owns return value (gst_net_time_packet_free to free).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstNetTimePacket.</doc>
+ <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer from which to construct the packet, or NULL</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="gst_net_time_packet_copy">
+ <doc xml:space="preserve">Make a copy of @packet.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a copy of @packet, free with gst_net_time_packet_free().</doc>
+ <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstNetTimePacket</doc>
+ <type name="NetTimePacket" c:type="const GstNetTimePacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_net_time_packet_free">
+ <doc xml:space="preserve">Free @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstNetTimePacket</doc>
+ <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="send" c:identifier="gst_net_time_packet_send" throws="1">
+ <doc xml:space="preserve">Sends a #GstNetTimePacket over a socket.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if successful, FALSE in case an error occurred.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstNetTimePacket to send</doc>
+ <type name="NetTimePacket" c:type="const GstNetTimePacket*"/>
+ </instance-parameter>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">socket to send the time packet on</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="dest_address" transfer-ownership="none">
+ <doc xml:space="preserve">address to send the time packet to</doc>
+ <type name="Gio.SocketAddress" c:type="GSocketAddress*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="serialize" c:identifier="gst_net_time_packet_serialize">
+ <doc xml:space="preserve">Serialized a #GstNetTimePacket into a newly-allocated sequence of
+#GST_NET_TIME_PACKET_SIZE bytes, in network byte order. The value returned is
+suitable for passing to write(2) or sendto(2) for communication over the
+network.
+
+MT safe. Caller owns return value (g_free to free).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A newly allocated sequence of #GST_NET_TIME_PACKET_SIZE bytes.</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstNetTimePacket</doc>
+ <type name="NetTimePacket" c:type="const GstNetTimePacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="receive"
+ c:identifier="gst_net_time_packet_receive"
+ throws="1">
+ <doc xml:space="preserve">Receives a #GstNetTimePacket over a socket. Handles interrupted system
+calls, but otherwise returns NULL on error.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstNetTimePacket, or NULL on error. Free
+ with gst_net_time_packet_free() when done.</doc>
+ <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">socket to receive the time packet on</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="src_address"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of variable to return sender address</doc>
+ <type name="Gio.SocketAddress" c:type="GSocketAddress**"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <class name="NetTimeProvider"
+ c:symbol-prefix="net_time_provider"
+ c:type="GstNetTimeProvider"
+ parent="Gst.Object"
+ glib:type-name="GstNetTimeProvider"
+ glib:get-type="gst_net_time_provider_get_type"
+ glib:type-struct="NetTimeProviderClass">
+ <doc xml:space="preserve">This object exposes the time of a #GstClock on the network.
+
+A #GstNetTimeProvider is created with gst_net_time_provider_new() which
+takes a #GstClock, an address and a port number as arguments.
+
+After creating the object, a client clock such as #GstNetClientClock can
+query the exposed clock over the network for its values.
+
+The #GstNetTimeProvider typically wraps the clock used by a #GstPipeline.</doc>
+ <implements name="Gio.Initable"/>
+ <constructor name="new" c:identifier="gst_net_time_provider_new">
+ <doc xml:space="preserve">Allows network clients to get the current time of @clock.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the new #GstNetTimeProvider, or NULL on error</doc>
+ <type name="NetTimeProvider" c:type="GstNetTimeProvider*"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClock to export over the network</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </parameter>
+ <parameter name="address"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">an address to bind on as a dotted quad
+ (xxx.xxx.xxx.xxx), IPv6 address, or NULL to bind to all addresses</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">a port to bind on, or 0 to let the kernel choose</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="active" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="address"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="clock"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="Gst.Clock"/>
+ </property>
+ <property name="port"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="qos-dscp" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Object" c:type="GstObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="NetTimeProviderPrivate"
+ c:type="GstNetTimeProviderPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="NetTimeProviderClass"
+ c:type="GstNetTimeProviderClass"
+ glib:is-gtype-struct-for="NetTimeProvider">
+ <field name="parent_class">
+ <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+ </field>
+ <field name="_gst_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="NetTimeProviderPrivate"
+ c:type="GstNetTimeProviderPrivate"
+ disguised="1">
+ </record>
+ <class name="NtpClock"
+ c:symbol-prefix="ntp_clock"
+ c:type="GstNtpClock"
+ parent="NetClientClock"
+ glib:type-name="GstNtpClock"
+ glib:get-type="gst_ntp_clock_get_type"
+ glib:type-struct="NtpClockClass">
+ <constructor name="new" c:identifier="gst_ntp_clock_new" version="1.6">
+ <doc xml:space="preserve">Create a new #GstNtpClock that will report the time provided by
+the NTPv4 server on @remote_address and @remote_port.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstClock that receives a time from the remote
+clock.</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a name for the clock</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="remote_address" transfer-ownership="none">
+ <doc xml:space="preserve">the address or hostname of the remote clock provider</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="remote_port" transfer-ownership="none">
+ <doc xml:space="preserve">the port of the remote clock provider</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="base_time" transfer-ownership="none">
+ <doc xml:space="preserve">initial time of the clock</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <field name="clock">
+ <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="NetClientClockPrivate" c:type="GstNetClientClockPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="NtpClockClass"
+ c:type="GstNtpClockClass"
+ glib:is-gtype-struct-for="NtpClock">
+ <field name="parent_class">
+ <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <constant name="PTP_CLOCK_ID_NONE"
+ value="18446744073709551615"
+ c:type="GST_PTP_CLOCK_ID_NONE">
+ <doc xml:space="preserve">PTP clock identification that can be passed to gst_ptp_init() to
+automatically select one based on the MAC address of interfaces</doc>
+ <type name="guint64" c:type="guint64"/>
+ </constant>
+ <constant name="PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED"
+ value="GstPtpStatisticsBestMasterClockSelected"
+ c:type="GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="PTP_STATISTICS_NEW_DOMAIN_FOUND"
+ value="GstPtpStatisticsNewDomainFound"
+ c:type="GST_PTP_STATISTICS_NEW_DOMAIN_FOUND">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="PTP_STATISTICS_PATH_DELAY_MEASURED"
+ value="GstPtpStatisticsPathDelayMeasured"
+ c:type="GST_PTP_STATISTICS_PATH_DELAY_MEASURED">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="PTP_STATISTICS_TIME_UPDATED"
+ value="GstPtpStatisticsTimeUpdated"
+ c:type="GST_PTP_STATISTICS_TIME_UPDATED">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="PtpClock"
+ c:symbol-prefix="ptp_clock"
+ c:type="GstPtpClock"
+ parent="Gst.SystemClock"
+ glib:type-name="GstPtpClock"
+ glib:get-type="gst_ptp_clock_get_type"
+ glib:type-struct="PtpClockClass">
+ <doc xml:space="preserve">GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in slave-only
+mode, that allows a GStreamer pipeline to synchronize to a PTP network
+clock in some specific domain.
+
+The PTP subsystem can be initialized with gst_ptp_init(), which then starts
+a helper process to do the actual communication via the PTP ports. This is
+required as PTP listens on ports &lt; 1024 and thus requires special
+privileges. Once this helper process is started, the main process will
+synchronize to all PTP domains that are detected on the selected
+interfaces.
+
+gst_ptp_clock_new() then allows to create a GstClock that provides the PTP
+time from a master clock inside a specific PTP domain. This clock will only
+return valid timestamps once the timestamps in the PTP domain are known. To
+check this, you can use gst_clock_wait_for_sync(), the GstClock::synced
+signal and gst_clock_is_synced().
+
+To gather statistics about the PTP clock synchronization,
+gst_ptp_statistics_callback_add() can be used. This gives the application
+the possibility to collect all kinds of statistics from the clock
+synchronization.</doc>
+ <constructor name="new" c:identifier="gst_ptp_clock_new" version="1.6">
+ <doc xml:space="preserve">Creates a new PTP clock instance that exports the PTP time of the master
+clock in @domain. This clock can be slaved to other clocks as needed.
+
+If gst_ptp_init() was not called before, this will call gst_ptp_init() with
+default parameters.
+
+This clock only returns valid timestamps after it received the first
+times from the PTP master clock on the network. Once this happens the
+GstPtpClock::internal-clock property will become non-NULL. You can
+check this with gst_clock_wait_for_sync(), the GstClock::synced signal and
+gst_clock_is_synced().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstClock</doc>
+ <type name="Gst.Clock" c:type="GstClock*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">Name of the clock</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="domain" transfer-ownership="none">
+ <doc xml:space="preserve">PTP domain</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <property name="domain"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="grandmaster-clock-id" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <property name="internal-clock" transfer-ownership="none">
+ <type name="Gst.Clock"/>
+ </property>
+ <property name="master-clock-id" transfer-ownership="none">
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="clock">
+ <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="PtpClockPrivate" c:type="GstPtpClockPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="PtpClockClass"
+ c:type="GstPtpClockClass"
+ glib:is-gtype-struct-for="PtpClock">
+ <doc xml:space="preserve">Opaque #GstPtpClockClass structure.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">parented to #GstSystemClockClass</doc>
+ <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="PtpClockPrivate" c:type="GstPtpClockPrivate" disguised="1">
+ </record>
+ <callback name="PtpStatisticsCallback" c:type="GstPtpStatisticsCallback">
+ <doc xml:space="preserve">The statistics can be the following structures:
+
+GST_PTP_STATISTICS_NEW_DOMAIN_FOUND:
+"domain" G_TYPE_UINT The domain identifier of the domain
+"clock" GST_TYPE_CLOCK The internal clock that is slaved to the
+ PTP domain
+
+GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED:
+"domain" G_TYPE_UINT The domain identifier of the domain
+"master-clock-id" G_TYPE_UINT64 PTP clock identifier of the selected master
+ clock
+"master-clock-port" G_TYPE_UINT PTP port number of the selected master clock
+"grandmaster-clock-id" G_TYPE_UINT64 PTP clock identifier of the grandmaster clock
+
+GST_PTP_STATISTICS_PATH_DELAY_MEASURED:
+"domain" G_TYPE_UINT The domain identifier of the domain
+"mean-path-delay-avg" GST_TYPE_CLOCK_TIME Average mean path delay
+"mean-path-delay" GST_TYPE_CLOCK_TIME Latest mean path delay
+"delay-request-delay" GST_TYPE_CLOCK_TIME Delay of DELAY_REQ / DELAY_RESP messages
+
+GST_PTP_STATISTICS_TIME_UPDATED:
+"domain" G_TYPE_UINT The domain identifier of the domain
+"mean-path-delay-avg" GST_TYPE_CLOCK_TIME Average mean path delay
+"local-time" GST_TYPE_CLOCK_TIME Local time that corresponds to ptp-time
+"ptp-time" GST_TYPE_CLOCK_TIME Newly measured PTP time at local-time
+"estimated-ptp-time" GST_TYPE_CLOCK_TIME Estimated PTP time based on previous measurements
+"discontinuity" G_TYPE_INT64 Difference between estimated and measured PTP time
+"synced" G_TYPE_BOOLEAN Currently synced to the remote clock
+"r-squared" G_TYPE_DOUBLE R² of clock estimation regression
+"internal-time" GST_TYPE_CLOCK_TIME Internal time clock parameter
+"external-time" GST_TYPE_CLOCK_TIME External time clock parameter
+"rate-num" G_TYPE_UINT64 Internal/external rate numerator
+"rate-den" G_TYPE_UINT64 Internal/external rate denominator
+"rate" G_TYPE_DOUBLE Internal/external rate
+
+If %FALSE is returned, the callback is removed and never called again.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="domain" transfer-ownership="none">
+ <doc xml:space="preserve">PTP domain identifier</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="stats" transfer-ownership="none">
+ <doc xml:space="preserve">New statistics</doc>
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <doc xml:space="preserve">Data passed to gst_ptp_statistics_callback_add()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <function name="buffer_add_net_address_meta"
+ c:identifier="gst_buffer_add_net_address_meta">
+ <doc xml:space="preserve">Attaches @addr as metadata in a #GstNetAddressMeta to @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstNetAddressMeta connected to @buffer</doc>
+ <type name="NetAddressMeta" c:type="GstNetAddressMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="addr" transfer-ownership="none">
+ <doc xml:space="preserve">a @GSocketAddress to connect to @buffer</doc>
+ <type name="Gio.SocketAddress" c:type="GSocketAddress*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_net_control_message_meta"
+ c:identifier="gst_buffer_add_net_control_message_meta">
+ <doc xml:space="preserve">Attaches @message as metadata in a #GstNetControlMessageMeta to @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstNetControlMessageMeta connected to @buffer</doc>
+ <type name="NetControlMessageMeta" c:type="GstNetControlMessageMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a @GSocketControlMessage to attach to @buffer</doc>
+ <type name="Gio.SocketControlMessage"
+ c:type="GSocketControlMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_get_net_address_meta"
+ c:identifier="gst_buffer_get_net_address_meta">
+ <doc xml:space="preserve">Find the #GstNetAddressMeta on @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstNetAddressMeta or %NULL when there
+is no such metadata on @buffer.</doc>
+ <type name="NetAddressMeta" c:type="GstNetAddressMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="net_address_meta_api_get_type"
+ c:identifier="gst_net_address_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="net_address_meta_get_info"
+ c:identifier="gst_net_address_meta_get_info"
+ moved-to="NetAddressMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="net_control_message_meta_api_get_type"
+ c:identifier="gst_net_control_message_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="net_control_message_meta_get_info"
+ c:identifier="gst_net_control_message_meta_get_info"
+ moved-to="NetControlMessageMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="net_time_packet_receive"
+ c:identifier="gst_net_time_packet_receive"
+ moved-to="NetTimePacket.receive"
+ throws="1">
+ <doc xml:space="preserve">Receives a #GstNetTimePacket over a socket. Handles interrupted system
+calls, but otherwise returns NULL on error.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstNetTimePacket, or NULL on error. Free
+ with gst_net_time_packet_free() when done.</doc>
+ <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">socket to receive the time packet on</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="src_address"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">address of variable to return sender address</doc>
+ <type name="Gio.SocketAddress" c:type="GSocketAddress**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="ptp_deinit" c:identifier="gst_ptp_deinit" version="1.6">
+ <doc xml:space="preserve">Deinitialize the GStreamer PTP subsystem and stop the PTP clock. If there
+are any remaining GstPtpClock instances, they won't be further synchronized
+to the PTP network clock.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="ptp_init" c:identifier="gst_ptp_init" version="1.6">
+ <doc xml:space="preserve">Initialize the GStreamer PTP subsystem and create a PTP ordinary clock in
+slave-only mode for all domains on the given @interfaces with the
+given @clock_id.
+
+If @clock_id is %GST_PTP_CLOCK_ID_NONE, a clock id is automatically
+generated from the MAC address of the first network interface.
+
+This function is automatically called by gst_ptp_clock_new() with default
+parameters if it wasn't called before.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the GStreamer PTP clock subsystem could be initialized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="clock_id" transfer-ownership="none">
+ <doc xml:space="preserve">PTP clock id of this process' clock or %GST_PTP_CLOCK_ID_NONE</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="interfaces"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">network interfaces to run the clock on</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="ptp_is_initialized"
+ c:identifier="gst_ptp_is_initialized"
+ version="1.6">
+ <doc xml:space="preserve">Check if the GStreamer PTP clock subsystem is initialized.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the GStreamer PTP clock subsystem is intialized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="ptp_is_supported"
+ c:identifier="gst_ptp_is_supported"
+ version="1.6">
+ <doc xml:space="preserve">Check if PTP clocks are generally supported on this system, and if previous
+initializations did not fail.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if PTP clocks are generally supported on this system, and
+previous initializations did not fail.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="ptp_statistics_callback_add"
+ c:identifier="gst_ptp_statistics_callback_add"
+ version="1.6">
+ <doc xml:space="preserve">Installs a new statistics callback for gathering PTP statistics. See
+GstPtpStatisticsCallback for a list of statistics that are provided.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Id for the callback that can be passed to
+gst_ptp_statistics_callback_remove()</doc>
+ <type name="gulong" c:type="gulong"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">GstPtpStatisticsCallback to call</doc>
+ <type name="PtpStatisticsCallback"
+ c:type="GstPtpStatisticsCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Data to pass to the callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_data" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">GDestroyNotify to destroy the data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="ptp_statistics_callback_remove"
+ c:identifier="gst_ptp_statistics_callback_remove"
+ version="1.6">
+ <doc xml:space="preserve">Removes a PTP statistics callback that was previously added with
+gst_ptp_statistics_callback_add().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">Callback id to remove</doc>
+ <type name="gulong" c:type="gulong"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstPbutils-1.0.gir b/girs/GstPbutils-1.0.gir
new file mode 100644
index 0000000000..5cb76d9144
--- /dev/null
+++ b/girs/GstPbutils-1.0.gir
@@ -0,0 +1,4126 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <include name="GstAudio" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <include name="GstVideo" version="1.0"/>
+ <package name="gstreamer-pbutils-1.0"/>
+ <c:include name="gst/pbutils/pbutils.h"/>
+ <namespace name="GstPbutils"
+ version="1.0"
+ shared-library="libgstpbutils-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <alias name="DiscovererAudioInfoClass"
+ c:type="GstDiscovererAudioInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="DiscovererContainerInfoClass"
+ c:type="GstDiscovererContainerInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="DiscovererInfoClass" c:type="GstDiscovererInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="DiscovererStreamInfoClass"
+ c:type="GstDiscovererStreamInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="DiscovererSubtitleInfoClass"
+ c:type="GstDiscovererSubtitleInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="DiscovererVideoInfoClass"
+ c:type="GstDiscovererVideoInfoClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <alias name="EncodingTargetClass" c:type="GstEncodingTargetClass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </alias>
+ <class name="AudioVisualizer"
+ c:symbol-prefix="audio_visualizer"
+ c:type="GstAudioVisualizer"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstAudioVisualizer"
+ glib:get-type="gst_audio_visualizer_get_type"
+ glib:type-struct="AudioVisualizerClass">
+ <doc xml:space="preserve">A baseclass for scopes (visualizers). It takes care of re-fitting the
+audio-rate to video-rate and handles renegotiation (downstream video size
+changes).
+
+It also provides several background shading effects. These effects are
+applied to a previous picture before the render() implementation can draw a
+new frame.</doc>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="render">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </instance-parameter>
+ <parameter name="audio" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="video" transfer-ownership="none">
+ <type name="GstVideo.VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="setup">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <property name="shade-amount" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="shader" writable="1" transfer-ownership="none">
+ <type name="AudioVisualizerShader"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="req_spf">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="vinfo">
+ <type name="GstVideo.VideoInfo" c:type="GstVideoInfo"/>
+ </field>
+ <field name="ainfo">
+ <type name="GstAudio.AudioInfo" c:type="GstAudioInfo"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="AudioVisualizerPrivate"
+ c:type="GstAudioVisualizerPrivate*"/>
+ </field>
+ </class>
+ <record name="AudioVisualizerClass"
+ c:type="GstAudioVisualizerClass"
+ glib:is-gtype-struct-for="AudioVisualizer">
+ <field name="parent_class">
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="setup">
+ <callback name="setup">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="render">
+ <callback name="render">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </parameter>
+ <parameter name="audio" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="video" transfer-ownership="none">
+ <type name="GstVideo.VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <record name="AudioVisualizerPrivate"
+ c:type="GstAudioVisualizerPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="AudioVisualizerShader"
+ glib:type-name="GstAudioVisualizerShader"
+ glib:get-type="gst_audio_visualizer_shader_get_type"
+ c:type="GstAudioVisualizerShader">
+ <doc xml:space="preserve">Different types of supported background shading functions.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no shading</doc>
+ </member>
+ <member name="fade"
+ value="1"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE"
+ glib:nick="fade">
+ <doc xml:space="preserve">plain fading</doc>
+ </member>
+ <member name="fade_and_move_up"
+ value="2"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP"
+ glib:nick="fade-and-move-up">
+ <doc xml:space="preserve">fade and move up</doc>
+ </member>
+ <member name="fade_and_move_down"
+ value="3"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN"
+ glib:nick="fade-and-move-down">
+ <doc xml:space="preserve">fade and move down</doc>
+ </member>
+ <member name="fade_and_move_left"
+ value="4"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT"
+ glib:nick="fade-and-move-left">
+ <doc xml:space="preserve">fade and move left</doc>
+ </member>
+ <member name="fade_and_move_right"
+ value="5"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT"
+ glib:nick="fade-and-move-right">
+ <doc xml:space="preserve">fade and move right</doc>
+ </member>
+ <member name="fade_and_move_horiz_out"
+ value="6"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT"
+ glib:nick="fade-and-move-horiz-out">
+ <doc xml:space="preserve">fade and move horizontally out</doc>
+ </member>
+ <member name="fade_and_move_horiz_in"
+ value="7"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN"
+ glib:nick="fade-and-move-horiz-in">
+ <doc xml:space="preserve">fade and move horizontally in</doc>
+ </member>
+ <member name="fade_and_move_vert_out"
+ value="8"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT"
+ glib:nick="fade-and-move-vert-out">
+ <doc xml:space="preserve">fade and move vertically out</doc>
+ </member>
+ <member name="fade_and_move_vert_in"
+ value="9"
+ c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN"
+ glib:nick="fade-and-move-vert-in">
+ <doc xml:space="preserve">fade and move vertically in</doc>
+ </member>
+ </enumeration>
+ <callback name="AudioVisualizerShaderFunc"
+ c:type="GstAudioVisualizerShaderFunc">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="scope" transfer-ownership="none">
+ <type name="AudioVisualizer" c:type="GstAudioVisualizer*"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <type name="GstVideo.VideoFrame" c:type="const GstVideoFrame*"/>
+ </parameter>
+ <parameter name="d" transfer-ownership="none">
+ <type name="GstVideo.VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="Discoverer"
+ c:symbol-prefix="discoverer"
+ c:type="GstDiscoverer"
+ parent="GObject.Object"
+ glib:type-name="GstDiscoverer"
+ glib:get-type="gst_discoverer_get_type"
+ glib:type-struct="DiscovererClass">
+ <doc xml:space="preserve">The #GstDiscoverer is a utility object which allows to get as much
+information as possible from one or many URIs.
+
+It provides two APIs, allowing usage in blocking or non-blocking mode.
+
+The blocking mode just requires calling gst_discoverer_discover_uri()
+with the URI one wishes to discover.
+
+The non-blocking mode requires a running #GMainLoop iterating a
+#GMainContext, where one connects to the various signals, appends the
+URIs to be processed (through gst_discoverer_discover_uri_async()) and then
+asks for the discovery to begin (through gst_discoverer_start()).
+By default this will use the GLib default main context unless you have
+set a custom context using g_main_context_push_thread_default().
+
+All the information is returned in a #GstDiscovererInfo structure.</doc>
+ <constructor name="new" c:identifier="gst_discoverer_new" throws="1">
+ <doc xml:space="preserve">Creates a new #GstDiscoverer with the provided timeout.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstDiscoverer.
+If an error occurred when creating the discoverer, @err will be set
+accordingly and %NULL will be returned. If @err is set, the caller must
+free it when no longer needed using g_error_free().</doc>
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">timeout per file, in nanoseconds. Allowed are values between
+ one second (#GST_SECOND) and one hour (3600 * #GST_SECOND)</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <virtual-method name="discovered">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </parameter>
+ <parameter name="err" transfer-ownership="none">
+ <type name="GLib.Error" c:type="const GError*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="finished">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="source_setup">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ <parameter name="source" transfer-ownership="none">
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="starting">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <method name="discover_uri"
+ c:identifier="gst_discoverer_discover_uri"
+ throws="1">
+ <doc xml:space="preserve">Synchronously discovers the given @uri.
+
+A copy of @uri will be made internally, so the caller can safely g_free()
+afterwards.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the result of the scanning. Can be %NULL if an
+error occurred.</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDiscoverer</doc>
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">The URI to run on.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="discover_uri_async"
+ c:identifier="gst_discoverer_discover_uri_async">
+ <doc xml:space="preserve">Appends the given @uri to the list of URIs to discoverer. The actual
+discovery of the @uri will only take place if gst_discoverer_start() has
+been called.
+
+A copy of @uri will be made internally, so the caller can safely g_free()
+afterwards.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @uri was successfully appended to the list of pending
+uris, else %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDiscoverer</doc>
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI to add.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="start" c:identifier="gst_discoverer_start">
+ <doc xml:space="preserve">Allow asynchronous discovering of URIs to take place.
+A #GMainLoop must be available for #GstDiscoverer to properly work in
+asynchronous mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDiscoverer</doc>
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="stop" c:identifier="gst_discoverer_stop">
+ <doc xml:space="preserve">Stop the discovery of any pending URIs and clears the list of
+pending URIS (if any).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="discoverer" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDiscoverer</doc>
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <property name="timeout"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">The duration (in nanoseconds) after which the discovery of an individual
+URI will timeout.
+
+If the discovery of a URI times out, the %GST_DISCOVERER_TIMEOUT will be
+set on the result flags.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </property>
+ <field name="parent">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="DiscovererPrivate" c:type="GstDiscovererPrivate*"/>
+ </field>
+ <field name="_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="discovered" when="last">
+ <doc xml:space="preserve">Will be emitted in async mode when all information on a URI could be
+discovered, or an error occurred.
+
+When an error occurs, @info might still contain some partial information,
+depending on the circumstances of the error.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">the results #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo"/>
+ </parameter>
+ <parameter name="error"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">#GError, which will be non-NULL
+ if an error occurred during
+ discovery. You must not free
+ this #GError, it will be freed by
+ the discoverer.</doc>
+ <type name="GLib.Error"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="finished" when="last">
+ <doc xml:space="preserve">Will be emitted in async mode when all pending URIs have been processed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="source-setup" when="last">
+ <doc xml:space="preserve">This signal is emitted after the source element has been created for, so
+the URI being discovered, so it can be configured by setting additional
+properties (e.g. set a proxy server for an http source, or set the device
+and read speed for an audio cd source).
+
+This signal is usually emitted from the context of a GStreamer streaming
+thread.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="source" transfer-ownership="none">
+ <doc xml:space="preserve">source element</doc>
+ <type name="Gst.Element"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="starting" when="last">
+ <doc xml:space="preserve">Will be emitted when the discover starts analyzing the pending URIs</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ </class>
+ <class name="DiscovererAudioInfo"
+ c:symbol-prefix="discoverer_audio_info"
+ c:type="GstDiscovererAudioInfo"
+ parent="DiscovererStreamInfo"
+ glib:type-name="GstDiscovererAudioInfo"
+ glib:get-type="gst_discoverer_audio_info_get_type">
+ <doc xml:space="preserve">#GstDiscovererStreamInfo specific to audio streams.</doc>
+ <method name="get_bitrate"
+ c:identifier="gst_discoverer_audio_info_get_bitrate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the average or nominal bitrate of the stream in bits/second.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_channel_mask"
+ c:identifier="gst_discoverer_audio_info_get_channel_mask"
+ version="1.14">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the channel-mask of the stream, refer to
+gst_audio_channel_positions_from_mask() for more
+information.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_channels"
+ c:identifier="gst_discoverer_audio_info_get_channels">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of channels in the stream.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_depth"
+ c:identifier="gst_discoverer_audio_info_get_depth">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of bits used per sample in each channel.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_language"
+ c:identifier="gst_discoverer_audio_info_get_language">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the language of the stream, or NULL if unknown.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_bitrate"
+ c:identifier="gst_discoverer_audio_info_get_max_bitrate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum bitrate of the stream in bits/second.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_sample_rate"
+ c:identifier="gst_discoverer_audio_info_get_sample_rate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the sample rate of the stream in Hertz.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererAudioInfo</doc>
+ <type name="DiscovererAudioInfo"
+ c:type="const GstDiscovererAudioInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="DiscovererClass"
+ c:type="GstDiscovererClass"
+ glib:is-gtype-struct-for="Discoverer">
+ <field name="parentclass">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ <field name="finished">
+ <callback name="finished">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="starting">
+ <callback name="starting">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="discovered">
+ <callback name="discovered">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </parameter>
+ <parameter name="err" transfer-ownership="none">
+ <type name="GLib.Error" c:type="const GError*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="source_setup">
+ <callback name="source_setup">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="discoverer" transfer-ownership="none">
+ <type name="Discoverer" c:type="GstDiscoverer*"/>
+ </parameter>
+ <parameter name="source" transfer-ownership="none">
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_reserved">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <class name="DiscovererContainerInfo"
+ c:symbol-prefix="discoverer_container_info"
+ c:type="GstDiscovererContainerInfo"
+ parent="DiscovererStreamInfo"
+ glib:type-name="GstDiscovererContainerInfo"
+ glib:get-type="gst_discoverer_container_info_get_type">
+ <doc xml:space="preserve">#GstDiscovererStreamInfo specific to container streams.</doc>
+ <method name="get_streams"
+ c:identifier="gst_discoverer_container_info_get_streams">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of
+#GstDiscovererStreamInfo this container stream offers.
+Free with gst_discoverer_stream_info_list_free() after usage.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererContainerInfo"
+ c:type="GstDiscovererContainerInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <class name="DiscovererInfo"
+ c:symbol-prefix="discoverer_info"
+ c:type="GstDiscovererInfo"
+ parent="GObject.Object"
+ glib:type-name="GstDiscovererInfo"
+ glib:get-type="gst_discoverer_info_get_type">
+ <doc xml:space="preserve">Structure containing the information of a URI analyzed by #GstDiscoverer.</doc>
+ <function name="from_variant"
+ c:identifier="gst_discoverer_info_from_variant"
+ version="1.6">
+ <doc xml:space="preserve">Parses a #GVariant as produced by gst_discoverer_info_to_variant()
+back to a #GstDiscovererInfo.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly-allocated #GstDiscovererInfo.</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="variant" transfer-ownership="none">
+ <doc xml:space="preserve">A #GVariant to deserialize into a #GstDiscovererInfo.</doc>
+ <type name="GLib.Variant" c:type="GVariant*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="copy" c:identifier="gst_discoverer_info_copy">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A copy of the #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ptr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_audio_streams"
+ c:identifier="gst_discoverer_info_get_audio_streams">
+ <doc xml:space="preserve">Finds all the #GstDiscovererAudioInfo contained in @info</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of
+matching #GstDiscovererStreamInfo. The caller should free it with
+gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_container_streams"
+ c:identifier="gst_discoverer_info_get_container_streams">
+ <doc xml:space="preserve">Finds all the #GstDiscovererContainerInfo contained in @info</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of
+matching #GstDiscovererStreamInfo. The caller should free it with
+gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_duration"
+ c:identifier="gst_discoverer_info_get_duration">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the URI in #GstClockTime (nanoseconds).</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_live"
+ c:identifier="gst_discoverer_info_get_live"
+ version="1.14">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether the URI is live.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_misc"
+ c:identifier="gst_discoverer_info_get_misc"
+ deprecated="1">
+ <doc-deprecated xml:space="preserve">This functions is deprecated since version 1.4, use
+#gst_discoverer_info_get_missing_elements_installer_details</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Miscellaneous information stored as a #GstStructure
+(for example: information about missing plugins). If you wish to use the
+#GstStructure after the life-time of @info, you will need to copy it.</doc>
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_missing_elements_installer_details"
+ c:identifier="gst_discoverer_info_get_missing_elements_installer_details"
+ version="1.4">
+ <doc xml:space="preserve">Get the installer details for missing elements</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">An array of strings
+containing informations about how to install the various missing elements
+for @info to be usable. If you wish to use the strings after the life-time
+of @info, you will need to copy them.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo to retrieve installer detail
+for the missing element</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_result" c:identifier="gst_discoverer_info_get_result">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the discovery as a #GstDiscovererResult.</doc>
+ <type name="DiscovererResult" c:type="GstDiscovererResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_seekable"
+ c:identifier="gst_discoverer_info_get_seekable">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the whether the URI is seekable.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_info"
+ c:identifier="gst_discoverer_info_get_stream_info">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the structure (or topology) of the URI as a
+#GstDiscovererStreamInfo.
+This structure can be traversed to see the original hierarchy. Unref with
+gst_discoverer_stream_info_unref() after usage.</doc>
+ <type name="DiscovererStreamInfo" c:type="GstDiscovererStreamInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_list"
+ c:identifier="gst_discoverer_info_get_stream_list">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the list of
+all streams contained in the #info. Free after usage
+with gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_streams"
+ c:identifier="gst_discoverer_info_get_streams">
+ <doc xml:space="preserve">Finds the #GstDiscovererStreamInfo contained in @info that match the
+given @streamtype.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of
+matching #GstDiscovererStreamInfo. The caller should free it with
+gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ <parameter name="streamtype" transfer-ownership="none">
+ <doc xml:space="preserve">a #GType derived from #GstDiscovererStreamInfo</doc>
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_subtitle_streams"
+ c:identifier="gst_discoverer_info_get_subtitle_streams">
+ <doc xml:space="preserve">Finds all the #GstDiscovererSubtitleInfo contained in @info</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of
+matching #GstDiscovererStreamInfo. The caller should free it with
+gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tags" c:identifier="gst_discoverer_info_get_tags">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">all tags contained in the URI. If you wish to use
+the tags after the life-time of @info, you will need to copy them.</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_toc" c:identifier="gst_discoverer_info_get_toc">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TOC contained in the URI. If you wish to use
+the TOC after the life-time of @info, you will need to copy it.</doc>
+ <type name="Gst.Toc" c:type="const GstToc*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_uri" c:identifier="gst_discoverer_info_get_uri">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the URI to which this information corresponds to.
+Copy it if you wish to use it after the life-time of @info.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="const GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_video_streams"
+ c:identifier="gst_discoverer_info_get_video_streams">
+ <doc xml:space="preserve">Finds all the #GstDiscovererVideoInfo contained in @info</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of
+matching #GstDiscovererStreamInfo. The caller should free it with
+gst_discoverer_stream_info_list_free().</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="to_variant"
+ c:identifier="gst_discoverer_info_to_variant"
+ version="1.6">
+ <doc xml:space="preserve">Serializes @info to a #GVariant that can be parsed again
+through gst_discoverer_info_from_variant().
+
+Note that any #GstToc (s) that might have been discovered will not be serialized
+for now.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly-allocated #GVariant representing @info.</doc>
+ <type name="GLib.Variant" c:type="GVariant*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstDiscovererInfo</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">A combination of #GstDiscovererSerializeFlags to specify
+what needs to be serialized.</doc>
+ <type name="DiscovererSerializeFlags"
+ c:type="GstDiscovererSerializeFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="DiscovererPrivate"
+ c:type="GstDiscovererPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="DiscovererResult"
+ glib:type-name="GstDiscovererResult"
+ glib:get-type="gst_discoverer_result_get_type"
+ c:type="GstDiscovererResult">
+ <doc xml:space="preserve">Result values for the discovery process.</doc>
+ <member name="ok"
+ value="0"
+ c:identifier="GST_DISCOVERER_OK"
+ glib:nick="ok">
+ <doc xml:space="preserve">The discovery was successful</doc>
+ </member>
+ <member name="uri_invalid"
+ value="1"
+ c:identifier="GST_DISCOVERER_URI_INVALID"
+ glib:nick="uri-invalid">
+ <doc xml:space="preserve">the URI is invalid</doc>
+ </member>
+ <member name="error"
+ value="2"
+ c:identifier="GST_DISCOVERER_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">an error happened and the GError is set</doc>
+ </member>
+ <member name="timeout"
+ value="3"
+ c:identifier="GST_DISCOVERER_TIMEOUT"
+ glib:nick="timeout">
+ <doc xml:space="preserve">the discovery timed-out</doc>
+ </member>
+ <member name="busy"
+ value="4"
+ c:identifier="GST_DISCOVERER_BUSY"
+ glib:nick="busy">
+ <doc xml:space="preserve">the discoverer was already discovering a file</doc>
+ </member>
+ <member name="missing_plugins"
+ value="5"
+ c:identifier="GST_DISCOVERER_MISSING_PLUGINS"
+ glib:nick="missing-plugins">
+ <doc xml:space="preserve">Some plugins are missing for full discovery</doc>
+ </member>
+ </enumeration>
+ <bitfield name="DiscovererSerializeFlags"
+ version="1.6"
+ glib:type-name="GstDiscovererSerializeFlags"
+ glib:get-type="gst_discoverer_serialize_flags_get_type"
+ c:type="GstDiscovererSerializeFlags">
+ <doc xml:space="preserve">You can use these flags to control what is serialized by
+gst_discoverer_info_to_variant()</doc>
+ <member name="basic"
+ value="0"
+ c:identifier="GST_DISCOVERER_SERIALIZE_BASIC"
+ glib:nick="basic">
+ <doc xml:space="preserve">Serialize only basic information, excluding
+caps, tags and miscellaneous information</doc>
+ </member>
+ <member name="caps"
+ value="1"
+ c:identifier="GST_DISCOVERER_SERIALIZE_CAPS"
+ glib:nick="caps">
+ <doc xml:space="preserve">Serialize the caps for each stream</doc>
+ </member>
+ <member name="tags"
+ value="2"
+ c:identifier="GST_DISCOVERER_SERIALIZE_TAGS"
+ glib:nick="tags">
+ <doc xml:space="preserve">Serialize the tags for each stream</doc>
+ </member>
+ <member name="misc"
+ value="4"
+ c:identifier="GST_DISCOVERER_SERIALIZE_MISC"
+ glib:nick="misc">
+ <doc xml:space="preserve">Serialize miscellaneous information for each stream</doc>
+ </member>
+ <member name="all"
+ value="7"
+ c:identifier="GST_DISCOVERER_SERIALIZE_ALL"
+ glib:nick="all">
+ <doc xml:space="preserve">Serialize all the available info, including
+caps, tags and miscellaneous information</doc>
+ </member>
+ </bitfield>
+ <class name="DiscovererStreamInfo"
+ c:symbol-prefix="discoverer_stream_info"
+ c:type="GstDiscovererStreamInfo"
+ parent="GObject.Object"
+ glib:type-name="GstDiscovererStreamInfo"
+ glib:get-type="gst_discoverer_stream_info_get_type">
+ <doc xml:space="preserve">Base structure for information concerning a media stream. Depending on the
+stream type, one can find more media-specific information in
+#GstDiscovererAudioInfo, #GstDiscovererVideoInfo, and
+#GstDiscovererContainerInfo.
+
+The #GstDiscovererStreamInfo represents the topology of the stream. Siblings
+can be iterated over with gst_discoverer_stream_info_get_next() and
+gst_discoverer_stream_info_get_previous(). Children (sub-streams) of a
+stream can be accessed using the #GstDiscovererContainerInfo API.
+
+As a simple example, if you run #GstDiscoverer on an AVI file with one audio
+and one video stream, you will get a #GstDiscovererContainerInfo
+corresponding to the AVI container, which in turn will have a
+#GstDiscovererAudioInfo sub-stream and a #GstDiscovererVideoInfo sub-stream
+for the audio and video streams respectively.</doc>
+ <function name="list_free"
+ c:identifier="gst_discoverer_stream_info_list_free">
+ <doc xml:space="preserve">Decrements the reference count of all contained #GstDiscovererStreamInfo
+and fress the #GList.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="infos" transfer-ownership="none">
+ <doc xml:space="preserve">a #GList of #GstDiscovererStreamInfo</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="DiscovererStreamInfo"/>
+ </type>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="get_caps"
+ c:identifier="gst_discoverer_stream_info_get_caps">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps of the stream. Unref with
+#gst_caps_unref after usage.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_misc"
+ c:identifier="gst_discoverer_stream_info_get_misc"
+ deprecated="1">
+ <doc-deprecated xml:space="preserve">This functions is deprecated since version 1.4, use
+#gst_discoverer_info_get_missing_elements_installer_details</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">additional information regarding the stream (for
+example codec version, profile, etc..). If you wish to use the #GstStructure
+after the life-time of @info you will need to copy it.</doc>
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_next"
+ c:identifier="gst_discoverer_stream_info_get_next">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the next #GstDiscovererStreamInfo in a chain. %NULL
+for final streams.
+Unref with #gst_discoverer_stream_info_unref after usage.</doc>
+ <type name="DiscovererStreamInfo" c:type="GstDiscovererStreamInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_previous"
+ c:identifier="gst_discoverer_stream_info_get_previous">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the previous #GstDiscovererStreamInfo in a chain.
+%NULL for starting points. Unref with #gst_discoverer_stream_info_unref
+after usage.</doc>
+ <type name="DiscovererStreamInfo" c:type="GstDiscovererStreamInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_id"
+ c:identifier="gst_discoverer_stream_info_get_stream_id">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the stream ID of this stream. If you wish to
+use the stream ID after the life-time of @info you will need to copy it.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_stream_type_nick"
+ c:identifier="gst_discoverer_stream_info_get_stream_type_nick">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a human readable name for the stream type of the given @info (ex : "audio",
+"container",...).</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tags"
+ c:identifier="gst_discoverer_stream_info_get_tags">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the tags contained in this stream. If you wish to
+use the tags after the life-time of @info you will need to copy them.</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_toc" c:identifier="gst_discoverer_stream_info_get_toc">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the TOC contained in this stream. If you wish to
+use the TOC after the life-time of @info you will need to copy it.</doc>
+ <type name="Gst.Toc" c:type="const GstToc*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererStreamInfo</doc>
+ <type name="DiscovererStreamInfo"
+ c:type="GstDiscovererStreamInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <class name="DiscovererSubtitleInfo"
+ c:symbol-prefix="discoverer_subtitle_info"
+ c:type="GstDiscovererSubtitleInfo"
+ parent="DiscovererStreamInfo"
+ glib:type-name="GstDiscovererSubtitleInfo"
+ glib:get-type="gst_discoverer_subtitle_info_get_type">
+ <doc xml:space="preserve">#GstDiscovererStreamInfo specific to subtitle streams (this includes text and
+image based ones).</doc>
+ <method name="get_language"
+ c:identifier="gst_discoverer_subtitle_info_get_language">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the language of the stream, or NULL if unknown.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererSubtitleInfo</doc>
+ <type name="DiscovererSubtitleInfo"
+ c:type="const GstDiscovererSubtitleInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <class name="DiscovererVideoInfo"
+ c:symbol-prefix="discoverer_video_info"
+ c:type="GstDiscovererVideoInfo"
+ parent="DiscovererStreamInfo"
+ glib:type-name="GstDiscovererVideoInfo"
+ glib:get-type="gst_discoverer_video_info_get_type">
+ <doc xml:space="preserve">#GstDiscovererStreamInfo specific to video streams (this includes images).</doc>
+ <method name="get_bitrate"
+ c:identifier="gst_discoverer_video_info_get_bitrate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the average or nominal bitrate of the video stream in bits/second.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_depth"
+ c:identifier="gst_discoverer_video_info_get_depth">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the depth in bits of the video stream.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_framerate_denom"
+ c:identifier="gst_discoverer_video_info_get_framerate_denom">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the framerate of the video stream (denominator).</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_framerate_num"
+ c:identifier="gst_discoverer_video_info_get_framerate_num">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the framerate of the video stream (numerator).</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_height"
+ c:identifier="gst_discoverer_video_info_get_height">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the height of the video stream in pixels.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_max_bitrate"
+ c:identifier="gst_discoverer_video_info_get_max_bitrate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum bitrate of the video stream in bits/second.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_par_denom"
+ c:identifier="gst_discoverer_video_info_get_par_denom">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the Pixel Aspect Ratio (PAR) of the video stream (denominator).</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_par_num"
+ c:identifier="gst_discoverer_video_info_get_par_num">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the Pixel Aspect Ratio (PAR) of the video stream (numerator).</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_width"
+ c:identifier="gst_discoverer_video_info_get_width">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the width of the video stream in pixels.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_image"
+ c:identifier="gst_discoverer_video_info_is_image">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the video stream corresponds to an image (i.e. only contains
+one frame).</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_interlaced"
+ c:identifier="gst_discoverer_video_info_is_interlaced">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the stream is interlaced, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstDiscovererVideoInfo</doc>
+ <type name="DiscovererVideoInfo"
+ c:type="const GstDiscovererVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <constant name="ENCODING_CATEGORY_CAPTURE"
+ value="capture"
+ c:type="GST_ENCODING_CATEGORY_CAPTURE">
+ <doc xml:space="preserve">#GstEncodingTarget category for recording and capture.
+Targets within this category are optimized for low latency encoding.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ENCODING_CATEGORY_DEVICE"
+ value="device"
+ c:type="GST_ENCODING_CATEGORY_DEVICE">
+ <doc xml:space="preserve">#GstEncodingTarget category for device-specific targets.
+The name of the target will usually be the constructor and model of the device,
+and that target will contain #GstEncodingProfiles suitable for that device.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ENCODING_CATEGORY_FILE_EXTENSION"
+ value="file-extension"
+ c:type="GST_ENCODING_CATEGORY_FILE_EXTENSION">
+ <doc xml:space="preserve">#GstEncodingTarget category for file extensions.
+The name of the target will be the name of the file extensions possible
+for a particular target. Those targets are defining like 'default' formats
+usually used for a particular file extension.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ENCODING_CATEGORY_ONLINE_SERVICE"
+ value="online-service"
+ c:type="GST_ENCODING_CATEGORY_ONLINE_SERVICE">
+ <doc xml:space="preserve">#GstEncodingTarget category for online-services.
+The name of the target will usually be the name of the online service
+and that target will contain #GstEncodingProfiles suitable for that online
+service.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="ENCODING_CATEGORY_STORAGE_EDITING"
+ value="storage-editing"
+ c:type="GST_ENCODING_CATEGORY_STORAGE_EDITING">
+ <doc xml:space="preserve">#GstEncodingTarget category for storage, archiving and editing targets.
+Those targets can be lossless and/or provide very fast random access content.
+The name of the target will usually be the container type or editing target,
+and that target will contain #GstEncodingProfiles suitable for editing or
+storage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="EncodingAudioProfile"
+ c:symbol-prefix="encoding_audio_profile"
+ c:type="GstEncodingAudioProfile"
+ parent="EncodingProfile"
+ glib:type-name="GstEncodingAudioProfile"
+ glib:get-type="gst_encoding_audio_profile_get_type"
+ glib:type-struct="EncodingAudioProfileClass">
+ <doc xml:space="preserve">Variant of #GstEncodingProfile for audio streams.</doc>
+ <constructor name="new" c:identifier="gst_encoding_audio_profile_new">
+ <doc xml:space="preserve">Creates a new #GstEncodingAudioProfile
+
+All provided allocatable arguments will be internally copied, so can be
+safely freed/unreferenced after calling this method.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstEncodingAudioProfile.</doc>
+ <type name="EncodingAudioProfile" c:type="GstEncodingAudioProfile*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="preset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the preset(s) to use on the encoder, can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="restriction"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps used to restrict the input to the encoder, can be
+NULL. See gst_encoding_profile_get_restriction() for more details.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="presence" transfer-ownership="none">
+ <doc xml:space="preserve">the number of time this stream must be used. 0 means any number of
+ times (including never)</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ </class>
+ <record name="EncodingAudioProfileClass"
+ c:type="GstEncodingAudioProfileClass"
+ disguised="1"
+ glib:is-gtype-struct-for="EncodingAudioProfile">
+ </record>
+ <class name="EncodingContainerProfile"
+ c:symbol-prefix="encoding_container_profile"
+ c:type="GstEncodingContainerProfile"
+ parent="EncodingProfile"
+ glib:type-name="GstEncodingContainerProfile"
+ glib:get-type="gst_encoding_container_profile_get_type"
+ glib:type-struct="EncodingContainerProfileClass">
+ <doc xml:space="preserve">Encoding profiles for containers. Keeps track of a list of #GstEncodingProfile</doc>
+ <constructor name="new"
+ c:identifier="gst_encoding_container_profile_new">
+ <doc xml:space="preserve">Creates a new #GstEncodingContainerProfile.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The newly created #GstEncodingContainerProfile.</doc>
+ <type name="EncodingContainerProfile"
+ c:type="GstEncodingContainerProfile*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The name of the container profile, can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The description of the container profile,
+ can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">The format to use for this profile</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="preset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The preset to use for this profile.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_profile"
+ c:identifier="gst_encoding_container_profile_add_profile">
+ <doc xml:space="preserve">Add a #GstEncodingProfile to the list of profiles handled by @container.
+
+No copy of @profile will be made, if you wish to use it elsewhere after this
+method you should increment its reference count.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @stream was properly added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEncodingContainerProfile to use</doc>
+ <type name="EncodingContainerProfile"
+ c:type="GstEncodingContainerProfile*"/>
+ </instance-parameter>
+ <parameter name="profile" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEncodingProfile to add.</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="contains_profile"
+ c:identifier="gst_encoding_container_profile_contains_profile">
+ <doc xml:space="preserve">Checks if @container contains a #GstEncodingProfile identical to
+@profile.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @container contains a #GstEncodingProfile identical
+to @profile, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="container" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingContainerProfile</doc>
+ <type name="EncodingContainerProfile"
+ c:type="GstEncodingContainerProfile*"/>
+ </instance-parameter>
+ <parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_profiles"
+ c:identifier="gst_encoding_container_profile_get_profiles">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">
+the list of contained #GstEncodingProfile.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="EncodingProfile"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingContainerProfile</doc>
+ <type name="EncodingContainerProfile"
+ c:type="GstEncodingContainerProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="EncodingContainerProfileClass"
+ c:type="GstEncodingContainerProfileClass"
+ disguised="1"
+ glib:is-gtype-struct-for="EncodingContainerProfile">
+ </record>
+ <class name="EncodingProfile"
+ c:symbol-prefix="encoding_profile"
+ c:type="GstEncodingProfile"
+ parent="GObject.Object"
+ glib:type-name="GstEncodingProfile"
+ glib:get-type="gst_encoding_profile_get_type"
+ glib:type-struct="EncodingProfileClass">
+ <doc xml:space="preserve">The opaque base class object for all encoding profiles. This contains generic
+information like name, description, format and preset.</doc>
+ <function name="find" c:identifier="gst_encoding_profile_find">
+ <doc xml:space="preserve">Find the #GstEncodingProfile with the specified name and category.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The matching #GstEncodingProfile or %NULL.</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </return-value>
+ <parameters>
+ <parameter name="targetname" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the target</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="profilename" transfer-ownership="none">
+ <doc xml:space="preserve">(allow-none): The name of the profile, if %NULL
+provided, it will default to the encoding profile called `default`.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="category"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The target category. Can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="from_discoverer"
+ c:identifier="gst_encoding_profile_from_discoverer">
+ <doc xml:space="preserve">Creates a #GstEncodingProfile matching the formats from the given
+#GstDiscovererInfo. Streams other than audio or video (eg,
+subtitles), are currently ignored.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstEncodingProfile or %NULL.</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstDiscovererInfo to read from</doc>
+ <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="copy" c:identifier="gst_encoding_profile_copy">
+ <doc xml:space="preserve">Makes a deep copy of @self</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The copy of @self
+
+Since 1.12</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstEncodingProfile to copy</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_allow_dynamic_output"
+ c:identifier="gst_encoding_profile_get_allow_dynamic_output">
+ <doc xml:space="preserve">Get whether the format that has been negotiated in at some point can be renegotiated
+later during the encoding.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_description"
+ c:identifier="gst_encoding_profile_get_description">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the description of the profile, can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_file_extension"
+ c:identifier="gst_encoding_profile_get_file_extension">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a suitable file extension for @profile, or NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_format" c:identifier="gst_encoding_profile_get_format">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps corresponding to the media format used
+in the profile. Unref after usage.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_input_caps"
+ c:identifier="gst_encoding_profile_get_input_caps">
+ <doc xml:space="preserve">Computes the full output caps that this @profile will be able to consume.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The full caps the given @profile can consume. Call
+gst_caps_unref() when you are done with the caps.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_encoding_profile_get_name">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the profile, can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_presence"
+ c:identifier="gst_encoding_profile_get_presence">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of times the profile is used in its parent
+container profile. If 0, it is not a mandatory stream.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_preset" c:identifier="gst_encoding_profile_get_preset">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPreset to be used in the profile.
+This is the name that has been set when saving the preset.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_preset_name"
+ c:identifier="gst_encoding_profile_get_preset_name">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstPreset factory to be used in the profile.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_restriction"
+ c:identifier="gst_encoding_profile_get_restriction">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The restriction #GstCaps to apply before the encoder
+that will be used in the profile. The fields present in restriction caps are
+properties of the raw stream (that is before encoding), such as height and
+width for video and depth and sampling rate for audio. Does not apply to
+#GstEncodingContainerProfile (since there is no corresponding raw stream).
+Can be %NULL. Unref after usage.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_type_nick"
+ c:identifier="gst_encoding_profile_get_type_nick">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the human-readable name of the type of @profile.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_enabled" c:identifier="gst_encoding_profile_is_enabled">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal" c:identifier="gst_encoding_profile_is_equal">
+ <doc xml:space="preserve">Checks whether the two #GstEncodingProfile are equal</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @a and @b are equal, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="a" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="b" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_allow_dynamic_output"
+ c:identifier="gst_encoding_profile_set_allow_dynamic_output">
+ <doc xml:space="preserve">Sets whether the format that has been negotiated in at some point can be renegotiated
+later during the encoding.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="allow_dynamic_output" transfer-ownership="none">
+ <doc xml:space="preserve">Whether the format that has been negotiated first can be renegotiated
+during the encoding</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_description"
+ c:identifier="gst_encoding_profile_set_description">
+ <doc xml:space="preserve">Set @description as the given description for the @profile. A copy of
+@description will be made internally.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="description"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the description to set on the profile</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_enabled"
+ c:identifier="gst_encoding_profile_set_enabled">
+ <doc xml:space="preserve">Set whether the profile should be used or not.
+
+Since 1.6</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE to disable #profile, %TRUE to enable it</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_format" c:identifier="gst_encoding_profile_set_format">
+ <doc xml:space="preserve">Sets the media format used in the profile.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the media format to use in the profile.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_name" c:identifier="gst_encoding_profile_set_name">
+ <doc xml:space="preserve">Set @name as the given name for the @profile. A copy of @name will be made
+internally.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name to set on the profile</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_presence"
+ c:identifier="gst_encoding_profile_set_presence">
+ <doc xml:space="preserve">Set the number of time the profile is used in its parent
+container profile. If 0, it is not a mandatory stream</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="presence" transfer-ownership="none">
+ <doc xml:space="preserve">the number of time the profile can be used</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_preset" c:identifier="gst_encoding_profile_set_preset">
+ <doc xml:space="preserve">Sets the name of the #GstElement that implements the #GstPreset interface
+to use for the profile.
+This is the name that has been set when saving the preset.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="preset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the element preset to use</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_preset_name"
+ c:identifier="gst_encoding_profile_set_preset_name">
+ <doc xml:space="preserve">Sets the name of the #GstPreset's factory to be used in the profile.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="preset_name"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The name of the preset to use in this @profile.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_restriction"
+ c:identifier="gst_encoding_profile_set_restriction">
+ <doc xml:space="preserve">Set the restriction #GstCaps to apply before the encoder
+that will be used in the profile. See gst_encoding_profile_get_restriction()
+for more about restrictions. Does not apply to #GstEncodingContainerProfile.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="profile" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingProfile</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </instance-parameter>
+ <parameter name="restriction"
+ transfer-ownership="full"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the restriction to apply</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="restriction-caps" writable="1" transfer-ownership="none">
+ <type name="Gst.Caps"/>
+ </property>
+ </class>
+ <record name="EncodingProfileClass"
+ c:type="GstEncodingProfileClass"
+ disguised="1"
+ glib:is-gtype-struct-for="EncodingProfile">
+ </record>
+ <class name="EncodingTarget"
+ c:symbol-prefix="encoding_target"
+ c:type="GstEncodingTarget"
+ parent="GObject.Object"
+ glib:type-name="GstEncodingTarget"
+ glib:get-type="gst_encoding_target_get_type">
+ <doc xml:space="preserve">Collection of #GstEncodingProfile for a specific target or use-case.
+
+When being stored/loaded, targets come from a specific category, like
+#GST_ENCODING_CATEGORY_DEVICE.</doc>
+ <constructor name="new" c:identifier="gst_encoding_target_new">
+ <doc xml:space="preserve">Creates a new #GstEncodingTarget.
+
+The name and category can only consist of lowercase ASCII letters for the
+first character, followed by either lowercase ASCII letters, digits or
+hyphens ('-').
+
+The @category &lt;emphasis&gt;should&lt;/emphasis&gt; be one of the existing
+well-defined categories, like #GST_ENCODING_CATEGORY_DEVICE, but it
+&lt;emphasis&gt;can&lt;/emphasis&gt; be a application or user specific category if
+needed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The newly created #GstEncodingTarget or %NULL if
+there was an error.</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the target.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="category" transfer-ownership="none">
+ <doc xml:space="preserve">The name of the category to which this @target
+belongs. For example: #GST_ENCODING_CATEGORY_DEVICE.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="description" transfer-ownership="none">
+ <doc xml:space="preserve">A description of #GstEncodingTarget in the
+current locale.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="profiles" transfer-ownership="none">
+ <doc xml:space="preserve">A #GList of
+#GstEncodingProfile.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="EncodingProfile"/>
+ </type>
+ </parameter>
+ </parameters>
+ </constructor>
+ <function name="load" c:identifier="gst_encoding_target_load" throws="1">
+ <doc xml:space="preserve">Searches for the #GstEncodingTarget with the given name, loads it
+and returns it.
+
+If the category name is specified only targets from that category will be
+searched for.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #GstEncodingTarget if available, else %NULL.</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the #GstEncodingTarget to load (automatically
+converted to lower case internally as capital letters are not
+valid for target names).</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="category"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the name of the target category, like
+#GST_ENCODING_CATEGORY_DEVICE. Can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="load_from_file"
+ c:identifier="gst_encoding_target_load_from_file"
+ throws="1">
+ <doc xml:space="preserve">Opens the provided file and returns the contained #GstEncodingTarget.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #GstEncodingTarget contained in the file, else
+%NULL</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </return-value>
+ <parameters>
+ <parameter name="filepath" transfer-ownership="none">
+ <doc xml:space="preserve">The file location to load the #GstEncodingTarget from</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <method name="add_profile"
+ c:identifier="gst_encoding_target_add_profile">
+ <doc xml:space="preserve">Adds the given @profile to the @target. Each added profile must have
+a unique name within the profile.
+
+The @target will steal a reference to the @profile. If you wish to use
+the profile after calling this method, you should increase its reference
+count.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the profile was added, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstEncodingTarget to add a profile to</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ <parameter name="profile" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstEncodingProfile to add</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_category"
+ c:identifier="gst_encoding_target_get_category">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The category of the @target. For example:
+#GST_ENCODING_CATEGORY_DEVICE.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_description"
+ c:identifier="gst_encoding_target_get_description">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The description of the @target.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="gst_encoding_target_get_name">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The name of the @target.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_profile"
+ c:identifier="gst_encoding_target_get_profile">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The matching #GstEncodingProfile, or %NULL.</doc>
+ <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the profile to retrieve</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_profiles"
+ c:identifier="gst_encoding_target_get_profiles">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A list of
+#GstEncodingProfile(s) this @target handles.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="EncodingProfile"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="save" c:identifier="gst_encoding_target_save" throws="1">
+ <doc xml:space="preserve">Saves the @target to a default user-local directory.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the target was correctly saved, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="save_to_file"
+ c:identifier="gst_encoding_target_save_to_file"
+ throws="1">
+ <doc xml:space="preserve">Saves the @target to the provided file location.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the target was correctly saved, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="target" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingTarget</doc>
+ <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
+ </instance-parameter>
+ <parameter name="filepath" transfer-ownership="none">
+ <doc xml:space="preserve">the location to store the @target at.</doc>
+ <type name="filename" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <class name="EncodingVideoProfile"
+ c:symbol-prefix="encoding_video_profile"
+ c:type="GstEncodingVideoProfile"
+ parent="EncodingProfile"
+ glib:type-name="GstEncodingVideoProfile"
+ glib:get-type="gst_encoding_video_profile_get_type"
+ glib:type-struct="EncodingVideoProfileClass">
+ <doc xml:space="preserve">Variant of #GstEncodingProfile for video streams, allows specifying the @pass.</doc>
+ <constructor name="new" c:identifier="gst_encoding_video_profile_new">
+ <doc xml:space="preserve">Creates a new #GstEncodingVideoProfile
+
+All provided allocatable arguments will be internally copied, so can be
+safely freed/unreferenced after calling this method.
+
+If you wish to control the pass number (in case of multi-pass scenarios),
+please refer to the gst_encoding_video_profile_set_pass() documentation.
+
+If you wish to use/force a constant framerate please refer to the
+gst_encoding_video_profile_set_variableframerate() documentation.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly created #GstEncodingVideoProfile.</doc>
+ <type name="EncodingVideoProfile" c:type="GstEncodingVideoProfile*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="preset"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the preset(s) to use on the encoder, can be %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="restriction"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstCaps used to restrict the input to the encoder, can be
+NULL. See gst_encoding_profile_get_restriction() for more details.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="presence" transfer-ownership="none">
+ <doc xml:space="preserve">the number of time this stream must be used. 0 means any number of
+ times (including never)</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="get_pass"
+ c:identifier="gst_encoding_video_profile_get_pass">
+ <doc xml:space="preserve">Get the pass number if this is part of a multi-pass profile.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The pass number. Starts at 1 for multi-pass. 0 if this is
+not a multi-pass profile</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="prof" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingVideoProfile</doc>
+ <type name="EncodingVideoProfile"
+ c:type="GstEncodingVideoProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_variableframerate"
+ c:identifier="gst_encoding_video_profile_get_variableframerate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Whether non-constant video framerate is allowed for encoding.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="prof" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingVideoProfile</doc>
+ <type name="EncodingVideoProfile"
+ c:type="GstEncodingVideoProfile*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_pass"
+ c:identifier="gst_encoding_video_profile_set_pass">
+ <doc xml:space="preserve">Sets the pass number of this video profile. The first pass profile should have
+this value set to 1. If this video profile isn't part of a multi-pass profile,
+you may set it to 0 (the default value).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="prof" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingVideoProfile</doc>
+ <type name="EncodingVideoProfile"
+ c:type="GstEncodingVideoProfile*"/>
+ </instance-parameter>
+ <parameter name="pass" transfer-ownership="none">
+ <doc xml:space="preserve">the pass number for this profile</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_variableframerate"
+ c:identifier="gst_encoding_video_profile_set_variableframerate">
+ <doc xml:space="preserve">If set to %TRUE, then the incoming stream will be allowed to have non-constant
+framerate. If set to %FALSE (default value), then the incoming stream will
+be normalized by dropping/duplicating frames in order to produce a
+constance framerate.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="prof" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstEncodingVideoProfile</doc>
+ <type name="EncodingVideoProfile"
+ c:type="GstEncodingVideoProfile*"/>
+ </instance-parameter>
+ <parameter name="variableframerate" transfer-ownership="none">
+ <doc xml:space="preserve">a boolean</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="EncodingVideoProfileClass"
+ c:type="GstEncodingVideoProfileClass"
+ disguised="1"
+ glib:is-gtype-struct-for="EncodingVideoProfile">
+ </record>
+ <record name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext"
+ glib:type-name="GstInstallPluginsContext"
+ glib:get-type="gst_install_plugins_context_get_type"
+ c:symbol-prefix="install_plugins_context">
+ <doc xml:space="preserve">Opaque context structure for the plugin installation. Use the provided
+API to set details on it.</doc>
+ <constructor name="new" c:identifier="gst_install_plugins_context_new">
+ <doc xml:space="preserve">Creates a new #GstInstallPluginsContext.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstInstallPluginsContext. Free with
+gst_install_plugins_context_free() when no longer needed</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </return-value>
+ </constructor>
+ <method name="copy" c:identifier="gst_install_plugins_context_copy">
+ <return-value transfer-ownership="full">
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_install_plugins_context_free">
+ <doc xml:space="preserve">Frees a #GstInstallPluginsContext.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstInstallPluginsContext</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_confirm_search"
+ c:identifier="gst_install_plugins_context_set_confirm_search"
+ version="1.6">
+ <doc xml:space="preserve">This function is used to tell the external installer process whether it
+should ask for confirmation or not before searching for missing plugins.
+
+If set, this option will be passed to the installer via a
+--interaction=[show-confirm-search|hide-confirm-search] command line option.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstInstallPluginsContext</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ <parameter name="confirm_search" transfer-ownership="none">
+ <doc xml:space="preserve">whether to ask for confirmation before searching for plugins</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_desktop_id"
+ c:identifier="gst_install_plugins_context_set_desktop_id"
+ version="1.6">
+ <doc xml:space="preserve">This function is used to pass the calling application's desktop file ID to
+the external installer process.
+
+A desktop file ID is the basename of the desktop file, including the
+.desktop extension.
+
+If set, the desktop file ID will be passed to the installer via a
+--desktop-id= command line option.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstInstallPluginsContext</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ <parameter name="desktop_id" transfer-ownership="none">
+ <doc xml:space="preserve">the desktop file ID of the calling application</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_startup_notification_id"
+ c:identifier="gst_install_plugins_context_set_startup_notification_id"
+ version="1.6">
+ <doc xml:space="preserve">Sets the startup notification ID for the launched process.
+
+This is typically used to to pass the current X11 event timestamp to the
+external installer process.
+
+Startup notification IDs are defined in the
+[FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt).
+
+If set, the ID will be passed to the installer via a
+--startup-notification-id= command line option.
+
+GTK+/GNOME applications should be able to create a startup notification ID
+like this:
+|[
+ timestamp = gtk_get_current_event_time ();
+ startup_id = g_strdup_printf ("_TIME%u", timestamp);
+...
+]|</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstInstallPluginsContext</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ <parameter name="startup_id" transfer-ownership="none">
+ <doc xml:space="preserve">the startup notification ID</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_xid"
+ c:identifier="gst_install_plugins_context_set_xid">
+ <doc xml:space="preserve">This function is for X11-based applications (such as most Gtk/Qt
+applications on linux/unix) only. You can use it to tell the external
+installer the XID of your main application window. That way the installer
+can make its own window transient to your application window during the
+installation.
+
+If set, the XID will be passed to the installer via a --transient-for=XID
+command line option.
+
+Gtk+/Gnome application should be able to obtain the XID of the top-level
+window like this:
+|[
+##include &amp;lt;gtk/gtk.h&amp;gt;
+##ifdef GDK_WINDOWING_X11
+##include &amp;lt;gdk/gdkx.h&amp;gt;
+##endif
+...
+##ifdef GDK_WINDOWING_X11
+ xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)-&amp;gt;window);
+##endif
+...
+]|</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ctx" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstInstallPluginsContext</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </instance-parameter>
+ <parameter name="xid" transfer-ownership="none">
+ <doc xml:space="preserve">the XWindow ID (XID) of the top-level application</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="InstallPluginsResultFunc"
+ c:type="GstInstallPluginsResultFunc">
+ <doc xml:space="preserve">The prototype of the callback function that will be called once the
+external plugin installer program has returned. You only need to provide
+a callback function if you are using the asynchronous interface.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="result" transfer-ownership="none">
+ <doc xml:space="preserve">whether the installation of the requested plugins succeeded or not</doc>
+ <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <doc xml:space="preserve">the user data passed to gst_install_plugins_async()</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <enumeration name="InstallPluginsReturn"
+ glib:type-name="GstInstallPluginsReturn"
+ glib:get-type="gst_install_plugins_return_get_type"
+ c:type="GstInstallPluginsReturn">
+ <doc xml:space="preserve">Result codes returned by gst_install_plugins_async() and
+gst_install_plugins_sync(), and also the result code passed to the
+#GstInstallPluginsResultFunc specified with gst_install_plugins_async().
+
+These codes indicate success or failure of starting an external installer
+program and to what extent the requested plugins could be installed.</doc>
+ <member name="success"
+ value="0"
+ c:identifier="GST_INSTALL_PLUGINS_SUCCESS"
+ glib:nick="success">
+ <doc xml:space="preserve">all of the requested plugins could be
+ installed</doc>
+ </member>
+ <member name="not_found"
+ value="1"
+ c:identifier="GST_INSTALL_PLUGINS_NOT_FOUND"
+ glib:nick="not-found">
+ <doc xml:space="preserve">no appropriate installation candidate for
+ any of the requested plugins could be found. Only return this if nothing
+ has been installed. Return #GST_INSTALL_PLUGINS_PARTIAL_SUCCESS if
+ some (but not all) of the requested plugins could be installed.</doc>
+ </member>
+ <member name="error"
+ value="2"
+ c:identifier="GST_INSTALL_PLUGINS_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">an error occured during the installation. If
+ this happens, the user has already seen an error message and another
+ one should not be displayed</doc>
+ </member>
+ <member name="partial_success"
+ value="3"
+ c:identifier="GST_INSTALL_PLUGINS_PARTIAL_SUCCESS"
+ glib:nick="partial-success">
+ <doc xml:space="preserve">some of the requested plugins could
+ be installed, but not all</doc>
+ </member>
+ <member name="user_abort"
+ value="4"
+ c:identifier="GST_INSTALL_PLUGINS_USER_ABORT"
+ glib:nick="user-abort">
+ <doc xml:space="preserve">the user has aborted the installation</doc>
+ </member>
+ <member name="crashed"
+ value="100"
+ c:identifier="GST_INSTALL_PLUGINS_CRASHED"
+ glib:nick="crashed">
+ <doc xml:space="preserve">the installer had an unclean exit code
+ (ie. death by signal)</doc>
+ </member>
+ <member name="invalid"
+ value="101"
+ c:identifier="GST_INSTALL_PLUGINS_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">the helper returned an invalid status code</doc>
+ </member>
+ <member name="started_ok"
+ value="200"
+ c:identifier="GST_INSTALL_PLUGINS_STARTED_OK"
+ glib:nick="started-ok">
+ <doc xml:space="preserve">returned by gst_install_plugins_async() to
+ indicate that everything went fine so far and the provided callback
+ will be called with the result of the installation later</doc>
+ </member>
+ <member name="internal_failure"
+ value="201"
+ c:identifier="GST_INSTALL_PLUGINS_INTERNAL_FAILURE"
+ glib:nick="internal-failure">
+ <doc xml:space="preserve">some internal failure has
+ occured when trying to start the installer</doc>
+ </member>
+ <member name="helper_missing"
+ value="202"
+ c:identifier="GST_INSTALL_PLUGINS_HELPER_MISSING"
+ glib:nick="helper-missing">
+ <doc xml:space="preserve">the helper script to call the
+ actual installer is not installed</doc>
+ </member>
+ <member name="install_in_progress"
+ value="203"
+ c:identifier="GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS"
+ glib:nick="install-in-progress">
+ <doc xml:space="preserve">a previously-started plugin
+ installation is still in progress, try again later</doc>
+ </member>
+ <function name="get_name"
+ c:identifier="gst_install_plugins_return_get_name">
+ <doc xml:space="preserve">Convenience function to return the descriptive string associated
+with a status code. This function returns English strings and
+should not be used for user messages. It is here only to assist
+in debugging.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a descriptive string for the status code in @ret</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">the return status code</doc>
+ <type name="InstallPluginsReturn"
+ c:type="GstInstallPluginsReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <constant name="PLUGINS_BASE_VERSION_MAJOR"
+ value="1"
+ c:type="GST_PLUGINS_BASE_VERSION_MAJOR">
+ <doc xml:space="preserve">The major version of GStreamer's gst-plugins-base libraries at compile time.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PLUGINS_BASE_VERSION_MICRO"
+ value="0"
+ c:type="GST_PLUGINS_BASE_VERSION_MICRO">
+ <doc xml:space="preserve">The micro version of GStreamer's gst-plugins-base libraries at compile time.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PLUGINS_BASE_VERSION_MINOR"
+ value="14"
+ c:type="GST_PLUGINS_BASE_VERSION_MINOR">
+ <doc xml:space="preserve">The minor version of GStreamer's gst-plugins-base libraries at compile time.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="PLUGINS_BASE_VERSION_NANO"
+ value="0"
+ c:type="GST_PLUGINS_BASE_VERSION_NANO">
+ <doc xml:space="preserve">The nano version of GStreamer's gst-plugins-base libraries at compile time.
+Actual releases have 0, GIT versions have 1, prerelease versions have 2-...</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <function name="codec_utils_aac_caps_set_level_and_profile"
+ c:identifier="gst_codec_utils_aac_caps_set_level_and_profile">
+ <doc xml:space="preserve">Sets the level and profile on @caps if it can be determined from
+@audio_config. See gst_codec_utils_aac_get_level() and
+gst_codec_utils_aac_get_profile() for more details on the parameters.
+@caps must be audio/mpeg caps with an "mpegversion" field of either 2 or 4.
+If mpegversion is 4, the "base-profile" field is also set in @caps.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the level and profile could be set, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to which level and profile fields are to be added</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="audio_config" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the AudioSpecificConfig
+ as specified in the Elementary Stream Descriptor (esds)
+ in ISO/IEC 14496-1. (See below for more details)</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of @audio_config in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_channels"
+ c:identifier="gst_codec_utils_aac_get_channels">
+ <doc xml:space="preserve">Returns the channels of the given AAC stream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The channels or 0 if the channel could not be determined.
+
+Since 1.10</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="audio_config" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the AudioSpecificConfig
+ as specified in the Elementary Stream Descriptor (esds)
+ in ISO/IEC 14496-1.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of @audio_config in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_index_from_sample_rate"
+ c:identifier="gst_codec_utils_aac_get_index_from_sample_rate">
+ <doc xml:space="preserve">Translates the sample rate to the index corresponding to it in AAC spec.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The AAC index for this sample rate, -1 if the rate is not a
+valid AAC sample rate.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">Sample rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_level"
+ c:identifier="gst_codec_utils_aac_get_level">
+ <doc xml:space="preserve">Determines the level of a stream as defined in ISO/IEC 14496-3. For AAC LC
+streams, the constraints from the AAC audio profile are applied. For AAC
+Main, LTP, SSR and others, the Main profile is used.
+
+The @audio_config parameter follows the following format, starting from the
+most significant bit of the first byte:
+
+ * Bit 0:4 contains the AudioObjectType
+ * Bit 5:8 contains the sample frequency index (if this is 0xf, then the
+ next 24 bits define the actual sample frequency, and subsequent
+ fields are appropriately shifted).
+ * Bit 9:12 contains the channel configuration
+
+&gt; HE-AAC support has not yet been implemented.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The level as a const string and %NULL if the level could not be
+determined.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="audio_config" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the AudioSpecificConfig
+ as specified in the Elementary Stream Descriptor (esds)
+ in ISO/IEC 14496-1.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of @audio_config in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_profile"
+ c:identifier="gst_codec_utils_aac_get_profile">
+ <doc xml:space="preserve">Returns the profile of the given AAC stream as a string. The profile is
+determined using the AudioObjectType field which is in the first 5 bits of
+@audio_config.
+
+&gt; HE-AAC support has not yet been implemented.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The profile as a const string and %NULL if the profile could not be
+determined.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="audio_config" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the AudioSpecificConfig
+ as specified in the Elementary Stream Descriptor (esds)
+ in ISO/IEC 14496-1.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of @audio_config in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_sample_rate"
+ c:identifier="gst_codec_utils_aac_get_sample_rate">
+ <doc xml:space="preserve">Translates the sample rate index found in AAC headers to the actual sample
+rate.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The sample rate if sr_idx is valid, 0 otherwise.
+
+Since 1.10</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="audio_config" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the AudioSpecificConfig
+ as specified in the Elementary Stream Descriptor (esds)
+ in ISO/IEC 14496-1.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of @audio_config</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_aac_get_sample_rate_from_index"
+ c:identifier="gst_codec_utils_aac_get_sample_rate_from_index">
+ <doc xml:space="preserve">Translates the sample rate index found in AAC headers to the actual sample
+rate.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The sample rate if @sr_idx is valid, 0 otherwise.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="sr_idx" transfer-ownership="none">
+ <doc xml:space="preserve">Sample rate index as from the AudioSpecificConfig (MPEG-4
+ container) or ADTS frame header</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h264_caps_set_level_and_profile"
+ c:identifier="gst_codec_utils_h264_caps_set_level_and_profile">
+ <doc xml:space="preserve">Sets the level and profile in @caps if it can be determined from @sps. See
+gst_codec_utils_h264_get_level() and gst_codec_utils_h264_get_profile()
+for more details on the parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the level and profile could be set, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to which the level and profile are to be added</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="sps" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the sequence parameter set for the stream.</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h264_get_level"
+ c:identifier="gst_codec_utils_h264_get_level">
+ <doc xml:space="preserve">Converts the level indication (level_idc) in the stream's
+sequence parameter set into a string. The SPS is expected to have the
+same format as for gst_codec_utils_h264_get_profile().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The level as a const string, or %NULL if there is an error.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sps" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the sequence parameter set for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h264_get_level_idc"
+ c:identifier="gst_codec_utils_h264_get_level_idc">
+ <doc xml:space="preserve">Transform a level string from the caps into the level_idc</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the level_idc or 0 if the level is unknown</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">A level string from caps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h264_get_profile"
+ c:identifier="gst_codec_utils_h264_get_profile">
+ <doc xml:space="preserve">Converts the profile indication (profile_idc) in the stream's
+sequence parameter set into a string. The SPS is expected to have the
+following format, as defined in the H.264 specification. The SPS is viewed
+as a bitstream here, with bit 0 being the most significant bit of the first
+byte.
+
+* Bit 0:7 - Profile indication
+* Bit 8 - constraint_set0_flag
+* Bit 9 - constraint_set1_flag
+* Bit 10 - constraint_set2_flag
+* Bit 11 - constraint_set3_flag
+* Bit 12 - constraint_set3_flag
+* Bit 13:15 - Reserved
+* Bit 16:24 - Level indication</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The profile as a const string, or %NULL if there is an error.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sps" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the sequence parameter set for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h265_caps_set_level_tier_and_profile"
+ c:identifier="gst_codec_utils_h265_caps_set_level_tier_and_profile">
+ <doc xml:space="preserve">Sets the level, tier and profile in @caps if it can be determined from
+@profile_tier_level. See gst_codec_utils_h265_get_level(),
+gst_codec_utils_h265_get_tier() and gst_codec_utils_h265_get_profile()
+for more details on the parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the level, tier, profile could be set, %FALSE otherwise.
+
+Since 1.4</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to which the level, tier and profile are to be added</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="profile_tier_level" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the profile_tier_level
+ struct</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @profile_tier_level.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h265_get_level"
+ c:identifier="gst_codec_utils_h265_get_level">
+ <doc xml:space="preserve">Converts the level indication (general_level_idc) in the stream's
+profile_tier_level structure into a string. The profiel_tier_level is
+expected to have the same format as for gst_codec_utils_h264_get_profile().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The level as a const string, or %NULL if there is an error.
+
+Since 1.4</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="profile_tier_level" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the profile_tier_level
+ for the stream</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @profile_tier_level.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h265_get_level_idc"
+ c:identifier="gst_codec_utils_h265_get_level_idc">
+ <doc xml:space="preserve">Transform a level string from the caps into the level_idc</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the level_idc or 0 if the level is unknown
+
+Since 1.4</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <parameter name="level" transfer-ownership="none">
+ <doc xml:space="preserve">A level string from caps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h265_get_profile"
+ c:identifier="gst_codec_utils_h265_get_profile">
+ <doc xml:space="preserve">Converts the profile indication (general_profile_idc) in the stream's
+profile_level_tier structure into a string. The profile_tier_level is
+expected to have the following format, as defined in the H.265
+specification. The profile_tier_level is viewed as a bitstream here,
+with bit 0 being the most significant bit of the first byte.
+
+* Bit 0:1 - general_profile_space
+* Bit 2 - general_tier_flag
+* Bit 3:7 - general_profile_idc
+* Bit 8:39 - gernal_profile_compatibility_flags
+* Bit 40 - general_progressive_source_flag
+* Bit 41 - general_interlaced_source_flag
+* Bit 42 - general_non_packed_constraint_flag
+* Bit 43 - general_frame_only_constraint_flag
+* Bit 44:87 - general_reserved_zero_44bits
+* Bit 88:95 - general_level_idc</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The profile as a const string, or %NULL if there is an error.
+
+Since 1.4</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="profile_tier_level" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the profile_tier_level
+ structure for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @profile_tier_level</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_h265_get_tier"
+ c:identifier="gst_codec_utils_h265_get_tier">
+ <doc xml:space="preserve">Converts the tier indication (general_tier_flag) in the stream's
+profile_tier_level structure into a string. The profile_tier_level
+is expected to have the same format as for gst_codec_utils_h264_get_profile().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The tier as a const string, or %NULL if there is an error.
+
+Since 1.4</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="profile_tier_level" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the profile_tier_level
+ for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @profile_tier_level.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_mpeg4video_caps_set_level_and_profile"
+ c:identifier="gst_codec_utils_mpeg4video_caps_set_level_and_profile">
+ <doc xml:space="preserve">Sets the level and profile in @caps if it can be determined from
+@vis_obj_seq. See gst_codec_utils_mpeg4video_get_level() and
+gst_codec_utils_mpeg4video_get_profile() for more details on the
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the level and profile could be set, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to which the level and profile are to be added</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="vis_obj_seq" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the visual object
+ sequence for the stream.</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_mpeg4video_get_level"
+ c:identifier="gst_codec_utils_mpeg4video_get_level">
+ <doc xml:space="preserve">Converts the level indication in the stream's visual object sequence into
+a string. @vis_obj_seq is expected to be the data following the visual
+object sequence start code. Only the first byte
+(profile_and_level_indication) is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The level as a const string, or NULL if there is an error.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="vis_obj_seq" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the visual object
+ sequence for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_mpeg4video_get_profile"
+ c:identifier="gst_codec_utils_mpeg4video_get_profile">
+ <doc xml:space="preserve">Converts the profile indication in the stream's visual object sequence into
+a string. @vis_obj_seq is expected to be the data following the visual
+object sequence start code. Only the first byte
+(profile_and_level_indication) is used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The profile as a const string, or NULL if there is an error.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="vis_obj_seq" transfer-ownership="none">
+ <doc xml:space="preserve">Pointer to the visual object
+ sequence for the stream.</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data available in @sps.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_opus_create_caps"
+ c:identifier="gst_codec_utils_opus_create_caps"
+ version="1.8">
+ <doc xml:space="preserve">Creates Opus caps from the given parameters.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #GstCaps, or %NULL if the parameters would lead to
+invalid Opus caps.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the sample rate</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="channel_mapping_family" transfer-ownership="none">
+ <doc xml:space="preserve">the channel mapping family</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="stream_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of independent streams</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="coupled_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of stereo streams</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="channel_mapping"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the mapping between the streams</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_opus_create_caps_from_header"
+ c:identifier="gst_codec_utils_opus_create_caps_from_header"
+ version="1.8">
+ <doc xml:space="preserve">Creates Opus caps from the given OpusHead @header and comment header
+@comments.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #GstCaps.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">OpusHead header</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="comments"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Comment header or NULL</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_opus_create_header"
+ c:identifier="gst_codec_utils_opus_create_header"
+ version="1.8">
+ <doc xml:space="preserve">Creates OpusHead header from the given parameters.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The #GstBuffer containing the OpusHead.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="rate" transfer-ownership="none">
+ <doc xml:space="preserve">the sample rate</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="channels" transfer-ownership="none">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="channel_mapping_family" transfer-ownership="none">
+ <doc xml:space="preserve">the channel mapping family</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="stream_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of independent streams</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="coupled_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of stereo streams</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="channel_mapping"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the mapping between the streams</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="pre_skip" transfer-ownership="none">
+ <doc xml:space="preserve">Pre-skip in 48kHz samples or 0</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="output_gain" transfer-ownership="none">
+ <doc xml:space="preserve">Output gain or 0</doc>
+ <type name="gint16" c:type="gint16"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_opus_parse_caps"
+ c:identifier="gst_codec_utils_opus_parse_caps"
+ version="1.8">
+ <doc xml:space="preserve">Parses Opus caps and fills the different fields with defaults if possible.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if parsing was successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to parse the data from</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the sample rate</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="channels"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="channel_mapping_family"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the channel mapping family</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="stream_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of independent streams</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="coupled_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of stereo streams</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="channel_mapping"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the mapping between the streams</doc>
+ <array zero-terminated="0" c:type="guint8" fixed-size="256">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="codec_utils_opus_parse_header"
+ c:identifier="gst_codec_utils_opus_parse_header"
+ version="1.8">
+ <doc xml:space="preserve">Parses the OpusHead header.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if parsing was successful, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">the OpusHead #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="rate"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the sample rate</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="channels"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of channels</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="channel_mapping_family"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the channel mapping family</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="stream_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of independent streams</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="coupled_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the number of stereo streams</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="channel_mapping"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the mapping between the streams</doc>
+ <array zero-terminated="0" c:type="guint8" fixed-size="256">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="pre_skip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Pre-skip in 48kHz samples or 0</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ <parameter name="output_gain"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Output gain or 0</doc>
+ <type name="gint16" c:type="gint16*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="encoding_list_all_targets"
+ c:identifier="gst_encoding_list_all_targets">
+ <doc xml:space="preserve">List all available #GstEncodingTarget for the specified category, or all categories
+if @categoryname is %NULL.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The list of #GstEncodingTarget</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="EncodingTarget"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="categoryname"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">The category, for ex: #GST_ENCODING_CATEGORY_DEVICE.
+Can be %NULL.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="encoding_list_available_categories"
+ c:identifier="gst_encoding_list_available_categories">
+ <doc xml:space="preserve">Lists all #GstEncodingTarget categories present on disk.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A list
+of #GstEncodingTarget categories.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ </function>
+ <function name="install_plugins_async"
+ c:identifier="gst_install_plugins_async">
+ <doc xml:space="preserve">Requests plugin installation without blocking. Once the plugins have been
+installed or installation has failed, @func will be called with the result
+of the installation and your provided @user_data pointer.
+
+This function requires a running GLib/Gtk main loop. If you are not
+running a GLib/Gtk main loop, make sure to regularly call
+g_main_context_iteration(NULL,FALSE).
+
+The installer strings that make up @detail are typically obtained by
+calling gst_missing_plugin_message_get_installer_detail() on missing-plugin
+messages that have been caught on a pipeline's bus or created by the
+application via the provided API, such as gst_missing_element_message_new().
+
+It is possible to request the installation of multiple missing plugins in
+one go (as might be required if there is a demuxer for a certain format
+installed but no suitable video decoder and no suitable audio decoder).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">result code whether an external installer could be started</doc>
+ <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="details" transfer-ownership="none">
+ <doc xml:space="preserve">NULL-terminated array
+ of installer string details (see below)</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="ctx"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstInstallPluginsContext, or NULL</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="async"
+ closure="3">
+ <doc xml:space="preserve">the function to call when the installer program returns</doc>
+ <type name="InstallPluginsResultFunc"
+ c:type="GstInstallPluginsResultFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the user data to pass to @func when called, or NULL</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="install_plugins_installation_in_progress"
+ c:identifier="gst_install_plugins_installation_in_progress">
+ <doc xml:space="preserve">Checks whether plugin installation (initiated by this application only)
+is currently in progress.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if plugin installation is in progress, otherwise FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="install_plugins_return_get_name"
+ c:identifier="gst_install_plugins_return_get_name"
+ moved-to="InstallPluginsReturn.get_name">
+ <doc xml:space="preserve">Convenience function to return the descriptive string associated
+with a status code. This function returns English strings and
+should not be used for user messages. It is here only to assist
+in debugging.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a descriptive string for the status code in @ret</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="ret" transfer-ownership="none">
+ <doc xml:space="preserve">the return status code</doc>
+ <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="install_plugins_supported"
+ c:identifier="gst_install_plugins_supported">
+ <doc xml:space="preserve">Checks whether plugin installation is likely to be supported by the
+current environment. This currently only checks whether the helper script
+that is to be provided by the distribution or operating system vendor
+exists.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if plugin installation is likely to be supported.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="install_plugins_sync"
+ c:identifier="gst_install_plugins_sync">
+ <doc xml:space="preserve">Requests plugin installation and block until the plugins have been
+installed or installation has failed.
+
+This function should almost never be used, it only exists for cases where
+a non-GLib main loop is running and the user wants to run it in a separate
+thread and marshal the result back asynchronously into the main thread
+using the other non-GLib main loop. You should almost always use
+gst_install_plugins_async() instead of this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the result of the installation.</doc>
+ <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="details" transfer-ownership="none">
+ <doc xml:space="preserve">NULL-terminated array
+ of installer string details</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ <parameter name="ctx"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstInstallPluginsContext, or NULL</doc>
+ <type name="InstallPluginsContext"
+ c:type="GstInstallPluginsContext*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="is_missing_plugin_message"
+ c:identifier="gst_is_missing_plugin_message">
+ <doc xml:space="preserve">Checks whether @msg is a missing plugins message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @msg is a missing-plugins message, otherwise %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_decoder_installer_detail_new"
+ c:identifier="gst_missing_decoder_installer_detail_new">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="decode_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) caps for which a decoder element is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_decoder_message_new"
+ c:identifier="gst_missing_decoder_message_new">
+ <doc xml:space="preserve">Creates a missing-plugin message for @element to notify the application
+that a decoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMessage, or NULL on error</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement posting the message</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="decode_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) caps for which a decoder element is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_element_installer_detail_new"
+ c:identifier="gst_missing_element_installer_detail_new">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="factory_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the missing element (element factory),
+ e.g. "videoscale" or "cdparanoiasrc"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_element_message_new"
+ c:identifier="gst_missing_element_message_new">
+ <doc xml:space="preserve">Creates a missing-plugin message for @element to notify the application
+that a certain required element is missing. This function is mainly for
+use in plugins.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMessage, or NULL on error</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement posting the message</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="factory_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the missing element (element factory),
+ e.g. "videoscale" or "cdparanoiasrc"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_encoder_installer_detail_new"
+ c:identifier="gst_missing_encoder_installer_detail_new">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="encode_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) caps for which an encoder element is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_encoder_message_new"
+ c:identifier="gst_missing_encoder_message_new">
+ <doc xml:space="preserve">Creates a missing-plugin message for @element to notify the application
+that an encoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMessage, or NULL on error</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement posting the message</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="encode_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) caps for which an encoder element is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_plugin_message_get_description"
+ c:identifier="gst_missing_plugin_message_get_description">
+ <doc xml:space="preserve">Returns a localised string describing the missing feature, for use in
+error dialogs and the like. Should never return NULL unless @msg is not
+a valid missing-plugin message.
+
+This function is mainly for applications that need a human-readable string
+describing a missing plugin, given a previously collected missing-plugin
+message</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a missing-plugin #GstMessage of type #GST_MESSAGE_ELEMENT</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_plugin_message_get_installer_detail"
+ c:identifier="gst_missing_plugin_message_get_installer_detail">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a missing-plugin #GstMessage of type #GST_MESSAGE_ELEMENT</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_uri_sink_installer_detail_new"
+ c:identifier="gst_missing_uri_sink_installer_detail_new">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the URI protocol the missing source needs to implement,
+ e.g. "http" or "mms"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_uri_sink_message_new"
+ c:identifier="gst_missing_uri_sink_message_new">
+ <doc xml:space="preserve">Creates a missing-plugin message for @element to notify the application
+that a sink element for a particular URI protocol is missing. This
+function is mainly for use in plugins.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMessage, or NULL on error</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement posting the message</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the URI protocol the missing sink needs to implement,
+ e.g. "http" or "smb"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_uri_source_installer_detail_new"
+ c:identifier="gst_missing_uri_source_installer_detail_new">
+ <doc xml:space="preserve">Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated detail string, or NULL on error. Free string
+ with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the URI protocol the missing source needs to implement,
+ e.g. "http" or "mms"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="missing_uri_source_message_new"
+ c:identifier="gst_missing_uri_source_message_new">
+ <doc xml:space="preserve">Creates a missing-plugin message for @element to notify the application
+that a source element for a particular URI protocol is missing. This
+function is mainly for use in plugins.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMessage, or NULL on error</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="element" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstElement posting the message</doc>
+ <type name="Gst.Element" c:type="GstElement*"/>
+ </parameter>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the URI protocol the missing source needs to implement,
+ e.g. "http" or "mms"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_add_codec_description_to_tag_list"
+ c:identifier="gst_pb_utils_add_codec_description_to_tag_list">
+ <doc xml:space="preserve">Adds a codec tag describing the format specified by @caps to @taglist.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if a codec tag was added, FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="taglist" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="codec_tag"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a GStreamer codec tag such as #GST_TAG_AUDIO_CODEC,
+ #GST_TAG_VIDEO_CODEC or #GST_TAG_CODEC. If none is specified,
+ the function will attempt to detect the appropriate category.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) #GstCaps for which a codec tag should be added.</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_codec_description"
+ c:identifier="gst_pb_utils_get_codec_description">
+ <doc xml:space="preserve">Returns a localised (as far as this is possible) string describing the
+media format specified in @caps, for use in error dialogs or other messages
+to be seen by the user. Should never return NULL unless @caps is invalid.
+
+Also see the convenience function
+gst_pb_utils_add_codec_description_to_tag_list().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) #GstCaps for which an format description is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_decoder_description"
+ c:identifier="gst_pb_utils_get_decoder_description">
+ <doc xml:space="preserve">Returns a localised string describing an decoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) #GstCaps for which an decoder description is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_element_description"
+ c:identifier="gst_pb_utils_get_element_description">
+ <doc xml:space="preserve">Returns a localised string describing the given element, for use in
+error dialogs or other messages to be seen by the user. Should never
+return NULL unless @factory_name is invalid.
+
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="factory_name" transfer-ownership="none">
+ <doc xml:space="preserve">the name of the element, e.g. "giosrc"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_encoder_description"
+ c:identifier="gst_pb_utils_get_encoder_description">
+ <doc xml:space="preserve">Returns a localised string describing an encoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">the (fixed) #GstCaps for which an encoder description is needed</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_sink_description"
+ c:identifier="gst_pb_utils_get_sink_description">
+ <doc xml:space="preserve">Returns a localised string describing a sink element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the protocol the sink element needs to handle, e.g. "http"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_get_source_description"
+ c:identifier="gst_pb_utils_get_source_description">
+ <doc xml:space="preserve">Returns a localised string describing a source element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated description string, or NULL on error. Free
+ string with g_free() when not needed any longer.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="protocol" transfer-ownership="none">
+ <doc xml:space="preserve">the protocol the source element needs to handle, e.g. "http"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="pb_utils_init" c:identifier="gst_pb_utils_init">
+ <doc xml:space="preserve">Initialises the base utils support library. This function is not
+thread-safe. Applications should call it after calling gst_init(),
+plugins should call it from their plugin_init function.
+
+This function may be called multiple times. It will do nothing if the
+library has already been initialised.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="plugins_base_version"
+ c:identifier="gst_plugins_base_version">
+ <doc xml:space="preserve">Gets the version number of the GStreamer Plugins Base libraries.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="major"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the major version number, or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="minor"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the minor version number, or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="micro"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the micro version number, or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="nano"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to a guint to store the nano version number, or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="plugins_base_version_string"
+ c:identifier="gst_plugins_base_version_string">
+ <doc xml:space="preserve">This function returns a string that is useful for describing this version
+of GStreamer's gst-plugins-base libraries to the outside world: user agent
+strings, logging, about dialogs ...</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string describing this version of gst-plugins-base</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstRtp-1.0.gir b/girs/GstRtp-1.0.gir
new file mode 100644
index 0000000000..d80e51259f
--- /dev/null
+++ b/girs/GstRtp-1.0.gir
@@ -0,0 +1,4824 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <package name="gstreamer-rtp-1.0"/>
+ <c:include name="gst/rtp/rtp.h"/>
+ <namespace name="GstRtp"
+ version="1.0"
+ shared-library="libgstrtp-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <record name="RTCPBuffer" c:type="GstRTCPBuffer">
+ <doc xml:space="preserve">Note: The API in this module is not yet declared stable.
+
+The GstRTPCBuffer helper functions makes it easy to parse and create regular
+#GstBuffer objects that contain compound RTCP packets. These buffers are typically
+of 'application/x-rtcp' #GstCaps.
+
+An RTCP buffer consists of 1 or more #GstRTCPPacket structures that you can
+retrieve with gst_rtcp_buffer_get_first_packet(). #GstRTCPPacket acts as a pointer
+into the RTCP buffer; you can move to the next packet with
+gst_rtcp_packet_move_to_next().</doc>
+ <field name="buffer" writable="1">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="map" writable="1">
+ <type name="Gst.MapInfo" c:type="GstMapInfo"/>
+ </field>
+ <method name="add_packet" c:identifier="gst_rtcp_buffer_add_packet">
+ <doc xml:space="preserve">Add a new packet of @type to @rtcp. @packet will point to the newly created
+packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the packet could be created. This function returns %FALSE
+if the max mtu is exceeded for the buffer.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTCP buffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstRTCPType of the new packet</doc>
+ <type name="RTCPType" c:type="GstRTCPType"/>
+ </parameter>
+ <parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to new packet</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_first_packet"
+ c:identifier="gst_rtcp_buffer_get_first_packet">
+ <doc xml:space="preserve">Initialize a new #GstRTCPPacket pointer that points to the first packet in
+@rtcp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the packet existed in @rtcp.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTCP buffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </instance-parameter>
+ <parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_packet_count"
+ c:identifier="gst_rtcp_buffer_get_packet_count">
+ <doc xml:space="preserve">Get the number of RTCP packets in @rtcp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of RTCP packets in @rtcp.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTCP buffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_rtcp_buffer_unmap">
+ <doc xml:space="preserve">Finish @rtcp after being constructed. This function is usually called
+after gst_rtcp_buffer_map() and after adding the RTCP items to the new buffer.
+
+The function adjusts the size of @rtcp with the total length of all the
+added packets.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer with an RTCP packet</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="map" c:identifier="gst_rtcp_buffer_map">
+ <doc xml:space="preserve">Open @buffer for reading or writing, depending on @flags. The resulting RTCP
+buffer state is stored in @rtcp.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer with an RTCP packet</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the mapping</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ <parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">resulting #GstRTCPBuffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new" c:identifier="gst_rtcp_buffer_new">
+ <doc xml:space="preserve">Create a new buffer for constructing RTCP packets. The packet will have a
+maximum size of @mtu.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mtu" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum mtu size.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_copy_data"
+ c:identifier="gst_rtcp_buffer_new_copy_data">
+ <doc xml:space="preserve">Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with a copy of @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_take_data"
+ c:identifier="gst_rtcp_buffer_new_take_data">
+ <doc xml:space="preserve">Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="validate" c:identifier="gst_rtcp_buffer_validate">
+ <doc xml:space="preserve">Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_data().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer is a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to validate</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="validate_data"
+ c:identifier="gst_rtcp_buffer_validate_data">
+ <doc xml:space="preserve">Check if the @data and @size point to the data of a valid compound,
+non-reduced size RTCP packet.
+Use this function to validate a packet before using the other functions in
+this module.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the data points to a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to validate</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data to validate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="validate_data_reduced"
+ c:identifier="gst_rtcp_buffer_validate_data_reduced"
+ version="1.6">
+ <doc xml:space="preserve">Check if the @data and @size point to the data of a valid RTCP packet.
+Use this function to validate a packet before using the other functions in
+this module.
+
+This function is updated to support reduced size rtcp packets according to
+RFC 5506 and will validate full compound RTCP packets as well as reduced
+size RTCP packets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the data points to a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to validate</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data to validate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="validate_reduced"
+ c:identifier="gst_rtcp_buffer_validate_reduced"
+ version="1.6">
+ <doc xml:space="preserve">Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_reduced().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer is a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to validate</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="RTCPFBType"
+ glib:type-name="GstRTCPFBType"
+ glib:get-type="gst_rtcpfb_type_get_type"
+ c:type="GstRTCPFBType">
+ <doc xml:space="preserve">Different types of feedback messages.</doc>
+ <member name="fb_type_invalid"
+ value="0"
+ c:identifier="GST_RTCP_FB_TYPE_INVALID"
+ glib:nick="fb-type-invalid">
+ <doc xml:space="preserve">Invalid type</doc>
+ </member>
+ <member name="rtpfb_type_nack"
+ value="1"
+ c:identifier="GST_RTCP_RTPFB_TYPE_NACK"
+ glib:nick="rtpfb-type-nack">
+ <doc xml:space="preserve">Generic NACK</doc>
+ </member>
+ <member name="rtpfb_type_tmmbr"
+ value="3"
+ c:identifier="GST_RTCP_RTPFB_TYPE_TMMBR"
+ glib:nick="rtpfb-type-tmmbr">
+ <doc xml:space="preserve">Temporary Maximum Media Stream Bit Rate Request</doc>
+ </member>
+ <member name="rtpfb_type_tmmbn"
+ value="4"
+ c:identifier="GST_RTCP_RTPFB_TYPE_TMMBN"
+ glib:nick="rtpfb-type-tmmbn">
+ <doc xml:space="preserve">Temporary Maximum Media Stream Bit Rate
+ Notification</doc>
+ </member>
+ <member name="rtpfb_type_rtcp_sr_req"
+ value="5"
+ c:identifier="GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ"
+ glib:nick="rtpfb-type-rtcp-sr-req">
+ <doc xml:space="preserve">Request an SR packet for early
+ synchronization</doc>
+ </member>
+ <member name="psfb_type_pli"
+ value="1"
+ c:identifier="GST_RTCP_PSFB_TYPE_PLI"
+ glib:nick="psfb-type-pli">
+ <doc xml:space="preserve">Picture Loss Indication</doc>
+ </member>
+ <member name="psfb_type_sli"
+ value="2"
+ c:identifier="GST_RTCP_PSFB_TYPE_SLI"
+ glib:nick="psfb-type-sli">
+ <doc xml:space="preserve">Slice Loss Indication</doc>
+ </member>
+ <member name="psfb_type_rpsi"
+ value="3"
+ c:identifier="GST_RTCP_PSFB_TYPE_RPSI"
+ glib:nick="psfb-type-rpsi">
+ <doc xml:space="preserve">Reference Picture Selection Indication</doc>
+ </member>
+ <member name="psfb_type_afb"
+ value="15"
+ c:identifier="GST_RTCP_PSFB_TYPE_AFB"
+ glib:nick="psfb-type-afb">
+ <doc xml:space="preserve">Application layer Feedback</doc>
+ </member>
+ <member name="psfb_type_fir"
+ value="4"
+ c:identifier="GST_RTCP_PSFB_TYPE_FIR"
+ glib:nick="psfb-type-fir">
+ <doc xml:space="preserve">Full Intra Request Command</doc>
+ </member>
+ <member name="psfb_type_tstr"
+ value="5"
+ c:identifier="GST_RTCP_PSFB_TYPE_TSTR"
+ glib:nick="psfb-type-tstr">
+ <doc xml:space="preserve">Temporal-Spatial Trade-off Request</doc>
+ </member>
+ <member name="psfb_type_tstn"
+ value="6"
+ c:identifier="GST_RTCP_PSFB_TYPE_TSTN"
+ glib:nick="psfb-type-tstn">
+ <doc xml:space="preserve">Temporal-Spatial Trade-off Notification</doc>
+ </member>
+ <member name="psfb_type_vbcn"
+ value="7"
+ c:identifier="GST_RTCP_PSFB_TYPE_VBCN"
+ glib:nick="psfb-type-vbcn">
+ <doc xml:space="preserve">Video Back Channel Message</doc>
+ </member>
+ </enumeration>
+ <record name="RTCPPacket" c:type="GstRTCPPacket">
+ <doc xml:space="preserve">Data structure that points to a packet at @offset in @buffer.
+The size of the structure is made public to allow stack allocations.</doc>
+ <field name="rtcp" writable="1">
+ <doc xml:space="preserve">pointer to RTCP buffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">offset of packet in buffer data</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="padding" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="count" readable="0" private="1">
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="type" readable="0" private="1">
+ <type name="RTCPType" c:type="GstRTCPType"/>
+ </field>
+ <field name="length" readable="0" private="1">
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="item_offset" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="item_count" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="entry_offset" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <method name="add_profile_specific_ext"
+ c:identifier="gst_rtcp_packet_add_profile_specific_ext">
+ <doc xml:space="preserve">Add profile-specific extension @data to @packet. If @packet already
+contains profile-specific extension @data will be appended to the existing
+extension.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the profile specific extension data was added.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">profile-specific data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">length of the profile-specific data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_rb" c:identifier="gst_rtcp_packet_add_rb">
+ <doc xml:space="preserve">Add a new report block to @packet with the given values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the packet was created. This function can return %FALSE if
+the max MTU is exceeded or the number of report blocks is greater than
+#GST_RTCP_MAX_RB_COUNT.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">data source being reported</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="fractionlost" transfer-ownership="none">
+ <doc xml:space="preserve">fraction lost since last SR/RR</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="packetslost" transfer-ownership="none">
+ <doc xml:space="preserve">the cumululative number of packets lost</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ <parameter name="exthighestseq" transfer-ownership="none">
+ <doc xml:space="preserve">the extended last sequence number received</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="jitter" transfer-ownership="none">
+ <doc xml:space="preserve">the interarrival jitter</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="lsr" transfer-ownership="none">
+ <doc xml:space="preserve">the last SR packet from this source</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="dlsr" transfer-ownership="none">
+ <doc xml:space="preserve">the delay since last SR packet</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="app_get_data"
+ c:identifier="gst_rtcp_packet_app_get_data"
+ version="1.10">
+ <doc xml:space="preserve">Get the application-dependent data attached to a RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A pointer to the data</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="app_get_data_length"
+ c:identifier="gst_rtcp_packet_app_get_data_length"
+ version="1.10">
+ <doc xml:space="preserve">Get the length of the application-dependent data attached to an APP
+@packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of data in 32-bit words.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="app_get_name"
+ c:identifier="gst_rtcp_packet_app_get_name"
+ version="1.10">
+ <doc xml:space="preserve">Get the name field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The 4-byte name field, not zero-terminated.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="app_get_ssrc"
+ c:identifier="gst_rtcp_packet_app_get_ssrc"
+ version="1.10">
+ <doc xml:space="preserve">Get the SSRC/CSRC field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The SSRC/CSRC.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="app_get_subtype"
+ c:identifier="gst_rtcp_packet_app_get_subtype"
+ version="1.10">
+ <doc xml:space="preserve">Get the subtype field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The subtype.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="app_set_data_length"
+ c:identifier="gst_rtcp_packet_app_set_data_length"
+ version="1.10">
+ <doc xml:space="preserve">Set the length of the application-dependent data attached to an APP
+@packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was enough space in the packet to add this much
+data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="wordlen" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data in 32-bit words</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="app_set_name"
+ c:identifier="gst_rtcp_packet_app_set_name"
+ version="1.10">
+ <doc xml:space="preserve">Set the name field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">4-byte ASCII name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="app_set_ssrc"
+ c:identifier="gst_rtcp_packet_app_set_ssrc"
+ version="1.10">
+ <doc xml:space="preserve">Set the SSRC/CSRC field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">SSRC/CSRC of the packet</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="app_set_subtype"
+ c:identifier="gst_rtcp_packet_app_set_subtype"
+ version="1.10">
+ <doc xml:space="preserve">Set the subtype field of the APP @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid APP #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="subtype" transfer-ownership="none">
+ <doc xml:space="preserve">subtype of the packet</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bye_add_ssrc" c:identifier="gst_rtcp_packet_bye_add_ssrc">
+ <doc xml:space="preserve">Add @ssrc to the BYE @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the ssrc was added. This function can return %FALSE if
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">an SSRC to add</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bye_add_ssrcs"
+ c:identifier="gst_rtcp_packet_bye_add_ssrcs">
+ <doc xml:space="preserve">Adds @len SSRCs in @ssrc to BYE @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the all the SSRCs were added. This function can return %FALSE if
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">an array of SSRCs to add</doc>
+ <array length="1" zero-terminated="0" c:type="guint32*">
+ <type name="guint32" c:type="guint32"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">number of elements in @ssrc</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bye_get_nth_ssrc"
+ c:identifier="gst_rtcp_packet_bye_get_nth_ssrc">
+ <doc xml:space="preserve">Get the @nth SSRC of the BYE @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The @nth SSRC of @packet.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth SSRC to get</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bye_get_reason"
+ c:identifier="gst_rtcp_packet_bye_get_reason">
+ <doc xml:space="preserve">Get the reason in @packet.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The reason for the BYE @packet or NULL if the packet did not contain
+a reason string. The string must be freed with g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="bye_get_reason_len"
+ c:identifier="gst_rtcp_packet_bye_get_reason_len">
+ <doc xml:space="preserve">Get the length of the reason string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the reason string or 0 when there is no reason string
+present.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="bye_get_ssrc_count"
+ c:identifier="gst_rtcp_packet_bye_get_ssrc_count">
+ <doc xml:space="preserve">Get the number of SSRC fields in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of SSRC fields in @packet.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="bye_set_reason"
+ c:identifier="gst_rtcp_packet_bye_set_reason">
+ <doc xml:space="preserve">Set the reason string to @reason in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the string could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid BYE #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="reason" transfer-ownership="none">
+ <doc xml:space="preserve">a reason string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_profile_specific_ext"
+ c:identifier="gst_rtcp_packet_copy_profile_specific_ext">
+ <doc xml:space="preserve">The profile-specific extension data is copied into a new allocated
+memory area @data. This must be freed with g_free() after usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was valid data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result profile-specific data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ <parameter name="len"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">length of the profile-specific extension data</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fb_get_fci" c:identifier="gst_rtcp_packet_fb_get_fci">
+ <doc xml:space="preserve">Get the Feedback Control Information attached to a RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the FCI</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fb_get_fci_length"
+ c:identifier="gst_rtcp_packet_fb_get_fci_length">
+ <doc xml:space="preserve">Get the length of the Feedback Control Information attached to a
+RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the FCI in 32-bit words.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fb_get_media_ssrc"
+ c:identifier="gst_rtcp_packet_fb_get_media_ssrc">
+ <doc xml:space="preserve">Get the media SSRC field of the RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the media SSRC.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fb_get_sender_ssrc"
+ c:identifier="gst_rtcp_packet_fb_get_sender_ssrc">
+ <doc xml:space="preserve">Get the sender SSRC field of the RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the sender SSRC.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fb_get_type" c:identifier="gst_rtcp_packet_fb_get_type">
+ <doc xml:space="preserve">Get the feedback message type of the FB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The feedback message type.</doc>
+ <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="fb_set_fci_length"
+ c:identifier="gst_rtcp_packet_fb_set_fci_length">
+ <doc xml:space="preserve">Set the length of the Feedback Control Information attached to a
+RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was enough space in the packet to add this much FCI</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="wordlen" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the FCI in 32-bit words</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fb_set_media_ssrc"
+ c:identifier="gst_rtcp_packet_fb_set_media_ssrc">
+ <doc xml:space="preserve">Set the media SSRC field of the RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">a media SSRC</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fb_set_sender_ssrc"
+ c:identifier="gst_rtcp_packet_fb_set_sender_ssrc">
+ <doc xml:space="preserve">Set the sender SSRC field of the RTPFB or PSFB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">a sender SSRC</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="fb_set_type" c:identifier="gst_rtcp_packet_fb_set_type">
+ <doc xml:space="preserve">Set the feedback message type of the FB @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RTPFB or PSFB #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstRTCPFBType to set</doc>
+ <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_count" c:identifier="gst_rtcp_packet_get_count">
+ <doc xml:space="preserve">Get the count field in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The count field in @packet or -1 if @packet does not point to a
+valid packet.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_length" c:identifier="gst_rtcp_packet_get_length">
+ <doc xml:space="preserve">Get the length field of @packet. This is the length of the packet in
+32-bit words minus one.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length field of @packet.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_padding" c:identifier="gst_rtcp_packet_get_padding">
+ <doc xml:space="preserve">Get the packet padding of the packet pointed to by @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">If the packet has the padding bit set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_profile_specific_ext"
+ c:identifier="gst_rtcp_packet_get_profile_specific_ext">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was valid data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">result profile-specific data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ <parameter name="len"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result length of the profile-specific data</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_profile_specific_ext_length"
+ c:identifier="gst_rtcp_packet_get_profile_specific_ext_length">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of 32-bit words containing profile-specific extension
+ data from @packet.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_rb" c:identifier="gst_rtcp_packet_get_rb">
+ <doc xml:space="preserve">Parse the values of the @nth report block in @packet and store the result in
+the values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth report block in @packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ssrc"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for data source being reported</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="fractionlost"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for fraction lost since last SR/RR</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="packetslost"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for the cumululative number of packets lost</doc>
+ <type name="gint32" c:type="gint32*"/>
+ </parameter>
+ <parameter name="exthighestseq"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for the extended last sequence number received</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="jitter"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for the interarrival jitter</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="lsr"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for the last SR packet from this source</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="dlsr"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result for the delay since last SR packet</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_rb_count" c:identifier="gst_rtcp_packet_get_rb_count">
+ <doc xml:space="preserve">Get the number of report blocks in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of report blocks in @packet.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_type" c:identifier="gst_rtcp_packet_get_type">
+ <doc xml:space="preserve">Get the packet type of the packet pointed to by @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The packet type or GST_RTCP_TYPE_INVALID when @packet is not
+pointing to a valid packet.</doc>
+ <type name="RTCPType" c:type="GstRTCPType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="move_to_next" c:identifier="gst_rtcp_packet_move_to_next">
+ <doc xml:space="preserve">Move the packet pointer @packet to the next packet in the payload.
+Use gst_rtcp_buffer_get_first_packet() to initialize @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @packet is pointing to a valid packet after calling this
+function.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove" c:identifier="gst_rtcp_packet_remove">
+ <doc xml:space="preserve">Removes the packet pointed to by @packet and moves pointer to the next one</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @packet is pointing to a valid packet after calling this
+function.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="rr_get_ssrc" c:identifier="gst_rtcp_packet_rr_get_ssrc">
+ <doc xml:space="preserve">Get the ssrc field of the RR @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the ssrc.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="rr_set_ssrc" c:identifier="gst_rtcp_packet_rr_set_ssrc">
+ <doc xml:space="preserve">Set the ssrc field of the RR @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC to set</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sdes_add_entry"
+ c:identifier="gst_rtcp_packet_sdes_add_entry">
+ <doc xml:space="preserve">Add a new SDES entry to the current item in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the item could be added, %FALSE if the MTU has been
+reached.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstRTCPSDESType of the SDES entry</doc>
+ <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the data length</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sdes_add_item"
+ c:identifier="gst_rtcp_packet_sdes_add_item">
+ <doc xml:space="preserve">Add a new SDES item for @ssrc to @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the item could be added, %FALSE if the maximum amount of
+items has been exceeded for the SDES packet or the MTU has been reached.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC of the new item to add</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sdes_copy_entry"
+ c:identifier="gst_rtcp_packet_sdes_copy_entry">
+ <doc xml:space="preserve">This function is like gst_rtcp_packet_sdes_get_entry() but it returns a
+null-terminated copy of the data instead. use g_free() after usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was valid data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">result of the entry type</doc>
+ <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+ </parameter>
+ <parameter name="len"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result length of the entry data</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result entry data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sdes_first_entry"
+ c:identifier="gst_rtcp_packet_sdes_first_entry">
+ <doc xml:space="preserve">Move to the first SDES entry in the current item.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was a first entry.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sdes_first_item"
+ c:identifier="gst_rtcp_packet_sdes_first_item">
+ <doc xml:space="preserve">Move to the first SDES item in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if there was a first item.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sdes_get_entry"
+ c:identifier="gst_rtcp_packet_sdes_get_entry">
+ <doc xml:space="preserve">Get the data of the current SDES item entry. @type (when not NULL) will
+contain the type of the entry. @data (when not NULL) will point to @len
+bytes.
+
+When @type refers to a text item, @data will point to a UTF8 string. Note
+that this UTF8 string is NOT null-terminated. Use
+gst_rtcp_packet_sdes_copy_entry() to get a null-terminated copy of the entry.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was valid data.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">result of the entry type</doc>
+ <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+ </parameter>
+ <parameter name="len"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result length of the entry data</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">result entry data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sdes_get_item_count"
+ c:identifier="gst_rtcp_packet_sdes_get_item_count">
+ <doc xml:space="preserve">Get the number of items in the SDES packet @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of items in @packet.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sdes_get_ssrc"
+ c:identifier="gst_rtcp_packet_sdes_get_ssrc">
+ <doc xml:space="preserve">Get the SSRC of the current SDES item.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC of the current item.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sdes_next_entry"
+ c:identifier="gst_rtcp_packet_sdes_next_entry">
+ <doc xml:space="preserve">Move to the next SDES entry in the current item.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if there was a next entry.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sdes_next_item"
+ c:identifier="gst_rtcp_packet_sdes_next_item">
+ <doc xml:space="preserve">Move to the next SDES item in @packet.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if there was a next item.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SDES #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_rb" c:identifier="gst_rtcp_packet_set_rb">
+ <doc xml:space="preserve">Set the @nth new report block in @packet with the given values.
+
+Note: Not implemented.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR or RR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth report block to set</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">data source being reported</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="fractionlost" transfer-ownership="none">
+ <doc xml:space="preserve">fraction lost since last SR/RR</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="packetslost" transfer-ownership="none">
+ <doc xml:space="preserve">the cumululative number of packets lost</doc>
+ <type name="gint32" c:type="gint32"/>
+ </parameter>
+ <parameter name="exthighestseq" transfer-ownership="none">
+ <doc xml:space="preserve">the extended last sequence number received</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="jitter" transfer-ownership="none">
+ <doc xml:space="preserve">the interarrival jitter</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="lsr" transfer-ownership="none">
+ <doc xml:space="preserve">the last SR packet from this source</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="dlsr" transfer-ownership="none">
+ <doc xml:space="preserve">the delay since last SR packet</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sr_get_sender_info"
+ c:identifier="gst_rtcp_packet_sr_get_sender_info">
+ <doc xml:space="preserve">Parse the SR sender info and store the values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result SSRC</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="ntptime"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result NTP time</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="rtptime"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result RTP time</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="packet_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result packet count</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ <parameter name="octet_count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result octet count</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sr_set_sender_info"
+ c:identifier="gst_rtcp_packet_sr_set_sender_info">
+ <doc xml:space="preserve">Set the given values in the SR packet @packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="packet" transfer-ownership="none">
+ <doc xml:space="preserve">a valid SR #GstRTCPPacket</doc>
+ <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="ntptime" transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ <parameter name="rtptime" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP time</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="packet_count" transfer-ownership="none">
+ <doc xml:space="preserve">the packet count</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="octet_count" transfer-ownership="none">
+ <doc xml:space="preserve">the octet count</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="RTCPSDESType"
+ glib:type-name="GstRTCPSDESType"
+ glib:get-type="gst_rtcpsdes_type_get_type"
+ c:type="GstRTCPSDESType">
+ <doc xml:space="preserve">Different types of SDES content.</doc>
+ <member name="invalid"
+ value="-1"
+ c:identifier="GST_RTCP_SDES_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">Invalid SDES entry</doc>
+ </member>
+ <member name="end"
+ value="0"
+ c:identifier="GST_RTCP_SDES_END"
+ glib:nick="end">
+ <doc xml:space="preserve">End of SDES list</doc>
+ </member>
+ <member name="cname"
+ value="1"
+ c:identifier="GST_RTCP_SDES_CNAME"
+ glib:nick="cname">
+ <doc xml:space="preserve">Canonical name</doc>
+ </member>
+ <member name="name"
+ value="2"
+ c:identifier="GST_RTCP_SDES_NAME"
+ glib:nick="name">
+ <doc xml:space="preserve">User name</doc>
+ </member>
+ <member name="email"
+ value="3"
+ c:identifier="GST_RTCP_SDES_EMAIL"
+ glib:nick="email">
+ <doc xml:space="preserve">User's electronic mail address</doc>
+ </member>
+ <member name="phone"
+ value="4"
+ c:identifier="GST_RTCP_SDES_PHONE"
+ glib:nick="phone">
+ <doc xml:space="preserve">User's phone number</doc>
+ </member>
+ <member name="loc"
+ value="5"
+ c:identifier="GST_RTCP_SDES_LOC"
+ glib:nick="loc">
+ <doc xml:space="preserve">Geographic user location</doc>
+ </member>
+ <member name="tool"
+ value="6"
+ c:identifier="GST_RTCP_SDES_TOOL"
+ glib:nick="tool">
+ <doc xml:space="preserve">Name of application or tool</doc>
+ </member>
+ <member name="note"
+ value="7"
+ c:identifier="GST_RTCP_SDES_NOTE"
+ glib:nick="note">
+ <doc xml:space="preserve">Notice about the source</doc>
+ </member>
+ <member name="priv"
+ value="8"
+ c:identifier="GST_RTCP_SDES_PRIV"
+ glib:nick="priv">
+ <doc xml:space="preserve">Private extensions</doc>
+ </member>
+ </enumeration>
+ <enumeration name="RTCPType"
+ glib:type-name="GstRTCPType"
+ glib:get-type="gst_rtcp_type_get_type"
+ c:type="GstRTCPType">
+ <doc xml:space="preserve">Different RTCP packet types.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTCP_TYPE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">Invalid type</doc>
+ </member>
+ <member name="sr"
+ value="200"
+ c:identifier="GST_RTCP_TYPE_SR"
+ glib:nick="sr">
+ <doc xml:space="preserve">Sender report</doc>
+ </member>
+ <member name="rr"
+ value="201"
+ c:identifier="GST_RTCP_TYPE_RR"
+ glib:nick="rr">
+ <doc xml:space="preserve">Receiver report</doc>
+ </member>
+ <member name="sdes"
+ value="202"
+ c:identifier="GST_RTCP_TYPE_SDES"
+ glib:nick="sdes">
+ <doc xml:space="preserve">Source description</doc>
+ </member>
+ <member name="bye"
+ value="203"
+ c:identifier="GST_RTCP_TYPE_BYE"
+ glib:nick="bye">
+ <doc xml:space="preserve">Goodbye</doc>
+ </member>
+ <member name="app"
+ value="204"
+ c:identifier="GST_RTCP_TYPE_APP"
+ glib:nick="app">
+ <doc xml:space="preserve">Application defined</doc>
+ </member>
+ <member name="rtpfb"
+ value="205"
+ c:identifier="GST_RTCP_TYPE_RTPFB"
+ glib:nick="rtpfb">
+ <doc xml:space="preserve">Transport layer feedback.</doc>
+ </member>
+ <member name="psfb"
+ value="206"
+ c:identifier="GST_RTCP_TYPE_PSFB"
+ glib:nick="psfb">
+ <doc xml:space="preserve">Payload-specific feedback.</doc>
+ </member>
+ <member name="xr"
+ value="207"
+ c:identifier="GST_RTCP_TYPE_XR"
+ glib:nick="xr">
+ <doc xml:space="preserve">Extended report.</doc>
+ </member>
+ </enumeration>
+ <constant name="RTCP_MAX_BYE_SSRC_COUNT"
+ value="31"
+ c:type="GST_RTCP_MAX_BYE_SSRC_COUNT">
+ <doc xml:space="preserve">The maximum amount of SSRCs in a BYE packet.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_MAX_RB_COUNT"
+ value="31"
+ c:type="GST_RTCP_MAX_RB_COUNT">
+ <doc xml:space="preserve">The maximum amount of Receiver report blocks in RR and SR messages.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_MAX_SDES" value="255" c:type="GST_RTCP_MAX_SDES">
+ <doc xml:space="preserve">The maximum text length for an SDES item.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_MAX_SDES_ITEM_COUNT"
+ value="31"
+ c:type="GST_RTCP_MAX_SDES_ITEM_COUNT">
+ <doc xml:space="preserve">The maximum amount of SDES items.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_REDUCED_SIZE_VALID_MASK"
+ value="57592"
+ c:type="GST_RTCP_REDUCED_SIZE_VALID_MASK">
+ <doc xml:space="preserve">Mask for version, padding bit and packet type pair allowing reduced size
+packets, basically it accepts other types than RR and SR</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_VALID_MASK"
+ value="57598"
+ c:type="GST_RTCP_VALID_MASK">
+ <doc xml:space="preserve">Mask for version, padding bit and packet type pair</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_VALID_VALUE"
+ value="200"
+ c:type="GST_RTCP_VALID_VALUE">
+ <doc xml:space="preserve">Valid value for the first two bytes of an RTCP packet after applying
+#GST_RTCP_VALID_MASK to them.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTCP_VERSION" value="2" c:type="GST_RTCP_VERSION">
+ <doc xml:space="preserve">The supported RTCP version 2.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <class name="RTPBaseAudioPayload"
+ c:symbol-prefix="rtp_base_audio_payload"
+ c:type="GstRTPBaseAudioPayload"
+ parent="RTPBasePayload"
+ glib:type-name="GstRTPBaseAudioPayload"
+ glib:get-type="gst_rtp_base_audio_payload_get_type"
+ glib:type-struct="RTPBaseAudioPayloadClass">
+ <doc xml:space="preserve">Provides a base class for audio RTP payloaders for frame or sample based
+audio codecs (constant bitrate)
+
+This class derives from GstRTPBasePayload. It can be used for payloading
+audio codecs. It will only work with constant bitrate codecs. It supports
+both frame based and sample based codecs. It takes care of packing up the
+audio data into RTP packets and filling up the headers accordingly. The
+payloading is done based on the maximum MTU (mtu) and the maximum time per
+packet (max-ptime). The general idea is to divide large data buffers into
+smaller RTP packets. The RTP packet size is the minimum of either the MTU,
+max-ptime (if set) or available data. The RTP packet size is always larger or
+equal to min-ptime (if set). If min-ptime is not set, any residual data is
+sent in a last RTP packet. In the case of frame based codecs, the resulting
+RTP packets always contain full frames.
+
+## Usage
+
+To use this base class, your child element needs to call either
+gst_rtp_base_audio_payload_set_frame_based() or
+gst_rtp_base_audio_payload_set_sample_based(). This is usually done in the
+element's _init() function. Then, the child element must call either
+gst_rtp_base_audio_payload_set_frame_options(),
+gst_rtp_base_audio_payload_set_sample_options() or
+gst_rtp_base_audio_payload_set_samplebits_options. Since
+GstRTPBaseAudioPayload derives from GstRTPBasePayload, the child element
+must set any variables or call/override any functions required by that base
+class. The child element does not need to override any other functions
+specific to GstRTPBaseAudioPayload.</doc>
+ <method name="flush" c:identifier="gst_rtp_base_audio_payload_flush">
+ <doc xml:space="preserve">Create an RTP buffer and store @payload_len bytes of the adapter as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream.
+
+If @payload_len is -1, all pending bytes will be flushed. If @timestamp is
+-1, the timestamp will be calculated automatically.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="baseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">length of payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_adapter"
+ c:identifier="gst_rtp_base_audio_payload_get_adapter">
+ <doc xml:space="preserve">Gets the internal adapter used by the depayloader.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstAdapter.</doc>
+ <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBaseAudioPayload</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_rtp_base_audio_payload_push">
+ <doc xml:space="preserve">Create an RTP buffer and store @payload_len bytes of @data as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="baseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data to set as payload</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">length of payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_based"
+ c:identifier="gst_rtp_base_audio_payload_set_frame_based">
+ <doc xml:space="preserve">Tells #GstRTPBaseAudioPayload that the child element is for a frame based
+audio codec</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the element.</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_frame_options"
+ c:identifier="gst_rtp_base_audio_payload_set_frame_options">
+ <doc xml:space="preserve">Sets the options for frame based audio codecs.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the element.</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ <parameter name="frame_duration" transfer-ownership="none">
+ <doc xml:space="preserve">The duraction of an audio frame in milliseconds.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="frame_size" transfer-ownership="none">
+ <doc xml:space="preserve">The size of an audio frame in bytes.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_sample_based"
+ c:identifier="gst_rtp_base_audio_payload_set_sample_based">
+ <doc xml:space="preserve">Tells #GstRTPBaseAudioPayload that the child element is for a sample based
+audio codec</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the element.</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_sample_options"
+ c:identifier="gst_rtp_base_audio_payload_set_sample_options">
+ <doc xml:space="preserve">Sets the options for sample based audio codecs.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the element.</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ <parameter name="sample_size" transfer-ownership="none">
+ <doc xml:space="preserve">Size per sample in bytes.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_samplebits_options"
+ c:identifier="gst_rtp_base_audio_payload_set_samplebits_options">
+ <doc xml:space="preserve">Sets the options for sample based audio codecs.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtpbaseaudiopayload"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to the element.</doc>
+ <type name="RTPBaseAudioPayload" c:type="GstRTPBaseAudioPayload*"/>
+ </instance-parameter>
+ <parameter name="sample_size" transfer-ownership="none">
+ <doc xml:space="preserve">Size per sample in bits.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="buffer-list" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="payload">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload"/>
+ </field>
+ <field name="priv">
+ <type name="RTPBaseAudioPayloadPrivate"
+ c:type="GstRTPBaseAudioPayloadPrivate*"/>
+ </field>
+ <field name="base_ts">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="frame_size">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="frame_duration">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="sample_size">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="RTPBaseAudioPayloadClass"
+ c:type="GstRTPBaseAudioPayloadClass"
+ glib:is-gtype-struct-for="RTPBaseAudioPayload">
+ <doc xml:space="preserve">Base class for audio RTP payloader.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="RTPBasePayloadClass" c:type="GstRTPBasePayloadClass"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="RTPBaseAudioPayloadPrivate"
+ c:type="GstRTPBaseAudioPayloadPrivate"
+ disguised="1">
+ </record>
+ <class name="RTPBaseDepayload"
+ c:symbol-prefix="rtp_base_depayload"
+ c:type="GstRTPBaseDepayload"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstRTPBaseDepayload"
+ glib:get-type="gst_rtp_base_depayload_get_type"
+ glib:type-struct="RTPBaseDepayloadClass">
+ <doc xml:space="preserve">Provides a base class for RTP depayloaders</doc>
+ <virtual-method name="handle_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="packet_lost">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="process">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="base" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="in" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="process_rtp_packet">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="base" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="rtp_buffer" transfer-ownership="none">
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="push" c:identifier="gst_rtp_base_depayload_push">
+ <doc xml:space="preserve">Push @out_buf to the peer of @filter. This function takes ownership of
+@out_buf.
+
+This function will by default apply the last incomming timestamp on
+the outgoing buffer when it didn't have a timestamp already.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBaseDepayload</doc>
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="out_buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_list" c:identifier="gst_rtp_base_depayload_push_list">
+ <doc xml:space="preserve">Push @out_list to the peer of @filter. This function takes ownership of
+@out_list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBaseDepayload</doc>
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </instance-parameter>
+ <parameter name="out_list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="stats" transfer-ownership="none">
+ <doc xml:space="preserve">Various depayloader statistics retrieved atomically (and are therefore
+synchroized with each other). This property return a GstStructure named
+application/x-rtp-depayload-stats containing the following fields relating to
+the last processed buffer and current state of the stream being depayloaded:
+
+ * `clock-rate`: #G_TYPE_UINT, clock-rate of the stream
+ * `npt-start`: #G_TYPE_UINT64, time of playback start
+ * `npt-stop`: #G_TYPE_UINT64, time of playback stop
+ * `play-speed`: #G_TYPE_DOUBLE, the playback speed
+ * `play-scale`: #G_TYPE_DOUBLE, the playback scale
+ * `running-time-dts`: #G_TYPE_UINT64, the last running-time of the
+ last DTS
+ * `running-time-pts`: #G_TYPE_UINT64, the last running-time of the
+ last PTS
+ * `seqnum`: #G_TYPE_UINT, the last seen seqnum
+ * `timestamp`: #G_TYPE_UINT, the last seen RTP timestamp</doc>
+ <type name="Gst.Structure"/>
+ </property>
+ <field name="parent">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="clock_rate">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="segment">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="need_newsegment">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="RTPBaseDepayloadPrivate"
+ c:type="GstRTPBaseDepayloadPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="RTPBaseDepayloadClass"
+ c:type="GstRTPBaseDepayloadClass"
+ glib:is-gtype-struct-for="RTPBaseDepayload">
+ <doc xml:space="preserve">Base class for RTP depayloaders.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="set_caps">
+ <callback name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="process">
+ <callback name="process">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="base" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </parameter>
+ <parameter name="in" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="packet_lost">
+ <callback name="packet_lost">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_event">
+ <callback name="handle_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="process_rtp_packet">
+ <callback name="process_rtp_packet">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="base" transfer-ownership="none">
+ <type name="RTPBaseDepayload" c:type="GstRTPBaseDepayload*"/>
+ </parameter>
+ <parameter name="rtp_buffer" transfer-ownership="none">
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="RTPBaseDepayloadPrivate"
+ c:type="GstRTPBaseDepayloadPrivate"
+ disguised="1">
+ </record>
+ <class name="RTPBasePayload"
+ c:symbol-prefix="rtp_base_payload"
+ c:type="GstRTPBasePayload"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstRTPBasePayload"
+ glib:get-type="gst_rtp_base_payload_get_type"
+ glib:type-struct="RTPBasePayloadClass">
+ <doc xml:space="preserve">Provides a base class for RTP payloaders</doc>
+ <virtual-method name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="is_filled" c:identifier="gst_rtp_base_payload_is_filled">
+ <doc xml:space="preserve">Check if the packet with @size and @duration would exceed the configured
+maximum size.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the packet of @size and @duration would exceed the
+configured MTU or max_ptime.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">the duration of the packet</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push" c:identifier="gst_rtp_base_payload_push">
+ <doc xml:space="preserve">Push @buffer to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+
+This function takes ownership of @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="push_list" c:identifier="gst_rtp_base_payload_push_list">
+ <doc xml:space="preserve">Push @list to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+
+This function takes ownership of @list.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferList</doc>
+ <type name="Gst.BufferList" c:type="GstBufferList*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_options"
+ c:identifier="gst_rtp_base_payload_set_options">
+ <doc xml:space="preserve">Set the rtp options of the payloader. These options will be set in the caps
+of the payloader. Subclasses must call this method before calling
+gst_rtp_base_payload_push() or gst_rtp_base_payload_set_outcaps().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">the media type (typically "audio" or "video")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="dynamic" transfer-ownership="none">
+ <doc xml:space="preserve">if the payload type is dynamic</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="encoding_name" transfer-ownership="none">
+ <doc xml:space="preserve">the encoding name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="clock_rate" transfer-ownership="none">
+ <doc xml:space="preserve">the clock rate of the media</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_outcaps"
+ c:identifier="gst_rtp_base_payload_set_outcaps"
+ introspectable="0">
+ <doc xml:space="preserve">Configure the output caps with the optional parameters.
+
+Variable arguments should be in the form field name, field type
+(as a GType), value(s). The last variable argument should be NULL.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the caps could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBasePayload</doc>
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </instance-parameter>
+ <parameter name="fieldname" transfer-ownership="none">
+ <doc xml:space="preserve">the first field name or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">field values</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="max-ptime" writable="1" transfer-ownership="none">
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="min-ptime" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Minimum duration of the packet data in ns (can't go above MTU)</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="mtu" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="perfect-rtptime" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Try to use the offset fields to generate perfect RTP timestamps. When this
+option is disabled, RTP timestamps are generated from GST_BUFFER_PTS of
+each payloaded buffer. The PTSes of buffers may not necessarily increment
+with the amount of data in each input buffer, consider e.g. the case where
+the buffer arrives from a network which means that the PTS is unrelated to
+the amount of data. Because the RTP timestamps are generated from
+GST_BUFFER_PTS this can result in RTP timestamps that also don't increment
+with the amount of data in the payloaded packet. To circumvent this it is
+possible to set the perfect rtptime option enabled. When this option is
+enabled the payloader will increment the RTP timestamps based on
+GST_BUFFER_OFFSET which relates to the amount of data in each packet
+rather than the GST_BUFFER_PTS of each buffer and therefore the RTP
+timestamps will more closely correlate with the amount of data in each
+buffer. Currently GstRTPBasePayload is limited to handling perfect RTP
+timestamps for audio streams.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <property name="pt" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="ptime-multiple" writable="1" transfer-ownership="none">
+ <doc xml:space="preserve">Force buffers to be multiples of this duration in ns (0 disables)</doc>
+ <type name="gint64" c:type="gint64"/>
+ </property>
+ <property name="seqnum" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="seqnum-offset" writable="1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </property>
+ <property name="ssrc" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="stats" transfer-ownership="none">
+ <doc xml:space="preserve">Various payloader statistics retrieved atomically (and are therefore
+synchroized with each other), these can be used e.g. to generate an
+RTP-Info header. This property return a GstStructure named
+application/x-rtp-payload-stats containing the following fields relating to
+the last processed buffer and current state of the stream being payloaded:
+
+ * `clock-rate` :#G_TYPE_UINT, clock-rate of the stream
+ * `running-time` :#G_TYPE_UINT64, running time
+ * `seqnum` :#G_TYPE_UINT, sequence number, same as #GstRTPBasePayload:seqnum
+ * `timestamp` :#G_TYPE_UINT, RTP timestamp, same as #GstRTPBasePayload:timestamp
+ * `ssrc` :#G_TYPE_UINT, The SSRC in use
+ * `pt` :#G_TYPE_UINT, The Payload type in use, same as #GstRTPBasePayload:pt
+ * `seqnum-offset` :#G_TYPE_UINT, The current offset added to the seqnum
+ * `timestamp-offset` :#G_TYPE_UINT, The current offset added to the timestamp</doc>
+ <type name="Gst.Structure"/>
+ </property>
+ <property name="timestamp" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <property name="timestamp-offset" writable="1" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </property>
+ <field name="element">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="ts_base" readable="0" private="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="seqnum_base" readable="0" private="1">
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="media" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="encoding_name" readable="0" private="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="dynamic" readable="0" private="1">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="clock_rate" readable="0" private="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="ts_offset" readable="0" private="1">
+ <type name="gint32" c:type="gint32"/>
+ </field>
+ <field name="timestamp" readable="0" private="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="seqnum_offset" readable="0" private="1">
+ <type name="gint16" c:type="gint16"/>
+ </field>
+ <field name="seqnum" readable="0" private="1">
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="max_ptime" readable="0" private="1">
+ <type name="gint64" c:type="gint64"/>
+ </field>
+ <field name="pt" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="ssrc" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="current_ssrc" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="mtu" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="segment" readable="0" private="1">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="min_ptime" readable="0" private="1">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="ptime" readable="0" private="1">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="ptime_multiple" readable="0" private="1">
+ <type name="guint64" c:type="guint64"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="RTPBasePayloadPrivate" c:type="GstRTPBasePayloadPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="RTPBasePayloadClass"
+ c:type="GstRTPBasePayloadClass"
+ glib:is-gtype-struct-for="RTPBasePayload">
+ <doc xml:space="preserve">Base class for audio RTP payloader.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="get_caps">
+ <callback name="get_caps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_caps">
+ <callback name="set_caps">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_buffer">
+ <callback name="handle_buffer">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="query">
+ <callback name="query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload" transfer-ownership="none">
+ <type name="RTPBasePayload" c:type="GstRTPBasePayload*"/>
+ </parameter>
+ <parameter name="pad" transfer-ownership="none">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="RTPBasePayloadPrivate"
+ c:type="GstRTPBasePayloadPrivate"
+ disguised="1">
+ </record>
+ <record name="RTPBuffer" c:type="GstRTPBuffer">
+ <doc xml:space="preserve">The GstRTPBuffer helper functions makes it easy to parse and create regular
+#GstBuffer objects that contain RTP payloads. These buffers are typically of
+'application/x-rtp' #GstCaps.</doc>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">pointer to RTP buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="state" writable="1">
+ <doc xml:space="preserve">internal state</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">array of data</doc>
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">array of size</doc>
+ <array zero-terminated="0" c:type="gsize" fixed-size="4">
+ <type name="gsize" c:type="gsize"/>
+ </array>
+ </field>
+ <field name="map" writable="1">
+ <doc xml:space="preserve">array of #GstMapInfo</doc>
+ <array zero-terminated="0" c:type="GstMapInfo" fixed-size="4">
+ <type name="Gst.MapInfo" c:type="GstMapInfo"/>
+ </array>
+ </field>
+ <method name="add_extension_onebyte_header"
+ c:identifier="gst_rtp_buffer_add_extension_onebyte_header">
+ <doc xml:space="preserve">Adds a RFC 5285 header extension with a one byte header to the end of the
+RTP header. If there is already a RFC 5285 header extension with a one byte
+header, the new extension will be appended.
+It will not work if there is already a header extension that does not follow
+the mecanism described in RFC 5285 or if there is a header extension with
+a two bytes header as described in RFC 5285. In that case, use
+gst_rtp_buffer_add_extension_twobytes_header()</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if header extension could be added</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The ID of the header extension (between 1 and 14).</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">location for data</doc>
+ <array length="2" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_extension_twobytes_header"
+ c:identifier="gst_rtp_buffer_add_extension_twobytes_header">
+ <doc xml:space="preserve">Adds a RFC 5285 header extension with a two bytes header to the end of the
+RTP header. If there is already a RFC 5285 header extension with a two bytes
+header, the new extension will be appended.
+It will not work if there is already a header extension that does not follow
+the mecanism described in RFC 5285 or if there is a header extension with
+a one byte header as described in RFC 5285. In that case, use
+gst_rtp_buffer_add_extension_onebyte_header()</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if header extension could be added</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="appbits" transfer-ownership="none">
+ <doc xml:space="preserve">Application specific bits</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The ID of the header extension</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">location for data</doc>
+ <array length="3" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the data in bytes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_csrc" c:identifier="gst_rtp_buffer_get_csrc">
+ <doc xml:space="preserve">Get the CSRC at index @idx in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the CSRC at index @idx in host order.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the CSRC to get</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_csrc_count"
+ c:identifier="gst_rtp_buffer_get_csrc_count">
+ <doc xml:space="preserve">Get the CSRC count of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the CSRC count of @buffer.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_extension" c:identifier="gst_rtp_buffer_get_extension">
+ <doc xml:space="preserve">Check if the extension bit is set on the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer has the extension bit set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_extension_bytes"
+ c:identifier="gst_rtp_buffer_get_extension_bytes"
+ shadows="get_extension_data"
+ version="1.2">
+ <doc xml:space="preserve">Similar to gst_rtp_buffer_get_extension_data, but more suitable for language
+bindings usage. @bits will contain the extension 16 bits of custom data and
+the extension data (not including the extension header) is placed in a new
+#GBytes structure.
+
+If @rtp did not contain an extension, this function will return %NULL, with
+@bits unchanged. If there is an extension header but no extension data then
+an empty #GBytes will be returned.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GBytes if an extension header was present
+and %NULL otherwise.</doc>
+ <type name="GLib.Bytes" c:type="GBytes*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="bits"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for header bits</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_extension_data"
+ c:identifier="gst_rtp_buffer_get_extension_data"
+ shadowed-by="get_extension_bytes"
+ introspectable="0">
+ <doc xml:space="preserve">Get the extension data. @bits will contain the extension 16 bits of custom
+data. @data will point to the data in the extension and @wordlen will contain
+the length of @data in 32 bits words.
+
+If @buffer did not contain an extension, this function will return %FALSE
+with @bits, @data and @wordlen unchanged.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer had the extension bit set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="bits"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for result bits</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">location for data</doc>
+ <array zero-terminated="0" c:type="gpointer*">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="wordlen"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for length of @data in 32 bits words</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_extension_onebyte_header"
+ c:identifier="gst_rtp_buffer_get_extension_onebyte_header">
+ <doc xml:space="preserve">Parses RFC 5285 style header extensions with a one byte header. It will
+return the nth extension with the requested id.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer had the requested header extension</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The ID of the header extension to be read (between 1 and 14).</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">Read the nth extension packet with the requested ID</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">
+ location for data</doc>
+ <array length="3" zero-terminated="0" c:type="gpointer*">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the size of the data in bytes</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_extension_twobytes_header"
+ c:identifier="gst_rtp_buffer_get_extension_twobytes_header">
+ <doc xml:space="preserve">Parses RFC 5285 style header extensions with a two bytes header. It will
+return the nth extension with the requested id.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer had the requested header extension</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="appbits"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Application specific bits</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">The ID of the header extension to be read (between 1 and 14).</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">Read the nth extension packet with the requested ID</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">
+ location for data</doc>
+ <array length="4" zero-terminated="0" c:type="gpointer*">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the size of the data in bytes</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_header_len"
+ c:identifier="gst_rtp_buffer_get_header_len">
+ <doc xml:space="preserve">Return the total length of the header in @buffer. This include the length of
+the fixed header, the CSRC list and the extension header.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total length of the header in @buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_marker" c:identifier="gst_rtp_buffer_get_marker">
+ <doc xml:space="preserve">Check if the marker bit is set on the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer has the marker bit set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_packet_len"
+ c:identifier="gst_rtp_buffer_get_packet_len">
+ <doc xml:space="preserve">Return the total length of the packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total length of the packet in @buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_padding" c:identifier="gst_rtp_buffer_get_padding">
+ <doc xml:space="preserve">Check if the padding bit is set on the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer has the padding bit set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload"
+ c:identifier="gst_rtp_buffer_get_payload"
+ shadowed-by="get_payload_bytes"
+ introspectable="0">
+ <doc xml:space="preserve">Get a pointer to the payload data in @buffer. This pointer is valid as long
+as a reference to @buffer is held.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A pointer
+to the payload data in @buffer.</doc>
+ <array zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload_buffer"
+ c:identifier="gst_rtp_buffer_get_payload_buffer">
+ <doc xml:space="preserve">Create a buffer of the payload of the RTP packet in @buffer. This function
+will internally create a subbuffer of @buffer so that a memcpy can be
+avoided.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new buffer with the data of the payload.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload_bytes"
+ c:identifier="gst_rtp_buffer_get_payload_bytes"
+ shadows="get_payload"
+ version="1.2">
+ <doc xml:space="preserve">Similar to gst_rtp_buffer_get_payload, but more suitable for language
+bindings usage. The return value is a pointer to a #GBytes structure
+containing the payload data in @rtp.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GBytes containing the payload data in @rtp.</doc>
+ <type name="GLib.Bytes" c:type="GBytes*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload_len"
+ c:identifier="gst_rtp_buffer_get_payload_len">
+ <doc xml:space="preserve">Get the length of the payload of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the payload in @buffer.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload_subbuffer"
+ c:identifier="gst_rtp_buffer_get_payload_subbuffer">
+ <doc xml:space="preserve">Create a subbuffer of the payload of the RTP packet in @buffer. @offset bytes
+are skipped in the payload and the subbuffer will be of size @len.
+If @len is -1 the total payload starting from @offset is subbuffered.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new buffer with the specified data of the payload.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the offset in the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length in the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_payload_type"
+ c:identifier="gst_rtp_buffer_get_payload_type">
+ <doc xml:space="preserve">Get the payload type of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The payload type.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_seq" c:identifier="gst_rtp_buffer_get_seq">
+ <doc xml:space="preserve">Get the sequence number of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The sequence number in host order.</doc>
+ <type name="guint16" c:type="guint16"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ssrc" c:identifier="gst_rtp_buffer_get_ssrc">
+ <doc xml:space="preserve">Get the SSRC of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC of @buffer in host order.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_timestamp" c:identifier="gst_rtp_buffer_get_timestamp">
+ <doc xml:space="preserve">Get the timestamp of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The timestamp in host order.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_version" c:identifier="gst_rtp_buffer_get_version">
+ <doc xml:space="preserve">Get the version number of the RTP packet in @buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The version of @buffer.</doc>
+ <type name="guint8" c:type="guint8"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="pad_to" c:identifier="gst_rtp_buffer_pad_to">
+ <doc xml:space="preserve">Set the amount of padding in the RTP packet in @buffer to
+@len. If @len is 0, the padding is removed.
+
+NOTE: This function does not work correctly.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the new amount of padding</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_csrc" c:identifier="gst_rtp_buffer_set_csrc">
+ <doc xml:space="preserve">Modify the CSRC at index @idx in @buffer to @csrc.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the CSRC index to set</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc" transfer-ownership="none">
+ <doc xml:space="preserve">the CSRC in host order to set at @idx</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_extension" c:identifier="gst_rtp_buffer_set_extension">
+ <doc xml:space="preserve">Set the extension bit on the RTP packet in @buffer to @extension.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="extension" transfer-ownership="none">
+ <doc xml:space="preserve">the new extension</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_extension_data"
+ c:identifier="gst_rtp_buffer_set_extension_data">
+ <doc xml:space="preserve">Set the extension bit of the rtp buffer and fill in the @bits and @length of the
+extension header. If the existing extension data is not large enough, it will
+be made larger.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">True if done.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="bits" transfer-ownership="none">
+ <doc xml:space="preserve">the bits specific for the extension</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">the length that counts the number of 32-bit words in
+the extension, excluding the extension header ( therefore zero is a valid length)</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_marker" c:identifier="gst_rtp_buffer_set_marker">
+ <doc xml:space="preserve">Set the marker bit on the RTP packet in @buffer to @marker.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="marker" transfer-ownership="none">
+ <doc xml:space="preserve">the new marker</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_packet_len"
+ c:identifier="gst_rtp_buffer_set_packet_len">
+ <doc xml:space="preserve">Set the total @rtp size to @len. The data in the buffer will be made
+larger if needed. Any padding will be removed from the packet.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the new packet length</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_padding" c:identifier="gst_rtp_buffer_set_padding">
+ <doc xml:space="preserve">Set the padding bit on the RTP packet in @buffer to @padding.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="padding" transfer-ownership="none">
+ <doc xml:space="preserve">the new padding</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_payload_type"
+ c:identifier="gst_rtp_buffer_set_payload_type">
+ <doc xml:space="preserve">Set the payload type of the RTP packet in @buffer to @payload_type.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="payload_type" transfer-ownership="none">
+ <doc xml:space="preserve">the new type</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_seq" c:identifier="gst_rtp_buffer_set_seq">
+ <doc xml:space="preserve">Set the sequence number of the RTP packet in @buffer to @seq.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="seq" transfer-ownership="none">
+ <doc xml:space="preserve">the new sequence number</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ssrc" c:identifier="gst_rtp_buffer_set_ssrc">
+ <doc xml:space="preserve">Set the SSRC on the RTP packet in @buffer to @ssrc.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">the new SSRC</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_timestamp" c:identifier="gst_rtp_buffer_set_timestamp">
+ <doc xml:space="preserve">Set the timestamp of the RTP packet in @buffer to @timestamp.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the new timestamp</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_version" c:identifier="gst_rtp_buffer_set_version">
+ <doc xml:space="preserve">Set the version of the RTP packet in @buffer to @version.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">the RTP packet</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">the new version</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_rtp_buffer_unmap">
+ <doc xml:space="preserve">Unmap @rtp previously mapped with gst_rtp_buffer_map().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rtp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBuffer</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="allocate_data"
+ c:identifier="gst_rtp_buffer_allocate_data">
+ <doc xml:space="preserve">Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs,
+a payload length of @payload_len and padding of @pad_len.
+@buffer must be writable and all previous memory in @buffer will be freed.
+If @pad_len is &gt;0, the padding bit will be set. All other RTP header fields
+will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="calc_header_len"
+ c:identifier="gst_rtp_buffer_calc_header_len">
+ <doc xml:space="preserve">Calculate the header length of an RTP packet with @csrc_count CSRC entries.
+An RTP packet can have at most 15 CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of an RTP header with @csrc_count CSRC entries.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="calc_packet_len"
+ c:identifier="gst_rtp_buffer_calc_packet_len">
+ <doc xml:space="preserve">Calculate the total length of an RTP packet with a payload size of @payload_len,
+a padding of @pad_len and a @csrc_count CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total length of an RTP header with given parameters.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="calc_payload_len"
+ c:identifier="gst_rtp_buffer_calc_payload_len">
+ <doc xml:space="preserve">Calculate the length of the payload of an RTP packet with size @packet_len,
+a padding of @pad_len and a @csrc_count CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the payload of an RTP packet with given parameters.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="packet_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the total RTP packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="compare_seqnum"
+ c:identifier="gst_rtp_buffer_compare_seqnum">
+ <doc xml:space="preserve">Compare two sequence numbers, taking care of wraparounds. This function
+returns the difference between @seqnum1 and @seqnum2.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a negative value if @seqnum1 is bigger than @seqnum2, 0 if they
+are equal or a positive value if @seqnum1 is smaller than @segnum2.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="seqnum1" transfer-ownership="none">
+ <doc xml:space="preserve">a sequence number</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="seqnum2" transfer-ownership="none">
+ <doc xml:space="preserve">a sequence number</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="default_clock_rate"
+ c:identifier="gst_rtp_buffer_default_clock_rate">
+ <doc xml:space="preserve">Get the default clock-rate for the static payload type @payload_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the default clock rate or -1 if the payload type is not static or
+the clock-rate is undefined.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_type" transfer-ownership="none">
+ <doc xml:space="preserve">the static payload type</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="ext_timestamp"
+ c:identifier="gst_rtp_buffer_ext_timestamp">
+ <doc xml:space="preserve">Update the @exttimestamp field with the extended timestamp of @timestamp
+For the first call of the method, @exttimestamp should point to a location
+with a value of -1.
+
+This function is able to handle both forward and backward timestamps taking
+into account:
+ - timestamp wraparound making sure that the returned value is properly increased.
+ - timestamp unwraparound making sure that the returned value is properly decreased.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The extended timestamp of @timestamp or 0 if the result can't go anywhere backwards.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="exttimestamp"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a previous extended timestamp</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">a new timestamp</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="map" c:identifier="gst_rtp_buffer_map">
+ <doc xml:space="preserve">Map the contents of @buffer into @rtp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @buffer could be mapped.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMapFlags</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ <parameter name="rtp"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBuffer</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_allocate" c:identifier="gst_rtp_buffer_new_allocate">
+ <doc xml:space="preserve">Allocate a new #GstBuffer with enough data to hold an RTP packet with
+@csrc_count CSRCs, a payload length of @payload_len and padding of @pad_len.
+All other RTP header fields will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer that can hold an RTP packet with given
+parameters.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_allocate_len"
+ c:identifier="gst_rtp_buffer_new_allocate_len">
+ <doc xml:space="preserve">Create a new #GstBuffer that can hold an RTP packet that is exactly
+@packet_len long. The length of the payload depends on @pad_len and
+@csrc_count and can be calculated with gst_rtp_buffer_calc_payload_len().
+All RTP header fields will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer that can hold an RTP packet of @packet_len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="packet_len" transfer-ownership="none">
+ <doc xml:space="preserve">the total length of the packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_copy_data"
+ c:identifier="gst_rtp_buffer_new_copy_data">
+ <doc xml:space="preserve">Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with a copy of @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new
+ buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new_take_data"
+ c:identifier="gst_rtp_buffer_new_take_data">
+ <doc xml:space="preserve">Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="full">
+ <doc xml:space="preserve">
+ data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="RTPBufferFlags"
+ version="1.10"
+ glib:type-name="GstRTPBufferFlags"
+ glib:get-type="gst_rtp_buffer_flags_get_type"
+ c:type="GstRTPBufferFlags">
+ <doc xml:space="preserve">Additional RTP buffer flags. These flags can potentially be used on any
+buffers carrying RTP packets.
+
+Note that these are only valid for #GstCaps of type: application/x-rtp (x-rtcp).
+They can conflict with other extended buffer flags.</doc>
+ <member name="retransmission"
+ value="1048576"
+ c:identifier="GST_RTP_BUFFER_FLAG_RETRANSMISSION"
+ glib:nick="retransmission">
+ <doc xml:space="preserve">The #GstBuffer was once wrapped
+ in a retransmitted packet as specified by RFC 4588.</doc>
+ </member>
+ <member name="redundant"
+ value="2097152"
+ c:identifier="GST_RTP_BUFFER_FLAG_REDUNDANT"
+ glib:nick="redundant">
+ <doc xml:space="preserve">The packet represents redundant RTP packet.
+ The flag is used in gstrtpstorage to be able to hold the packetback
+ and use it only for recovery from packet loss.
+ Since: 1.14</doc>
+ </member>
+ <member name="last"
+ value="268435456"
+ c:identifier="GST_RTP_BUFFER_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">Offset to define more flags.</doc>
+ </member>
+ </bitfield>
+ <bitfield name="RTPBufferMapFlags"
+ version="1.6.1"
+ glib:type-name="GstRTPBufferMapFlags"
+ glib:get-type="gst_rtp_buffer_map_flags_get_type"
+ c:type="GstRTPBufferMapFlags">
+ <doc xml:space="preserve">Additional mapping flags for gst_rtp_buffer_map().</doc>
+ <member name="skip_padding"
+ value="65536"
+ c:identifier="GST_RTP_BUFFER_MAP_FLAG_SKIP_PADDING"
+ glib:nick="skip-padding">
+ <doc xml:space="preserve">Skip mapping and validation of RTP
+ padding and RTP pad count when present. Useful for buffers where
+ the padding may be encrypted.</doc>
+ </member>
+ <member name="last"
+ value="16777216"
+ c:identifier="GST_RTP_BUFFER_MAP_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">Offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <enumeration name="RTPPayload"
+ glib:type-name="GstRTPPayload"
+ glib:get-type="gst_rtp_payload_get_type"
+ c:type="GstRTPPayload">
+ <doc xml:space="preserve">Standard predefined fixed payload types.
+
+The official list is at:
+http://www.iana.org/assignments/rtp-parameters
+
+Audio:
+reserved: 19
+unassigned: 20-23,
+
+Video:
+unassigned: 24, 27, 29, 30, 35-71, 77-95
+Reserved for RTCP conflict avoidance: 72-76</doc>
+ <member name="pcmu"
+ value="0"
+ c:identifier="GST_RTP_PAYLOAD_PCMU"
+ glib:nick="pcmu">
+ <doc xml:space="preserve">ITU-T G.711. mu-law audio (RFC 3551)</doc>
+ </member>
+ <member name="1016"
+ value="1"
+ c:identifier="GST_RTP_PAYLOAD_1016"
+ glib:nick="1016">
+ <doc xml:space="preserve">RFC 3551 says reserved</doc>
+ </member>
+ <member name="g721"
+ value="2"
+ c:identifier="GST_RTP_PAYLOAD_G721"
+ glib:nick="g721">
+ <doc xml:space="preserve">RFC 3551 says reserved</doc>
+ </member>
+ <member name="gsm"
+ value="3"
+ c:identifier="GST_RTP_PAYLOAD_GSM"
+ glib:nick="gsm">
+ <doc xml:space="preserve">GSM audio</doc>
+ </member>
+ <member name="g723"
+ value="4"
+ c:identifier="GST_RTP_PAYLOAD_G723"
+ glib:nick="g723">
+ <doc xml:space="preserve">ITU G.723.1 audio</doc>
+ </member>
+ <member name="dvi4_8000"
+ value="5"
+ c:identifier="GST_RTP_PAYLOAD_DVI4_8000"
+ glib:nick="dvi4-8000">
+ <doc xml:space="preserve">IMA ADPCM wave type (RFC 3551)</doc>
+ </member>
+ <member name="dvi4_16000"
+ value="6"
+ c:identifier="GST_RTP_PAYLOAD_DVI4_16000"
+ glib:nick="dvi4-16000">
+ <doc xml:space="preserve">IMA ADPCM wave type (RFC 3551)</doc>
+ </member>
+ <member name="lpc"
+ value="7"
+ c:identifier="GST_RTP_PAYLOAD_LPC"
+ glib:nick="lpc">
+ <doc xml:space="preserve">experimental linear predictive encoding</doc>
+ </member>
+ <member name="pcma"
+ value="8"
+ c:identifier="GST_RTP_PAYLOAD_PCMA"
+ glib:nick="pcma">
+ <doc xml:space="preserve">ITU-T G.711 A-law audio (RFC 3551)</doc>
+ </member>
+ <member name="g722"
+ value="9"
+ c:identifier="GST_RTP_PAYLOAD_G722"
+ glib:nick="g722">
+ <doc xml:space="preserve">ITU-T G.722 (RFC 3551)</doc>
+ </member>
+ <member name="l16_stereo"
+ value="10"
+ c:identifier="GST_RTP_PAYLOAD_L16_STEREO"
+ glib:nick="l16-stereo">
+ <doc xml:space="preserve">stereo PCM</doc>
+ </member>
+ <member name="l16_mono"
+ value="11"
+ c:identifier="GST_RTP_PAYLOAD_L16_MONO"
+ glib:nick="l16-mono">
+ <doc xml:space="preserve">mono PCM</doc>
+ </member>
+ <member name="qcelp"
+ value="12"
+ c:identifier="GST_RTP_PAYLOAD_QCELP"
+ glib:nick="qcelp">
+ <doc xml:space="preserve">EIA &amp; TIA standard IS-733</doc>
+ </member>
+ <member name="cn"
+ value="13"
+ c:identifier="GST_RTP_PAYLOAD_CN"
+ glib:nick="cn">
+ <doc xml:space="preserve">Comfort Noise (RFC 3389)</doc>
+ </member>
+ <member name="mpa"
+ value="14"
+ c:identifier="GST_RTP_PAYLOAD_MPA"
+ glib:nick="mpa">
+ <doc xml:space="preserve">Audio MPEG 1-3.</doc>
+ </member>
+ <member name="g728"
+ value="15"
+ c:identifier="GST_RTP_PAYLOAD_G728"
+ glib:nick="g728">
+ <doc xml:space="preserve">ITU-T G.728 Speech coder (RFC 3551)</doc>
+ </member>
+ <member name="dvi4_11025"
+ value="16"
+ c:identifier="GST_RTP_PAYLOAD_DVI4_11025"
+ glib:nick="dvi4-11025">
+ <doc xml:space="preserve">IMA ADPCM wave type (RFC 3551)</doc>
+ </member>
+ <member name="dvi4_22050"
+ value="17"
+ c:identifier="GST_RTP_PAYLOAD_DVI4_22050"
+ glib:nick="dvi4-22050">
+ <doc xml:space="preserve">IMA ADPCM wave type (RFC 3551)</doc>
+ </member>
+ <member name="g729"
+ value="18"
+ c:identifier="GST_RTP_PAYLOAD_G729"
+ glib:nick="g729">
+ <doc xml:space="preserve">ITU-T G.729 Speech coder (RFC 3551)</doc>
+ </member>
+ <member name="cellb"
+ value="25"
+ c:identifier="GST_RTP_PAYLOAD_CELLB"
+ glib:nick="cellb">
+ <doc xml:space="preserve">See RFC 2029</doc>
+ </member>
+ <member name="jpeg"
+ value="26"
+ c:identifier="GST_RTP_PAYLOAD_JPEG"
+ glib:nick="jpeg">
+ <doc xml:space="preserve">ISO Standards 10918-1 and 10918-2 (RFC 2435)</doc>
+ </member>
+ <member name="nv"
+ value="28"
+ c:identifier="GST_RTP_PAYLOAD_NV"
+ glib:nick="nv">
+ <doc xml:space="preserve">nv encoding by Ron Frederick</doc>
+ </member>
+ <member name="h261"
+ value="31"
+ c:identifier="GST_RTP_PAYLOAD_H261"
+ glib:nick="h261">
+ <doc xml:space="preserve">ITU-T Recommendation H.261 (RFC 2032)</doc>
+ </member>
+ <member name="mpv"
+ value="32"
+ c:identifier="GST_RTP_PAYLOAD_MPV"
+ glib:nick="mpv">
+ <doc xml:space="preserve">Video MPEG 1 &amp; 2 (RFC 2250)</doc>
+ </member>
+ <member name="mp2t"
+ value="33"
+ c:identifier="GST_RTP_PAYLOAD_MP2T"
+ glib:nick="mp2t">
+ <doc xml:space="preserve">MPEG-2 transport stream (RFC 2250)</doc>
+ </member>
+ <member name="h263"
+ value="34"
+ c:identifier="GST_RTP_PAYLOAD_H263"
+ glib:nick="h263">
+ <doc xml:space="preserve">Video H263 (RFC 2190)</doc>
+ </member>
+ </enumeration>
+ <record name="RTPPayloadInfo" c:type="GstRTPPayloadInfo">
+ <doc xml:space="preserve">Structure holding default payload type information.</doc>
+ <field name="payload_type" writable="1">
+ <doc xml:space="preserve">payload type, -1 means dynamic</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="media" writable="1">
+ <doc xml:space="preserve">the media type(s), usually "audio", "video", "application", "text",
+"message".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="encoding_name" writable="1">
+ <doc xml:space="preserve">the encoding name of @pt</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="clock_rate" writable="1">
+ <doc xml:space="preserve">default clock rate, 0 = unknown/variable</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="encoding_parameters" writable="1">
+ <doc xml:space="preserve">encoding parameters. For audio this is the number of
+channels. NULL = not applicable.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="bitrate" writable="1">
+ <doc xml:space="preserve">the bitrate of the media. 0 = unknown/variable.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <function name="for_name" c:identifier="gst_rtp_payload_info_for_name">
+ <doc xml:space="preserve">Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is
+mostly used to get the default clock-rate and bandwidth for dynamic payload
+types specified with @media and @encoding name.
+
+The search for @encoding_name will be performed in a case insensitve way.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPPayloadInfo or NULL when no info could be found.</doc>
+ <type name="RTPPayloadInfo" c:type="const GstRTPPayloadInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">the media to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="encoding_name" transfer-ownership="none">
+ <doc xml:space="preserve">the encoding name to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="for_pt" c:identifier="gst_rtp_payload_info_for_pt">
+ <doc xml:space="preserve">Get the #GstRTPPayloadInfo for @payload_type. This function is
+mostly used to get the default clock-rate and bandwidth for static payload
+types specified with @payload_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPPayloadInfo or NULL when no info could be found.</doc>
+ <type name="RTPPayloadInfo" c:type="const GstRTPPayloadInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_type" transfer-ownership="none">
+ <doc xml:space="preserve">the payload_type to find</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="RTPProfile"
+ version="1.6"
+ glib:type-name="GstRTPProfile"
+ glib:get-type="gst_rtp_profile_get_type"
+ c:type="GstRTPProfile">
+ <doc xml:space="preserve">The transfer profile to use.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_RTP_PROFILE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">invalid profile</doc>
+ </member>
+ <member name="avp"
+ value="1"
+ c:identifier="GST_RTP_PROFILE_AVP"
+ glib:nick="avp">
+ <doc xml:space="preserve">the Audio/Visual profile (RFC 3551)</doc>
+ </member>
+ <member name="savp"
+ value="2"
+ c:identifier="GST_RTP_PROFILE_SAVP"
+ glib:nick="savp">
+ <doc xml:space="preserve">the secure Audio/Visual profile (RFC 3711)</doc>
+ </member>
+ <member name="avpf"
+ value="3"
+ c:identifier="GST_RTP_PROFILE_AVPF"
+ glib:nick="avpf">
+ <doc xml:space="preserve">the Audio/Visual profile with feedback (RFC 4585)</doc>
+ </member>
+ <member name="savpf"
+ value="4"
+ c:identifier="GST_RTP_PROFILE_SAVPF"
+ glib:nick="savpf">
+ <doc xml:space="preserve">the secure Audio/Visual profile with feedback (RFC 5124)</doc>
+ </member>
+ </enumeration>
+ <constant name="RTP_HDREXT_BASE"
+ value="urn:ietf:params:rtp-hdrext:"
+ c:type="GST_RTP_HDREXT_BASE">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_HDREXT_NTP_56"
+ value="ntp-56"
+ c:type="GST_RTP_HDREXT_NTP_56">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_HDREXT_NTP_56_SIZE"
+ value="7"
+ c:type="GST_RTP_HDREXT_NTP_56_SIZE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_HDREXT_NTP_64"
+ value="ntp-64"
+ c:type="GST_RTP_HDREXT_NTP_64">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_HDREXT_NTP_64_SIZE"
+ value="8"
+ c:type="GST_RTP_HDREXT_NTP_64_SIZE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_1016_STRING"
+ value="1"
+ c:type="GST_RTP_PAYLOAD_1016_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_CELLB_STRING"
+ value="25"
+ c:type="GST_RTP_PAYLOAD_CELLB_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_CN_STRING"
+ value="13"
+ c:type="GST_RTP_PAYLOAD_CN_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_DVI4_11025_STRING"
+ value="16"
+ c:type="GST_RTP_PAYLOAD_DVI4_11025_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_DVI4_16000_STRING"
+ value="6"
+ c:type="GST_RTP_PAYLOAD_DVI4_16000_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_DVI4_22050_STRING"
+ value="17"
+ c:type="GST_RTP_PAYLOAD_DVI4_22050_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_DVI4_8000_STRING"
+ value="5"
+ c:type="GST_RTP_PAYLOAD_DVI4_8000_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_DYNAMIC_STRING"
+ value="[96, 127]"
+ c:type="GST_RTP_PAYLOAD_DYNAMIC_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G721_STRING"
+ value="2"
+ c:type="GST_RTP_PAYLOAD_G721_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G722_STRING"
+ value="9"
+ c:type="GST_RTP_PAYLOAD_G722_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G723_53"
+ value="17"
+ c:type="GST_RTP_PAYLOAD_G723_53">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G723_53_STRING"
+ value="17"
+ c:type="GST_RTP_PAYLOAD_G723_53_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G723_63"
+ value="16"
+ c:type="GST_RTP_PAYLOAD_G723_63">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G723_63_STRING"
+ value="16"
+ c:type="GST_RTP_PAYLOAD_G723_63_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G723_STRING"
+ value="4"
+ c:type="GST_RTP_PAYLOAD_G723_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G728_STRING"
+ value="15"
+ c:type="GST_RTP_PAYLOAD_G728_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_G729_STRING"
+ value="18"
+ c:type="GST_RTP_PAYLOAD_G729_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_GSM_STRING"
+ value="3"
+ c:type="GST_RTP_PAYLOAD_GSM_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_H261_STRING"
+ value="31"
+ c:type="GST_RTP_PAYLOAD_H261_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_H263_STRING"
+ value="34"
+ c:type="GST_RTP_PAYLOAD_H263_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_JPEG_STRING"
+ value="26"
+ c:type="GST_RTP_PAYLOAD_JPEG_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_L16_MONO_STRING"
+ value="11"
+ c:type="GST_RTP_PAYLOAD_L16_MONO_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_L16_STEREO_STRING"
+ value="10"
+ c:type="GST_RTP_PAYLOAD_L16_STEREO_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_LPC_STRING"
+ value="7"
+ c:type="GST_RTP_PAYLOAD_LPC_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_MP2T_STRING"
+ value="33"
+ c:type="GST_RTP_PAYLOAD_MP2T_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_MPA_STRING"
+ value="14"
+ c:type="GST_RTP_PAYLOAD_MPA_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_MPV_STRING"
+ value="32"
+ c:type="GST_RTP_PAYLOAD_MPV_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_NV_STRING"
+ value="28"
+ c:type="GST_RTP_PAYLOAD_NV_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_PCMA_STRING"
+ value="8"
+ c:type="GST_RTP_PAYLOAD_PCMA_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_PCMU_STRING"
+ value="0"
+ c:type="GST_RTP_PAYLOAD_PCMU_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_QCELP_STRING"
+ value="12"
+ c:type="GST_RTP_PAYLOAD_QCELP_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_TS41" value="19" c:type="GST_RTP_PAYLOAD_TS41">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_TS41_STRING"
+ value="19"
+ c:type="GST_RTP_PAYLOAD_TS41_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_TS48" value="18" c:type="GST_RTP_PAYLOAD_TS48">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="RTP_PAYLOAD_TS48_STRING"
+ value="18"
+ c:type="GST_RTP_PAYLOAD_TS48_STRING">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="RTP_VERSION" value="2" c:type="GST_RTP_VERSION">
+ <doc xml:space="preserve">The supported RTP version 2.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <function name="rtcp_buffer_map"
+ c:identifier="gst_rtcp_buffer_map"
+ moved-to="RTCPBuffer.map">
+ <doc xml:space="preserve">Open @buffer for reading or writing, depending on @flags. The resulting RTCP
+buffer state is stored in @rtcp.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a buffer with an RTCP packet</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags for the mapping</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ <parameter name="rtcp" transfer-ownership="none">
+ <doc xml:space="preserve">resulting #GstRTCPBuffer</doc>
+ <type name="RTCPBuffer" c:type="GstRTCPBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_new"
+ c:identifier="gst_rtcp_buffer_new"
+ moved-to="RTCPBuffer.new">
+ <doc xml:space="preserve">Create a new buffer for constructing RTCP packets. The packet will have a
+maximum size of @mtu.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mtu" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum mtu size.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_new_copy_data"
+ c:identifier="gst_rtcp_buffer_new_copy_data"
+ moved-to="RTCPBuffer.new_copy_data">
+ <doc xml:space="preserve">Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with a copy of @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_new_take_data"
+ c:identifier="gst_rtcp_buffer_new_take_data"
+ moved-to="RTCPBuffer.new_take_data">
+ <doc xml:space="preserve">Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_validate"
+ c:identifier="gst_rtcp_buffer_validate"
+ moved-to="RTCPBuffer.validate">
+ <doc xml:space="preserve">Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_data().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer is a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to validate</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_validate_data"
+ c:identifier="gst_rtcp_buffer_validate_data"
+ moved-to="RTCPBuffer.validate_data">
+ <doc xml:space="preserve">Check if the @data and @size point to the data of a valid compound,
+non-reduced size RTCP packet.
+Use this function to validate a packet before using the other functions in
+this module.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the data points to a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to validate</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data to validate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_validate_data_reduced"
+ c:identifier="gst_rtcp_buffer_validate_data_reduced"
+ moved-to="RTCPBuffer.validate_data_reduced"
+ version="1.6">
+ <doc xml:space="preserve">Check if the @data and @size point to the data of a valid RTCP packet.
+Use this function to validate a packet before using the other functions in
+this module.
+
+This function is updated to support reduced size rtcp packets according to
+RFC 5506 and will validate full compound RTCP packets as well as reduced
+size RTCP packets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the data points to a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to validate</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data to validate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_buffer_validate_reduced"
+ c:identifier="gst_rtcp_buffer_validate_reduced"
+ moved-to="RTCPBuffer.validate_reduced"
+ version="1.6">
+ <doc xml:space="preserve">Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_reduced().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @buffer is a valid RTCP packet.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to validate</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_ntp_to_unix" c:identifier="gst_rtcp_ntp_to_unix">
+ <doc xml:space="preserve">Converts an NTP time to UNIX nanoseconds. @ntptime can typically be
+the NTP time of an SR RTCP message and contains, in the upper 32 bits, the
+number of seconds since 1900 and, in the lower 32 bits, the fractional
+seconds. The resulting value will be the number of nanoseconds since 1970.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the UNIX time for @ntptime in nanoseconds.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="ntptime" transfer-ownership="none">
+ <doc xml:space="preserve">an NTP timestamp</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_sdes_name_to_type"
+ c:identifier="gst_rtcp_sdes_name_to_type">
+ <doc xml:space="preserve">Convert @name into a @GstRTCPSDESType. @name is typically a key in a
+#GstStructure containing SDES items.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstRTCPSDESType for @name or #GST_RTCP_SDES_PRIV when @name
+is a private sdes item.</doc>
+ <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+ </return-value>
+ <parameters>
+ <parameter name="name" transfer-ownership="none">
+ <doc xml:space="preserve">a SDES name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_sdes_type_to_name"
+ c:identifier="gst_rtcp_sdes_type_to_name">
+ <doc xml:space="preserve">Converts @type to the string equivalent. The string is typically used as a
+key in a #GstStructure containing SDES items.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the string equivalent of @type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTCPSDESType</doc>
+ <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtcp_unix_to_ntp" c:identifier="gst_rtcp_unix_to_ntp">
+ <doc xml:space="preserve">Converts a UNIX timestamp in nanoseconds to an NTP time. The caller should
+pass a value with nanoseconds since 1970. The NTP time will, in the upper
+32 bits, contain the number of seconds since 1900 and, in the lower 32
+bits, the fractional seconds. The resulting value can be used as an ntptime
+for constructing SR RTCP packets.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time for @unixtime.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="unixtime" transfer-ownership="none">
+ <doc xml:space="preserve">an UNIX timestamp in nanoseconds</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_allocate_data"
+ c:identifier="gst_rtp_buffer_allocate_data"
+ moved-to="RTPBuffer.allocate_data">
+ <doc xml:space="preserve">Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs,
+a payload length of @payload_len and padding of @pad_len.
+@buffer must be writable and all previous memory in @buffer will be freed.
+If @pad_len is &gt;0, the padding bit will be set. All other RTP header fields
+will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_calc_header_len"
+ c:identifier="gst_rtp_buffer_calc_header_len"
+ moved-to="RTPBuffer.calc_header_len">
+ <doc xml:space="preserve">Calculate the header length of an RTP packet with @csrc_count CSRC entries.
+An RTP packet can have at most 15 CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of an RTP header with @csrc_count CSRC entries.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_calc_packet_len"
+ c:identifier="gst_rtp_buffer_calc_packet_len"
+ moved-to="RTPBuffer.calc_packet_len">
+ <doc xml:space="preserve">Calculate the total length of an RTP packet with a payload size of @payload_len,
+a padding of @pad_len and a @csrc_count CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The total length of an RTP header with given parameters.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_calc_payload_len"
+ c:identifier="gst_rtp_buffer_calc_payload_len"
+ moved-to="RTPBuffer.calc_payload_len">
+ <doc xml:space="preserve">Calculate the length of the payload of an RTP packet with size @packet_len,
+a padding of @pad_len and a @csrc_count CSRC entries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The length of the payload of an RTP packet with given parameters.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="packet_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the total RTP packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_compare_seqnum"
+ c:identifier="gst_rtp_buffer_compare_seqnum"
+ moved-to="RTPBuffer.compare_seqnum">
+ <doc xml:space="preserve">Compare two sequence numbers, taking care of wraparounds. This function
+returns the difference between @seqnum1 and @seqnum2.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a negative value if @seqnum1 is bigger than @seqnum2, 0 if they
+are equal or a positive value if @seqnum1 is smaller than @segnum2.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="seqnum1" transfer-ownership="none">
+ <doc xml:space="preserve">a sequence number</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="seqnum2" transfer-ownership="none">
+ <doc xml:space="preserve">a sequence number</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_default_clock_rate"
+ c:identifier="gst_rtp_buffer_default_clock_rate"
+ moved-to="RTPBuffer.default_clock_rate">
+ <doc xml:space="preserve">Get the default clock-rate for the static payload type @payload_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the default clock rate or -1 if the payload type is not static or
+the clock-rate is undefined.</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_type" transfer-ownership="none">
+ <doc xml:space="preserve">the static payload type</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_ext_timestamp"
+ c:identifier="gst_rtp_buffer_ext_timestamp"
+ moved-to="RTPBuffer.ext_timestamp">
+ <doc xml:space="preserve">Update the @exttimestamp field with the extended timestamp of @timestamp
+For the first call of the method, @exttimestamp should point to a location
+with a value of -1.
+
+This function is able to handle both forward and backward timestamps taking
+into account:
+ - timestamp wraparound making sure that the returned value is properly increased.
+ - timestamp unwraparound making sure that the returned value is properly decreased.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The extended timestamp of @timestamp or 0 if the result can't go anywhere backwards.</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <parameter name="exttimestamp"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a previous extended timestamp</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">a new timestamp</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_map"
+ c:identifier="gst_rtp_buffer_map"
+ moved-to="RTPBuffer.map">
+ <doc xml:space="preserve">Map the contents of @buffer into @rtp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @buffer could be mapped.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMapFlags</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ <parameter name="rtp"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPBuffer</doc>
+ <type name="RTPBuffer" c:type="GstRTPBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_new_allocate"
+ c:identifier="gst_rtp_buffer_new_allocate"
+ moved-to="RTPBuffer.new_allocate">
+ <doc xml:space="preserve">Allocate a new #GstBuffer with enough data to hold an RTP packet with
+@csrc_count CSRCs, a payload length of @payload_len and padding of @pad_len.
+All other RTP header fields will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer that can hold an RTP packet with given
+parameters.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_new_allocate_len"
+ c:identifier="gst_rtp_buffer_new_allocate_len"
+ moved-to="RTPBuffer.new_allocate_len">
+ <doc xml:space="preserve">Create a new #GstBuffer that can hold an RTP packet that is exactly
+@packet_len long. The length of the payload depends on @pad_len and
+@csrc_count and can be calculated with gst_rtp_buffer_calc_payload_len().
+All RTP header fields will be set to 0/FALSE.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer that can hold an RTP packet of @packet_len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="packet_len" transfer-ownership="none">
+ <doc xml:space="preserve">the total length of the packet</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="pad_len" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of padding</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="csrc_count" transfer-ownership="none">
+ <doc xml:space="preserve">the number of CSRC entries</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_new_copy_data"
+ c:identifier="gst_rtp_buffer_new_copy_data"
+ moved-to="RTPBuffer.new_copy_data">
+ <doc xml:space="preserve">Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with a copy of @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data for the new
+ buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_buffer_new_take_data"
+ c:identifier="gst_rtp_buffer_new_take_data"
+ moved-to="RTPBuffer.new_take_data">
+ <doc xml:space="preserve">Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A newly allocated buffer with @data and of size @len.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="full">
+ <doc xml:space="preserve">
+ data for the new buffer</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_hdrext_get_ntp_56"
+ c:identifier="gst_rtp_hdrext_get_ntp_56">
+ <doc xml:space="preserve">Reads the NTP time from the @size NTP-56 extension bytes in @data and store the
+result in @ntptime.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to read from</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ntptime"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the result NTP time</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_hdrext_get_ntp_64"
+ c:identifier="gst_rtp_hdrext_get_ntp_64">
+ <doc xml:space="preserve">Reads the NTP time from the @size NTP-64 extension bytes in @data and store the
+result in @ntptime.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to read from</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ntptime"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the result NTP time</doc>
+ <type name="guint64" c:type="guint64*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_hdrext_set_ntp_56"
+ c:identifier="gst_rtp_hdrext_set_ntp_56">
+ <doc xml:space="preserve">Writes the NTP time in @ntptime to the format required for the NTP-56 header
+extension. @data must hold at least #GST_RTP_HDREXT_NTP_56_SIZE bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the data to write to</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ntptime" transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_hdrext_set_ntp_64"
+ c:identifier="gst_rtp_hdrext_set_ntp_64">
+ <doc xml:space="preserve">Writes the NTP time in @ntptime to the format required for the NTP-64 header
+extension. @data must hold at least #GST_RTP_HDREXT_NTP_64_SIZE bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the data to write to</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="ntptime" transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time</doc>
+ <type name="guint64" c:type="guint64"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_payload_info_for_name"
+ c:identifier="gst_rtp_payload_info_for_name"
+ moved-to="RTPPayloadInfo.for_name">
+ <doc xml:space="preserve">Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is
+mostly used to get the default clock-rate and bandwidth for dynamic payload
+types specified with @media and @encoding name.
+
+The search for @encoding_name will be performed in a case insensitve way.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPPayloadInfo or NULL when no info could be found.</doc>
+ <type name="RTPPayloadInfo" c:type="const GstRTPPayloadInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">the media to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="encoding_name" transfer-ownership="none">
+ <doc xml:space="preserve">the encoding name to find</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtp_payload_info_for_pt"
+ c:identifier="gst_rtp_payload_info_for_pt"
+ moved-to="RTPPayloadInfo.for_pt">
+ <doc xml:space="preserve">Get the #GstRTPPayloadInfo for @payload_type. This function is
+mostly used to get the default clock-rate and bandwidth for static payload
+types specified with @payload_type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTPPayloadInfo or NULL when no info could be found.</doc>
+ <type name="RTPPayloadInfo" c:type="const GstRTPPayloadInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="payload_type" transfer-ownership="none">
+ <doc xml:space="preserve">the payload_type to find</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstRtsp-1.0.gir b/girs/GstRtsp-1.0.gir
new file mode 100644
index 0000000000..19dcbf6a04
--- /dev/null
+++ b/girs/GstRtsp-1.0.gir
@@ -0,0 +1,5058 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gio" version="2.0"/>
+ <include name="Gst" version="1.0"/>
+ <include name="GstSdp" version="1.0"/>
+ <package name="gstreamer-rtsp-1.0"/>
+ <c:include name="gst/rtsp/rtsp.h"/>
+ <namespace name="GstRtsp"
+ version="1.0"
+ shared-library="libgstrtsp-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <record name="RTSPAuthCredential"
+ c:type="GstRTSPAuthCredential"
+ glib:type-name="GstRTSPAuthCredential"
+ glib:get-type="gst_rtsp_auth_credential_get_type"
+ c:symbol-prefix="rtsp_auth_credential">
+ <field name="scheme" writable="1">
+ <type name="RTSPAuthMethod" c:type="GstRTSPAuthMethod"/>
+ </field>
+ <field name="params" writable="1">
+ <type name="RTSPAuthParam" c:type="GstRTSPAuthParam**"/>
+ </field>
+ <field name="authorization" writable="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ </record>
+ <enumeration name="RTSPAuthMethod"
+ glib:type-name="GstRTSPAuthMethod"
+ glib:get-type="gst_rtsp_auth_method_get_type"
+ c:type="GstRTSPAuthMethod">
+ <doc xml:space="preserve">Authentication methods, ordered by strength</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_RTSP_AUTH_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no authentication</doc>
+ </member>
+ <member name="basic"
+ value="1"
+ c:identifier="GST_RTSP_AUTH_BASIC"
+ glib:nick="basic">
+ <doc xml:space="preserve">basic authentication</doc>
+ </member>
+ <member name="digest"
+ value="2"
+ c:identifier="GST_RTSP_AUTH_DIGEST"
+ glib:nick="digest">
+ <doc xml:space="preserve">digest authentication</doc>
+ </member>
+ </enumeration>
+ <record name="RTSPAuthParam"
+ c:type="GstRTSPAuthParam"
+ glib:type-name="GstRTSPAuthParam"
+ glib:get-type="gst_rtsp_auth_param_get_type"
+ c:symbol-prefix="rtsp_auth_param">
+ <field name="name" writable="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="value" writable="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <method name="copy" c:identifier="gst_rtsp_auth_param_copy">
+ <return-value transfer-ownership="full">
+ <type name="RTSPAuthParam" c:type="GstRTSPAuthParam*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="param" transfer-ownership="none">
+ <type name="RTSPAuthParam" c:type="GstRTSPAuthParam*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_rtsp_auth_param_free">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="param" transfer-ownership="none">
+ <type name="RTSPAuthParam" c:type="GstRTSPAuthParam*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="RTSPConnection" c:type="GstRTSPConnection" disguised="1">
+ <doc xml:space="preserve">This object manages the RTSP connection to the server. It provides function
+to receive and send bytes and messages.</doc>
+ <method name="clear_auth_params"
+ c:identifier="gst_rtsp_connection_clear_auth_params">
+ <doc xml:space="preserve">Clear the list of authentication directives stored in @conn.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="close" c:identifier="gst_rtsp_connection_close">
+ <doc xml:space="preserve">Close the connected @conn. After this call, the connection is in the same
+state as when it was first created.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="connect" c:identifier="gst_rtsp_connection_connect">
+ <doc xml:space="preserve">Attempt to connect to the url of @conn made with
+gst_rtsp_connection_create(). If @timeout is %NULL this function can block
+forever. If @timeout contains a valid timeout, this function will return
+#GST_RTSP_ETIMEOUT after the timeout expired.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when a connection could be made.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GTimeVal timeout</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="connect_with_response"
+ c:identifier="gst_rtsp_connection_connect_with_response">
+ <doc xml:space="preserve">Attempt to connect to the url of @conn made with
+gst_rtsp_connection_create(). If @timeout is %NULL this function can block
+forever. If @timeout contains a valid timeout, this function will return
+#GST_RTSP_ETIMEOUT after the timeout expired. If @conn is set to tunneled,
+@response will contain a response to the tunneling request messages.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when a connection could be made.
+
+Since 1.8</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GTimeVal timeout</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ <parameter name="response" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="do_tunnel" c:identifier="gst_rtsp_connection_do_tunnel">
+ <doc xml:space="preserve">If @conn received the first tunnel connection and @conn2 received
+the second tunnel connection, link the two connections together so that
+@conn manages the tunneled connection.
+
+After this call, @conn2 cannot be used anymore and must be freed with
+gst_rtsp_connection_free().
+
+If @conn2 is %NULL then only the base64 decoding context will be setup for
+@conn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">return GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="conn2" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection or %NULL</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="flush" c:identifier="gst_rtsp_connection_flush">
+ <doc xml:space="preserve">Start or stop the flushing action on @conn. When flushing, all current
+and future actions on @conn will return #GST_RTSP_EINTR until the connection
+is set to non-flushing mode again.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="flush" transfer-ownership="none">
+ <doc xml:space="preserve">start or stop the flush</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_rtsp_connection_free">
+ <doc xml:space="preserve">Close and free @conn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_ip" c:identifier="gst_rtsp_connection_get_ip">
+ <doc xml:space="preserve">Retrieve the IP address of the other end of @conn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The IP address as a string. this value remains valid until the
+connection is closed.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_read_socket"
+ c:identifier="gst_rtsp_connection_get_read_socket">
+ <doc xml:space="preserve">Get the file descriptor for reading.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the file descriptor used for reading or %NULL on
+error. The file descriptor remains valid until the connection is closed.</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_remember_session_id"
+ c:identifier="gst_rtsp_connection_get_remember_session_id">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the #GstRTSPConnection remembers the session id in the
+last response to set it on any further request.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tls"
+ c:identifier="gst_rtsp_connection_get_tls"
+ version="1.2"
+ throws="1">
+ <doc xml:space="preserve">Get the TLS connection of @conn.
+
+For client side this will return the #GTlsClientConnection when connected
+over TLS.
+
+For server side connections, this function will create a GTlsServerConnection
+when called the first time and will return that same connection on subsequent
+calls. The server is then responsible for configuring the TLS connection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the TLS connection for @conn.</doc>
+ <type name="Gio.TlsConnection" c:type="GTlsConnection*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tls_database"
+ c:identifier="gst_rtsp_connection_get_tls_database"
+ version="1.4">
+ <doc xml:space="preserve">Gets the anchor certificate authorities database that will be used
+after a server certificate can't be verified with the default
+certificate database.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the anchor certificate authorities database, or NULL if no
+database has been previously set. Use g_object_unref() to release the
+certificate database.</doc>
+ <type name="Gio.TlsDatabase" c:type="GTlsDatabase*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tls_interaction"
+ c:identifier="gst_rtsp_connection_get_tls_interaction"
+ version="1.6">
+ <doc xml:space="preserve">Gets a #GTlsInteraction object to be used when the connection or certificate
+database need to interact with the user. This will be used to prompt the
+user for passwords where necessary.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a reference on the #GTlsInteraction. Use
+g_object_unref() to release.</doc>
+ <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tls_validation_flags"
+ c:identifier="gst_rtsp_connection_get_tls_validation_flags"
+ version="1.2.1">
+ <doc xml:space="preserve">Gets the TLS validation flags used to verify the peer certificate
+when a TLS connection is established.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the validationg flags.</doc>
+ <type name="Gio.TlsCertificateFlags" c:type="GTlsCertificateFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_tunnelid"
+ c:identifier="gst_rtsp_connection_get_tunnelid">
+ <doc xml:space="preserve">Get the tunnel session id the connection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">returns a non-empty string if @conn is being tunneled over HTTP.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_url" c:identifier="gst_rtsp_connection_get_url">
+ <doc xml:space="preserve">Retrieve the URL of the other end of @conn.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The URL. This value remains valid until the
+connection is freed.</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_write_socket"
+ c:identifier="gst_rtsp_connection_get_write_socket">
+ <doc xml:space="preserve">Get the file descriptor for writing.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the file descriptor used for writing or NULL on
+error. The file descriptor remains valid until the connection is closed.</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_tunneled"
+ c:identifier="gst_rtsp_connection_is_tunneled">
+ <doc xml:space="preserve">Get the tunneling state of the connection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">if @conn is using HTTP tunneling.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="next_timeout"
+ c:identifier="gst_rtsp_connection_next_timeout">
+ <doc xml:space="preserve">Calculate the next timeout for @conn, storing the result in @timeout.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="poll" c:identifier="gst_rtsp_connection_poll">
+ <doc xml:space="preserve">Wait up to the specified @timeout for the connection to become available for
+at least one of the operations specified in @events. When the function returns
+with #GST_RTSP_OK, @revents will contain a bitmask of available operations on
+@conn.
+
+@timeout can be %NULL, in which case this function might block forever.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="events" transfer-ownership="none">
+ <doc xml:space="preserve">a bitmask of #GstRTSPEvent flags to check</doc>
+ <type name="RTSPEvent" c:type="GstRTSPEvent"/>
+ </parameter>
+ <parameter name="revents" transfer-ownership="none">
+ <doc xml:space="preserve">location for result flags</doc>
+ <type name="RTSPEvent" c:type="GstRTSPEvent*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read" c:identifier="gst_rtsp_connection_read">
+ <doc xml:space="preserve">Attempt to read @size bytes into @data from the connected @conn, blocking up to
+the specified @timeout. @timeout can be %NULL, in which case this function
+might block forever.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to read</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout value or %NULL</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="receive" c:identifier="gst_rtsp_connection_receive">
+ <doc xml:space="preserve">Attempt to read into @message from the connected @conn, blocking up to
+the specified @timeout. @timeout can be %NULL, in which case this function
+might block forever.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message to read</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout value or %NULL</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset_timeout"
+ c:identifier="gst_rtsp_connection_reset_timeout">
+ <doc xml:space="preserve">Reset the timeout of @conn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="send" c:identifier="gst_rtsp_connection_send">
+ <doc xml:space="preserve">Attempt to send @message to the connected @conn, blocking up to
+the specified @timeout. @timeout can be %NULL, in which case this function
+might block forever.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">the message to send</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout value or %NULL</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_accept_certificate_func"
+ c:identifier="gst_rtsp_connection_set_accept_certificate_func"
+ version="1.14">
+ <doc xml:space="preserve">Sets a custom accept-certificate function for checking certificates for
+validity. This will directly map to #GTlsConnection 's "accept-certificate"
+signal and be performed after the default checks of #GstRTSPConnection
+(checking against the #GTlsDatabase with the given #GTlsCertificateFlags)
+have failed. If no #GTlsDatabase is set on this connection, only @func will
+be called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">a #GstRTSPConnectionAcceptCertificateFunc to check certificates</doc>
+ <type name="RTSPConnectionAcceptCertificateFunc"
+ c:type="GstRTSPConnectionAcceptCertificateFunc"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">User data passed to @func</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">#GDestroyNotify for @user_data</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_auth" c:identifier="gst_rtsp_connection_set_auth">
+ <doc xml:space="preserve">Configure @conn for authentication mode @method with @user and @pass as the
+user and password respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">authentication method</doc>
+ <type name="RTSPAuthMethod" c:type="GstRTSPAuthMethod"/>
+ </parameter>
+ <parameter name="user" transfer-ownership="none">
+ <doc xml:space="preserve">the user</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="pass" transfer-ownership="none">
+ <doc xml:space="preserve">the password</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_auth_param"
+ c:identifier="gst_rtsp_connection_set_auth_param">
+ <doc xml:space="preserve">Setup @conn with authentication directives. This is not necesary for
+methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For
+#GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge
+in the WWW-Authenticate response header and can include realm, domain,
+nonce, opaque, stale, algorithm, qop as per RFC2617.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="param" transfer-ownership="none">
+ <doc xml:space="preserve">authentication directive</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_http_mode"
+ c:identifier="gst_rtsp_connection_set_http_mode">
+ <doc xml:space="preserve">By setting the HTTP mode to %TRUE the message parsing will support HTTP
+messages in addition to the RTSP messages. It will also disable the
+automatic handling of setting up an HTTP tunnel.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="enable" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to enable manual HTTP mode</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_ip" c:identifier="gst_rtsp_connection_set_ip">
+ <doc xml:space="preserve">Set the IP address of the server.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="ip" transfer-ownership="none">
+ <doc xml:space="preserve">an ip address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_proxy" c:identifier="gst_rtsp_connection_set_proxy">
+ <doc xml:space="preserve">Set the proxy host and port.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="host" transfer-ownership="none">
+ <doc xml:space="preserve">the proxy host</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">the proxy port</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_dscp"
+ c:identifier="gst_rtsp_connection_set_qos_dscp">
+ <doc xml:space="preserve">Configure @conn to use the specified DSCP value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="qos_dscp" transfer-ownership="none">
+ <doc xml:space="preserve">DSCP value</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_remember_session_id"
+ c:identifier="gst_rtsp_connection_set_remember_session_id">
+ <doc xml:space="preserve">Sets if the #GstRTSPConnection should remember the session id from the last
+response received and force it onto any further requests.
+
+The default value is %TRUE</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="remember" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the connection should remember the session id</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tls_database"
+ c:identifier="gst_rtsp_connection_set_tls_database"
+ version="1.4">
+ <doc xml:space="preserve">Sets the anchor certificate authorities database. This certificate
+database will be used to verify the server's certificate in case it
+can't be verified with the default certificate database first.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="database" transfer-ownership="none">
+ <doc xml:space="preserve">a #GTlsDatabase</doc>
+ <type name="Gio.TlsDatabase" c:type="GTlsDatabase*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tls_interaction"
+ c:identifier="gst_rtsp_connection_set_tls_interaction"
+ version="1.6">
+ <doc xml:space="preserve">Sets a #GTlsInteraction object to be used when the connection or certificate
+database need to interact with the user. This will be used to prompt the
+user for passwords where necessary.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="interaction" transfer-ownership="none">
+ <doc xml:space="preserve">a #GTlsInteraction</doc>
+ <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tls_validation_flags"
+ c:identifier="gst_rtsp_connection_set_tls_validation_flags"
+ version="1.2.1">
+ <doc xml:space="preserve">Sets the TLS validation flags to be used to verify the peer
+certificate when a TLS connection is established.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the validation flags are set correctly, or FALSE if
+@conn is NULL or is not a TLS connection.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">the validation flags.</doc>
+ <type name="Gio.TlsCertificateFlags"
+ c:type="GTlsCertificateFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_tunneled"
+ c:identifier="gst_rtsp_connection_set_tunneled">
+ <doc xml:space="preserve">Set the HTTP tunneling state of the connection. This must be configured before
+the @conn is connected.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="tunneled" transfer-ownership="none">
+ <doc xml:space="preserve">the new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="write" c:identifier="gst_rtsp_connection_write">
+ <doc xml:space="preserve">Attempt to write @size bytes of @data to the connected @conn, blocking up to
+the specified @timeout. @timeout can be %NULL, in which case this function
+might block forever.
+
+This function can be cancelled with gst_rtsp_connection_flush().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data to write</doc>
+ <type name="guint8" c:type="const guint8*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a timeout value or %NULL</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="accept" c:identifier="gst_rtsp_connection_accept">
+ <doc xml:space="preserve">Accept a new connection on @socket and create a new #GstRTSPConnection for
+handling communication on new socket.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">a socket</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ <parameter name="cancellable"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GCancellable to cancel the operation</doc>
+ <type name="Gio.Cancellable" c:type="GCancellable*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="create" c:identifier="gst_rtsp_connection_create">
+ <doc xml:space="preserve">Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
+The connection will not yet attempt to connect to @url, use
+gst_rtsp_connection_connect().
+
+A copy of @url will be made.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="create_from_socket"
+ c:identifier="gst_rtsp_connection_create_from_socket">
+ <doc xml:space="preserve">Create a new #GstRTSPConnection for handling communication on the existing
+socket @socket. The @initial_buffer contains zero terminated data already
+read from @socket which should be used before starting to read new data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">a #GSocket</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="ip" transfer-ownership="none">
+ <doc xml:space="preserve">the IP address of the other end</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">the port used by the other end</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="initial_buffer" transfer-ownership="none">
+ <doc xml:space="preserve">data already read from @fd</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <callback name="RTSPConnectionAcceptCertificateFunc"
+ c:type="GstRTSPConnectionAcceptCertificateFunc">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="conn" transfer-ownership="none">
+ <type name="Gio.TlsConnection" c:type="GTlsConnection*"/>
+ </parameter>
+ <parameter name="peer_cert" transfer-ownership="none">
+ <type name="Gio.TlsCertificate" c:type="GTlsCertificate*"/>
+ </parameter>
+ <parameter name="errors" transfer-ownership="none">
+ <type name="Gio.TlsCertificateFlags" c:type="GTlsCertificateFlags"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <bitfield name="RTSPEvent"
+ glib:type-name="GstRTSPEvent"
+ glib:get-type="gst_rtsp_event_get_type"
+ c:type="GstRTSPEvent">
+ <doc xml:space="preserve">The possible events for the connection.</doc>
+ <member name="read"
+ value="1"
+ c:identifier="GST_RTSP_EV_READ"
+ glib:nick="read">
+ <doc xml:space="preserve">connection is readable</doc>
+ </member>
+ <member name="write"
+ value="2"
+ c:identifier="GST_RTSP_EV_WRITE"
+ glib:nick="write">
+ <doc xml:space="preserve">connection is writable</doc>
+ </member>
+ </bitfield>
+ <interface name="RTSPExtension"
+ c:symbol-prefix="rtsp_extension"
+ c:type="GstRTSPExtension"
+ glib:type-name="GstRTSPExtension"
+ glib:get-type="gst_rtsp_extension_get_type"
+ glib:type-struct="RTSPExtensionInterface">
+ <doc xml:space="preserve">This interface is implemented e.g. by the Windows Media Streaming RTSP
+ exentension (rtspwms) and the RealMedia RTSP extension (rtspreal).</doc>
+ <virtual-method name="after_send" invoker="after_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="before_send" invoker="before_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="configure_stream" invoker="configure_stream">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="detect_server" invoker="detect_server">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_transports" invoker="get_transports">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="protocols" transfer-ownership="none">
+ <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+ </parameter>
+ <parameter name="transport" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="parse_sdp" invoker="parse_sdp">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="sdp" transfer-ownership="none">
+ <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="receive_request" invoker="receive_request">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="send" invoker="send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="setup_media" invoker="setup_media">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="media" transfer-ownership="none">
+ <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stream_select" invoker="stream_select">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="url" transfer-ownership="none">
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="after_send" c:identifier="gst_rtsp_extension_after_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="before_send" c:identifier="gst_rtsp_extension_before_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="configure_stream"
+ c:identifier="gst_rtsp_extension_configure_stream">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="detect_server"
+ c:identifier="gst_rtsp_extension_detect_server">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_transports"
+ c:identifier="gst_rtsp_extension_get_transports">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="protocols" transfer-ownership="none">
+ <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+ </parameter>
+ <parameter name="transport" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_sdp" c:identifier="gst_rtsp_extension_parse_sdp">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="sdp" transfer-ownership="none">
+ <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="receive_request"
+ c:identifier="gst_rtsp_extension_receive_request">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send" c:identifier="gst_rtsp_extension_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="setup_media" c:identifier="gst_rtsp_extension_setup_media">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="media" transfer-ownership="none">
+ <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="stream_select"
+ c:identifier="gst_rtsp_extension_stream_select">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </instance-parameter>
+ <parameter name="url" transfer-ownership="none">
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <glib:signal name="send" when="last">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="object"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="p0"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </interface>
+ <record name="RTSPExtensionInterface"
+ c:type="GstRTSPExtensionInterface"
+ glib:is-gtype-struct-for="RTSPExtension">
+ <field name="parent">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="detect_server">
+ <callback name="detect_server">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="before_send">
+ <callback name="before_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="after_send">
+ <callback name="after_send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="parse_sdp">
+ <callback name="parse_sdp">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="sdp" transfer-ownership="none">
+ <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="setup_media">
+ <callback name="setup_media">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="media" transfer-ownership="none">
+ <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="configure_stream">
+ <callback name="configure_stream">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_transports">
+ <callback name="get_transports">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="protocols" transfer-ownership="none">
+ <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+ </parameter>
+ <parameter name="transport" transfer-ownership="none">
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stream_select">
+ <callback name="stream_select">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="url" transfer-ownership="none">
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="send">
+ <callback name="send">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="resp" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="receive_request">
+ <callback name="receive_request">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext" transfer-ownership="none">
+ <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+ </parameter>
+ <parameter name="req" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="RTSPFamily"
+ glib:type-name="GstRTSPFamily"
+ glib:get-type="gst_rtsp_family_get_type"
+ c:type="GstRTSPFamily">
+ <doc xml:space="preserve">The possible network families.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_RTSP_FAM_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">unknown network family</doc>
+ </member>
+ <member name="inet"
+ value="1"
+ c:identifier="GST_RTSP_FAM_INET"
+ glib:nick="inet">
+ <doc xml:space="preserve">internet</doc>
+ </member>
+ <member name="inet6"
+ value="2"
+ c:identifier="GST_RTSP_FAM_INET6"
+ glib:nick="inet6">
+ <doc xml:space="preserve">internet V6</doc>
+ </member>
+ </enumeration>
+ <enumeration name="RTSPHeaderField"
+ glib:type-name="GstRTSPHeaderField"
+ glib:get-type="gst_rtsp_header_field_get_type"
+ c:type="GstRTSPHeaderField">
+ <doc xml:space="preserve">Enumeration of rtsp header fields</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_HDR_INVALID"
+ glib:nick="invalid">
+ </member>
+ <member name="accept"
+ value="1"
+ c:identifier="GST_RTSP_HDR_ACCEPT"
+ glib:nick="accept">
+ </member>
+ <member name="accept_encoding"
+ value="2"
+ c:identifier="GST_RTSP_HDR_ACCEPT_ENCODING"
+ glib:nick="accept-encoding">
+ </member>
+ <member name="accept_language"
+ value="3"
+ c:identifier="GST_RTSP_HDR_ACCEPT_LANGUAGE"
+ glib:nick="accept-language">
+ </member>
+ <member name="allow"
+ value="4"
+ c:identifier="GST_RTSP_HDR_ALLOW"
+ glib:nick="allow">
+ </member>
+ <member name="authorization"
+ value="5"
+ c:identifier="GST_RTSP_HDR_AUTHORIZATION"
+ glib:nick="authorization">
+ </member>
+ <member name="bandwidth"
+ value="6"
+ c:identifier="GST_RTSP_HDR_BANDWIDTH"
+ glib:nick="bandwidth">
+ </member>
+ <member name="blocksize"
+ value="7"
+ c:identifier="GST_RTSP_HDR_BLOCKSIZE"
+ glib:nick="blocksize">
+ </member>
+ <member name="cache_control"
+ value="8"
+ c:identifier="GST_RTSP_HDR_CACHE_CONTROL"
+ glib:nick="cache-control">
+ </member>
+ <member name="conference"
+ value="9"
+ c:identifier="GST_RTSP_HDR_CONFERENCE"
+ glib:nick="conference">
+ </member>
+ <member name="connection"
+ value="10"
+ c:identifier="GST_RTSP_HDR_CONNECTION"
+ glib:nick="connection">
+ </member>
+ <member name="content_base"
+ value="11"
+ c:identifier="GST_RTSP_HDR_CONTENT_BASE"
+ glib:nick="content-base">
+ </member>
+ <member name="content_encoding"
+ value="12"
+ c:identifier="GST_RTSP_HDR_CONTENT_ENCODING"
+ glib:nick="content-encoding">
+ </member>
+ <member name="content_language"
+ value="13"
+ c:identifier="GST_RTSP_HDR_CONTENT_LANGUAGE"
+ glib:nick="content-language">
+ </member>
+ <member name="content_length"
+ value="14"
+ c:identifier="GST_RTSP_HDR_CONTENT_LENGTH"
+ glib:nick="content-length">
+ </member>
+ <member name="content_location"
+ value="15"
+ c:identifier="GST_RTSP_HDR_CONTENT_LOCATION"
+ glib:nick="content-location">
+ </member>
+ <member name="content_type"
+ value="16"
+ c:identifier="GST_RTSP_HDR_CONTENT_TYPE"
+ glib:nick="content-type">
+ </member>
+ <member name="cseq"
+ value="17"
+ c:identifier="GST_RTSP_HDR_CSEQ"
+ glib:nick="cseq">
+ </member>
+ <member name="date"
+ value="18"
+ c:identifier="GST_RTSP_HDR_DATE"
+ glib:nick="date">
+ </member>
+ <member name="expires"
+ value="19"
+ c:identifier="GST_RTSP_HDR_EXPIRES"
+ glib:nick="expires">
+ </member>
+ <member name="from"
+ value="20"
+ c:identifier="GST_RTSP_HDR_FROM"
+ glib:nick="from">
+ </member>
+ <member name="if_modified_since"
+ value="21"
+ c:identifier="GST_RTSP_HDR_IF_MODIFIED_SINCE"
+ glib:nick="if-modified-since">
+ </member>
+ <member name="last_modified"
+ value="22"
+ c:identifier="GST_RTSP_HDR_LAST_MODIFIED"
+ glib:nick="last-modified">
+ </member>
+ <member name="proxy_authenticate"
+ value="23"
+ c:identifier="GST_RTSP_HDR_PROXY_AUTHENTICATE"
+ glib:nick="proxy-authenticate">
+ </member>
+ <member name="proxy_require"
+ value="24"
+ c:identifier="GST_RTSP_HDR_PROXY_REQUIRE"
+ glib:nick="proxy-require">
+ </member>
+ <member name="public"
+ value="25"
+ c:identifier="GST_RTSP_HDR_PUBLIC"
+ glib:nick="public">
+ </member>
+ <member name="range"
+ value="26"
+ c:identifier="GST_RTSP_HDR_RANGE"
+ glib:nick="range">
+ </member>
+ <member name="referer"
+ value="27"
+ c:identifier="GST_RTSP_HDR_REFERER"
+ glib:nick="referer">
+ </member>
+ <member name="require"
+ value="28"
+ c:identifier="GST_RTSP_HDR_REQUIRE"
+ glib:nick="require">
+ </member>
+ <member name="retry_after"
+ value="29"
+ c:identifier="GST_RTSP_HDR_RETRY_AFTER"
+ glib:nick="retry-after">
+ </member>
+ <member name="rtp_info"
+ value="30"
+ c:identifier="GST_RTSP_HDR_RTP_INFO"
+ glib:nick="rtp-info">
+ </member>
+ <member name="scale"
+ value="31"
+ c:identifier="GST_RTSP_HDR_SCALE"
+ glib:nick="scale">
+ </member>
+ <member name="session"
+ value="32"
+ c:identifier="GST_RTSP_HDR_SESSION"
+ glib:nick="session">
+ </member>
+ <member name="server"
+ value="33"
+ c:identifier="GST_RTSP_HDR_SERVER"
+ glib:nick="server">
+ </member>
+ <member name="speed"
+ value="34"
+ c:identifier="GST_RTSP_HDR_SPEED"
+ glib:nick="speed">
+ </member>
+ <member name="transport"
+ value="35"
+ c:identifier="GST_RTSP_HDR_TRANSPORT"
+ glib:nick="transport">
+ </member>
+ <member name="unsupported"
+ value="36"
+ c:identifier="GST_RTSP_HDR_UNSUPPORTED"
+ glib:nick="unsupported">
+ </member>
+ <member name="user_agent"
+ value="37"
+ c:identifier="GST_RTSP_HDR_USER_AGENT"
+ glib:nick="user-agent">
+ </member>
+ <member name="via"
+ value="38"
+ c:identifier="GST_RTSP_HDR_VIA"
+ glib:nick="via">
+ </member>
+ <member name="www_authenticate"
+ value="39"
+ c:identifier="GST_RTSP_HDR_WWW_AUTHENTICATE"
+ glib:nick="www-authenticate">
+ </member>
+ <member name="client_challenge"
+ value="40"
+ c:identifier="GST_RTSP_HDR_CLIENT_CHALLENGE"
+ glib:nick="client-challenge">
+ </member>
+ <member name="real_challenge1"
+ value="41"
+ c:identifier="GST_RTSP_HDR_REAL_CHALLENGE1"
+ glib:nick="real-challenge1">
+ </member>
+ <member name="real_challenge2"
+ value="42"
+ c:identifier="GST_RTSP_HDR_REAL_CHALLENGE2"
+ glib:nick="real-challenge2">
+ </member>
+ <member name="real_challenge3"
+ value="43"
+ c:identifier="GST_RTSP_HDR_REAL_CHALLENGE3"
+ glib:nick="real-challenge3">
+ </member>
+ <member name="subscribe"
+ value="44"
+ c:identifier="GST_RTSP_HDR_SUBSCRIBE"
+ glib:nick="subscribe">
+ </member>
+ <member name="alert"
+ value="45"
+ c:identifier="GST_RTSP_HDR_ALERT"
+ glib:nick="alert">
+ </member>
+ <member name="client_id"
+ value="46"
+ c:identifier="GST_RTSP_HDR_CLIENT_ID"
+ glib:nick="client-id">
+ </member>
+ <member name="company_id"
+ value="47"
+ c:identifier="GST_RTSP_HDR_COMPANY_ID"
+ glib:nick="company-id">
+ </member>
+ <member name="guid"
+ value="48"
+ c:identifier="GST_RTSP_HDR_GUID"
+ glib:nick="guid">
+ </member>
+ <member name="region_data"
+ value="49"
+ c:identifier="GST_RTSP_HDR_REGION_DATA"
+ glib:nick="region-data">
+ </member>
+ <member name="max_asm_width"
+ value="50"
+ c:identifier="GST_RTSP_HDR_MAX_ASM_WIDTH"
+ glib:nick="max-asm-width">
+ </member>
+ <member name="language"
+ value="51"
+ c:identifier="GST_RTSP_HDR_LANGUAGE"
+ glib:nick="language">
+ </member>
+ <member name="player_start_time"
+ value="52"
+ c:identifier="GST_RTSP_HDR_PLAYER_START_TIME"
+ glib:nick="player-start-time">
+ </member>
+ <member name="location"
+ value="53"
+ c:identifier="GST_RTSP_HDR_LOCATION"
+ glib:nick="location">
+ </member>
+ <member name="etag"
+ value="54"
+ c:identifier="GST_RTSP_HDR_ETAG"
+ glib:nick="etag">
+ </member>
+ <member name="if_match"
+ value="55"
+ c:identifier="GST_RTSP_HDR_IF_MATCH"
+ glib:nick="if-match">
+ </member>
+ <member name="accept_charset"
+ value="56"
+ c:identifier="GST_RTSP_HDR_ACCEPT_CHARSET"
+ glib:nick="accept-charset">
+ </member>
+ <member name="supported"
+ value="57"
+ c:identifier="GST_RTSP_HDR_SUPPORTED"
+ glib:nick="supported">
+ </member>
+ <member name="vary"
+ value="58"
+ c:identifier="GST_RTSP_HDR_VARY"
+ glib:nick="vary">
+ </member>
+ <member name="x_accelerate_streaming"
+ value="59"
+ c:identifier="GST_RTSP_HDR_X_ACCELERATE_STREAMING"
+ glib:nick="x-accelerate-streaming">
+ </member>
+ <member name="x_accept_authent"
+ value="60"
+ c:identifier="GST_RTSP_HDR_X_ACCEPT_AUTHENT"
+ glib:nick="x-accept-authent">
+ </member>
+ <member name="x_accept_proxy_authent"
+ value="61"
+ c:identifier="GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT"
+ glib:nick="x-accept-proxy-authent">
+ </member>
+ <member name="x_broadcast_id"
+ value="62"
+ c:identifier="GST_RTSP_HDR_X_BROADCAST_ID"
+ glib:nick="x-broadcast-id">
+ </member>
+ <member name="x_burst_streaming"
+ value="63"
+ c:identifier="GST_RTSP_HDR_X_BURST_STREAMING"
+ glib:nick="x-burst-streaming">
+ </member>
+ <member name="x_notice"
+ value="64"
+ c:identifier="GST_RTSP_HDR_X_NOTICE"
+ glib:nick="x-notice">
+ </member>
+ <member name="x_player_lag_time"
+ value="65"
+ c:identifier="GST_RTSP_HDR_X_PLAYER_LAG_TIME"
+ glib:nick="x-player-lag-time">
+ </member>
+ <member name="x_playlist"
+ value="66"
+ c:identifier="GST_RTSP_HDR_X_PLAYLIST"
+ glib:nick="x-playlist">
+ </member>
+ <member name="x_playlist_change_notice"
+ value="67"
+ c:identifier="GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE"
+ glib:nick="x-playlist-change-notice">
+ </member>
+ <member name="x_playlist_gen_id"
+ value="68"
+ c:identifier="GST_RTSP_HDR_X_PLAYLIST_GEN_ID"
+ glib:nick="x-playlist-gen-id">
+ </member>
+ <member name="x_playlist_seek_id"
+ value="69"
+ c:identifier="GST_RTSP_HDR_X_PLAYLIST_SEEK_ID"
+ glib:nick="x-playlist-seek-id">
+ </member>
+ <member name="x_proxy_client_agent"
+ value="70"
+ c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_AGENT"
+ glib:nick="x-proxy-client-agent">
+ </member>
+ <member name="x_proxy_client_verb"
+ value="71"
+ c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_VERB"
+ glib:nick="x-proxy-client-verb">
+ </member>
+ <member name="x_receding_playlistchange"
+ value="72"
+ c:identifier="GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE"
+ glib:nick="x-receding-playlistchange">
+ </member>
+ <member name="x_rtp_info"
+ value="73"
+ c:identifier="GST_RTSP_HDR_X_RTP_INFO"
+ glib:nick="x-rtp-info">
+ </member>
+ <member name="x_startupprofile"
+ value="74"
+ c:identifier="GST_RTSP_HDR_X_STARTUPPROFILE"
+ glib:nick="x-startupprofile">
+ </member>
+ <member name="timestamp"
+ value="75"
+ c:identifier="GST_RTSP_HDR_TIMESTAMP"
+ glib:nick="timestamp">
+ </member>
+ <member name="authentication_info"
+ value="76"
+ c:identifier="GST_RTSP_HDR_AUTHENTICATION_INFO"
+ glib:nick="authentication-info">
+ </member>
+ <member name="host"
+ value="77"
+ c:identifier="GST_RTSP_HDR_HOST"
+ glib:nick="host">
+ </member>
+ <member name="pragma"
+ value="78"
+ c:identifier="GST_RTSP_HDR_PRAGMA"
+ glib:nick="pragma">
+ </member>
+ <member name="x_server_ip_address"
+ value="79"
+ c:identifier="GST_RTSP_HDR_X_SERVER_IP_ADDRESS"
+ glib:nick="x-server-ip-address">
+ </member>
+ <member name="x_sessioncookie"
+ value="80"
+ c:identifier="GST_RTSP_HDR_X_SESSIONCOOKIE"
+ glib:nick="x-sessioncookie">
+ </member>
+ <member name="rtcp_interval"
+ value="81"
+ c:identifier="GST_RTSP_HDR_RTCP_INTERVAL"
+ glib:nick="rtcp-interval">
+ </member>
+ <member name="keymgmt"
+ value="82"
+ c:identifier="GST_RTSP_HDR_KEYMGMT"
+ glib:nick="keymgmt">
+ </member>
+ <member name="pipelined_requests"
+ value="83"
+ c:identifier="GST_RTSP_HDR_PIPELINED_REQUESTS"
+ glib:nick="pipelined-requests">
+ </member>
+ <member name="media_properties"
+ value="84"
+ c:identifier="GST_RTSP_HDR_MEDIA_PROPERTIES"
+ glib:nick="media-properties">
+ </member>
+ <member name="seek_style"
+ value="85"
+ c:identifier="GST_RTSP_HDR_SEEK_STYLE"
+ glib:nick="seek-style">
+ </member>
+ <member name="accept_ranges"
+ value="86"
+ c:identifier="GST_RTSP_HDR_ACCEPT_RANGES"
+ glib:nick="accept-ranges">
+ </member>
+ <member name="last"
+ value="87"
+ c:identifier="GST_RTSP_HDR_LAST"
+ glib:nick="last">
+ </member>
+ </enumeration>
+ <bitfield name="RTSPLowerTrans"
+ glib:type-name="GstRTSPLowerTrans"
+ glib:get-type="gst_rtsp_lower_trans_get_type"
+ c:type="GstRTSPLowerTrans">
+ <doc xml:space="preserve">The different transport methods.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_RTSP_LOWER_TRANS_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">invalid transport flag</doc>
+ </member>
+ <member name="udp"
+ value="1"
+ c:identifier="GST_RTSP_LOWER_TRANS_UDP"
+ glib:nick="udp">
+ <doc xml:space="preserve">stream data over UDP</doc>
+ </member>
+ <member name="udp_mcast"
+ value="2"
+ c:identifier="GST_RTSP_LOWER_TRANS_UDP_MCAST"
+ glib:nick="udp-mcast">
+ <doc xml:space="preserve">stream data over UDP multicast</doc>
+ </member>
+ <member name="tcp"
+ value="4"
+ c:identifier="GST_RTSP_LOWER_TRANS_TCP"
+ glib:nick="tcp">
+ <doc xml:space="preserve">stream data over TCP</doc>
+ </member>
+ <member name="http"
+ value="16"
+ c:identifier="GST_RTSP_LOWER_TRANS_HTTP"
+ glib:nick="http">
+ <doc xml:space="preserve">stream data tunneled over HTTP.</doc>
+ </member>
+ <member name="tls"
+ value="32"
+ c:identifier="GST_RTSP_LOWER_TRANS_TLS"
+ glib:nick="tls">
+ <doc xml:space="preserve">encrypt TCP and HTTP with TLS</doc>
+ </member>
+ </bitfield>
+ <record name="RTSPMessage"
+ c:type="GstRTSPMessage"
+ glib:type-name="GstRTSPMessage"
+ glib:get-type="gst_rtsp_msg_get_type"
+ c:symbol-prefix="rtsp_msg">
+ <doc xml:space="preserve">Provides methods for creating and parsing request, response and data messages.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the message type</doc>
+ <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+ </field>
+ <union name="type_data" c:type="type_data">
+ <record name="request" c:type="request">
+ <field name="method" writable="1">
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </field>
+ <field name="uri" writable="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="version" writable="1">
+ <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+ </field>
+ </record>
+ <record name="response" c:type="response">
+ <field name="code" writable="1">
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+ </field>
+ <field name="reason" writable="1">
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="version" writable="1">
+ <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+ </field>
+ </record>
+ <record name="data" c:type="data">
+ <field name="channel" writable="1">
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ </record>
+ </union>
+ <field name="hdr_fields" readable="0" private="1">
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="body" readable="0" private="1">
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ <field name="body_size" readable="0" private="1">
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_header" c:identifier="gst_rtsp_message_add_header">
+ <doc xml:space="preserve">Add a header with key @field and @value to @msg. This function takes a copy
+of @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value of the header</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_header_by_name"
+ c:identifier="gst_rtsp_message_add_header_by_name"
+ version="1.6">
+ <doc xml:space="preserve">Add a header with key @header and @value to @msg. This function takes a copy
+of @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">header string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">the value of the header</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="append_headers"
+ c:identifier="gst_rtsp_message_append_headers">
+ <doc xml:space="preserve">Append the currently configured headers in @msg to the #GString @str suitable
+for transmission.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="str" transfer-ownership="none">
+ <doc xml:space="preserve">a string</doc>
+ <type name="GLib.String" c:type="GString*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_rtsp_message_copy" version="1.14">
+ <doc xml:space="preserve">Allocate a new copy of @msg and store the result in @copy. The value in
+@copy should be release with gst_rtsp_message_free function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="copy"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dump" c:identifier="gst_rtsp_message_dump">
+ <doc xml:space="preserve">Dump the contents of @msg to stdout.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_rtsp_message_free">
+ <doc xml:space="preserve">Free the memory used by @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_body" c:identifier="gst_rtsp_message_get_body">
+ <doc xml:space="preserve">Get the body of @msg. @data remains valid for as long as @msg is valid and
+unchanged.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">location for the data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the size of @data</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_header" c:identifier="gst_rtsp_message_get_header">
+ <doc xml:space="preserve">Get the @indx header value with key @field from @msg. The result in @value
+stays valid as long as it remains present in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
+was not found.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to hold the result</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="indx" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the header</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_header_by_name"
+ c:identifier="gst_rtsp_message_get_header_by_name"
+ version="1.6">
+ <doc xml:space="preserve">Get the @index header value with key @header from @msg. The result in @value
+stays valid as long as it remains present in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
+was not found.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to hold the result</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the header</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_type" c:identifier="gst_rtsp_message_get_type">
+ <doc xml:space="preserve">Get the message type of @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the message type.</doc>
+ <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_rtsp_message_init">
+ <doc xml:space="preserve">Initialize @msg. This function is mostly used when @msg is allocated on the
+stack. The reverse operation of this is gst_rtsp_message_unset().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init_data" c:identifier="gst_rtsp_message_init_data">
+ <doc xml:space="preserve">Initialize a new data #GstRTSPMessage for @channel.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">a channel</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init_request" c:identifier="gst_rtsp_message_init_request">
+ <doc xml:space="preserve">Initialize @msg as a request message with @method and @uri. To clear @msg
+again, use gst_rtsp_message_unset().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">the request method to use</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the uri of the request</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init_response"
+ c:identifier="gst_rtsp_message_init_response">
+ <doc xml:space="preserve">Initialize @msg with @code and @reason.
+
+When @reason is %NULL, the default reason for @code will be used.
+
+When @request is not %NULL, the relevant headers will be copied to the new
+response message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">the status code</doc>
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+ </parameter>
+ <parameter name="reason"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the status reason or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="request"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the request that triggered the response or %NULL</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_auth_credentials"
+ c:identifier="gst_rtsp_message_parse_auth_credentials"
+ version="1.12">
+ <doc xml:space="preserve">Parses the credentials given in a WWW-Authenticate or Authorization header.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">
+ %NULL-terminated array of GstRTSPAuthCredential or %NULL.</doc>
+ <array c:type="GstRTSPAuthCredential**">
+ <type name="RTSPAuthCredential" c:type="GstRTSPAuthCredential*"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_data" c:identifier="gst_rtsp_message_parse_data">
+ <doc xml:space="preserve">Parse the data message @msg and store the channel in @channel.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="channel"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the channel</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_request"
+ c:identifier="gst_rtsp_message_parse_request">
+ <doc xml:space="preserve">Parse the request message @msg and store the values @method, @uri and
+@version. The result locations can be %NULL if one is not interested in its
+value.
+
+@uri remains valid for as long as @msg is valid and unchanged.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="method"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the method</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod*"/>
+ </parameter>
+ <parameter name="uri"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the uri</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="version"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the version</doc>
+ <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_response"
+ c:identifier="gst_rtsp_message_parse_response">
+ <doc xml:space="preserve">Parse the response message @msg and store the values @code, @reason and
+@version. The result locations can be %NULL if one is not interested in its
+value.
+
+@reason remains valid for as long as @msg is valid and unchanged.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="code"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the status code</doc>
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode*"/>
+ </parameter>
+ <parameter name="reason"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the status reason</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="version"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location to hold the version</doc>
+ <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_header"
+ c:identifier="gst_rtsp_message_remove_header">
+ <doc xml:space="preserve">Remove the @indx header with key @field from @msg. If @indx equals -1, all
+headers will be removed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ <parameter name="indx" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the header</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_header_by_name"
+ c:identifier="gst_rtsp_message_remove_header_by_name"
+ version="1.6">
+ <doc xml:space="preserve">Remove the @index header with key @header from @msg. If @index equals -1,
+all matching headers will be removed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">the header string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="index" transfer-ownership="none">
+ <doc xml:space="preserve">the index of the header</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_body" c:identifier="gst_rtsp_message_set_body">
+ <doc xml:space="preserve">Set the body of @msg to a copy of @data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="steal_body" c:identifier="gst_rtsp_message_steal_body">
+ <doc xml:space="preserve">Take the body of @msg and store it in @data and @size. After this method,
+the body and size of @msg will be set to %NULL and 0 respectively.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8**">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location for the size of @data</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_body" c:identifier="gst_rtsp_message_take_body">
+ <doc xml:space="preserve">Set the body of @msg to @data and @size. This method takes ownership of
+@data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="full">
+ <doc xml:space="preserve">the data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_header" c:identifier="gst_rtsp_message_take_header">
+ <doc xml:space="preserve">Add a header with key @field and @value to @msg. This function takes
+ownership of @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="full">
+ <doc xml:space="preserve">the value of the header</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="take_header_by_name"
+ c:identifier="gst_rtsp_message_take_header_by_name"
+ version="1.6">
+ <doc xml:space="preserve">Add a header with key @header and @value to @msg. This function takes
+ownership of @value, but not of @header.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">a header string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="full">
+ <doc xml:space="preserve">the value of the header</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unset" c:identifier="gst_rtsp_message_unset">
+ <doc xml:space="preserve">Unset the contents of @msg so that it becomes an uninitialized
+#GstRTSPMessage again. This function is mostly used in combination with
+gst_rtsp_message_init_request(), gst_rtsp_message_init_response() and
+gst_rtsp_message_init_data() on stack allocated #GstRTSPMessage structures.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="RTSPMethod"
+ glib:type-name="GstRTSPMethod"
+ glib:get-type="gst_rtsp_method_get_type"
+ c:type="GstRTSPMethod">
+ <doc xml:space="preserve">The different supported RTSP methods.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid method</doc>
+ </member>
+ <member name="describe"
+ value="1"
+ c:identifier="GST_RTSP_DESCRIBE"
+ glib:nick="describe">
+ <doc xml:space="preserve">the DESCRIBE method</doc>
+ </member>
+ <member name="announce"
+ value="2"
+ c:identifier="GST_RTSP_ANNOUNCE"
+ glib:nick="announce">
+ <doc xml:space="preserve">the ANNOUNCE method</doc>
+ </member>
+ <member name="get_parameter"
+ value="4"
+ c:identifier="GST_RTSP_GET_PARAMETER"
+ glib:nick="get-parameter">
+ <doc xml:space="preserve">the GET_PARAMETER method</doc>
+ </member>
+ <member name="options"
+ value="8"
+ c:identifier="GST_RTSP_OPTIONS"
+ glib:nick="options">
+ <doc xml:space="preserve">the OPTIONS method</doc>
+ </member>
+ <member name="pause"
+ value="16"
+ c:identifier="GST_RTSP_PAUSE"
+ glib:nick="pause">
+ <doc xml:space="preserve">the PAUSE method</doc>
+ </member>
+ <member name="play"
+ value="32"
+ c:identifier="GST_RTSP_PLAY"
+ glib:nick="play">
+ <doc xml:space="preserve">the PLAY method</doc>
+ </member>
+ <member name="record"
+ value="64"
+ c:identifier="GST_RTSP_RECORD"
+ glib:nick="record">
+ <doc xml:space="preserve">the RECORD method</doc>
+ </member>
+ <member name="redirect"
+ value="128"
+ c:identifier="GST_RTSP_REDIRECT"
+ glib:nick="redirect">
+ <doc xml:space="preserve">the REDIRECT method</doc>
+ </member>
+ <member name="setup"
+ value="256"
+ c:identifier="GST_RTSP_SETUP"
+ glib:nick="setup">
+ <doc xml:space="preserve">the SETUP method</doc>
+ </member>
+ <member name="set_parameter"
+ value="512"
+ c:identifier="GST_RTSP_SET_PARAMETER"
+ glib:nick="set-parameter">
+ <doc xml:space="preserve">the SET_PARAMETER method</doc>
+ </member>
+ <member name="teardown"
+ value="1024"
+ c:identifier="GST_RTSP_TEARDOWN"
+ glib:nick="teardown">
+ <doc xml:space="preserve">the TEARDOWN method</doc>
+ </member>
+ <member name="get"
+ value="2048"
+ c:identifier="GST_RTSP_GET"
+ glib:nick="get">
+ <doc xml:space="preserve">the GET method (HTTP).</doc>
+ </member>
+ <member name="post"
+ value="4096"
+ c:identifier="GST_RTSP_POST"
+ glib:nick="post">
+ <doc xml:space="preserve">the POST method (HTTP).</doc>
+ </member>
+ <function name="as_text" c:identifier="gst_rtsp_method_as_text">
+ <doc xml:space="preserve">Convert @method to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @method.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMethod</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </parameter>
+ </parameters>
+ </function>
+ </bitfield>
+ <enumeration name="RTSPMsgType"
+ glib:type-name="GstRTSPMsgType"
+ glib:get-type="gst_rtsp_msg_type_get_type"
+ c:type="GstRTSPMsgType">
+ <doc xml:space="preserve">The type of a message.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_MESSAGE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid message type</doc>
+ </member>
+ <member name="request"
+ value="1"
+ c:identifier="GST_RTSP_MESSAGE_REQUEST"
+ glib:nick="request">
+ <doc xml:space="preserve">RTSP request message</doc>
+ </member>
+ <member name="response"
+ value="2"
+ c:identifier="GST_RTSP_MESSAGE_RESPONSE"
+ glib:nick="response">
+ <doc xml:space="preserve">RTSP response message</doc>
+ </member>
+ <member name="http_request"
+ value="3"
+ c:identifier="GST_RTSP_MESSAGE_HTTP_REQUEST"
+ glib:nick="http-request">
+ <doc xml:space="preserve">HTTP request message.</doc>
+ </member>
+ <member name="http_response"
+ value="4"
+ c:identifier="GST_RTSP_MESSAGE_HTTP_RESPONSE"
+ glib:nick="http-response">
+ <doc xml:space="preserve">HTTP response message.</doc>
+ </member>
+ <member name="data"
+ value="5"
+ c:identifier="GST_RTSP_MESSAGE_DATA"
+ glib:nick="data">
+ <doc xml:space="preserve">data message</doc>
+ </member>
+ </enumeration>
+ <bitfield name="RTSPProfile"
+ glib:type-name="GstRTSPProfile"
+ glib:get-type="gst_rtsp_profile_get_type"
+ c:type="GstRTSPProfile">
+ <doc xml:space="preserve">The transfer profile to use.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_RTSP_PROFILE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">invalid profile</doc>
+ </member>
+ <member name="avp"
+ value="1"
+ c:identifier="GST_RTSP_PROFILE_AVP"
+ glib:nick="avp">
+ <doc xml:space="preserve">the Audio/Visual profile (RFC 3551)</doc>
+ </member>
+ <member name="savp"
+ value="2"
+ c:identifier="GST_RTSP_PROFILE_SAVP"
+ glib:nick="savp">
+ <doc xml:space="preserve">the secure Audio/Visual profile (RFC 3711)</doc>
+ </member>
+ <member name="avpf"
+ value="4"
+ c:identifier="GST_RTSP_PROFILE_AVPF"
+ glib:nick="avpf">
+ <doc xml:space="preserve">the Audio/Visual profile with feedback (RFC 4585)</doc>
+ </member>
+ <member name="savpf"
+ value="8"
+ c:identifier="GST_RTSP_PROFILE_SAVPF"
+ glib:nick="savpf">
+ <doc xml:space="preserve">the secure Audio/Visual profile with feedback (RFC 5124)</doc>
+ </member>
+ </bitfield>
+ <record name="RTSPRange" c:type="GstRTSPRange">
+ <doc xml:space="preserve">Provides helper functions to deal with time ranges.</doc>
+ <field name="min" writable="1">
+ <doc xml:space="preserve">minimum value of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="max" writable="1">
+ <doc xml:space="preserve">maximum value of the range</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <function name="convert_units"
+ c:identifier="gst_rtsp_range_convert_units">
+ <doc xml:space="preserve">Converts the range in-place between different types of units.
+Ranges containing the special value #GST_RTSP_TIME_NOW can not be
+converted as these are only valid for #GST_RTSP_RANGE_NPT.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the range could be converted</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+ </parameter>
+ <parameter name="unit" transfer-ownership="none">
+ <doc xml:space="preserve">the unit to convert the range into</doc>
+ <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="free" c:identifier="gst_rtsp_range_free">
+ <doc xml:space="preserve">Free the memory allocated by @range.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_times"
+ c:identifier="gst_rtsp_range_get_times"
+ version="1.2">
+ <doc xml:space="preserve">Retrieve the minimum and maximum values from @range converted to
+#GstClockTime in @min and @max.
+
+A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW
+and #GST_RTSP_TIME_END for @min and @max respectively.
+
+UTC times will be converted to nanoseconds since 1900.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
+ </parameter>
+ <parameter name="min"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result minimum #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result maximum #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse" c:identifier="gst_rtsp_range_parse">
+ <doc xml:space="preserve">Parse @rangestr to a #GstRTSPTimeRange.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="rangestr" transfer-ownership="none">
+ <doc xml:space="preserve">a range string to parse</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="range"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the #GstRTSPTimeRange result</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_string" c:identifier="gst_rtsp_range_to_string">
+ <doc xml:space="preserve">Convert @range into a string representation.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The string representation of @range. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="RTSPRangeUnit"
+ glib:type-name="GstRTSPRangeUnit"
+ glib:get-type="gst_rtsp_range_unit_get_type"
+ c:type="GstRTSPRangeUnit">
+ <doc xml:space="preserve">Different possible time range units.</doc>
+ <member name="smpte"
+ value="0"
+ c:identifier="GST_RTSP_RANGE_SMPTE"
+ glib:nick="smpte">
+ <doc xml:space="preserve">SMPTE timecode</doc>
+ </member>
+ <member name="smpte_30_drop"
+ value="1"
+ c:identifier="GST_RTSP_RANGE_SMPTE_30_DROP"
+ glib:nick="smpte-30-drop">
+ <doc xml:space="preserve">29.97 frames per second</doc>
+ </member>
+ <member name="smpte_25"
+ value="2"
+ c:identifier="GST_RTSP_RANGE_SMPTE_25"
+ glib:nick="smpte-25">
+ <doc xml:space="preserve">25 frames per second</doc>
+ </member>
+ <member name="npt"
+ value="3"
+ c:identifier="GST_RTSP_RANGE_NPT"
+ glib:nick="npt">
+ <doc xml:space="preserve">Normal play time</doc>
+ </member>
+ <member name="clock"
+ value="4"
+ c:identifier="GST_RTSP_RANGE_CLOCK"
+ glib:nick="clock">
+ <doc xml:space="preserve">Absolute time expressed as ISO 8601 timestamps</doc>
+ </member>
+ </enumeration>
+ <enumeration name="RTSPResult"
+ glib:type-name="GstRTSPResult"
+ glib:get-type="gst_rtsp_result_get_type"
+ c:type="GstRTSPResult">
+ <doc xml:space="preserve">Result codes from the RTSP functions.</doc>
+ <member name="ok" value="0" c:identifier="GST_RTSP_OK" glib:nick="ok">
+ <doc xml:space="preserve">no error</doc>
+ </member>
+ <member name="error"
+ value="-1"
+ c:identifier="GST_RTSP_ERROR"
+ glib:nick="error">
+ <doc xml:space="preserve">some unspecified error occured</doc>
+ </member>
+ <member name="einval"
+ value="-2"
+ c:identifier="GST_RTSP_EINVAL"
+ glib:nick="einval">
+ <doc xml:space="preserve">invalid arguments were provided to a function</doc>
+ </member>
+ <member name="eintr"
+ value="-3"
+ c:identifier="GST_RTSP_EINTR"
+ glib:nick="eintr">
+ <doc xml:space="preserve">an operation was canceled</doc>
+ </member>
+ <member name="enomem"
+ value="-4"
+ c:identifier="GST_RTSP_ENOMEM"
+ glib:nick="enomem">
+ <doc xml:space="preserve">no memory was available for the operation</doc>
+ </member>
+ <member name="eresolv"
+ value="-5"
+ c:identifier="GST_RTSP_ERESOLV"
+ glib:nick="eresolv">
+ <doc xml:space="preserve">a host resolve error occured</doc>
+ </member>
+ <member name="enotimpl"
+ value="-6"
+ c:identifier="GST_RTSP_ENOTIMPL"
+ glib:nick="enotimpl">
+ <doc xml:space="preserve">function not implemented</doc>
+ </member>
+ <member name="esys"
+ value="-7"
+ c:identifier="GST_RTSP_ESYS"
+ glib:nick="esys">
+ <doc xml:space="preserve">a system error occured, errno contains more details</doc>
+ </member>
+ <member name="eparse"
+ value="-8"
+ c:identifier="GST_RTSP_EPARSE"
+ glib:nick="eparse">
+ <doc xml:space="preserve">a parsing error occured</doc>
+ </member>
+ <member name="ewsastart"
+ value="-9"
+ c:identifier="GST_RTSP_EWSASTART"
+ glib:nick="ewsastart">
+ <doc xml:space="preserve">windows networking could not start</doc>
+ </member>
+ <member name="ewsaversion"
+ value="-10"
+ c:identifier="GST_RTSP_EWSAVERSION"
+ glib:nick="ewsaversion">
+ <doc xml:space="preserve">windows networking stack has wrong version</doc>
+ </member>
+ <member name="eeof"
+ value="-11"
+ c:identifier="GST_RTSP_EEOF"
+ glib:nick="eeof">
+ <doc xml:space="preserve">end-of-file was reached</doc>
+ </member>
+ <member name="enet"
+ value="-12"
+ c:identifier="GST_RTSP_ENET"
+ glib:nick="enet">
+ <doc xml:space="preserve">a network problem occured, h_errno contains more details</doc>
+ </member>
+ <member name="enotip"
+ value="-13"
+ c:identifier="GST_RTSP_ENOTIP"
+ glib:nick="enotip">
+ <doc xml:space="preserve">the host is not an IP host</doc>
+ </member>
+ <member name="etimeout"
+ value="-14"
+ c:identifier="GST_RTSP_ETIMEOUT"
+ glib:nick="etimeout">
+ <doc xml:space="preserve">a timeout occured</doc>
+ </member>
+ <member name="etget"
+ value="-15"
+ c:identifier="GST_RTSP_ETGET"
+ glib:nick="etget">
+ <doc xml:space="preserve">the tunnel GET request has been performed</doc>
+ </member>
+ <member name="etpost"
+ value="-16"
+ c:identifier="GST_RTSP_ETPOST"
+ glib:nick="etpost">
+ <doc xml:space="preserve">the tunnel POST request has been performed</doc>
+ </member>
+ <member name="elast"
+ value="-17"
+ c:identifier="GST_RTSP_ELAST"
+ glib:nick="elast">
+ <doc xml:space="preserve">last error</doc>
+ </member>
+ </enumeration>
+ <enumeration name="RTSPState"
+ glib:type-name="GstRTSPState"
+ glib:get-type="gst_rtsp_state_get_type"
+ c:type="GstRTSPState">
+ <doc xml:space="preserve">The different RTSP states.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_STATE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid state</doc>
+ </member>
+ <member name="init"
+ value="1"
+ c:identifier="GST_RTSP_STATE_INIT"
+ glib:nick="init">
+ <doc xml:space="preserve">initializing</doc>
+ </member>
+ <member name="ready"
+ value="2"
+ c:identifier="GST_RTSP_STATE_READY"
+ glib:nick="ready">
+ <doc xml:space="preserve">ready for operation</doc>
+ </member>
+ <member name="seeking"
+ value="3"
+ c:identifier="GST_RTSP_STATE_SEEKING"
+ glib:nick="seeking">
+ <doc xml:space="preserve">seeking in progress</doc>
+ </member>
+ <member name="playing"
+ value="4"
+ c:identifier="GST_RTSP_STATE_PLAYING"
+ glib:nick="playing">
+ <doc xml:space="preserve">playing</doc>
+ </member>
+ <member name="recording"
+ value="5"
+ c:identifier="GST_RTSP_STATE_RECORDING"
+ glib:nick="recording">
+ <doc xml:space="preserve">recording</doc>
+ </member>
+ </enumeration>
+ <enumeration name="RTSPStatusCode"
+ glib:type-name="GstRTSPStatusCode"
+ glib:get-type="gst_rtsp_status_code_get_type"
+ c:type="GstRTSPStatusCode">
+ <doc xml:space="preserve">Enumeration of rtsp status codes</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_STS_INVALID"
+ glib:nick="invalid">
+ </member>
+ <member name="continue"
+ value="100"
+ c:identifier="GST_RTSP_STS_CONTINUE"
+ glib:nick="continue">
+ </member>
+ <member name="ok"
+ value="200"
+ c:identifier="GST_RTSP_STS_OK"
+ glib:nick="ok">
+ </member>
+ <member name="created"
+ value="201"
+ c:identifier="GST_RTSP_STS_CREATED"
+ glib:nick="created">
+ </member>
+ <member name="low_on_storage"
+ value="250"
+ c:identifier="GST_RTSP_STS_LOW_ON_STORAGE"
+ glib:nick="low-on-storage">
+ </member>
+ <member name="multiple_choices"
+ value="300"
+ c:identifier="GST_RTSP_STS_MULTIPLE_CHOICES"
+ glib:nick="multiple-choices">
+ </member>
+ <member name="moved_permanently"
+ value="301"
+ c:identifier="GST_RTSP_STS_MOVED_PERMANENTLY"
+ glib:nick="moved-permanently">
+ </member>
+ <member name="move_temporarily"
+ value="302"
+ c:identifier="GST_RTSP_STS_MOVE_TEMPORARILY"
+ glib:nick="move-temporarily">
+ </member>
+ <member name="see_other"
+ value="303"
+ c:identifier="GST_RTSP_STS_SEE_OTHER"
+ glib:nick="see-other">
+ </member>
+ <member name="not_modified"
+ value="304"
+ c:identifier="GST_RTSP_STS_NOT_MODIFIED"
+ glib:nick="not-modified">
+ </member>
+ <member name="use_proxy"
+ value="305"
+ c:identifier="GST_RTSP_STS_USE_PROXY"
+ glib:nick="use-proxy">
+ </member>
+ <member name="bad_request"
+ value="400"
+ c:identifier="GST_RTSP_STS_BAD_REQUEST"
+ glib:nick="bad-request">
+ </member>
+ <member name="unauthorized"
+ value="401"
+ c:identifier="GST_RTSP_STS_UNAUTHORIZED"
+ glib:nick="unauthorized">
+ </member>
+ <member name="payment_required"
+ value="402"
+ c:identifier="GST_RTSP_STS_PAYMENT_REQUIRED"
+ glib:nick="payment-required">
+ </member>
+ <member name="forbidden"
+ value="403"
+ c:identifier="GST_RTSP_STS_FORBIDDEN"
+ glib:nick="forbidden">
+ </member>
+ <member name="not_found"
+ value="404"
+ c:identifier="GST_RTSP_STS_NOT_FOUND"
+ glib:nick="not-found">
+ </member>
+ <member name="method_not_allowed"
+ value="405"
+ c:identifier="GST_RTSP_STS_METHOD_NOT_ALLOWED"
+ glib:nick="method-not-allowed">
+ </member>
+ <member name="not_acceptable"
+ value="406"
+ c:identifier="GST_RTSP_STS_NOT_ACCEPTABLE"
+ glib:nick="not-acceptable">
+ </member>
+ <member name="proxy_auth_required"
+ value="407"
+ c:identifier="GST_RTSP_STS_PROXY_AUTH_REQUIRED"
+ glib:nick="proxy-auth-required">
+ </member>
+ <member name="request_timeout"
+ value="408"
+ c:identifier="GST_RTSP_STS_REQUEST_TIMEOUT"
+ glib:nick="request-timeout">
+ </member>
+ <member name="gone"
+ value="410"
+ c:identifier="GST_RTSP_STS_GONE"
+ glib:nick="gone">
+ </member>
+ <member name="length_required"
+ value="411"
+ c:identifier="GST_RTSP_STS_LENGTH_REQUIRED"
+ glib:nick="length-required">
+ </member>
+ <member name="precondition_failed"
+ value="412"
+ c:identifier="GST_RTSP_STS_PRECONDITION_FAILED"
+ glib:nick="precondition-failed">
+ </member>
+ <member name="request_entity_too_large"
+ value="413"
+ c:identifier="GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE"
+ glib:nick="request-entity-too-large">
+ </member>
+ <member name="request_uri_too_large"
+ value="414"
+ c:identifier="GST_RTSP_STS_REQUEST_URI_TOO_LARGE"
+ glib:nick="request-uri-too-large">
+ </member>
+ <member name="unsupported_media_type"
+ value="415"
+ c:identifier="GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE"
+ glib:nick="unsupported-media-type">
+ </member>
+ <member name="parameter_not_understood"
+ value="451"
+ c:identifier="GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD"
+ glib:nick="parameter-not-understood">
+ </member>
+ <member name="conference_not_found"
+ value="452"
+ c:identifier="GST_RTSP_STS_CONFERENCE_NOT_FOUND"
+ glib:nick="conference-not-found">
+ </member>
+ <member name="not_enough_bandwidth"
+ value="453"
+ c:identifier="GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH"
+ glib:nick="not-enough-bandwidth">
+ </member>
+ <member name="session_not_found"
+ value="454"
+ c:identifier="GST_RTSP_STS_SESSION_NOT_FOUND"
+ glib:nick="session-not-found">
+ </member>
+ <member name="method_not_valid_in_this_state"
+ value="455"
+ c:identifier="GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE"
+ glib:nick="method-not-valid-in-this-state">
+ </member>
+ <member name="header_field_not_valid_for_resource"
+ value="456"
+ c:identifier="GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE"
+ glib:nick="header-field-not-valid-for-resource">
+ </member>
+ <member name="invalid_range"
+ value="457"
+ c:identifier="GST_RTSP_STS_INVALID_RANGE"
+ glib:nick="invalid-range">
+ </member>
+ <member name="parameter_is_readonly"
+ value="458"
+ c:identifier="GST_RTSP_STS_PARAMETER_IS_READONLY"
+ glib:nick="parameter-is-readonly">
+ </member>
+ <member name="aggregate_operation_not_allowed"
+ value="459"
+ c:identifier="GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED"
+ glib:nick="aggregate-operation-not-allowed">
+ </member>
+ <member name="only_aggregate_operation_allowed"
+ value="460"
+ c:identifier="GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED"
+ glib:nick="only-aggregate-operation-allowed">
+ </member>
+ <member name="unsupported_transport"
+ value="461"
+ c:identifier="GST_RTSP_STS_UNSUPPORTED_TRANSPORT"
+ glib:nick="unsupported-transport">
+ </member>
+ <member name="destination_unreachable"
+ value="462"
+ c:identifier="GST_RTSP_STS_DESTINATION_UNREACHABLE"
+ glib:nick="destination-unreachable">
+ </member>
+ <member name="key_management_failure"
+ value="463"
+ c:identifier="GST_RTSP_STS_KEY_MANAGEMENT_FAILURE"
+ glib:nick="key-management-failure">
+ </member>
+ <member name="internal_server_error"
+ value="500"
+ c:identifier="GST_RTSP_STS_INTERNAL_SERVER_ERROR"
+ glib:nick="internal-server-error">
+ </member>
+ <member name="not_implemented"
+ value="501"
+ c:identifier="GST_RTSP_STS_NOT_IMPLEMENTED"
+ glib:nick="not-implemented">
+ </member>
+ <member name="bad_gateway"
+ value="502"
+ c:identifier="GST_RTSP_STS_BAD_GATEWAY"
+ glib:nick="bad-gateway">
+ </member>
+ <member name="service_unavailable"
+ value="503"
+ c:identifier="GST_RTSP_STS_SERVICE_UNAVAILABLE"
+ glib:nick="service-unavailable">
+ </member>
+ <member name="gateway_timeout"
+ value="504"
+ c:identifier="GST_RTSP_STS_GATEWAY_TIMEOUT"
+ glib:nick="gateway-timeout">
+ </member>
+ <member name="rtsp_version_not_supported"
+ value="505"
+ c:identifier="GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED"
+ glib:nick="rtsp-version-not-supported">
+ </member>
+ <member name="option_not_supported"
+ value="551"
+ c:identifier="GST_RTSP_STS_OPTION_NOT_SUPPORTED"
+ glib:nick="option-not-supported">
+ </member>
+ </enumeration>
+ <record name="RTSPTime" c:type="GstRTSPTime">
+ <doc xml:space="preserve">A time indication.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the time of the time</doc>
+ <type name="RTSPTimeType" c:type="GstRTSPTimeType"/>
+ </field>
+ <field name="seconds" writable="1">
+ <doc xml:space="preserve">seconds when @type is GST_RTSP_TIME_SECONDS,
+ GST_RTSP_TIME_UTC and GST_RTSP_TIME_FRAMES</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ </record>
+ <record name="RTSPTime2" c:type="GstRTSPTime2" version="1.2">
+ <doc xml:space="preserve">Extra fields for a time indication.</doc>
+ <field name="frames" writable="1">
+ <doc xml:space="preserve">frames and subframes when type in GstRTSPTime is
+ GST_RTSP_TIME_FRAMES</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="year" writable="1">
+ <doc xml:space="preserve">year when type is GST_RTSP_TIME_UTC</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="month" writable="1">
+ <doc xml:space="preserve">month when type is GST_RTSP_TIME_UTC</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="day" writable="1">
+ <doc xml:space="preserve">day when type is GST_RTSP_TIME_UTC</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ </record>
+ <record name="RTSPTimeRange" c:type="GstRTSPTimeRange">
+ <doc xml:space="preserve">A time range.</doc>
+ <field name="unit" writable="1">
+ <doc xml:space="preserve">the time units used</doc>
+ <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
+ </field>
+ <field name="min" writable="1">
+ <doc xml:space="preserve">the minimum interval</doc>
+ <type name="RTSPTime" c:type="GstRTSPTime"/>
+ </field>
+ <field name="max" writable="1">
+ <doc xml:space="preserve">the maximum interval</doc>
+ <type name="RTSPTime" c:type="GstRTSPTime"/>
+ </field>
+ <field name="min2" writable="1">
+ <doc xml:space="preserve">extra fields in the minimum interval (Since: 1.2)</doc>
+ <type name="RTSPTime2" c:type="GstRTSPTime2"/>
+ </field>
+ <field name="max2" writable="1">
+ <doc xml:space="preserve">extra fields in the maximum interval (Since: 1.2)</doc>
+ <type name="RTSPTime2" c:type="GstRTSPTime2"/>
+ </field>
+ </record>
+ <enumeration name="RTSPTimeType"
+ glib:type-name="GstRTSPTimeType"
+ glib:get-type="gst_rtsp_time_type_get_type"
+ c:type="GstRTSPTimeType">
+ <doc xml:space="preserve">Possible time types.</doc>
+ <member name="seconds"
+ value="0"
+ c:identifier="GST_RTSP_TIME_SECONDS"
+ glib:nick="seconds">
+ <doc xml:space="preserve">seconds</doc>
+ </member>
+ <member name="now"
+ value="1"
+ c:identifier="GST_RTSP_TIME_NOW"
+ glib:nick="now">
+ <doc xml:space="preserve">now</doc>
+ </member>
+ <member name="end"
+ value="2"
+ c:identifier="GST_RTSP_TIME_END"
+ glib:nick="end">
+ <doc xml:space="preserve">end</doc>
+ </member>
+ <member name="frames"
+ value="3"
+ c:identifier="GST_RTSP_TIME_FRAMES"
+ glib:nick="frames">
+ <doc xml:space="preserve">frames and subframes</doc>
+ </member>
+ <member name="utc"
+ value="4"
+ c:identifier="GST_RTSP_TIME_UTC"
+ glib:nick="utc">
+ <doc xml:space="preserve">UTC time</doc>
+ </member>
+ </enumeration>
+ <bitfield name="RTSPTransMode"
+ glib:type-name="GstRTSPTransMode"
+ glib:get-type="gst_rtsp_trans_mode_get_type"
+ c:type="GstRTSPTransMode">
+ <doc xml:space="preserve">The transfer mode to use.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_RTSP_TRANS_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">invalid tansport mode</doc>
+ </member>
+ <member name="rtp"
+ value="1"
+ c:identifier="GST_RTSP_TRANS_RTP"
+ glib:nick="rtp">
+ <doc xml:space="preserve">transfer RTP data</doc>
+ </member>
+ <member name="rdt"
+ value="2"
+ c:identifier="GST_RTSP_TRANS_RDT"
+ glib:nick="rdt">
+ <doc xml:space="preserve">transfer RDT (RealMedia) data</doc>
+ </member>
+ </bitfield>
+ <record name="RTSPTransport" c:type="GstRTSPTransport">
+ <doc xml:space="preserve">Provides helper functions to deal with RTSP transport strings.</doc>
+ <field name="trans" writable="1">
+ <doc xml:space="preserve">the transport mode</doc>
+ <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+ </field>
+ <field name="profile" writable="1">
+ <doc xml:space="preserve">the tansport profile</doc>
+ <type name="RTSPProfile" c:type="GstRTSPProfile"/>
+ </field>
+ <field name="lower_transport" writable="1">
+ <doc xml:space="preserve">the lower transport</doc>
+ <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+ </field>
+ <field name="destination" writable="1">
+ <doc xml:space="preserve">the destination ip/hostname</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="source" writable="1">
+ <doc xml:space="preserve">the source ip/hostname</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="layers" writable="1">
+ <doc xml:space="preserve">the number of layers</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="mode_play" writable="1">
+ <doc xml:space="preserve">if play mode was selected</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="mode_record" writable="1">
+ <doc xml:space="preserve">if record mode was selected</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="append" writable="1">
+ <doc xml:space="preserve">is append mode was selected</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="interleaved" writable="1">
+ <doc xml:space="preserve">the interleave range</doc>
+ <type name="RTSPRange" c:type="GstRTSPRange"/>
+ </field>
+ <field name="ttl" writable="1">
+ <doc xml:space="preserve">the time to live for multicast UDP</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="port" writable="1">
+ <doc xml:space="preserve">the port pair for multicast sessions</doc>
+ <type name="RTSPRange" c:type="GstRTSPRange"/>
+ </field>
+ <field name="client_port" writable="1">
+ <doc xml:space="preserve">the client port pair for receiving data. For TCP
+ based transports, applications can use this field to store the
+ sender and receiver ports of the client.</doc>
+ <type name="RTSPRange" c:type="GstRTSPRange"/>
+ </field>
+ <field name="server_port" writable="1">
+ <doc xml:space="preserve">the server port pair for receiving data. For TCP
+ based transports, applications can use this field to store the
+ sender and receiver ports of the server.</doc>
+ <type name="RTSPRange" c:type="GstRTSPRange"/>
+ </field>
+ <field name="ssrc" writable="1">
+ <doc xml:space="preserve">the ssrc that the sender/receiver will use</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="as_text" c:identifier="gst_rtsp_transport_as_text">
+ <doc xml:space="preserve">Convert @transport into a string that can be used to signal the transport in
+an RTSP SETUP response.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string describing the RTSP transport or %NULL when the transport
+is invalid.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_rtsp_transport_free">
+ <doc xml:space="preserve">Free the memory used by @transport.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_media_type"
+ c:identifier="gst_rtsp_transport_get_media_type"
+ version="1.4">
+ <doc xml:space="preserve">Get the media type of @transport. This media type is typically
+used to generate #GstCaps events.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </instance-parameter>
+ <parameter name="media_type"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">media type of @transport</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_rtsp_transport_init">
+ <doc xml:space="preserve">Initialize @transport so that it can be used.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="get_manager"
+ c:identifier="gst_rtsp_transport_get_manager">
+ <doc xml:space="preserve">Get the #GstElement that can handle the buffers transported over @trans.
+
+It is possible that there are several managers available, use @option to
+selected one.
+
+@manager will contain an element name or %NULL when no manager is
+needed/available for @trans.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransMode</doc>
+ <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+ </parameter>
+ <parameter name="manager"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">location to hold the result</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="option" transfer-ownership="none">
+ <doc xml:space="preserve">option index.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_mime"
+ c:identifier="gst_rtsp_transport_get_mime"
+ deprecated="1">
+ <doc xml:space="preserve">Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps events.</doc>
+ <doc-deprecated xml:space="preserve">This functions only deals with the GstRTSPTransMode and only
+ returns the mime type for #GST_RTSP_PROFILE_AVP. Use
+ gst_rtsp_transport_get_media_type() instead.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransMode</doc>
+ <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+ </parameter>
+ <parameter name="mime" transfer-ownership="none">
+ <doc xml:space="preserve">location to hold the result</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new" c:identifier="gst_rtsp_transport_new">
+ <doc xml:space="preserve">Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">location to hold the new #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse" c:identifier="gst_rtsp_transport_parse">
+ <doc xml:space="preserve">Parse the RTSP transport string @str into @transport.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="str" transfer-ownership="none">
+ <doc xml:space="preserve">a transport string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="RTSPUrl"
+ c:type="GstRTSPUrl"
+ glib:type-name="GstRTSPUrl"
+ glib:get-type="gst_rtsp_url_get_type"
+ c:symbol-prefix="rtsp_url">
+ <doc xml:space="preserve">Provides helper functions to handle RTSP urls.</doc>
+ <field name="transports" writable="1">
+ <doc xml:space="preserve">the transports allowed</doc>
+ <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+ </field>
+ <field name="family" writable="1">
+ <doc xml:space="preserve">the family</doc>
+ <type name="RTSPFamily" c:type="GstRTSPFamily"/>
+ </field>
+ <field name="user" writable="1">
+ <doc xml:space="preserve">the user</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="passwd" writable="1">
+ <doc xml:space="preserve">the password</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="host" writable="1">
+ <doc xml:space="preserve">the host</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="port" writable="1">
+ <doc xml:space="preserve">the port</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="abspath" writable="1">
+ <doc xml:space="preserve">the absolute path</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="query" writable="1">
+ <doc xml:space="preserve">additional query parameters</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <method name="copy" c:identifier="gst_rtsp_url_copy">
+ <doc xml:space="preserve">Make a copy of @url.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a copy of @url. Free with gst_rtsp_url_free () after usage.</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="decode_path_components"
+ c:identifier="gst_rtsp_url_decode_path_components">
+ <doc xml:space="preserve">Splits the path of @url on '/' boundaries, decoding the resulting components,
+
+The decoding performed by this routine is "URI decoding", as defined in RFC
+3986, commonly known as percent-decoding. For example, a string "foo\%2fbar"
+will decode to "foo/bar" -- the \%2f being replaced by the corresponding byte
+with hex value 0x2f. Note that there is no guarantee that the resulting byte
+sequence is valid in any given encoding. As a special case, \%00 is not
+unescaped to NUL, as that would prematurely terminate the string.
+
+Also note that since paths usually start with a slash, the first component
+will usually be the empty string.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">%NULL-terminated array of URL components. Free with
+g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_rtsp_url_free">
+ <doc xml:space="preserve">Free the memory used by @url.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_port" c:identifier="gst_rtsp_url_get_port">
+ <doc xml:space="preserve">Get the port number of @url.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </instance-parameter>
+ <parameter name="port"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the port</doc>
+ <type name="guint16" c:type="guint16*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_request_uri"
+ c:identifier="gst_rtsp_url_get_request_uri">
+ <doc xml:space="preserve">Get a newly allocated string describing the request URI for @url.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string with the request URI. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_port" c:identifier="gst_rtsp_url_set_port">
+ <doc xml:space="preserve">Set the port number in @url to @port.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+ </instance-parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">the port</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="parse" c:identifier="gst_rtsp_url_parse">
+ <doc xml:space="preserve">Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="urlstr" transfer-ownership="none">
+ <doc xml:space="preserve">the url string to parse</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="url"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the result.</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="RTSPVersion"
+ glib:type-name="GstRTSPVersion"
+ glib:get-type="gst_rtsp_version_get_type"
+ c:type="GstRTSPVersion">
+ <doc xml:space="preserve">The supported RTSP versions.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_RTSP_VERSION_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">unknown/invalid version</doc>
+ </member>
+ <member name="1_0"
+ value="16"
+ c:identifier="GST_RTSP_VERSION_1_0"
+ glib:nick="1-0">
+ <doc xml:space="preserve">version 1.0</doc>
+ </member>
+ <member name="1_1"
+ value="17"
+ c:identifier="GST_RTSP_VERSION_1_1"
+ glib:nick="1-1">
+ <doc xml:space="preserve">version 1.1.</doc>
+ </member>
+ <member name="2_0"
+ value="32"
+ c:identifier="GST_RTSP_VERSION_2_0"
+ glib:nick="2-0">
+ <doc xml:space="preserve">version 2.0.</doc>
+ </member>
+ <function name="as_text" c:identifier="gst_rtsp_version_as_text">
+ <doc xml:space="preserve">Convert @version to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @version.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPVersion</doc>
+ <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <record name="RTSPWatch" c:type="GstRTSPWatch" disguised="1">
+ <doc xml:space="preserve">Opaque RTSP watch object that can be used for asynchronous RTSP
+operations.</doc>
+ <method name="attach" c:identifier="gst_rtsp_watch_attach">
+ <doc xml:space="preserve">Adds a #GstRTSPWatch to a context so that it will be executed within that context.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the ID (greater than 0) for the watch within the GMainContext.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="context" transfer-ownership="none">
+ <doc xml:space="preserve">a GMainContext (if NULL, the default context will be used)</doc>
+ <type name="GLib.MainContext" c:type="GMainContext*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_send_backlog"
+ c:identifier="gst_rtsp_watch_get_send_backlog"
+ version="1.2">
+ <doc xml:space="preserve">Get the maximum amount of bytes and messages that will be queued in @watch.
+See gst_rtsp_watch_set_send_backlog().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="bytes"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">maximum bytes</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ <parameter name="messages"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">maximum messages</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="reset" c:identifier="gst_rtsp_watch_reset">
+ <doc xml:space="preserve">Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel()
+when the file descriptors of the connection might have changed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="send_message" c:identifier="gst_rtsp_watch_send_message">
+ <doc xml:space="preserve">Send a @message using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+@message will then be serialized and transmitted when the connection of the
+@watch becomes writable. In case the @message is queued, the ID returned in
+@id will be non-zero and used as the ID argument in the message_sent
+callback.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for a message ID or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_flushing"
+ c:identifier="gst_rtsp_watch_set_flushing"
+ version="1.4">
+ <doc xml:space="preserve">When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog()
+and make sure gst_rtsp_watch_write_data() returns immediately with
+#GST_RTSP_EINTR. And empty the queue.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="flushing" transfer-ownership="none">
+ <doc xml:space="preserve">new flushing state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_send_backlog"
+ c:identifier="gst_rtsp_watch_set_send_backlog"
+ version="1.2">
+ <doc xml:space="preserve">Set the maximum amount of bytes and messages that will be queued in @watch.
+When the maximum amounts are exceeded, gst_rtsp_watch_write_data() and
+gst_rtsp_watch_send_message() will return #GST_RTSP_ENOMEM.
+
+A value of 0 for @bytes or @messages means no limits.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="bytes" transfer-ownership="none">
+ <doc xml:space="preserve">maximum bytes</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="messages" transfer-ownership="none">
+ <doc xml:space="preserve">maximum messages</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_rtsp_watch_unref">
+ <doc xml:space="preserve">Decreases the reference count of @watch by one. If the resulting reference
+count is zero the watch and associated memory will be destroyed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="wait_backlog"
+ c:identifier="gst_rtsp_watch_wait_backlog"
+ version="1.4">
+ <doc xml:space="preserve">Wait until there is place in the backlog queue, @timeout is reached
+or @watch is set to flushing.
+
+If @timeout is %NULL this function can block forever. If @timeout
+contains a valid timeout, this function will return %GST_RTSP_ETIMEOUT
+after the timeout expired.
+
+The typically use of this function is when gst_rtsp_watch_write_data
+returns %GST_RTSP_ENOMEM. The caller then calls this function to wait for
+free space in the backlog queue and try again.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_RTSP_OK when if there is room in queue.
+ %GST_RTSP_ETIMEOUT when @timeout was reached.
+ %GST_RTSP_EINTR when @watch is flushing
+ %GST_RTSP_EINVAL when called with invalid parameters.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">a #GTimeVal timeout</doc>
+ <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="write_data" c:identifier="gst_rtsp_watch_write_data">
+ <doc xml:space="preserve">Write @data using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+@message will then be serialized and transmitted when the connection of the
+@watch becomes writable. In case the @message is queued, the ID returned in
+@id will be non-zero and used as the ID argument in the message_sent
+callback.
+
+This function will take ownership of @data and g_free() it after use.
+
+If the amount of queued data exceeds the limits set with
+gst_rtsp_watch_set_send_backlog(), this function will return
+#GST_RTSP_ENOMEM.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success. #GST_RTSP_ENOMEM when the backlog limits
+are reached. #GST_RTSP_EINTR when @watch was flushing.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="watch" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPWatch</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="full">
+ <doc xml:space="preserve">the data to queue</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of @data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="id"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">location for a message ID or %NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_rtsp_watch_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a watch object for @conn. The functions provided in @funcs will be
+called with @user_data when activity happened on the watch.
+
+The new watch is usually created so that it can be attached to a
+maincontext with gst_rtsp_watch_attach().
+
+@conn must exist for the entire lifetime of the watch.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstRTSPWatch that can be used for asynchronous RTSP
+communication. Free with gst_rtsp_watch_unref () after usage.</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </return-value>
+ <parameters>
+ <parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </parameter>
+ <parameter name="funcs" transfer-ownership="none">
+ <doc xml:space="preserve">watch functions</doc>
+ <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data to pass to @funcs</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify when @user_data is not referenced anymore</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs">
+ <doc xml:space="preserve">Callback functions from a #GstRTSPWatch.</doc>
+ <field name="message_received">
+ <callback name="message_received">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="message_sent">
+ <callback name="message_sent">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="closed">
+ <callback name="closed">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="error">
+ <callback name="error">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="result" transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="tunnel_start">
+ <callback name="tunnel_start">
+ <return-value transfer-ownership="none">
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="tunnel_complete">
+ <callback name="tunnel_complete">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="error_full">
+ <callback name="error_full">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="result" transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </parameter>
+ <parameter name="message" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="tunnel_lost">
+ <callback name="tunnel_lost">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="tunnel_http_response">
+ <callback name="tunnel_http_response">
+ <return-value transfer-ownership="none">
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="watch" transfer-ownership="none">
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </parameter>
+ <parameter name="request" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="response" transfer-ownership="none">
+ <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <constant name="RTSP_DEFAULT_PORT"
+ value="554"
+ c:type="GST_RTSP_DEFAULT_PORT">
+ <doc xml:space="preserve">The default RTSP port to connect to.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <function name="rtsp_auth_credentials_free"
+ c:identifier="gst_rtsp_auth_credentials_free"
+ version="1.12">
+ <doc xml:space="preserve">Free a %NULL-terminated array of credentials returned from
+gst_rtsp_message_parse_auth_credentials().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="credentials" transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL-terminated array of #GstRTSPAuthCredential</doc>
+ <type name="RTSPAuthCredential" c:type="GstRTSPAuthCredential**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_connection_accept"
+ c:identifier="gst_rtsp_connection_accept"
+ moved-to="RTSPConnection.accept">
+ <doc xml:space="preserve">Accept a new connection on @socket and create a new #GstRTSPConnection for
+handling communication on new socket.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">a socket</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ <parameter name="cancellable"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GCancellable to cancel the operation</doc>
+ <type name="Gio.Cancellable" c:type="GCancellable*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_connection_create"
+ c:identifier="gst_rtsp_connection_create"
+ moved-to="RTSPConnection.create">
+ <doc xml:space="preserve">Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
+The connection will not yet attempt to connect to @url, use
+gst_rtsp_connection_connect().
+
+A copy of @url will be made.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="url" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPUrl</doc>
+ <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_connection_create_from_socket"
+ c:identifier="gst_rtsp_connection_create_from_socket"
+ moved-to="RTSPConnection.create_from_socket">
+ <doc xml:space="preserve">Create a new #GstRTSPConnection for handling communication on the existing
+socket @socket. The @initial_buffer contains zero terminated data already
+read from @socket which should be used before starting to read new data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="socket" transfer-ownership="none">
+ <doc xml:space="preserve">a #GSocket</doc>
+ <type name="Gio.Socket" c:type="GSocket*"/>
+ </parameter>
+ <parameter name="ip" transfer-ownership="none">
+ <doc xml:space="preserve">the IP address of the other end</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">the port used by the other end</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="initial_buffer" transfer-ownership="none">
+ <doc xml:space="preserve">data already read from @fd</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="conn"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_find_header_field"
+ c:identifier="gst_rtsp_find_header_field">
+ <doc xml:space="preserve">Convert @header to a #GstRTSPHeaderField.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField for @header or #GST_RTSP_HDR_INVALID if the
+header field is unknown.</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </return-value>
+ <parameters>
+ <parameter name="header" transfer-ownership="none">
+ <doc xml:space="preserve">a header string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_find_method" c:identifier="gst_rtsp_find_method">
+ <doc xml:space="preserve">Convert @method to a #GstRTSPMethod.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMethod for @method or #GST_RTSP_INVALID if the
+method is unknown.</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a method</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_generate_digest_auth_response"
+ c:identifier="gst_rtsp_generate_digest_auth_response"
+ version="1.12">
+ <doc xml:space="preserve">Calculates the digest auth response from the values given by the server and
+the username and password. See RFC2069 for details.
+
+Currently only supported algorithm "md5".</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">Authentication response or %NULL if unsupported</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="algorithm"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">Hash algorithm to use, or %NULL for MD5</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">Request method, e.g. PLAY</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="realm" transfer-ownership="none">
+ <doc xml:space="preserve">Realm</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="username" transfer-ownership="none">
+ <doc xml:space="preserve">Username</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="password" transfer-ownership="none">
+ <doc xml:space="preserve">Password</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">Original request URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nonce" transfer-ownership="none">
+ <doc xml:space="preserve">Nonce</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_header_allow_multiple"
+ c:identifier="gst_rtsp_header_allow_multiple">
+ <doc xml:space="preserve">Check whether @field may appear multiple times in a message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if multiple headers are allowed.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_header_as_text"
+ c:identifier="gst_rtsp_header_as_text">
+ <doc xml:space="preserve">Convert @field to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @field.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="field" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
+ <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_message_new" c:identifier="gst_rtsp_message_new">
+ <doc xml:space="preserve">Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_message_new_data"
+ c:identifier="gst_rtsp_message_new_data">
+ <doc xml:space="preserve">Create a new data #GstRTSPMessage with @channel and store the
+result message in @msg. Free with gst_rtsp_message_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+ </parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">the channel</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_message_new_request"
+ c:identifier="gst_rtsp_message_new_request">
+ <doc xml:space="preserve">Create a new #GstRTSPMessage with @method and @uri and store the result
+request message in @msg. Free with gst_rtsp_message_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+ </parameter>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">the request method to use</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the uri of the request</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_message_new_response"
+ c:identifier="gst_rtsp_message_new_response">
+ <doc xml:space="preserve">Create a new response #GstRTSPMessage with @code and @reason and store the
+result message in @msg. Free with gst_rtsp_message_free().
+
+When @reason is %NULL, the default reason for @code will be used.
+
+When @request is not %NULL, the relevant headers will be copied to the new
+response message.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
+ <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+ </parameter>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">the status code</doc>
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+ </parameter>
+ <parameter name="reason"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the status reason or %NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="request"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the request that triggered the response or %NULL</doc>
+ <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_method_as_text"
+ c:identifier="gst_rtsp_method_as_text"
+ moved-to="RTSPMethod.as_text">
+ <doc xml:space="preserve">Convert @method to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @method.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMethod</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_options_as_text"
+ c:identifier="gst_rtsp_options_as_text">
+ <doc xml:space="preserve">Convert @options to a string.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new string of @options. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">one or more #GstRTSPMethod</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_options_from_text"
+ c:identifier="gst_rtsp_options_from_text"
+ version="1.2">
+ <doc xml:space="preserve">Convert the comma separated list @options to a #GstRTSPMethod bitwise or
+of methods. This functions is the reverse of gst_rtsp_options_as_text().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPMethod</doc>
+ <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+ </return-value>
+ <parameters>
+ <parameter name="options" transfer-ownership="none">
+ <doc xml:space="preserve">a comma separated list of options</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_range_convert_units"
+ c:identifier="gst_rtsp_range_convert_units"
+ moved-to="RTSPRange.convert_units">
+ <doc xml:space="preserve">Converts the range in-place between different types of units.
+Ranges containing the special value #GST_RTSP_TIME_NOW can not be
+converted as these are only valid for #GST_RTSP_RANGE_NPT.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the range could be converted</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+ </parameter>
+ <parameter name="unit" transfer-ownership="none">
+ <doc xml:space="preserve">the unit to convert the range into</doc>
+ <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_range_free"
+ c:identifier="gst_rtsp_range_free"
+ moved-to="RTSPRange.free">
+ <doc xml:space="preserve">Free the memory allocated by @range.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_range_get_times"
+ c:identifier="gst_rtsp_range_get_times"
+ moved-to="RTSPRange.get_times"
+ version="1.2">
+ <doc xml:space="preserve">Retrieve the minimum and maximum values from @range converted to
+#GstClockTime in @min and @max.
+
+A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW
+and #GST_RTSP_TIME_END for @min and @max respectively.
+
+UTC times will be converted to nanoseconds since 1900.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
+ </parameter>
+ <parameter name="min"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result minimum #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result maximum #GstClockTime</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_range_parse"
+ c:identifier="gst_rtsp_range_parse"
+ moved-to="RTSPRange.parse">
+ <doc xml:space="preserve">Parse @rangestr to a #GstRTSPTimeRange.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="rangestr" transfer-ownership="none">
+ <doc xml:space="preserve">a range string to parse</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="range"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the #GstRTSPTimeRange result</doc>
+ <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_range_to_string"
+ c:identifier="gst_rtsp_range_to_string"
+ moved-to="RTSPRange.to_string">
+ <doc xml:space="preserve">Convert @range into a string representation.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The string representation of @range. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
+ <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_status_as_text"
+ c:identifier="gst_rtsp_status_as_text">
+ <doc xml:space="preserve">Convert @code to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @code.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="code" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPStatusCode</doc>
+ <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_strresult" c:identifier="gst_rtsp_strresult">
+ <doc xml:space="preserve">Convert @result in a human readable string.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly allocated string. g_free() after usage.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="result" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_transport_get_manager"
+ c:identifier="gst_rtsp_transport_get_manager"
+ moved-to="RTSPTransport.get_manager">
+ <doc xml:space="preserve">Get the #GstElement that can handle the buffers transported over @trans.
+
+It is possible that there are several managers available, use @option to
+selected one.
+
+@manager will contain an element name or %NULL when no manager is
+needed/available for @trans.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransMode</doc>
+ <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+ </parameter>
+ <parameter name="manager"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ nullable="1">
+ <doc xml:space="preserve">location to hold the result</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ <parameter name="option" transfer-ownership="none">
+ <doc xml:space="preserve">option index.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_transport_get_mime"
+ c:identifier="gst_rtsp_transport_get_mime"
+ moved-to="RTSPTransport.get_mime"
+ deprecated="1">
+ <doc xml:space="preserve">Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps events.</doc>
+ <doc-deprecated xml:space="preserve">This functions only deals with the GstRTSPTransMode and only
+ returns the mime type for #GST_RTSP_PROFILE_AVP. Use
+ gst_rtsp_transport_get_media_type() instead.</doc-deprecated>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_RTSP_OK.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransMode</doc>
+ <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+ </parameter>
+ <parameter name="mime" transfer-ownership="none">
+ <doc xml:space="preserve">location to hold the result</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_transport_new"
+ c:identifier="gst_rtsp_transport_new"
+ moved-to="RTSPTransport.new">
+ <doc xml:space="preserve">Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">location to hold the new #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_transport_parse"
+ c:identifier="gst_rtsp_transport_parse"
+ moved-to="RTSPTransport.parse">
+ <doc xml:space="preserve">Parse the RTSP transport string @str into @transport.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="str" transfer-ownership="none">
+ <doc xml:space="preserve">a transport string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="transport" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPTransport</doc>
+ <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_url_parse"
+ c:identifier="gst_rtsp_url_parse"
+ moved-to="RTSPUrl.parse">
+ <doc xml:space="preserve">Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPResult.</doc>
+ <type name="RTSPResult" c:type="GstRTSPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="urlstr" transfer-ownership="none">
+ <doc xml:space="preserve">the url string to parse</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="url"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">location to hold the result.</doc>
+ <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_version_as_text"
+ c:identifier="gst_rtsp_version_as_text"
+ moved-to="RTSPVersion.as_text">
+ <doc xml:space="preserve">Convert @version to a string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string representation of @version.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPVersion</doc>
+ <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="rtsp_watch_new"
+ c:identifier="gst_rtsp_watch_new"
+ moved-to="RTSPWatch.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a watch object for @conn. The functions provided in @funcs will be
+called with @user_data when activity happened on the watch.
+
+The new watch is usually created so that it can be attached to a
+maincontext with gst_rtsp_watch_attach().
+
+@conn must exist for the entire lifetime of the watch.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstRTSPWatch that can be used for asynchronous RTSP
+communication. Free with gst_rtsp_watch_unref () after usage.</doc>
+ <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+ </return-value>
+ <parameters>
+ <parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstRTSPConnection</doc>
+ <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+ </parameter>
+ <parameter name="funcs" transfer-ownership="none">
+ <doc xml:space="preserve">watch functions</doc>
+ <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data to pass to @funcs</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">notify when @user_data is not referenced anymore</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstSdp-1.0.gir b/girs/GstSdp-1.0.gir
new file mode 100644
index 0000000000..b877d90067
--- /dev/null
+++ b/girs/GstSdp-1.0.gir
@@ -0,0 +1,4318 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <package name="gstreamer-sdp-1.0"/>
+ <c:include name="gst/sdp/sdp.h"/>
+ <namespace name="GstSdp"
+ version="1.0"
+ shared-library="libgstsdp-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <enumeration name="MIKEYCacheType" c:type="GstMIKEYCacheType">
+ <doc xml:space="preserve">The different cache types</doc>
+ <member name="none" value="0" c:identifier="GST_MIKEY_CACHE_NONE">
+ <doc xml:space="preserve">The envelope key MUST NOT be cached</doc>
+ </member>
+ <member name="always" value="1" c:identifier="GST_MIKEY_CACHE_ALWAYS">
+ <doc xml:space="preserve">The envelope key MUST be cached</doc>
+ </member>
+ <member name="for_csb" value="2" c:identifier="GST_MIKEY_CACHE_FOR_CSB">
+ <doc xml:space="preserve">The envelope key MUST be cached, but only
+ to be used for the specific CSB.</doc>
+ </member>
+ </enumeration>
+ <record name="MIKEYDecryptInfo" c:type="GstMIKEYDecryptInfo" disguised="1">
+ </record>
+ <enumeration name="MIKEYEncAlg" c:type="GstMIKEYEncAlg">
+ <doc xml:space="preserve">The encryption algorithm used to encrypt the Encr data field</doc>
+ <member name="null" value="0" c:identifier="GST_MIKEY_ENC_NULL">
+ <doc xml:space="preserve">no encryption</doc>
+ </member>
+ <member name="aes_cm_128"
+ value="1"
+ c:identifier="GST_MIKEY_ENC_AES_CM_128">
+ <doc xml:space="preserve">AES-CM using a 128-bit key</doc>
+ </member>
+ <member name="aes_kw_128"
+ value="2"
+ c:identifier="GST_MIKEY_ENC_AES_KW_128">
+ <doc xml:space="preserve">AES Key Wrap using a 128-bit key</doc>
+ </member>
+ </enumeration>
+ <record name="MIKEYEncryptInfo" c:type="GstMIKEYEncryptInfo" disguised="1">
+ </record>
+ <enumeration name="MIKEYKVType" c:type="GstMIKEYKVType">
+ <doc xml:space="preserve">The key validity type</doc>
+ <member name="null" value="0" c:identifier="GST_MIKEY_KV_NULL">
+ <doc xml:space="preserve">No specific usage rule</doc>
+ </member>
+ <member name="spi" value="1" c:identifier="GST_MIKEY_KV_SPI">
+ <doc xml:space="preserve">The key is associated with the SPI/MKI</doc>
+ </member>
+ <member name="interval" value="2" c:identifier="GST_MIKEY_KV_INTERVAL">
+ <doc xml:space="preserve">The key has a start and expiration time</doc>
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYKeyDataType" c:type="GstMIKEYKeyDataType">
+ <doc xml:space="preserve">The type of key.</doc>
+ <member name="tgk" value="0" c:identifier="GST_MIKEY_KD_TGK">
+ <doc xml:space="preserve">a TEK Generation Key</doc>
+ </member>
+ <member name="tek" value="2" c:identifier="GST_MIKEY_KD_TEK">
+ <doc xml:space="preserve">Traffic-Encrypting Key</doc>
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYMacAlg" c:type="GstMIKEYMacAlg">
+ <doc xml:space="preserve">Specifies the authentication algorithm used</doc>
+ <member name="null" value="0" c:identifier="GST_MIKEY_MAC_NULL">
+ <doc xml:space="preserve">no authentication</doc>
+ </member>
+ <member name="hmac_sha_1_160"
+ value="1"
+ c:identifier="GST_MIKEY_MAC_HMAC_SHA_1_160">
+ <doc xml:space="preserve">HMAC-SHA-1-160</doc>
+ </member>
+ </enumeration>
+ <record name="MIKEYMapSRTP" c:type="GstMIKEYMapSRTP">
+ <doc xml:space="preserve">The Security policy Map item for SRTP</doc>
+ <field name="policy" writable="1">
+ <doc xml:space="preserve">The security policy applied for the stream with @ssrc</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="ssrc" writable="1">
+ <doc xml:space="preserve">the SSRC that must be used for the stream</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="roc" writable="1">
+ <doc xml:space="preserve">current rollover counter</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ </record>
+ <enumeration name="MIKEYMapType" c:type="GstMIKEYMapType">
+ <doc xml:space="preserve">Specifies the method of uniquely mapping Crypto Sessions to the security
+protocol sessions.</doc>
+ <member name="mikey_map_type_srtp"
+ value="0"
+ c:identifier="GST_MIKEY_MAP_TYPE_SRTP">
+ </member>
+ </enumeration>
+ <record name="MIKEYMessage"
+ c:type="GstMIKEYMessage"
+ glib:type-name="GstMIKEYMessage"
+ glib:get-type="gst_mikey_message_get_type"
+ c:symbol-prefix="mikey_message">
+ <doc xml:space="preserve">Structure holding the information of the MIKEY message</doc>
+ <field name="mini_object" readable="0" private="1">
+ <type name="Gst.MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="version" writable="1">
+ <doc xml:space="preserve">the version</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the #GstMIKEYType message type</doc>
+ <type name="MIKEYType" c:type="GstMIKEYType"/>
+ </field>
+ <field name="V" writable="1">
+ <doc xml:space="preserve">verify flag</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="prf_func" writable="1">
+ <doc xml:space="preserve">a #GstMIKEYPRFFunc</doc>
+ <type name="MIKEYPRFFunc" c:type="GstMIKEYPRFFunc"/>
+ </field>
+ <field name="CSB_id" writable="1">
+ <doc xml:space="preserve">Identifies the Crypto Session Bundle</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="map_type" writable="1">
+ <doc xml:space="preserve">a #GstMIKEYMapType</doc>
+ <type name="MIKEYMapType" c:type="GstMIKEYMapType"/>
+ </field>
+ <field name="map_info" writable="1">
+ <doc xml:space="preserve">map info array of type depending on @map_type</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="payloads" writable="1">
+ <doc xml:space="preserve">the payload array of #GstMIKEYPayload</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_mikey_message_new"
+ version="1.4">
+ <doc xml:space="preserve">Make a new MIKEY message.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMIKEYMessage on success</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_from_bytes"
+ c:identifier="gst_mikey_message_new_from_bytes"
+ version="1.4"
+ throws="1">
+ <doc xml:space="preserve">Make a new #GstMIKEYMessage from @bytes.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="bytes" transfer-ownership="none">
+ <doc xml:space="preserve">a #GBytes</doc>
+ <type name="GLib.Bytes" c:type="GBytes*"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYDecryptInfo</doc>
+ <type name="MIKEYDecryptInfo" c:type="GstMIKEYDecryptInfo*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_caps"
+ c:identifier="gst_mikey_message_new_from_caps"
+ version="1.8">
+ <doc xml:space="preserve">Makes mikey message including:
+ - Security Policy Payload
+ - Key Data Transport Payload
+ - Key Data Sub-Payload</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYMessage,
+or %NULL if there is no srtp information in the caps.</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps, including SRTP parameters (srtp/srtcp cipher, authorization, key data)</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_data"
+ c:identifier="gst_mikey_message_new_from_data"
+ version="1.4"
+ throws="1">
+ <doc xml:space="preserve">Parse @size bytes from @data into a #GstMIKEYMessage. @info contains the
+parameters to decrypt and verify the data.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYMessage on success or %NULL when parsing failed and
+@error will be set.</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">bytes to read</doc>
+ <array length="1" zero-terminated="0" c:type="gconstpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">length of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMIKEYDecryptInfo</doc>
+ <type name="MIKEYDecryptInfo" c:type="GstMIKEYDecryptInfo*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_cs_srtp"
+ c:identifier="gst_mikey_message_add_cs_srtp"
+ version="1.4">
+ <doc xml:space="preserve">Add a Crypto policy for SRTP to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="policy" transfer-ownership="none">
+ <doc xml:space="preserve">The security policy applied for the stream with @ssrc</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="ssrc" transfer-ownership="none">
+ <doc xml:space="preserve">the SSRC that must be used for the stream</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="roc" transfer-ownership="none">
+ <doc xml:space="preserve">current rollover counter</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_payload"
+ c:identifier="gst_mikey_message_add_payload"
+ version="1.4">
+ <doc xml:space="preserve">Add a new payload to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="payload" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_pke"
+ c:identifier="gst_mikey_message_add_pke"
+ version="1.4">
+ <doc xml:space="preserve">Add a new PKE payload to @msg with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="C" transfer-ownership="none">
+ <doc xml:space="preserve">envelope key cache indicator</doc>
+ <type name="MIKEYCacheType" c:type="GstMIKEYCacheType"/>
+ </parameter>
+ <parameter name="data_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the encrypted envelope key</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_rand"
+ c:identifier="gst_mikey_message_add_rand"
+ version="1.4">
+ <doc xml:space="preserve">Add a new RAND payload to @msg with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @rand</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="rand" transfer-ownership="none">
+ <doc xml:space="preserve">random data</doc>
+ <array length="0" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_rand_len"
+ c:identifier="gst_mikey_message_add_rand_len"
+ version="1.4">
+ <doc xml:space="preserve">Add a new RAND payload to @msg with @len random bytes.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">length</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_t"
+ c:identifier="gst_mikey_message_add_t"
+ version="1.4">
+ <doc xml:space="preserve">Add a new T payload to @msg with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">specifies the timestamp type used</doc>
+ <type name="MIKEYTSType" c:type="GstMIKEYTSType"/>
+ </parameter>
+ <parameter name="ts_value" transfer-ownership="none">
+ <doc xml:space="preserve">The timestamp value of the specified @type</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_t_now_ntp_utc"
+ c:identifier="gst_mikey_message_add_t_now_ntp_utc"
+ version="1.4">
+ <doc xml:space="preserve">Add a new T payload to @msg that contains the current time
+in NTP-UTC format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="base64_encode"
+ c:identifier="gst_mikey_message_base64_encode"
+ version="1.8">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #gchar, base64-encoded data</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="find_payload"
+ c:identifier="gst_mikey_message_find_payload"
+ version="1.4">
+ <doc xml:space="preserve">Find the @nth occurence of the payload with @type in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the @nth #GstMIKEYPayload of @type.</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayloadType</doc>
+ <type name="MIKEYPayloadType" c:type="GstMIKEYPayloadType"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">payload to find</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_cs_srtp"
+ c:identifier="gst_mikey_message_get_cs_srtp"
+ version="1.4">
+ <doc xml:space="preserve">Get the policy information of @msg at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMapSRTP</doc>
+ <type name="MIKEYMapSRTP" c:type="const GstMIKEYMapSRTP*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_n_cs"
+ c:identifier="gst_mikey_message_get_n_cs"
+ version="1.4">
+ <doc xml:space="preserve">Get the number of crypto sessions in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of crypto sessions</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_n_payloads"
+ c:identifier="gst_mikey_message_get_n_payloads"
+ version="1.4">
+ <doc xml:space="preserve">Get the number of payloads in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of payloads in @msg</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_payload"
+ c:identifier="gst_mikey_message_get_payload"
+ version="1.4">
+ <doc xml:space="preserve">Get the #GstMIKEYPayload at @idx in @msg</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYPayload at @idx. The payload
+remains valid for as long as it is part of @msg.</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_cs_srtp"
+ c:identifier="gst_mikey_message_insert_cs_srtp"
+ version="1.4">
+ <doc xml:space="preserve">Insert a Crypto Session map for SRTP in @msg at @idx
+
+When @idx is -1, the policy will be appended.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index to insert at</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="map" transfer-ownership="none">
+ <doc xml:space="preserve">the map info</doc>
+ <type name="MIKEYMapSRTP" c:type="const GstMIKEYMapSRTP*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_payload"
+ c:identifier="gst_mikey_message_insert_payload"
+ version="1.4">
+ <doc xml:space="preserve">Insert the @payload at index @idx in @msg. If @idx is -1, the payload
+will be appended to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="payload" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_cs_srtp"
+ c:identifier="gst_mikey_message_remove_cs_srtp"
+ version="1.4">
+ <doc xml:space="preserve">Remove the SRTP policy at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index to remove</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_payload"
+ c:identifier="gst_mikey_message_remove_payload"
+ version="1.4">
+ <doc xml:space="preserve">Remove the payload in @msg at @idx</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_cs_srtp"
+ c:identifier="gst_mikey_message_replace_cs_srtp"
+ version="1.4">
+ <doc xml:space="preserve">Replace a Crypto Session map for SRTP in @msg at @idx with @map.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index to insert at</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="map" transfer-ownership="none">
+ <doc xml:space="preserve">the map info</doc>
+ <type name="MIKEYMapSRTP" c:type="const GstMIKEYMapSRTP*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_payload"
+ c:identifier="gst_mikey_message_replace_payload"
+ version="1.4">
+ <doc xml:space="preserve">Replace the payload at @idx in @msg with @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="payload" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_info"
+ c:identifier="gst_mikey_message_set_info"
+ version="1.4">
+ <doc xml:space="preserve">Set the information in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">a version</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYType</doc>
+ <type name="MIKEYType" c:type="GstMIKEYType"/>
+ </parameter>
+ <parameter name="V" transfer-ownership="none">
+ <doc xml:space="preserve">verify flag</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="prf_func" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYPRFFunc function to use</doc>
+ <type name="MIKEYPRFFunc" c:type="GstMIKEYPRFFunc"/>
+ </parameter>
+ <parameter name="CSB_id" transfer-ownership="none">
+ <doc xml:space="preserve">the Crypto Session Bundle id</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ <parameter name="map_type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYCSIDMapType</doc>
+ <type name="MIKEYMapType" c:type="GstMIKEYMapType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_bytes"
+ c:identifier="gst_mikey_message_to_bytes"
+ version="1.4"
+ throws="1">
+ <doc xml:space="preserve">Convert @msg to a #GBytes.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GBytes for @msg.</doc>
+ <type name="GLib.Bytes" c:type="GBytes*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYEncryptInfo</doc>
+ <type name="MIKEYEncryptInfo" c:type="GstMIKEYEncryptInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_caps"
+ c:identifier="gst_mikey_message_to_caps"
+ version="1.8.1">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="const GstMIKEYMessage*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps to be filled with SRTP parameters (srtp/srtcp cipher, authorization, key data)</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="MIKEYPRFFunc" c:type="GstMIKEYPRFFunc">
+ <doc xml:space="preserve">The PRF function that has been/will be used for key derivation</doc>
+ <member name="mikey_prf_mikey_1"
+ value="0"
+ c:identifier="GST_MIKEY_PRF_MIKEY_1">
+ <doc xml:space="preserve">MIKEY-1 PRF function</doc>
+ </member>
+ </enumeration>
+ <record name="MIKEYPayload"
+ c:type="GstMIKEYPayload"
+ glib:type-name="GstMIKEYPayload"
+ glib:get-type="gst_mikey_payload_get_type"
+ c:symbol-prefix="mikey_payload">
+ <doc xml:space="preserve">Hold the common fields for all payloads</doc>
+ <field name="mini_object" readable="0" private="1">
+ <type name="Gst.MiniObject" c:type="GstMiniObject"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the payload type</doc>
+ <type name="MIKEYPayloadType" c:type="GstMIKEYPayloadType"/>
+ </field>
+ <field name="len" writable="1">
+ <doc xml:space="preserve">length of the payload</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_mikey_payload_new"
+ version="1.4">
+ <doc xml:space="preserve">Make a new #GstMIKEYPayload with @type.</doc>
+ <return-value transfer-ownership="full" nullable="1">
+ <doc xml:space="preserve">a new #GstMIKEYPayload or %NULL on failure.</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayloadType</doc>
+ <type name="MIKEYPayloadType" c:type="GstMIKEYPayloadType"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="kemac_add_sub"
+ c:identifier="gst_mikey_payload_kemac_add_sub"
+ version="1.4">
+ <doc xml:space="preserve">Add a new sub payload to @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="newpay" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstMIKEYPayload to add</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="kemac_get_n_sub"
+ c:identifier="gst_mikey_payload_kemac_get_n_sub"
+ version="1.4">
+ <doc xml:space="preserve">Get the number of sub payloads of @payload. @payload should be of type
+%GST_MIKEY_PT_KEMAC.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of sub payloads in @payload</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="kemac_get_sub"
+ c:identifier="gst_mikey_payload_kemac_get_sub"
+ version="1.4">
+ <doc xml:space="preserve">Get the sub payload of @payload at @idx. @payload should be of type
+%GST_MIKEY_PT_KEMAC.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYPayload at @idx.</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="kemac_remove_sub"
+ c:identifier="gst_mikey_payload_kemac_remove_sub"
+ version="1.4">
+ <doc xml:space="preserve">Remove the sub payload at @idx in @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index to remove</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="kemac_set"
+ c:identifier="gst_mikey_payload_kemac_set"
+ version="1.4">
+ <doc xml:space="preserve">Set the KEMAC parameters. @payload should point to a %GST_MIKEY_PT_KEMAC
+payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="enc_alg" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYEncAlg</doc>
+ <type name="MIKEYEncAlg" c:type="GstMIKEYEncAlg"/>
+ </parameter>
+ <parameter name="mac_alg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYMacAlg</doc>
+ <type name="MIKEYMacAlg" c:type="GstMIKEYMacAlg"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="key_data_set_interval"
+ c:identifier="gst_mikey_payload_key_data_set_interval"
+ version="1.4">
+ <doc xml:space="preserve">Set the key validity period in the %GST_MIKEY_PT_KEY_DATA @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="vf_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @vf_data</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="vf_data" transfer-ownership="none">
+ <doc xml:space="preserve">the Valid From data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="vt_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @vt_data</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="vt_data" transfer-ownership="none">
+ <doc xml:space="preserve">the Valid To data</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="key_data_set_key"
+ c:identifier="gst_mikey_payload_key_data_set_key"
+ version="1.4">
+ <doc xml:space="preserve">Set @key_len bytes of @key_data of type @key_type as the key for the
+%GST_MIKEY_PT_KEY_DATA @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="key_type" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYKeyDataType</doc>
+ <type name="MIKEYKeyDataType" c:type="GstMIKEYKeyDataType"/>
+ </parameter>
+ <parameter name="key_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @key_data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="key_data" transfer-ownership="none">
+ <doc xml:space="preserve">the key of type @key_type</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="key_data_set_salt"
+ c:identifier="gst_mikey_payload_key_data_set_salt"
+ version="1.4">
+ <doc xml:space="preserve">Set the salt key data. If @salt_len is 0 and @salt_data is %NULL, the
+salt data will be removed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="salt_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @salt_data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="salt_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the salt</doc>
+ <array length="0" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="key_data_set_spi"
+ c:identifier="gst_mikey_payload_key_data_set_spi"
+ version="1.4">
+ <doc xml:space="preserve">Set the SPI/MKI validity in the %GST_MIKEY_PT_KEY_DATA @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="spi_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @spi_data</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="spi_data" transfer-ownership="none">
+ <doc xml:space="preserve">the SPI/MKI data</doc>
+ <array length="0" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="pke_set"
+ c:identifier="gst_mikey_payload_pke_set"
+ version="1.4">
+ <doc xml:space="preserve">Set the PKE values in @payload. @payload must be of type
+%GST_MIKEY_PT_PKE.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="C" transfer-ownership="none">
+ <doc xml:space="preserve">envelope key cache indicator</doc>
+ <type name="MIKEYCacheType" c:type="GstMIKEYCacheType"/>
+ </parameter>
+ <parameter name="data_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the encrypted envelope key</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="rand_set"
+ c:identifier="gst_mikey_payload_rand_set"
+ version="1.4">
+ <doc xml:space="preserve">Set the random values in a %GST_MIKEY_PT_RAND @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of @rand</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="rand" transfer-ownership="none">
+ <doc xml:space="preserve">random values</doc>
+ <array length="0" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sp_add_param"
+ c:identifier="gst_mikey_payload_sp_add_param"
+ version="1.4">
+ <doc xml:space="preserve">Add a new parameter to the %GST_MIKEY_PT_SP @payload with @type, @len
+and @val.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">a type</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">a length</doc>
+ <type name="guint8" c:type="guint8"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">@len bytes of data</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sp_get_n_params"
+ c:identifier="gst_mikey_payload_sp_get_n_params"
+ version="1.4">
+ <doc xml:space="preserve">Get the number of security policy parameters in a %GST_MIKEY_PT_SP
+@payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of parameters in @payload</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="sp_get_param"
+ c:identifier="gst_mikey_payload_sp_get_param"
+ version="1.4">
+ <doc xml:space="preserve">Get the Security Policy parameter in a %GST_MIKEY_PT_SP @payload
+at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYPayloadSPParam at @idx in @payload</doc>
+ <type name="MIKEYPayloadSPParam"
+ c:type="const GstMIKEYPayloadSPParam*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="const GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sp_remove_param"
+ c:identifier="gst_mikey_payload_sp_remove_param"
+ version="1.4">
+ <doc xml:space="preserve">Remove the Security Policy parameters from a %GST_MIKEY_PT_SP
+@payload at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="sp_set"
+ c:identifier="gst_mikey_payload_sp_set"
+ version="1.4">
+ <doc xml:space="preserve">Set the Security Policy parameters for @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="policy" transfer-ownership="none">
+ <doc xml:space="preserve">the policy number</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="proto" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYSecProto</doc>
+ <type name="MIKEYSecProto" c:type="GstMIKEYSecProto"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="t_set"
+ c:identifier="gst_mikey_payload_t_set"
+ version="1.4">
+ <doc xml:space="preserve">Set the timestamp in a %GST_MIKEY_PT_T @payload.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="payload" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstMIKEYTSType</doc>
+ <type name="MIKEYTSType" c:type="GstMIKEYTSType"/>
+ </parameter>
+ <parameter name="ts_value" transfer-ownership="none">
+ <doc xml:space="preserve">the timestamp value</doc>
+ <array zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="MIKEYPayloadKEMAC" c:type="GstMIKEYPayloadKEMAC">
+ <doc xml:space="preserve">A structure holding the KEMAC payload</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the common #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="enc_alg" writable="1">
+ <doc xml:space="preserve">the #GstMIKEYEncAlg</doc>
+ <type name="MIKEYEncAlg" c:type="GstMIKEYEncAlg"/>
+ </field>
+ <field name="mac_alg" writable="1">
+ <doc xml:space="preserve">the #GstMIKEYMacAlg</doc>
+ <type name="MIKEYMacAlg" c:type="GstMIKEYMacAlg"/>
+ </field>
+ <field name="subpayloads" writable="1">
+ <doc xml:space="preserve">the subpayloads</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="MIKEYPayloadKeyData" c:type="GstMIKEYPayloadKeyData">
+ <doc xml:space="preserve">The Key data payload contains key material. It should be added as sub
+payload to the KEMAC.</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the payload header</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="key_type" writable="1">
+ <type name="MIKEYKeyDataType" c:type="GstMIKEYKeyDataType"/>
+ </field>
+ <field name="key_len" writable="1">
+ <doc xml:space="preserve">length of @key_data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="key_data" writable="1">
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ <field name="salt_len" writable="1">
+ <doc xml:space="preserve">the length of @salt_data, can be 0</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="salt_data" writable="1">
+ <doc xml:space="preserve">salt data</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ <field name="kv_type" writable="1">
+ <doc xml:space="preserve">the Key Validity type</doc>
+ <type name="MIKEYKVType" c:type="GstMIKEYKVType"/>
+ </field>
+ <field name="kv_len" writable="1">
+ <doc xml:space="preserve">length of @kv_data</doc>
+ <array zero-terminated="0" c:type="guint8" fixed-size="2">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </field>
+ <field name="kv_data" writable="1">
+ <doc xml:space="preserve">key validity data</doc>
+ <array zero-terminated="0" c:type="guint8" fixed-size="2">
+ <type name="guint8" c:type="guint8*"/>
+ </array>
+ </field>
+ </record>
+ <record name="MIKEYPayloadPKE" c:type="GstMIKEYPayloadPKE">
+ <doc xml:space="preserve">The Envelope data payload contains the encrypted envelope key that is
+used in the public-key transport to protect the data in the Key data
+transport payload. The encryption algorithm used is implicit from
+the certificate/public key used.</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the common #GstMIKEYPayload</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="C" writable="1">
+ <doc xml:space="preserve">envelope key cache indicator</doc>
+ <type name="MIKEYCacheType" c:type="GstMIKEYCacheType"/>
+ </field>
+ <field name="data_len" writable="1">
+ <doc xml:space="preserve">length of @data</doc>
+ <type name="guint16" c:type="guint16"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">the encrypted envelope key</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ </record>
+ <record name="MIKEYPayloadRAND" c:type="GstMIKEYPayloadRAND">
+ <doc xml:space="preserve">The RAND payload consists of a (pseudo-)random bit-string</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the payload header</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="len" writable="1">
+ <doc xml:space="preserve">the length of @rand</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="rand" writable="1">
+ <doc xml:space="preserve">random values</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ </record>
+ <record name="MIKEYPayloadSP" c:type="GstMIKEYPayloadSP">
+ <doc xml:space="preserve">The Security Policy payload defines a set of policies that apply to a
+specific security protocol</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the payload header</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="policy" writable="1">
+ <doc xml:space="preserve">the policy number</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="proto" writable="1">
+ <doc xml:space="preserve">the security protocol</doc>
+ <type name="MIKEYSecProto" c:type="GstMIKEYSecProto"/>
+ </field>
+ <field name="params" writable="1">
+ <doc xml:space="preserve">array of #GstMIKEYPayloadPSParam</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="MIKEYPayloadSPParam" c:type="GstMIKEYPayloadSPParam">
+ <doc xml:space="preserve">A Type/Length/Value field for security paramaters</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">specifies the type of the parameter</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="len" writable="1">
+ <doc xml:space="preserve">specifies the length of @val</doc>
+ <type name="guint8" c:type="guint8"/>
+ </field>
+ <field name="val" writable="1">
+ <doc xml:space="preserve">specifies the value of the parameter</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ </record>
+ <record name="MIKEYPayloadT" c:type="GstMIKEYPayloadT">
+ <doc xml:space="preserve">The timestamp payload carries the timestamp information</doc>
+ <field name="pt" writable="1">
+ <doc xml:space="preserve">the payload header</doc>
+ <type name="MIKEYPayload" c:type="GstMIKEYPayload"/>
+ </field>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">a #GstMIKEYTSType</doc>
+ <type name="MIKEYTSType" c:type="GstMIKEYTSType"/>
+ </field>
+ <field name="ts_value" writable="1">
+ <doc xml:space="preserve">the timestamp value</doc>
+ <type name="guint8" c:type="guint8*"/>
+ </field>
+ </record>
+ <enumeration name="MIKEYPayloadType" c:type="GstMIKEYPayloadType">
+ <doc xml:space="preserve">Different MIKEY Payload types.</doc>
+ <member name="last" value="0" c:identifier="GST_MIKEY_PT_LAST">
+ <doc xml:space="preserve">Last payload</doc>
+ </member>
+ <member name="kemac" value="1" c:identifier="GST_MIKEY_PT_KEMAC">
+ <doc xml:space="preserve">Key data transport payload</doc>
+ </member>
+ <member name="pke" value="2" c:identifier="GST_MIKEY_PT_PKE">
+ <doc xml:space="preserve">Envelope data payload</doc>
+ </member>
+ <member name="dh" value="3" c:identifier="GST_MIKEY_PT_DH">
+ <doc xml:space="preserve">DH data payload</doc>
+ </member>
+ <member name="sign" value="4" c:identifier="GST_MIKEY_PT_SIGN">
+ <doc xml:space="preserve">Signature payload</doc>
+ </member>
+ <member name="t" value="5" c:identifier="GST_MIKEY_PT_T">
+ <doc xml:space="preserve">Timestamp payload</doc>
+ </member>
+ <member name="id" value="6" c:identifier="GST_MIKEY_PT_ID">
+ <doc xml:space="preserve">ID payload</doc>
+ </member>
+ <member name="cert" value="7" c:identifier="GST_MIKEY_PT_CERT">
+ <doc xml:space="preserve">Certificate Payload</doc>
+ </member>
+ <member name="chash" value="8" c:identifier="GST_MIKEY_PT_CHASH">
+ <doc xml:space="preserve">Cert hash payload</doc>
+ </member>
+ <member name="v" value="9" c:identifier="GST_MIKEY_PT_V">
+ <doc xml:space="preserve">Verfication message payload</doc>
+ </member>
+ <member name="sp" value="10" c:identifier="GST_MIKEY_PT_SP">
+ <doc xml:space="preserve">Security Policy payload</doc>
+ </member>
+ <member name="rand" value="11" c:identifier="GST_MIKEY_PT_RAND">
+ <doc xml:space="preserve">RAND payload</doc>
+ </member>
+ <member name="err" value="12" c:identifier="GST_MIKEY_PT_ERR">
+ <doc xml:space="preserve">Error payload</doc>
+ </member>
+ <member name="key_data" value="20" c:identifier="GST_MIKEY_PT_KEY_DATA">
+ <doc xml:space="preserve">Key data sub-payload</doc>
+ </member>
+ <member name="gen_ext" value="21" c:identifier="GST_MIKEY_PT_GEN_EXT">
+ <doc xml:space="preserve">General Extension Payload</doc>
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYSecProto" c:type="GstMIKEYSecProto">
+ <doc xml:space="preserve">Specifies the security protocol</doc>
+ <member name="mikey_sec_proto_srtp"
+ value="0"
+ c:identifier="GST_MIKEY_SEC_PROTO_SRTP">
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYSecSRTP" c:type="GstMIKEYSecSRTP">
+ <doc xml:space="preserve">This policy specifies the parameters for SRTP and SRTCP</doc>
+ <member name="enc_alg"
+ value="0"
+ c:identifier="GST_MIKEY_SP_SRTP_ENC_ALG">
+ <doc xml:space="preserve">Encryption algorithm</doc>
+ </member>
+ <member name="enc_key_len"
+ value="1"
+ c:identifier="GST_MIKEY_SP_SRTP_ENC_KEY_LEN">
+ <doc xml:space="preserve">Session Encr. key length</doc>
+ </member>
+ <member name="auth_alg"
+ value="2"
+ c:identifier="GST_MIKEY_SP_SRTP_AUTH_ALG">
+ <doc xml:space="preserve">Authentication algorithm</doc>
+ </member>
+ <member name="auth_key_len"
+ value="3"
+ c:identifier="GST_MIKEY_SP_SRTP_AUTH_KEY_LEN">
+ <doc xml:space="preserve">Session Auth. key length</doc>
+ </member>
+ <member name="salt_key_len"
+ value="4"
+ c:identifier="GST_MIKEY_SP_SRTP_SALT_KEY_LEN">
+ <doc xml:space="preserve">Session Salt key length</doc>
+ </member>
+ <member name="prf" value="5" c:identifier="GST_MIKEY_SP_SRTP_PRF">
+ <doc xml:space="preserve">SRTP Pseudo Random Function</doc>
+ </member>
+ <member name="key_deriv_rate"
+ value="6"
+ c:identifier="GST_MIKEY_SP_SRTP_KEY_DERIV_RATE">
+ <doc xml:space="preserve">Key derivation rate</doc>
+ </member>
+ <member name="srtp_enc"
+ value="7"
+ c:identifier="GST_MIKEY_SP_SRTP_SRTP_ENC">
+ <doc xml:space="preserve">SRTP encryption off/on, 0 if off, 1 if on</doc>
+ </member>
+ <member name="srtcp_enc"
+ value="8"
+ c:identifier="GST_MIKEY_SP_SRTP_SRTCP_ENC">
+ <doc xml:space="preserve">SRTCP encryption off/on, 0 if off, 1 if on</doc>
+ </member>
+ <member name="fec_order"
+ value="9"
+ c:identifier="GST_MIKEY_SP_SRTP_FEC_ORDER">
+ <doc xml:space="preserve">sender's FEC order</doc>
+ </member>
+ <member name="srtp_auth"
+ value="10"
+ c:identifier="GST_MIKEY_SP_SRTP_SRTP_AUTH">
+ <doc xml:space="preserve">SRTP authentication off/on, 0 if off, 1 if on</doc>
+ </member>
+ <member name="auth_tag_len"
+ value="11"
+ c:identifier="GST_MIKEY_SP_SRTP_AUTH_TAG_LEN">
+ <doc xml:space="preserve">Authentication tag length</doc>
+ </member>
+ <member name="srtp_prefix_len"
+ value="12"
+ c:identifier="GST_MIKEY_SP_SRTP_SRTP_PREFIX_LEN">
+ <doc xml:space="preserve">SRTP prefix length</doc>
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYTSType" c:type="GstMIKEYTSType">
+ <doc xml:space="preserve">Specifies the timestamp type.</doc>
+ <member name="ntp_utc"
+ value="0"
+ c:identifier="GST_MIKEY_TS_TYPE_NTP_UTC">
+ <doc xml:space="preserve">an NTP time in UTC timezone</doc>
+ </member>
+ <member name="ntp" value="1" c:identifier="GST_MIKEY_TS_TYPE_NTP">
+ <doc xml:space="preserve">an NTP time</doc>
+ </member>
+ <member name="counter"
+ value="2"
+ c:identifier="GST_MIKEY_TS_TYPE_COUNTER">
+ <doc xml:space="preserve">a counter</doc>
+ </member>
+ </enumeration>
+ <enumeration name="MIKEYType" c:type="GstMIKEYType">
+ <doc xml:space="preserve">Different MIKEY data types.</doc>
+ <member name="invalid" value="-1" c:identifier="GST_MIKEY_TYPE_INVALID">
+ <doc xml:space="preserve">Invalid type</doc>
+ </member>
+ <member name="psk_init" value="0" c:identifier="GST_MIKEY_TYPE_PSK_INIT">
+ <doc xml:space="preserve">Initiator's pre-shared key message</doc>
+ </member>
+ <member name="psk_verify"
+ value="1"
+ c:identifier="GST_MIKEY_TYPE_PSK_VERIFY">
+ <doc xml:space="preserve">Verification message of a Pre-shared key message</doc>
+ </member>
+ <member name="pk_init" value="2" c:identifier="GST_MIKEY_TYPE_PK_INIT">
+ <doc xml:space="preserve">Initiator's public-key transport message</doc>
+ </member>
+ <member name="pk_verify"
+ value="3"
+ c:identifier="GST_MIKEY_TYPE_PK_VERIFY">
+ <doc xml:space="preserve">Verification message of a public-key message</doc>
+ </member>
+ <member name="dh_init" value="4" c:identifier="GST_MIKEY_TYPE_DH_INIT">
+ <doc xml:space="preserve">Initiator's DH exchange message</doc>
+ </member>
+ <member name="dh_resp" value="5" c:identifier="GST_MIKEY_TYPE_DH_RESP">
+ <doc xml:space="preserve">Responder's DH exchange message</doc>
+ </member>
+ <member name="error" value="6" c:identifier="GST_MIKEY_TYPE_ERROR">
+ <doc xml:space="preserve">Error message</doc>
+ </member>
+ </enumeration>
+ <constant name="MIKEY_VERSION" value="1" c:type="GST_MIKEY_VERSION">
+ <doc xml:space="preserve">The supported MIKEY version 1.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <record name="SDPAttribute" c:type="GstSDPAttribute">
+ <doc xml:space="preserve">The contents of the SDP "a=" field which contains a key/value pair.</doc>
+ <field name="key" writable="1">
+ <doc xml:space="preserve">the attribute key</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="value" writable="1">
+ <doc xml:space="preserve">the attribute value or NULL when it was a property attribute</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <method name="clear"
+ c:identifier="gst_sdp_attribute_clear"
+ version="1.2">
+ <doc xml:space="preserve">Clear the attribute.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_sdp_attribute_set" version="1.2">
+ <doc xml:space="preserve">Set the attribute with @key and @value.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="SDPBandwidth" c:type="GstSDPBandwidth">
+ <doc xml:space="preserve">The contents of the SDP "b=" field which specifies the proposed bandwidth to
+be used by the session or media.</doc>
+ <field name="bwtype" writable="1">
+ <doc xml:space="preserve">the bandwidth modifier type</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="bandwidth" writable="1">
+ <doc xml:space="preserve">the bandwidth in kilobits per second</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <method name="clear"
+ c:identifier="gst_sdp_bandwidth_clear"
+ version="1.2">
+ <doc xml:space="preserve">Reset the bandwidth information in @bw.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPBandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_sdp_bandwidth_set" version="1.2">
+ <doc xml:space="preserve">Set bandwidth information in @bw.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPBandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </instance-parameter>
+ <parameter name="bwtype" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth modifier type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="bandwidth" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth in kilobits per second</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="SDPConnection" c:type="GstSDPConnection">
+ <doc xml:space="preserve">The contents of the SDP "c=" field which contains connection data.</doc>
+ <field name="nettype" writable="1">
+ <doc xml:space="preserve">the type of network. "IN" is defined to have the meaning
+ "Internet".</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="addrtype" writable="1">
+ <doc xml:space="preserve">the type of @address.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="address" writable="1">
+ <doc xml:space="preserve">the address</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="ttl" writable="1">
+ <doc xml:space="preserve">the time to live of the address</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="addr_number" writable="1">
+ <doc xml:space="preserve">the number of layers</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <method name="clear"
+ c:identifier="gst_sdp_connection_clear"
+ version="1.2">
+ <doc xml:space="preserve">Clear the connection.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPConnection</doc>
+ <type name="SDPConnection" c:type="GstSDPConnection*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_sdp_connection_set" version="1.2">
+ <doc xml:space="preserve">Set the connection with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPConnection</doc>
+ <type name="SDPConnection" c:type="GstSDPConnection*"/>
+ </instance-parameter>
+ <parameter name="nettype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of network. "IN" is defined to have the meaning
+"Internet".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addrtype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of address.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="address" transfer-ownership="none">
+ <doc xml:space="preserve">the address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ttl" transfer-ownership="none">
+ <doc xml:space="preserve">the time to live of the address</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="addr_number" transfer-ownership="none">
+ <doc xml:space="preserve">the number of layers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="SDPKey" c:type="GstSDPKey">
+ <doc xml:space="preserve">The contents of the SDP "k=" field which is used to convey encryption
+keys.</doc>
+ <field name="type" writable="1">
+ <doc xml:space="preserve">the encryption type</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">the encryption data</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ </record>
+ <record name="SDPMedia" c:type="GstSDPMedia">
+ <doc xml:space="preserve">The contents of the SDP "m=" field with all related fields.</doc>
+ <field name="media" writable="1">
+ <doc xml:space="preserve">the media type</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="port" writable="1">
+ <doc xml:space="preserve">the transport port to which the media stream will be sent</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="num_ports" writable="1">
+ <doc xml:space="preserve">the number of ports or -1 if only one port was specified</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="proto" writable="1">
+ <doc xml:space="preserve">the transport protocol</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="fmts" writable="1">
+ <doc xml:space="preserve">an array of #gchar formats</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="information" writable="1">
+ <doc xml:space="preserve">the media title</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="connections" writable="1">
+ <doc xml:space="preserve">array of #GstSDPConnection with media connection information</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="bandwidths" writable="1">
+ <doc xml:space="preserve">array of #GstSDPBandwidth with media bandwidth information</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="key" writable="1">
+ <doc xml:space="preserve">the encryption key</doc>
+ <type name="SDPKey" c:type="GstSDPKey"/>
+ </field>
+ <field name="attributes" writable="1">
+ <doc xml:space="preserve">array of #GstSDPAttribute with the additional media attributes</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_attribute" c:identifier="gst_sdp_media_add_attribute">
+ <doc xml:space="preserve">Add the attribute with @key and @value to @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">a key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_bandwidth" c:identifier="gst_sdp_media_add_bandwidth">
+ <doc xml:space="preserve">Add the bandwidth information with @bwtype and @bandwidth to @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="bwtype" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth modifier type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="bandwidth" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth in kilobits per second</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_connection"
+ c:identifier="gst_sdp_media_add_connection">
+ <doc xml:space="preserve">Add the given connection parameters to @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="nettype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of network. "IN" is defined to have the meaning
+"Internet".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addrtype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of address.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="address" transfer-ownership="none">
+ <doc xml:space="preserve">the address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ttl" transfer-ownership="none">
+ <doc xml:space="preserve">the time to live of the address</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="addr_number" transfer-ownership="none">
+ <doc xml:space="preserve">the number of layers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_format" c:identifier="gst_sdp_media_add_format">
+ <doc xml:space="preserve">Add the format information to @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="as_text" c:identifier="gst_sdp_media_as_text">
+ <doc xml:space="preserve">Convert the contents of @media to a text string.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A dynamically allocated string representing the media.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="attributes_len"
+ c:identifier="gst_sdp_media_attributes_len">
+ <doc xml:space="preserve">Get the number of attribute fields in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of attributes in @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="attributes_to_caps"
+ c:identifier="gst_sdp_media_attributes_to_caps"
+ version="1.8">
+ <doc xml:space="preserve">Mapping of attributes of #GstSDPMedia to #GstCaps</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bandwidths_len"
+ c:identifier="gst_sdp_media_bandwidths_len">
+ <doc xml:space="preserve">Get the number of bandwidth fields in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of bandwidths in @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="connections_len"
+ c:identifier="gst_sdp_media_connections_len">
+ <doc xml:space="preserve">Get the number of connection fields in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of connections in @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_sdp_media_copy" version="1.2">
+ <doc xml:space="preserve">Allocate a new copy of @media and store the result in @copy. The value in
+@copy should be release with gst_sdp_media_free function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="copy"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="formats_len" c:identifier="gst_sdp_media_formats_len">
+ <doc xml:space="preserve">Get the number of formats in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of formats in @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_sdp_media_free">
+ <doc xml:space="preserve">Free all resources allocated by @media. @media should not be used anymore after
+this function. This function should be used when @media was dynamically
+allocated with gst_sdp_media_new().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute" c:identifier="gst_sdp_media_get_attribute">
+ <doc xml:space="preserve">Get the attribute at position @idx in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPAttribute at position @idx.</doc>
+ <type name="SDPAttribute" c:type="const GstSDPAttribute*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute_val"
+ c:identifier="gst_sdp_media_get_attribute_val">
+ <doc xml:space="preserve">Get the first attribute value for @key in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the first attribute value for @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">a key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute_val_n"
+ c:identifier="gst_sdp_media_get_attribute_val_n">
+ <doc xml:space="preserve">Get the @nth attribute value for @key in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the @nth attribute value.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">a key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bandwidth" c:identifier="gst_sdp_media_get_bandwidth">
+ <doc xml:space="preserve">Get the bandwidth at position @idx in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPBandwidth at position @idx.</doc>
+ <type name="SDPBandwidth" c:type="const GstSDPBandwidth*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_caps_from_media"
+ c:identifier="gst_sdp_media_get_caps_from_media"
+ version="1.8">
+ <doc xml:space="preserve">Mapping of caps from SDP fields:
+
+a=rtpmap:(payload) (encoding_name)/(clock_rate)[/(encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps, or %NULL if an error happened</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="pt" transfer-ownership="none">
+ <doc xml:space="preserve">a payload type</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_connection"
+ c:identifier="gst_sdp_media_get_connection">
+ <doc xml:space="preserve">Get the connection at position @idx in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPConnection at position @idx.</doc>
+ <type name="SDPConnection" c:type="const GstSDPConnection*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_format" c:identifier="gst_sdp_media_get_format">
+ <doc xml:space="preserve">Get the format information at position @idx in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the format at position @idx.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_information"
+ c:identifier="gst_sdp_media_get_information">
+ <doc xml:space="preserve">Get the information of @media</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the information of @media.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_key" c:identifier="gst_sdp_media_get_key">
+ <doc xml:space="preserve">Get the encryption information from @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPKey.</doc>
+ <type name="SDPKey" c:type="const GstSDPKey*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_media" c:identifier="gst_sdp_media_get_media">
+ <doc xml:space="preserve">Get the media description of @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the media description.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_num_ports" c:identifier="gst_sdp_media_get_num_ports">
+ <doc xml:space="preserve">Get the number of ports for @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of ports for @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_port" c:identifier="gst_sdp_media_get_port">
+ <doc xml:space="preserve">Get the port number for @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the port number of @media.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_proto" c:identifier="gst_sdp_media_get_proto">
+ <doc xml:space="preserve">Get the transport protocol of @media</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the transport protocol of @media.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_sdp_media_init">
+ <doc xml:space="preserve">Initialize @media so that its contents are as if it was freshly allocated
+with gst_sdp_media_new(). This function is mostly used to initialize a media
+allocated on the stack. gst_sdp_media_uninit() undoes this operation.
+
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="insert_attribute"
+ c:identifier="gst_sdp_media_insert_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Insert the attribute to @media at @idx. When @idx is -1,
+the attribute is appended.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_bandwidth"
+ c:identifier="gst_sdp_media_insert_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Insert the bandwidth information to @media at @idx. When @idx is -1,
+the bandwidth is appended.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPBandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_connection"
+ c:identifier="gst_sdp_media_insert_connection"
+ version="1.2">
+ <doc xml:space="preserve">Insert the connection information to @media at @idx. When @idx is -1,
+the connection is appended.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPConnection</doc>
+ <type name="SDPConnection" c:type="GstSDPConnection*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_format"
+ c:identifier="gst_sdp_media_insert_format"
+ version="1.2">
+ <doc xml:space="preserve">Insert the format information to @media at @idx. When @idx is -1,
+the format is appended.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_keymgmt"
+ c:identifier="gst_sdp_media_parse_keymgmt"
+ version="1.8.1">
+ <doc xml:space="preserve">Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute
+from a #GstSDPMedia.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="mikey"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_attribute"
+ c:identifier="gst_sdp_media_remove_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Remove the attribute in @media at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_bandwidth"
+ c:identifier="gst_sdp_media_remove_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Remove the bandwidth information in @media at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_connection"
+ c:identifier="gst_sdp_media_remove_connection"
+ version="1.2">
+ <doc xml:space="preserve">Remove the connection information in @media at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_format"
+ c:identifier="gst_sdp_media_remove_format"
+ version="1.2">
+ <doc xml:space="preserve">Remove the format information in @media at @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_attribute"
+ c:identifier="gst_sdp_media_replace_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Replace the attribute in @media at @idx with @attr.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_bandwidth"
+ c:identifier="gst_sdp_media_replace_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Replace the bandwidth information in @media at @idx with @bw.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPBandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_connection"
+ c:identifier="gst_sdp_media_replace_connection"
+ version="1.2">
+ <doc xml:space="preserve">Replace the connection information in @media at @idx with @conn.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="conn" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPConnection</doc>
+ <type name="SDPConnection" c:type="GstSDPConnection*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_format"
+ c:identifier="gst_sdp_media_replace_format"
+ version="1.2">
+ <doc xml:space="preserve">Replace the format information in @media at @idx with @format.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_information"
+ c:identifier="gst_sdp_media_set_information">
+ <doc xml:space="preserve">Set the media information of @media to @information.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="information" transfer-ownership="none">
+ <doc xml:space="preserve">the media information</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_key" c:identifier="gst_sdp_media_set_key">
+ <doc xml:space="preserve">Adds the encryption information to @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the encryption type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the encryption data</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_media" c:identifier="gst_sdp_media_set_media">
+ <doc xml:space="preserve">Set the media description of @media to @med.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="med" transfer-ownership="none">
+ <doc xml:space="preserve">the media description</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_port_info" c:identifier="gst_sdp_media_set_port_info">
+ <doc xml:space="preserve">Set the port information in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="port" transfer-ownership="none">
+ <doc xml:space="preserve">the port number</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="num_ports" transfer-ownership="none">
+ <doc xml:space="preserve">the number of ports</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_proto" c:identifier="gst_sdp_media_set_proto">
+ <doc xml:space="preserve">Set the media transport protocol of @media to @proto.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ <parameter name="proto" transfer-ownership="none">
+ <doc xml:space="preserve">the media transport protocol</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="uninit" c:identifier="gst_sdp_media_uninit">
+ <doc xml:space="preserve">Free all resources allocated in @media. @media should not be used anymore after
+this function. This function should be used when @media was allocated on the
+stack and initialized with gst_sdp_media_init().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="new" c:identifier="gst_sdp_media_new">
+ <doc xml:space="preserve">Allocate a new GstSDPMedia and store the result in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="media"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="set_media_from_caps"
+ c:identifier="gst_sdp_media_set_media_from_caps"
+ version="1.8">
+ <doc xml:space="preserve">Mapping of caps to SDP fields:
+
+a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...
+
+a=rtcp-fb:(payload) (param1) [param2]...</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="SDPMessage"
+ c:type="GstSDPMessage"
+ glib:type-name="GstSDPMessage"
+ glib:get-type="gst_sdp_message_get_type"
+ c:symbol-prefix="sdp_message">
+ <doc xml:space="preserve">The GstSDPMessage helper functions makes it easy to parse and create SDP
+messages.</doc>
+ <field name="version" writable="1">
+ <doc xml:space="preserve">the protocol version</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="origin" writable="1">
+ <doc xml:space="preserve">owner/creator and session identifier</doc>
+ <type name="SDPOrigin" c:type="GstSDPOrigin"/>
+ </field>
+ <field name="session_name" writable="1">
+ <doc xml:space="preserve">session name</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="information" writable="1">
+ <doc xml:space="preserve">session information</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="uri" writable="1">
+ <doc xml:space="preserve">URI of description</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="emails" writable="1">
+ <doc xml:space="preserve">array of #gchar with email addresses</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="phones" writable="1">
+ <doc xml:space="preserve">array of #gchar with phone numbers</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="connection" writable="1">
+ <doc xml:space="preserve">connection information for the session</doc>
+ <type name="SDPConnection" c:type="GstSDPConnection"/>
+ </field>
+ <field name="bandwidths" writable="1">
+ <doc xml:space="preserve">array of #GstSDPBandwidth with bandwidth information</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="times" writable="1">
+ <doc xml:space="preserve">array of #GstSDPTime with time descriptions</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="zones" writable="1">
+ <doc xml:space="preserve">array of #GstSDPZone with time zone adjustments</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="key" writable="1">
+ <doc xml:space="preserve">encryption key</doc>
+ <type name="SDPKey" c:type="GstSDPKey"/>
+ </field>
+ <field name="attributes" writable="1">
+ <doc xml:space="preserve">array of #GstSDPAttribute with session attributes</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="medias" writable="1">
+ <doc xml:space="preserve">array of #GstSDPMedia with media descriptions</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="add_attribute"
+ c:identifier="gst_sdp_message_add_attribute">
+ <doc xml:space="preserve">Add the attribute with @key and @value to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">the value</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_bandwidth"
+ c:identifier="gst_sdp_message_add_bandwidth">
+ <doc xml:space="preserve">Add the specified bandwidth information to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="bwtype" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth modifier type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="bandwidth" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth in kilobits per second</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_email" c:identifier="gst_sdp_message_add_email">
+ <doc xml:space="preserve">Add @email to the list of emails in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="email" transfer-ownership="none">
+ <doc xml:space="preserve">an email</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_media" c:identifier="gst_sdp_message_add_media">
+ <doc xml:space="preserve">Adds @media to the array of medias in @msg. This function takes ownership of
+the contents of @media so that @media will have to be reinitialized with
+gst_sdp_media_init() before it can be used again.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia to add</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_phone" c:identifier="gst_sdp_message_add_phone">
+ <doc xml:space="preserve">Add @phone to the list of phones in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="phone" transfer-ownership="none">
+ <doc xml:space="preserve">a phone</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_time" c:identifier="gst_sdp_message_add_time">
+ <doc xml:space="preserve">Add time information @start and @stop to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start time</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">the stop time</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="repeat" transfer-ownership="none">
+ <doc xml:space="preserve">the repeat times</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_zone" c:identifier="gst_sdp_message_add_zone">
+ <doc xml:space="preserve">Add time zone information to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="adj_time" transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time that a time zone adjustment happens</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="typed_time" transfer-ownership="none">
+ <doc xml:space="preserve">the offset from the time when the session was first scheduled</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="as_text" c:identifier="gst_sdp_message_as_text">
+ <doc xml:space="preserve">Convert the contents of @msg to a text string.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A dynamically allocated string representing the SDP description.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="attributes_len"
+ c:identifier="gst_sdp_message_attributes_len">
+ <doc xml:space="preserve">Get the number of attributes in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of attributes in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="attributes_to_caps"
+ c:identifier="gst_sdp_message_attributes_to_caps"
+ version="1.8">
+ <doc xml:space="preserve">Mapping of attributes of #GstSDPMessage to #GstCaps</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="bandwidths_len"
+ c:identifier="gst_sdp_message_bandwidths_len">
+ <doc xml:space="preserve">Get the number of bandwidth information in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of bandwidth information in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_sdp_message_copy" version="1.2">
+ <doc xml:space="preserve">Allocate a new copy of @msg and store the result in @copy. The value in
+@copy should be release with gst_sdp_message_free function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="copy"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dump" c:identifier="gst_sdp_message_dump">
+ <doc xml:space="preserve">Dump the parsed contents of @msg to stdout.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="emails_len" c:identifier="gst_sdp_message_emails_len">
+ <doc xml:space="preserve">Get the number of emails in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of emails in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_sdp_message_free">
+ <doc xml:space="preserve">Free all resources allocated by @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was dynamically
+allocated with gst_sdp_message_new().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute"
+ c:identifier="gst_sdp_message_get_attribute">
+ <doc xml:space="preserve">Get the attribute at position @idx in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPAttribute at position @idx.</doc>
+ <type name="SDPAttribute" c:type="const GstSDPAttribute*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute_val"
+ c:identifier="gst_sdp_message_get_attribute_val">
+ <doc xml:space="preserve">Get the first attribute with key @key in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the attribute value of the first attribute with @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_attribute_val_n"
+ c:identifier="gst_sdp_message_get_attribute_val_n">
+ <doc xml:space="preserve">Get the @nth attribute with key @key in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the attribute value of the @nth attribute with @key.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">the key</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_bandwidth"
+ c:identifier="gst_sdp_message_get_bandwidth">
+ <doc xml:space="preserve">Get the bandwidth at index @idx from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPBandwidth.</doc>
+ <type name="SDPBandwidth" c:type="const GstSDPBandwidth*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_connection"
+ c:identifier="gst_sdp_message_get_connection">
+ <doc xml:space="preserve">Get the connection of @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPConnection. The result remains valid as long as @msg is valid.</doc>
+ <type name="SDPConnection" c:type="const GstSDPConnection*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_email" c:identifier="gst_sdp_message_get_email">
+ <doc xml:space="preserve">Get the email with number @idx from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the email at position @idx.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an email index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_information"
+ c:identifier="gst_sdp_message_get_information">
+ <doc xml:space="preserve">Get the information in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_key" c:identifier="gst_sdp_message_get_key">
+ <doc xml:space="preserve">Get the encryption information from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPKey.</doc>
+ <type name="SDPKey" c:type="const GstSDPKey*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_media" c:identifier="gst_sdp_message_get_media">
+ <doc xml:space="preserve">Get the media description at index @idx in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia.</doc>
+ <type name="SDPMedia" c:type="const GstSDPMedia*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_origin" c:identifier="gst_sdp_message_get_origin">
+ <doc xml:space="preserve">Get the origin of @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPOrigin. The result remains valid as long as @msg is valid.</doc>
+ <type name="SDPOrigin" c:type="const GstSDPOrigin*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_phone" c:identifier="gst_sdp_message_get_phone">
+ <doc xml:space="preserve">Get the phone with number @idx from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the phone at position @idx.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">a phone index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_session_name"
+ c:identifier="gst_sdp_message_get_session_name">
+ <doc xml:space="preserve">Get the session name in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_time" c:identifier="gst_sdp_message_get_time">
+ <doc xml:space="preserve">Get time information with index @idx from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPTime.</doc>
+ <type name="SDPTime" c:type="const GstSDPTime*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the time index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_uri" c:identifier="gst_sdp_message_get_uri">
+ <doc xml:space="preserve">Get the URI in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_version" c:identifier="gst_sdp_message_get_version">
+ <doc xml:space="preserve">Get the version in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_zone" c:identifier="gst_sdp_message_get_zone">
+ <doc xml:space="preserve">Get time zone information with index @idx from @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPZone.</doc>
+ <type name="SDPZone" c:type="const GstSDPZone*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the zone index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_sdp_message_init">
+ <doc xml:space="preserve">Initialize @msg so that its contents are as if it was freshly allocated
+with gst_sdp_message_new(). This function is mostly used to initialize a message
+allocated on the stack. gst_sdp_message_uninit() undoes this operation.
+
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="insert_attribute"
+ c:identifier="gst_sdp_message_insert_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Insert attribute into the array of attributes in @msg
+at index @idx.
+When -1 is given as @idx, the attribute is inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_bandwidth"
+ c:identifier="gst_sdp_message_insert_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Insert bandwidth parameters into the array of bandwidths in @msg
+at index @idx.
+When -1 is given as @idx, the bandwidth is inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_email"
+ c:identifier="gst_sdp_message_insert_email"
+ version="1.2">
+ <doc xml:space="preserve">Insert @email into the array of emails in @msg at index @idx.
+When -1 is given as @idx, the email is inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="email" transfer-ownership="none">
+ <doc xml:space="preserve">an email</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_phone"
+ c:identifier="gst_sdp_message_insert_phone"
+ version="1.2">
+ <doc xml:space="preserve">Insert @phone into the array of phone numbers in @msg at index @idx.
+When -1 is given as @idx, the phone is inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">a phone index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="phone" transfer-ownership="none">
+ <doc xml:space="preserve">a phone</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_time"
+ c:identifier="gst_sdp_message_insert_time"
+ version="1.2">
+ <doc xml:space="preserve">Insert time parameters into the array of times in @msg
+at index @idx.
+When -1 is given as @idx, the times are inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="t" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPTime</doc>
+ <type name="SDPTime" c:type="GstSDPTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="insert_zone"
+ c:identifier="gst_sdp_message_insert_zone"
+ version="1.2">
+ <doc xml:space="preserve">Insert zone parameters into the array of zones in @msg
+at index @idx.
+When -1 is given as @idx, the zone is inserted at the end.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an index
+@zone a #GstSDPZone</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="zone" transfer-ownership="none">
+ <type name="SDPZone" c:type="GstSDPZone*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="medias_len" c:identifier="gst_sdp_message_medias_len">
+ <doc xml:space="preserve">Get the number of media descriptions in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of media descriptions in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="parse_keymgmt"
+ c:identifier="gst_sdp_message_parse_keymgmt"
+ version="1.8.1">
+ <doc xml:space="preserve">Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute
+from a #GstSDPMessage.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="mikey"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstMIKEYMessage</doc>
+ <type name="MIKEYMessage" c:type="GstMIKEYMessage**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="phones_len" c:identifier="gst_sdp_message_phones_len">
+ <doc xml:space="preserve">Get the number of phones in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of phones in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_attribute"
+ c:identifier="gst_sdp_message_remove_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Remove the attribute in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_bandwidth"
+ c:identifier="gst_sdp_message_remove_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Remove the bandwidth information in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_email"
+ c:identifier="gst_sdp_message_remove_email"
+ version="1.2">
+ <doc xml:space="preserve">Remove the email in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an email index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_phone"
+ c:identifier="gst_sdp_message_remove_phone"
+ version="1.2">
+ <doc xml:space="preserve">Remove the phone number in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">a phone index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_time"
+ c:identifier="gst_sdp_message_remove_time"
+ version="1.2">
+ <doc xml:space="preserve">Remove the time information in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_zone"
+ c:identifier="gst_sdp_message_remove_zone"
+ version="1.2">
+ <doc xml:space="preserve">Remove the zone information in @msg at index @idx.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_attribute"
+ c:identifier="gst_sdp_message_replace_attribute"
+ version="1.2">
+ <doc xml:space="preserve">Replace the attribute in @msg at index @idx with @attr.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="attr" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPAttribute</doc>
+ <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_bandwidth"
+ c:identifier="gst_sdp_message_replace_bandwidth"
+ version="1.2">
+ <doc xml:space="preserve">Replace the bandwidth information in @msg at index @idx with @bw.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="bw" transfer-ownership="none">
+ <doc xml:space="preserve">the bandwidth</doc>
+ <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_email"
+ c:identifier="gst_sdp_message_replace_email"
+ version="1.2">
+ <doc xml:space="preserve">Replace the email in @msg at index @idx with @email.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">an email index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="email" transfer-ownership="none">
+ <doc xml:space="preserve">an email</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_phone"
+ c:identifier="gst_sdp_message_replace_phone"
+ version="1.2">
+ <doc xml:space="preserve">Replace the phone number in @msg at index @idx with @phone.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">a phone index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="phone" transfer-ownership="none">
+ <doc xml:space="preserve">a phone</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_time"
+ c:identifier="gst_sdp_message_replace_time"
+ version="1.2">
+ <doc xml:space="preserve">Replace the time information in @msg at index @idx with @t.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="t" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPTime</doc>
+ <type name="SDPTime" c:type="GstSDPTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="replace_zone"
+ c:identifier="gst_sdp_message_replace_zone"
+ version="1.2">
+ <doc xml:space="preserve">Replace the zone information in @msg at index @idx with @zone.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="idx" transfer-ownership="none">
+ <doc xml:space="preserve">the index</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="zone" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPZone</doc>
+ <type name="SDPZone" c:type="GstSDPZone*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_connection"
+ c:identifier="gst_sdp_message_set_connection">
+ <doc xml:space="preserve">Configure the SDP connection in @msg with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="nettype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of network. "IN" is defined to have the meaning
+"Internet".</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addrtype" transfer-ownership="none">
+ <doc xml:space="preserve">the type of address.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="address" transfer-ownership="none">
+ <doc xml:space="preserve">the address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="ttl" transfer-ownership="none">
+ <doc xml:space="preserve">the time to live of the address</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="addr_number" transfer-ownership="none">
+ <doc xml:space="preserve">the number of layers</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_information"
+ c:identifier="gst_sdp_message_set_information">
+ <doc xml:space="preserve">Set the information in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="information" transfer-ownership="none">
+ <doc xml:space="preserve">the information</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_key" c:identifier="gst_sdp_message_set_key">
+ <doc xml:space="preserve">Adds the encryption information to @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the encryption type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the encryption data</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_origin" c:identifier="gst_sdp_message_set_origin">
+ <doc xml:space="preserve">Configure the SDP origin in @msg with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="username" transfer-ownership="none">
+ <doc xml:space="preserve">the user name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="sess_id" transfer-ownership="none">
+ <doc xml:space="preserve">a session id</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="sess_version" transfer-ownership="none">
+ <doc xml:space="preserve">a session version</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="nettype" transfer-ownership="none">
+ <doc xml:space="preserve">a network type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addrtype" transfer-ownership="none">
+ <doc xml:space="preserve">an address type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addr" transfer-ownership="none">
+ <doc xml:space="preserve">an address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_session_name"
+ c:identifier="gst_sdp_message_set_session_name">
+ <doc xml:space="preserve">Set the session name in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="session_name" transfer-ownership="none">
+ <doc xml:space="preserve">the session name</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_uri" c:identifier="gst_sdp_message_set_uri">
+ <doc xml:space="preserve">Set the URI in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_version" c:identifier="gst_sdp_message_set_version">
+ <doc xml:space="preserve">Set the version in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ <parameter name="version" transfer-ownership="none">
+ <doc xml:space="preserve">the version</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="times_len" c:identifier="gst_sdp_message_times_len">
+ <doc xml:space="preserve">Get the number of time information entries in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of time information entries in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="uninit" c:identifier="gst_sdp_message_uninit">
+ <doc xml:space="preserve">Free all resources allocated in @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was allocated on the
+stack and initialized with gst_sdp_message_init().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="zones_len" c:identifier="gst_sdp_message_zones_len">
+ <doc xml:space="preserve">Get the number of time zone information entries in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of time zone information entries in @msg.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <function name="as_uri" c:identifier="gst_sdp_message_as_uri">
+ <doc xml:space="preserve">Creates a uri from @msg with the given @scheme. The uri has the format:
+
+ \@scheme:///[#type=value *[&amp;type=value]]
+
+ Where each value is url encoded.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a uri for @msg.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="scheme" transfer-ownership="none">
+ <doc xml:space="preserve">the uri scheme</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="new" c:identifier="gst_sdp_message_new">
+ <doc xml:space="preserve">Allocate a new GstSDPMessage and store the result in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_buffer"
+ c:identifier="gst_sdp_message_parse_buffer">
+ <doc xml:space="preserve">Parse the contents of @size bytes pointed to by @data and store the result in
+@msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK on success.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the buffer</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the result #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="parse_uri" c:identifier="gst_sdp_message_parse_uri">
+ <doc xml:space="preserve">Parse the null-terminated @uri and store the result in @msg.
+
+The uri should be of the form:
+
+ scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname]
+ [#type=value *[&amp;type=value]]
+
+ where value is url encoded. This looslely resembles
+ http://tools.ietf.org/html/draft-fujikawa-sdp-url-01</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK on success.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the uri</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the result #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="SDPOrigin" c:type="GstSDPOrigin">
+ <doc xml:space="preserve">The contents of the SDP "o=" field which gives the originator of the session
+(their username and the address of the user's host) plus a session id and
+session version number.</doc>
+ <field name="username" writable="1">
+ <doc xml:space="preserve">the user's login on the originating host, or it is "-"
+ if the originating host does not support the concept of user ids.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="sess_id" writable="1">
+ <doc xml:space="preserve">is a numeric string such that the tuple of @username, @sess_id,
+ @nettype, @addrtype and @addr form a globally unique identifier for the
+ session.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="sess_version" writable="1">
+ <doc xml:space="preserve">a version number for this announcement</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="nettype" writable="1">
+ <doc xml:space="preserve">the type of network. "IN" is defined to have the meaning
+ "Internet".</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="addrtype" writable="1">
+ <doc xml:space="preserve">the type of @addr.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="addr" writable="1">
+ <doc xml:space="preserve">the globally unique address of the machine from which the session was
+ created.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ </record>
+ <enumeration name="SDPResult" c:type="GstSDPResult">
+ <doc xml:space="preserve">Return values for the SDP functions.</doc>
+ <member name="ok" value="0" c:identifier="GST_SDP_OK">
+ <doc xml:space="preserve">A successful return value</doc>
+ </member>
+ <member name="einval" value="-1" c:identifier="GST_SDP_EINVAL">
+ <doc xml:space="preserve">a function was given invalid parameters</doc>
+ </member>
+ </enumeration>
+ <record name="SDPTime" c:type="GstSDPTime">
+ <doc xml:space="preserve">The contents of the SDP "t=" field which specify the start and stop times for
+a conference session.</doc>
+ <field name="start" writable="1">
+ <doc xml:space="preserve">start time for the conference. The value is the decimal
+ representation of Network Time Protocol (NTP) time values in seconds</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="stop" writable="1">
+ <doc xml:space="preserve">stop time for the conference. The value is the decimal
+ representation of Network Time Protocol (NTP) time values in seconds</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="repeat" writable="1">
+ <doc xml:space="preserve">repeat times for a session</doc>
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="clear" c:identifier="gst_sdp_time_clear" version="1.2">
+ <doc xml:space="preserve">Reset the time information in @t.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="t" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPTime</doc>
+ <type name="SDPTime" c:type="GstSDPTime*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_sdp_time_set" version="1.2">
+ <doc xml:space="preserve">Set time information @start, @stop and @repeat in @t.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="t" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPTime</doc>
+ <type name="SDPTime" c:type="GstSDPTime*"/>
+ </instance-parameter>
+ <parameter name="start" transfer-ownership="none">
+ <doc xml:space="preserve">the start time</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="stop" transfer-ownership="none">
+ <doc xml:space="preserve">the stop time</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="repeat" transfer-ownership="none">
+ <doc xml:space="preserve">the repeat times</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="SDPZone" c:type="GstSDPZone">
+ <doc xml:space="preserve">The contents of the SDP "z=" field which allows the sender to
+specify a list of time zone adjustments and offsets from the base
+time.</doc>
+ <field name="time" writable="1">
+ <doc xml:space="preserve">the NTP time that a time zone adjustment happens</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="typed_time" writable="1">
+ <doc xml:space="preserve">the offset from the time when the session was first scheduled</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <method name="clear" c:identifier="gst_sdp_zone_clear" version="1.2">
+ <doc xml:space="preserve">Reset the zone information in @zone.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="zone" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPZone</doc>
+ <type name="SDPZone" c:type="GstSDPZone*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set" c:identifier="gst_sdp_zone_set" version="1.2">
+ <doc xml:space="preserve">Set zone information in @zone.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="zone" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPZone</doc>
+ <type name="SDPZone" c:type="GstSDPZone*"/>
+ </instance-parameter>
+ <parameter name="adj_time" transfer-ownership="none">
+ <doc xml:space="preserve">the NTP time that a time zone adjustment happens</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="typed_time" transfer-ownership="none">
+ <doc xml:space="preserve">the offset from the time when the session was first scheduled</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <constant name="SDP_BWTYPE_AS" value="AS" c:type="GST_SDP_BWTYPE_AS">
+ <doc xml:space="preserve">The Application-Specific Maximum bandwidth modifier.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SDP_BWTYPE_CT" value="CT" c:type="GST_SDP_BWTYPE_CT">
+ <doc xml:space="preserve">The Conference Total bandwidth modifier.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SDP_BWTYPE_EXT_PREFIX"
+ value="X-"
+ c:type="GST_SDP_BWTYPE_EXT_PREFIX">
+ <doc xml:space="preserve">The extension prefix bandwidth modifier.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SDP_BWTYPE_RR" value="RR" c:type="GST_SDP_BWTYPE_RR">
+ <doc xml:space="preserve">RTCP bandwidth allocated to data receivers (RFC 3556).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SDP_BWTYPE_RS" value="RS" c:type="GST_SDP_BWTYPE_RS">
+ <doc xml:space="preserve">RTCP bandwidth allocated to active data senders (RFC 3556).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="SDP_BWTYPE_TIAS" value="TIAS" c:type="GST_SDP_BWTYPE_TIAS">
+ <doc xml:space="preserve">Transport Independent Application Specific Maximum bandwidth (RFC 3890).</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <function name="sdp_address_is_multicast"
+ c:identifier="gst_sdp_address_is_multicast">
+ <doc xml:space="preserve">Check if the given @addr is a multicast address.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE when @addr is multicast.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="nettype" transfer-ownership="none">
+ <doc xml:space="preserve">a network type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addrtype" transfer-ownership="none">
+ <doc xml:space="preserve">an address type</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="addr" transfer-ownership="none">
+ <doc xml:space="preserve">an address</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_make_keymgmt"
+ c:identifier="gst_sdp_make_keymgmt"
+ version="1.8">
+ <doc xml:space="preserve">Makes key management data</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #gchar key-mgmt data,</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar URI</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="base64" transfer-ownership="none">
+ <doc xml:space="preserve">a #gchar base64-encoded key data</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_media_new"
+ c:identifier="gst_sdp_media_new"
+ moved-to="SDPMedia.new">
+ <doc xml:space="preserve">Allocate a new GstSDPMedia and store the result in @media.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="media"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_media_set_media_from_caps"
+ c:identifier="gst_sdp_media_set_media_from_caps"
+ moved-to="SDPMedia.set_media_from_caps"
+ version="1.8">
+ <doc xml:space="preserve">Mapping of caps to SDP fields:
+
+a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...
+
+a=rtcp-fb:(payload) (param1) [param2]...</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ <parameter name="media" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPMedia</doc>
+ <type name="SDPMedia" c:type="GstSDPMedia*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_message_as_uri"
+ c:identifier="gst_sdp_message_as_uri"
+ moved-to="SDPMessage.as_uri">
+ <doc xml:space="preserve">Creates a uri from @msg with the given @scheme. The uri has the format:
+
+ \@scheme:///[#type=value *[&amp;type=value]]
+
+ Where each value is url encoded.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a uri for @msg.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="scheme" transfer-ownership="none">
+ <doc xml:space="preserve">the uri scheme</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="const GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_message_new"
+ c:identifier="gst_sdp_message_new"
+ moved-to="SDPMessage.new">
+ <doc xml:space="preserve">Allocate a new GstSDPMessage and store the result in @msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSDPResult.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to new #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_message_parse_buffer"
+ c:identifier="gst_sdp_message_parse_buffer"
+ moved-to="SDPMessage.parse_buffer">
+ <doc xml:space="preserve">Parse the contents of @size bytes pointed to by @data and store the result in
+@msg.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK on success.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the buffer</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">the size of the buffer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the result #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="sdp_message_parse_uri"
+ c:identifier="gst_sdp_message_parse_uri"
+ moved-to="SDPMessage.parse_uri">
+ <doc xml:space="preserve">Parse the null-terminated @uri and store the result in @msg.
+
+The uri should be of the form:
+
+ scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname]
+ [#type=value *[&amp;type=value]]
+
+ where value is url encoded. This looslely resembles
+ http://tools.ietf.org/html/draft-fujikawa-sdp-url-01</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">#GST_SDP_OK on success.</doc>
+ <type name="SDPResult" c:type="GstSDPResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="uri" transfer-ownership="none">
+ <doc xml:space="preserve">the start of the uri</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">the result #GstSDPMessage</doc>
+ <type name="SDPMessage" c:type="GstSDPMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstTag-1.0.gir b/girs/GstTag-1.0.gir
new file mode 100644
index 0000000000..4307b88cdd
--- /dev/null
+++ b/girs/GstTag-1.0.gir
@@ -0,0 +1,1846 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <package name="gstreamer-tag-1.0"/>
+ <c:include name="gst/tag/tag.h"/>
+ <namespace name="GstTag"
+ version="1.0"
+ shared-library="libgsttag-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <constant name="TAG_CAPTURING_CONTRAST"
+ value="capturing-contrast"
+ c:type="GST_TAG_CAPTURING_CONTRAST">
+ <doc xml:space="preserve">Direction of contrast processing applied when capturing an image. (string)
+
+The allowed values are:
+ "normal"
+ "soft"
+ "hard"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_DIGITAL_ZOOM_RATIO"
+ value="capturing-digital-zoom-ratio"
+ c:type="GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO">
+ <doc xml:space="preserve">Digital zoom ratio used when capturing an image. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_EXPOSURE_COMPENSATION"
+ value="capturing-exposure-compensation"
+ c:type="GST_TAG_CAPTURING_EXPOSURE_COMPENSATION">
+ <doc xml:space="preserve">Exposure compensation using when capturing an image in EV. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_EXPOSURE_MODE"
+ value="capturing-exposure-mode"
+ c:type="GST_TAG_CAPTURING_EXPOSURE_MODE">
+ <doc xml:space="preserve">Exposure mode used when capturing an image. (string)
+
+The allowed values are:
+ "auto-exposure"
+ "manual-exposure"
+ "auto-bracket"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_EXPOSURE_PROGRAM"
+ value="capturing-exposure-program"
+ c:type="GST_TAG_CAPTURING_EXPOSURE_PROGRAM">
+ <doc xml:space="preserve">Type of exposure control used when capturing an image. (string)
+
+The allowed values are:
+ "undefined"
+ "manual"
+ "normal" - automatically controlled
+ "aperture-priority" - user selects aperture value
+ "shutter-priority" - user selects shutter speed
+ "creative" - biased towards depth of field
+ "action" - biased towards fast shutter speed
+ "portrait" - closeup, leaving background out of focus
+ "landscape" - landscape photos, background in focus</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_FLASH_FIRED"
+ value="capturing-flash-fired"
+ c:type="GST_TAG_CAPTURING_FLASH_FIRED">
+ <doc xml:space="preserve">If flash was fired during the capture of an image. (boolean)
+
+Note that if this tag isn't present, it should not be assumed that
+the flash did not fire. It should be treated as unknown.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_FLASH_MODE"
+ value="capturing-flash-mode"
+ c:type="GST_TAG_CAPTURING_FLASH_MODE">
+ <doc xml:space="preserve">The flash mode selected during the capture of an image. (string)
+
+The allowed values are:
+ "auto"
+ "always"
+ "never"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_FOCAL_LENGTH"
+ value="capturing-focal-length"
+ c:type="GST_TAG_CAPTURING_FOCAL_LENGTH">
+ <doc xml:space="preserve">Focal length used when capturing an image, in mm. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_FOCAL_LENGTH_35_MM"
+ value="capturing-focal-length-35mm"
+ c:type="GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM"
+ version="1.10">
+ <doc xml:space="preserve">35 mm equivalent focal length used when capturing an image, in mm. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_FOCAL_RATIO"
+ value="capturing-focal-ratio"
+ c:type="GST_TAG_CAPTURING_FOCAL_RATIO">
+ <doc xml:space="preserve">Focal ratio (f-number) used when capturing an image. (double)
+
+The value stored is the denominator of the focal ratio (f-number).
+For example, if this tag value is 2, the focal ratio is f/2.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_GAIN_ADJUSTMENT"
+ value="capturing-gain-adjustment"
+ c:type="GST_TAG_CAPTURING_GAIN_ADJUSTMENT">
+ <doc xml:space="preserve">Gain adjustment applied to an image. (string)
+
+The allowed values are:
+ "none"
+ "low-gain-up"
+ "high-gain-up"
+ "low-gain-down"
+ "high-gain-down"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_ISO_SPEED"
+ value="capturing-iso-speed"
+ c:type="GST_TAG_CAPTURING_ISO_SPEED">
+ <doc xml:space="preserve">ISO speed used when capturing an image. (integer)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_METERING_MODE"
+ value="capturing-metering-mode"
+ c:type="GST_TAG_CAPTURING_METERING_MODE">
+ <doc xml:space="preserve">Defines the way a camera determines the exposure. (string)
+
+The allowed values are:
+ "unknown"
+ "average"
+ "center-weighted-average"
+ "spot"
+ "multi-spot"
+ "pattern"
+ "partial"
+ "other"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_SATURATION"
+ value="capturing-saturation"
+ c:type="GST_TAG_CAPTURING_SATURATION">
+ <doc xml:space="preserve">Direction of saturation processing applied when capturing an image. (string)
+
+The allowed values are:
+ "normal"
+ "low-saturation"
+ "high-saturation"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_SCENE_CAPTURE_TYPE"
+ value="capturing-scene-capture-type"
+ c:type="GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE">
+ <doc xml:space="preserve">Scene mode used when capturing an image. (string)
+
+The allowed values are:
+ "standard"
+ "landscape"
+ "portrait"
+ "night-scene"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_SHARPNESS"
+ value="capturing-sharpness"
+ c:type="GST_TAG_CAPTURING_SHARPNESS">
+ <doc xml:space="preserve">Direction of sharpness processing applied when capturing an image. (string)
+
+The allowed values are:
+ "normal"
+ "soft"
+ "hard"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_SHUTTER_SPEED"
+ value="capturing-shutter-speed"
+ c:type="GST_TAG_CAPTURING_SHUTTER_SPEED">
+ <doc xml:space="preserve">Shutter speed used when capturing an image, in seconds. (fraction)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_SOURCE"
+ value="capturing-source"
+ c:type="GST_TAG_CAPTURING_SOURCE">
+ <doc xml:space="preserve">Indicates the source of capture. The device/medium used to do the
+capture. (string)
+
+Allowed values are:
+ "dsc" (= digital still camera)
+ "transparent-scanner"
+ "reflex-scanner"
+ "other"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CAPTURING_WHITE_BALANCE"
+ value="capturing-white-balance"
+ c:type="GST_TAG_CAPTURING_WHITE_BALANCE">
+ <doc xml:space="preserve">White balance mode used when capturing an image. (string)
+
+The allowed values are:
+ "auto"
+ "manual"
+ "daylight"
+ "cloudy"
+ "tungsten"
+ "fluorescent"
+ "fluorescent h" (newer daylight-calibrated fluorescents)
+ "flash"</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CDDA_CDDB_DISCID"
+ value="discid"
+ c:type="GST_TAG_CDDA_CDDB_DISCID">
+ <doc xml:space="preserve">CDDB disc id in its short form (e.g. 'aa063d0f')</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CDDA_CDDB_DISCID_FULL"
+ value="discid-full"
+ c:type="GST_TAG_CDDA_CDDB_DISCID_FULL">
+ <doc xml:space="preserve">CDDB disc id including all details</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CDDA_MUSICBRAINZ_DISCID"
+ value="musicbrainz-discid"
+ c:type="GST_TAG_CDDA_MUSICBRAINZ_DISCID">
+ <doc xml:space="preserve">Musicbrainz disc id (e.g. 'ahg7JUcfR3vCYBphSDIogOOWrr0-')</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CDDA_MUSICBRAINZ_DISCID_FULL"
+ value="musicbrainz-discid-full"
+ c:type="GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL">
+ <doc xml:space="preserve">Musicbrainz disc id details</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CMML_CLIP"
+ value="cmml-clip"
+ c:type="GST_TAG_CMML_CLIP">
+ <doc xml:space="preserve">Annodex CMML clip element tag</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CMML_HEAD"
+ value="cmml-head"
+ c:type="GST_TAG_CMML_HEAD">
+ <doc xml:space="preserve">Annodex CMML head element tag</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_CMML_STREAM"
+ value="cmml-stream"
+ c:type="GST_TAG_CMML_STREAM">
+ <doc xml:space="preserve">Annodex CMML stream element tag</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_ID3V2_HEADER_SIZE"
+ value="10"
+ c:type="GST_TAG_ID3V2_HEADER_SIZE">
+ <doc xml:space="preserve">ID3V2 header size considered minimum input for some functions such as
+gst_tag_list_from_id3v2_tag() and gst_tag_get_id3v2_tag_size() for example.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="TAG_IMAGE_HORIZONTAL_PPI"
+ value="image-horizontal-ppi"
+ c:type="GST_TAG_IMAGE_HORIZONTAL_PPI">
+ <doc xml:space="preserve">Media (image/video) intended horizontal pixel density in ppi. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_IMAGE_VERTICAL_PPI"
+ value="image-vertical-ppi"
+ c:type="GST_TAG_IMAGE_VERTICAL_PPI">
+ <doc xml:space="preserve">Media (image/video) intended vertical pixel density in ppi. (double)</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICAL_KEY"
+ value="musical-key"
+ c:type="GST_TAG_MUSICAL_KEY"
+ version="1.2">
+ <doc xml:space="preserve">Musical key in which the sound starts. It is represented as a string
+with a maximum length of three characters. The ground keys are
+represented with "A","B","C","D","E", "F" and "G" and halfkeys
+represented with "b" and "#". Minor is represented as "m" (e.g. "Dbm").
+Off key is represented with an "o" only.
+This notation might be extended in the future to support non-minor/major
+keys.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICBRAINZ_ALBUMARTISTID"
+ value="musicbrainz-albumartistid"
+ c:type="GST_TAG_MUSICBRAINZ_ALBUMARTISTID">
+ <doc xml:space="preserve">MusicBrainz album artist ID</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICBRAINZ_ALBUMID"
+ value="musicbrainz-albumid"
+ c:type="GST_TAG_MUSICBRAINZ_ALBUMID">
+ <doc xml:space="preserve">MusicBrainz album ID</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICBRAINZ_ARTISTID"
+ value="musicbrainz-artistid"
+ c:type="GST_TAG_MUSICBRAINZ_ARTISTID">
+ <doc xml:space="preserve">MusicBrainz artist ID</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICBRAINZ_TRACKID"
+ value="musicbrainz-trackid"
+ c:type="GST_TAG_MUSICBRAINZ_TRACKID">
+ <doc xml:space="preserve">MusicBrainz track ID</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="TAG_MUSICBRAINZ_TRMID"
+ value="musicbrainz-trmid"
+ c:type="GST_TAG_MUSICBRAINZ_TRMID">
+ <doc xml:space="preserve">MusicBrainz track TRM ID</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <class name="TagDemux"
+ c:symbol-prefix="tag_demux"
+ c:type="GstTagDemux"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstTagDemux"
+ glib:get-type="gst_tag_demux_get_type"
+ glib:type-struct="TagDemuxClass">
+ <doc xml:space="preserve">Provides a base class for demuxing tags at the beginning or end of a
+stream and handles things like typefinding, querying, seeking, and
+different modes of operation (chain-based, pull_range-based, and providing
+downstream elements with random access if upstream supports that). The tag
+is stripped from the output, and all offsets are adjusted for the tag
+sizes, so that to the downstream element the stream will appear as if
+there was no tag at all. Also, once the tag has been parsed, GstTagDemux
+will try to determine the media type of the resulting stream and add a
+source pad with the appropriate caps in order to facilitate auto-plugging.
+
+## Deriving from GstTagDemux
+
+Subclasses have to do four things:
+
+ * In their base init function, they must add a pad template for the sink
+ pad to the element class, describing the media type they can parse in
+ the caps of the pad template.
+ * In their class init function, they must override
+ GST_TAG_DEMUX_CLASS(demux_klass)-&gt;identify_tag with their own identify
+ function.
+ * In their class init function, they must override
+ GST_TAG_DEMUX_CLASS(demux_klass)-&gt;parse_tag with their own parse
+ function.
+ * In their class init function, they must also set
+ GST_TAG_DEMUX_CLASS(demux_klass)-&gt;min_start_size and/or
+ GST_TAG_DEMUX_CLASS(demux_klass)-&gt;min_end_size to the minimum size required
+ for the identify function to decide whether the stream has a supported tag
+ or not. A class parsing ID3v1 tags, for example, would set min_end_size to
+ 128 bytes.</doc>
+ <virtual-method name="identify_tag">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start_tag" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="tag_size" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="merge_tags">
+ <return-value transfer-ownership="full">
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </instance-parameter>
+ <parameter name="start_tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="end_tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="parse_tag">
+ <return-value transfer-ownership="none">
+ <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </instance-parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start_tag" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="tag_size" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="GstTagList**"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="element">
+ <doc xml:space="preserve">parent element</doc>
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TagDemuxPrivate" c:type="GstTagDemuxPrivate*"/>
+ </field>
+ <field name="reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TagDemuxClass"
+ c:type="GstTagDemuxClass"
+ glib:is-gtype-struct-for="TagDemux">
+ <doc xml:space="preserve">The #GstTagDemuxClass structure. See documentation at beginning of section
+for details about what subclasses need to override and do.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class.</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="min_start_size">
+ <doc xml:space="preserve">minimum size required to identify a tag at the start and
+determine its total size. Set to 0 if not interested in start tags.
+Subclasses should set this in their class_init function.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="min_end_size">
+ <doc xml:space="preserve">minimum size required to identify a tag at the end and
+determine its total size. Set to 0 if not interested in end tags.
+Subclasses should set this in their class_init function.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="identify_tag">
+ <callback name="identify_tag">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start_tag" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="tag_size" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="parse_tag">
+ <callback name="parse_tag">
+ <return-value transfer-ownership="none">
+ <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+ </return-value>
+ <parameters>
+ <parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="start_tag" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="tag_size" transfer-ownership="none">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="GstTagList**"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="merge_tags">
+ <callback name="merge_tags">
+ <return-value transfer-ownership="full">
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="demux" transfer-ownership="none">
+ <type name="TagDemux" c:type="GstTagDemux*"/>
+ </parameter>
+ <parameter name="start_tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="end_tags" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TagDemuxPrivate" c:type="GstTagDemuxPrivate" disguised="1">
+ </record>
+ <enumeration name="TagDemuxResult"
+ glib:type-name="GstTagDemuxResult"
+ glib:get-type="gst_tag_demux_result_get_type"
+ c:type="GstTagDemuxResult">
+ <doc xml:space="preserve">Result values from the parse_tag virtual function.</doc>
+ <member name="broken_tag"
+ value="0"
+ c:identifier="GST_TAG_DEMUX_RESULT_BROKEN_TAG"
+ glib:nick="broken-tag">
+ <doc xml:space="preserve">cannot parse tag, just skip it</doc>
+ </member>
+ <member name="again"
+ value="1"
+ c:identifier="GST_TAG_DEMUX_RESULT_AGAIN"
+ glib:nick="again">
+ <doc xml:space="preserve">call again with less or more data</doc>
+ </member>
+ <member name="ok"
+ value="2"
+ c:identifier="GST_TAG_DEMUX_RESULT_OK"
+ glib:nick="ok">
+ <doc xml:space="preserve">parsed tag successfully</doc>
+ </member>
+ </enumeration>
+ <enumeration name="TagImageType"
+ glib:type-name="GstTagImageType"
+ glib:get-type="gst_tag_image_type_get_type"
+ c:type="GstTagImageType">
+ <doc xml:space="preserve">Type of image contained in an image tag (specified as "image-type" field in
+the info structure in the image's #GstSample)</doc>
+ <member name="none"
+ value="-1"
+ c:identifier="GST_TAG_IMAGE_TYPE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No image type. Can be used to
+ tell functions such as gst_tag_image_data_to_image_sample() that no
+ image type should be set.</doc>
+ </member>
+ <member name="undefined"
+ value="0"
+ c:identifier="GST_TAG_IMAGE_TYPE_UNDEFINED"
+ glib:nick="undefined">
+ <doc xml:space="preserve">Undefined/other image type</doc>
+ </member>
+ <member name="front_cover"
+ value="1"
+ c:identifier="GST_TAG_IMAGE_TYPE_FRONT_COVER"
+ glib:nick="front-cover">
+ <doc xml:space="preserve">Cover (front)</doc>
+ </member>
+ <member name="back_cover"
+ value="2"
+ c:identifier="GST_TAG_IMAGE_TYPE_BACK_COVER"
+ glib:nick="back-cover">
+ <doc xml:space="preserve">Cover (back)</doc>
+ </member>
+ <member name="leaflet_page"
+ value="3"
+ c:identifier="GST_TAG_IMAGE_TYPE_LEAFLET_PAGE"
+ glib:nick="leaflet-page">
+ <doc xml:space="preserve">Leaflet page</doc>
+ </member>
+ <member name="medium"
+ value="4"
+ c:identifier="GST_TAG_IMAGE_TYPE_MEDIUM"
+ glib:nick="medium">
+ <doc xml:space="preserve">Medium (e.g. label side of CD)</doc>
+ </member>
+ <member name="lead_artist"
+ value="5"
+ c:identifier="GST_TAG_IMAGE_TYPE_LEAD_ARTIST"
+ glib:nick="lead-artist">
+ <doc xml:space="preserve">Lead artist/lead performer/soloist</doc>
+ </member>
+ <member name="artist"
+ value="6"
+ c:identifier="GST_TAG_IMAGE_TYPE_ARTIST"
+ glib:nick="artist">
+ <doc xml:space="preserve">Artist/performer</doc>
+ </member>
+ <member name="conductor"
+ value="7"
+ c:identifier="GST_TAG_IMAGE_TYPE_CONDUCTOR"
+ glib:nick="conductor">
+ <doc xml:space="preserve">Conductor</doc>
+ </member>
+ <member name="band_orchestra"
+ value="8"
+ c:identifier="GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA"
+ glib:nick="band-orchestra">
+ <doc xml:space="preserve">Band/orchestra</doc>
+ </member>
+ <member name="composer"
+ value="9"
+ c:identifier="GST_TAG_IMAGE_TYPE_COMPOSER"
+ glib:nick="composer">
+ <doc xml:space="preserve">Composer</doc>
+ </member>
+ <member name="lyricist"
+ value="10"
+ c:identifier="GST_TAG_IMAGE_TYPE_LYRICIST"
+ glib:nick="lyricist">
+ <doc xml:space="preserve">Lyricist/text writer</doc>
+ </member>
+ <member name="recording_location"
+ value="11"
+ c:identifier="GST_TAG_IMAGE_TYPE_RECORDING_LOCATION"
+ glib:nick="recording-location">
+ <doc xml:space="preserve">Recording location</doc>
+ </member>
+ <member name="during_recording"
+ value="12"
+ c:identifier="GST_TAG_IMAGE_TYPE_DURING_RECORDING"
+ glib:nick="during-recording">
+ <doc xml:space="preserve">During recording</doc>
+ </member>
+ <member name="during_performance"
+ value="13"
+ c:identifier="GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE"
+ glib:nick="during-performance">
+ <doc xml:space="preserve">During performance</doc>
+ </member>
+ <member name="video_capture"
+ value="14"
+ c:identifier="GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE"
+ glib:nick="video-capture">
+ <doc xml:space="preserve">Movie/video screen capture</doc>
+ </member>
+ <member name="fish"
+ value="15"
+ c:identifier="GST_TAG_IMAGE_TYPE_FISH"
+ glib:nick="fish">
+ <doc xml:space="preserve">A fish as funny as the ID3v2 spec</doc>
+ </member>
+ <member name="illustration"
+ value="16"
+ c:identifier="GST_TAG_IMAGE_TYPE_ILLUSTRATION"
+ glib:nick="illustration">
+ <doc xml:space="preserve">Illustration</doc>
+ </member>
+ <member name="band_artist_logo"
+ value="17"
+ c:identifier="GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO"
+ glib:nick="band-artist-logo">
+ <doc xml:space="preserve">Band/artist logotype</doc>
+ </member>
+ <member name="publisher_studio_logo"
+ value="18"
+ c:identifier="GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO"
+ glib:nick="publisher-studio-logo">
+ <doc xml:space="preserve">Publisher/studio logotype</doc>
+ </member>
+ </enumeration>
+ <bitfield name="TagLicenseFlags"
+ glib:type-name="GstTagLicenseFlags"
+ glib:get-type="gst_tag_license_flags_get_type"
+ c:type="GstTagLicenseFlags">
+ <doc xml:space="preserve">See http://creativecommons.org/ns for more information.</doc>
+ <member name="permits_reproduction"
+ value="1"
+ c:identifier="GST_TAG_LICENSE_PERMITS_REPRODUCTION"
+ glib:nick="permits-reproduction">
+ <doc xml:space="preserve">making multiple copies
+ is allowed</doc>
+ </member>
+ <member name="permits_distribution"
+ value="2"
+ c:identifier="GST_TAG_LICENSE_PERMITS_DISTRIBUTION"
+ glib:nick="permits-distribution">
+ <doc xml:space="preserve">distribution, public display
+ and public performance are allowed</doc>
+ </member>
+ <member name="permits_derivative_works"
+ value="4"
+ c:identifier="GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS"
+ glib:nick="permits-derivative-works">
+ <doc xml:space="preserve">distribution of derivative
+ works is allowed</doc>
+ </member>
+ <member name="permits_sharing"
+ value="8"
+ c:identifier="GST_TAG_LICENSE_PERMITS_SHARING"
+ glib:nick="permits-sharing">
+ <doc xml:space="preserve">commercial derivatives are allowed,
+ but only non-commercial distribution is allowed</doc>
+ </member>
+ <member name="requires_notice"
+ value="256"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_NOTICE"
+ glib:nick="requires-notice">
+ <doc xml:space="preserve">copyright and license notices
+ must be kept intact</doc>
+ </member>
+ <member name="requires_attribution"
+ value="512"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_ATTRIBUTION"
+ glib:nick="requires-attribution">
+ <doc xml:space="preserve">credit must be given to
+ copyright holder and/or author</doc>
+ </member>
+ <member name="requires_share_alike"
+ value="1024"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE"
+ glib:nick="requires-share-alike">
+ <doc xml:space="preserve">derivative works must be
+ licensed under the same terms or compatible terms as the original work</doc>
+ </member>
+ <member name="requires_source_code"
+ value="2048"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_SOURCE_CODE"
+ glib:nick="requires-source-code">
+ <doc xml:space="preserve">source code (the preferred
+ form for making modifications) must be provided when exercising some
+ rights granted by the license</doc>
+ </member>
+ <member name="requires_copyleft"
+ value="4096"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_COPYLEFT"
+ glib:nick="requires-copyleft">
+ <doc xml:space="preserve">derivative and combined works
+ must be licensed under specified terms, similar to those of the original
+ work</doc>
+ </member>
+ <member name="requires_lesser_copyleft"
+ value="8192"
+ c:identifier="GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT"
+ glib:nick="requires-lesser-copyleft">
+ <doc xml:space="preserve">derivative works must be
+ licensed under specified terms, with at least the same conditions as
+ the original work; combinations with the work may be licensed under
+ different terms</doc>
+ </member>
+ <member name="prohibits_commercial_use"
+ value="65536"
+ c:identifier="GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE"
+ glib:nick="prohibits-commercial-use">
+ <doc xml:space="preserve">exercising rights for
+ commercial purposes is prohibited</doc>
+ </member>
+ <member name="prohibits_high_income_nation_use"
+ value="131072"
+ c:identifier="GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE"
+ glib:nick="prohibits-high-income-nation-use">
+ <doc xml:space="preserve">use in a
+ non-developing country is prohibited</doc>
+ </member>
+ <member name="creative_commons_license"
+ value="16777216"
+ c:identifier="GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE"
+ glib:nick="creative-commons-license">
+ <doc xml:space="preserve">this license was created
+ by the Creative Commons project</doc>
+ </member>
+ <member name="free_software_foundation_license"
+ value="33554432"
+ c:identifier="GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE"
+ glib:nick="free-software-foundation-license">
+ <doc xml:space="preserve">this license was
+ created by the Free Software Foundation (FSF)</doc>
+ </member>
+ </bitfield>
+ <class name="TagMux"
+ c:symbol-prefix="tag_mux"
+ c:type="GstTagMux"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstTagMux"
+ glib:get-type="gst_tag_mux_get_type"
+ glib:type-struct="TagMuxClass">
+ <doc xml:space="preserve">Provides a base class for adding tags at the beginning or end of a
+stream.
+
+## Deriving from GstTagMux
+
+Subclasses have to do the following things:
+
+ * In their base init function, they must add pad templates for the sink
+ pad and the source pad to the element class, describing the media type
+ they accept and output in the caps of the pad template.
+ * In their class init function, they must override the
+ GST_TAG_MUX_CLASS(mux_klass)-&gt;render_start_tag and/or
+ GST_TAG_MUX_CLASS(mux_klass)-&gt;render_end_tag vfuncs and set up a render
+ function.</doc>
+ <implements name="Gst.TagSetter"/>
+ <virtual-method name="render_end_tag">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mux" transfer-ownership="none">
+ <type name="TagMux" c:type="GstTagMux*"/>
+ </instance-parameter>
+ <parameter name="tag_list" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="render_start_tag">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="mux" transfer-ownership="none">
+ <type name="TagMux" c:type="GstTagMux*"/>
+ </instance-parameter>
+ <parameter name="tag_list" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="element">
+ <doc xml:space="preserve">parent element</doc>
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="TagMuxPrivate" c:type="GstTagMuxPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="TagMuxClass"
+ c:type="GstTagMuxClass"
+ glib:is-gtype-struct-for="TagMux">
+ <doc xml:space="preserve">The #GstTagMuxClass structure. Subclasses need to override at least one
+of the two render vfuncs.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class.</doc>
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="render_start_tag">
+ <callback name="render_start_tag">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mux" transfer-ownership="none">
+ <type name="TagMux" c:type="GstTagMux*"/>
+ </parameter>
+ <parameter name="tag_list" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="render_end_tag">
+ <callback name="render_end_tag">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mux" transfer-ownership="none">
+ <type name="TagMux" c:type="GstTagMux*"/>
+ </parameter>
+ <parameter name="tag_list" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="TagMuxPrivate" c:type="GstTagMuxPrivate" disguised="1">
+ </record>
+ <interface name="TagXmpWriter"
+ c:symbol-prefix="tag_xmp_writer"
+ c:type="GstTagXmpWriter"
+ glib:type-name="GstTagXmpWriter"
+ glib:get-type="gst_tag_xmp_writer_get_type"
+ glib:type-struct="TagXmpWriterInterface">
+ <doc xml:space="preserve">This interface is implemented by elements that are able to do XMP serialization. Examples for
+such elements are #jifmux and #qtmux.
+
+Applications can use this interface to configure which XMP schemas should be used when serializing
+tags into XMP. Schemas are represented by their names, a full list of the supported schemas can be
+obtained from gst_tag_xmp_list_schemas(). By default, all schemas are used.</doc>
+ <prerequisite name="Gst.Element"/>
+ <method name="add_all_schemas"
+ c:identifier="gst_tag_xmp_writer_add_all_schemas">
+ <doc xml:space="preserve">Adds all available XMP schemas to the configuration. Meaning that
+all will be used.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagXmpWriter</doc>
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="add_schema" c:identifier="gst_tag_xmp_writer_add_schema">
+ <doc xml:space="preserve">Adds @schema to the list schemas</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagXmpWriter</doc>
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ <parameter name="schema" transfer-ownership="none">
+ <doc xml:space="preserve">the schema to be added</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="has_schema" c:identifier="gst_tag_xmp_writer_has_schema">
+ <doc xml:space="preserve">Checks if @schema is going to be used</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if it is going to be used</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagXmpWriter</doc>
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ <parameter name="schema" transfer-ownership="none">
+ <doc xml:space="preserve">the schema to test</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="remove_all_schemas"
+ c:identifier="gst_tag_xmp_writer_remove_all_schemas">
+ <doc xml:space="preserve">Removes all schemas from the list of schemas to use. Meaning that no
+XMP will be generated.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagXmpWriter</doc>
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="remove_schema"
+ c:identifier="gst_tag_xmp_writer_remove_schema">
+ <doc xml:space="preserve">Removes a schema from the list of schemas to use. Nothing is done if
+the schema wasn't in the list</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagXmpWriter</doc>
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ <parameter name="schema" transfer-ownership="none">
+ <doc xml:space="preserve">the schema to remove</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="tag_list_to_xmp_buffer"
+ c:identifier="gst_tag_xmp_writer_tag_list_to_xmp_buffer">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="config" transfer-ownership="none">
+ <type name="TagXmpWriter" c:type="GstTagXmpWriter*"/>
+ </instance-parameter>
+ <parameter name="taglist" transfer-ownership="none">
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="read_only" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="TagXmpWriterInterface"
+ c:type="GstTagXmpWriterInterface"
+ glib:is-gtype-struct-for="TagXmpWriter">
+ <field name="parent">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
+ <function name="tag_check_language_code"
+ c:identifier="gst_tag_check_language_code">
+ <doc xml:space="preserve">Check if a given string contains a known ISO 639 language code.
+
+This is useful in situations where it's not clear whether a given
+string is a language code (which should be put into a #GST_TAG_LANGUAGE_CODE
+tag) or a free-form language name descriptor (which should be put into a
+#GST_TAG_LANGUAGE_NAME tag instead).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the two- or three-letter language code in @lang_code
+ is a valid ISO-639 language code.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="lang_code" transfer-ownership="none">
+ <doc xml:space="preserve">ISO-639 language code (e.g. "deu" or "ger" or "de")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_freeform_string_to_utf8"
+ c:identifier="gst_tag_freeform_string_to_utf8">
+ <doc xml:space="preserve">Convenience function to read a string with unknown character encoding. If
+the string is already in UTF-8 encoding, it will be returned right away.
+If not it tries to detect byte-order-mark for UTF-16/32 cases and use that.
+Otherwise, the environment will be searched for a number of environment
+variables (whose names are specified in the NULL-terminated string array
+@env_vars) containing a list of character encodings to try/use. If none
+are specified, the current locale will be tried. If that also doesn't work,
+WINDOWS-1252/ISO-8859-1 is assumed (which will almost always succeed).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated string in UTF-8 encoding, or NULL</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">string data</doc>
+ <array length="1" zero-terminated="0" c:type="gchar*">
+ <type name="gchar"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">length of string data, or -1 if the string is NUL-terminated</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="env_vars" transfer-ownership="none">
+ <doc xml:space="preserve">
+ a NULL-terminated string array of environment variable names, or NULL</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_from_id3_tag" c:identifier="gst_tag_from_id3_tag">
+ <doc xml:space="preserve">Looks up the GStreamer tag for a ID3v2 tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The corresponding GStreamer tag or NULL if none exists.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="id3_tag" transfer-ownership="none">
+ <doc xml:space="preserve">ID3v2 tag to convert to GStreamer tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_from_id3_user_tag"
+ c:identifier="gst_tag_from_id3_user_tag">
+ <doc xml:space="preserve">Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in
+TXXX frame or owner in UFID frame).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The corresponding GStreamer tag or NULL if none exists.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="type" transfer-ownership="none">
+ <doc xml:space="preserve">the type of ID3v2 user tag (e.g. "TXXX" or "UDIF")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="id3_user_tag" transfer-ownership="none">
+ <doc xml:space="preserve">ID3v2 user tag to convert to GStreamer tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_from_vorbis_tag"
+ c:identifier="gst_tag_from_vorbis_tag">
+ <doc xml:space="preserve">Looks up the GStreamer tag for a vorbiscomment tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The corresponding GStreamer tag or NULL if none exists.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="vorbis_tag" transfer-ownership="none">
+ <doc xml:space="preserve">vorbiscomment tag to convert to GStreamer tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_id3v2_tag_size"
+ c:identifier="gst_tag_get_id3v2_tag_size">
+ <doc xml:space="preserve">Determines size of an ID3v2 tag on buffer containing at least ID3v2 header,
+i.e. at least #GST_TAG_ID3V2_HEADER_SIZE (10) bytes;</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">Size of tag, or 0 if header is invalid or too small.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">buffer holding ID3v2 tag (or at least the start of one)</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_language_code_iso_639_1"
+ c:identifier="gst_tag_get_language_code_iso_639_1">
+ <doc xml:space="preserve">Returns two-letter ISO-639-1 language code given a three-letter ISO-639-2
+language code or two-letter ISO-639-1 language code (both are accepted for
+convenience).
+
+Language codes are case-sensitive and expected to be lower case.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">two-letter ISO-639-1 language code string that maps to @lang_code,
+ or NULL if no mapping is known. The returned string must not be
+ modified or freed.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="lang_code" transfer-ownership="none">
+ <doc xml:space="preserve">ISO-639 language code (e.g. "deu" or "ger" or "de")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_language_code_iso_639_2B"
+ c:identifier="gst_tag_get_language_code_iso_639_2B">
+ <doc xml:space="preserve">Returns three-letter ISO-639-2 "bibliographic" language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+
+The "bibliographic" code is derived from the English name of the language
+(e.g. "ger" for German instead of "de" or "deu"). In most scenarios, the
+"terminological" codes are prefered.
+
+Language codes are case-sensitive and expected to be lower case.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">three-letter ISO-639-2 language code string that maps to @lang_code,
+ or NULL if no mapping is known. The returned string must not be
+ modified or freed.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="lang_code" transfer-ownership="none">
+ <doc xml:space="preserve">ISO-639 language code (e.g. "deu" or "ger" or "de")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_language_code_iso_639_2T"
+ c:identifier="gst_tag_get_language_code_iso_639_2T">
+ <doc xml:space="preserve">Returns three-letter ISO-639-2 "terminological" language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+
+The "terminological" code is derived from the local name of the language
+(e.g. "deu" for German instead of "ger"). In most scenarios, the
+"terminological" codes are prefered over the "bibliographic" ones.
+
+Language codes are case-sensitive and expected to be lower case.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">three-letter ISO-639-2 language code string that maps to @lang_code,
+ or NULL if no mapping is known. The returned string must not be
+ modified or freed.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="lang_code" transfer-ownership="none">
+ <doc xml:space="preserve">ISO-639 language code (e.g. "deu" or "ger" or "de")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_language_codes"
+ c:identifier="gst_tag_get_language_codes">
+ <doc xml:space="preserve">Returns a list of known language codes (in form of two-letter ISO-639-1
+codes). This is useful for UIs to build a list of available languages for
+tagging purposes (e.g. to tag an audio track appropriately in a video or
+audio editor).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">NULL-terminated string array with two-letter
+ language codes. Free with g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="tag_get_language_name"
+ c:identifier="gst_tag_get_language_name">
+ <doc xml:space="preserve">Returns the name of the language given an ISO-639 language code as
+found in a GST_TAG_LANGUAGE_CODE tag. The name will be translated
+according to the current locale (if the library was built against the
+iso-codes package, otherwise the English name will be returned).
+
+Language codes are case-sensitive and expected to be lower case.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">language name in UTF-8 format, or NULL if @language_code could
+ not be mapped to a language name. The returned string must not be
+ modified and does not need to freed; it will stay valid until the
+ application is terminated.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="language_code" transfer-ownership="none">
+ <doc xml:space="preserve">two or three-letter ISO-639 language code</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_description"
+ c:identifier="gst_tag_get_license_description">
+ <doc xml:space="preserve">Get the description of a license, which is a translated description
+of the license's main features.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the description of the license, or NULL if the license is unknown
+ or a description is not available.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_flags"
+ c:identifier="gst_tag_get_license_flags">
+ <doc xml:space="preserve">Get the flags of a license, which describe most of the features of
+a license in their most general form.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the flags of the license, or 0 if the license is unknown</doc>
+ <type name="TagLicenseFlags" c:type="GstTagLicenseFlags"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_jurisdiction"
+ c:identifier="gst_tag_get_license_jurisdiction">
+ <doc xml:space="preserve">Get the jurisdiction code of a license. This is usually a two-letter
+ISO 3166-1 alpha-2 code, but there is also the special case of Scotland,
+for which no code exists and which is thus represented as "scotland".
+
+Known jurisdictions: ar, at, au, be, bg, br, ca, ch, cl, cn, co, de,
+dk, es, fi, fr, hr, hu, il, in, it, jp, kr, mk, mt, mx, my, nl, pe, pl,
+pt, scotland, se, si, tw, uk, us, za.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the jurisdiction code of the license, or NULL if the license is
+ unknown or is not specific to a particular jurisdiction.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_nick"
+ c:identifier="gst_tag_get_license_nick">
+ <doc xml:space="preserve">Get the nick name of a license, which is a short (untranslated) string
+such as e.g. "CC BY-NC-ND 2.0 UK".</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the nick name of the license, or NULL if the license is unknown</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_title"
+ c:identifier="gst_tag_get_license_title">
+ <doc xml:space="preserve">Get the title of a license, which is a short translated description
+of the license's features (generally not very pretty though).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the title of the license, or NULL if the license is unknown or
+ no title is available.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_license_version"
+ c:identifier="gst_tag_get_license_version">
+ <doc xml:space="preserve">Get the version of a license.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the version of the license, or NULL if the license is not known or
+ has no version</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="license_ref" transfer-ownership="none">
+ <doc xml:space="preserve">a license reference string in form of a URI,
+ e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/"</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_get_licenses" c:identifier="gst_tag_get_licenses">
+ <doc xml:space="preserve">Returns a list of known license references (in form of URIs). This is
+useful for UIs to build a list of available licenses for tagging purposes
+(e.g. to tag an audio track appropriately in a video or audio editor, or
+an image in a camera application).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">NULL-terminated array of license strings. Free
+ with g_strfreev() when no longer needed.</doc>
+ <array c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="tag_id3_genre_count"
+ c:identifier="gst_tag_id3_genre_count">
+ <doc xml:space="preserve">Gets the number of ID3v1 genres that can be identified. Winamp genres are
+included.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of ID3v1 genres that can be identified</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ </function>
+ <function name="tag_id3_genre_get" c:identifier="gst_tag_id3_genre_get">
+ <doc xml:space="preserve">Gets the ID3v1 genre name for a given ID.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the genre or NULL if no genre is associated with that ID.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">ID of genre to query</doc>
+ <type name="guint" c:type="const guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_image_data_to_image_sample"
+ c:identifier="gst_tag_image_data_to_image_sample">
+ <doc xml:space="preserve">Helper function for tag-reading plugins to create a #GstSample suitable to
+add to a #GstTagList as an image tag (such as #GST_TAG_IMAGE or
+#GST_TAG_PREVIEW_IMAGE) from the encoded image data and an (optional) image
+type.
+
+Background: cover art and other images in tags are usually stored as a
+blob of binary image data, often accompanied by a MIME type or some other
+content type string (e.g. 'png', 'jpeg', 'jpg'). Sometimes there is also an
+'image type' to indicate what kind of image this is (e.g. front cover,
+back cover, artist, etc.). The image data may also be an URI to the image
+rather than the image itself.
+
+In GStreamer, image tags are #GstSample&lt;!-- --&gt;s containing the raw image
+data, with the sample caps describing the content type of the image
+(e.g. image/jpeg, image/png, text/uri-list). The sample info may contain
+an additional 'image-type' field of #GST_TYPE_TAG_IMAGE_TYPE to describe
+the type of image (front cover, back cover etc.). #GST_TAG_PREVIEW_IMAGE
+tags should not carry an image type, their type is already indicated via
+the special tag name.
+
+This function will do various checks and typefind the encoded image
+data (we can't trust the declared mime type).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a newly-allocated image sample for use in tag lists, or NULL</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="image_data" transfer-ownership="none">
+ <doc xml:space="preserve">the (encoded) image</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="image_data_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the encoded image data at @image_data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="image_type" transfer-ownership="none">
+ <doc xml:space="preserve">type of the image, or #GST_TAG_IMAGE_TYPE_UNDEFINED. Pass
+ #GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g.
+ for preview images)</doc>
+ <type name="TagImageType" c:type="GstTagImageType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_add_id3_image"
+ c:identifier="gst_tag_list_add_id3_image">
+ <doc xml:space="preserve">Adds an image from an ID3 APIC frame (or similar, such as used in FLAC)
+to the given tag list. Also see gst_tag_image_data_to_image_sample() for
+more information on image tags in GStreamer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the image was processed, otherwise %FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="tag_list" transfer-ownership="none">
+ <doc xml:space="preserve">a tag list</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="image_data" transfer-ownership="none">
+ <doc xml:space="preserve">the (encoded) image</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="image_data_len" transfer-ownership="none">
+ <doc xml:space="preserve">the length of the encoded image data at @image_data</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="id3_picture_type" transfer-ownership="none">
+ <doc xml:space="preserve">picture type as per the ID3 (v2.4.0) specification for
+ the APIC frame (0 = unknown/other)</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_exif_buffer"
+ c:identifier="gst_tag_list_from_exif_buffer">
+ <doc xml:space="preserve">Parses the IFD and IFD tags data contained in the buffer and puts it
+on a taglist. The base_offset is used to subtract from the offset in
+the tag entries and be able to get the offset relative to the buffer
+start</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The parsed taglist</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">The exif buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="byte_order" transfer-ownership="none">
+ <doc xml:space="preserve">byte order of the data</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="base_offset" transfer-ownership="none">
+ <doc xml:space="preserve">Offset from the tiff header to this buffer</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_exif_buffer_with_tiff_header"
+ c:identifier="gst_tag_list_from_exif_buffer_with_tiff_header">
+ <doc xml:space="preserve">Parses the exif tags starting with a tiff header structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The taglist</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">The exif buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_id3v2_tag"
+ c:identifier="gst_tag_list_from_id3v2_tag">
+ <doc xml:space="preserve">Creates a new tag list that contains the information parsed out of a
+ID3 tag.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstTagList with all tags that could be extracted from the
+ given vorbiscomment buffer or NULL on error.</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">buffer to convert</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_vorbiscomment"
+ c:identifier="gst_tag_list_from_vorbiscomment">
+ <doc xml:space="preserve">Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstTagList with all tags that could be extracted from the
+ given vorbiscomment buffer or NULL on error.</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">data to convert</doc>
+ <array length="1" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of @data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="id_data" transfer-ownership="none">
+ <doc xml:space="preserve">identification data at start of stream</doc>
+ <array length="3" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="id_data_length" transfer-ownership="none">
+ <doc xml:space="preserve">length of identification data</doc>
+ <type name="guint" c:type="const guint"/>
+ </parameter>
+ <parameter name="vendor_string"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a string that should take the
+ vendor string of this vorbis comment or NULL if you don't need it.</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_vorbiscomment_buffer"
+ c:identifier="gst_tag_list_from_vorbiscomment_buffer">
+ <doc xml:space="preserve">Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstTagList with all tags that could be extracted from the
+ given vorbiscomment buffer or NULL on error.</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">buffer to convert</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="id_data" transfer-ownership="none">
+ <doc xml:space="preserve">identification data at start of stream</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="id_data_length" transfer-ownership="none">
+ <doc xml:space="preserve">length of identification data</doc>
+ <type name="guint" c:type="const guint"/>
+ </parameter>
+ <parameter name="vendor_string"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to a string that should take the
+ vendor string of this vorbis comment or NULL if you don't need it.</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_from_xmp_buffer"
+ c:identifier="gst_tag_list_from_xmp_buffer">
+ <doc xml:space="preserve">Parse a xmp packet into a taglist.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">new taglist or %NULL, free the list when done</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_new_from_id3v1"
+ c:identifier="gst_tag_list_new_from_id3v1">
+ <doc xml:space="preserve">Parses the data containing an ID3v1 tag and returns a #GstTagList from the
+parsed data.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new tag list or NULL if the data was not an ID3v1 tag.</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">128 bytes of data containing the ID3v1 tag</doc>
+ <array zero-terminated="0" c:type="guint8*" fixed-size="128">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_to_exif_buffer"
+ c:identifier="gst_tag_list_to_exif_buffer">
+ <doc xml:space="preserve">Formats the tags in taglist on exif format. The resulting buffer contains
+the tags IFD and is followed by the data pointed by the tag entries.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A GstBuffer containing the tag entries followed by the tag data</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="taglist" transfer-ownership="none">
+ <doc xml:space="preserve">The taglist</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="byte_order" transfer-ownership="none">
+ <doc xml:space="preserve">byte order used in writing (G_LITTLE_ENDIAN or G_BIG_ENDIAN)</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="base_offset" transfer-ownership="none">
+ <doc xml:space="preserve">Offset from the tiff header first byte</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_to_exif_buffer_with_tiff_header"
+ c:identifier="gst_tag_list_to_exif_buffer_with_tiff_header">
+ <doc xml:space="preserve">Formats the tags in taglist into exif structure, a tiff header
+is put in the beginning of the buffer.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A GstBuffer containing the data</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="taglist" transfer-ownership="none">
+ <doc xml:space="preserve">The taglist</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_to_vorbiscomment_buffer"
+ c:identifier="gst_tag_list_to_vorbiscomment_buffer">
+ <doc xml:space="preserve">Creates a new vorbiscomment buffer from a tag list.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstBuffer containing a vorbiscomment buffer with all tags
+ that could be converted from the given tag list.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">tag list to convert</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="id_data" transfer-ownership="none">
+ <doc xml:space="preserve">identification data at start of stream</doc>
+ <array length="2" zero-terminated="0" c:type="guint8*">
+ <type name="guint8" c:type="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="id_data_length" transfer-ownership="none">
+ <doc xml:space="preserve">length of identification data, may be 0 if @id_data is NULL</doc>
+ <type name="guint" c:type="const guint"/>
+ </parameter>
+ <parameter name="vendor_string"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">string that describes the vendor string or NULL</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_list_to_xmp_buffer"
+ c:identifier="gst_tag_list_to_xmp_buffer">
+ <doc xml:space="preserve">Formats a taglist as a xmp packet using only the selected
+schemas. An empty list (%NULL) means that all schemas should
+be used</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">new buffer or %NULL, unref the buffer when done</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">tags</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="read_only" transfer-ownership="none">
+ <doc xml:space="preserve">does the container forbid inplace editing</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="schemas" transfer-ownership="none">
+ <doc xml:space="preserve">
+ %NULL terminated array of schemas to be used on serialization</doc>
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_parse_extended_comment"
+ c:identifier="gst_tag_parse_extended_comment">
+ <doc xml:space="preserve">Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and
+separate it into its components.
+
+If successful, @key, @lang and/or @value will be set to newly allocated
+strings that you need to free with g_free() when done. @key and @lang
+may also be set to NULL by this function if there is no key or no language
+code in the extended comment string.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the string could be parsed, otherwise FALSE</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="ext_comment" transfer-ownership="none">
+ <doc xml:space="preserve">an extended comment string, see #GST_TAG_EXTENDED_COMMENT</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="key"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1">
+ <doc xml:space="preserve">
+ return location for the comment description key, or NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="lang"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1">
+ <doc xml:space="preserve">
+ return location for the comment ISO-639 language code, or NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the actual comment string, or NULL</doc>
+ <type name="utf8" c:type="gchar**"/>
+ </parameter>
+ <parameter name="fail_if_no_key" transfer-ownership="none">
+ <doc xml:space="preserve">whether to fail if strings are not in key=value form</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_register_musicbrainz_tags"
+ c:identifier="gst_tag_register_musicbrainz_tags">
+ <doc xml:space="preserve">Registers additional musicbrainz-specific tags with the GStreamer tag
+system. Plugins and applications that use these tags should call this
+function before using them. Can be called multiple times.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="tag_to_id3_tag" c:identifier="gst_tag_to_id3_tag">
+ <doc xml:space="preserve">Looks up the ID3v2 tag for a GStreamer tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The corresponding ID3v2 tag or NULL if none exists.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="gst_tag" transfer-ownership="none">
+ <doc xml:space="preserve">GStreamer tag to convert to vorbiscomment tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_to_vorbis_comments"
+ c:identifier="gst_tag_to_vorbis_comments">
+ <doc xml:space="preserve">Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A #GList of newly-allocated
+ key=value strings. Free with g_list_foreach (list, (GFunc) g_free, NULL)
+ plus g_list_free (list)</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">a GStreamer tag identifier, such as #GST_TAG_ARTIST</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_to_vorbis_tag" c:identifier="gst_tag_to_vorbis_tag">
+ <doc xml:space="preserve">Looks up the vorbiscomment tag for a GStreamer tag.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The corresponding vorbiscomment tag or NULL if none exists.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="gst_tag" transfer-ownership="none">
+ <doc xml:space="preserve">GStreamer tag to convert to vorbiscomment tag</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="tag_xmp_list_schemas"
+ c:identifier="gst_tag_xmp_list_schemas">
+ <doc xml:space="preserve">Gets the list of supported schemas in the xmp lib</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a %NULL terminated array of strings with the
+ schema names</doc>
+ <array c:type="const gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="vorbis_tag_add" c:identifier="gst_vorbis_tag_add">
+ <doc xml:space="preserve">Convenience function using gst_tag_from_vorbis_tag(), parsing
+a vorbis comment string into the right type and adding it to the
+given taglist @list.
+
+Unknown vorbiscomment tags will be added to the tag list in form
+of a #GST_TAG_EXTENDED_COMMENT.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstTagList</doc>
+ <type name="Gst.TagList" c:type="GstTagList*"/>
+ </parameter>
+ <parameter name="tag" transfer-ownership="none">
+ <doc xml:space="preserve">a vorbiscomment tag string (key in key=value), must be valid UTF-8</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">a vorbiscomment value string (value in key=value), must be valid UTF-8</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/girs/GstVideo-1.0.gir b/girs/GstVideo-1.0.gir
new file mode 100644
index 0000000000..7deaa9a541
--- /dev/null
+++ b/girs/GstVideo-1.0.gir
@@ -0,0 +1,13807 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gst" version="1.0"/>
+ <include name="GstBase" version="1.0"/>
+ <package name="gstreamer-video-1.0"/>
+ <c:include name="gst/video/video.h"/>
+ <namespace name="GstVideo"
+ version="1.0"
+ shared-library="libgstvideo-1.0.so.0"
+ c:identifier-prefixes="Gst"
+ c:symbol-prefixes="gst">
+ <constant name="BUFFER_POOL_OPTION_VIDEO_AFFINE_TRANSFORMATION_META"
+ value="GstBufferPoolOptionVideoAffineTransformation"
+ c:type="GST_BUFFER_POOL_OPTION_VIDEO_AFFINE_TRANSFORMATION_META">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="BUFFER_POOL_OPTION_VIDEO_ALIGNMENT"
+ value="GstBufferPoolOptionVideoAlignment"
+ c:type="GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT">
+ <doc xml:space="preserve">A bufferpool option to enable extra padding. When a bufferpool supports this
+option, gst_buffer_pool_config_set_video_alignment() can be called.
+
+When this option is enabled on the bufferpool,
+#GST_BUFFER_POOL_OPTION_VIDEO_META should also be enabled.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META"
+ value="GstBufferPoolOptionVideoGLTextureUploadMeta"
+ c:type="GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META"
+ version="1.2.2">
+ <doc xml:space="preserve">An option that can be activated on a bufferpool to request gl texture upload
+meta on buffers from the pool.
+
+When this option is enabled on the bufferpool,
+@GST_BUFFER_POOL_OPTION_VIDEO_META should also be enabled.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="BUFFER_POOL_OPTION_VIDEO_META"
+ value="GstBufferPoolOptionVideoMeta"
+ c:type="GST_BUFFER_POOL_OPTION_VIDEO_META">
+ <doc xml:space="preserve">An option that can be activated on bufferpool to request video metadata
+on buffers from the pool.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META"
+ value="meta:GstVideoAffineTransformation"
+ c:type="GST_CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META"
+ value="meta:GstVideoGLTextureUploadMeta"
+ c:type="GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="CAPS_FEATURE_META_GST_VIDEO_META"
+ value="meta:GstVideoMeta"
+ c:type="GST_CAPS_FEATURE_META_GST_VIDEO_META">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION"
+ value="meta:GstVideoOverlayComposition"
+ c:type="GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <interface name="ColorBalance"
+ c:symbol-prefix="color_balance"
+ c:type="GstColorBalance"
+ glib:type-name="GstColorBalance"
+ glib:get-type="gst_color_balance_get_type"
+ glib:type-struct="ColorBalanceInterface">
+ <doc xml:space="preserve">This interface is implemented by elements which can perform some color
+balance operation on video frames they process. For example, modifying
+the brightness, contrast, hue or saturation.
+
+Example elements are 'xvimagesink' and 'colorbalance'</doc>
+ <virtual-method name="get_balance_type" invoker="get_balance_type">
+ <doc xml:space="preserve">Get the #GstColorBalanceType of this implementation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A the #GstColorBalanceType.</doc>
+ <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstColorBalance implementation</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_value" invoker="get_value">
+ <doc xml:space="preserve">Retrieve the current value of the indicated channel, between min_value
+and max_value.
+
+See Also: The #GstColorBalanceChannel.min_value and
+ #GstColorBalanceChannel.max_value members of the
+ #GstColorBalanceChannel object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current value of the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="list_channels" invoker="list_channels">
+ <doc xml:space="preserve">Retrieve a list of the available channels.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A
+ GList containing pointers to #GstColorBalanceChannel
+ objects. The list is owned by the #GstColorBalance
+ instance and must not be freed.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="ColorBalanceChannel"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_value" invoker="set_value">
+ <doc xml:space="preserve">Sets the current value of the channel to the passed value, which must
+be between min_value and max_value.
+
+See Also: The #GstColorBalanceChannel.min_value and
+ #GstColorBalanceChannel.max_value members of the
+ #GstColorBalanceChannel object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value for the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="value_changed" invoker="value_changed">
+ <doc xml:space="preserve">A helper function called by implementations of the GstColorBalance
+interface. It fires the #GstColorBalance::value-changed signal on the
+instance, and the #GstColorBalanceChannel::value-changed signal on the
+channel object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel whose value has changed</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value of the channel</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_balance_type"
+ c:identifier="gst_color_balance_get_balance_type">
+ <doc xml:space="preserve">Get the #GstColorBalanceType of this implementation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A the #GstColorBalanceType.</doc>
+ <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstColorBalance implementation</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_value" c:identifier="gst_color_balance_get_value">
+ <doc xml:space="preserve">Retrieve the current value of the indicated channel, between min_value
+and max_value.
+
+See Also: The #GstColorBalanceChannel.min_value and
+ #GstColorBalanceChannel.max_value members of the
+ #GstColorBalanceChannel object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current value of the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="list_channels"
+ c:identifier="gst_color_balance_list_channels">
+ <doc xml:space="preserve">Retrieve a list of the available channels.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A
+ GList containing pointers to #GstColorBalanceChannel
+ objects. The list is owned by the #GstColorBalance
+ instance and must not be freed.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="ColorBalanceChannel"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_value" c:identifier="gst_color_balance_set_value">
+ <doc xml:space="preserve">Sets the current value of the channel to the passed value, which must
+be between min_value and max_value.
+
+See Also: The #GstColorBalanceChannel.min_value and
+ #GstColorBalanceChannel.max_value members of the
+ #GstColorBalanceChannel object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value for the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="value_changed"
+ c:identifier="gst_color_balance_value_changed">
+ <doc xml:space="preserve">A helper function called by implementations of the GstColorBalance
+interface. It fires the #GstColorBalance::value-changed signal on the
+instance, and the #GstColorBalanceChannel::value-changed signal on the
+channel object.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </instance-parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel whose value has changed</doc>
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value of the channel</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <glib:signal name="value-changed" when="last">
+ <doc xml:space="preserve">Fired when the value of the indicated channel has changed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstColorBalanceChannel</doc>
+ <type name="ColorBalanceChannel"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </interface>
+ <class name="ColorBalanceChannel"
+ c:symbol-prefix="color_balance_channel"
+ c:type="GstColorBalanceChannel"
+ parent="GObject.Object"
+ glib:type-name="GstColorBalanceChannel"
+ glib:get-type="gst_color_balance_channel_get_type"
+ glib:type-struct="ColorBalanceChannelClass">
+ <doc xml:space="preserve">The #GstColorBalanceChannel object represents a parameter
+for modifying the color balance implemented by an element providing the
+#GstColorBalance interface. For example, Hue or Saturation.</doc>
+ <virtual-method name="value_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="channel" transfer-ownership="none">
+ <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+ </instance-parameter>
+ <parameter name="value" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="parent">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="label">
+ <doc xml:space="preserve">A string containing a descriptive name for this channel</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </field>
+ <field name="min_value">
+ <doc xml:space="preserve">The minimum valid value for this channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="max_value">
+ <doc xml:space="preserve">The maximum valid value for this channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <glib:signal name="value-changed" when="last">
+ <doc xml:space="preserve">Fired when the value of the indicated channel has changed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="ColorBalanceChannelClass"
+ c:type="GstColorBalanceChannelClass"
+ glib:is-gtype-struct-for="ColorBalanceChannel">
+ <doc xml:space="preserve">Color-balance channel class.</doc>
+ <field name="parent">
+ <doc xml:space="preserve">the parent class</doc>
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ <field name="value_changed">
+ <callback name="value_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="channel" transfer-ownership="none">
+ <type name="ColorBalanceChannel"
+ c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="ColorBalanceInterface"
+ c:type="GstColorBalanceInterface"
+ glib:is-gtype-struct-for="ColorBalance">
+ <doc xml:space="preserve">Color-balance interface.</doc>
+ <field name="iface">
+ <doc xml:space="preserve">the parent interface</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="list_channels">
+ <callback name="list_channels">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A
+ GList containing pointers to #GstColorBalanceChannel
+ objects. The list is owned by the #GstColorBalance
+ instance and must not be freed.</doc>
+ <type name="GLib.List" c:type="const GList*">
+ <type name="ColorBalanceChannel"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_value">
+ <callback name="set_value">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel"
+ c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value for the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_value">
+ <callback name="get_value">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current value of the channel.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel instance</doc>
+ <type name="ColorBalanceChannel"
+ c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_balance_type">
+ <callback name="get_balance_type">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A the #GstColorBalanceType.</doc>
+ <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+ </return-value>
+ <parameters>
+ <parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstColorBalance implementation</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="value_changed">
+ <callback name="value_changed">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="balance" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalance instance</doc>
+ <type name="ColorBalance" c:type="GstColorBalance*"/>
+ </parameter>
+ <parameter name="channel" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstColorBalanceChannel whose value has changed</doc>
+ <type name="ColorBalanceChannel"
+ c:type="GstColorBalanceChannel*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The new value of the channel</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <enumeration name="ColorBalanceType"
+ glib:type-name="GstColorBalanceType"
+ glib:get-type="gst_color_balance_type_get_type"
+ c:type="GstColorBalanceType">
+ <doc xml:space="preserve">An enumeration indicating whether an element implements color balancing
+operations in software or in dedicated hardware. In general, dedicated
+hardware implementations (such as those provided by xvimagesink) are
+preferred.</doc>
+ <member name="hardware"
+ value="0"
+ c:identifier="GST_COLOR_BALANCE_HARDWARE"
+ glib:nick="hardware">
+ <doc xml:space="preserve">Color balance is implemented with dedicated
+ hardware.</doc>
+ </member>
+ <member name="software"
+ value="1"
+ c:identifier="GST_COLOR_BALANCE_SOFTWARE"
+ glib:nick="software">
+ <doc xml:space="preserve">Color balance is implemented via software
+ processing.</doc>
+ </member>
+ </enumeration>
+ <constant name="META_TAG_VIDEO_COLORSPACE_STR"
+ value="colorspace"
+ c:type="GST_META_TAG_VIDEO_COLORSPACE_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata stays relevant as long as video colorspace is unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_TAG_VIDEO_ORIENTATION_STR"
+ value="orientation"
+ c:type="GST_META_TAG_VIDEO_ORIENTATION_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata stays relevant as long as video orientation is unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_TAG_VIDEO_SIZE_STR"
+ value="size"
+ c:type="GST_META_TAG_VIDEO_SIZE_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata stays relevant as long as video size is unchanged.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="META_TAG_VIDEO_STR"
+ value="video"
+ c:type="GST_META_TAG_VIDEO_STR"
+ version="1.2">
+ <doc xml:space="preserve">This metadata is relevant for video streams.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <interface name="Navigation"
+ c:symbol-prefix="navigation"
+ c:type="GstNavigation"
+ glib:type-name="GstNavigation"
+ glib:get-type="gst_navigation_get_type"
+ glib:type-struct="NavigationInterface">
+ <doc xml:space="preserve">The Navigation interface is used for creating and injecting navigation related
+events such as mouse button presses, cursor motion and key presses. The associated
+library also provides methods for parsing received events, and for sending and
+receiving navigation related bus events. One main usecase is DVD menu navigation.
+
+The main parts of the API are:
+
+* The GstNavigation interface, implemented by elements which provide an application
+ with the ability to create and inject navigation events into the pipeline.
+* GstNavigation event handling API. GstNavigation events are created in response to
+ calls on a GstNavigation interface implementation, and sent in the pipeline. Upstream
+ elements can use the navigation event API functions to parse the contents of received
+ messages.
+
+* GstNavigation message handling API. GstNavigation messages may be sent on the message
+ bus to inform applications of navigation related changes in the pipeline, such as the
+ mouse moving over a clickable region, or the set of available angles changing.
+
+The GstNavigation message functions provide functions for creating and parsing
+custom bus messages for signaling GstNavigation changes.</doc>
+ <function name="event_get_type"
+ c:identifier="gst_navigation_event_get_type">
+ <doc xml:space="preserve">Inspect a #GstEvent and return the #GstNavigationEventType of the event, or
+#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="NavigationEventType" c:type="GstNavigationEventType"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_parse_command"
+ c:identifier="gst_navigation_event_parse_command">
+ <doc xml:space="preserve">Inspect a #GstNavigation command event and retrieve the enum value of the
+associated command.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the navigation command could be extracted, otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="command"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to GstNavigationCommand to receive the
+ type of the navigation event.</doc>
+ <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_parse_key_event"
+ c:identifier="gst_navigation_event_parse_key_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="key"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a location to receive
+ the string identifying the key press. The returned string is owned by the
+ event, and valid only until the event is unreffed.</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_parse_mouse_button_event"
+ c:identifier="gst_navigation_event_parse_mouse_button_event">
+ <doc xml:space="preserve">Retrieve the details of either a #GstNavigation mouse button press event or
+a mouse button release event. Determine which type the event is using
+gst_navigation_event_get_type() to retrieve the #GstNavigationEventType.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the button number and both coordinates could be extracted,
+ otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="button"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gint that will receive the button
+ number associated with the event.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the x coordinate of the
+ mouse button event.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the y coordinate of the
+ mouse button event.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="event_parse_mouse_move_event"
+ c:identifier="gst_navigation_event_parse_mouse_move_event">
+ <doc xml:space="preserve">Inspect a #GstNavigation mouse movement event and extract the coordinates
+of the event.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if both coordinates could be extracted, otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the x coordinate of the
+ mouse movement.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the y coordinate of the
+ mouse movement.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_get_type"
+ c:identifier="gst_navigation_message_get_type">
+ <doc xml:space="preserve">Check a bus message to see if it is a #GstNavigation event, and return
+the #GstNavigationMessageType identifying the type of the message if so.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The type of the #GstMessage, or
+#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation
+notification.</doc>
+ <type name="NavigationMessageType"
+ c:type="GstNavigationMessageType"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_new_angles_changed"
+ c:identifier="gst_navigation_message_new_angles_changed">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application
+that the current angle, or current number of angles available in a
+multiangle video has changed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="cur_angle" transfer-ownership="none">
+ <doc xml:space="preserve">The currently selected angle.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_angles" transfer-ownership="none">
+ <doc xml:space="preserve">The number of viewing angles now available.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_new_commands_changed"
+ c:identifier="gst_navigation_message_new_commands_changed">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_new_event"
+ c:identifier="gst_navigation_message_new_event"
+ version="1.6">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_EVENT.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A navigation #GstEvent</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_new_mouse_over"
+ c:identifier="gst_navigation_message_new_mouse_over">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_MOUSE_OVER.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the mouse has entered a clickable area of the display.
+%FALSE if it over a non-clickable area.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_parse_angles_changed"
+ c:identifier="gst_navigation_message_parse_angles_changed">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED
+and extract the @cur_angle and @n_angles parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="cur_angle"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a #guint to receive the new
+ current angle number, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="n_angles"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a #guint to receive the new angle
+ count, or NULL.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_parse_event"
+ c:identifier="gst_navigation_message_parse_event"
+ version="1.6">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_EVENT
+and extract contained #GstEvent. The caller must unref the @event when done
+with it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="event"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a #GstEvent to receive
+ the contained navigation event.</doc>
+ <type name="Gst.Event" c:type="GstEvent**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="message_parse_mouse_over"
+ c:identifier="gst_navigation_message_parse_mouse_over">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER
+and extract the active/inactive flag. If the mouse over event is marked
+active, it indicates that the mouse is over a clickable area.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="active"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a gboolean to receive the
+ active/inactive state, or NULL.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_get_type"
+ c:identifier="gst_navigation_query_get_type">
+ <doc xml:space="preserve">Inspect a #GstQuery and return the #GstNavigationQueryType associated with
+it if it is a #GstNavigation query.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstNavigationQueryType of the query, or
+#GST_NAVIGATION_QUERY_INVALID</doc>
+ <type name="NavigationQueryType" c:type="GstNavigationQueryType"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to inspect</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_new_angles"
+ c:identifier="gst_navigation_query_new_angles">
+ <doc xml:space="preserve">Create a new #GstNavigation angles query. When executed, it will
+query the pipeline for the set of currently available angles, which may be
+greater than one in a multiangle video.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new query.</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </return-value>
+ </function>
+ <function name="query_new_commands"
+ c:identifier="gst_navigation_query_new_commands">
+ <doc xml:space="preserve">Create a new #GstNavigation commands query. When executed, it will
+query the pipeline for the set of currently available commands.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new query.</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </return-value>
+ </function>
+ <function name="query_parse_angles"
+ c:identifier="gst_navigation_query_parse_angles">
+ <doc xml:space="preserve">Parse the current angle number in the #GstNavigation angles @query into the
+#guint pointed to by the @cur_angle variable, and the number of available
+angles into the #guint pointed to by the @n_angles variable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="cur_angle"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a #guint into which to store the
+ currently selected angle value from the query, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="n_angles"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a #guint into which to store the
+ number of angles value from the query, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_parse_commands_length"
+ c:identifier="gst_navigation_query_parse_commands_length">
+ <doc xml:space="preserve">Parse the number of commands in the #GstNavigation commands @query.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="n_cmds"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the number of commands in this query.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_parse_commands_nth"
+ c:identifier="gst_navigation_query_parse_commands_nth">
+ <doc xml:space="preserve">Parse the #GstNavigation command query and retrieve the @nth command from
+it into @cmd. If the list contains less elements than @nth, @cmd will be
+set to #GST_NAVIGATION_COMMAND_INVALID.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth command to retrieve.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="cmd"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the nth command into.</doc>
+ <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_set_angles"
+ c:identifier="gst_navigation_query_set_angles">
+ <doc xml:space="preserve">Set the #GstNavigation angles query result field in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="cur_angle" transfer-ownership="none">
+ <doc xml:space="preserve">the current viewing angle to set.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_angles" transfer-ownership="none">
+ <doc xml:space="preserve">the number of viewing angles to set.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_set_commands"
+ c:identifier="gst_navigation_query_set_commands"
+ introspectable="0">
+ <doc xml:space="preserve">Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="n_cmds" transfer-ownership="none">
+ <doc xml:space="preserve">the number of commands to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="..." transfer-ownership="none">
+ <doc xml:space="preserve">A list of @GstNavigationCommand values, @n_cmds entries long.</doc>
+ <varargs/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="query_set_commandsv"
+ c:identifier="gst_navigation_query_set_commandsv">
+ <doc xml:space="preserve">Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="n_cmds" transfer-ownership="none">
+ <doc xml:space="preserve">the number of commands to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="cmds" transfer-ownership="none">
+ <doc xml:space="preserve">An array containing @n_cmds
+ @GstNavigationCommand values.</doc>
+ <array length="1"
+ zero-terminated="0"
+ c:type="GstNavigationCommand*">
+ <type name="NavigationCommand" c:type="GstNavigationCommand"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="send_event" invoker="send_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="navigation" transfer-ownership="none">
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="send_command" c:identifier="gst_navigation_send_command">
+ <doc xml:space="preserve">Sends the indicated command to the navigation interface.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="navigation" transfer-ownership="none">
+ <doc xml:space="preserve">The navigation interface instance</doc>
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </instance-parameter>
+ <parameter name="command" transfer-ownership="none">
+ <doc xml:space="preserve">The command to issue</doc>
+ <type name="NavigationCommand" c:type="GstNavigationCommand"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send_event" c:identifier="gst_navigation_send_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="navigation" transfer-ownership="none">
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </instance-parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send_key_event"
+ c:identifier="gst_navigation_send_key_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="navigation" transfer-ownership="none">
+ <doc xml:space="preserve">The navigation interface instance</doc>
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The type of the key event. Recognised values are "key-press" and
+"key-release"</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="key" transfer-ownership="none">
+ <doc xml:space="preserve">Character representation of the key. This is typically as produced
+by XKeysymToString.</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="send_mouse_event"
+ c:identifier="gst_navigation_send_mouse_event">
+ <doc xml:space="preserve">Sends a mouse event to the navigation interface. Mouse event coordinates
+are sent relative to the display space of the related output area. This is
+usually the size in pixels of the window associated with the element
+implementing the #GstNavigation interface.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="navigation" transfer-ownership="none">
+ <doc xml:space="preserve">The navigation interface instance</doc>
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">The type of mouse event, as a text string. Recognised values are
+"mouse-button-press", "mouse-button-release" and "mouse-move".</doc>
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="button" transfer-ownership="none">
+ <doc xml:space="preserve">The button number of the button being pressed or released. Pass 0
+for mouse-move events.</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">The x coordinate of the mouse event.</doc>
+ <type name="gdouble" c:type="double"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">The y coordinate of the mouse event.</doc>
+ <type name="gdouble" c:type="double"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <enumeration name="NavigationCommand"
+ glib:type-name="GstNavigationCommand"
+ glib:get-type="gst_navigation_command_get_type"
+ c:type="GstNavigationCommand">
+ <doc xml:space="preserve">A set of commands that may be issued to an element providing the
+#GstNavigation interface. The available commands can be queried via
+the gst_navigation_query_new_commands() query.
+
+For convenience in handling DVD navigation, the MENU commands are aliased as:
+ GST_NAVIGATION_COMMAND_DVD_MENU = @GST_NAVIGATION_COMMAND_MENU1
+ GST_NAVIGATION_COMMAND_DVD_TITLE_MENU = @GST_NAVIGATION_COMMAND_MENU2
+ GST_NAVIGATION_COMMAND_DVD_ROOT_MENU = @GST_NAVIGATION_COMMAND_MENU3
+ GST_NAVIGATION_COMMAND_DVD_SUBPICTURE_MENU = @GST_NAVIGATION_COMMAND_MENU4
+ GST_NAVIGATION_COMMAND_DVD_AUDIO_MENU = @GST_NAVIGATION_COMMAND_MENU5
+ GST_NAVIGATION_COMMAND_DVD_ANGLE_MENU = @GST_NAVIGATION_COMMAND_MENU6
+ GST_NAVIGATION_COMMAND_DVD_CHAPTER_MENU = @GST_NAVIGATION_COMMAND_MENU7</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_NAVIGATION_COMMAND_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">An invalid command entry</doc>
+ </member>
+ <member name="menu1"
+ value="1"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU1"
+ glib:nick="menu1">
+ <doc xml:space="preserve">Execute navigation menu command 1. For DVD,
+this enters the DVD root menu, or exits back to the title from the menu.</doc>
+ </member>
+ <member name="menu2"
+ value="2"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU2"
+ glib:nick="menu2">
+ <doc xml:space="preserve">Execute navigation menu command 2. For DVD,
+this jumps to the DVD title menu.</doc>
+ </member>
+ <member name="menu3"
+ value="3"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU3"
+ glib:nick="menu3">
+ <doc xml:space="preserve">Execute navigation menu command 3. For DVD,
+this jumps into the DVD root menu.</doc>
+ </member>
+ <member name="menu4"
+ value="4"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU4"
+ glib:nick="menu4">
+ <doc xml:space="preserve">Execute navigation menu command 4. For DVD,
+this jumps to the Subpicture menu.</doc>
+ </member>
+ <member name="menu5"
+ value="5"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU5"
+ glib:nick="menu5">
+ <doc xml:space="preserve">Execute navigation menu command 5. For DVD,
+the jumps to the audio menu.</doc>
+ </member>
+ <member name="menu6"
+ value="6"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU6"
+ glib:nick="menu6">
+ <doc xml:space="preserve">Execute navigation menu command 6. For DVD,
+this jumps to the angles menu.</doc>
+ </member>
+ <member name="menu7"
+ value="7"
+ c:identifier="GST_NAVIGATION_COMMAND_MENU7"
+ glib:nick="menu7">
+ <doc xml:space="preserve">Execute navigation menu command 7. For DVD,
+this jumps to the chapter menu.</doc>
+ </member>
+ <member name="left"
+ value="20"
+ c:identifier="GST_NAVIGATION_COMMAND_LEFT"
+ glib:nick="left">
+ <doc xml:space="preserve">Select the next button to the left in a menu,
+if such a button exists.</doc>
+ </member>
+ <member name="right"
+ value="21"
+ c:identifier="GST_NAVIGATION_COMMAND_RIGHT"
+ glib:nick="right">
+ <doc xml:space="preserve">Select the next button to the right in a menu,
+if such a button exists.</doc>
+ </member>
+ <member name="up"
+ value="22"
+ c:identifier="GST_NAVIGATION_COMMAND_UP"
+ glib:nick="up">
+ <doc xml:space="preserve">Select the button above the current one in a
+menu, if such a button exists.</doc>
+ </member>
+ <member name="down"
+ value="23"
+ c:identifier="GST_NAVIGATION_COMMAND_DOWN"
+ glib:nick="down">
+ <doc xml:space="preserve">Select the button below the current one in a
+menu, if such a button exists.</doc>
+ </member>
+ <member name="activate"
+ value="24"
+ c:identifier="GST_NAVIGATION_COMMAND_ACTIVATE"
+ glib:nick="activate">
+ <doc xml:space="preserve">Activate (click) the currently selected
+button in a menu, if such a button exists.</doc>
+ </member>
+ <member name="prev_angle"
+ value="30"
+ c:identifier="GST_NAVIGATION_COMMAND_PREV_ANGLE"
+ glib:nick="prev-angle">
+ <doc xml:space="preserve">Switch to the previous angle in a
+multiangle feature.</doc>
+ </member>
+ <member name="next_angle"
+ value="31"
+ c:identifier="GST_NAVIGATION_COMMAND_NEXT_ANGLE"
+ glib:nick="next-angle">
+ <doc xml:space="preserve">Switch to the next angle in a multiangle
+feature.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="NavigationEventType"
+ glib:type-name="GstNavigationEventType"
+ glib:get-type="gst_navigation_event_type_get_type"
+ c:type="GstNavigationEventType">
+ <doc xml:space="preserve">Enum values for the various events that an element implementing the
+GstNavigation interface might send up the pipeline.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_NAVIGATION_EVENT_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">Returned from
+gst_navigation_event_get_type() when the passed event is not a navigation event.</doc>
+ </member>
+ <member name="key_press"
+ value="1"
+ c:identifier="GST_NAVIGATION_EVENT_KEY_PRESS"
+ glib:nick="key-press">
+ <doc xml:space="preserve">A key press event. Use
+gst_navigation_event_parse_key_event() to extract the details from the event.</doc>
+ </member>
+ <member name="key_release"
+ value="2"
+ c:identifier="GST_NAVIGATION_EVENT_KEY_RELEASE"
+ glib:nick="key-release">
+ <doc xml:space="preserve">A key release event. Use
+gst_navigation_event_parse_key_event() to extract the details from the event.</doc>
+ </member>
+ <member name="mouse_button_press"
+ value="3"
+ c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS"
+ glib:nick="mouse-button-press">
+ <doc xml:space="preserve">A mouse button press event. Use
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.</doc>
+ </member>
+ <member name="mouse_button_release"
+ value="4"
+ c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE"
+ glib:nick="mouse-button-release">
+ <doc xml:space="preserve">A mouse button release event. Use
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.</doc>
+ </member>
+ <member name="mouse_move"
+ value="5"
+ c:identifier="GST_NAVIGATION_EVENT_MOUSE_MOVE"
+ glib:nick="mouse-move">
+ <doc xml:space="preserve">A mouse movement event. Use
+gst_navigation_event_parse_mouse_move_event() to extract the details from the
+event.</doc>
+ </member>
+ <member name="command"
+ value="6"
+ c:identifier="GST_NAVIGATION_EVENT_COMMAND"
+ glib:nick="command">
+ <doc xml:space="preserve">A navigation command event. Use
+gst_navigation_event_parse_command() to extract the details from the event.</doc>
+ </member>
+ </enumeration>
+ <record name="NavigationInterface"
+ c:type="GstNavigationInterface"
+ glib:is-gtype-struct-for="Navigation">
+ <doc xml:space="preserve">Navigation interface.</doc>
+ <field name="iface">
+ <doc xml:space="preserve">the parent interface</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="send_event">
+ <callback name="send_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="navigation" transfer-ownership="none">
+ <type name="Navigation" c:type="GstNavigation*"/>
+ </parameter>
+ <parameter name="structure" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <enumeration name="NavigationMessageType"
+ glib:type-name="GstNavigationMessageType"
+ glib:get-type="gst_navigation_message_type_get_type"
+ c:type="GstNavigationMessageType">
+ <doc xml:space="preserve">A set of notifications that may be received on the bus when navigation
+related status changes.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_NAVIGATION_MESSAGE_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">Returned from
+gst_navigation_message_get_type() when the passed message is not a
+navigation message.</doc>
+ </member>
+ <member name="mouse_over"
+ value="1"
+ c:identifier="GST_NAVIGATION_MESSAGE_MOUSE_OVER"
+ glib:nick="mouse-over">
+ <doc xml:space="preserve">Sent when the mouse moves over or leaves a
+clickable region of the output, such as a DVD menu button.</doc>
+ </member>
+ <member name="commands_changed"
+ value="2"
+ c:identifier="GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED"
+ glib:nick="commands-changed">
+ <doc xml:space="preserve">Sent when the set of available commands
+changes and should re-queried by interested applications.</doc>
+ </member>
+ <member name="angles_changed"
+ value="3"
+ c:identifier="GST_NAVIGATION_MESSAGE_ANGLES_CHANGED"
+ glib:nick="angles-changed">
+ <doc xml:space="preserve">Sent when display angles in a multi-angle
+feature (such as a multiangle DVD) change - either angles have appeared or
+disappeared.</doc>
+ </member>
+ <member name="event"
+ value="4"
+ c:identifier="GST_NAVIGATION_MESSAGE_EVENT"
+ glib:nick="event">
+ <doc xml:space="preserve">Sent when a navigation event was not handled
+by any element in the pipeline (Since 1.6)</doc>
+ </member>
+ </enumeration>
+ <enumeration name="NavigationQueryType"
+ glib:type-name="GstNavigationQueryType"
+ glib:get-type="gst_navigation_query_type_get_type"
+ c:type="GstNavigationQueryType">
+ <doc xml:space="preserve">Tyoes of navigation interface queries.</doc>
+ <member name="invalid"
+ value="0"
+ c:identifier="GST_NAVIGATION_QUERY_INVALID"
+ glib:nick="invalid">
+ <doc xml:space="preserve">invalid query</doc>
+ </member>
+ <member name="commands"
+ value="1"
+ c:identifier="GST_NAVIGATION_QUERY_COMMANDS"
+ glib:nick="commands">
+ <doc xml:space="preserve">command query</doc>
+ </member>
+ <member name="angles"
+ value="2"
+ c:identifier="GST_NAVIGATION_QUERY_ANGLES"
+ glib:nick="angles">
+ <doc xml:space="preserve">viewing angle query</doc>
+ </member>
+ </enumeration>
+ <constant name="VIDEO_COLORIMETRY_BT2020"
+ value="bt2020"
+ c:type="GST_VIDEO_COLORIMETRY_BT2020">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_COLORIMETRY_BT601"
+ value="bt601"
+ c:type="GST_VIDEO_COLORIMETRY_BT601">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_COLORIMETRY_BT709"
+ value="bt709"
+ c:type="GST_VIDEO_COLORIMETRY_BT709">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_COLORIMETRY_SMPTE240M"
+ value="smpte240m"
+ c:type="GST_VIDEO_COLORIMETRY_SMPTE240M">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_COLORIMETRY_SRGB"
+ value="sRGB"
+ c:type="GST_VIDEO_COLORIMETRY_SRGB">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_COMP_A" value="3" c:type="GST_VIDEO_COMP_A">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_B" value="2" c:type="GST_VIDEO_COMP_B">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_G" value="1" c:type="GST_VIDEO_COMP_G">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_INDEX" value="0" c:type="GST_VIDEO_COMP_INDEX">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_PALETTE"
+ value="1"
+ c:type="GST_VIDEO_COMP_PALETTE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_R" value="0" c:type="GST_VIDEO_COMP_R">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_U" value="1" c:type="GST_VIDEO_COMP_U">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_V" value="2" c:type="GST_VIDEO_COMP_V">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_COMP_Y" value="0" c:type="GST_VIDEO_COMP_Y">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_ALPHA_MODE"
+ value="GstVideoConverter.alpha-mode"
+ c:type="GST_VIDEO_CONVERTER_OPT_ALPHA_MODE">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_ALPHA_MODE, the alpha mode to use.
+Default is #GST_VIDEO_ALPHA_MODE_COPY.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_ALPHA_VALUE"
+ value="GstVideoConverter.alpha-value"
+ c:type="GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE">
+ <doc xml:space="preserve">#G_TYPE_DOUBLE, the alpha color value to use.
+Default to 1.0</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_BORDER_ARGB"
+ value="GstVideoConverter.border-argb"
+ c:type="GST_VIDEO_CONVERTER_OPT_BORDER_ARGB">
+ <doc xml:space="preserve">#G_TYPE_UINT, the border color to use if #GST_VIDEO_CONVERTER_OPT_FILL_BORDER
+is set to %TRUE. The color is in ARGB format.
+Default 0xff000000</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_CHROMA_MODE"
+ value="GstVideoConverter.chroma-mode"
+ c:type="GST_VIDEO_CONVERTER_OPT_CHROMA_MODE">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_CHROMA_MODE, set the chroma resample mode subsampled
+formats. Default is #GST_VIDEO_CHROMA_MODE_FULL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_CHROMA_RESAMPLER_METHOD"
+ value="GstVideoConverter.chroma-resampler-method"
+ c:type="GST_VIDEO_CONVERTER_OPT_CHROMA_RESAMPLER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_RESAMPLER_METHOD, The resampler method to use for
+chroma resampling. Other options for the resampler can be used, see
+the #GstResampler. Default is #GST_RESAMPLER_METHOD_LINEAR</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DEST_HEIGHT"
+ value="GstVideoConverter.dest-height"
+ c:type="GST_VIDEO_CONVERTER_OPT_DEST_HEIGHT">
+ <doc xml:space="preserve">#G_TYPE_INT, height in the destination frame, default destination height</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DEST_WIDTH"
+ value="GstVideoConverter.dest-width"
+ c:type="GST_VIDEO_CONVERTER_OPT_DEST_WIDTH">
+ <doc xml:space="preserve">#G_TYPE_INT, width in the destination frame, default destination width</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DEST_X"
+ value="GstVideoConverter.dest-x"
+ c:type="GST_VIDEO_CONVERTER_OPT_DEST_X">
+ <doc xml:space="preserve">#G_TYPE_INT, x position in the destination frame, default 0</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DEST_Y"
+ value="GstVideoConverter.dest-y"
+ c:type="GST_VIDEO_CONVERTER_OPT_DEST_Y">
+ <doc xml:space="preserve">#G_TYPE_INT, y position in the destination frame, default 0</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DITHER_METHOD"
+ value="GstVideoConverter.dither-method"
+ c:type="GST_VIDEO_CONVERTER_OPT_DITHER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_DITHER_METHOD, The dither method to use when
+changing bit depth.
+Default is #GST_VIDEO_DITHER_BAYER.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_DITHER_QUANTIZATION"
+ value="GstVideoConverter.dither-quantization"
+ c:type="GST_VIDEO_CONVERTER_OPT_DITHER_QUANTIZATION">
+ <doc xml:space="preserve">#G_TYPE_UINT, The quantization amount to dither to. Components will be
+quantized to multiples of this value.
+Default is 1</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_FILL_BORDER"
+ value="GstVideoConverter.fill-border"
+ c:type="GST_VIDEO_CONVERTER_OPT_FILL_BORDER">
+ <doc xml:space="preserve">#G_TYPE_BOOLEAN, if the destination rectangle does not fill the complete
+destination image, render a border with
+#GST_VIDEO_CONVERTER_OPT_BORDER_ARGB. Otherwise the unusded pixels in the
+destination are untouched. Default %TRUE.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_GAMMA_MODE"
+ value="GstVideoConverter.gamma-mode"
+ c:type="GST_VIDEO_CONVERTER_OPT_GAMMA_MODE">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_GAMMA_MODE, set the gamma mode.
+Default is #GST_VIDEO_GAMMA_MODE_NONE.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_MATRIX_MODE"
+ value="GstVideoConverter.matrix-mode"
+ c:type="GST_VIDEO_CONVERTER_OPT_MATRIX_MODE">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_MATRIX_MODE, set the color matrix conversion mode for
+converting between Y'PbPr and non-linear RGB (R'G'B').
+Default is #GST_VIDEO_MATRIX_MODE_FULL.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_PRIMARIES_MODE"
+ value="GstVideoConverter.primaries-mode"
+ c:type="GST_VIDEO_CONVERTER_OPT_PRIMARIES_MODE">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_PRIMARIES_MODE, set the primaries conversion mode.
+Default is #GST_VIDEO_PRIMARIES_MODE_NONE.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_RESAMPLER_METHOD"
+ value="GstVideoConverter.resampler-method"
+ c:type="GST_VIDEO_CONVERTER_OPT_RESAMPLER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_RESAMPLER_METHOD, The resampler method to use for
+resampling. Other options for the resampler can be used, see
+the #GstResampler. Default is #GST_RESAMPLER_METHOD_CUBIC</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_RESAMPLER_TAPS"
+ value="GstVideoConverter.resampler-taps"
+ c:type="GST_VIDEO_CONVERTER_OPT_RESAMPLER_TAPS">
+ <doc xml:space="preserve">#G_TYPE_UINT, The number of taps for the resampler.
+Default is 0: let the resampler choose a good value.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_SRC_HEIGHT"
+ value="GstVideoConverter.src-height"
+ c:type="GST_VIDEO_CONVERTER_OPT_SRC_HEIGHT">
+ <doc xml:space="preserve">#G_TYPE_INT, source height to convert, default source height</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_SRC_WIDTH"
+ value="GstVideoConverter.src-width"
+ c:type="GST_VIDEO_CONVERTER_OPT_SRC_WIDTH">
+ <doc xml:space="preserve">#G_TYPE_INT, source width to convert, default source width</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_SRC_X"
+ value="GstVideoConverter.src-x"
+ c:type="GST_VIDEO_CONVERTER_OPT_SRC_X">
+ <doc xml:space="preserve">#G_TYPE_INT, source x position to start conversion, default 0</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_SRC_Y"
+ value="GstVideoConverter.src-y"
+ c:type="GST_VIDEO_CONVERTER_OPT_SRC_Y">
+ <doc xml:space="preserve">#G_TYPE_INT, source y position to start conversion, default 0</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_CONVERTER_OPT_THREADS"
+ value="GstVideoConverter.threads"
+ c:type="GST_VIDEO_CONVERTER_OPT_THREADS">
+ <doc xml:space="preserve">#G_TYPE_UINT, maximum number of threads to use. Default 1, 0 for the number
+of cores.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_DECODER_MAX_ERRORS"
+ value="10"
+ c:type="GST_VIDEO_DECODER_MAX_ERRORS">
+ <doc xml:space="preserve">Default maximum number of errors tolerated before signaling error.</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_DECODER_SINK_NAME"
+ value="sink"
+ c:type="GST_VIDEO_DECODER_SINK_NAME">
+ <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_DECODER_SRC_NAME"
+ value="src"
+ c:type="GST_VIDEO_DECODER_SRC_NAME">
+ <doc xml:space="preserve">The name of the templates for the source pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_ENCODER_SINK_NAME"
+ value="sink"
+ c:type="GST_VIDEO_ENCODER_SINK_NAME">
+ <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_ENCODER_SRC_NAME"
+ value="src"
+ c:type="GST_VIDEO_ENCODER_SRC_NAME">
+ <doc xml:space="preserve">The name of the templates for the source pad.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_FORMATS_ALL"
+ value="{ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, NV16, NV24, NV12_64Z32, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE, NV61, P010_10BE, P010_10LE, IYU2, VYUY, GBRA, GBRA_10BE, GBRA_10LE, GBR_12BE, GBR_12LE, GBRA_12BE, GBRA_12LE, I420_12BE, I420_12LE, I422_12BE, I422_12LE, Y444_12BE, Y444_12LE, GRAY10_LE32, NV12_10LE32, NV16_10LE32 }"
+ c:type="GST_VIDEO_FORMATS_ALL">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_FPS_RANGE"
+ value="(fraction) [ 0, max ]"
+ c:type="GST_VIDEO_FPS_RANGE">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_MAX_COMPONENTS"
+ value="4"
+ c:type="GST_VIDEO_MAX_COMPONENTS">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_MAX_PLANES" value="4" c:type="GST_VIDEO_MAX_PLANES">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS"
+ value="{ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }"
+ c:type="GST_VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS"
+ version="1.2">
+ <doc xml:space="preserve">Video formats supported by gst_video_overlay_composition_blend(), for
+use in overlay elements' pad template caps.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_CUBIC_B"
+ value="GstVideoResampler.cubic-b"
+ c:type="GST_VIDEO_RESAMPLER_OPT_CUBIC_B">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, B parameter of the cubic filter. The B
+parameter controls the bluriness. Values between 0.0 and
+2.0 are accepted. 1/3 is the default.
+
+Below are some values of popular filters:
+ B C
+Hermite 0.0 0.0
+Spline 1.0 0.0
+Catmull-Rom 0.0 1/2
+Mitchell 1/3 1/3
+Robidoux 0.3782 0.3109
+Robidoux
+ Sharp 0.2620 0.3690
+Robidoux
+ Soft 0.6796 0.1602</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_CUBIC_C"
+ value="GstVideoResampler.cubic-c"
+ c:type="GST_VIDEO_RESAMPLER_OPT_CUBIC_C">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, C parameter of the cubic filter. The C
+parameter controls the Keys alpha value. Values between 0.0 and
+2.0 are accepted. 1/3 is the default.
+
+See #GST_VIDEO_RESAMPLER_OPT_CUBIC_B for some more common values</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_ENVELOPE"
+ value="GstVideoResampler.envelope"
+ c:type="GST_VIDEO_RESAMPLER_OPT_ENVELOPE">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, specifies the size of filter envelope for
+@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between
+1.0 and 5.0. 2.0 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_MAX_TAPS"
+ value="GstVideoResampler.max-taps"
+ c:type="GST_VIDEO_RESAMPLER_OPT_MAX_TAPS">
+ <doc xml:space="preserve">G_TYPE_INT, limits the maximum number of taps to use.
+16 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_SHARPEN"
+ value="GstVideoResampler.sharpen"
+ c:type="GST_VIDEO_RESAMPLER_OPT_SHARPEN">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, specifies sharpening of the filter for
+@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between
+0.0 and 1.0. 0.0 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_RESAMPLER_OPT_SHARPNESS"
+ value="GstVideoResampler.sharpness"
+ c:type="GST_VIDEO_RESAMPLER_OPT_SHARPNESS">
+ <doc xml:space="preserve">G_TYPE_DOUBLE, specifies sharpness of the filter for
+@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between
+0.5 and 1.5. 1.0 is the default.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_SCALER_OPT_DITHER_METHOD"
+ value="GstVideoScaler.dither-method"
+ c:type="GST_VIDEO_SCALER_OPT_DITHER_METHOD">
+ <doc xml:space="preserve">#GST_TYPE_VIDEO_DITHER_METHOD, The dither method to use for propagating
+quatization errors.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_SIZE_RANGE"
+ value="(int) [ 1, max ]"
+ c:type="GST_VIDEO_SIZE_RANGE">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="VIDEO_TILE_TYPE_MASK"
+ value="65535"
+ c:type="GST_VIDEO_TILE_TYPE_MASK">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_TILE_TYPE_SHIFT"
+ value="16"
+ c:type="GST_VIDEO_TILE_TYPE_SHIFT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_TILE_X_TILES_MASK"
+ value="65535"
+ c:type="GST_VIDEO_TILE_X_TILES_MASK">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="VIDEO_TILE_Y_TILES_SHIFT"
+ value="16"
+ c:type="GST_VIDEO_TILE_Y_TILES_SHIFT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <callback name="VideoAffineTransformationGetMatrix"
+ c:type="GstVideoAffineTransformationGetMatrix">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="VideoAffineTransformationMeta"
+ c:type="GstVideoAffineTransformationMeta*"/>
+ </parameter>
+ <parameter name="matrix" transfer-ownership="none">
+ <type name="gfloat" c:type="gfloat*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="VideoAffineTransformationMeta"
+ c:type="GstVideoAffineTransformationMeta"
+ version="1.8">
+ <doc xml:space="preserve">Extra buffer metadata for performing an affine transformation using a 4x4
+matrix. The transformation matrix can be composed with
+gst_video_affine_transformation_meta_apply_matrix().
+
+The vertices operated on are all in the range 0 to 1, not in
+Normalized Device Coordinates (-1 to +1). Transforming points in this space
+are assumed to have an origin at (0.5, 0.5, 0.5) in a left-handed coordinate
+system with the x-axis moving horizontally (positive values to the right),
+the y-axis moving vertically (positive values up the screen) and the z-axis
+perpendicular to the screen (positive values into the screen).</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="matrix" writable="1">
+ <doc xml:space="preserve">the column-major 4x4 transformation matrix</doc>
+ <array zero-terminated="0" c:type="gfloat" fixed-size="16">
+ <type name="gfloat" c:type="gfloat"/>
+ </array>
+ </field>
+ <method name="apply_matrix"
+ c:identifier="gst_video_affine_transformation_meta_apply_matrix"
+ version="1.8">
+ <doc xml:space="preserve">Apply a transformation using the given 4x4 transformation matrix.
+Performs the multiplication, meta-&gt;matrix X matrix.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoAffineTransformationMeta</doc>
+ <type name="VideoAffineTransformationMeta"
+ c:type="GstVideoAffineTransformationMeta*"/>
+ </instance-parameter>
+ <parameter name="matrix" transfer-ownership="none">
+ <doc xml:space="preserve">a 4x4 transformation matrix to be applied</doc>
+ <type name="gfloat" c:type="const gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="get_info"
+ c:identifier="gst_video_affine_transformation_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="VideoAlignment" c:type="GstVideoAlignment">
+ <doc xml:space="preserve">Extra alignment parameters for the memory of video buffers. This
+structure is usually used to configure the bufferpool if it supports the
+#GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT.</doc>
+ <field name="padding_top" writable="1">
+ <doc xml:space="preserve">extra pixels on the top</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="padding_bottom" writable="1">
+ <doc xml:space="preserve">extra pixels on the bottom</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="padding_left" writable="1">
+ <doc xml:space="preserve">extra pixels on the left side</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="padding_right" writable="1">
+ <doc xml:space="preserve">extra pixels on the right side</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="stride_align" writable="1">
+ <doc xml:space="preserve">array with extra alignment requirements for the strides</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <method name="reset" c:identifier="gst_video_alignment_reset">
+ <doc xml:space="preserve">Set @align to its default values with no padding and no alignment.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoAlignment</doc>
+ <type name="VideoAlignment" c:type="GstVideoAlignment*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="VideoAlphaMode"
+ version="1.6"
+ glib:type-name="GstVideoAlphaMode"
+ glib:get-type="gst_video_alpha_mode_get_type"
+ c:type="GstVideoAlphaMode">
+ <doc xml:space="preserve">Different alpha modes.</doc>
+ <member name="copy"
+ value="0"
+ c:identifier="GST_VIDEO_ALPHA_MODE_COPY"
+ glib:nick="copy">
+ <doc xml:space="preserve">When input and output have alpha, it will be copied.
+ When the input has no alpha, alpha will be set to
+ #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE</doc>
+ </member>
+ <member name="set"
+ value="1"
+ c:identifier="GST_VIDEO_ALPHA_MODE_SET"
+ glib:nick="set">
+ <doc xml:space="preserve">set all alpha to
+ #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE</doc>
+ </member>
+ <member name="mult"
+ value="2"
+ c:identifier="GST_VIDEO_ALPHA_MODE_MULT"
+ glib:nick="mult">
+ <doc xml:space="preserve">multiply all alpha with
+ #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE.
+ When the input format has no alpha but the output format has, the
+ alpha value will be set to #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE</doc>
+ </member>
+ </enumeration>
+ <bitfield name="VideoBufferFlags"
+ glib:type-name="GstVideoBufferFlags"
+ glib:get-type="gst_video_buffer_flags_get_type"
+ c:type="GstVideoBufferFlags">
+ <doc xml:space="preserve">Additional video buffer flags. These flags can potentially be used on any
+buffers carrying video data - even encoded data.
+
+Note that these are only valid for #GstCaps of type: video/...
+They can conflict with other extended buffer flags.</doc>
+ <member name="interlaced"
+ value="1048576"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">If the #GstBuffer is interlaced. In mixed
+ interlace-mode, this flags specifies if the frame is
+ interlaced or progressive.</doc>
+ </member>
+ <member name="tff"
+ value="2097152"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_TFF"
+ glib:nick="tff">
+ <doc xml:space="preserve">If the #GstBuffer is interlaced, then the first field
+ in the video frame is the top field. If unset, the
+ bottom field is first.</doc>
+ </member>
+ <member name="rff"
+ value="4194304"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_RFF"
+ glib:nick="rff">
+ <doc xml:space="preserve">If the #GstBuffer is interlaced, then the first field
+ (as defined by the %GST_VIDEO_BUFFER_TFF flag setting)
+ is repeated.</doc>
+ </member>
+ <member name="onefield"
+ value="8388608"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_ONEFIELD"
+ glib:nick="onefield">
+ <doc xml:space="preserve">If the #GstBuffer is interlaced, then only the
+ first field (as defined by the %GST_VIDEO_BUFFER_TFF
+ flag setting) is to be displayed.</doc>
+ </member>
+ <member name="multiple_view"
+ value="16777216"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW"
+ glib:nick="multiple-view">
+ <doc xml:space="preserve">The #GstBuffer contains one or more specific views,
+ such as left or right eye view. This flags is set on
+ any buffer that contains non-mono content - even for
+ streams that contain only a single viewpoint. In mixed
+ mono / non-mono streams, the absense of the flag marks
+ mono buffers.</doc>
+ </member>
+ <member name="first_in_bundle"
+ value="33554432"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE"
+ glib:nick="first-in-bundle">
+ <doc xml:space="preserve">When conveying stereo/multiview content with
+ frame-by-frame methods, this flag marks the first buffer
+ in a bundle of frames that belong together.</doc>
+ </member>
+ <member name="last"
+ value="268435456"
+ c:identifier="GST_VIDEO_BUFFER_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">Offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <class name="VideoBufferPool"
+ c:symbol-prefix="video_buffer_pool"
+ c:type="GstVideoBufferPool"
+ parent="Gst.BufferPool"
+ glib:type-name="GstVideoBufferPool"
+ glib:get-type="gst_video_buffer_pool_get_type"
+ glib:type-struct="VideoBufferPoolClass">
+ <constructor name="new" c:identifier="gst_video_buffer_pool_new">
+ <doc xml:space="preserve">Create a new bufferpool that can allocate video frames. This bufferpool
+supports all the video bufferpool options.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstBufferPool to allocate video frames</doc>
+ <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ </constructor>
+ <field name="bufferpool">
+ <type name="Gst.BufferPool" c:type="GstBufferPool"/>
+ </field>
+ <field name="priv">
+ <type name="VideoBufferPoolPrivate"
+ c:type="GstVideoBufferPoolPrivate*"/>
+ </field>
+ </class>
+ <record name="VideoBufferPoolClass"
+ c:type="GstVideoBufferPoolClass"
+ glib:is-gtype-struct-for="VideoBufferPool">
+ <field name="parent_class">
+ <type name="Gst.BufferPoolClass" c:type="GstBufferPoolClass"/>
+ </field>
+ </record>
+ <record name="VideoBufferPoolPrivate"
+ c:type="GstVideoBufferPoolPrivate"
+ disguised="1">
+ </record>
+ <bitfield name="VideoChromaFlags"
+ glib:type-name="GstVideoChromaFlags"
+ glib:get-type="gst_video_chroma_flags_get_type"
+ c:type="GstVideoChromaFlags">
+ <doc xml:space="preserve">Extra flags that influence the result from gst_video_chroma_resample_new().</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_CHROMA_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="interlaced"
+ value="1"
+ c:identifier="GST_VIDEO_CHROMA_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">the input is interlaced</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoChromaMethod"
+ glib:type-name="GstVideoChromaMethod"
+ glib:get-type="gst_video_chroma_method_get_type"
+ c:type="GstVideoChromaMethod">
+ <doc xml:space="preserve">Different subsampling and upsampling methods</doc>
+ <member name="nearest"
+ value="0"
+ c:identifier="GST_VIDEO_CHROMA_METHOD_NEAREST"
+ glib:nick="nearest">
+ <doc xml:space="preserve">Duplicates the chroma samples when
+ upsampling and drops when subsampling</doc>
+ </member>
+ <member name="linear"
+ value="1"
+ c:identifier="GST_VIDEO_CHROMA_METHOD_LINEAR"
+ glib:nick="linear">
+ <doc xml:space="preserve">Uses linear interpolation to reconstruct
+ missing chroma and averaging to subsample</doc>
+ </member>
+ </enumeration>
+ <enumeration name="VideoChromaMode"
+ version="1.6"
+ glib:type-name="GstVideoChromaMode"
+ glib:get-type="gst_video_chroma_mode_get_type"
+ c:type="GstVideoChromaMode">
+ <doc xml:space="preserve">Different chroma downsampling and upsampling modes</doc>
+ <member name="full"
+ value="0"
+ c:identifier="GST_VIDEO_CHROMA_MODE_FULL"
+ glib:nick="full">
+ <doc xml:space="preserve">do full chroma up and down sampling</doc>
+ </member>
+ <member name="upsample_only"
+ value="1"
+ c:identifier="GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY"
+ glib:nick="upsample-only">
+ <doc xml:space="preserve">only perform chroma upsampling</doc>
+ </member>
+ <member name="downsample_only"
+ value="2"
+ c:identifier="GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY"
+ glib:nick="downsample-only">
+ <doc xml:space="preserve">only perform chroma downsampling</doc>
+ </member>
+ <member name="none"
+ value="3"
+ c:identifier="GST_VIDEO_CHROMA_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">disable chroma resampling</doc>
+ </member>
+ </enumeration>
+ <record name="VideoChromaResample"
+ c:type="GstVideoChromaResample"
+ disguised="1">
+ <method name=""
+ c:identifier="gst_video_chroma_resample"
+ moved-to="video_chroma_resample">
+ <doc xml:space="preserve">Perform resampling of @width chroma pixels in @lines.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaResample</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </instance-parameter>
+ <parameter name="lines"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pixel lines</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the number of pixels on one line</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_video_chroma_resample_free">
+ <doc xml:space="preserve">Free @resample</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaResample</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_info"
+ c:identifier="gst_video_chroma_resample_get_info">
+ <doc xml:space="preserve">The resampler must be fed @n_lines at a time. The first line should be
+at @offset.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaResample</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </instance-parameter>
+ <parameter name="n_lines" transfer-ownership="none">
+ <doc xml:space="preserve">the number of input lines</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">the first line</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_video_chroma_resample_new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new resampler object for the given parameters. When @h_factor or
+@v_factor is &gt; 0, upsampling will be used, otherwise subsampling is
+performed.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstVideoChromaResample that should be freed with
+ gst_video_chroma_resample_free() after usage.</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaMethod</doc>
+ <type name="VideoChromaMethod" c:type="GstVideoChromaMethod"/>
+ </parameter>
+ <parameter name="site" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaSite</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoChromaFlags</doc>
+ <type name="VideoChromaFlags" c:type="GstVideoChromaFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="h_factor" transfer-ownership="none">
+ <doc xml:space="preserve">horizontal resampling factor</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="v_factor" transfer-ownership="none">
+ <doc xml:space="preserve">vertical resampling factor</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="VideoChromaSite"
+ glib:type-name="GstVideoChromaSite"
+ glib:get-type="gst_video_chroma_site_get_type"
+ c:type="GstVideoChromaSite">
+ <doc xml:space="preserve">Various Chroma sitings.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_CHROMA_SITE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown cositing</doc>
+ </member>
+ <member name="none"
+ value="1"
+ c:identifier="GST_VIDEO_CHROMA_SITE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no cositing</doc>
+ </member>
+ <member name="h_cosited"
+ value="2"
+ c:identifier="GST_VIDEO_CHROMA_SITE_H_COSITED"
+ glib:nick="h-cosited">
+ <doc xml:space="preserve">chroma is horizontally cosited</doc>
+ </member>
+ <member name="v_cosited"
+ value="4"
+ c:identifier="GST_VIDEO_CHROMA_SITE_V_COSITED"
+ glib:nick="v-cosited">
+ <doc xml:space="preserve">chroma is vertically cosited</doc>
+ </member>
+ <member name="alt_line"
+ value="8"
+ c:identifier="GST_VIDEO_CHROMA_SITE_ALT_LINE"
+ glib:nick="alt-line">
+ <doc xml:space="preserve">choma samples are sited on alternate lines</doc>
+ </member>
+ <member name="cosited"
+ value="6"
+ c:identifier="GST_VIDEO_CHROMA_SITE_COSITED"
+ glib:nick="cosited">
+ <doc xml:space="preserve">chroma samples cosited with luma samples</doc>
+ </member>
+ <member name="jpeg"
+ value="1"
+ c:identifier="GST_VIDEO_CHROMA_SITE_JPEG"
+ glib:nick="jpeg">
+ <doc xml:space="preserve">jpeg style cositing, also for mpeg1 and mjpeg</doc>
+ </member>
+ <member name="mpeg2"
+ value="2"
+ c:identifier="GST_VIDEO_CHROMA_SITE_MPEG2"
+ glib:nick="mpeg2">
+ <doc xml:space="preserve">mpeg2 style cositing</doc>
+ </member>
+ <member name="dv"
+ value="14"
+ c:identifier="GST_VIDEO_CHROMA_SITE_DV"
+ glib:nick="dv">
+ <doc xml:space="preserve">DV style cositing</doc>
+ </member>
+ </bitfield>
+ <record name="VideoCodecFrame"
+ c:type="GstVideoCodecFrame"
+ glib:type-name="GstVideoCodecFrame"
+ glib:get-type="gst_video_codec_frame_get_type"
+ c:symbol-prefix="video_codec_frame">
+ <doc xml:space="preserve">A #GstVideoCodecFrame represents a video frame both in raw and
+encoded form.</doc>
+ <field name="ref_count" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="flags" readable="0" private="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="system_frame_number" writable="1">
+ <doc xml:space="preserve">Unique identifier for the frame. Use this if you need
+ to get hold of the frame later (like when data is being decoded).
+ Typical usage in decoders is to set this on the opaque value provided
+ to the library and get back the frame using gst_video_decoder_get_frame()</doc>
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="decode_frame_number" writable="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="presentation_frame_number" writable="1">
+ <type name="guint32" c:type="guint32"/>
+ </field>
+ <field name="dts" writable="1">
+ <doc xml:space="preserve">Decoding timestamp</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="pts" writable="1">
+ <doc xml:space="preserve">Presentation timestamp</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="duration" writable="1">
+ <doc xml:space="preserve">Duration of the frame</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="distance_from_sync" writable="1">
+ <doc xml:space="preserve">Distance in frames from the last synchronization point.</doc>
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="input_buffer" writable="1">
+ <doc xml:space="preserve">the input #GstBuffer that created this frame. The buffer is owned
+ by the frame and references to the frame instead of the buffer should
+ be kept.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="output_buffer" writable="1">
+ <doc xml:space="preserve">the output #GstBuffer. Implementations should set this either
+ directly, or by using the
+ @gst_video_decoder_allocate_output_frame() or
+ @gst_video_decoder_allocate_output_buffer() methods. The buffer is
+ owned by the frame and references to the frame instead of the
+ buffer should be kept.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="deadline" writable="1">
+ <doc xml:space="preserve">Running time when the frame will be used.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="events" readable="0" private="1">
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <field name="user_data" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="user_data_destroy_notify" readable="0" private="1">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </field>
+ <union name="abidata" c:type="abidata">
+ <record name="ABI" c:type="ABI">
+ <field name="ts" writable="1">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ <field name="ts2" writable="1">
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </field>
+ </record>
+ <field name="padding" writable="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </union>
+ <method name="get_user_data"
+ c:identifier="gst_video_codec_frame_get_user_data">
+ <doc xml:space="preserve">Gets private data set on the frame by the subclass via
+gst_video_codec_frame_set_user_data() previously.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">The previously set user_data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="ref" c:identifier="gst_video_codec_frame_ref">
+ <doc xml:space="preserve">Increases the refcount of the given frame by one.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">@buf</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_user_data"
+ c:identifier="gst_video_codec_frame_set_user_data">
+ <doc xml:space="preserve">Sets @user_data on the frame and the #GDestroyNotify that will be called when
+the frame is freed. Allows to attach private data by the subclass to frames.
+
+If a @user_data was previously set, then the previous set @notify will be called
+before the @user_data is replaced.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </instance-parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">private data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="notify"
+ transfer-ownership="none"
+ scope="async"
+ closure="0">
+ <doc xml:space="preserve">a #GDestroyNotify</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_video_codec_frame_unref">
+ <doc xml:space="preserve">Decreases the refcount of the frame. If the refcount reaches 0, the frame
+will be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="VideoCodecFrameFlags" c:type="GstVideoCodecFrameFlags">
+ <doc xml:space="preserve">Flags for #GstVideoCodecFrame</doc>
+ <member name="decode_only"
+ value="1"
+ c:identifier="GST_VIDEO_CODEC_FRAME_FLAG_DECODE_ONLY">
+ <doc xml:space="preserve">is the frame only meant to be decoded</doc>
+ </member>
+ <member name="sync_point"
+ value="2"
+ c:identifier="GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT">
+ <doc xml:space="preserve">is the frame a synchronization point (keyframe)</doc>
+ </member>
+ <member name="force_keyframe"
+ value="4"
+ c:identifier="GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME">
+ <doc xml:space="preserve">should the output frame be made a keyframe</doc>
+ </member>
+ <member name="force_keyframe_headers"
+ value="8"
+ c:identifier="GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS">
+ <doc xml:space="preserve">should the encoder output stream headers</doc>
+ </member>
+ </bitfield>
+ <record name="VideoCodecState"
+ c:type="GstVideoCodecState"
+ glib:type-name="GstVideoCodecState"
+ glib:get-type="gst_video_codec_state_get_type"
+ c:symbol-prefix="video_codec_state">
+ <doc xml:space="preserve">Structure representing the state of an incoming or outgoing video
+stream for encoders and decoders.
+
+Decoders and encoders will receive such a state through their
+respective @set_format vmethods.
+
+Decoders and encoders can set the downstream state, by using the
+@gst_video_decoder_set_output_state() or
+@gst_video_encoder_set_output_state() methods.</doc>
+ <field name="ref_count" readable="0" private="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="info" writable="1">
+ <doc xml:space="preserve">The #GstVideoInfo describing the stream</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo"/>
+ </field>
+ <field name="caps" writable="1">
+ <doc xml:space="preserve">The #GstCaps used in the caps negotiation of the pad.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="codec_data" writable="1">
+ <doc xml:space="preserve">a #GstBuffer corresponding to the
+ 'codec_data' field of a stream, or NULL.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="allocation_caps" writable="1">
+ <doc xml:space="preserve">The #GstCaps for allocation query and pool
+ negotiation. Since: 1.10</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </field>
+ <field name="padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="ref" c:identifier="gst_video_codec_state_ref">
+ <doc xml:space="preserve">Increases the refcount of the given state by one.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">@buf</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecState</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="unref" c:identifier="gst_video_codec_state_unref">
+ <doc xml:space="preserve">Decreases the refcount of the state. If the refcount reaches 0, the state
+will be freed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="state" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecState</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="VideoColorMatrix"
+ glib:type-name="GstVideoColorMatrix"
+ glib:get-type="gst_video_color_matrix_get_type"
+ c:type="GstVideoColorMatrix">
+ <doc xml:space="preserve">The color matrix is used to convert between Y'PbPr and
+non-linear RGB (R'G'B')</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown matrix</doc>
+ </member>
+ <member name="rgb"
+ value="1"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_RGB"
+ glib:nick="rgb">
+ <doc xml:space="preserve">identity matrix</doc>
+ </member>
+ <member name="fcc"
+ value="2"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_FCC"
+ glib:nick="fcc">
+ <doc xml:space="preserve">FCC color matrix</doc>
+ </member>
+ <member name="bt709"
+ value="3"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_BT709"
+ glib:nick="bt709">
+ <doc xml:space="preserve">ITU-R BT.709 color matrix</doc>
+ </member>
+ <member name="bt601"
+ value="4"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_BT601"
+ glib:nick="bt601">
+ <doc xml:space="preserve">ITU-R BT.601 color matrix</doc>
+ </member>
+ <member name="smpte240m"
+ value="5"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_SMPTE240M"
+ glib:nick="smpte240m">
+ <doc xml:space="preserve">SMPTE 240M color matrix</doc>
+ </member>
+ <member name="bt2020"
+ value="6"
+ c:identifier="GST_VIDEO_COLOR_MATRIX_BT2020"
+ glib:nick="bt2020">
+ <doc xml:space="preserve">ITU-R BT.2020 color matrix. Since: 1.6</doc>
+ </member>
+ <function name="get_Kr_Kb"
+ c:identifier="gst_video_color_matrix_get_Kr_Kb"
+ version="1.6">
+ <doc xml:space="preserve">Get the coefficients used to convert between Y'PbPr and R'G'B' using @matrix.
+
+When:
+
+|[
+ 0.0 &lt;= [Y',R',G',B'] &lt;= 1.0)
+ (-0.5 &lt;= [Pb,Pr] &lt;= 0.5)
+]|
+
+the general conversion is given by:
+
+|[
+ Y' = Kr*R' + (1-Kr-Kb)*G' + Kb*B'
+ Pb = (B'-Y')/(2*(1-Kb))
+ Pr = (R'-Y')/(2*(1-Kr))
+]|
+
+and the other way around:
+
+|[
+ R' = Y' + Cr*2*(1-Kr)
+ G' = Y' - Cb*2*(1-Kb)*Kb/(1-Kr-Kb) - Cr*2*(1-Kr)*Kr/(1-Kr-Kb)
+ B' = Y' + Cb*2*(1-Kb)
+]|</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @matrix was a YUV color format and @Kr and @Kb contain valid
+ values.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="matrix" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorMatrix</doc>
+ <type name="VideoColorMatrix" c:type="GstVideoColorMatrix"/>
+ </parameter>
+ <parameter name="Kr"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result red channel coefficient</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="Kb"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result blue channel coefficient</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="VideoColorPrimaries"
+ glib:type-name="GstVideoColorPrimaries"
+ glib:get-type="gst_video_color_primaries_get_type"
+ c:type="GstVideoColorPrimaries">
+ <doc xml:space="preserve">The color primaries define the how to transform linear RGB values to and from
+the CIE XYZ colorspace.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown color primaries</doc>
+ </member>
+ <member name="bt709"
+ value="1"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_BT709"
+ glib:nick="bt709">
+ <doc xml:space="preserve">BT709 primaries</doc>
+ </member>
+ <member name="bt470m"
+ value="2"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_BT470M"
+ glib:nick="bt470m">
+ <doc xml:space="preserve">BT470M primaries</doc>
+ </member>
+ <member name="bt470bg"
+ value="3"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_BT470BG"
+ glib:nick="bt470bg">
+ <doc xml:space="preserve">BT470BG primaries</doc>
+ </member>
+ <member name="smpte170m"
+ value="4"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_SMPTE170M"
+ glib:nick="smpte170m">
+ <doc xml:space="preserve">SMPTE170M primaries</doc>
+ </member>
+ <member name="smpte240m"
+ value="5"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_SMPTE240M"
+ glib:nick="smpte240m">
+ <doc xml:space="preserve">SMPTE240M primaries</doc>
+ </member>
+ <member name="film"
+ value="6"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_FILM"
+ glib:nick="film">
+ <doc xml:space="preserve">Generic film</doc>
+ </member>
+ <member name="bt2020"
+ value="7"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_BT2020"
+ glib:nick="bt2020">
+ <doc xml:space="preserve">BT2020 primaries. Since: 1.6</doc>
+ </member>
+ <member name="adobergb"
+ value="8"
+ c:identifier="GST_VIDEO_COLOR_PRIMARIES_ADOBERGB"
+ glib:nick="adobergb">
+ <doc xml:space="preserve">Adobe RGB primaries. Since: 1.8</doc>
+ </member>
+ <function name="get_info"
+ c:identifier="gst_video_color_primaries_get_info"
+ version="1.6">
+ <doc xml:space="preserve">Get information about the chromaticity coordinates of @primaries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorPrimariesInfo for @primaries.</doc>
+ <type name="VideoColorPrimariesInfo"
+ c:type="const GstVideoColorPrimariesInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="primaries" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorPrimaries</doc>
+ <type name="VideoColorPrimaries" c:type="GstVideoColorPrimaries"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <record name="VideoColorPrimariesInfo"
+ c:type="GstVideoColorPrimariesInfo"
+ version="1.6">
+ <doc xml:space="preserve">Structure describing the chromaticity coordinates of an RGB system. These
+values can be used to construct a matrix to transform RGB to and from the
+XYZ colorspace.</doc>
+ <field name="primaries" writable="1">
+ <doc xml:space="preserve">a #GstVideoColorPrimaries</doc>
+ <type name="VideoColorPrimaries" c:type="GstVideoColorPrimaries"/>
+ </field>
+ <field name="Wx" writable="1">
+ <doc xml:space="preserve">reference white x coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Wy" writable="1">
+ <doc xml:space="preserve">reference white y coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Rx" writable="1">
+ <doc xml:space="preserve">red x coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Ry" writable="1">
+ <doc xml:space="preserve">red y coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Gx" writable="1">
+ <doc xml:space="preserve">green x coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Gy" writable="1">
+ <doc xml:space="preserve">green y coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="Bx" writable="1">
+ <doc xml:space="preserve">blue x coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ <field name="By" writable="1">
+ <doc xml:space="preserve">blue y coordinate</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </field>
+ </record>
+ <enumeration name="VideoColorRange"
+ glib:type-name="GstVideoColorRange"
+ glib:get-type="gst_video_color_range_get_type"
+ c:type="GstVideoColorRange">
+ <doc xml:space="preserve">Possible color range values. These constants are defined for 8 bit color
+values and can be scaled for other bit depths.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_COLOR_RANGE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown range</doc>
+ </member>
+ <member name="0_255"
+ value="1"
+ c:identifier="GST_VIDEO_COLOR_RANGE_0_255"
+ glib:nick="0-255">
+ <doc xml:space="preserve">[0..255] for 8 bit components</doc>
+ </member>
+ <member name="16_235"
+ value="2"
+ c:identifier="GST_VIDEO_COLOR_RANGE_16_235"
+ glib:nick="16-235">
+ <doc xml:space="preserve">[16..235] for 8 bit components. Chroma has
+ [16..240] range.</doc>
+ </member>
+ <function name="offsets" c:identifier="gst_video_color_range_offsets">
+ <doc xml:space="preserve">Compute the offset and scale values for each component of @info. For each
+component, (c[i] - offset[i]) / scale[i] will scale the component c[i] to the
+range [0.0 .. 1.0].
+
+The reverse operation (c[i] * scale[i]) + offset[i] can be used to convert
+the component values in range [0.0 .. 1.0] back to their representation in
+@info and @range.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorRange</doc>
+ <type name="VideoColorRange" c:type="GstVideoColorRange"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormatInfo</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output offsets</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </parameter>
+ <parameter name="scale"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output scale</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <record name="VideoColorimetry" c:type="GstVideoColorimetry">
+ <doc xml:space="preserve">Structure describing the color info.</doc>
+ <field name="range" writable="1">
+ <doc xml:space="preserve">the color range. This is the valid range for the samples.
+ It is used to convert the samples to Y'PbPr values.</doc>
+ <type name="VideoColorRange" c:type="GstVideoColorRange"/>
+ </field>
+ <field name="matrix" writable="1">
+ <doc xml:space="preserve">the color matrix. Used to convert between Y'PbPr and
+ non-linear RGB (R'G'B')</doc>
+ <type name="VideoColorMatrix" c:type="GstVideoColorMatrix"/>
+ </field>
+ <field name="transfer" writable="1">
+ <doc xml:space="preserve">the transfer function. used to convert between R'G'B' and RGB</doc>
+ <type name="VideoTransferFunction" c:type="GstVideoTransferFunction"/>
+ </field>
+ <field name="primaries" writable="1">
+ <doc xml:space="preserve">color primaries. used to convert between R'G'B' and CIE XYZ</doc>
+ <type name="VideoColorPrimaries" c:type="GstVideoColorPrimaries"/>
+ </field>
+ <method name="from_string"
+ c:identifier="gst_video_colorimetry_from_string">
+ <doc xml:space="preserve">Parse the colorimetry string and update @cinfo with the parsed
+values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @color points to valid colorimetry info.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cinfo" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorimetry</doc>
+ <type name="VideoColorimetry" c:type="GstVideoColorimetry*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">a colorimetry string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_equal"
+ c:identifier="gst_video_colorimetry_is_equal"
+ version="1.6">
+ <doc xml:space="preserve">Compare the 2 colorimetry sets for equality</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @cinfo and @other are equal.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cinfo" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorimetry</doc>
+ <type name="VideoColorimetry" c:type="const GstVideoColorimetry*"/>
+ </instance-parameter>
+ <parameter name="other" transfer-ownership="none">
+ <doc xml:space="preserve">another #GstVideoColorimetry</doc>
+ <type name="VideoColorimetry" c:type="const GstVideoColorimetry*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="matches" c:identifier="gst_video_colorimetry_matches">
+ <doc xml:space="preserve">Check if the colorimetry information in @info matches that of the
+string @color.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @color conveys the same colorimetry info as the color
+information in @info.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cinfo" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoColorimetry" c:type="const GstVideoColorimetry*"/>
+ </instance-parameter>
+ <parameter name="color" transfer-ownership="none">
+ <doc xml:space="preserve">a colorimetry string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_string" c:identifier="gst_video_colorimetry_to_string">
+ <doc xml:space="preserve">Make a string representation of @cinfo.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a string representation of @cinfo.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="cinfo" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorimetry</doc>
+ <type name="VideoColorimetry" c:type="const GstVideoColorimetry*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <callback name="VideoConvertSampleCallback"
+ c:type="GstVideoConvertSampleCallback">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sample" transfer-ownership="none">
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ <parameter name="error" transfer-ownership="none">
+ <type name="GLib.Error" c:type="GError*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="VideoConverter" c:type="GstVideoConverter" disguised="1">
+ <method name="frame"
+ c:identifier="gst_video_converter_frame"
+ version="1.6">
+ <doc xml:space="preserve">Convert the pixels of @src into @dest using @convert.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoConverter</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </instance-parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="const GstVideoFrame*"/>
+ </parameter>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free"
+ c:identifier="gst_video_converter_free"
+ version="1.6">
+ <doc xml:space="preserve">Free @convert</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoConverter</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_config" c:identifier="gst_video_converter_get_config">
+ <doc xml:space="preserve">Get the current configuration of @convert.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure that remains valid for as long as @convert is valid
+ or until gst_video_converter_set_config() is called.</doc>
+ <type name="Gst.Structure" c:type="const GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoConverter</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_config"
+ c:identifier="gst_video_converter_set_config"
+ version="1.6">
+ <doc xml:space="preserve">Set @config as extra configuraion for @convert.
+
+If the parameters in @config can not be set exactly, this function returns
+%FALSE and will try to update as much state as possible. The new state can
+then be retrieved and refined with gst_video_converter_get_config().
+
+Look at the #GST_VIDEO_CONVERTER_OPT_* fields to check valid configuration
+option and values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE when @config could be set.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="convert" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoConverter</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </instance-parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_video_converter_new"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new converter object to convert between @in_info and @out_info
+with @config.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstVideoConverter or %NULL if conversion is not possible.</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="in_info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure with configuration options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <record name="VideoCropMeta" c:type="GstVideoCropMeta">
+ <doc xml:space="preserve">Extra buffer metadata describing image cropping.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="x" writable="1">
+ <doc xml:space="preserve">the horizontal offset</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="y" writable="1">
+ <doc xml:space="preserve">the vertical offset</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="width" writable="1">
+ <doc xml:space="preserve">the cropped width</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="height" writable="1">
+ <doc xml:space="preserve">the cropped height</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <function name="get_info" c:identifier="gst_video_crop_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <class name="VideoDecoder"
+ c:symbol-prefix="video_decoder"
+ c:type="GstVideoDecoder"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstVideoDecoder"
+ glib:get-type="gst_video_decoder_get_type"
+ glib:type-struct="VideoDecoderClass">
+ <doc xml:space="preserve">This base class is for video decoders turning encoded data into raw video
+frames.
+
+The GstVideoDecoder base class and derived subclasses should cooperate as
+follows:
+
+## Configuration
+
+ * Initially, GstVideoDecoder calls @start when the decoder element
+ is activated, which allows the subclass to perform any global setup.
+
+ * GstVideoDecoder calls @set_format to inform the subclass of caps
+ describing input video data that it is about to receive, including
+ possibly configuration data.
+ While unlikely, it might be called more than once, if changing input
+ parameters require reconfiguration.
+
+ * Incoming data buffers are processed as needed, described in Data
+ Processing below.
+
+ * GstVideoDecoder calls @stop at end of all processing.
+
+## Data processing
+
+ * The base class gathers input data, and optionally allows subclass
+ to parse this into subsequently manageable chunks, typically
+ corresponding to and referred to as 'frames'.
+
+ * Each input frame is provided in turn to the subclass' @handle_frame
+ callback.
+ The ownership of the frame is given to the @handle_frame callback.
+
+ * If codec processing results in decoded data, the subclass should call
+ @gst_video_decoder_finish_frame to have decoded data pushed.
+ downstream. Otherwise, the subclass must call
+ @gst_video_decoder_drop_frame, to allow the base class to do timestamp
+ and offset tracking, and possibly to requeue the frame for a later
+ attempt in the case of reverse playback.
+
+## Shutdown phase
+
+ * The GstVideoDecoder class calls @stop to inform the subclass that data
+ parsing will be stopped.
+
+## Additional Notes
+
+ * Seeking/Flushing
+
+ * When the pipeline is seeked or otherwise flushed, the subclass is
+ informed via a call to its @reset callback, with the hard parameter
+ set to true. This indicates the subclass should drop any internal data
+ queues and timestamps and prepare for a fresh set of buffers to arrive
+ for parsing and decoding.
+
+ * End Of Stream
+
+ * At end-of-stream, the subclass @parse function may be called some final
+ times with the at_eos parameter set to true, indicating that the element
+ should not expect any more data to be arriving, and it should parse and
+ remaining frames and call gst_video_decoder_have_frame() if possible.
+
+The subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It also
+needs to provide information about the ouptput caps, when they are known.
+This may be when the base class calls the subclass' @set_format function,
+though it might be during decoding, before calling
+@gst_video_decoder_finish_frame. This is done via
+@gst_video_decoder_set_output_state
+
+The subclass is also responsible for providing (presentation) timestamps
+(likely based on corresponding input ones). If that is not applicable
+or possible, the base class provides limited framerate based interpolation.
+
+Similarly, the base class provides some limited (legacy) seeking support
+if specifically requested by the subclass, as full-fledged support
+should rather be left to upstream demuxer, parser or alike. This simple
+approach caters for seeking and duration reporting using estimated input
+bitrates. To enable it, a subclass should call
+@gst_video_decoder_set_estimate_rate to enable handling of incoming
+byte-streams.
+
+The base class provides some support for reverse playback, in particular
+in case incoming data is not packetized or upstream does not provide
+fragments on keyframe boundaries. However, the subclass should then be
+prepared for the parsing and frame processing stage to occur separately
+(in normal forward processing, the latter immediately follows the former),
+The subclass also needs to ensure the parsing stage properly marks
+keyframes, unless it knows the upstream elements will do so properly for
+incoming data.
+
+The bare minimum that a functional subclass needs to implement is:
+
+ * Provide pad templates
+ * Inform the base class of output caps via
+ @gst_video_decoder_set_output_state
+
+ * Parse input data, if it is not considered packetized from upstream
+ Data will be provided to @parse which should invoke
+ @gst_video_decoder_add_to_frame and @gst_video_decoder_have_frame to
+ separate the data belonging to each video frame.
+
+ * Accept data in @handle_frame and provide decoded results to
+ @gst_video_decoder_finish_frame, or call @gst_video_decoder_drop_frame.</doc>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="drain">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="finish">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiate" invoker="negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstVideoCodecState.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="parse">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="adapter" transfer-ownership="none">
+ <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+ </parameter>
+ <parameter name="at_eos" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reset">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="state" transfer-ownership="none">
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="add_to_frame"
+ c:identifier="gst_video_decoder_add_to_frame">
+ <doc xml:space="preserve">Removes next @n_bytes of input data and adds it to currently parsed frame.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="n_bytes" transfer-ownership="none">
+ <doc xml:space="preserve">the number of bytes to add</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="allocate_output_buffer"
+ c:identifier="gst_video_decoder_allocate_output_buffer">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold a video frame for @decoder's
+current #GstVideoCodecState.
+
+You should use gst_video_decoder_allocate_output_frame() instead of this
+function, if possible at all.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">allocated buffer, or NULL if no buffer could be
+ allocated (e.g. when downstream is flushing or shutting down)</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="allocate_output_frame"
+ c:identifier="gst_video_decoder_allocate_output_frame">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold a video frame for @decoder's
+current #GstVideoCodecState. Subclass should already have configured video
+state and set src pad caps.
+
+The buffer allocated here is owned by the frame and you should only
+keep references to the frame, not the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if an output buffer could be allocated</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="allocate_output_frame_with_params"
+ c:identifier="gst_video_decoder_allocate_output_frame_with_params"
+ version="1.12">
+ <doc xml:space="preserve">Same as #gst_video_decoder_allocate_output_frame except it allows passing
+#GstBufferPoolAcquireParams to the sub call gst_buffer_pool_acquire_buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if an output buffer could be allocated</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="params" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBufferPoolAcquireParams</doc>
+ <type name="Gst.BufferPoolAcquireParams"
+ c:type="GstBufferPoolAcquireParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="drop_frame" c:identifier="gst_video_decoder_drop_frame">
+ <doc xml:space="preserve">Similar to gst_video_decoder_finish_frame(), but drops @frame in any
+case and posts a QoS message with the frame's details on the bus.
+In any case, the frame is considered finished and released.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn, usually GST_FLOW_OK.</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstVideoCodecFrame to drop</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="finish_frame"
+ c:identifier="gst_video_decoder_finish_frame">
+ <doc xml:space="preserve">@frame should have a valid decoded data buffer, whose metadata fields
+are then appropriately set according to frame data and pushed downstream.
+If no output data is provided, @frame is considered skipped.
+In any case, the frame is considered finished and released.
+
+After calling this function the output buffer of the frame is to be
+considered read-only. This function will also change the metadata
+of the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn resulting from sending data downstream</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="full">
+ <doc xml:space="preserve">a decoded #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allocator"
+ c:identifier="gst_video_decoder_get_allocator">
+ <doc xml:space="preserve">Lets #GstVideoDecoder sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocatorParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_buffer_pool"
+ c:identifier="gst_video_decoder_get_buffer_pool">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the instance of the #GstBufferPool used
+by the decoder; free it after use it</doc>
+ <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_estimate_rate"
+ c:identifier="gst_video_decoder_get_estimate_rate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured byte to time conversion setting</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_frame" c:identifier="gst_video_decoder_get_frame">
+ <doc xml:space="preserve">Get a pending unfinished #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">pending unfinished #GstVideoCodecFrame identified by @frame_number.</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame_number" transfer-ownership="none">
+ <doc xml:space="preserve">system_frame_number of a frame</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_frames" c:identifier="gst_video_decoder_get_frames">
+ <doc xml:space="preserve">Get all pending unfinished #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">pending unfinished #GstVideoCodecFrame.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="VideoCodecFrame"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_video_decoder_get_latency">
+ <doc xml:space="preserve">Query the configured decoder latency. Results will be returned via
+@min_latency and @max_latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="min_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address of variable in which to store the
+ configured minimum latency, or %NULL</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address of variable in which to store the
+ configured mximum latency, or %NULL</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_decode_time"
+ c:identifier="gst_video_decoder_get_max_decode_time">
+ <doc xml:space="preserve">Determines maximum possible decoding time for @frame that will
+allow it to decode and arrive in time (as determined by QoS events).
+In particular, a negative result means decoding in time is no longer possible
+and should therefore occur as soon/skippy as possible.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">max decoding time.</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_errors"
+ c:identifier="gst_video_decoder_get_max_errors">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">currently configured decoder tolerated error count.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_needs_format"
+ c:identifier="gst_video_decoder_get_needs_format"
+ version="1.4">
+ <doc xml:space="preserve">Queries decoder required format handling.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if required format handling is enabled.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_oldest_frame"
+ c:identifier="gst_video_decoder_get_oldest_frame">
+ <doc xml:space="preserve">Get the oldest pending unfinished #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">oldest pending unfinished #GstVideoCodecFrame.</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_output_state"
+ c:identifier="gst_video_decoder_get_output_state">
+ <doc xml:space="preserve">Get the #GstVideoCodecState currently describing the output stream.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">#GstVideoCodecState describing format of video data.</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_packetized"
+ c:identifier="gst_video_decoder_get_packetized">
+ <doc xml:space="preserve">Queries whether input data is considered packetized or not by the
+base class.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if input data is considered packetized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pending_frame_size"
+ c:identifier="gst_video_decoder_get_pending_frame_size"
+ version="1.4">
+ <doc xml:space="preserve">Returns the number of bytes previously added to the current frame
+by calling gst_video_decoder_add_to_frame().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The number of bytes pending for the current frame</doc>
+ <type name="gsize" c:type="gsize"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_qos_proportion"
+ c:identifier="gst_video_decoder_get_qos_proportion"
+ version="1.0.3">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The current QoS proportion.</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder
+ current QoS proportion, or %NULL</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="have_frame" c:identifier="gst_video_decoder_have_frame">
+ <doc xml:space="preserve">Gathers all data collected for currently parsed frame, gathers corresponding
+metadata and passes it along for further processing, i.e. @handle_frame.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_video_decoder_merge_tags">
+ <doc xml:space="preserve">Sets the audio decoder tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with gst_audio_decoder_merge_tags().
+
+Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
+ previously-set tags</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
+ <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="negotiate" c:identifier="gst_video_decoder_negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstVideoCodecState.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="proxy_getcaps"
+ c:identifier="gst_video_decoder_proxy_getcaps"
+ version="1.6">
+ <doc xml:space="preserve">Returns caps that express @caps (or sink template caps if @caps == NULL)
+restricted to resolution/format/... combinations supported by downstream
+elements.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps owned by caller</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">initial caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">filter caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="release_frame"
+ c:identifier="gst_video_decoder_release_frame"
+ version="1.2.2">
+ <doc xml:space="preserve">Similar to gst_video_decoder_drop_frame(), but simply releases @frame
+without any processing other than removing it from list of pending frames,
+after which it is considered finished and released.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstVideoCodecFrame to release</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_estimate_rate"
+ c:identifier="gst_video_decoder_set_estimate_rate">
+ <doc xml:space="preserve">Allows baseclass to perform byte to time estimated conversion.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">whether to enable byte to time conversion</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_video_decoder_set_latency">
+ <doc xml:space="preserve">Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder
+latency is. Will also post a LATENCY message on the bus so the pipeline
+can reconfigure its global latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="min_latency" transfer-ownership="none">
+ <doc xml:space="preserve">minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max_latency" transfer-ownership="none">
+ <doc xml:space="preserve">maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_max_errors"
+ c:identifier="gst_video_decoder_set_max_errors">
+ <doc xml:space="preserve">Sets numbers of tolerated decoder errors, where a tolerated one is then only
+warned about, but more than tolerated will lead to fatal error. You can set
+-1 for never returning fatal errors. Default is set to
+GST_VIDEO_DECODER_MAX_ERRORS.
+
+The '-1' option was added in 1.4</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="num" transfer-ownership="none">
+ <doc xml:space="preserve">max tolerated errors</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_needs_format"
+ c:identifier="gst_video_decoder_set_needs_format"
+ version="1.4">
+ <doc xml:space="preserve">Configures decoder format needs. If enabled, subclass needs to be
+negotiated with format caps before it can process any data. It will then
+never be handed any data before it has been configured.
+Otherwise, it might be handed data without having been configured and
+is then expected being able to do so either by default
+or based on the input data.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dec" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">new state</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_output_state"
+ c:identifier="gst_video_decoder_set_output_state">
+ <doc xml:space="preserve">Creates a new #GstVideoCodecState with the specified @fmt, @width and @height
+as the output state for the decoder.
+Any previously set output state on @decoder will be replaced by the newly
+created one.
+
+If the subclass wishes to copy over existing fields (like pixel aspec ratio,
+or framerate) from an existing #GstVideoCodecState, it can be provided as a
+@reference.
+
+If the subclass wishes to override some fields from the output state (like
+pixel-aspect-ratio or framerate) it can do so on the returned #GstVideoCodecState.
+
+The new output state will only take effect (set on pads and buffers) starting
+from the next call to #gst_video_decoder_finish_frame().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly configured output state.</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="fmt" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">The width in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">The height in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="reference"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">An optional reference #GstVideoCodecState</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_packetized"
+ c:identifier="gst_video_decoder_set_packetized">
+ <doc xml:space="preserve">Allows baseclass to consider input data as packetized or not. If the
+input is packetized, then the @parse method will not be called.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="packetized" transfer-ownership="none">
+ <doc xml:space="preserve">whether the input data should be considered as packetized.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_use_default_pad_acceptcaps"
+ c:identifier="gst_video_decoder_set_use_default_pad_acceptcaps"
+ version="1.6">
+ <doc xml:space="preserve">Lets #GstVideoDecoder sub-classes decide if they want the sink pad
+to use the default pad query handler to reply to accept-caps queries.
+
+By setting this to true it is possible to further customize the default
+handler with %GST_PAD_SET_ACCEPT_INTERSECT and
+%GST_PAD_SET_ACCEPT_TEMPLATE</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </instance-parameter>
+ <parameter name="use" transfer-ownership="none">
+ <doc xml:space="preserve">if the default pad accept-caps query handling should be used</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="element" readable="0" private="1">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="stream_lock" readable="0" private="1">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="input_segment" readable="0" private="1">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="output_segment" readable="0" private="1">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoDecoderPrivate" c:type="GstVideoDecoderPrivate*"/>
+ </field>
+ <field name="padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoDecoderClass"
+ c:type="GstVideoDecoderClass"
+ glib:is-gtype-struct-for="VideoDecoder">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @handle_frame needs to be overridden, and @set_format
+and likely as well. If non-packetized input is supported or expected,
+@parse needs to be overridden as well.</doc>
+ <field name="element_class" readable="0" private="1">
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="parse">
+ <callback name="parse">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="adapter" transfer-ownership="none">
+ <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+ </parameter>
+ <parameter name="at_eos" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_format">
+ <callback name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="state" transfer-ownership="none">
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reset">
+ <callback name="reset">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="finish">
+ <callback name="finish">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_frame">
+ <callback name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiate">
+ <callback name="negotiate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDecoder</doc>
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="getcaps">
+ <callback name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="drain">
+ <callback name="drain">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_meta">
+ <callback name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="decoder" transfer-ownership="none">
+ <type name="VideoDecoder" c:type="GstVideoDecoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="14">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoDecoderPrivate"
+ c:type="GstVideoDecoderPrivate"
+ disguised="1">
+ </record>
+ <interface name="VideoDirection"
+ c:symbol-prefix="video_direction"
+ c:type="GstVideoDirection"
+ version="1.10"
+ glib:type-name="GstVideoDirection"
+ glib:get-type="gst_video_direction_get_type"
+ glib:type-struct="VideoDirectionInterface">
+ <doc xml:space="preserve">The interface allows unified access to control flipping and rotation
+operations of video-sources or operators.</doc>
+ <property name="video-direction"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="VideoOrientationMethod"/>
+ </property>
+ </interface>
+ <record name="VideoDirectionInterface"
+ c:type="GstVideoDirectionInterface"
+ glib:is-gtype-struct-for="VideoDirection"
+ version="1.10">
+ <doc xml:space="preserve">#GstVideoDirectionInterface interface.</doc>
+ <field name="iface">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ </record>
+ <record name="VideoDither" c:type="GstVideoDither" disguised="1">
+ <doc xml:space="preserve">GstVideoDither provides implementations of several dithering algorithms
+that can be applied to lines of video pixels to quantize and dither them.</doc>
+ <method name="free" c:identifier="gst_video_dither_free">
+ <doc xml:space="preserve">Free @dither</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dither" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDither</doc>
+ <type name="VideoDither" c:type="GstVideoDither*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="line" c:identifier="gst_video_dither_line">
+ <doc xml:space="preserve">Dither @width pixels starting from offset @x in @line using @dither.
+
+@y is the line number of @line in the output image.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dither" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDither</doc>
+ <type name="VideoDither" c:type="GstVideoDither*"/>
+ </instance-parameter>
+ <parameter name="line"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointer to the pixels of the line</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">x coordinate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">y coordinate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_video_dither_new"
+ introspectable="0">
+ <doc xml:space="preserve">Make a new dither object for dithering lines of @format using the
+algorithm described by @method.
+
+Each component will be quantized to a multiple of @quantizer. Better
+performance is achived when @quantizer is a power of 2.
+
+@width is the width of the lines that this ditherer will handle.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstVideoDither</doc>
+ <type name="VideoDither" c:type="GstVideoDither*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDitherMethod</doc>
+ <type name="VideoDitherMethod" c:type="GstVideoDitherMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDitherFlags</doc>
+ <type name="VideoDitherFlags" c:type="GstVideoDitherFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="quantizer" transfer-ownership="none">
+ <doc xml:space="preserve">quantizer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width of the lines</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="VideoDitherFlags"
+ glib:type-name="GstVideoDitherFlags"
+ glib:get-type="gst_video_dither_flags_get_type"
+ c:type="GstVideoDitherFlags">
+ <doc xml:space="preserve">Extra flags that influence the result from gst_video_chroma_resample_new().</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_DITHER_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="interlaced"
+ value="1"
+ c:identifier="GST_VIDEO_DITHER_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">the input is interlaced</doc>
+ </member>
+ <member name="quantize"
+ value="2"
+ c:identifier="GST_VIDEO_DITHER_FLAG_QUANTIZE"
+ glib:nick="quantize">
+ <doc xml:space="preserve">quantize values in addition to adding dither.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoDitherMethod"
+ glib:type-name="GstVideoDitherMethod"
+ glib:get-type="gst_video_dither_method_get_type"
+ c:type="GstVideoDitherMethod">
+ <doc xml:space="preserve">Different dithering methods to use.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_DITHER_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no dithering</doc>
+ </member>
+ <member name="verterr"
+ value="1"
+ c:identifier="GST_VIDEO_DITHER_VERTERR"
+ glib:nick="verterr">
+ <doc xml:space="preserve">propagate rounding errors downwards</doc>
+ </member>
+ <member name="floyd_steinberg"
+ value="2"
+ c:identifier="GST_VIDEO_DITHER_FLOYD_STEINBERG"
+ glib:nick="floyd-steinberg">
+ <doc xml:space="preserve">Dither with floyd-steinberg error diffusion</doc>
+ </member>
+ <member name="sierra_lite"
+ value="3"
+ c:identifier="GST_VIDEO_DITHER_SIERRA_LITE"
+ glib:nick="sierra-lite">
+ <doc xml:space="preserve">Dither with Sierra Lite error diffusion</doc>
+ </member>
+ <member name="bayer"
+ value="4"
+ c:identifier="GST_VIDEO_DITHER_BAYER"
+ glib:nick="bayer">
+ <doc xml:space="preserve">ordered dither using a bayer pattern</doc>
+ </member>
+ </enumeration>
+ <class name="VideoEncoder"
+ c:symbol-prefix="video_encoder"
+ c:type="GstVideoEncoder"
+ parent="Gst.Element"
+ abstract="1"
+ glib:type-name="GstVideoEncoder"
+ glib:get-type="gst_video_encoder_get_type"
+ glib:type-struct="VideoEncoderClass">
+ <doc xml:space="preserve">This base class is for video encoders turning raw video into
+encoded video data.
+
+GstVideoEncoder and subclass should cooperate as follows.
+
+## Configuration
+
+ * Initially, GstVideoEncoder calls @start when the encoder element
+ is activated, which allows subclass to perform any global setup.
+ * GstVideoEncoder calls @set_format to inform subclass of the format
+ of input video data that it is about to receive. Subclass should
+ setup for encoding and configure base class as appropriate
+ (e.g. latency). While unlikely, it might be called more than once,
+ if changing input parameters require reconfiguration. Baseclass
+ will ensure that processing of current configuration is finished.
+ * GstVideoEncoder calls @stop at end of all processing.
+
+## Data processing
+
+ * Base class collects input data and metadata into a frame and hands
+ this to subclass' @handle_frame.
+
+ * If codec processing results in encoded data, subclass should call
+ @gst_video_encoder_finish_frame to have encoded data pushed
+ downstream.
+
+ * If implemented, baseclass calls subclass @pre_push just prior to
+ pushing to allow subclasses to modify some metadata on the buffer.
+ If it returns GST_FLOW_OK, the buffer is pushed downstream.
+
+ * GstVideoEncoderClass will handle both srcpad and sinkpad events.
+ Sink events will be passed to subclass if @event callback has been
+ provided.
+
+## Shutdown phase
+
+ * GstVideoEncoder class calls @stop to inform the subclass that data
+ parsing will be stopped.
+
+Subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It should
+also be able to provide fixed src pad caps in @getcaps by the time it calls
+@gst_video_encoder_finish_frame.
+
+Things that subclass need to take care of:
+
+ * Provide pad templates
+ * Provide source pad caps before pushing the first buffer
+ * Accept data in @handle_frame and provide encoded results to
+ @gst_video_encoder_finish_frame.
+
+
+The #GstVideoEncoder:qos property will enable the Quality-of-Service
+features of the encoder which gather statistics about the real-time
+performance of the downstream elements. If enabled, subclasses can
+use gst_video_encoder_get_max_encode_time() to check if input frames
+are already late and drop them right away to give a chance to the
+pipeline to catch up.</doc>
+ <implements name="Gst.Preset"/>
+ <virtual-method name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="finish">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="flush">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="negotiate" invoker="negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstVideoCodecState.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="reset">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="state" transfer-ownership="none">
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="allocate_output_buffer"
+ c:identifier="gst_video_encoder_allocate_output_buffer">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold an encoded video frame
+for @encoder's current #GstVideoCodecState.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">allocated buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="allocate_output_frame"
+ c:identifier="gst_video_encoder_allocate_output_frame">
+ <doc xml:space="preserve">Helper function that allocates a buffer to hold an encoded video frame for @encoder's
+current #GstVideoCodecState. Subclass should already have configured video
+state and set src pad caps.
+
+The buffer allocated here is owned by the frame and you should only
+keep references to the frame, not the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%GST_FLOW_OK if an output buffer could be allocated</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="size" transfer-ownership="none">
+ <doc xml:space="preserve">size of the buffer</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="finish_frame"
+ c:identifier="gst_video_encoder_finish_frame">
+ <doc xml:space="preserve">@frame must have a valid encoded data buffer, whose metadata fields
+are then appropriately set according to frame data or no buffer at
+all if the frame should be dropped.
+It is subsequently pushed downstream or provided to @pre_push.
+In any case, the frame is considered finished and released.
+
+After calling this function the output buffer of the frame is to be
+considered read-only. This function will also change the metadata
+of the buffer.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstFlowReturn resulting from sending data downstream</doc>
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="full">
+ <doc xml:space="preserve">an encoded #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_allocator"
+ c:identifier="gst_video_encoder_get_allocator">
+ <doc xml:space="preserve">Lets #GstVideoEncoder sub-classes to know the memory @allocator
+used by the base class and its @params.
+
+Unref the @allocator after use it.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="allocator"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the #GstAllocator
+used</doc>
+ <type name="Gst.Allocator" c:type="GstAllocator**"/>
+ </parameter>
+ <parameter name="params"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the
+#GstAllocatorParams of @allocator</doc>
+ <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_frame" c:identifier="gst_video_encoder_get_frame">
+ <doc xml:space="preserve">Get a pending unfinished #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">pending unfinished #GstVideoCodecFrame identified by @frame_number.</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEnccoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame_number" transfer-ownership="none">
+ <doc xml:space="preserve">system_frame_number of a frame</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_frames" c:identifier="gst_video_encoder_get_frames">
+ <doc xml:space="preserve">Get all pending unfinished #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">pending unfinished #GstVideoCodecFrame.</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="VideoCodecFrame"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_latency" c:identifier="gst_video_encoder_get_latency">
+ <doc xml:space="preserve">Query the configured encoding latency. Results will be returned via
+@min_latency and @max_latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="min_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address of variable in which to store the
+ configured minimum latency, or %NULL</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="max_latency"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address of variable in which to store the
+ configured maximum latency, or %NULL</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_encode_time"
+ c:identifier="gst_video_encoder_get_max_encode_time"
+ version="1.14">
+ <doc xml:space="preserve">Determines maximum possible encoding time for @frame that will
+allow it to encode and arrive in time (as determined by QoS events).
+In particular, a negative result means encoding in time is no longer possible
+and should therefore occur as soon/skippy as possible.
+
+If no QoS events have been received from downstream, or if
+#GstVideoEncoder:qos is disabled this function returns #G_MAXINT64.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">max decoding time.</doc>
+ <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_oldest_frame"
+ c:identifier="gst_video_encoder_get_oldest_frame">
+ <doc xml:space="preserve">Get the oldest unfinished pending #GstVideoCodecFrame</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">oldest unfinished pending #GstVideoCodecFrame</doc>
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_output_state"
+ c:identifier="gst_video_encoder_get_output_state">
+ <doc xml:space="preserve">Get the current #GstVideoCodecState</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">#GstVideoCodecState describing format of video data.</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_qos_enabled"
+ c:identifier="gst_video_encoder_is_qos_enabled"
+ version="1.14">
+ <doc xml:space="preserve">Checks if @encoder is currently configured to handle Quality-of-Service
+events from downstream.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the encoder is configured to perform Quality-of-Service.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">the encoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="merge_tags" c:identifier="gst_video_encoder_merge_tags">
+ <doc xml:space="preserve">Sets the video encoder tags and how they should be merged with any
+upstream stream tags. This will override any tags previously-set
+with gst_video_encoder_merge_tags().
+
+Note that this is provided for convenience, and the subclass is
+not required to use this and can still do tag handling on its own.
+
+MT safe.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="tags"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
+ previously-set tags</doc>
+ <type name="Gst.TagList" c:type="const GstTagList*"/>
+ </parameter>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
+ <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="negotiate" c:identifier="gst_video_encoder_negotiate">
+ <doc xml:space="preserve">Negotiate with downstream elements to currently configured #GstVideoCodecState.
+Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
+negotiate fails.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="proxy_getcaps"
+ c:identifier="gst_video_encoder_proxy_getcaps">
+ <doc xml:space="preserve">Returns caps that express @caps (or sink template caps if @caps == NULL)
+restricted to resolution/format/... combinations supported by downstream
+elements (e.g. muxers).</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a #GstCaps owned by caller</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="enc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="caps"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">initial caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="filter"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">filter caps</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_headers" c:identifier="gst_video_encoder_set_headers">
+ <doc xml:space="preserve">Set the codec headers to be sent downstream whenever requested.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="headers" transfer-ownership="full">
+ <doc xml:space="preserve">a list of #GstBuffer containing the codec header</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="Gst.Buffer"/>
+ </type>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_latency" c:identifier="gst_video_encoder_set_latency">
+ <doc xml:space="preserve">Informs baseclass of encoding latency.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="min_latency" transfer-ownership="none">
+ <doc xml:space="preserve">minimum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="max_latency" transfer-ownership="none">
+ <doc xml:space="preserve">maximum latency</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_min_pts" c:identifier="gst_video_encoder_set_min_pts">
+ <doc xml:space="preserve">Request minimal value for PTS passed to handle_frame.
+
+For streams with reordered frames this can be used to ensure that there
+is enough time to accomodate first DTS, which may be less than first PTS
+
+Since 1.6</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="min_pts" transfer-ownership="none">
+ <doc xml:space="preserve">minimal PTS that will be passed to handle_frame</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_output_state"
+ c:identifier="gst_video_encoder_set_output_state">
+ <doc xml:space="preserve">Creates a new #GstVideoCodecState with the specified caps as the output state
+for the encoder.
+Any previously set output state on @encoder will be replaced by the newly
+created one.
+
+The specified @caps should not contain any resolution, pixel-aspect-ratio,
+framerate, codec-data, .... Those should be specified instead in the returned
+#GstVideoCodecState.
+
+If the subclass wishes to copy over existing fields (like pixel aspect ratio,
+or framerate) from an existing #GstVideoCodecState, it can be provided as a
+@reference.
+
+If the subclass wishes to override some fields from the output state (like
+pixel-aspect-ratio or framerate) it can do so on the returned #GstVideoCodecState.
+
+The new output state will only take effect (set on pads and buffers) starting
+from the next call to #gst_video_encoder_finish_frame().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the newly configured output state.</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="full">
+ <doc xml:space="preserve">the #GstCaps to use for the output</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="reference"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">An optional reference @GstVideoCodecState</doc>
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_qos_enabled"
+ c:identifier="gst_video_encoder_set_qos_enabled"
+ version="1.14">
+ <doc xml:space="preserve">Configures @encoder to handle Quality-of-Service events from downstream.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">the encoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </instance-parameter>
+ <parameter name="enabled" transfer-ownership="none">
+ <doc xml:space="preserve">the new qos value.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="qos" writable="1" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element" readable="0" private="1">
+ <type name="Gst.Element" c:type="GstElement"/>
+ </field>
+ <field name="sinkpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="srcpad" readable="0" private="1">
+ <type name="Gst.Pad" c:type="GstPad*"/>
+ </field>
+ <field name="stream_lock" readable="0" private="1">
+ <type name="GLib.RecMutex" c:type="GRecMutex"/>
+ </field>
+ <field name="input_segment" readable="0" private="1">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="output_segment" readable="0" private="1">
+ <type name="Gst.Segment" c:type="GstSegment"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoEncoderPrivate" c:type="GstVideoEncoderPrivate*"/>
+ </field>
+ <field name="padding" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoEncoderClass"
+ c:type="GstVideoEncoderClass"
+ glib:is-gtype-struct-for="VideoEncoder">
+ <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @handle_frame needs to be overridden, and @set_format
+and @get_caps are likely needed as well.</doc>
+ <field name="element_class" readable="0" private="1">
+ <type name="Gst.ElementClass" c:type="GstElementClass"/>
+ </field>
+ <field name="open">
+ <callback name="open">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="close">
+ <callback name="close">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="start">
+ <callback name="start">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="stop">
+ <callback name="stop">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_format">
+ <callback name="set_format">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="state" transfer-ownership="none">
+ <type name="VideoCodecState" c:type="GstVideoCodecState*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_frame">
+ <callback name="handle_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="reset">
+ <callback name="reset">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="hard" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="finish">
+ <callback name="finish">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="pre_push">
+ <callback name="pre_push">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="getcaps">
+ <callback name="getcaps">
+ <return-value transfer-ownership="full">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <parameter name="enc" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_event">
+ <callback name="sink_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_event">
+ <callback name="src_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="negotiate">
+ <callback name="negotiate">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the negotiation succeeded, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoEncoder</doc>
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="decide_allocation">
+ <callback name="decide_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="propose_allocation">
+ <callback name="propose_allocation">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="flush">
+ <callback name="flush">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="sink_query">
+ <callback name="sink_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="src_query">
+ <callback name="src_query">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="query" transfer-ownership="none">
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_meta">
+ <callback name="transform_meta">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="encoder" transfer-ownership="none">
+ <type name="VideoEncoder" c:type="GstVideoEncoder*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoCodecFrame" c:type="GstVideoCodecFrame*"/>
+ </parameter>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="Gst.Meta" c:type="GstMeta*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoEncoderPrivate"
+ c:type="GstVideoEncoderPrivate"
+ disguised="1">
+ </record>
+ <enumeration name="VideoFieldOrder"
+ version="1.12"
+ glib:type-name="GstVideoFieldOrder"
+ glib:get-type="gst_video_field_order_get_type"
+ c:type="GstVideoFieldOrder">
+ <doc xml:space="preserve">Field order of interlaced content. This is only valid for
+interlace-mode=interleaved and not interlace-mode=mixed. In the case of
+mixed or GST_VIDEO_FIELD_ORDER_UNKOWN, the field order is signalled via
+buffer flags.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_FIELD_ORDER_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown field order for interlaced content.
+ The actual field order is signalled via buffer flags.</doc>
+ </member>
+ <member name="top_field_first"
+ value="1"
+ c:identifier="GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST"
+ glib:nick="top-field-first">
+ <doc xml:space="preserve">top field is first</doc>
+ </member>
+ <member name="bottom_field_first"
+ value="2"
+ c:identifier="GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST"
+ glib:nick="bottom-field-first">
+ <doc xml:space="preserve">bottom field is first</doc>
+ </member>
+ <function name="from_string"
+ c:identifier="gst_video_field_order_from_string"
+ version="1.12">
+ <doc xml:space="preserve">Convert @order to a #GstVideoFieldOrder</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFieldOrder of @order or
+ #GST_VIDEO_FIELD_ORDER_UNKNOWN when @order is not a valid
+ string representation for a #GstVideoFieldOrder.</doc>
+ <type name="VideoFieldOrder" c:type="GstVideoFieldOrder"/>
+ </return-value>
+ <parameters>
+ <parameter name="order" transfer-ownership="none">
+ <doc xml:space="preserve">a field order</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_string"
+ c:identifier="gst_video_field_order_to_string"
+ version="1.12">
+ <doc xml:space="preserve">Convert @order to its string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@order as a string or NULL if @order in invalid.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="order" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFieldOrder</doc>
+ <type name="VideoFieldOrder" c:type="GstVideoFieldOrder"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <class name="VideoFilter"
+ c:symbol-prefix="video_filter"
+ c:type="GstVideoFilter"
+ parent="GstBase.BaseTransform"
+ abstract="1"
+ glib:type-name="GstVideoFilter"
+ glib:get-type="gst_video_filter_get_type"
+ glib:type-struct="VideoFilterClass">
+ <doc xml:space="preserve">Provides useful functions and a base class for video filters.
+
+The videofilter will by default enable QoS on the parent GstBaseTransform
+to implement frame dropping.</doc>
+ <virtual-method name="set_info">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </instance-parameter>
+ <parameter name="incaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="in_info" transfer-ownership="none">
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="outcaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="filter" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </instance-parameter>
+ <parameter name="inframe" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ <parameter name="outframe" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="transform_frame_ip">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="trans" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </instance-parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <field name="element">
+ <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+ </field>
+ <field name="negotiated">
+ <type name="gboolean" c:type="gboolean"/>
+ </field>
+ <field name="in_info">
+ <type name="VideoInfo" c:type="GstVideoInfo"/>
+ </field>
+ <field name="out_info">
+ <type name="VideoInfo" c:type="GstVideoInfo"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoFilterClass"
+ c:type="GstVideoFilterClass"
+ glib:is-gtype-struct-for="VideoFilter">
+ <doc xml:space="preserve">The video filter class structure.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="GstBase.BaseTransformClass"
+ c:type="GstBaseTransformClass"/>
+ </field>
+ <field name="set_info">
+ <callback name="set_info">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </parameter>
+ <parameter name="incaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="in_info" transfer-ownership="none">
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="outcaps" transfer-ownership="none">
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_frame">
+ <callback name="transform_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="filter" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </parameter>
+ <parameter name="inframe" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ <parameter name="outframe" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="transform_frame_ip">
+ <callback name="transform_frame_ip">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="trans" transfer-ownership="none">
+ <type name="VideoFilter" c:type="GstVideoFilter*"/>
+ </parameter>
+ <parameter name="frame" transfer-ownership="none">
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <bitfield name="VideoFlags"
+ glib:type-name="GstVideoFlags"
+ glib:get-type="gst_video_flags_get_type"
+ c:type="GstVideoFlags">
+ <doc xml:space="preserve">Extra video flags</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="variable_fps"
+ value="1"
+ c:identifier="GST_VIDEO_FLAG_VARIABLE_FPS"
+ glib:nick="variable-fps">
+ <doc xml:space="preserve">a variable fps is selected, fps_n and fps_d
+ denote the maximum fps of the video</doc>
+ </member>
+ <member name="premultiplied_alpha"
+ value="2"
+ c:identifier="GST_VIDEO_FLAG_PREMULTIPLIED_ALPHA"
+ glib:nick="premultiplied-alpha">
+ <doc xml:space="preserve">Each color has been scaled by the alpha
+ value.</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoFormat"
+ glib:type-name="GstVideoFormat"
+ glib:get-type="gst_video_format_get_type"
+ c:type="GstVideoFormat">
+ <doc xml:space="preserve">Enum value describing the most common video formats.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_FORMAT_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">Unknown or unset video format id</doc>
+ </member>
+ <member name="encoded"
+ value="1"
+ c:identifier="GST_VIDEO_FORMAT_ENCODED"
+ glib:nick="encoded">
+ <doc xml:space="preserve">Encoded video format. Only ever use that in caps for
+ special video formats in combination with non-system
+ memory GstCapsFeatures where it does not make sense
+ to specify a real video format.</doc>
+ </member>
+ <member name="i420"
+ value="2"
+ c:identifier="GST_VIDEO_FORMAT_I420"
+ glib:nick="i420">
+ <doc xml:space="preserve">planar 4:2:0 YUV</doc>
+ </member>
+ <member name="yv12"
+ value="3"
+ c:identifier="GST_VIDEO_FORMAT_YV12"
+ glib:nick="yv12">
+ <doc xml:space="preserve">planar 4:2:0 YVU (like I420 but UV planes swapped)</doc>
+ </member>
+ <member name="yuy2"
+ value="4"
+ c:identifier="GST_VIDEO_FORMAT_YUY2"
+ glib:nick="yuy2">
+ <doc xml:space="preserve">packed 4:2:2 YUV (Y0-U0-Y1-V0 Y2-U2-Y3-V2 Y4 ...)</doc>
+ </member>
+ <member name="uyvy"
+ value="5"
+ c:identifier="GST_VIDEO_FORMAT_UYVY"
+ glib:nick="uyvy">
+ <doc xml:space="preserve">packed 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)</doc>
+ </member>
+ <member name="ayuv"
+ value="6"
+ c:identifier="GST_VIDEO_FORMAT_AYUV"
+ glib:nick="ayuv">
+ <doc xml:space="preserve">packed 4:4:4 YUV with alpha channel (A0-Y0-U0-V0 ...)</doc>
+ </member>
+ <member name="rgbx"
+ value="7"
+ c:identifier="GST_VIDEO_FORMAT_RGBx"
+ glib:nick="rgbx">
+ <doc xml:space="preserve">sparse rgb packed into 32 bit, space last</doc>
+ </member>
+ <member name="bgrx"
+ value="8"
+ c:identifier="GST_VIDEO_FORMAT_BGRx"
+ glib:nick="bgrx">
+ <doc xml:space="preserve">sparse reverse rgb packed into 32 bit, space last</doc>
+ </member>
+ <member name="xrgb"
+ value="9"
+ c:identifier="GST_VIDEO_FORMAT_xRGB"
+ glib:nick="xrgb">
+ <doc xml:space="preserve">sparse rgb packed into 32 bit, space first</doc>
+ </member>
+ <member name="xbgr"
+ value="10"
+ c:identifier="GST_VIDEO_FORMAT_xBGR"
+ glib:nick="xbgr">
+ <doc xml:space="preserve">sparse reverse rgb packed into 32 bit, space first</doc>
+ </member>
+ <member name="rgba"
+ value="11"
+ c:identifier="GST_VIDEO_FORMAT_RGBA"
+ glib:nick="rgba">
+ <doc xml:space="preserve">rgb with alpha channel last</doc>
+ </member>
+ <member name="bgra"
+ value="12"
+ c:identifier="GST_VIDEO_FORMAT_BGRA"
+ glib:nick="bgra">
+ <doc xml:space="preserve">reverse rgb with alpha channel last</doc>
+ </member>
+ <member name="argb"
+ value="13"
+ c:identifier="GST_VIDEO_FORMAT_ARGB"
+ glib:nick="argb">
+ <doc xml:space="preserve">rgb with alpha channel first</doc>
+ </member>
+ <member name="abgr"
+ value="14"
+ c:identifier="GST_VIDEO_FORMAT_ABGR"
+ glib:nick="abgr">
+ <doc xml:space="preserve">reverse rgb with alpha channel first</doc>
+ </member>
+ <member name="rgb"
+ value="15"
+ c:identifier="GST_VIDEO_FORMAT_RGB"
+ glib:nick="rgb">
+ <doc xml:space="preserve">rgb</doc>
+ </member>
+ <member name="bgr"
+ value="16"
+ c:identifier="GST_VIDEO_FORMAT_BGR"
+ glib:nick="bgr">
+ <doc xml:space="preserve">reverse rgb</doc>
+ </member>
+ <member name="y41b"
+ value="17"
+ c:identifier="GST_VIDEO_FORMAT_Y41B"
+ glib:nick="y41b">
+ <doc xml:space="preserve">planar 4:1:1 YUV</doc>
+ </member>
+ <member name="y42b"
+ value="18"
+ c:identifier="GST_VIDEO_FORMAT_Y42B"
+ glib:nick="y42b">
+ <doc xml:space="preserve">planar 4:2:2 YUV</doc>
+ </member>
+ <member name="yvyu"
+ value="19"
+ c:identifier="GST_VIDEO_FORMAT_YVYU"
+ glib:nick="yvyu">
+ <doc xml:space="preserve">packed 4:2:2 YUV (Y0-V0-Y1-U0 Y2-V2-Y3-U2 Y4 ...)</doc>
+ </member>
+ <member name="y444"
+ value="20"
+ c:identifier="GST_VIDEO_FORMAT_Y444"
+ glib:nick="y444">
+ <doc xml:space="preserve">planar 4:4:4 YUV</doc>
+ </member>
+ <member name="v210"
+ value="21"
+ c:identifier="GST_VIDEO_FORMAT_v210"
+ glib:nick="v210">
+ <doc xml:space="preserve">packed 4:2:2 10-bit YUV, complex format</doc>
+ </member>
+ <member name="v216"
+ value="22"
+ c:identifier="GST_VIDEO_FORMAT_v216"
+ glib:nick="v216">
+ <doc xml:space="preserve">packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order</doc>
+ </member>
+ <member name="nv12"
+ value="23"
+ c:identifier="GST_VIDEO_FORMAT_NV12"
+ glib:nick="nv12">
+ <doc xml:space="preserve">planar 4:2:0 YUV with interleaved UV plane</doc>
+ </member>
+ <member name="nv21"
+ value="24"
+ c:identifier="GST_VIDEO_FORMAT_NV21"
+ glib:nick="nv21">
+ <doc xml:space="preserve">planar 4:2:0 YUV with interleaved VU plane</doc>
+ </member>
+ <member name="gray8"
+ value="25"
+ c:identifier="GST_VIDEO_FORMAT_GRAY8"
+ glib:nick="gray8">
+ <doc xml:space="preserve">8-bit grayscale</doc>
+ </member>
+ <member name="gray16_be"
+ value="26"
+ c:identifier="GST_VIDEO_FORMAT_GRAY16_BE"
+ glib:nick="gray16-be">
+ <doc xml:space="preserve">16-bit grayscale, most significant byte first</doc>
+ </member>
+ <member name="gray16_le"
+ value="27"
+ c:identifier="GST_VIDEO_FORMAT_GRAY16_LE"
+ glib:nick="gray16-le">
+ <doc xml:space="preserve">16-bit grayscale, least significant byte first</doc>
+ </member>
+ <member name="v308"
+ value="28"
+ c:identifier="GST_VIDEO_FORMAT_v308"
+ glib:nick="v308">
+ <doc xml:space="preserve">packed 4:4:4 YUV (Y-U-V ...)</doc>
+ </member>
+ <member name="rgb16"
+ value="29"
+ c:identifier="GST_VIDEO_FORMAT_RGB16"
+ glib:nick="rgb16">
+ <doc xml:space="preserve">rgb 5-6-5 bits per component</doc>
+ </member>
+ <member name="bgr16"
+ value="30"
+ c:identifier="GST_VIDEO_FORMAT_BGR16"
+ glib:nick="bgr16">
+ <doc xml:space="preserve">reverse rgb 5-6-5 bits per component</doc>
+ </member>
+ <member name="rgb15"
+ value="31"
+ c:identifier="GST_VIDEO_FORMAT_RGB15"
+ glib:nick="rgb15">
+ <doc xml:space="preserve">rgb 5-5-5 bits per component</doc>
+ </member>
+ <member name="bgr15"
+ value="32"
+ c:identifier="GST_VIDEO_FORMAT_BGR15"
+ glib:nick="bgr15">
+ <doc xml:space="preserve">reverse rgb 5-5-5 bits per component</doc>
+ </member>
+ <member name="uyvp"
+ value="33"
+ c:identifier="GST_VIDEO_FORMAT_UYVP"
+ glib:nick="uyvp">
+ <doc xml:space="preserve">packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)</doc>
+ </member>
+ <member name="a420"
+ value="34"
+ c:identifier="GST_VIDEO_FORMAT_A420"
+ glib:nick="a420">
+ <doc xml:space="preserve">planar 4:4:2:0 AYUV</doc>
+ </member>
+ <member name="rgb8p"
+ value="35"
+ c:identifier="GST_VIDEO_FORMAT_RGB8P"
+ glib:nick="rgb8p">
+ <doc xml:space="preserve">8-bit paletted RGB</doc>
+ </member>
+ <member name="yuv9"
+ value="36"
+ c:identifier="GST_VIDEO_FORMAT_YUV9"
+ glib:nick="yuv9">
+ <doc xml:space="preserve">planar 4:1:0 YUV</doc>
+ </member>
+ <member name="yvu9"
+ value="37"
+ c:identifier="GST_VIDEO_FORMAT_YVU9"
+ glib:nick="yvu9">
+ <doc xml:space="preserve">planar 4:1:0 YUV (like YUV9 but UV planes swapped)</doc>
+ </member>
+ <member name="iyu1"
+ value="38"
+ c:identifier="GST_VIDEO_FORMAT_IYU1"
+ glib:nick="iyu1">
+ <doc xml:space="preserve">packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...)</doc>
+ </member>
+ <member name="argb64"
+ value="39"
+ c:identifier="GST_VIDEO_FORMAT_ARGB64"
+ glib:nick="argb64">
+ <doc xml:space="preserve">rgb with alpha channel first, 16 bits per channel</doc>
+ </member>
+ <member name="ayuv64"
+ value="40"
+ c:identifier="GST_VIDEO_FORMAT_AYUV64"
+ glib:nick="ayuv64">
+ <doc xml:space="preserve">packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...)</doc>
+ </member>
+ <member name="r210"
+ value="41"
+ c:identifier="GST_VIDEO_FORMAT_r210"
+ glib:nick="r210">
+ <doc xml:space="preserve">packed 4:4:4 RGB, 10 bits per channel</doc>
+ </member>
+ <member name="i420_10be"
+ value="42"
+ c:identifier="GST_VIDEO_FORMAT_I420_10BE"
+ glib:nick="i420-10be">
+ <doc xml:space="preserve">planar 4:2:0 YUV, 10 bits per channel</doc>
+ </member>
+ <member name="i420_10le"
+ value="43"
+ c:identifier="GST_VIDEO_FORMAT_I420_10LE"
+ glib:nick="i420-10le">
+ <doc xml:space="preserve">planar 4:2:0 YUV, 10 bits per channel</doc>
+ </member>
+ <member name="i422_10be"
+ value="44"
+ c:identifier="GST_VIDEO_FORMAT_I422_10BE"
+ glib:nick="i422-10be">
+ <doc xml:space="preserve">planar 4:2:2 YUV, 10 bits per channel</doc>
+ </member>
+ <member name="i422_10le"
+ value="45"
+ c:identifier="GST_VIDEO_FORMAT_I422_10LE"
+ glib:nick="i422-10le">
+ <doc xml:space="preserve">planar 4:2:2 YUV, 10 bits per channel</doc>
+ </member>
+ <member name="y444_10be"
+ value="46"
+ c:identifier="GST_VIDEO_FORMAT_Y444_10BE"
+ glib:nick="y444-10be">
+ <doc xml:space="preserve">planar 4:4:4 YUV, 10 bits per channel (Since: 1.2)</doc>
+ </member>
+ <member name="y444_10le"
+ value="47"
+ c:identifier="GST_VIDEO_FORMAT_Y444_10LE"
+ glib:nick="y444-10le">
+ <doc xml:space="preserve">planar 4:4:4 YUV, 10 bits per channel (Since: 1.2)</doc>
+ </member>
+ <member name="gbr"
+ value="48"
+ c:identifier="GST_VIDEO_FORMAT_GBR"
+ glib:nick="gbr">
+ <doc xml:space="preserve">planar 4:4:4 RGB, 8 bits per channel (Since: 1.2)</doc>
+ </member>
+ <member name="gbr_10be"
+ value="49"
+ c:identifier="GST_VIDEO_FORMAT_GBR_10BE"
+ glib:nick="gbr-10be">
+ <doc xml:space="preserve">planar 4:4:4 RGB, 10 bits per channel (Since: 1.2)</doc>
+ </member>
+ <member name="gbr_10le"
+ value="50"
+ c:identifier="GST_VIDEO_FORMAT_GBR_10LE"
+ glib:nick="gbr-10le">
+ <doc xml:space="preserve">planar 4:4:4 RGB, 10 bits per channel (Since: 1.2)</doc>
+ </member>
+ <member name="nv16"
+ value="51"
+ c:identifier="GST_VIDEO_FORMAT_NV16"
+ glib:nick="nv16">
+ <doc xml:space="preserve">planar 4:2:2 YUV with interleaved UV plane (Since: 1.2)</doc>
+ </member>
+ <member name="nv24"
+ value="52"
+ c:identifier="GST_VIDEO_FORMAT_NV24"
+ glib:nick="nv24">
+ <doc xml:space="preserve">planar 4:4:4 YUV with interleaved UV plane (Since: 1.2)</doc>
+ </member>
+ <member name="nv12_64z32"
+ value="53"
+ c:identifier="GST_VIDEO_FORMAT_NV12_64Z32"
+ glib:nick="nv12-64z32">
+ <doc xml:space="preserve">NV12 with 64x32 tiling in zigzag pattern (Since: 1.4)</doc>
+ </member>
+ <member name="a420_10be"
+ value="54"
+ c:identifier="GST_VIDEO_FORMAT_A420_10BE"
+ glib:nick="a420-10be">
+ <doc xml:space="preserve">planar 4:4:2:0 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="a420_10le"
+ value="55"
+ c:identifier="GST_VIDEO_FORMAT_A420_10LE"
+ glib:nick="a420-10le">
+ <doc xml:space="preserve">planar 4:4:2:0 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="a422_10be"
+ value="56"
+ c:identifier="GST_VIDEO_FORMAT_A422_10BE"
+ glib:nick="a422-10be">
+ <doc xml:space="preserve">planar 4:4:2:2 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="a422_10le"
+ value="57"
+ c:identifier="GST_VIDEO_FORMAT_A422_10LE"
+ glib:nick="a422-10le">
+ <doc xml:space="preserve">planar 4:4:2:2 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="a444_10be"
+ value="58"
+ c:identifier="GST_VIDEO_FORMAT_A444_10BE"
+ glib:nick="a444-10be">
+ <doc xml:space="preserve">planar 4:4:4:4 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="a444_10le"
+ value="59"
+ c:identifier="GST_VIDEO_FORMAT_A444_10LE"
+ glib:nick="a444-10le">
+ <doc xml:space="preserve">planar 4:4:4:4 YUV, 10 bits per channel (Since: 1.6)</doc>
+ </member>
+ <member name="nv61"
+ value="60"
+ c:identifier="GST_VIDEO_FORMAT_NV61"
+ glib:nick="nv61">
+ <doc xml:space="preserve">planar 4:2:2 YUV with interleaved VU plane (Since: 1.6)</doc>
+ </member>
+ <member name="p010_10be"
+ value="61"
+ c:identifier="GST_VIDEO_FORMAT_P010_10BE"
+ glib:nick="p010-10be">
+ <doc xml:space="preserve">planar 4:2:0 YUV with interleaved UV plane, 10 bits per channel (Since: 1.10)</doc>
+ </member>
+ <member name="p010_10le"
+ value="62"
+ c:identifier="GST_VIDEO_FORMAT_P010_10LE"
+ glib:nick="p010-10le">
+ <doc xml:space="preserve">planar 4:2:0 YUV with interleaved UV plane, 10 bits per channel (Since: 1.10)</doc>
+ </member>
+ <member name="iyu2"
+ value="63"
+ c:identifier="GST_VIDEO_FORMAT_IYU2"
+ glib:nick="iyu2">
+ <doc xml:space="preserve">packed 4:4:4 YUV (U-Y-V ...) (Since 1.10)</doc>
+ </member>
+ <member name="vyuy"
+ value="64"
+ c:identifier="GST_VIDEO_FORMAT_VYUY"
+ glib:nick="vyuy">
+ <doc xml:space="preserve">packed 4:2:2 YUV (V0-Y0-U0-Y1 V2-Y2-U2-Y3 V4 ...)</doc>
+ </member>
+ <member name="gbra"
+ value="65"
+ c:identifier="GST_VIDEO_FORMAT_GBRA"
+ glib:nick="gbra">
+ <doc xml:space="preserve">planar 4:4:4:4 ARGB, 8 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbra_10be"
+ value="66"
+ c:identifier="GST_VIDEO_FORMAT_GBRA_10BE"
+ glib:nick="gbra-10be">
+ <doc xml:space="preserve">planar 4:4:4:4 ARGB, 10 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbra_10le"
+ value="67"
+ c:identifier="GST_VIDEO_FORMAT_GBRA_10LE"
+ glib:nick="gbra-10le">
+ <doc xml:space="preserve">planar 4:4:4:4 ARGB, 10 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbr_12be"
+ value="68"
+ c:identifier="GST_VIDEO_FORMAT_GBR_12BE"
+ glib:nick="gbr-12be">
+ <doc xml:space="preserve">planar 4:4:4 RGB, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbr_12le"
+ value="69"
+ c:identifier="GST_VIDEO_FORMAT_GBR_12LE"
+ glib:nick="gbr-12le">
+ <doc xml:space="preserve">planar 4:4:4 RGB, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbra_12be"
+ value="70"
+ c:identifier="GST_VIDEO_FORMAT_GBRA_12BE"
+ glib:nick="gbra-12be">
+ <doc xml:space="preserve">planar 4:4:4:4 ARGB, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gbra_12le"
+ value="71"
+ c:identifier="GST_VIDEO_FORMAT_GBRA_12LE"
+ glib:nick="gbra-12le">
+ <doc xml:space="preserve">planar 4:4:4:4 ARGB, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="i420_12be"
+ value="72"
+ c:identifier="GST_VIDEO_FORMAT_I420_12BE"
+ glib:nick="i420-12be">
+ <doc xml:space="preserve">planar 4:2:0 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="i420_12le"
+ value="73"
+ c:identifier="GST_VIDEO_FORMAT_I420_12LE"
+ glib:nick="i420-12le">
+ <doc xml:space="preserve">planar 4:2:0 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="i422_12be"
+ value="74"
+ c:identifier="GST_VIDEO_FORMAT_I422_12BE"
+ glib:nick="i422-12be">
+ <doc xml:space="preserve">planar 4:2:2 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="i422_12le"
+ value="75"
+ c:identifier="GST_VIDEO_FORMAT_I422_12LE"
+ glib:nick="i422-12le">
+ <doc xml:space="preserve">planar 4:2:2 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="y444_12be"
+ value="76"
+ c:identifier="GST_VIDEO_FORMAT_Y444_12BE"
+ glib:nick="y444-12be">
+ <doc xml:space="preserve">planar 4:4:4 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="y444_12le"
+ value="77"
+ c:identifier="GST_VIDEO_FORMAT_Y444_12LE"
+ glib:nick="y444-12le">
+ <doc xml:space="preserve">planar 4:4:4 YUV, 12 bits per channel (Since: 1.12)</doc>
+ </member>
+ <member name="gray10_le32"
+ value="78"
+ c:identifier="GST_VIDEO_FORMAT_GRAY10_LE32"
+ glib:nick="gray10-le32">
+ <doc xml:space="preserve">10-bit grayscale, packed into 32bit words (2 bits padding) (Since: 1.14)</doc>
+ </member>
+ <member name="nv12_10le32"
+ value="79"
+ c:identifier="GST_VIDEO_FORMAT_NV12_10LE32"
+ glib:nick="nv12-10le32">
+ <doc xml:space="preserve">10-bit variant of @GST_VIDEO_FORMAT_NV12, packed into 32bit words (MSB 2 bits padding) (Since: 1.14)</doc>
+ </member>
+ <member name="nv16_10le32"
+ value="80"
+ c:identifier="GST_VIDEO_FORMAT_NV16_10LE32"
+ glib:nick="nv16-10le32">
+ <doc xml:space="preserve">10-bit variant of @GST_VIDEO_FORMAT_NV16, packed into 32bit words (MSB 2 bits padding) (Since: 1.14)</doc>
+ </member>
+ <function name="from_fourcc" c:identifier="gst_video_format_from_fourcc">
+ <doc xml:space="preserve">Converts a FOURCC value into the corresponding #GstVideoFormat.
+If the FOURCC cannot be represented by #GstVideoFormat,
+#GST_VIDEO_FORMAT_UNKNOWN is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat describing the FOURCC value</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="fourcc" transfer-ownership="none">
+ <doc xml:space="preserve">a FOURCC value representing raw YUV video</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="from_masks" c:identifier="gst_video_format_from_masks">
+ <doc xml:space="preserve">Find the #GstVideoFormat for the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat or GST_VIDEO_FORMAT_UNKNOWN when the parameters to
+not specify a known format.</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="depth" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of bits used for a pixel</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="bpp" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of bits used to store a pixel. This value is bigger than
+ @depth</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="endianness" transfer-ownership="none">
+ <doc xml:space="preserve">the endianness of the masks, #G_LITTLE_ENDIAN or #G_BIG_ENDIAN</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="red_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the red mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="green_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the green mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="blue_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the blue mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="alpha_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the alpha mask, or 0 if no alpha mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="from_string" c:identifier="gst_video_format_from_string">
+ <doc xml:space="preserve">Convert the @format string to its #GstVideoFormat.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat for @format or GST_VIDEO_FORMAT_UNKNOWN when the
+string is not a known format.</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_info" c:identifier="gst_video_format_get_info">
+ <doc xml:space="preserve">Get the #GstVideoFormatInfo for @format</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoFormatInfo for @format.</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_palette"
+ c:identifier="gst_video_format_get_palette"
+ version="1.2">
+ <doc xml:space="preserve">Get the default palette of @format. This the palette used in the pack
+function for paletted formats.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the default palette of @format or %NULL when
+@format does not have a palette.</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">size of the palette in bytes</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_fourcc" c:identifier="gst_video_format_to_fourcc">
+ <doc xml:space="preserve">Converts a #GstVideoFormat value into the corresponding FOURCC. Only
+a few YUV formats have corresponding FOURCC values. If @format has
+no corresponding FOURCC value, 0 is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the FOURCC corresponding to @format</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_string" c:identifier="gst_video_format_to_string">
+ <doc xml:space="preserve">Returns a string containing a descriptive name for
+the #GstVideoFormat if there is one, or NULL otherwise.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name corresponding to @format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <bitfield name="VideoFormatFlags"
+ glib:type-name="GstVideoFormatFlags"
+ glib:get-type="gst_video_format_flags_get_type"
+ c:type="GstVideoFormatFlags">
+ <doc xml:space="preserve">The different video flags that a format info can have.</doc>
+ <member name="yuv"
+ value="1"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_YUV"
+ glib:nick="yuv">
+ <doc xml:space="preserve">The video format is YUV, components are numbered
+ 0=Y, 1=U, 2=V.</doc>
+ </member>
+ <member name="rgb"
+ value="2"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_RGB"
+ glib:nick="rgb">
+ <doc xml:space="preserve">The video format is RGB, components are numbered
+ 0=R, 1=G, 2=B.</doc>
+ </member>
+ <member name="gray"
+ value="4"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_GRAY"
+ glib:nick="gray">
+ <doc xml:space="preserve">The video is gray, there is one gray component
+ with index 0.</doc>
+ </member>
+ <member name="alpha"
+ value="8"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_ALPHA"
+ glib:nick="alpha">
+ <doc xml:space="preserve">The video format has an alpha components with
+ the number 3.</doc>
+ </member>
+ <member name="le"
+ value="16"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_LE"
+ glib:nick="le">
+ <doc xml:space="preserve">The video format has data stored in little
+ endianness.</doc>
+ </member>
+ <member name="palette"
+ value="32"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_PALETTE"
+ glib:nick="palette">
+ <doc xml:space="preserve">The video format has a palette. The palette
+ is stored in the second plane and indexes are stored in the first plane.</doc>
+ </member>
+ <member name="complex"
+ value="64"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_COMPLEX"
+ glib:nick="complex">
+ <doc xml:space="preserve">The video format has a complex layout that
+ can't be described with the usual information in the #GstVideoFormatInfo.</doc>
+ </member>
+ <member name="unpack"
+ value="128"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_UNPACK"
+ glib:nick="unpack">
+ <doc xml:space="preserve">This format can be used in a
+ #GstVideoFormatUnpack and #GstVideoFormatPack function.</doc>
+ </member>
+ <member name="tiled"
+ value="256"
+ c:identifier="GST_VIDEO_FORMAT_FLAG_TILED"
+ glib:nick="tiled">
+ <doc xml:space="preserve">The format is tiled, there is tiling information
+ in the last plane.</doc>
+ </member>
+ </bitfield>
+ <record name="VideoFormatInfo" c:type="GstVideoFormatInfo">
+ <doc xml:space="preserve">Information for a video format.</doc>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">#GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </field>
+ <field name="name" writable="1">
+ <doc xml:space="preserve">string representation of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="description" writable="1">
+ <doc xml:space="preserve">use readable description of the format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">#GstVideoFormatFlags</doc>
+ <type name="VideoFormatFlags" c:type="GstVideoFormatFlags"/>
+ </field>
+ <field name="bits" writable="1">
+ <doc xml:space="preserve">The number of bits used to pack data items. This can be less than 8
+ when multiple pixels are stored in a byte. for values &gt; 8 multiple bytes
+ should be read according to the endianness flag before applying the shift
+ and mask.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="n_components" writable="1">
+ <doc xml:space="preserve">the number of components in the video format.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="shift" writable="1">
+ <doc xml:space="preserve">the number of bits to shift away to get the component data</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="depth" writable="1">
+ <doc xml:space="preserve">the depth in bits for each component</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="pixel_stride" writable="1">
+ <doc xml:space="preserve">the pixel stride of each component. This is the amount of
+ bytes to the pixel immediately to the right. When bits &lt; 8, the stride is
+ expressed in bits. For 24-bit RGB, this would be 3 bytes, for example,
+ while it would be 4 bytes for RGBx or ARGB.</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </field>
+ <field name="n_planes" writable="1">
+ <doc xml:space="preserve">the number of planes for this format. The number of planes can be
+ less than the amount of components when multiple components are packed into
+ one plane.</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="plane" writable="1">
+ <doc xml:space="preserve">the plane number where a component can be found</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="poffset" writable="1">
+ <doc xml:space="preserve">the offset in the plane where the first pixel of the components
+ can be found.</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="w_sub" writable="1">
+ <doc xml:space="preserve">subsampling factor of the width for the component. Use
+ GST_VIDEO_SUB_SCALE to scale a width.</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="h_sub" writable="1">
+ <doc xml:space="preserve">subsampling factor of the height for the component. Use
+ GST_VIDEO_SUB_SCALE to scale a height.</doc>
+ <array zero-terminated="0" c:type="guint" fixed-size="4">
+ <type name="guint" c:type="guint"/>
+ </array>
+ </field>
+ <field name="unpack_format" writable="1">
+ <doc xml:space="preserve">the format of the unpacked pixels. This format must have the
+ #GST_VIDEO_FORMAT_FLAG_UNPACK flag set.</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </field>
+ <field name="unpack_func" writable="1">
+ <doc xml:space="preserve">an unpack function for this format</doc>
+ <type name="VideoFormatUnpack" c:type="GstVideoFormatUnpack"/>
+ </field>
+ <field name="pack_lines" writable="1">
+ <doc xml:space="preserve">the amount of lines that will be packed</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="pack_func" writable="1">
+ <doc xml:space="preserve">an pack function for this format</doc>
+ <type name="VideoFormatPack" c:type="GstVideoFormatPack"/>
+ </field>
+ <field name="tile_mode" writable="1">
+ <doc xml:space="preserve">The tiling mode</doc>
+ <type name="VideoTileMode" c:type="GstVideoTileMode"/>
+ </field>
+ <field name="tile_ws" writable="1">
+ <doc xml:space="preserve">The width of a tile, in bytes, represented as a shift</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="tile_hs" writable="1">
+ <doc xml:space="preserve">The height of a tile, in bytes, represented as a shift</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <callback name="VideoFormatPack" c:type="GstVideoFormatPack">
+ <doc xml:space="preserve">Packs @width pixels from @src to the given planes and strides in the
+format @info. The pixels from source have each component interleaved
+and will be packed into the planes in @data.
+
+This function operates on pack_lines lines, meaning that @src should
+contain at least pack_lines lines with a stride of @sstride and @y
+should be a multiple of pack_lines.
+
+Subsampled formats will use the horizontally and vertically cosited
+component from the source. Subsampling should be performed before
+packing.
+
+Because this function does not have a x coordinate, it is not possible to
+pack pixels starting from an unaligned position. For tiled images this
+means that packing should start from a tile coordinate. For subsampled
+formats this means that a complete pixel needs to be packed.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormatInfo</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags to control the packing</doc>
+ <type name="VideoPackFlags" c:type="GstVideoPackFlags"/>
+ </parameter>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a source array</doc>
+ <type name="gpointer" c:type="const gpointer"/>
+ </parameter>
+ <parameter name="sstride" transfer-ownership="none">
+ <doc xml:space="preserve">the source array stride</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointers to the destination data planes</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="stride" transfer-ownership="none">
+ <doc xml:space="preserve">strides of the destination planes</doc>
+ <type name="gint" c:type="const gint"/>
+ </parameter>
+ <parameter name="chroma_site" transfer-ownership="none">
+ <doc xml:space="preserve">the chroma siting of the target when subsampled (not used)</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">the y position in the image to pack to</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of pixels to pack.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="VideoFormatUnpack" c:type="GstVideoFormatUnpack">
+ <doc xml:space="preserve">Unpacks @width pixels from the given planes and strides containing data of
+format @info. The pixels will be unpacked into @dest with each component
+interleaved as per @info's unpack_format, which will usually be one of
+#GST_VIDEO_FORMAT_ARGB, #GST_VIDEO_FORMAT_AYUV, #GST_VIDEO_FORMAT_ARGB64 or
+#GST_VIDEO_FORMAT_AYUV64 depending on the format to unpack.
+@dest should at least be big enough to hold @width * bytes_per_pixel bytes
+where bytes_per_pixel relates to the unpack format and will usually be
+either 4 or 8 depending on the unpack format. bytes_per_pixel will be
+the same as the pixel stride for plane 0 for the above formats.
+
+For subsampled formats, the components will be duplicated in the destination
+array. Reconstruction of the missing components can be performed in a
+separate step after unpacking.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormatInfo</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags to control the unpacking</doc>
+ <type name="VideoPackFlags" c:type="GstVideoPackFlags"/>
+ </parameter>
+ <parameter name="dest"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a destination array</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pointers to the data planes</doc>
+ <type name="gpointer" c:type="const gpointer"/>
+ </parameter>
+ <parameter name="stride" transfer-ownership="none">
+ <doc xml:space="preserve">strides of the planes</doc>
+ <type name="gint" c:type="const gint"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">the x position in the image to start from</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">the y position in the image to start from</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of pixels to unpack.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="VideoFrame" c:type="GstVideoFrame">
+ <doc xml:space="preserve">A video frame obtained from gst_video_frame_map()</doc>
+ <field name="info" writable="1">
+ <doc xml:space="preserve">the #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">#GstVideoFrameFlags for the frame</doc>
+ <type name="VideoFrameFlags" c:type="GstVideoFrameFlags"/>
+ </field>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">the mapped buffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">pointer to metadata if any</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="id" writable="1">
+ <doc xml:space="preserve">id of the mapped frame. the id can for example be used to
+ indentify the frame in case of multiview video.</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="data" writable="1">
+ <doc xml:space="preserve">pointers to the plane data</doc>
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <field name="map" writable="1">
+ <doc xml:space="preserve">mappings of the planes</doc>
+ <array zero-terminated="0" c:type="GstMapInfo" fixed-size="4">
+ <type name="Gst.MapInfo" c:type="GstMapInfo"/>
+ </array>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="copy" c:identifier="gst_video_frame_copy">
+ <doc xml:space="preserve">Copy the contents from @src to @dest.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the contents could be copied.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </instance-parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="const GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy_plane" c:identifier="gst_video_frame_copy_plane">
+ <doc xml:space="preserve">Copy the plane with index @plane from @src to @dest.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the contents could be copied.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </instance-parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="const GstVideoFrame*"/>
+ </parameter>
+ <parameter name="plane" transfer-ownership="none">
+ <doc xml:space="preserve">a plane</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map" c:identifier="gst_video_frame_map">
+ <doc xml:space="preserve">Use @info and @buffer to fill in the values of @frame. @frame is usually
+allocated on the stack, and you will pass the address to the #GstVideoFrame
+structure allocated on the stack; gst_video_frame_map() will then fill in
+the structures with the various video-specific information you need to access
+the pixels of the video buffer. You can then use accessor macros such as
+GST_VIDEO_FRAME_COMP_DATA(), GST_VIDEO_FRAME_PLANE_DATA(),
+GST_VIDEO_FRAME_COMP_STRIDE(), GST_VIDEO_FRAME_PLANE_STRIDE() etc.
+to get to the pixels.
+
+|[&lt;!-- language="C" --&gt;
+ GstVideoFrame vframe;
+ ...
+ // set RGB pixels to black one at a time
+ if (gst_video_frame_map (&amp;amp;vframe, video_info, video_buffer, GST_MAP_WRITE)) {
+ guint8 *pixels = GST_VIDEO_FRAME_PLANE_DATA (vframe, 0);
+ guint stride = GST_VIDEO_FRAME_PLANE_STRIDE (vframe, 0);
+ guint pixel_stride = GST_VIDEO_FRAME_COMP_PSTRIDE (vframe, 0);
+
+ for (h = 0; h &lt; height; ++h) {
+ for (w = 0; w &lt; width; ++w) {
+ guint8 *pixel = pixels + h * stride + w * pixel_stride;
+
+ memset (pixel, 0, pixel_stride);
+ }
+ }
+
+ gst_video_frame_unmap (&amp;amp;vframe);
+ }
+ ...
+]|
+
+All video planes of @buffer will be mapped and the pointers will be set in
+@frame-&gt;data.
+
+The purpose of this function is to make it easy for you to get to the video
+pixels in a generic way, without you having to worry too much about details
+such as whether the video data is allocated in one contiguous memory chunk
+or multiple memory chunks (e.g. one for each plane); or if custom strides
+and custom plane offsets are used or not (as signalled by GstVideoMeta on
+each buffer). This function will just fill the #GstVideoFrame structure
+with the right values and if you use the accessor macros everything will
+just work and you can access the data easily. It also maps the underlying
+memory chunks for you.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to map</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMapFlags</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="map_id" c:identifier="gst_video_frame_map_id">
+ <doc xml:space="preserve">Use @info and @buffer to fill in the values of @frame with the video frame
+information of frame @id.
+
+When @id is -1, the default frame is mapped. When @id != -1, this function
+will return %FALSE when there is no GstVideoMeta with that id.
+
+All video planes of @buffer will be mapped and the pointers will be set in
+@frame-&gt;data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE on success.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">pointer to #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </instance-parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the buffer to map</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">the frame id to map</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstMapFlags</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_video_frame_unmap">
+ <doc xml:space="preserve">Unmap the memory previously mapped with gst_video_frame_map.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="frame" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="VideoFrameFlags"
+ glib:type-name="GstVideoFrameFlags"
+ glib:get-type="gst_video_frame_flags_get_type"
+ c:type="GstVideoFrameFlags">
+ <doc xml:space="preserve">Extra video frame flags</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_FRAME_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="interlaced"
+ value="1"
+ c:identifier="GST_VIDEO_FRAME_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">The video frame is interlaced. In mixed
+ interlace-mode, this flag specifies if the frame is interlaced or
+ progressive.</doc>
+ </member>
+ <member name="tff"
+ value="2"
+ c:identifier="GST_VIDEO_FRAME_FLAG_TFF"
+ glib:nick="tff">
+ <doc xml:space="preserve">The video frame has the top field first</doc>
+ </member>
+ <member name="rff"
+ value="4"
+ c:identifier="GST_VIDEO_FRAME_FLAG_RFF"
+ glib:nick="rff">
+ <doc xml:space="preserve">The video frame has the repeat flag</doc>
+ </member>
+ <member name="onefield"
+ value="8"
+ c:identifier="GST_VIDEO_FRAME_FLAG_ONEFIELD"
+ glib:nick="onefield">
+ <doc xml:space="preserve">The video frame has one field</doc>
+ </member>
+ <member name="multiple_view"
+ value="16"
+ c:identifier="GST_VIDEO_FRAME_FLAG_MULTIPLE_VIEW"
+ glib:nick="multiple-view">
+ <doc xml:space="preserve">The video contains one or
+ more non-mono views</doc>
+ </member>
+ <member name="first_in_bundle"
+ value="32"
+ c:identifier="GST_VIDEO_FRAME_FLAG_FIRST_IN_BUNDLE"
+ glib:nick="first-in-bundle">
+ <doc xml:space="preserve">The video frame is the first
+ in a set of corresponding views provided as sequential frames.</doc>
+ </member>
+ </bitfield>
+ <bitfield name="VideoFrameMapFlags"
+ version="1.6"
+ glib:type-name="GstVideoFrameMapFlags"
+ glib:get-type="gst_video_frame_map_flags_get_type"
+ c:type="GstVideoFrameMapFlags">
+ <doc xml:space="preserve">Additional mapping flags for gst_video_frame_map().</doc>
+ <member name="no_ref"
+ value="65536"
+ c:identifier="GST_VIDEO_FRAME_MAP_FLAG_NO_REF"
+ glib:nick="no-ref">
+ <doc xml:space="preserve">Don't take another reference of the buffer and store it in
+ the GstVideoFrame. This makes sure that the buffer stays
+ writable while the frame is mapped, but requires that the
+ buffer reference stays valid until the frame is unmapped again.</doc>
+ </member>
+ <member name="last"
+ value="16777216"
+ c:identifier="GST_VIDEO_FRAME_MAP_FLAG_LAST"
+ glib:nick="last">
+ <doc xml:space="preserve">Offset to define more flags</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoGLTextureOrientation"
+ c:type="GstVideoGLTextureOrientation">
+ <doc xml:space="preserve">The orientation of the GL texture.</doc>
+ <member name="normal_y_normal"
+ value="0"
+ c:identifier="GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL">
+ <doc xml:space="preserve">Top line first in memory, left row first</doc>
+ </member>
+ <member name="normal_y_flip"
+ value="1"
+ c:identifier="GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_FLIP">
+ <doc xml:space="preserve">Bottom line first in memory, left row first</doc>
+ </member>
+ <member name="flip_y_normal"
+ value="2"
+ c:identifier="GST_VIDEO_GL_TEXTURE_ORIENTATION_X_FLIP_Y_NORMAL">
+ <doc xml:space="preserve">Top line first in memory, right row first</doc>
+ </member>
+ <member name="flip_y_flip"
+ value="3"
+ c:identifier="GST_VIDEO_GL_TEXTURE_ORIENTATION_X_FLIP_Y_FLIP">
+ <doc xml:space="preserve">Bottom line first in memory, right row first</doc>
+ </member>
+ </enumeration>
+ <enumeration name="VideoGLTextureType" c:type="GstVideoGLTextureType">
+ <doc xml:space="preserve">The GL texture type.</doc>
+ <member name="luminance"
+ value="0"
+ c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE">
+ <doc xml:space="preserve">Luminance texture, GL_LUMINANCE</doc>
+ </member>
+ <member name="luminance_alpha"
+ value="1"
+ c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA">
+ <doc xml:space="preserve">Luminance-alpha texture, GL_LUMINANCE_ALPHA</doc>
+ </member>
+ <member name="rgb16"
+ value="2"
+ c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_RGB16">
+ <doc xml:space="preserve">RGB 565 texture, GL_RGB</doc>
+ </member>
+ <member name="rgb"
+ value="3"
+ c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_RGB">
+ <doc xml:space="preserve">RGB texture, GL_RGB</doc>
+ </member>
+ <member name="rgba"
+ value="4"
+ c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_RGBA">
+ <doc xml:space="preserve">RGBA texture, GL_RGBA</doc>
+ </member>
+ <member name="r" value="5" c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_R">
+ <doc xml:space="preserve">R texture, GL_RED_EXT</doc>
+ </member>
+ <member name="rg" value="6" c:identifier="GST_VIDEO_GL_TEXTURE_TYPE_RG">
+ <doc xml:space="preserve">RG texture, GL_RG_EXT</doc>
+ </member>
+ </enumeration>
+ <callback name="VideoGLTextureUpload" c:type="GstVideoGLTextureUpload">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="VideoGLTextureUploadMeta"
+ c:type="GstVideoGLTextureUploadMeta*"/>
+ </parameter>
+ <parameter name="texture_id" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="VideoGLTextureUploadMeta"
+ c:type="GstVideoGLTextureUploadMeta">
+ <doc xml:space="preserve">Extra buffer metadata for uploading a buffer to an OpenGL texture
+ID. The caller of gst_video_gl_texture_upload_meta_upload() must
+have OpenGL set up and call this from a thread where it is valid
+to upload something to an OpenGL texture.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="texture_orientation" writable="1">
+ <doc xml:space="preserve">Orientation of the textures</doc>
+ <type name="VideoGLTextureOrientation"
+ c:type="GstVideoGLTextureOrientation"/>
+ </field>
+ <field name="n_textures" writable="1">
+ <doc xml:space="preserve">Number of textures that are generated</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="texture_type" writable="1">
+ <doc xml:space="preserve">Type of each texture</doc>
+ <array zero-terminated="0"
+ c:type="GstVideoGLTextureType"
+ fixed-size="4">
+ <type name="VideoGLTextureType" c:type="GstVideoGLTextureType"/>
+ </array>
+ </field>
+ <field name="buffer" readable="0" private="1">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="upload" readable="0" private="1">
+ <type name="VideoGLTextureUpload" c:type="GstVideoGLTextureUpload"/>
+ </field>
+ <field name="user_data" readable="0" private="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </field>
+ <field name="user_data_copy" readable="0" private="1">
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </field>
+ <field name="user_data_free" readable="0" private="1">
+ <type name="GObject.BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
+ </field>
+ <method name="upload"
+ c:identifier="gst_video_gl_texture_upload_meta_upload">
+ <doc xml:space="preserve">Uploads the buffer which owns the meta to a specific texture ID.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if uploading succeeded, %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoGLTextureUploadMeta</doc>
+ <type name="VideoGLTextureUploadMeta"
+ c:type="GstVideoGLTextureUploadMeta*"/>
+ </instance-parameter>
+ <parameter name="texture_id" transfer-ownership="none">
+ <doc xml:space="preserve">the texture IDs to upload to</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="get_info"
+ c:identifier="gst_video_gl_texture_upload_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <enumeration name="VideoGammaMode"
+ version="1.6"
+ glib:type-name="GstVideoGammaMode"
+ glib:get-type="gst_video_gamma_mode_get_type"
+ c:type="GstVideoGammaMode">
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_GAMMA_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">disable gamma handling</doc>
+ </member>
+ <member name="remap"
+ value="1"
+ c:identifier="GST_VIDEO_GAMMA_MODE_REMAP"
+ glib:nick="remap">
+ <doc xml:space="preserve">convert between input and output gamma
+Different gamma conversion modes</doc>
+ </member>
+ </enumeration>
+ <record name="VideoInfo"
+ c:type="GstVideoInfo"
+ glib:type-name="GstVideoInfo"
+ glib:get-type="gst_video_info_get_type"
+ c:symbol-prefix="video_info">
+ <doc xml:space="preserve">Information describing image properties. This information can be filled
+in from GstCaps with gst_video_info_from_caps(). The information is also used
+to store the specific video info when mapping a video frame with
+gst_video_frame_map().
+
+Use the provided macros to access the info in this structure.</doc>
+ <field name="finfo" writable="1">
+ <doc xml:space="preserve">the format info of the video</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </field>
+ <field name="interlace_mode" writable="1">
+ <doc xml:space="preserve">the interlace mode</doc>
+ <type name="VideoInterlaceMode" c:type="GstVideoInterlaceMode"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">additional video flags</doc>
+ <type name="VideoFlags" c:type="GstVideoFlags"/>
+ </field>
+ <field name="width" writable="1">
+ <doc xml:space="preserve">the width of the video</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="height" writable="1">
+ <doc xml:space="preserve">the height of the video</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="size" writable="1">
+ <doc xml:space="preserve">the default size of one frame</doc>
+ <type name="gsize" c:type="gsize"/>
+ </field>
+ <field name="views" writable="1">
+ <doc xml:space="preserve">the number of views for multiview video</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="chroma_site" writable="1">
+ <doc xml:space="preserve">a #GstVideoChromaSite.</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </field>
+ <field name="colorimetry" writable="1">
+ <doc xml:space="preserve">the colorimetry info</doc>
+ <type name="VideoColorimetry" c:type="GstVideoColorimetry"/>
+ </field>
+ <field name="par_n" writable="1">
+ <doc xml:space="preserve">the pixel-aspect-ratio numerator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="par_d" writable="1">
+ <doc xml:space="preserve">the pixel-aspect-ratio demnominator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="fps_n" writable="1">
+ <doc xml:space="preserve">the framerate numerator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="fps_d" writable="1">
+ <doc xml:space="preserve">the framerate demnominator</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">offsets of the planes</doc>
+ <array zero-terminated="0" c:type="gsize" fixed-size="4">
+ <type name="gsize" c:type="gsize"/>
+ </array>
+ </field>
+ <field name="stride" writable="1">
+ <doc xml:space="preserve">strides of the planes</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </field>
+ <union name="ABI" c:type="ABI">
+ <record name="abi" c:type="abi">
+ <field name="multiview_mode" writable="1">
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </field>
+ <field name="multiview_flags" writable="1">
+ <type name="VideoMultiviewFlags" c:type="GstVideoMultiviewFlags"/>
+ </field>
+ <field name="field_order" writable="1">
+ <type name="VideoFieldOrder" c:type="GstVideoFieldOrder"/>
+ </field>
+ </record>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </union>
+ <constructor name="new" c:identifier="gst_video_info_new" version="1.6">
+ <doc xml:space="preserve">Allocate a new #GstVideoInfo that is also initialized with
+gst_video_info_init().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoInfo. free with gst_video_info_free().</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </return-value>
+ </constructor>
+ <method name="align" c:identifier="gst_video_info_align">
+ <doc xml:space="preserve">Adjust the offset and stride fields in @info so that the padding and
+stride alignment in @align is respected.
+
+Extra padding will be added to the right side when stride alignment padding
+is required and @align will be updated with the new padding values.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if alignment could not be applied, e.g. because the
+ size of a frame can't be represented as a 32 bit integer (Since: 1.12)</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ <parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">alignment parameters</doc>
+ <type name="VideoAlignment" c:type="GstVideoAlignment*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="convert" c:identifier="gst_video_info_convert">
+ <doc xml:space="preserve">Converts among various #GstFormat types. This function handles
+GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT. For
+raw video, GST_FORMAT_DEFAULT corresponds to video frames. This
+function can be used to handle pad queries of the type GST_QUERY_CONVERT.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the conversion was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ <parameter name="src_format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat of the @src_value</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="src_value" transfer-ownership="none">
+ <doc xml:space="preserve">value to convert</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ <parameter name="dest_format" transfer-ownership="none">
+ <doc xml:space="preserve">#GstFormat of the @dest_value</doc>
+ <type name="Gst.Format" c:type="GstFormat"/>
+ </parameter>
+ <parameter name="dest_value"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">pointer to destination value</doc>
+ <type name="gint64" c:type="gint64*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_video_info_copy" version="1.6">
+ <doc xml:space="preserve">Copy a GstVideoInfo structure.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoInfo. free with gst_video_info_free.</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="const GstVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_video_info_free" version="1.6">
+ <doc xml:space="preserve">Free a GstVideoInfo structure previously allocated with gst_video_info_new()
+or gst_video_info_copy().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="from_caps" c:identifier="gst_video_info_from_caps">
+ <doc xml:space="preserve">Parse @caps and update @info.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @caps could be parsed</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ <parameter name="caps" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstCaps</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_video_info_init">
+ <doc xml:space="preserve">Initialize @info with default values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="is_equal" c:identifier="gst_video_info_is_equal">
+ <doc xml:space="preserve">Compares two #GstVideoInfo and returns whether they are equal or not</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @info and @other are equal, else %FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="const GstVideoInfo*"/>
+ </instance-parameter>
+ <parameter name="other" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="const GstVideoInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_format" c:identifier="gst_video_info_set_format">
+ <doc xml:space="preserve">Set the default info for a video frame of @format and @width and @height.
+
+Note: This initializes @info first, no values are preserved. This function
+does not set the offsets correctly for interlaced vertically
+subsampled formats.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if the returned video info is invalid, e.g. because the
+ size of a frame can't be represented as a 32 bit integer (Since: 1.12)</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">a width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">a height</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="to_caps" c:identifier="gst_video_info_to_caps">
+ <doc xml:space="preserve">Convert the values of @info into a #GstCaps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstCaps containing the info of @info.</doc>
+ <type name="Gst.Caps" c:type="GstCaps*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="VideoInterlaceMode"
+ glib:type-name="GstVideoInterlaceMode"
+ glib:get-type="gst_video_interlace_mode_get_type"
+ c:type="GstVideoInterlaceMode">
+ <doc xml:space="preserve">The possible values of the #GstVideoInterlaceMode describing the interlace
+mode of the stream.</doc>
+ <member name="progressive"
+ value="0"
+ c:identifier="GST_VIDEO_INTERLACE_MODE_PROGRESSIVE"
+ glib:nick="progressive">
+ <doc xml:space="preserve">all frames are progressive</doc>
+ </member>
+ <member name="interleaved"
+ value="1"
+ c:identifier="GST_VIDEO_INTERLACE_MODE_INTERLEAVED"
+ glib:nick="interleaved">
+ <doc xml:space="preserve">2 fields are interleaved in one video
+ frame. Extra buffer flags describe the field order.</doc>
+ </member>
+ <member name="mixed"
+ value="2"
+ c:identifier="GST_VIDEO_INTERLACE_MODE_MIXED"
+ glib:nick="mixed">
+ <doc xml:space="preserve">frames contains both interlaced and
+ progressive video, the buffer flags describe the frame and fields.</doc>
+ </member>
+ <member name="fields"
+ value="3"
+ c:identifier="GST_VIDEO_INTERLACE_MODE_FIELDS"
+ glib:nick="fields">
+ <doc xml:space="preserve">2 fields are stored in one buffer, use the
+ frame ID to get access to the required field. For multiview (the
+ 'views' property &gt; 1) the fields of view N can be found at frame ID
+ (N * 2) and (N * 2) + 1.
+ Each field has only half the amount of lines as noted in the
+ height property. This mode requires multiple GstVideoMeta metadata
+ to describe the fields.</doc>
+ </member>
+ <function name="from_string"
+ c:identifier="gst_video_interlace_mode_from_string"
+ version="1.6">
+ <doc xml:space="preserve">Convert @mode to a #GstVideoInterlaceMode</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoInterlaceMode of @mode or
+ #GST_VIDEO_INTERLACE_MODE_PROGRESSIVE when @mode is not a valid
+ string representation for a #GstVideoInterlaceMode.</doc>
+ <type name="VideoInterlaceMode" c:type="GstVideoInterlaceMode"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a mode</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_string"
+ c:identifier="gst_video_interlace_mode_to_string"
+ version="1.6">
+ <doc xml:space="preserve">Convert @mode to its string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@mode as a string or NULL if @mode in invalid.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInterlaceMode</doc>
+ <type name="VideoInterlaceMode" c:type="GstVideoInterlaceMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="VideoMatrixMode"
+ version="1.6"
+ glib:type-name="GstVideoMatrixMode"
+ glib:get-type="gst_video_matrix_mode_get_type"
+ c:type="GstVideoMatrixMode">
+ <doc xml:space="preserve">Different color matrix conversion modes</doc>
+ <member name="full"
+ value="0"
+ c:identifier="GST_VIDEO_MATRIX_MODE_FULL"
+ glib:nick="full">
+ <doc xml:space="preserve">do conversion between color matrices</doc>
+ </member>
+ <member name="input_only"
+ value="1"
+ c:identifier="GST_VIDEO_MATRIX_MODE_INPUT_ONLY"
+ glib:nick="input-only">
+ <doc xml:space="preserve">use the input color matrix to convert
+ to and from R'G'B</doc>
+ </member>
+ <member name="output_only"
+ value="2"
+ c:identifier="GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY"
+ glib:nick="output-only">
+ <doc xml:space="preserve">use the output color matrix to convert
+ to and from R'G'B</doc>
+ </member>
+ <member name="none"
+ value="3"
+ c:identifier="GST_VIDEO_MATRIX_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">disable color matrix conversion.</doc>
+ </member>
+ </enumeration>
+ <record name="VideoMeta" c:type="GstVideoMeta">
+ <doc xml:space="preserve">Extra buffer metadata describing image properties</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="buffer" writable="1">
+ <doc xml:space="preserve">the buffer this metadata belongs to</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">additional video flags</doc>
+ <type name="VideoFrameFlags" c:type="GstVideoFrameFlags"/>
+ </field>
+ <field name="format" writable="1">
+ <doc xml:space="preserve">the video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </field>
+ <field name="id" writable="1">
+ <doc xml:space="preserve">identifier of the frame</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="width" writable="1">
+ <doc xml:space="preserve">the video width</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="height" writable="1">
+ <doc xml:space="preserve">the video height</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="n_planes" writable="1">
+ <doc xml:space="preserve">the number of planes in the image</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">array of offsets for the planes. This field might not always be
+ valid, it is used by the default implementation of @map.</doc>
+ <array zero-terminated="0" c:type="gsize" fixed-size="4">
+ <type name="gsize" c:type="gsize"/>
+ </array>
+ </field>
+ <field name="stride" writable="1">
+ <doc xml:space="preserve">array of strides for the planes. This field might not always be
+ valid, it is used by the default implementation of @map.</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </field>
+ <field name="map">
+ <callback name="map">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </parameter>
+ <parameter name="plane" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ <parameter name="stride" transfer-ownership="none">
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="unmap">
+ <callback name="unmap">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="meta" transfer-ownership="none">
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </parameter>
+ <parameter name="plane" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <method name="map" c:identifier="gst_video_meta_map">
+ <doc xml:space="preserve">Map the video plane with index @plane in @meta and return a pointer to the
+first byte of the plane and the stride of the plane.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the map operation was successful.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoMeta</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </instance-parameter>
+ <parameter name="plane" transfer-ownership="none">
+ <doc xml:space="preserve">a plane</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMapInfo</doc>
+ <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ <parameter name="data"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ nullable="1">
+ <doc xml:space="preserve">the data of @plane</doc>
+ <type name="gpointer" c:type="gpointer*"/>
+ </parameter>
+ <parameter name="stride"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">the stride of @plane</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">@GstMapFlags</doc>
+ <type name="Gst.MapFlags" c:type="GstMapFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="unmap" c:identifier="gst_video_meta_unmap">
+ <doc xml:space="preserve">Unmap a previously mapped plane with gst_video_meta_map().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the memory was successfully unmapped.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoMeta</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </instance-parameter>
+ <parameter name="plane" transfer-ownership="none">
+ <doc xml:space="preserve">a plane</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMapInfo</doc>
+ <type name="Gst.MapInfo" c:type="GstMapInfo*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="get_info" c:identifier="gst_video_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="VideoMetaTransform" c:type="GstVideoMetaTransform">
+ <doc xml:space="preserve">Extra data passed to a video transform #GstMetaTransformFunction such as:
+"gst-video-scale".</doc>
+ <field name="in_info" writable="1">
+ <doc xml:space="preserve">the input #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </field>
+ <field name="out_info" writable="1">
+ <doc xml:space="preserve">the output #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </field>
+ <function name="scale_get_quark"
+ c:identifier="gst_video_meta_transform_scale_get_quark">
+ <doc xml:space="preserve">Get the #GQuark for the "gst-video-scale" metadata transform operation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GQuark</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </record>
+ <bitfield name="VideoMultiviewFlags"
+ glib:type-name="GstVideoMultiviewFlags"
+ glib:get-type="gst_video_multiview_flags_get_type"
+ c:type="GstVideoMultiviewFlags">
+ <doc xml:space="preserve">GstVideoMultiviewFlags are used to indicate extra properties of a
+stereo/multiview stream beyond the frame layout and buffer mapping
+that is conveyed in the #GstMultiviewMode.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No flags</doc>
+ </member>
+ <member name="right_view_first"
+ value="1"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST"
+ glib:nick="right-view-first">
+ <doc xml:space="preserve">For stereo streams, the
+ normal arrangement of left and right views is reversed.</doc>
+ </member>
+ <member name="left_flipped"
+ value="2"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_LEFT_FLIPPED"
+ glib:nick="left-flipped">
+ <doc xml:space="preserve">The left view is vertically
+ mirrored.</doc>
+ </member>
+ <member name="left_flopped"
+ value="4"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_LEFT_FLOPPED"
+ glib:nick="left-flopped">
+ <doc xml:space="preserve">The left view is horizontally
+ mirrored.</doc>
+ </member>
+ <member name="right_flipped"
+ value="8"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_FLIPPED"
+ glib:nick="right-flipped">
+ <doc xml:space="preserve">The right view is
+ vertically mirrored.</doc>
+ </member>
+ <member name="right_flopped"
+ value="16"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_FLOPPED"
+ glib:nick="right-flopped">
+ <doc xml:space="preserve">The right view is
+ horizontally mirrored.</doc>
+ </member>
+ <member name="half_aspect"
+ value="16384"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT"
+ glib:nick="half-aspect">
+ <doc xml:space="preserve">For frame-packed
+ multiview modes, indicates that the individual
+ views have been encoded with half the true width or height
+ and should be scaled back up for display. This flag
+ is used for overriding input layout interpretation
+ by adjusting pixel-aspect-ratio.
+ For side-by-side, column interleaved or checkerboard packings, the
+ pixel width will be doubled. For row interleaved and top-bottom
+ encodings, pixel height will be doubled.</doc>
+ </member>
+ <member name="mixed_mono"
+ value="32768"
+ c:identifier="GST_VIDEO_MULTIVIEW_FLAGS_MIXED_MONO"
+ glib:nick="mixed-mono">
+ <doc xml:space="preserve">The video stream contains both
+ mono and multiview portions, signalled on each buffer by the
+ absence or presence of the @GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW
+ buffer flag.</doc>
+ </member>
+ </bitfield>
+ <class name="VideoMultiviewFlagsSet"
+ c:symbol-prefix="video_multiview_flagset"
+ parent="Gst.FlagSet"
+ glib:type-name="GstVideoMultiviewFlagsSet"
+ glib:get-type="gst_video_multiview_flagset_get_type"
+ glib:fundamental="1">
+ </class>
+ <enumeration name="VideoMultiviewFramePacking"
+ glib:type-name="GstVideoMultiviewFramePacking"
+ glib:get-type="gst_video_multiview_frame_packing_get_type"
+ c:type="GstVideoMultiviewFramePacking">
+ <doc xml:space="preserve">#GstVideoMultiviewFramePacking represents the subset of #GstVideoMultiviewMode
+values that can be applied to any video frame without needing extra metadata.
+It can be used by elements that provide a property to override the
+multiview interpretation of a video stream when the video doesn't contain
+any markers.
+
+This enum is used (for example) on playbin, to re-interpret a played
+video stream as a stereoscopic video. The individual enum values are
+equivalent to and have the same value as the matching #GstVideoMultiviewMode.</doc>
+ <member name="none"
+ value="-1"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">A special value indicating
+no frame packing info.</doc>
+ </member>
+ <member name="mono"
+ value="0"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO"
+ glib:nick="mono">
+ <doc xml:space="preserve">All frames are monoscopic.</doc>
+ </member>
+ <member name="left"
+ value="1"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT"
+ glib:nick="left">
+ <doc xml:space="preserve">All frames represent a left-eye view.</doc>
+ </member>
+ <member name="right"
+ value="2"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT"
+ glib:nick="right">
+ <doc xml:space="preserve">All frames represent a right-eye view.</doc>
+ </member>
+ <member name="side_by_side"
+ value="3"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE"
+ glib:nick="side-by-side">
+ <doc xml:space="preserve">Left and right eye views are
+provided in the left and right half of the frame respectively.</doc>
+ </member>
+ <member name="side_by_side_quincunx"
+ value="4"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX"
+ glib:nick="side-by-side-quincunx">
+ <doc xml:space="preserve">Left and right eye
+views are provided in the left and right half of the frame, but
+have been sampled using quincunx method, with half-pixel offset
+between the 2 views.</doc>
+ </member>
+ <member name="column_interleaved"
+ value="5"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED"
+ glib:nick="column-interleaved">
+ <doc xml:space="preserve">Alternating vertical
+columns of pixels represent the left and right eye view respectively.</doc>
+ </member>
+ <member name="row_interleaved"
+ value="6"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED"
+ glib:nick="row-interleaved">
+ <doc xml:space="preserve">Alternating horizontal
+rows of pixels represent the left and right eye view respectively.</doc>
+ </member>
+ <member name="top_bottom"
+ value="7"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM"
+ glib:nick="top-bottom">
+ <doc xml:space="preserve">The top half of the frame
+contains the left eye, and the bottom half the right eye.</doc>
+ </member>
+ <member name="checkerboard"
+ value="8"
+ c:identifier="GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD"
+ glib:nick="checkerboard">
+ <doc xml:space="preserve">Pixels are arranged with
+alternating pixels representing left and right eye views in a
+checkerboard fashion.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="VideoMultiviewMode"
+ glib:type-name="GstVideoMultiviewMode"
+ glib:get-type="gst_video_multiview_mode_get_type"
+ c:type="GstVideoMultiviewMode">
+ <doc xml:space="preserve">All possible stereoscopic 3D and multiview representations.
+In conjunction with #GstVideoMultiviewFlags, describes how
+multiview content is being transported in the stream.</doc>
+ <member name="none"
+ value="-1"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">A special value indicating
+no multiview information. Used in GstVideoInfo and other places to
+indicate that no specific multiview handling has been requested or
+provided. This value is never carried on caps.</doc>
+ </member>
+ <member name="mono"
+ value="0"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_MONO"
+ glib:nick="mono">
+ <doc xml:space="preserve">All frames are monoscopic.</doc>
+ </member>
+ <member name="left"
+ value="1"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_LEFT"
+ glib:nick="left">
+ <doc xml:space="preserve">All frames represent a left-eye view.</doc>
+ </member>
+ <member name="right"
+ value="2"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_RIGHT"
+ glib:nick="right">
+ <doc xml:space="preserve">All frames represent a right-eye view.</doc>
+ </member>
+ <member name="side_by_side"
+ value="3"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE"
+ glib:nick="side-by-side">
+ <doc xml:space="preserve">Left and right eye views are
+provided in the left and right half of the frame respectively.</doc>
+ </member>
+ <member name="side_by_side_quincunx"
+ value="4"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX"
+ glib:nick="side-by-side-quincunx">
+ <doc xml:space="preserve">Left and right eye
+views are provided in the left and right half of the frame, but
+have been sampled using quincunx method, with half-pixel offset
+between the 2 views.</doc>
+ </member>
+ <member name="column_interleaved"
+ value="5"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED"
+ glib:nick="column-interleaved">
+ <doc xml:space="preserve">Alternating vertical
+columns of pixels represent the left and right eye view respectively.</doc>
+ </member>
+ <member name="row_interleaved"
+ value="6"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED"
+ glib:nick="row-interleaved">
+ <doc xml:space="preserve">Alternating horizontal
+rows of pixels represent the left and right eye view respectively.</doc>
+ </member>
+ <member name="top_bottom"
+ value="7"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM"
+ glib:nick="top-bottom">
+ <doc xml:space="preserve">The top half of the frame
+contains the left eye, and the bottom half the right eye.</doc>
+ </member>
+ <member name="checkerboard"
+ value="8"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD"
+ glib:nick="checkerboard">
+ <doc xml:space="preserve">Pixels are arranged with
+alternating pixels representing left and right eye views in a
+checkerboard fashion.</doc>
+ </member>
+ <member name="frame_by_frame"
+ value="32"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME"
+ glib:nick="frame-by-frame">
+ <doc xml:space="preserve">Left and right eye views
+are provided in separate frames alternately.</doc>
+ </member>
+ <member name="multiview_frame_by_frame"
+ value="33"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME"
+ glib:nick="multiview-frame-by-frame">
+ <doc xml:space="preserve">Multiple
+independent views are provided in separate frames in sequence.
+This method only applies to raw video buffers at the moment.
+Specific view identification is via the #GstVideoMultiviewMeta
+and #GstVideoMeta(s) on raw video buffers.</doc>
+ </member>
+ <member name="separated"
+ value="34"
+ c:identifier="GST_VIDEO_MULTIVIEW_MODE_SEPARATED"
+ glib:nick="separated">
+ <doc xml:space="preserve">Multiple views are
+provided as separate #GstMemory framebuffers attached to each
+#GstBuffer, described by the #GstVideoMultiviewMeta
+and #GstVideoMeta(s)</doc>
+ </member>
+ <function name="from_caps_string"
+ c:identifier="gst_video_multiview_mode_from_caps_string"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoMultiviewMode value
+
+Given a string from a caps multiview-mode field,
+output the corresponding #GstVideoMultiviewMode
+or #GST_VIDEO_MULTIVIEW_MODE_NONE</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps_mview_mode" transfer-ownership="none">
+ <doc xml:space="preserve">multiview-mode field string from caps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="to_caps_string"
+ c:identifier="gst_video_multiview_mode_to_caps_string"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The caps string representation of the mode, or NULL if invalid.
+
+Given a #GstVideoMultiviewMode returns the multiview-mode caps string
+for insertion into a caps structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mview_mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstVideoMultiviewMode value</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <interface name="VideoOrientation"
+ c:symbol-prefix="video_orientation"
+ c:type="GstVideoOrientation"
+ glib:type-name="GstVideoOrientation"
+ glib:get-type="gst_video_orientation_get_type"
+ glib:type-struct="VideoOrientationInterface">
+ <doc xml:space="preserve">The interface allows unified access to control flipping and autocenter
+operation of video-sources or operators.</doc>
+ <virtual-method name="get_hcenter" invoker="get_hcenter">
+ <doc xml:space="preserve">Get the horizontal centering offset from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_hflip" invoker="get_hflip">
+ <doc xml:space="preserve">Get the horizontal flipping state (%TRUE for flipped) from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_vcenter" invoker="get_vcenter">
+ <doc xml:space="preserve">Get the vertical centering offset from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="get_vflip" invoker="get_vflip">
+ <doc xml:space="preserve">Get the vertical flipping state (%TRUE for flipped) from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_hcenter" invoker="set_hcenter">
+ <doc xml:space="preserve">Set the horizontal centering offset for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_hflip" invoker="set_hflip">
+ <doc xml:space="preserve">Set the horizontal flipping state (%TRUE for flipped) for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_vcenter" invoker="set_vcenter">
+ <doc xml:space="preserve">Set the vertical centering offset for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_vflip" invoker="set_vflip">
+ <doc xml:space="preserve">Set the vertical flipping state (%TRUE for flipped) for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="get_hcenter"
+ c:identifier="gst_video_orientation_get_hcenter">
+ <doc xml:space="preserve">Get the horizontal centering offset from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_hflip" c:identifier="gst_video_orientation_get_hflip">
+ <doc xml:space="preserve">Get the horizontal flipping state (%TRUE for flipped) from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_vcenter"
+ c:identifier="gst_video_orientation_get_vcenter">
+ <doc xml:space="preserve">Get the vertical centering offset from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_vflip" c:identifier="gst_video_orientation_get_vflip">
+ <doc xml:space="preserve">Get the vertical flipping state (%TRUE for flipped) from the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_hcenter"
+ c:identifier="gst_video_orientation_set_hcenter">
+ <doc xml:space="preserve">Set the horizontal centering offset for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_hflip" c:identifier="gst_video_orientation_set_hflip">
+ <doc xml:space="preserve">Set the horizontal flipping state (%TRUE for flipped) for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_vcenter"
+ c:identifier="gst_video_orientation_set_vcenter">
+ <doc xml:space="preserve">Set the vertical centering offset for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_vflip" c:identifier="gst_video_orientation_set_vflip">
+ <doc xml:space="preserve">Set the vertical flipping state (%TRUE for flipped) for the given object.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_orientation"
+ transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </instance-parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="VideoOrientationInterface"
+ c:type="GstVideoOrientationInterface"
+ glib:is-gtype-struct-for="VideoOrientation">
+ <doc xml:space="preserve">#GstVideoOrientationInterface interface.</doc>
+ <field name="iface">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="get_hflip">
+ <callback name="get_hflip">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_vflip">
+ <callback name="get_vflip">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="flip"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_hcenter">
+ <callback name="get_hcenter">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="get_vcenter">
+ <callback name="get_vcenter">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="center"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">return location for the result</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_hflip">
+ <callback name="set_hflip">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_vflip">
+ <callback name="set_vflip">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="flip" transfer-ownership="none">
+ <doc xml:space="preserve">use flipping</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_hcenter">
+ <callback name="set_hcenter">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_vcenter">
+ <callback name="set_vcenter">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE in case the element supports centering</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoOrientation interface of a #GstElement</doc>
+ <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+ </parameter>
+ <parameter name="center" transfer-ownership="none">
+ <doc xml:space="preserve">centering offset</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <enumeration name="VideoOrientationMethod"
+ version="1.10"
+ glib:type-name="GstVideoOrientationMethod"
+ glib:get-type="gst_video_orientation_method_get_type"
+ c:type="GstVideoOrientationMethod">
+ <doc xml:space="preserve">The different video orientation methods.</doc>
+ <member name="identity"
+ value="0"
+ c:identifier="GST_VIDEO_ORIENTATION_IDENTITY"
+ glib:nick="identity">
+ <doc xml:space="preserve">Identity (no rotation)</doc>
+ </member>
+ <member name="90r"
+ value="1"
+ c:identifier="GST_VIDEO_ORIENTATION_90R"
+ glib:nick="90r">
+ <doc xml:space="preserve">Rotate clockwise 90 degrees</doc>
+ </member>
+ <member name="180"
+ value="2"
+ c:identifier="GST_VIDEO_ORIENTATION_180"
+ glib:nick="180">
+ <doc xml:space="preserve">Rotate 180 degrees</doc>
+ </member>
+ <member name="90l"
+ value="3"
+ c:identifier="GST_VIDEO_ORIENTATION_90L"
+ glib:nick="90l">
+ <doc xml:space="preserve">Rotate counter-clockwise 90 degrees</doc>
+ </member>
+ <member name="horiz"
+ value="4"
+ c:identifier="GST_VIDEO_ORIENTATION_HORIZ"
+ glib:nick="horiz">
+ <doc xml:space="preserve">Flip horizontally</doc>
+ </member>
+ <member name="vert"
+ value="5"
+ c:identifier="GST_VIDEO_ORIENTATION_VERT"
+ glib:nick="vert">
+ <doc xml:space="preserve">Flip vertically</doc>
+ </member>
+ <member name="ul_lr"
+ value="6"
+ c:identifier="GST_VIDEO_ORIENTATION_UL_LR"
+ glib:nick="ul-lr">
+ <doc xml:space="preserve">Flip across upper left/lower right diagonal</doc>
+ </member>
+ <member name="ur_ll"
+ value="7"
+ c:identifier="GST_VIDEO_ORIENTATION_UR_LL"
+ glib:nick="ur-ll">
+ <doc xml:space="preserve">Flip across upper right/lower left diagonal</doc>
+ </member>
+ <member name="auto"
+ value="8"
+ c:identifier="GST_VIDEO_ORIENTATION_AUTO"
+ glib:nick="auto">
+ <doc xml:space="preserve">Select flip method based on image-orientation tag</doc>
+ </member>
+ <member name="custom"
+ value="9"
+ c:identifier="GST_VIDEO_ORIENTATION_CUSTOM"
+ glib:nick="custom">
+ <doc xml:space="preserve">Current status depends on plugin internal setup</doc>
+ </member>
+ </enumeration>
+ <interface name="VideoOverlay"
+ c:symbol-prefix="video_overlay"
+ c:type="GstVideoOverlay"
+ glib:type-name="GstVideoOverlay"
+ glib:get-type="gst_video_overlay_get_type"
+ glib:type-struct="VideoOverlayInterface">
+ <doc xml:space="preserve">The #GstVideoOverlay interface is used for 2 main purposes :
+
+* To get a grab on the Window where the video sink element is going to render.
+ This is achieved by either being informed about the Window identifier that
+ the video sink element generated, or by forcing the video sink element to use
+ a specific Window identifier for rendering.
+* To force a redrawing of the latest video frame the video sink element
+ displayed on the Window. Indeed if the #GstPipeline is in #GST_STATE_PAUSED
+ state, moving the Window around will damage its content. Application
+ developers will want to handle the Expose events themselves and force the
+ video sink element to refresh the Window's content.
+
+Using the Window created by the video sink is probably the simplest scenario,
+in some cases, though, it might not be flexible enough for application
+developers if they need to catch events such as mouse moves and button
+clicks.
+
+Setting a specific Window identifier on the video sink element is the most
+flexible solution but it has some issues. Indeed the application needs to set
+its Window identifier at the right time to avoid internal Window creation
+from the video sink element. To solve this issue a #GstMessage is posted on
+the bus to inform the application that it should set the Window identifier
+immediately. Here is an example on how to do that correctly:
+|[
+static GstBusSyncReply
+create_window (GstBus * bus, GstMessage * message, GstPipeline * pipeline)
+{
+ // ignore anything but 'prepare-window-handle' element messages
+ if (!gst_is_video_overlay_prepare_window_handle_message (message))
+ return GST_BUS_PASS;
+
+ win = XCreateSimpleWindow (disp, root, 0, 0, 320, 240, 0, 0, 0);
+
+ XSetWindowBackgroundPixmap (disp, win, None);
+
+ XMapRaised (disp, win);
+
+ XSync (disp, FALSE);
+
+ gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message)),
+ win);
+
+ gst_message_unref (message);
+
+ return GST_BUS_DROP;
+}
+...
+int
+main (int argc, char **argv)
+{
+...
+ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+ gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, pipeline,
+ NULL);
+...
+}
+]|
+
+## Two basic usage scenarios
+
+There are two basic usage scenarios: in the simplest case, the application
+uses #playbin or #plasink or knows exactly what particular element is used
+for video output, which is usually the case when the application creates
+the videosink to use (e.g. #xvimagesink, #ximagesink, etc.) itself; in this
+case, the application can just create the videosink element, create and
+realize the window to render the video on and then
+call gst_video_overlay_set_window_handle() directly with the XID or native
+window handle, before starting up the pipeline.
+As #playbin and #playsink implement the video overlay interface and proxy
+it transparently to the actual video sink even if it is created later, this
+case also applies when using these elements.
+
+In the other and more common case, the application does not know in advance
+what GStreamer video sink element will be used for video output. This is
+usually the case when an element such as #autovideosink is used.
+In this case, the video sink element itself is created
+asynchronously from a GStreamer streaming thread some time after the
+pipeline has been started up. When that happens, however, the video sink
+will need to know right then whether to render onto an already existing
+application window or whether to create its own window. This is when it
+posts a prepare-window-handle message, and that is also why this message needs
+to be handled in a sync bus handler which will be called from the streaming
+thread directly (because the video sink will need an answer right then).
+
+As response to the prepare-window-handle element message in the bus sync
+handler, the application may use gst_video_overlay_set_window_handle() to tell
+the video sink to render onto an existing window surface. At this point the
+application should already have obtained the window handle / XID, so it
+just needs to set it. It is generally not advisable to call any GUI toolkit
+functions or window system functions from the streaming thread in which the
+prepare-window-handle message is handled, because most GUI toolkits and
+windowing systems are not thread-safe at all and a lot of care would be
+required to co-ordinate the toolkit and window system calls of the
+different threads (Gtk+ users please note: prior to Gtk+ 2.18
+GDK_WINDOW_XID() was just a simple structure access, so generally fine to do
+within the bus sync handler; this macro was changed to a function call in
+Gtk+ 2.18 and later, which is likely to cause problems when called from a
+sync handler; see below for a better approach without GDK_WINDOW_XID()
+used in the callback).
+
+## GstVideoOverlay and Gtk+
+
+|[
+#include &amp;lt;gst/video/videooverlay.h&amp;gt;
+#include &amp;lt;gtk/gtk.h&amp;gt;
+#ifdef GDK_WINDOWING_X11
+#include &amp;lt;gdk/gdkx.h&amp;gt; // for GDK_WINDOW_XID
+#endif
+#ifdef GDK_WINDOWING_WIN32
+#include &amp;lt;gdk/gdkwin32.h&amp;gt; // for GDK_WINDOW_HWND
+#endif
+...
+static guintptr video_window_handle = 0;
+...
+static GstBusSyncReply
+bus_sync_handler (GstBus * bus, GstMessage * message, gpointer user_data)
+{
+ // ignore anything but 'prepare-window-handle' element messages
+ if (!gst_is_video_overlay_prepare_window_handle_message (message))
+ return GST_BUS_PASS;
+
+ if (video_window_handle != 0) {
+ GstVideoOverlay *overlay;
+
+ // GST_MESSAGE_SRC (message) will be the video sink element
+ overlay = GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message));
+ gst_video_overlay_set_window_handle (overlay, video_window_handle);
+ } else {
+ g_warning ("Should have obtained video_window_handle by now!");
+ }
+
+ gst_message_unref (message);
+ return GST_BUS_DROP;
+}
+...
+static void
+video_widget_realize_cb (GtkWidget * widget, gpointer data)
+{
+#if GTK_CHECK_VERSION(2,18,0)
+ // Tell Gtk+/Gdk to create a native window for this widget instead of
+ // drawing onto the parent widget.
+ // This is here just for pedagogical purposes, GDK_WINDOW_XID will call
+ // it as well in newer Gtk versions
+ if (!gdk_window_ensure_native (widget-&gt;window))
+ g_error ("Couldn't create native window needed for GstVideoOverlay!");
+#endif
+
+#ifdef GDK_WINDOWING_X11
+ {
+ gulong xid = GDK_WINDOW_XID (gtk_widget_get_window (video_window));
+ video_window_handle = xid;
+ }
+#endif
+#ifdef GDK_WINDOWING_WIN32
+ {
+ HWND wnd = GDK_WINDOW_HWND (gtk_widget_get_window (video_window));
+ video_window_handle = (guintptr) wnd;
+ }
+#endif
+}
+...
+int
+main (int argc, char **argv)
+{
+ GtkWidget *video_window;
+ GtkWidget *app_window;
+ ...
+ app_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ ...
+ video_window = gtk_drawing_area_new ();
+ g_signal_connect (video_window, "realize",
+ G_CALLBACK (video_widget_realize_cb), NULL);
+ gtk_widget_set_double_buffered (video_window, FALSE);
+ ...
+ // usually the video_window will not be directly embedded into the
+ // application window like this, but there will be many other widgets
+ // and the video window will be embedded in one of them instead
+ gtk_container_add (GTK_CONTAINER (ap_window), video_window);
+ ...
+ // show the GUI
+ gtk_widget_show_all (app_window);
+
+ // realize window now so that the video window gets created and we can
+ // obtain its XID/HWND before the pipeline is started up and the videosink
+ // asks for the XID/HWND of the window to render onto
+ gtk_widget_realize (video_window);
+
+ // we should have the XID/HWND now
+ g_assert (video_window_handle != 0);
+ ...
+ // set up sync handler for setting the xid once the pipeline is started
+ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+ gst_bus_set_sync_handler (bus, (GstBusSyncHandler) bus_sync_handler, NULL,
+ NULL);
+ gst_object_unref (bus);
+ ...
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ ...
+}
+]|
+
+## GstVideoOverlay and Qt
+
+|[
+#include &amp;lt;glib.h&amp;gt;
+#include &amp;lt;gst/gst.h&amp;gt;
+#include &amp;lt;gst/video/videooverlay.h&amp;gt;
+
+#include &amp;lt;QApplication&amp;gt;
+#include &amp;lt;QTimer&amp;gt;
+#include &amp;lt;QWidget&amp;gt;
+
+int main(int argc, char *argv[])
+{
+ if (!g_thread_supported ())
+ g_thread_init (NULL);
+
+ gst_init (&amp;argc, &amp;argv);
+ QApplication app(argc, argv);
+ app.connect(&amp;app, SIGNAL(lastWindowClosed()), &amp;app, SLOT(quit ()));
+
+ // prepare the pipeline
+
+ GstElement *pipeline = gst_pipeline_new ("xvoverlay");
+ GstElement *src = gst_element_factory_make ("videotestsrc", NULL);
+ GstElement *sink = gst_element_factory_make ("xvimagesink", NULL);
+ gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL);
+ gst_element_link (src, sink);
+
+ // prepare the ui
+
+ QWidget window;
+ window.resize(320, 240);
+ window.show();
+
+ WId xwinid = window.winId();
+ gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (sink), xwinid);
+
+ // run the pipeline
+
+ GstStateChangeReturn sret = gst_element_set_state (pipeline,
+ GST_STATE_PLAYING);
+ if (sret == GST_STATE_CHANGE_FAILURE) {
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
+ // Exit application
+ QTimer::singleShot(0, QApplication::activeWindow(), SLOT(quit()));
+ }
+
+ int ret = app.exec();
+
+ window.hide();
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
+
+ return ret;
+}
+]|</doc>
+ <function name="install_properties"
+ c:identifier="gst_video_overlay_install_properties">
+ <doc xml:space="preserve">This helper shall be used by classes implementing the #GstVideoOverlay
+interface that want the render rectangle to be controllable using
+properties. This helper will install "render-rectangle" property into the
+class.
+
+Since 1.14</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="oclass" transfer-ownership="none">
+ <doc xml:space="preserve">The class on which the properties will be installed</doc>
+ <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+ </parameter>
+ <parameter name="last_prop_id" transfer-ownership="none">
+ <doc xml:space="preserve">The first free property ID to use</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="set_property"
+ c:identifier="gst_video_overlay_set_property">
+ <doc xml:space="preserve">This helper shall be used by classes implementing the #GstVideoOverlay
+interface that want the render rectangle to be controllable using
+properties. This helper will parse and set the render rectangle calling
+gst_video_overlay_set_render_rectangle().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @property_id matches the GstVideoOverlay property
+
+Since 1.14</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The instance on which the property is set</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="last_prop_id" transfer-ownership="none">
+ <doc xml:space="preserve">The highest property ID.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="property_id" transfer-ownership="none">
+ <doc xml:space="preserve">The property ID</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The #GValue to be set</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="expose" invoker="expose">
+ <doc xml:space="preserve">Tell an overlay that it has been exposed. This will redraw the current frame
+in the drawable even if the pipeline is PAUSED.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="handle_events" invoker="handle_events">
+ <doc xml:space="preserve">Tell an overlay that it should handle events from the window system. These
+events are forwarded upstream as navigation events. In some window system,
+events are not propagated in the window hierarchy if a client is listening
+for them. This method allows you to disable events handling completely
+from the #GstVideoOverlay.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="handle_events" transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_render_rectangle">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="set_window_handle" invoker="set_window_handle">
+ <doc xml:space="preserve">This will call the video overlay's set_window_handle method. You
+should use this method to tell to an overlay to display video output to a
+specific window (e.g. an XWindow on X11). Passing 0 as the @handle will
+tell the overlay to stop using that window and create an internal one.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to set the window on.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="handle" transfer-ownership="none">
+ <doc xml:space="preserve">a handle referencing the window.</doc>
+ <type name="guintptr" c:type="guintptr"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="expose" c:identifier="gst_video_overlay_expose">
+ <doc xml:space="preserve">Tell an overlay that it has been exposed. This will redraw the current frame
+in the drawable even if the pipeline is PAUSED.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="got_window_handle"
+ c:identifier="gst_video_overlay_got_window_handle">
+ <doc xml:space="preserve">This will post a "have-window-handle" element message on the bus.
+
+This function should only be used by video overlay plugin developers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay which got a window</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="handle" transfer-ownership="none">
+ <doc xml:space="preserve">a platform-specific handle referencing the window</doc>
+ <type name="guintptr" c:type="guintptr"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="handle_events"
+ c:identifier="gst_video_overlay_handle_events">
+ <doc xml:space="preserve">Tell an overlay that it should handle events from the window system. These
+events are forwarded upstream as navigation events. In some window system,
+events are not propagated in the window hierarchy if a client is listening
+for them. This method allows you to disable events handling completely
+from the #GstVideoOverlay.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="handle_events" transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="prepare_window_handle"
+ c:identifier="gst_video_overlay_prepare_window_handle">
+ <doc xml:space="preserve">This will post a "prepare-window-handle" element message on the bus
+to give applications an opportunity to call
+gst_video_overlay_set_window_handle() before a plugin creates its own
+window.
+
+This function should only be used by video overlay plugin developers.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay which does not yet have an Window handle set</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_render_rectangle"
+ c:identifier="gst_video_overlay_set_render_rectangle">
+ <doc xml:space="preserve">Configure a subregion as a video target within the window set by
+gst_video_overlay_set_window_handle(). If this is not used or not supported
+the video will fill the area of the window set as the overlay to 100%.
+By specifying the rectangle, the video can be overlayed to a specific region
+of that window only. After setting the new rectangle one should call
+gst_video_overlay_expose() to force a redraw. To unset the region pass -1 for
+the @width and @height parameters.
+
+This method is needed for non fullscreen video overlay in UI toolkits that
+do not support subwindows.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%FALSE if not supported by the sink.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">the horizontal offset of the render area inside the window</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">the vertical offset of the render area inside the window</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width of the render area inside the window</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the height of the render area inside the window</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_window_handle"
+ c:identifier="gst_video_overlay_set_window_handle">
+ <doc xml:space="preserve">This will call the video overlay's set_window_handle method. You
+should use this method to tell to an overlay to display video output to a
+specific window (e.g. an XWindow on X11). Passing 0 as the @handle will
+tell the overlay to stop using that window and create an internal one.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to set the window on.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </instance-parameter>
+ <parameter name="handle" transfer-ownership="none">
+ <doc xml:space="preserve">a handle referencing the window.</doc>
+ <type name="guintptr" c:type="guintptr"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition"
+ glib:type-name="GstVideoOverlayComposition"
+ glib:get-type="gst_video_overlay_composition_get_type"
+ c:symbol-prefix="video_overlay_composition">
+ <doc xml:space="preserve">Functions to create and handle overlay compositions on video buffers.
+
+An overlay composition describes one or more overlay rectangles to be
+blended on top of a video buffer.
+
+This API serves two main purposes:
+
+* it can be used to attach overlay information (subtitles or logos)
+ to non-raw video buffers such as GL/VAAPI/VDPAU surfaces. The actual
+ blending of the overlay can then be done by e.g. the video sink that
+ processes these non-raw buffers.
+
+* it can also be used to blend overlay rectangles on top of raw video
+ buffers, thus consolidating blending functionality for raw video in
+ one place.
+
+Together, this allows existing overlay elements to easily handle raw
+and non-raw video as input in without major changes (once the overlays
+have been put into a #GstOverlayComposition object anyway) - for raw
+video the overlay can just use the blending function to blend the data
+on top of the video, and for surface buffers it can just attach them to
+the buffer and let the sink render the overlays.</doc>
+ <constructor name="new" c:identifier="gst_video_overlay_composition_new">
+ <doc xml:space="preserve">Creates a new video overlay composition object to hold one or more
+overlay rectangles.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoOverlayComposition. Unref with
+ gst_video_overlay_composition_unref() when no longer needed.</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </return-value>
+ <parameters>
+ <parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle to add to the
+ composition</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_rectangle"
+ c:identifier="gst_video_overlay_composition_add_rectangle">
+ <doc xml:space="preserve">Adds an overlay rectangle to an existing overlay composition object. This
+must be done right after creating the overlay composition.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ <parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle to add to the
+ composition</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="blend" c:identifier="gst_video_overlay_composition_blend">
+ <doc xml:space="preserve">Blends the overlay rectangles in @comp on top of the raw video data
+contained in @video_buf. The data in @video_buf must be writable and
+mapped appropriately.
+
+Since @video_buf data is read and will be modified, it ought be
+mapped with flag GST_MAP_READWRITE.</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ <parameter name="video_buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFrame containing raw video data in a
+ supported format. It should be mapped using GST_MAP_READWRITE</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy" c:identifier="gst_video_overlay_composition_copy">
+ <doc xml:space="preserve">Makes a copy of @comp and all contained rectangles, so that it is possible
+to modify the composition and contained rectangles (e.g. add additional
+rectangles or change the render co-ordinates or render dimension). The
+actual overlay pixel data buffers contained in the rectangles are not
+copied.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoOverlayComposition equivalent
+ to @comp.</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition to copy</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_rectangle"
+ c:identifier="gst_video_overlay_composition_get_rectangle">
+ <doc xml:space="preserve">Returns the @n-th #GstVideoOverlayRectangle contained in @comp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the @n-th rectangle, or NULL if @n is out of
+ bounds. Will not return a new reference, the caller will need to
+ obtain her own reference using gst_video_overlay_rectangle_ref()
+ if needed.</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ <parameter name="n" transfer-ownership="none">
+ <doc xml:space="preserve">number of the rectangle to get</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_seqnum"
+ c:identifier="gst_video_overlay_composition_get_seqnum">
+ <doc xml:space="preserve">Returns the sequence number of this composition. Sequence numbers are
+monotonically increasing and unique for overlay compositions and rectangles
+(meaning there will never be a rectangle with the same sequence number as
+a composition).</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the sequence number of @comp</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="make_writable"
+ c:identifier="gst_video_overlay_composition_make_writable">
+ <doc xml:space="preserve">Takes ownership of @comp and returns a version of @comp that is writable
+(i.e. can be modified). Will either return @comp right away, or create a
+new writable copy of @comp and unref @comp itself. All the contained
+rectangles will also be copied, but the actual overlay pixel data buffers
+contained in the rectangles are not copied.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a writable #GstVideoOverlayComposition
+ equivalent to @comp.</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition to copy</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="n_rectangles"
+ c:identifier="gst_video_overlay_composition_n_rectangles">
+ <doc xml:space="preserve">Returns the number of #GstVideoOverlayRectangle&lt;!-- --&gt;s contained in @comp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the number of rectangles</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="comp" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="VideoOverlayCompositionMeta"
+ c:type="GstVideoOverlayCompositionMeta">
+ <doc xml:space="preserve">Extra buffer metadata describing image overlay data.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="overlay" writable="1">
+ <doc xml:space="preserve">the attached #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_video_overlay_composition_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <enumeration name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags">
+ <doc xml:space="preserve">Overlay format flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="premultiplied_alpha"
+ value="1"
+ c:identifier="GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA">
+ <doc xml:space="preserve">RGB are premultiplied by A/255.</doc>
+ </member>
+ <member name="global_alpha"
+ value="2"
+ c:identifier="GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA">
+ <doc xml:space="preserve">a global-alpha value != 1 is set.</doc>
+ </member>
+ </enumeration>
+ <record name="VideoOverlayInterface"
+ c:type="GstVideoOverlayInterface"
+ glib:is-gtype-struct-for="VideoOverlay">
+ <doc xml:space="preserve">#GstVideoOverlay interface</doc>
+ <field name="iface">
+ <doc xml:space="preserve">parent interface type.</doc>
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="expose">
+ <callback name="expose">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="handle_events">
+ <callback name="handle_events">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to expose.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </parameter>
+ <parameter name="handle_events" transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if events should be handled or not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_render_rectangle">
+ <callback name="set_render_rectangle">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="overlay" transfer-ownership="none">
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_window_handle">
+ <callback name="set_window_handle">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="overlay" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlay to set the window on.</doc>
+ <type name="VideoOverlay" c:type="GstVideoOverlay*"/>
+ </parameter>
+ <parameter name="handle" transfer-ownership="none">
+ <doc xml:space="preserve">a handle referencing the window.</doc>
+ <type name="guintptr" c:type="guintptr"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <record name="VideoOverlayProperties"
+ c:type="GstVideoOverlayProperties"
+ disguised="1">
+ </record>
+ <record name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle"
+ glib:type-name="GstVideoOverlayRectangle"
+ glib:get-type="gst_video_overlay_rectangle_get_type"
+ c:symbol-prefix="video_overlay_rectangle">
+ <doc xml:space="preserve">An opaque video overlay rectangle object. A rectangle contains a single
+overlay rectangle which can be added to a composition.</doc>
+ <constructor name="new_raw"
+ c:identifier="gst_video_overlay_rectangle_new_raw">
+ <doc xml:space="preserve">Creates a new video overlay rectangle with ARGB or AYUV pixel data.
+The layout in case of ARGB of the components in memory is B-G-R-A
+on little-endian platforms
+(corresponding to #GST_VIDEO_FORMAT_BGRA) and A-R-G-B on big-endian
+platforms (corresponding to #GST_VIDEO_FORMAT_ARGB). In other words,
+pixels are treated as 32-bit words and the lowest 8 bits then contain
+the blue component value and the highest 8 bits contain the alpha
+component value. Unless specified in the flags, the RGB values are
+non-premultiplied. This is the format that is used by most hardware,
+and also many rendering libraries such as Cairo, for example.
+The pixel data buffer must have #GstVideoMeta set.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoOverlayRectangle. Unref with
+ gst_video_overlay_rectangle_unref() when no longer needed.</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </return-value>
+ <parameters>
+ <parameter name="pixels" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer pointing to the pixel memory</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="render_x" transfer-ownership="none">
+ <doc xml:space="preserve">the X co-ordinate on the video where the top-left corner of this
+ overlay rectangle should be rendered to</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="render_y" transfer-ownership="none">
+ <doc xml:space="preserve">the Y co-ordinate on the video where the top-left corner of this
+ overlay rectangle should be rendered to</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="render_width" transfer-ownership="none">
+ <doc xml:space="preserve">the render width of this rectangle on the video</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="render_height" transfer-ownership="none">
+ <doc xml:space="preserve">the render height of this rectangle on the video</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="gst_video_overlay_rectangle_copy">
+ <doc xml:space="preserve">Makes a copy of @rectangle, so that it is possible to modify it
+(e.g. to change the render co-ordinates or render dimension). The
+actual overlay pixel data buffers contained in the rectangle are not
+copied.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoOverlayRectangle equivalent
+ to @rectangle.</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle to copy</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_flags"
+ c:identifier="gst_video_overlay_rectangle_get_flags">
+ <doc xml:space="preserve">Retrieves the flags associated with a #GstVideoOverlayRectangle.
+This is useful if the caller can handle both premultiplied alpha and
+non premultiplied alpha, for example. By knowing whether the rectangle
+uses premultiplied or not, it can request the pixel data in the format
+it is stored in, to avoid unnecessary conversion.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoOverlayFormatFlags associated with the rectangle.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_global_alpha"
+ c:identifier="gst_video_overlay_rectangle_get_global_alpha">
+ <doc xml:space="preserve">Retrieves the global-alpha value associated with a #GstVideoOverlayRectangle.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the global-alpha value associated with the rectangle.</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_argb"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_argb">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the ARGB pixel data with
+ width and height of the render dimensions as per
+ gst_video_overlay_rectangle_get_render_rectangle(). This function does
+ not return a reference, the caller should obtain a reference of her own
+ with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_ayuv"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_ayuv">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the AYUV pixel data with
+ width and height of the render dimensions as per
+ gst_video_overlay_rectangle_get_render_rectangle(). This function does
+ not return a reference, the caller should obtain a reference of her own
+ with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_raw"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_raw">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the pixel data with
+ format as originally provided and specified in video meta with
+ width and height of the render dimensions as per
+ gst_video_overlay_rectangle_get_render_rectangle(). This function does
+ not return a reference, the caller should obtain a reference of her own
+ with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_unscaled_argb"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_unscaled_argb">
+ <doc xml:space="preserve">Retrieves the pixel data as it is. This is useful if the caller can
+do the scaling itself when handling the overlaying. The rectangle will
+need to be scaled to the render dimensions, which can be retrieved using
+gst_video_overlay_rectangle_get_render_rectangle().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the ARGB pixel data with
+ #GstVideoMeta set. This function does not return a reference, the caller
+ should obtain a reference of her own with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags.
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_unscaled_ayuv"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_unscaled_ayuv">
+ <doc xml:space="preserve">Retrieves the pixel data as it is. This is useful if the caller can
+do the scaling itself when handling the overlaying. The rectangle will
+need to be scaled to the render dimensions, which can be retrieved using
+gst_video_overlay_rectangle_get_render_rectangle().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the AYUV pixel data with
+ #GstVideoMeta set. This function does not return a reference, the caller
+ should obtain a reference of her own with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags.
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_pixels_unscaled_raw"
+ c:identifier="gst_video_overlay_rectangle_get_pixels_unscaled_raw">
+ <doc xml:space="preserve">Retrieves the pixel data as it is. This is useful if the caller can
+do the scaling itself when handling the overlaying. The rectangle will
+need to be scaled to the render dimensions, which can be retrieved using
+gst_video_overlay_rectangle_get_render_rectangle().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer holding the pixel data with
+ #GstVideoMeta set. This function does not return a reference, the caller
+ should obtain a reference of her own with gst_buffer_ref() if needed.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">flags.
+ If a global_alpha value != 1 is set for the rectangle, the caller
+ should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag
+ if he wants to apply global-alpha himself. If the flag is not set
+ global_alpha is applied internally before returning the pixel-data.</doc>
+ <type name="VideoOverlayFormatFlags"
+ c:type="GstVideoOverlayFormatFlags"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_render_rectangle"
+ c:identifier="gst_video_overlay_rectangle_get_render_rectangle">
+ <doc xml:space="preserve">Retrieves the render position and render dimension of the overlay
+rectangle on the video.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if valid render dimensions were retrieved.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="render_x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address where to store the X render offset</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="render_y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address where to store the Y render offset</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="render_width"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address where to store the render width</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="render_height"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">address where to store the render height</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_seqnum"
+ c:identifier="gst_video_overlay_rectangle_get_seqnum">
+ <doc xml:space="preserve">Returns the sequence number of this rectangle. Sequence numbers are
+monotonically increasing and unique for overlay compositions and rectangles
+(meaning there will never be a rectangle with the same sequence number as
+a composition).
+
+Using the sequence number of a rectangle as an indicator for changed
+pixel-data of a rectangle is dangereous. Some API calls, like e.g.
+gst_video_overlay_rectangle_set_global_alpha(), automatically update
+the per rectangle sequence number, which is misleading for renderers/
+consumers, that handle global-alpha themselves. For them the
+pixel-data returned by gst_video_overlay_rectangle_get_pixels_*()
+wont be different for different global-alpha values. In this case a
+renderer could also use the GstBuffer pointers as a hint for changed
+pixel-data.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the sequence number of @rectangle</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="set_global_alpha"
+ c:identifier="gst_video_overlay_rectangle_set_global_alpha">
+ <doc xml:space="preserve">Sets the global alpha value associated with a #GstVideoOverlayRectangle. Per-
+pixel alpha values are multiplied with this value. Valid
+values: 0 &lt;= global_alpha &lt;= 1; 1 to deactivate.
+
+@rectangle must be writable, meaning its refcount must be 1. You can
+make the rectangles inside a #GstVideoOverlayComposition writable using
+gst_video_overlay_composition_make_writable() or
+gst_video_overlay_composition_copy().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="global_alpha" transfer-ownership="none">
+ <doc xml:space="preserve">Global alpha value (0 to 1.0)</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_render_rectangle"
+ c:identifier="gst_video_overlay_rectangle_set_render_rectangle">
+ <doc xml:space="preserve">Sets the render position and dimensions of the rectangle on the video.
+This function is mainly for elements that modify the size of the video
+in some way (e.g. through scaling or cropping) and need to adjust the
+details of any overlays to match the operation that changed the size.
+
+@rectangle must be writable, meaning its refcount must be 1. You can
+make the rectangles inside a #GstVideoOverlayComposition writable using
+gst_video_overlay_composition_make_writable() or
+gst_video_overlay_composition_copy().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="rectangle" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayRectangle</doc>
+ <type name="VideoOverlayRectangle"
+ c:type="GstVideoOverlayRectangle*"/>
+ </instance-parameter>
+ <parameter name="render_x" transfer-ownership="none">
+ <doc xml:space="preserve">render X position of rectangle on video</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="render_y" transfer-ownership="none">
+ <doc xml:space="preserve">render Y position of rectangle on video</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="render_width" transfer-ownership="none">
+ <doc xml:space="preserve">render width of rectangle</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="render_height" transfer-ownership="none">
+ <doc xml:space="preserve">render height of rectangle</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="VideoPackFlags"
+ glib:type-name="GstVideoPackFlags"
+ glib:get-type="gst_video_pack_flags_get_type"
+ c:type="GstVideoPackFlags">
+ <doc xml:space="preserve">The different flags that can be used when packing and unpacking.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_PACK_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">No flag</doc>
+ </member>
+ <member name="truncate_range"
+ value="1"
+ c:identifier="GST_VIDEO_PACK_FLAG_TRUNCATE_RANGE"
+ glib:nick="truncate-range">
+ <doc xml:space="preserve">When the source has a smaller depth
+ than the target format, set the least significant bits of the target
+ to 0. This is likely sightly faster but less accurate. When this flag
+ is not specified, the most significant bits of the source are duplicated
+ in the least significant bits of the destination.</doc>
+ </member>
+ <member name="interlaced"
+ value="2"
+ c:identifier="GST_VIDEO_PACK_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">The source is interlaced. The unpacked
+ format will be interlaced as well with each line containing
+ information from alternating fields. (Since 1.2)</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoPrimariesMode"
+ version="1.6"
+ glib:type-name="GstVideoPrimariesMode"
+ glib:get-type="gst_video_primaries_mode_get_type"
+ c:type="GstVideoPrimariesMode">
+ <doc xml:space="preserve">Different primaries conversion modes</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_PRIMARIES_MODE_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">disable conversion between primaries</doc>
+ </member>
+ <member name="merge_only"
+ value="1"
+ c:identifier="GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY"
+ glib:nick="merge-only">
+ <doc xml:space="preserve">do conversion between primaries only
+ when it can be merged with color matrix conversion.</doc>
+ </member>
+ <member name="fast"
+ value="2"
+ c:identifier="GST_VIDEO_PRIMARIES_MODE_FAST"
+ glib:nick="fast">
+ <doc xml:space="preserve">fast conversion between primaries</doc>
+ </member>
+ </enumeration>
+ <record name="VideoRectangle" c:type="GstVideoRectangle">
+ <doc xml:space="preserve">Helper structure representing a rectangular area.</doc>
+ <field name="x" writable="1">
+ <doc xml:space="preserve">X coordinate of rectangle's top-left point</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="y" writable="1">
+ <doc xml:space="preserve">Y coordinate of rectangle's top-left point</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="w" writable="1">
+ <doc xml:space="preserve">width of the rectangle</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="h" writable="1">
+ <doc xml:space="preserve">height of the rectangle</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ </record>
+ <record name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta">
+ <doc xml:space="preserve">Extra buffer metadata describing an image region of interest</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="roi_type" writable="1">
+ <doc xml:space="preserve">GQuark describing the semantic of the Roi (f.i. a face, a pedestrian)</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </field>
+ <field name="id" writable="1">
+ <doc xml:space="preserve">identifier of this particular ROI</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="parent_id" writable="1">
+ <doc xml:space="preserve">identifier of its parent ROI, used f.i. for ROI hierarchisation.</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="x" writable="1">
+ <doc xml:space="preserve">x component of upper-left corner</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="y" writable="1">
+ <doc xml:space="preserve">y component of upper-left corner</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="w" writable="1">
+ <doc xml:space="preserve">bounding box width</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="h" writable="1">
+ <doc xml:space="preserve">bounding box height</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="params" writable="1">
+ <doc xml:space="preserve">list of #GstStructure containing element-specific params for downstream, see gst_video_region_of_interest_meta_add_params(). (Since: 1.14)</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </field>
+ <method name="add_param"
+ c:identifier="gst_video_region_of_interest_meta_add_param"
+ version="1.14">
+ <doc xml:space="preserve">Attach element-specific parameters to @meta meant to be used by downstream
+elements which may handle this ROI.
+The name of @s is used to identify the element these parameters are meant for.
+
+This is typically used to tell encoders how they should encode this specific region.
+For example, a structure named "roi/x264enc" could be used to give the
+QP offsets this encoder should use when encoding the region described in @meta.
+Multiple parameters can be defined for the same meta so different encoders
+can be supported by cross platform applications).</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoRegionOfInterestMeta</doc>
+ <type name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta*"/>
+ </instance-parameter>
+ <parameter name="s" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_param"
+ c:identifier="gst_video_region_of_interest_meta_get_param"
+ version="1.14">
+ <doc xml:space="preserve">Retrieve the parameter for @meta having @name as structure name,
+or %NULL if there is none.</doc>
+ <doc-version xml:space="preserve">
+See also: gst_video_region_of_interest_meta_add_param()</doc-version>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="meta" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoRegionOfInterestMeta</doc>
+ <type name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="get_info"
+ c:identifier="gst_video_region_of_interest_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <record name="VideoResampler" c:type="GstVideoResampler" version="1.6">
+ <doc xml:space="preserve">#GstVideoResampler is a structure which holds the information
+required to perform various kinds of resampling filtering.</doc>
+ <field name="in_size" writable="1">
+ <doc xml:space="preserve">the input size</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="out_size" writable="1">
+ <doc xml:space="preserve">the output size</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="max_taps" writable="1">
+ <doc xml:space="preserve">the maximum number of taps</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="n_phases" writable="1">
+ <doc xml:space="preserve">the number of phases</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="offset" writable="1">
+ <doc xml:space="preserve">array with the source offset for each output element</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </field>
+ <field name="phase" writable="1">
+ <doc xml:space="preserve">array with the phase to use for each output element</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </field>
+ <field name="n_taps" writable="1">
+ <doc xml:space="preserve">array with new number of taps for each phase</doc>
+ <type name="guint32" c:type="guint32*"/>
+ </field>
+ <field name="taps" writable="1">
+ <doc xml:space="preserve">the taps for all phases</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ <method name="clear"
+ c:identifier="gst_video_resampler_clear"
+ version="1.6">
+ <doc xml:space="preserve">Clear a previously initialized #GstVideoResampler @resampler.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoResampler</doc>
+ <type name="VideoResampler" c:type="GstVideoResampler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init" c:identifier="gst_video_resampler_init">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="resampler" transfer-ownership="none">
+ <type name="VideoResampler" c:type="GstVideoResampler*"/>
+ </instance-parameter>
+ <parameter name="method" transfer-ownership="none">
+ <type name="VideoResamplerMethod"
+ c:type="GstVideoResamplerMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <type name="VideoResamplerFlags" c:type="GstVideoResamplerFlags"/>
+ </parameter>
+ <parameter name="n_phases" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_taps" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="shift" transfer-ownership="none">
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ <parameter name="in_size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="out_size" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="options" transfer-ownership="none">
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <bitfield name="VideoResamplerFlags"
+ version="1.6"
+ glib:type-name="GstVideoResamplerFlags"
+ glib:get-type="gst_video_resampler_flags_get_type"
+ c:type="GstVideoResamplerFlags">
+ <doc xml:space="preserve">Different resampler flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_RESAMPLER_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="half_taps"
+ value="1"
+ c:identifier="GST_VIDEO_RESAMPLER_FLAG_HALF_TAPS"
+ glib:nick="half-taps">
+ <doc xml:space="preserve">when no taps are given, half the
+ number of calculated taps. This can be used when making scalers
+ for the different fields of an interlaced picture. Since 1.10</doc>
+ </member>
+ </bitfield>
+ <enumeration name="VideoResamplerMethod"
+ version="1.6"
+ glib:type-name="GstVideoResamplerMethod"
+ glib:get-type="gst_video_resampler_method_get_type"
+ c:type="GstVideoResamplerMethod">
+ <doc xml:space="preserve">Different subsampling and upsampling methods</doc>
+ <member name="nearest"
+ value="0"
+ c:identifier="GST_VIDEO_RESAMPLER_METHOD_NEAREST"
+ glib:nick="nearest">
+ <doc xml:space="preserve">Duplicates the samples when
+ upsampling and drops when downsampling</doc>
+ </member>
+ <member name="linear"
+ value="1"
+ c:identifier="GST_VIDEO_RESAMPLER_METHOD_LINEAR"
+ glib:nick="linear">
+ <doc xml:space="preserve">Uses linear interpolation to reconstruct
+ missing samples and averaging to downsample</doc>
+ </member>
+ <member name="cubic"
+ value="2"
+ c:identifier="GST_VIDEO_RESAMPLER_METHOD_CUBIC"
+ glib:nick="cubic">
+ <doc xml:space="preserve">Uses cubic interpolation</doc>
+ </member>
+ <member name="sinc"
+ value="3"
+ c:identifier="GST_VIDEO_RESAMPLER_METHOD_SINC"
+ glib:nick="sinc">
+ <doc xml:space="preserve">Uses sinc interpolation</doc>
+ </member>
+ <member name="lanczos"
+ value="4"
+ c:identifier="GST_VIDEO_RESAMPLER_METHOD_LANCZOS"
+ glib:nick="lanczos">
+ <doc xml:space="preserve">Uses lanczos interpolation</doc>
+ </member>
+ </enumeration>
+ <record name="VideoScaler" c:type="GstVideoScaler" disguised="1">
+ <doc xml:space="preserve">#GstVideoScaler is a utility object for rescaling and resampling
+video frames using various interpolation / sampling methods.</doc>
+ <method name="2d" c:identifier="gst_video_scaler_2d">
+ <doc xml:space="preserve">Scale a rectangle of pixels in @src with @src_stride to @dest with
+@dest_stride using the horizontal scaler @hscaler and the vertical
+scaler @vscale.
+
+One or both of @hscale and @vscale can be NULL to only perform scaling in
+one dimension or do a copy without scaling.
+
+@x and @y are the coordinates in the destination image to process.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="hscale" transfer-ownership="none">
+ <doc xml:space="preserve">a horzontal #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ <parameter name="vscale" transfer-ownership="none">
+ <doc xml:space="preserve">a vertical #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat for @srcs and @dest</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">source pixels</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="src_stride" transfer-ownership="none">
+ <doc xml:space="preserve">source pixels stride</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="dest"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">destination pixels</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="dest_stride" transfer-ownership="none">
+ <doc xml:space="preserve">destination pixels stride</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">the horizontal destination offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">the vertical destination offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the number of output pixels to scale</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the number of output lines to scale</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="combine_packed_YUV"
+ c:identifier="gst_video_scaler_combine_packed_YUV"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Combine a scaler for Y and UV into one scaler for the packed @format.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new horizontal videoscaler for @format.</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="y_scale" transfer-ownership="none">
+ <doc xml:space="preserve">a scaler for the Y component</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ <parameter name="uv_scale" transfer-ownership="none">
+ <doc xml:space="preserve">a scaler for the U and V components</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </parameter>
+ <parameter name="in_format" transfer-ownership="none">
+ <doc xml:space="preserve">the input video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="out_format" transfer-ownership="none">
+ <doc xml:space="preserve">the output video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="gst_video_scaler_free">
+ <doc xml:space="preserve">Free a previously allocated #GstVideoScaler @scale.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scale" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_coeff" c:identifier="gst_video_scaler_get_coeff">
+ <doc xml:space="preserve">For a given pixel at @out_offset, get the first required input pixel at
+@in_offset and the @n_taps filter coefficients.
+
+Note that for interlaced content, @in_offset needs to be incremented with
+2 to get the next input line.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an array of @n_tap gdouble values with filter coefficients.</doc>
+ <type name="gdouble" c:type="const gdouble*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scale" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ <parameter name="out_offset" transfer-ownership="none">
+ <doc xml:space="preserve">an output offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="in_offset" transfer-ownership="none">
+ <doc xml:space="preserve">result input offset</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="n_taps" transfer-ownership="none">
+ <doc xml:space="preserve">result n_taps</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_max_taps" c:identifier="gst_video_scaler_get_max_taps">
+ <doc xml:space="preserve">Get the maximum number of taps for @scale.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the maximum number of taps</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scale" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="horizontal" c:identifier="gst_video_scaler_horizontal">
+ <doc xml:space="preserve">Horizontally scale the pixels in @src to @dest, starting from @dest_offset
+for @width samples.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scale" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat for @src and @dest</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="src"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">source pixels</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="dest"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">destination pixels</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="dest_offset" transfer-ownership="none">
+ <doc xml:space="preserve">the horizontal destination offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the number of pixels to scale</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="vertical" c:identifier="gst_video_scaler_vertical">
+ <doc xml:space="preserve">Vertically combine @width pixels in the lines in @src_lines to @dest.
+@dest is the location of the target line at @dest_offset and
+@srcs are the input lines for @dest_offset, as obtained with
+gst_video_scaler_get_info().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="scale" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoScaler</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </instance-parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat for @srcs and @dest</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="src_lines"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">source pixels lines</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="dest"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">destination pixels</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="dest_offset" transfer-ownership="none">
+ <doc xml:space="preserve">the vertical destination offset</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the number of pixels to scale</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="gst_video_scaler_new"
+ introspectable="0">
+ <doc xml:space="preserve">Make a new @method video scaler. @in_size source lines/pixels will
+be scaled to @out_size destination lines/pixels.
+
+@n_taps specifies the amount of pixels to use from the source for one output
+pixel. If n_taps is 0, this function chooses a good value automatically based
+on the @method and @in_size/@out_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstVideoResample</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoResamplerMethod</doc>
+ <type name="VideoResamplerMethod"
+ c:type="GstVideoResamplerMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoScalerFlags</doc>
+ <type name="VideoScalerFlags" c:type="GstVideoScalerFlags"/>
+ </parameter>
+ <parameter name="n_taps" transfer-ownership="none">
+ <doc xml:space="preserve">number of taps to use</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="in_size" transfer-ownership="none">
+ <doc xml:space="preserve">number of source elements</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="out_size" transfer-ownership="none">
+ <doc xml:space="preserve">number of destination elements</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="options"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">extra options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <bitfield name="VideoScalerFlags"
+ glib:type-name="GstVideoScalerFlags"
+ glib:get-type="gst_video_scaler_flags_get_type"
+ c:type="GstVideoScalerFlags">
+ <doc xml:space="preserve">Different scale flags.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_SCALER_FLAG_NONE"
+ glib:nick="none">
+ <doc xml:space="preserve">no flags</doc>
+ </member>
+ <member name="interlaced"
+ value="1"
+ c:identifier="GST_VIDEO_SCALER_FLAG_INTERLACED"
+ glib:nick="interlaced">
+ <doc xml:space="preserve">Set up a scaler for interlaced content</doc>
+ </member>
+ </bitfield>
+ <class name="VideoSink"
+ c:symbol-prefix="video_sink"
+ c:type="GstVideoSink"
+ parent="GstBase.BaseSink"
+ glib:type-name="GstVideoSink"
+ glib:get-type="gst_video_sink_get_type"
+ glib:type-struct="VideoSinkClass">
+ <doc xml:space="preserve">Provides useful functions and a base class for video sinks.
+
+GstVideoSink will configure the default base sink to drop frames that
+arrive later than 20ms as this is considered the default threshold for
+observing out-of-sync frames.</doc>
+ <function name="center_rect" c:identifier="gst_video_sink_center_rect">
+ <doc xml:space="preserve">Takes @src rectangle and position it at the center of @dst rectangle with or
+without @scaling. It handles clipping if the @src rectangle is bigger than
+the @dst one and @scaling is set to FALSE.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoRectangle describing the source area</doc>
+ <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+ </parameter>
+ <parameter name="dst" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoRectangle describing the destination area</doc>
+ <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+ </parameter>
+ <parameter name="result" transfer-ownership="none">
+ <doc xml:space="preserve">a pointer to a #GstVideoRectangle which will receive the result area</doc>
+ <type name="VideoRectangle" c:type="GstVideoRectangle*"/>
+ </parameter>
+ <parameter name="scaling" transfer-ownership="none">
+ <doc xml:space="preserve">a #gboolean indicating if scaling should be applied or not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="show_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="video_sink" transfer-ownership="none">
+ <type name="VideoSink" c:type="GstVideoSink*"/>
+ </instance-parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <property name="show-preroll-frame"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">Whether to show video frames during preroll. If set to %FALSE, video
+frames will only be rendered in PLAYING state.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </property>
+ <field name="element">
+ <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+ </field>
+ <field name="width">
+ <doc xml:space="preserve">video width (derived class needs to set this)</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="height">
+ <doc xml:space="preserve">video height (derived class needs to set this)</doc>
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="priv" readable="0" private="1">
+ <type name="VideoSinkPrivate" c:type="GstVideoSinkPrivate*"/>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </class>
+ <record name="VideoSinkClass"
+ c:type="GstVideoSinkClass"
+ glib:is-gtype-struct-for="VideoSink">
+ <doc xml:space="preserve">The video sink class structure. Derived classes should override the
+@show_frame virtual function.</doc>
+ <field name="parent_class">
+ <doc xml:space="preserve">the parent class structure</doc>
+ <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+ </field>
+ <field name="show_frame">
+ <callback name="show_frame">
+ <return-value transfer-ownership="none">
+ <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+ </return-value>
+ <parameters>
+ <parameter name="video_sink" transfer-ownership="none">
+ <type name="VideoSink" c:type="GstVideoSink*"/>
+ </parameter>
+ <parameter name="buf" transfer-ownership="none">
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_gst_reserved" readable="0" private="1">
+ <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+ <type name="gpointer" c:type="gpointer"/>
+ </array>
+ </field>
+ </record>
+ <record name="VideoSinkPrivate" c:type="GstVideoSinkPrivate" disguised="1">
+ </record>
+ <enumeration name="VideoTileMode"
+ glib:type-name="GstVideoTileMode"
+ glib:get-type="gst_video_tile_mode_get_type"
+ c:type="GstVideoTileMode">
+ <doc xml:space="preserve">Enum value describing the available tiling modes.</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_TILE_MODE_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">Unknown or unset tile mode</doc>
+ </member>
+ <member name="zflipz_2x2"
+ value="65536"
+ c:identifier="GST_VIDEO_TILE_MODE_ZFLIPZ_2X2"
+ glib:nick="zflipz-2x2">
+ <doc xml:space="preserve">Every four adjacent blocks - two
+ horizontally and two vertically are grouped together and are located
+ in memory in Z or flipped Z order. In case of odd rows, the last row
+ of blocks is arranged in linear order.</doc>
+ </member>
+ </enumeration>
+ <enumeration name="VideoTileType"
+ glib:type-name="GstVideoTileType"
+ glib:get-type="gst_video_tile_type_get_type"
+ c:type="GstVideoTileType">
+ <doc xml:space="preserve">Enum value describing the most common tiling types.</doc>
+ <member name="indexed"
+ value="0"
+ c:identifier="GST_VIDEO_TILE_TYPE_INDEXED"
+ glib:nick="indexed">
+ <doc xml:space="preserve">Tiles are indexed. Use
+ gst_video_tile_get_index () to retrieve the tile at the requested
+ coordinates.</doc>
+ </member>
+ </enumeration>
+ <record name="VideoTimeCode"
+ c:type="GstVideoTimeCode"
+ version="1.10"
+ glib:type-name="GstVideoTimeCode"
+ glib:get-type="gst_video_time_code_get_type"
+ c:symbol-prefix="video_time_code">
+ <doc xml:space="preserve">@field_count must be 0 for progressive video and 1 or 2 for interlaced.
+
+A representation of a SMPTE time code.
+
+@hours must be positive and less than 24. Will wrap around otherwise.
+@minutes and @seconds must be positive and less than 60.
+@frames must be less than or equal to @config.fps_n / @config.fps_d
+These values are *NOT* automatically normalized.</doc>
+ <field name="config" writable="1">
+ <doc xml:space="preserve">the corresponding #GstVideoTimeCodeConfig</doc>
+ <type name="VideoTimeCodeConfig" c:type="GstVideoTimeCodeConfig"/>
+ </field>
+ <field name="hours" writable="1">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="minutes" writable="1">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="seconds" writable="1">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="frames" writable="1">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="field_count" writable="1">
+ <doc xml:space="preserve">Interlaced video field count</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_video_time_code_new"
+ version="1.10">
+ <doc xml:space="preserve">@field_count is 0 for progressive, 1 or 2 for interlaced.
+@latest_daiy_jam reference is stolen from caller.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCode with the given values.
+The values are not checked for being in a valid range. To see if your
+timecode actually has valid content, use #gst_video_time_code_is_valid.</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ <parameters>
+ <parameter name="fps_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="latest_daily_jam" transfer-ownership="none">
+ <doc xml:space="preserve">The latest daily jam of the #GstVideoTimeCode</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </parameter>
+ <parameter name="hours" transfer-ownership="none">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="minutes" transfer-ownership="none">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="field_count" transfer-ownership="none">
+ <doc xml:space="preserve">Interlaced video field count</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_empty"
+ c:identifier="gst_video_time_code_new_empty"
+ version="1.10">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new empty #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_from_date_time"
+ c:identifier="gst_video_time_code_new_from_date_time"
+ version="1.12">
+ <doc xml:space="preserve">The resulting config-&gt;latest_daily_jam is set to
+midnight, and timecode is set to the given time.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GVideoTimeCode representation of @dt.</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ <parameters>
+ <parameter name="fps_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="dt" transfer-ownership="none">
+ <doc xml:space="preserve">#GDateTime to convert</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </parameter>
+ <parameter name="field_count" transfer-ownership="none">
+ <doc xml:space="preserve">Interlaced video field count</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_string"
+ c:identifier="gst_video_time_code_new_from_string"
+ version="1.12">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCode from the given string</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tc_str" transfer-ownership="none">
+ <doc xml:space="preserve">The string that represents the #GstVideoTimeCode</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add_frames"
+ c:identifier="gst_video_time_code_add_frames"
+ version="1.10">
+ <doc xml:space="preserve">Adds or subtracts @frames amount of frames to @tc. tc needs to
+contain valid data, as verified by #gst_video_time_code_is_valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">How many frames to add or subtract</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="add_interval"
+ c:identifier="gst_video_time_code_add_interval"
+ version="1.12">
+ <doc xml:space="preserve">This makes a component-wise addition of @tc_inter to @tc. For example,
+adding ("01:02:03:04", "00:01:00:00") will return "01:03:03:04".
+When it comes to drop-frame timecodes,
+adding ("00:00:00;00", "00:01:00:00") will return "00:01:00;02"
+because of drop-frame oddities. However,
+adding ("00:09:00;02", "00:01:00:00") will return "00:10:00;00"
+because this time we can have an exact minute.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">A new #GstVideoTimeCode with @tc_inter added.</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoTimeCode where the diff should be added. This
+must contain valid timecode values.</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ <parameter name="tc_inter" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoTimeCodeInterval to add to @tc.
+The interval must contain valid values, except that for drop-frame
+timecode, it may also contain timecodes which would normally
+be dropped. These are then corrected to the next reasonable timecode.</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="const GstVideoTimeCodeInterval*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="clear"
+ c:identifier="gst_video_time_code_clear"
+ version="1.10">
+ <doc xml:space="preserve">Initializes @tc with empty/zero/NULL values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="compare"
+ c:identifier="gst_video_time_code_compare"
+ version="1.10">
+ <doc xml:space="preserve">Compares @tc1 and @tc2 . If both have latest daily jam information, it is
+taken into account. Otherwise, it is assumed that the daily jam of both
+@tc1 and @tc2 was at the same time. Both time codes must be valid.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">1 if @tc1 is after @tc2, -1 if @tc1 is before @tc2, 0 otherwise.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc1" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ <parameter name="tc2" transfer-ownership="none">
+ <doc xml:space="preserve">another #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="copy"
+ c:identifier="gst_video_time_code_copy"
+ version="1.10">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCode with the same values as @tc .</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="frames_since_daily_jam"
+ c:identifier="gst_video_time_code_frames_since_daily_jam"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">how many frames have passed since the daily jam of @tc .</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free"
+ c:identifier="gst_video_time_code_free"
+ version="1.10">
+ <doc xml:space="preserve">Frees @tc .</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="increment_frame"
+ c:identifier="gst_video_time_code_increment_frame"
+ version="1.10">
+ <doc xml:space="preserve">Adds one frame to @tc .</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init"
+ c:identifier="gst_video_time_code_init"
+ version="1.10">
+ <doc xml:space="preserve">@field_count is 0 for progressive, 1 or 2 for interlaced.
+@latest_daiy_jam reference is stolen from caller.
+
+Initializes @tc with the given values.
+The values are not checked for being in a valid range. To see if your
+timecode actually has valid content, use #gst_video_time_code_is_valid.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ <parameter name="fps_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="latest_daily_jam" transfer-ownership="none">
+ <doc xml:space="preserve">The latest daily jam of the #GstVideoTimeCode</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </parameter>
+ <parameter name="hours" transfer-ownership="none">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="minutes" transfer-ownership="none">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCode</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="field_count" transfer-ownership="none">
+ <doc xml:space="preserve">Interlaced video field count</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="init_from_date_time"
+ c:identifier="gst_video_time_code_init_from_date_time"
+ version="1.12">
+ <doc xml:space="preserve">The resulting config-&gt;latest_daily_jam is set to
+midnight, and timecode is set to the given time.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </instance-parameter>
+ <parameter name="fps_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="dt" transfer-ownership="none">
+ <doc xml:space="preserve">#GDateTime to convert</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </parameter>
+ <parameter name="field_count" transfer-ownership="none">
+ <doc xml:space="preserve">Interlaced video field count</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_valid"
+ c:identifier="gst_video_time_code_is_valid"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether @tc is a valid timecode (supported frame rate,
+hours/minutes/seconds/frames not overflowing)</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCode to check</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="nsec_since_daily_jam"
+ c:identifier="gst_video_time_code_nsec_since_daily_jam"
+ version="1.10">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">how many nsec have passed since the daily jam of @tc .</doc>
+ <type name="guint64" c:type="guint64"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a valid #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="to_date_time"
+ c:identifier="gst_video_time_code_to_date_time"
+ version="1.10">
+ <doc xml:space="preserve">The @tc.config-&gt;latest_daily_jam is required to be non-NULL.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the #GDateTime representation of @tc.</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">A valid #GstVideoTimeCode to convert</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="to_string"
+ c:identifier="gst_video_time_code_to_string"
+ version="1.10">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">the SMPTE ST 2059-1:2015 string representation of @tc. That will
+take the form hh:mm:ss:ff . The last separator (between seconds and frames)
+may vary:
+
+';' for drop-frame, non-interlaced content and for drop-frame interlaced
+field 2
+',' for drop-frame interlaced field 1
+':' for non-drop-frame, non-interlaced content and for non-drop-frame
+interlaced field 2
+'.' for non-drop-frame interlaced field 1</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoTimeCode to convert</doc>
+ <type name="VideoTimeCode" c:type="const GstVideoTimeCode*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="VideoTimeCodeConfig"
+ c:type="GstVideoTimeCodeConfig"
+ version="1.10">
+ <doc xml:space="preserve">Supported frame rates: 30000/1001, 60000/1001 (both with and without drop
+frame), and integer frame rates e.g. 25/1, 30/1, 50/1, 60/1.
+
+The configuration of the time code.</doc>
+ <field name="fps_n" writable="1">
+ <doc xml:space="preserve">Numerator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="fps_d" writable="1">
+ <doc xml:space="preserve">Denominator of the frame rate</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="flags" writable="1">
+ <doc xml:space="preserve">the corresponding #GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </field>
+ <field name="latest_daily_jam" writable="1">
+ <doc xml:space="preserve">The latest daily jam information, if present, or NULL</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </field>
+ </record>
+ <bitfield name="VideoTimeCodeFlags"
+ version="1.10"
+ c:type="GstVideoTimeCodeFlags">
+ <doc xml:space="preserve">Flags related to the time code information.
+For drop frame, only 30000/1001 and 60000/1001 frame rates are supported.</doc>
+ <member name="none"
+ value="0"
+ c:identifier="GST_VIDEO_TIME_CODE_FLAGS_NONE">
+ <doc xml:space="preserve">No flags</doc>
+ </member>
+ <member name="drop_frame"
+ value="1"
+ c:identifier="GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME">
+ <doc xml:space="preserve">Whether we have drop frame rate</doc>
+ </member>
+ <member name="interlaced"
+ value="2"
+ c:identifier="GST_VIDEO_TIME_CODE_FLAGS_INTERLACED">
+ <doc xml:space="preserve">Whether we have interlaced video</doc>
+ </member>
+ </bitfield>
+ <record name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval"
+ version="1.12"
+ glib:type-name="GstVideoTimeCodeInterval"
+ glib:get-type="gst_video_time_code_interval_get_type"
+ c:symbol-prefix="video_time_code_interval">
+ <doc xml:space="preserve">A representation of a difference between two #GstVideoTimeCode instances.
+Will not necessarily correspond to a real timecode (e.g. 00:00:10;00)</doc>
+ <field name="hours" writable="1">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="minutes" writable="1">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="seconds" writable="1">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <field name="frames" writable="1">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </field>
+ <constructor name="new"
+ c:identifier="gst_video_time_code_interval_new"
+ version="1.12">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCodeInterval with the given values.</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </return-value>
+ <parameters>
+ <parameter name="hours" transfer-ownership="none">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="minutes" transfer-ownership="none">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <constructor name="new_from_string"
+ c:identifier="gst_video_time_code_interval_new_from_string"
+ version="1.12">
+ <doc xml:space="preserve">@tc_inter_str must only have ":" as separators.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCodeInterval from the given string</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </return-value>
+ <parameters>
+ <parameter name="tc_inter_str" transfer-ownership="none">
+ <doc xml:space="preserve">The string that represents the #GstVideoTimeCodeInterval</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="clear"
+ c:identifier="gst_video_time_code_interval_clear"
+ version="1.12">
+ <doc xml:space="preserve">Initializes @tc with empty/zero/NULL values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCodeInterval</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="copy"
+ c:identifier="gst_video_time_code_interval_copy"
+ version="1.12">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">a new #GstVideoTimeCodeInterval with the same values as @tc .</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCodeInterval</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="const GstVideoTimeCodeInterval*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free"
+ c:identifier="gst_video_time_code_interval_free"
+ version="1.12">
+ <doc xml:space="preserve">Frees @tc .</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCodeInterval</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="init"
+ c:identifier="gst_video_time_code_interval_init"
+ version="1.12">
+ <doc xml:space="preserve">Initializes @tc with the given values.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCodeInterval</doc>
+ <type name="VideoTimeCodeInterval"
+ c:type="GstVideoTimeCodeInterval*"/>
+ </instance-parameter>
+ <parameter name="hours" transfer-ownership="none">
+ <doc xml:space="preserve">the hours field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="minutes" transfer-ownership="none">
+ <doc xml:space="preserve">the minutes field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">the seconds field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">the frames field of #GstVideoTimeCodeInterval</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <record name="VideoTimeCodeMeta"
+ c:type="GstVideoTimeCodeMeta"
+ version="1.10">
+ <doc xml:space="preserve">Extra buffer metadata describing the GstVideoTimeCode of the frame.
+
+Each frame is assumed to have its own timecode, i.e. they are not
+automatically incremented/interpolated.</doc>
+ <field name="meta" writable="1">
+ <doc xml:space="preserve">parent #GstMeta</doc>
+ <type name="Gst.Meta" c:type="GstMeta"/>
+ </field>
+ <field name="tc" writable="1">
+ <doc xml:space="preserve">the GstVideoTimeCode to attach</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode"/>
+ </field>
+ <function name="get_info"
+ c:identifier="gst_video_time_code_meta_get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </record>
+ <enumeration name="VideoTransferFunction"
+ glib:type-name="GstVideoTransferFunction"
+ glib:get-type="gst_video_transfer_function_get_type"
+ c:type="GstVideoTransferFunction">
+ <doc xml:space="preserve">The video transfer function defines the formula for converting between
+non-linear RGB (R'G'B') and linear RGB</doc>
+ <member name="unknown"
+ value="0"
+ c:identifier="GST_VIDEO_TRANSFER_UNKNOWN"
+ glib:nick="unknown">
+ <doc xml:space="preserve">unknown transfer function</doc>
+ </member>
+ <member name="gamma10"
+ value="1"
+ c:identifier="GST_VIDEO_TRANSFER_GAMMA10"
+ glib:nick="gamma10">
+ <doc xml:space="preserve">linear RGB, gamma 1.0 curve</doc>
+ </member>
+ <member name="gamma18"
+ value="2"
+ c:identifier="GST_VIDEO_TRANSFER_GAMMA18"
+ glib:nick="gamma18">
+ <doc xml:space="preserve">Gamma 1.8 curve</doc>
+ </member>
+ <member name="gamma20"
+ value="3"
+ c:identifier="GST_VIDEO_TRANSFER_GAMMA20"
+ glib:nick="gamma20">
+ <doc xml:space="preserve">Gamma 2.0 curve</doc>
+ </member>
+ <member name="gamma22"
+ value="4"
+ c:identifier="GST_VIDEO_TRANSFER_GAMMA22"
+ glib:nick="gamma22">
+ <doc xml:space="preserve">Gamma 2.2 curve</doc>
+ </member>
+ <member name="bt709"
+ value="5"
+ c:identifier="GST_VIDEO_TRANSFER_BT709"
+ glib:nick="bt709">
+ <doc xml:space="preserve">Gamma 2.2 curve with a linear segment in the lower
+ range</doc>
+ </member>
+ <member name="smpte240m"
+ value="6"
+ c:identifier="GST_VIDEO_TRANSFER_SMPTE240M"
+ glib:nick="smpte240m">
+ <doc xml:space="preserve">Gamma 2.2 curve with a linear segment in the
+ lower range</doc>
+ </member>
+ <member name="srgb"
+ value="7"
+ c:identifier="GST_VIDEO_TRANSFER_SRGB"
+ glib:nick="srgb">
+ <doc xml:space="preserve">Gamma 2.4 curve with a linear segment in the lower
+ range</doc>
+ </member>
+ <member name="gamma28"
+ value="8"
+ c:identifier="GST_VIDEO_TRANSFER_GAMMA28"
+ glib:nick="gamma28">
+ <doc xml:space="preserve">Gamma 2.8 curve</doc>
+ </member>
+ <member name="log100"
+ value="9"
+ c:identifier="GST_VIDEO_TRANSFER_LOG100"
+ glib:nick="log100">
+ <doc xml:space="preserve">Logarithmic transfer characteristic
+ 100:1 range</doc>
+ </member>
+ <member name="log316"
+ value="10"
+ c:identifier="GST_VIDEO_TRANSFER_LOG316"
+ glib:nick="log316">
+ <doc xml:space="preserve">Logarithmic transfer characteristic
+ 316.22777:1 range</doc>
+ </member>
+ <member name="bt2020_12"
+ value="11"
+ c:identifier="GST_VIDEO_TRANSFER_BT2020_12"
+ glib:nick="bt2020-12">
+ <doc xml:space="preserve">Gamma 2.2 curve with a linear segment in the lower
+ range. Used for BT.2020 with 12 bits per
+ component. Since: 1.6</doc>
+ </member>
+ <member name="adobergb"
+ value="12"
+ c:identifier="GST_VIDEO_TRANSFER_ADOBERGB"
+ glib:nick="adobergb">
+ <doc xml:space="preserve">Gamma 2.19921875. Since: 1.8</doc>
+ </member>
+ </enumeration>
+ <function name="buffer_add_video_affine_transformation_meta"
+ c:identifier="gst_buffer_add_video_affine_transformation_meta"
+ version="1.8">
+ <doc xml:space="preserve">Attaches GstVideoAffineTransformationMeta metadata to @buffer with
+the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoAffineTransformationMeta on @buffer.</doc>
+ <type name="VideoAffineTransformationMeta"
+ c:type="GstVideoAffineTransformationMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_gl_texture_upload_meta"
+ c:identifier="gst_buffer_add_video_gl_texture_upload_meta">
+ <doc xml:space="preserve">Attaches GstVideoGLTextureUploadMeta metadata to @buffer with the given
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoGLTextureUploadMeta on @buffer.</doc>
+ <type name="VideoGLTextureUploadMeta"
+ c:type="GstVideoGLTextureUploadMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="texture_orientation" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoGLTextureOrientation</doc>
+ <type name="VideoGLTextureOrientation"
+ c:type="GstVideoGLTextureOrientation"/>
+ </parameter>
+ <parameter name="n_textures" transfer-ownership="none">
+ <doc xml:space="preserve">the number of textures</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="texture_type" transfer-ownership="none">
+ <doc xml:space="preserve">array of #GstVideoGLTextureType</doc>
+ <type name="VideoGLTextureType" c:type="GstVideoGLTextureType"/>
+ </parameter>
+ <parameter name="upload"
+ transfer-ownership="none"
+ scope="call"
+ closure="5">
+ <doc xml:space="preserve">the function to upload the buffer to a specific texture ID</doc>
+ <type name="VideoGLTextureUpload" c:type="GstVideoGLTextureUpload"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">user data for the implementor of @upload</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="user_data_copy"
+ transfer-ownership="none"
+ scope="call">
+ <doc xml:space="preserve">function to copy @user_data</doc>
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </parameter>
+ <parameter name="user_data_free"
+ transfer-ownership="none"
+ scope="call">
+ <doc xml:space="preserve">function to free @user_data</doc>
+ <type name="GObject.BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_meta"
+ c:identifier="gst_buffer_add_video_meta">
+ <doc xml:space="preserve">Attaches GstVideoMeta metadata to @buffer with the given parameters and the
+default offsets and strides for @format and @width x @height.
+
+This function calculates the default offsets and strides and then calls
+gst_buffer_add_video_meta_full() with them.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoMeta on @buffer.</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoFrameFlags</doc>
+ <type name="VideoFrameFlags" c:type="GstVideoFrameFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the height</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_meta_full"
+ c:identifier="gst_buffer_add_video_meta_full">
+ <doc xml:space="preserve">Attaches GstVideoMeta metadata to @buffer with the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoMeta on @buffer.</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoFrameFlags</doc>
+ <type name="VideoFrameFlags" c:type="GstVideoFrameFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">the height</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_planes" transfer-ownership="none">
+ <doc xml:space="preserve">number of planes</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset of each plane</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ <parameter name="stride" transfer-ownership="none">
+ <doc xml:space="preserve">stride of each plane</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_overlay_composition_meta"
+ c:identifier="gst_buffer_add_video_overlay_composition_meta">
+ <doc xml:space="preserve">Sets an overlay composition on a buffer. The buffer will obtain its own
+reference to the composition, meaning this function does not take ownership
+of @comp.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoOverlayCompositionMeta</doc>
+ <type name="VideoOverlayCompositionMeta"
+ c:type="GstVideoOverlayCompositionMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buf" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="comp"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">a #GstVideoOverlayComposition</doc>
+ <type name="VideoOverlayComposition"
+ c:type="GstVideoOverlayComposition*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_region_of_interest_meta"
+ c:identifier="gst_buffer_add_video_region_of_interest_meta">
+ <doc xml:space="preserve">Attaches #GstVideoRegionOfInterestMeta metadata to @buffer with the given
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoRegionOfInterestMeta on @buffer.</doc>
+ <type name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="roi_type" transfer-ownership="none">
+ <doc xml:space="preserve">Type of the region of interest (e.g. "face")</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">X position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">Y position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="w" transfer-ownership="none">
+ <doc xml:space="preserve">width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="h" transfer-ownership="none">
+ <doc xml:space="preserve">height</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_region_of_interest_meta_id"
+ c:identifier="gst_buffer_add_video_region_of_interest_meta_id">
+ <doc xml:space="preserve">Attaches #GstVideoRegionOfInterestMeta metadata to @buffer with the given
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoRegionOfInterestMeta on @buffer.</doc>
+ <type name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="roi_type" transfer-ownership="none">
+ <doc xml:space="preserve">Type of the region of interest (e.g. "face")</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">X position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">Y position</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="w" transfer-ownership="none">
+ <doc xml:space="preserve">width</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="h" transfer-ownership="none">
+ <doc xml:space="preserve">height</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_time_code_meta"
+ c:identifier="gst_buffer_add_video_time_code_meta"
+ version="1.10">
+ <doc xml:space="preserve">Attaches #GstVideoTimeCodeMeta metadata to @buffer with the given
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoTimeCodeMeta on @buffer.</doc>
+ <type name="VideoTimeCodeMeta" c:type="GstVideoTimeCodeMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="tc" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCode</doc>
+ <type name="VideoTimeCode" c:type="GstVideoTimeCode*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_add_video_time_code_meta_full"
+ c:identifier="gst_buffer_add_video_time_code_meta_full"
+ version="1.10">
+ <doc xml:space="preserve">Attaches #GstVideoTimeCodeMeta metadata to @buffer with the given
+parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoTimeCodeMeta on @buffer.</doc>
+ <type name="VideoTimeCodeMeta" c:type="GstVideoTimeCodeMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="fps_n" transfer-ownership="none">
+ <doc xml:space="preserve">framerate numerator</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="fps_d" transfer-ownership="none">
+ <doc xml:space="preserve">framerate denominator</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="latest_daily_jam" transfer-ownership="none">
+ <doc xml:space="preserve">a #GDateTime for the latest daily jam</doc>
+ <type name="GLib.DateTime" c:type="GDateTime*"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTimeCodeFlags</doc>
+ <type name="VideoTimeCodeFlags" c:type="GstVideoTimeCodeFlags"/>
+ </parameter>
+ <parameter name="hours" transfer-ownership="none">
+ <doc xml:space="preserve">hours since the daily jam</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="minutes" transfer-ownership="none">
+ <doc xml:space="preserve">minutes since the daily jam</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="seconds" transfer-ownership="none">
+ <doc xml:space="preserve">seconds since the daily jam</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="frames" transfer-ownership="none">
+ <doc xml:space="preserve">frames since the daily jam</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="field_count" transfer-ownership="none">
+ <doc xml:space="preserve">fields since the daily jam</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_get_video_meta"
+ c:identifier="gst_buffer_get_video_meta">
+ <doc xml:space="preserve">Find the #GstVideoMeta on @buffer with the lowest @id.
+
+Buffers can contain multiple #GstVideoMeta metadata items when dealing with
+multiview buffers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoMeta with lowest id (usually 0) or %NULL when there
+is no such metadata on @buffer.</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_get_video_meta_id"
+ c:identifier="gst_buffer_get_video_meta_id">
+ <doc xml:space="preserve">Find the #GstVideoMeta on @buffer with the given @id.
+
+Buffers can contain multiple #GstVideoMeta metadata items when dealing with
+multiview buffers.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoMeta with @id or %NULL when there is no such metadata
+on @buffer.</doc>
+ <type name="VideoMeta" c:type="GstVideoMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">a metadata id</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_get_video_region_of_interest_meta_id"
+ c:identifier="gst_buffer_get_video_region_of_interest_meta_id">
+ <doc xml:space="preserve">Find the #GstVideoRegionOfInterestMeta on @buffer with the given @id.
+
+Buffers can contain multiple #GstVideoRegionOfInterestMeta metadata items if
+multiple regions of interests are marked on a frame.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoRegionOfInterestMeta with @id or %NULL when there is
+no such metadata on @buffer.</doc>
+ <type name="VideoRegionOfInterestMeta"
+ c:type="GstVideoRegionOfInterestMeta*"/>
+ </return-value>
+ <parameters>
+ <parameter name="buffer" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstBuffer</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="id" transfer-ownership="none">
+ <doc xml:space="preserve">a metadata id</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_pool_config_get_video_alignment"
+ c:identifier="gst_buffer_pool_config_get_video_alignment">
+ <doc xml:space="preserve">Get the video alignment from the bufferpool configuration @config in
+in @align</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if @config could be parsed correctly.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoAlignment</doc>
+ <type name="VideoAlignment" c:type="GstVideoAlignment*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="buffer_pool_config_set_video_alignment"
+ c:identifier="gst_buffer_pool_config_set_video_alignment">
+ <doc xml:space="preserve">Set the video alignment in @align to the bufferpool configuration
+@config</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="config" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstStructure</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ <parameter name="align" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoAlignment</doc>
+ <type name="VideoAlignment" c:type="GstVideoAlignment*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="is_video_overlay_prepare_window_handle_message"
+ c:identifier="gst_is_video_overlay_prepare_window_handle_message">
+ <doc xml:space="preserve">Convenience function to check if the given message is a
+"prepare-window-handle" message from a #GstVideoOverlay.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">whether @msg is a "prepare-window-handle" message</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="msg" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstMessage</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_event_get_type"
+ c:identifier="gst_navigation_event_get_type"
+ moved-to="Navigation.event_get_type">
+ <doc xml:space="preserve">Inspect a #GstEvent and return the #GstNavigationEventType of the event, or
+#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event.</doc>
+ <return-value transfer-ownership="none">
+ <type name="NavigationEventType" c:type="GstNavigationEventType"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_event_parse_command"
+ c:identifier="gst_navigation_event_parse_command"
+ moved-to="Navigation.event_parse_command">
+ <doc xml:space="preserve">Inspect a #GstNavigation command event and retrieve the enum value of the
+associated command.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the navigation command could be extracted, otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="command"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to GstNavigationCommand to receive the
+ type of the navigation event.</doc>
+ <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_event_parse_key_event"
+ c:identifier="gst_navigation_event_parse_key_event"
+ moved-to="Navigation.event_parse_key_event">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="key"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a location to receive
+ the string identifying the key press. The returned string is owned by the
+ event, and valid only until the event is unreffed.</doc>
+ <type name="utf8" c:type="const gchar**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_event_parse_mouse_button_event"
+ c:identifier="gst_navigation_event_parse_mouse_button_event"
+ moved-to="Navigation.event_parse_mouse_button_event">
+ <doc xml:space="preserve">Retrieve the details of either a #GstNavigation mouse button press event or
+a mouse button release event. Determine which type the event is using
+gst_navigation_event_get_type() to retrieve the #GstNavigationEventType.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if the button number and both coordinates could be extracted,
+ otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="button"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gint that will receive the button
+ number associated with the event.</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the x coordinate of the
+ mouse button event.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the y coordinate of the
+ mouse button event.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_event_parse_mouse_move_event"
+ c:identifier="gst_navigation_event_parse_mouse_move_event"
+ moved-to="Navigation.event_parse_mouse_move_event">
+ <doc xml:space="preserve">Inspect a #GstNavigation mouse movement event and extract the coordinates
+of the event.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if both coordinates could be extracted, otherwise FALSE.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to inspect.</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the x coordinate of the
+ mouse movement.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a gdouble to receive the y coordinate of the
+ mouse movement.</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_get_type"
+ c:identifier="gst_navigation_message_get_type"
+ moved-to="Navigation.message_get_type">
+ <doc xml:space="preserve">Check a bus message to see if it is a #GstNavigation event, and return
+the #GstNavigationMessageType identifying the type of the message if so.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The type of the #GstMessage, or
+#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation
+notification.</doc>
+ <type name="NavigationMessageType" c:type="GstNavigationMessageType"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_new_angles_changed"
+ c:identifier="gst_navigation_message_new_angles_changed"
+ moved-to="Navigation.message_new_angles_changed">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application
+that the current angle, or current number of angles available in a
+multiangle video has changed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="cur_angle" transfer-ownership="none">
+ <doc xml:space="preserve">The currently selected angle.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_angles" transfer-ownership="none">
+ <doc xml:space="preserve">The number of viewing angles now available.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_new_commands_changed"
+ c:identifier="gst_navigation_message_new_commands_changed"
+ moved-to="Navigation.message_new_commands_changed">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_new_event"
+ c:identifier="gst_navigation_message_new_event"
+ moved-to="Navigation.message_new_event"
+ version="1.6">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_EVENT.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A navigation #GstEvent</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_new_mouse_over"
+ c:identifier="gst_navigation_message_new_mouse_over"
+ moved-to="Navigation.message_new_mouse_over">
+ <doc xml:space="preserve">Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_MOUSE_OVER.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new #GstMessage.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstObject to set as source of the new message.</doc>
+ <type name="Gst.Object" c:type="GstObject*"/>
+ </parameter>
+ <parameter name="active" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the mouse has entered a clickable area of the display.
+%FALSE if it over a non-clickable area.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_parse_angles_changed"
+ c:identifier="gst_navigation_message_parse_angles_changed"
+ moved-to="Navigation.message_parse_angles_changed">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED
+and extract the @cur_angle and @n_angles parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="cur_angle"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a #guint to receive the new
+ current angle number, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="n_angles"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a #guint to receive the new angle
+ count, or NULL.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_parse_event"
+ c:identifier="gst_navigation_message_parse_event"
+ moved-to="Navigation.message_parse_event"
+ version="1.6">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_EVENT
+and extract contained #GstEvent. The caller must unref the @event when done
+with it.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="event"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to a #GstEvent to receive
+ the contained navigation event.</doc>
+ <type name="Gst.Event" c:type="GstEvent**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_message_parse_mouse_over"
+ c:identifier="gst_navigation_message_parse_mouse_over"
+ moved-to="Navigation.message_parse_mouse_over">
+ <doc xml:space="preserve">Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER
+and extract the active/inactive flag. If the mouse over event is marked
+active, it indicates that the mouse is over a clickable area.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the message could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="message" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstMessage to inspect.</doc>
+ <type name="Gst.Message" c:type="GstMessage*"/>
+ </parameter>
+ <parameter name="active"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">A pointer to a gboolean to receive the
+ active/inactive state, or NULL.</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_get_type"
+ c:identifier="gst_navigation_query_get_type"
+ moved-to="Navigation.query_get_type">
+ <doc xml:space="preserve">Inspect a #GstQuery and return the #GstNavigationQueryType associated with
+it if it is a #GstNavigation query.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstNavigationQueryType of the query, or
+#GST_NAVIGATION_QUERY_INVALID</doc>
+ <type name="NavigationQueryType" c:type="GstNavigationQueryType"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">The query to inspect</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_new_angles"
+ c:identifier="gst_navigation_query_new_angles"
+ moved-to="Navigation.query_new_angles">
+ <doc xml:space="preserve">Create a new #GstNavigation angles query. When executed, it will
+query the pipeline for the set of currently available angles, which may be
+greater than one in a multiangle video.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new query.</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </return-value>
+ </function>
+ <function name="navigation_query_new_commands"
+ c:identifier="gst_navigation_query_new_commands"
+ moved-to="Navigation.query_new_commands">
+ <doc xml:space="preserve">Create a new #GstNavigation commands query. When executed, it will
+query the pipeline for the set of currently available commands.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new query.</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </return-value>
+ </function>
+ <function name="navigation_query_parse_angles"
+ c:identifier="gst_navigation_query_parse_angles"
+ moved-to="Navigation.query_parse_angles">
+ <doc xml:space="preserve">Parse the current angle number in the #GstNavigation angles @query into the
+#guint pointed to by the @cur_angle variable, and the number of available
+angles into the #guint pointed to by the @n_angles variable.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="cur_angle"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a #guint into which to store the
+ currently selected angle value from the query, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="n_angles"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Pointer to a #guint into which to store the
+ number of angles value from the query, or NULL</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_parse_commands_length"
+ c:identifier="gst_navigation_query_parse_commands_length"
+ moved-to="Navigation.query_parse_commands_length">
+ <doc xml:space="preserve">Parse the number of commands in the #GstNavigation commands @query.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="n_cmds"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">the number of commands in this query.</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_parse_commands_nth"
+ c:identifier="gst_navigation_query_parse_commands_nth"
+ moved-to="Navigation.query_parse_commands_nth">
+ <doc xml:space="preserve">Parse the #GstNavigation command query and retrieve the @nth command from
+it into @cmd. If the list contains less elements than @nth, @cmd will be
+set to #GST_NAVIGATION_COMMAND_INVALID.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the query could be successfully parsed. %FALSE if not.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="nth" transfer-ownership="none">
+ <doc xml:space="preserve">the nth command to retrieve.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="cmd"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">a pointer to store the nth command into.</doc>
+ <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_set_angles"
+ c:identifier="gst_navigation_query_set_angles"
+ moved-to="Navigation.query_set_angles">
+ <doc xml:space="preserve">Set the #GstNavigation angles query result field in @query.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="cur_angle" transfer-ownership="none">
+ <doc xml:space="preserve">the current viewing angle to set.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="n_angles" transfer-ownership="none">
+ <doc xml:space="preserve">the number of viewing angles to set.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="navigation_query_set_commandsv"
+ c:identifier="gst_navigation_query_set_commandsv"
+ moved-to="Navigation.query_set_commandsv">
+ <doc xml:space="preserve">Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="query" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstQuery</doc>
+ <type name="Gst.Query" c:type="GstQuery*"/>
+ </parameter>
+ <parameter name="n_cmds" transfer-ownership="none">
+ <doc xml:space="preserve">the number of commands to set.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="cmds" transfer-ownership="none">
+ <doc xml:space="preserve">An array containing @n_cmds
+ @GstNavigationCommand values.</doc>
+ <array length="1" zero-terminated="0" c:type="GstNavigationCommand*">
+ <type name="NavigationCommand" c:type="GstNavigationCommand"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_affine_transformation_meta_api_get_type"
+ c:identifier="gst_video_affine_transformation_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_affine_transformation_meta_get_info"
+ c:identifier="gst_video_affine_transformation_meta_get_info"
+ moved-to="VideoAffineTransformationMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_blend" c:identifier="gst_video_blend">
+ <doc xml:space="preserve">Lets you blend the @src image into the @dest image</doc>
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dest" transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoFrame where to blend @src in</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFrame that we want to blend into</doc>
+ <type name="VideoFrame" c:type="GstVideoFrame*"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">The x offset in pixel where the @src image should be blended</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">the y offset in pixel where the @src image should be blended</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="global_alpha" transfer-ownership="none">
+ <doc xml:space="preserve">the global_alpha each per-pixel alpha value is multiplied
+ with</doc>
+ <type name="gfloat" c:type="gfloat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_blend_scale_linear_RGBA"
+ c:identifier="gst_video_blend_scale_linear_RGBA">
+ <doc xml:space="preserve">Scales a buffer containing RGBA (or AYUV) video. This is an internal
+helper function which is used to scale subtitle overlays, and may be
+deprecated in the near future. Use #GstVideoScaler to scale video buffers
+instead.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="src" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoInfo describing the video data in @src_buffer</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="src_buffer" transfer-ownership="none">
+ <doc xml:space="preserve">the source buffer containing video pixels to scale</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer*"/>
+ </parameter>
+ <parameter name="dest_height" transfer-ownership="none">
+ <doc xml:space="preserve">the height in pixels to scale the video data in @src_buffer to</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="dest_width" transfer-ownership="none">
+ <doc xml:space="preserve">the width in pixels to scale the video data in @src_buffer to</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="dest"
+ direction="out"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">pointer to a #GstVideoInfo structure that will be filled in
+ with the details for @dest_buffer</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="dest_buffer"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a pointer to a #GstBuffer variable, which will be
+ set to a newly-allocated buffer containing the scaled pixels.</doc>
+ <type name="Gst.Buffer" c:type="GstBuffer**"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_calculate_display_ratio"
+ c:identifier="gst_video_calculate_display_ratio">
+ <doc xml:space="preserve">Given the Pixel Aspect Ratio and size of an input video frame, and the
+pixel aspect ratio of the intended display device, calculates the actual
+display ratio the video will be rendered with.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A boolean indicating success and a calculated Display Ratio in the
+dar_n and dar_d parameters.
+The return value is FALSE in the case of integer overflow or other error.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="dar_n"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Numerator of the calculated display_ratio</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="dar_d"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Denominator of the calculated display_ratio</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="video_width" transfer-ownership="none">
+ <doc xml:space="preserve">Width of the video frame in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="video_height" transfer-ownership="none">
+ <doc xml:space="preserve">Height of the video frame in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="video_par_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the pixel aspect ratio of the input video.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="video_par_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the pixel aspect ratio of the input video.</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="display_par_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the pixel aspect ratio of the display device</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="display_par_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the pixel aspect ratio of the display device</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_chroma_from_string"
+ c:identifier="gst_video_chroma_from_string">
+ <doc xml:space="preserve">Convert @s to a #GstVideoChromaSite</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaSite or %GST_VIDEO_CHROMA_SITE_UNKNOWN when @s does
+not contain a valid chroma description.</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </return-value>
+ <parameters>
+ <parameter name="s" transfer-ownership="none">
+ <doc xml:space="preserve">a chromasite string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_chroma_resample"
+ c:identifier="gst_video_chroma_resample">
+ <doc xml:space="preserve">Perform resampling of @width chroma pixels in @lines.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="resample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaResample</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </parameter>
+ <parameter name="lines"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">pixel lines</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the number of pixels on one line</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_chroma_resample_new"
+ c:identifier="gst_video_chroma_resample_new"
+ moved-to="VideoChromaResample.new"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new resampler object for the given parameters. When @h_factor or
+@v_factor is &gt; 0, upsampling will be used, otherwise subsampling is
+performed.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstVideoChromaResample that should be freed with
+ gst_video_chroma_resample_free() after usage.</doc>
+ <type name="VideoChromaResample" c:type="GstVideoChromaResample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaMethod</doc>
+ <type name="VideoChromaMethod" c:type="GstVideoChromaMethod"/>
+ </parameter>
+ <parameter name="site" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaSite</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoChromaFlags</doc>
+ <type name="VideoChromaFlags" c:type="GstVideoChromaFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="h_factor" transfer-ownership="none">
+ <doc xml:space="preserve">horizontal resampling factor</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="v_factor" transfer-ownership="none">
+ <doc xml:space="preserve">vertical resampling factor</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_chroma_to_string"
+ c:identifier="gst_video_chroma_to_string">
+ <doc xml:space="preserve">Converts @site to its string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a string describing @site.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="site" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoChromaSite</doc>
+ <type name="VideoChromaSite" c:type="GstVideoChromaSite"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_color_matrix_get_Kr_Kb"
+ c:identifier="gst_video_color_matrix_get_Kr_Kb"
+ moved-to="VideoColorMatrix.get_Kr_Kb"
+ version="1.6">
+ <doc xml:space="preserve">Get the coefficients used to convert between Y'PbPr and R'G'B' using @matrix.
+
+When:
+
+|[
+ 0.0 &lt;= [Y',R',G',B'] &lt;= 1.0)
+ (-0.5 &lt;= [Pb,Pr] &lt;= 0.5)
+]|
+
+the general conversion is given by:
+
+|[
+ Y' = Kr*R' + (1-Kr-Kb)*G' + Kb*B'
+ Pb = (B'-Y')/(2*(1-Kb))
+ Pr = (R'-Y')/(2*(1-Kr))
+]|
+
+and the other way around:
+
+|[
+ R' = Y' + Cr*2*(1-Kr)
+ G' = Y' - Cb*2*(1-Kb)*Kb/(1-Kr-Kb) - Cr*2*(1-Kr)*Kr/(1-Kr-Kb)
+ B' = Y' + Cb*2*(1-Kb)
+]|</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">TRUE if @matrix was a YUV color format and @Kr and @Kb contain valid
+ values.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="matrix" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorMatrix</doc>
+ <type name="VideoColorMatrix" c:type="GstVideoColorMatrix"/>
+ </parameter>
+ <parameter name="Kr"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result red channel coefficient</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ <parameter name="Kb"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">result blue channel coefficient</doc>
+ <type name="gdouble" c:type="gdouble*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_color_primaries_get_info"
+ c:identifier="gst_video_color_primaries_get_info"
+ moved-to="VideoColorPrimaries.get_info"
+ version="1.6">
+ <doc xml:space="preserve">Get information about the chromaticity coordinates of @primaries.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorPrimariesInfo for @primaries.</doc>
+ <type name="VideoColorPrimariesInfo"
+ c:type="const GstVideoColorPrimariesInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="primaries" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorPrimaries</doc>
+ <type name="VideoColorPrimaries" c:type="GstVideoColorPrimaries"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_color_range_offsets"
+ c:identifier="gst_video_color_range_offsets"
+ moved-to="VideoColorRange.offsets">
+ <doc xml:space="preserve">Compute the offset and scale values for each component of @info. For each
+component, (c[i] - offset[i]) / scale[i] will scale the component c[i] to the
+range [0.0 .. 1.0].
+
+The reverse operation (c[i] * scale[i]) + offset[i] can be used to convert
+the component values in range [0.0 .. 1.0] back to their representation in
+@info and @range.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="range" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoColorRange</doc>
+ <type name="VideoColorRange" c:type="GstVideoColorRange"/>
+ </parameter>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormatInfo</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </parameter>
+ <parameter name="offset"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output offsets</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </parameter>
+ <parameter name="scale"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">output scale</doc>
+ <array zero-terminated="0" c:type="gint" fixed-size="4">
+ <type name="gint" c:type="gint"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_color_transfer_decode"
+ c:identifier="gst_video_color_transfer_decode"
+ version="1.6">
+ <doc xml:space="preserve">Convert @val to its gamma decoded value. This is the inverse operation of
+@gst_video_color_transfer_encode().
+
+For a non-linear value L' in the range [0..1], conversion to the linear
+L is in general performed with a power function like:
+
+|[
+ L = L' ^ gamma
+]|
+
+Depending on @func, different formulas might be applied. Some formulas
+encode a linear segment in the lower range.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the gamme decoded value of @val</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="func" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTransferFunction</doc>
+ <type name="VideoTransferFunction"
+ c:type="GstVideoTransferFunction"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">a value</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_color_transfer_encode"
+ c:identifier="gst_video_color_transfer_encode"
+ version="1.6">
+ <doc xml:space="preserve">Convert @val to its gamma encoded value.
+
+For a linear value L in the range [0..1], conversion to the non-linear
+(gamma encoded) L' is in general performed with a power function like:
+
+|[
+ L' = L ^ (1 / gamma)
+]|
+
+Depending on @func, different formulas might be applied. Some formulas
+encode a linear segment in the lower range.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the gamme encoded value of @val</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </return-value>
+ <parameters>
+ <parameter name="func" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTransferFunction</doc>
+ <type name="VideoTransferFunction"
+ c:type="GstVideoTransferFunction"/>
+ </parameter>
+ <parameter name="val" transfer-ownership="none">
+ <doc xml:space="preserve">a value</doc>
+ <type name="gdouble" c:type="gdouble"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_convert_sample"
+ c:identifier="gst_video_convert_sample"
+ throws="1">
+ <doc xml:space="preserve">Converts a raw video buffer into the specified output caps.
+
+The output caps can be any raw video formats or any image formats (jpeg, png, ...).
+
+The width, height and pixel-aspect-ratio can also be specified in the output caps.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The converted #GstSample, or %NULL if an error happened (in which case @err
+will point to the #GError).</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </return-value>
+ <parameters>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ <parameter name="to_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to convert to</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time allowed for the processing.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_convert_sample_async"
+ c:identifier="gst_video_convert_sample_async">
+ <doc xml:space="preserve">Converts a raw video buffer into the specified output caps.
+
+The output caps can be any raw video formats or any image formats (jpeg, png, ...).
+
+The width, height and pixel-aspect-ratio can also be specified in the output caps.
+
+@callback will be called after conversion, when an error occured or if conversion didn't
+finish after @timeout. @callback will always be called from the thread default
+%GMainContext, see g_main_context_get_thread_default(). If GLib before 2.22 is used,
+this will always be the global default main context.
+
+@destroy_notify will be called after the callback was called and @user_data is not needed
+anymore.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="sample" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstSample</doc>
+ <type name="Gst.Sample" c:type="GstSample*"/>
+ </parameter>
+ <parameter name="to_caps" transfer-ownership="none">
+ <doc xml:space="preserve">the #GstCaps to convert to</doc>
+ <type name="Gst.Caps" c:type="const GstCaps*"/>
+ </parameter>
+ <parameter name="timeout" transfer-ownership="none">
+ <doc xml:space="preserve">the maximum amount of time allowed for the processing.</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="4"
+ destroy="5">
+ <doc xml:space="preserve">%GstVideoConvertSampleCallback that will be called after conversion.</doc>
+ <type name="VideoConvertSampleCallback"
+ c:type="GstVideoConvertSampleCallback"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">extra data that will be passed to the @callback</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy_notify"
+ transfer-ownership="none"
+ scope="async">
+ <doc xml:space="preserve">%GDestroyNotify to be called after @user_data is not needed anymore</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_converter_new"
+ c:identifier="gst_video_converter_new"
+ moved-to="VideoConverter.new"
+ version="1.6"
+ introspectable="0">
+ <doc xml:space="preserve">Create a new converter object to convert between @in_info and @out_info
+with @config.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstVideoConverter or %NULL if conversion is not possible.</doc>
+ <type name="VideoConverter" c:type="GstVideoConverter*"/>
+ </return-value>
+ <parameters>
+ <parameter name="in_info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="out_info" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInfo</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="config" transfer-ownership="full">
+ <doc xml:space="preserve">a #GstStructure with configuration options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_crop_meta_api_get_type"
+ c:identifier="gst_video_crop_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_crop_meta_get_info"
+ c:identifier="gst_video_crop_meta_get_info"
+ moved-to="VideoCropMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_dither_new"
+ c:identifier="gst_video_dither_new"
+ moved-to="VideoDither.new"
+ introspectable="0">
+ <doc xml:space="preserve">Make a new dither object for dithering lines of @format using the
+algorithm described by @method.
+
+Each component will be quantized to a multiple of @quantizer. Better
+performance is achived when @quantizer is a power of 2.
+
+@width is the width of the lines that this ditherer will handle.</doc>
+ <return-value>
+ <doc xml:space="preserve">a new #GstVideoDither</doc>
+ <type name="VideoDither" c:type="GstVideoDither*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDitherMethod</doc>
+ <type name="VideoDitherMethod" c:type="GstVideoDitherMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoDitherFlags</doc>
+ <type name="VideoDitherFlags" c:type="GstVideoDitherFlags"/>
+ </parameter>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="quantizer" transfer-ownership="none">
+ <doc xml:space="preserve">quantizer</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">the width of the lines</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_is_force_key_unit"
+ c:identifier="gst_video_event_is_force_key_unit">
+ <doc xml:space="preserve">Checks if an event is a force key unit event. Returns true for both upstream
+and downstream force key unit events.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event is a valid force key unit event</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to check</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_new_downstream_force_key_unit"
+ c:identifier="gst_video_event_new_downstream_force_key_unit">
+ <doc xml:space="preserve">Creates a new downstream force key unit event. A downstream force key unit
+event can be sent down the pipeline to request downstream elements to produce
+a key unit. A downstream force key unit event must also be sent when handling
+an upstream force key unit event to notify downstream that the latter has been
+handled.
+
+To parse an event created by gst_video_event_new_downstream_force_key_unit() use
+gst_video_event_parse_downstream_force_key_unit().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new GstEvent</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="timestamp" transfer-ownership="none">
+ <doc xml:space="preserve">the timestamp of the buffer that starts a new key unit</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="stream_time" transfer-ownership="none">
+ <doc xml:space="preserve">the stream_time of the buffer that starts a new key unit</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time of the buffer that starts a new key unit</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="all_headers" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to produce headers when starting a new key unit</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="count" transfer-ownership="none">
+ <doc xml:space="preserve">integer that can be used to number key units</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_new_still_frame"
+ c:identifier="gst_video_event_new_still_frame">
+ <doc xml:space="preserve">Creates a new Still Frame event. If @in_still is %TRUE, then the event
+represents the start of a still frame sequence. If it is %FALSE, then
+the event ends a still frame sequence.
+
+To parse an event created by gst_video_event_new_still_frame() use
+gst_video_event_parse_still_frame().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new GstEvent</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="in_still" transfer-ownership="none">
+ <doc xml:space="preserve">boolean value for the still-frame state of the event.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_new_upstream_force_key_unit"
+ c:identifier="gst_video_event_new_upstream_force_key_unit">
+ <doc xml:space="preserve">Creates a new upstream force key unit event. An upstream force key unit event
+can be sent to request upstream elements to produce a key unit.
+
+@running_time can be set to request a new key unit at a specific
+running_time. If set to GST_CLOCK_TIME_NONE, upstream elements will produce a
+new key unit as soon as possible.
+
+To parse an event created by gst_video_event_new_downstream_force_key_unit() use
+gst_video_event_parse_downstream_force_key_unit().</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The new GstEvent</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </return-value>
+ <parameters>
+ <parameter name="running_time" transfer-ownership="none">
+ <doc xml:space="preserve">the running_time at which a new key unit should be produced</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="all_headers" transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE to produce headers when starting a new key unit</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="count" transfer-ownership="none">
+ <doc xml:space="preserve">integer that can be used to number key units</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_parse_downstream_force_key_unit"
+ c:identifier="gst_video_event_parse_downstream_force_key_unit">
+ <doc xml:space="preserve">Get timestamp, stream-time, running-time, all-headers and count in the force
+key unit event. See gst_video_event_new_downstream_force_key_unit() for a
+full description of the downstream force key unit event.
+
+@running_time will be adjusted for any pad offsets of pads it was passing through.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event is a valid downstream force key unit event.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to parse</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="timestamp"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the timestamp in the event</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="stream_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the stream-time in the event</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the running-time in the event</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="all_headers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the all_headers flag in the event</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the count field of the event</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_parse_still_frame"
+ c:identifier="gst_video_event_parse_still_frame">
+ <doc xml:space="preserve">Parse a #GstEvent, identify if it is a Still Frame event, and
+return the still-frame state from the event if it is.
+If the event represents the start of a still frame, the in_still
+variable will be set to TRUE, otherwise FALSE. It is OK to pass NULL for the
+in_still variable order to just check whether the event is a valid still-frame
+event.
+
+Create a still frame event using gst_video_event_new_still_frame()</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event is a valid still-frame event. %FALSE if not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to parse</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="in_still"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">
+ A boolean to receive the still-frame status from the event, or NULL</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_event_parse_upstream_force_key_unit"
+ c:identifier="gst_video_event_parse_upstream_force_key_unit">
+ <doc xml:space="preserve">Get running-time, all-headers and count in the force key unit event. See
+gst_video_event_new_upstream_force_key_unit() for a full description of the
+upstream force key unit event.
+
+Create an upstream force key unit event using gst_video_event_new_upstream_force_key_unit()
+
+@running_time will be adjusted for any pad offsets of pads it was passing through.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the event is a valid upstream force-key-unit event. %FALSE if not</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="event" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstEvent to parse</doc>
+ <type name="Gst.Event" c:type="GstEvent*"/>
+ </parameter>
+ <parameter name="running_time"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the running_time in the event</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+ </parameter>
+ <parameter name="all_headers"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the all_headers flag in the event</doc>
+ <type name="gboolean" c:type="gboolean*"/>
+ </parameter>
+ <parameter name="count"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">A pointer to the count field in the event</doc>
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_field_order_from_string"
+ c:identifier="gst_video_field_order_from_string"
+ moved-to="VideoFieldOrder.from_string"
+ version="1.12">
+ <doc xml:space="preserve">Convert @order to a #GstVideoFieldOrder</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFieldOrder of @order or
+ #GST_VIDEO_FIELD_ORDER_UNKNOWN when @order is not a valid
+ string representation for a #GstVideoFieldOrder.</doc>
+ <type name="VideoFieldOrder" c:type="GstVideoFieldOrder"/>
+ </return-value>
+ <parameters>
+ <parameter name="order" transfer-ownership="none">
+ <doc xml:space="preserve">a field order</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_field_order_to_string"
+ c:identifier="gst_video_field_order_to_string"
+ moved-to="VideoFieldOrder.to_string"
+ version="1.12">
+ <doc xml:space="preserve">Convert @order to its string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@order as a string or NULL if @order in invalid.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="order" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFieldOrder</doc>
+ <type name="VideoFieldOrder" c:type="GstVideoFieldOrder"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_from_fourcc"
+ c:identifier="gst_video_format_from_fourcc"
+ moved-to="VideoFormat.from_fourcc">
+ <doc xml:space="preserve">Converts a FOURCC value into the corresponding #GstVideoFormat.
+If the FOURCC cannot be represented by #GstVideoFormat,
+#GST_VIDEO_FORMAT_UNKNOWN is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat describing the FOURCC value</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="fourcc" transfer-ownership="none">
+ <doc xml:space="preserve">a FOURCC value representing raw YUV video</doc>
+ <type name="guint32" c:type="guint32"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_from_masks"
+ c:identifier="gst_video_format_from_masks"
+ moved-to="VideoFormat.from_masks">
+ <doc xml:space="preserve">Find the #GstVideoFormat for the given parameters.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat or GST_VIDEO_FORMAT_UNKNOWN when the parameters to
+not specify a known format.</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="depth" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of bits used for a pixel</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="bpp" transfer-ownership="none">
+ <doc xml:space="preserve">the amount of bits used to store a pixel. This value is bigger than
+ @depth</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="endianness" transfer-ownership="none">
+ <doc xml:space="preserve">the endianness of the masks, #G_LITTLE_ENDIAN or #G_BIG_ENDIAN</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="red_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the red mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="green_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the green mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="blue_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the blue mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="alpha_mask" transfer-ownership="none">
+ <doc xml:space="preserve">the alpha mask, or 0 if no alpha mask</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_from_string"
+ c:identifier="gst_video_format_from_string"
+ moved-to="VideoFormat.from_string">
+ <doc xml:space="preserve">Convert the @format string to its #GstVideoFormat.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoFormat for @format or GST_VIDEO_FORMAT_UNKNOWN when the
+string is not a known format.</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a format string</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_get_info"
+ c:identifier="gst_video_format_get_info"
+ moved-to="VideoFormat.get_info">
+ <doc xml:space="preserve">Get the #GstVideoFormatInfo for @format</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoFormatInfo for @format.</doc>
+ <type name="VideoFormatInfo" c:type="const GstVideoFormatInfo*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_get_palette"
+ c:identifier="gst_video_format_get_palette"
+ moved-to="VideoFormat.get_palette"
+ version="1.2">
+ <doc xml:space="preserve">Get the default palette of @format. This the palette used in the pack
+function for paletted formats.</doc>
+ <return-value transfer-ownership="none" nullable="1">
+ <doc xml:space="preserve">the default palette of @format or %NULL when
+@format does not have a palette.</doc>
+ <type name="gpointer" c:type="gconstpointer"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ <parameter name="size"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">size of the palette in bytes</doc>
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_to_fourcc"
+ c:identifier="gst_video_format_to_fourcc"
+ moved-to="VideoFormat.to_fourcc">
+ <doc xml:space="preserve">Converts a #GstVideoFormat value into the corresponding FOURCC. Only
+a few YUV formats have corresponding FOURCC values. If @format has
+no corresponding FOURCC value, 0 is returned.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the FOURCC corresponding to @format</doc>
+ <type name="guint32" c:type="guint32"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_format_to_string"
+ c:identifier="gst_video_format_to_string"
+ moved-to="VideoFormat.to_string">
+ <doc xml:space="preserve">Returns a string containing a descriptive name for
+the #GstVideoFormat if there is one, or NULL otherwise.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the name corresponding to @format</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="format" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoFormat video format</doc>
+ <type name="VideoFormat" c:type="GstVideoFormat"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_gl_texture_upload_meta_api_get_type"
+ c:identifier="gst_video_gl_texture_upload_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_gl_texture_upload_meta_get_info"
+ c:identifier="gst_video_gl_texture_upload_meta_get_info"
+ moved-to="VideoGLTextureUploadMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_guess_framerate"
+ c:identifier="gst_video_guess_framerate"
+ version="1.6">
+ <doc xml:space="preserve">Given the nominal duration of one video frame,
+this function will check some standard framerates for
+a close match (within 0.1%) and return one if possible,
+
+It will calculate an arbitrary framerate if no close
+match was found, and return %FALSE.
+
+It returns %FALSE if a duration of 0 is passed.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if a close "standard" framerate was
+recognised, and %FALSE otherwise.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="duration" transfer-ownership="none">
+ <doc xml:space="preserve">Nominal duration of one frame</doc>
+ <type name="Gst.ClockTime" c:type="GstClockTime"/>
+ </parameter>
+ <parameter name="dest_n"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Numerator of the calculated framerate</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ <parameter name="dest_d"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full"
+ optional="1"
+ allow-none="1">
+ <doc xml:space="preserve">Denominator of the calculated framerate</doc>
+ <type name="gint" c:type="gint*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_interlace_mode_from_string"
+ c:identifier="gst_video_interlace_mode_from_string"
+ moved-to="VideoInterlaceMode.from_string"
+ version="1.6">
+ <doc xml:space="preserve">Convert @mode to a #GstVideoInterlaceMode</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the #GstVideoInterlaceMode of @mode or
+ #GST_VIDEO_INTERLACE_MODE_PROGRESSIVE when @mode is not a valid
+ string representation for a #GstVideoInterlaceMode.</doc>
+ <type name="VideoInterlaceMode" c:type="GstVideoInterlaceMode"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a mode</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_interlace_mode_to_string"
+ c:identifier="gst_video_interlace_mode_to_string"
+ moved-to="VideoInterlaceMode.to_string"
+ version="1.6">
+ <doc xml:space="preserve">Convert @mode to its string representation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">@mode as a string or NULL if @mode in invalid.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoInterlaceMode</doc>
+ <type name="VideoInterlaceMode" c:type="GstVideoInterlaceMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_meta_api_get_type"
+ c:identifier="gst_video_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_meta_get_info"
+ c:identifier="gst_video_meta_get_info"
+ moved-to="VideoMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_meta_transform_scale_get_quark"
+ c:identifier="gst_video_meta_transform_scale_get_quark"
+ moved-to="VideoMetaTransform.scale_get_quark">
+ <doc xml:space="preserve">Get the #GQuark for the "gst-video-scale" metadata transform operation.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">a #GQuark</doc>
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_get_doubled_height_modes"
+ c:identifier="gst_video_multiview_get_doubled_height_modes"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A const #GValue containing a list of stereo video modes
+
+Utility function that returns a #GValue with a GstList of packed stereo
+video modes with double the height of a single view for use in
+caps negotiations. Currently this is top-bottom and row-interleaved.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_get_doubled_size_modes"
+ c:identifier="gst_video_multiview_get_doubled_size_modes"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A const #GValue containing a list of stereo video modes
+
+Utility function that returns a #GValue with a GstList of packed
+stereo video modes that have double the width/height of a single
+view for use in caps negotiation. Currently this is just
+'checkerboard' layout.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_get_doubled_width_modes"
+ c:identifier="gst_video_multiview_get_doubled_width_modes"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A const #GValue containing a list of stereo video modes
+
+Utility function that returns a #GValue with a GstList of packed stereo
+video modes with double the width of a single view for use in
+caps negotiations. Currently this is side-by-side, side-by-side-quincunx
+and column-interleaved.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_get_mono_modes"
+ c:identifier="gst_video_multiview_get_mono_modes"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A const #GValue containing a list of mono video modes
+
+Utility function that returns a #GValue with a GstList of mono video
+modes (mono/left/right) for use in caps negotiations.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_get_unpacked_modes"
+ c:identifier="gst_video_multiview_get_unpacked_modes"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A const #GValue containing a list of 'unpacked' stereo video modes
+
+Utility function that returns a #GValue with a GstList of unpacked
+stereo video modes (separated/frame-by-frame/frame-by-frame-multiview)
+for use in caps negotiations.</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </return-value>
+ </function>
+ <function name="video_multiview_guess_half_aspect"
+ c:identifier="gst_video_multiview_guess_half_aspect"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A boolean indicating whether the
+ #GST_VIDEO_MULTIVIEW_FLAG_HALF_ASPECT flag should be set.
+
+Utility function that heuristically guess whether a
+frame-packed stereoscopic video contains half width/height
+encoded views, or full-frame views by looking at the
+overall display aspect ratio.</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="mv_mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstVideoMultiviewMode</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <doc xml:space="preserve">Video frame width in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <doc xml:space="preserve">Video frame height in pixels</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="par_n" transfer-ownership="none">
+ <doc xml:space="preserve">Numerator of the video pixel-aspect-ratio</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="par_d" transfer-ownership="none">
+ <doc xml:space="preserve">Denominator of the video pixel-aspect-ratio</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_multiview_mode_from_caps_string"
+ c:identifier="gst_video_multiview_mode_from_caps_string"
+ moved-to="VideoMultiviewMode.from_caps_string"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The #GstVideoMultiviewMode value
+
+Given a string from a caps multiview-mode field,
+output the corresponding #GstVideoMultiviewMode
+or #GST_VIDEO_MULTIVIEW_MODE_NONE</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </return-value>
+ <parameters>
+ <parameter name="caps_mview_mode" transfer-ownership="none">
+ <doc xml:space="preserve">multiview-mode field string from caps</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_multiview_mode_to_caps_string"
+ c:identifier="gst_video_multiview_mode_to_caps_string"
+ moved-to="VideoMultiviewMode.to_caps_string"
+ version="1.6">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The caps string representation of the mode, or NULL if invalid.
+
+Given a #GstVideoMultiviewMode returns the multiview-mode caps string
+for insertion into a caps structure</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="mview_mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstVideoMultiviewMode value</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_multiview_video_info_change_mode"
+ c:identifier="gst_video_multiview_video_info_change_mode"
+ version="1.6">
+ <doc xml:space="preserve">Utility function that transforms the width/height/PAR
+and multiview mode and flags of a #GstVideoInfo into
+the requested mode.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="info" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstVideoInfo structure to operate on</doc>
+ <type name="VideoInfo" c:type="GstVideoInfo*"/>
+ </parameter>
+ <parameter name="out_mview_mode" transfer-ownership="none">
+ <doc xml:space="preserve">A #GstVideoMultiviewMode value</doc>
+ <type name="VideoMultiviewMode" c:type="GstVideoMultiviewMode"/>
+ </parameter>
+ <parameter name="out_mview_flags" transfer-ownership="none">
+ <doc xml:space="preserve">A set of #GstVideoMultiviewFlags</doc>
+ <type name="VideoMultiviewFlags" c:type="GstVideoMultiviewFlags"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_overlay_composition_meta_api_get_type"
+ c:identifier="gst_video_overlay_composition_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_overlay_composition_meta_get_info"
+ c:identifier="gst_video_overlay_composition_meta_get_info"
+ moved-to="VideoOverlayCompositionMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_overlay_install_properties"
+ c:identifier="gst_video_overlay_install_properties"
+ moved-to="VideoOverlay.install_properties">
+ <doc xml:space="preserve">This helper shall be used by classes implementing the #GstVideoOverlay
+interface that want the render rectangle to be controllable using
+properties. This helper will install "render-rectangle" property into the
+class.
+
+Since 1.14</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="oclass" transfer-ownership="none">
+ <doc xml:space="preserve">The class on which the properties will be installed</doc>
+ <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+ </parameter>
+ <parameter name="last_prop_id" transfer-ownership="none">
+ <doc xml:space="preserve">The first free property ID to use</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_overlay_set_property"
+ c:identifier="gst_video_overlay_set_property"
+ moved-to="VideoOverlay.set_property">
+ <doc xml:space="preserve">This helper shall be used by classes implementing the #GstVideoOverlay
+interface that want the render rectangle to be controllable using
+properties. This helper will parse and set the render rectangle calling
+gst_video_overlay_set_render_rectangle().</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%TRUE if the @property_id matches the GstVideoOverlay property
+
+Since 1.14</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">The instance on which the property is set</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ <parameter name="last_prop_id" transfer-ownership="none">
+ <doc xml:space="preserve">The highest property ID.</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="property_id" transfer-ownership="none">
+ <doc xml:space="preserve">The property ID</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <doc xml:space="preserve">The #GValue to be set</doc>
+ <type name="GObject.Value" c:type="const GValue*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_region_of_interest_meta_api_get_type"
+ c:identifier="gst_video_region_of_interest_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_region_of_interest_meta_get_info"
+ c:identifier="gst_video_region_of_interest_meta_get_info"
+ moved-to="VideoRegionOfInterestMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ <function name="video_scaler_new"
+ c:identifier="gst_video_scaler_new"
+ moved-to="VideoScaler.new"
+ introspectable="0">
+ <doc xml:space="preserve">Make a new @method video scaler. @in_size source lines/pixels will
+be scaled to @out_size destination lines/pixels.
+
+@n_taps specifies the amount of pixels to use from the source for one output
+pixel. If n_taps is 0, this function chooses a good value automatically based
+on the @method and @in_size/@out_size.</doc>
+ <return-value>
+ <doc xml:space="preserve">a #GstVideoResample</doc>
+ <type name="VideoScaler" c:type="GstVideoScaler*"/>
+ </return-value>
+ <parameters>
+ <parameter name="method" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoResamplerMethod</doc>
+ <type name="VideoResamplerMethod" c:type="GstVideoResamplerMethod"/>
+ </parameter>
+ <parameter name="flags" transfer-ownership="none">
+ <doc xml:space="preserve">#GstVideoScalerFlags</doc>
+ <type name="VideoScalerFlags" c:type="GstVideoScalerFlags"/>
+ </parameter>
+ <parameter name="n_taps" transfer-ownership="none">
+ <doc xml:space="preserve">number of taps to use</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="in_size" transfer-ownership="none">
+ <doc xml:space="preserve">number of source elements</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="out_size" transfer-ownership="none">
+ <doc xml:space="preserve">number of destination elements</doc>
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="options"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1">
+ <doc xml:space="preserve">extra options</doc>
+ <type name="Gst.Structure" c:type="GstStructure*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_tile_get_index"
+ c:identifier="gst_video_tile_get_index"
+ version="1.4">
+ <doc xml:space="preserve">Get the tile index of the tile at coordinates @x and @y in the tiled
+image of @x_tiles by @y_tiles.
+
+Use this method when @mode is of type %GST_VIDEO_TILE_MODE_INDEXED.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">the index of the tile at @x and @y in the tiled image of
+ @x_tiles by @y_tiles.</doc>
+ <type name="guint" c:type="guint"/>
+ </return-value>
+ <parameters>
+ <parameter name="mode" transfer-ownership="none">
+ <doc xml:space="preserve">a #GstVideoTileMode</doc>
+ <type name="VideoTileMode" c:type="GstVideoTileMode"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <doc xml:space="preserve">x coordinate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <doc xml:space="preserve">y coordinate</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="x_tiles" transfer-ownership="none">
+ <doc xml:space="preserve">number of horizintal tiles</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="y_tiles" transfer-ownership="none">
+ <doc xml:space="preserve">number of vertical tiles</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="video_time_code_meta_api_get_type"
+ c:identifier="gst_video_time_code_meta_api_get_type">
+ <return-value transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </return-value>
+ </function>
+ <function name="video_time_code_meta_get_info"
+ c:identifier="gst_video_time_code_meta_get_info"
+ moved-to="VideoTimeCodeMeta.get_info">
+ <return-value transfer-ownership="none">
+ <type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
+ </return-value>
+ </function>
+ </namespace>
+</repository>