<?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="/opt/local/lib/libgstpbutils-1.0.0.dylib"
             c:identifier-prefixes="Gst"
             c:symbol-prefixes="gst">
    <alias name="DiscovererAudioInfoClass"
           c:type="GstDiscovererAudioInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="126"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="DiscovererContainerInfoClass"
           c:type="GstDiscovererContainerInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="102"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="DiscovererInfoClass" c:type="GstDiscovererInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="280"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="DiscovererStreamInfoClass"
           c:type="GstDiscovererStreamInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="36"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="DiscovererSubtitleInfoClass"
           c:type="GstDiscovererSubtitleInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="215"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="DiscovererVideoInfoClass"
           c:type="GstDiscovererVideoInfoClass">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="164"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <alias name="EncodingTargetClass" c:type="GstEncodingTargetClass">
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="101"/>
      <type name="GObject.ObjectClass" c:type="GObjectClass"/>
    </alias>
    <function-macro name="AUDIO_VISUALIZER"
                    c:identifier="GST_AUDIO_VISUALIZER"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="AUDIO_VISUALIZER_CLASS"
                    c:identifier="GST_AUDIO_VISUALIZER_CLASS"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="37"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="AUDIO_VISUALIZER_GET_CLASS"
                    c:identifier="GST_AUDIO_VISUALIZER_GET_CLASS"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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"
           filename="gst-libs/gst/pbutils/gstaudiovisualizer.c"
           line="22">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>
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="104"/>
      <virtual-method name="decide_allocation">
        <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                         line="103"/>
        <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">
        <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                         line="101"/>
        <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">
        <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                         line="98"/>
        <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"
                default-value="657930">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="shader"
                writable="1"
                transfer-ownership="none"
                default-value="GST_AUDIO_VISUALIZER_SHADER_FADE">
        <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">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="104"/>
      <field name="parent_class" readable="0" private="1">
        <type name="Gst.ElementClass" c:type="GstElementClass"/>
      </field>
      <field name="setup">
        <callback name="setup">
          <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                           line="98"/>
          <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">
          <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                           line="101"/>
          <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">
          <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                           line="103"/>
          <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"
            opaque="1">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="43"/>
    </record>
    <enumeration name="AudioVisualizerShader"
                 glib:type-name="GstAudioVisualizerShader"
                 glib:get-type="gst_audio_visualizer_shader_get_type"
                 c:type="GstAudioVisualizerShader">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
           line="47">Different types of supported background shading functions.</doc>
      <member name="none"
              value="0"
              c:identifier="GST_AUDIO_VISUALIZER_SHADER_NONE"
              glib:nick="none"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_NONE">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="49">no shading</doc>
      </member>
      <member name="fade"
              value="1"
              c:identifier="GST_AUDIO_VISUALIZER_SHADER_FADE"
              glib:nick="fade"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="50">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="51">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="52">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="53">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="54">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="55">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="56">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="57">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"
              glib:name="GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
             line="58">fade and move vertically in</doc>
      </member>
    </enumeration>
    <callback name="AudioVisualizerShaderFunc"
              c:type="GstAudioVisualizerShaderFunc">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="45"/>
      <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>
    <function-macro name="CHECK_PLUGINS_BASE_VERSION"
                    c:identifier="GST_CHECK_PLUGINS_BASE_VERSION"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="63"/>
      <parameters>
        <parameter name="major">
        </parameter>
        <parameter name="minor">
        </parameter>
        <parameter name="micro">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER"
                    c:identifier="GST_DISCOVERER"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="344"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_AUDIO_INFO"
                    c:identifier="GST_DISCOVERER_AUDIO_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="118"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_CLASS"
                    c:identifier="GST_DISCOVERER_CLASS"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="346"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_CONTAINER_INFO"
                    c:identifier="GST_DISCOVERER_CONTAINER_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="95"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_INFO"
                    c:identifier="GST_DISCOVERER_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="270"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_STREAM_INFO"
                    c:identifier="GST_DISCOVERER_STREAM_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_SUBTITLE_INFO"
                    c:identifier="GST_DISCOVERER_SUBTITLE_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="205"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISCOVERER_VIDEO_INFO"
                    c:identifier="GST_DISCOVERER_VIDEO_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="155"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.c"
           line="21">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>
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="405"/>
      <constructor name="new" c:identifier="gst_discoverer_new" throws="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2670">Creates a new #GstDiscoverer with the provided timeout.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="411"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="2678">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2672">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="384"/>
        <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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="382"/>
        <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="load_serialize_info" version="1.24">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="389">Loads the serialized info from the given uri.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="401"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.h"
               line="396">the #GstDiscovererInfo or %NULL if it could not be loaded</doc>
          <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                 line="391">the #GstDiscoverer</doc>
            <type name="Discoverer" c:type="GstDiscoverer*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                 line="392">the uri to load the info from</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_setup">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="387"/>
        <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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="383"/>
        <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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2608">Synchronously discovers the given @uri.

A copy of @uri will be made internally, so the caller can safely g_free()
afterwards.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="429"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="2619">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2610">A #GstDiscoverer</doc>
            <type name="Discoverer" c:type="GstDiscoverer*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2611">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2569">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>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="422"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="2581">%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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2571">A #GstDiscoverer</doc>
            <type name="Discoverer" c:type="GstDiscoverer*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2572">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2468">Allow asynchronous discovering of URIs to take place.
A #GMainLoop must be available for #GstDiscoverer to properly work in
asynchronous mode.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="416"/>
        <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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2470">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2511">Stop the discovery of any pending URIs and clears the list of
pending URIS (if any).</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="419"/>
        <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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2513">A #GstDiscoverer</doc>
            <type name="Discoverer" c:type="GstDiscoverer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="timeout"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="15000000000">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="252">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>
      <property name="use-cache"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </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" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <glib:signal name="discovered" when="last">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="307">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="310">the results #GstDiscovererInfo</doc>
            <type name="DiscovererInfo"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="311">#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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="285">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="load-serialized-info" when="last" version="1.24">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="347">Retrieves information about a URI from and external source of information,
like a cache file. This is used by the discoverer to speed up the
discovery.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="356">The #GstDiscovererInfo representing
@uri, or %NULL if no information</doc>
          <type name="DiscovererInfo"/>
        </return-value>
        <parameters>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="350">THe URI to load the serialized info for</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-setup" when="last">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="329">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="332">source element</doc>
            <type name="Gst.Element"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="starting" when="last">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="296">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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="114">#GstDiscovererStreamInfo specific to audio streams.</doc>
      <method name="get_bitrate"
              c:identifier="gst_discoverer_audio_info_get_bitrate">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="839">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="837">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="808">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="806">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="799">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="797">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="830">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="828">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="150"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="857">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="855">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="848">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="846">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="821">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="819">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">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="405"/>
      <field name="parentclass">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="finished">
        <callback name="finished">
          <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                           line="382"/>
          <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">
          <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                           line="383"/>
          <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">
          <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                           line="384"/>
          <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">
          <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                           line="387"/>
          <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="load_serialize_info">
        <callback name="load_serialize_info">
          <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                           line="401"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                 line="396">the #GstDiscovererInfo or %NULL if it could not be loaded</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </return-value>
          <parameters>
            <parameter name="dc" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                   line="391">the #GstDiscoverer</doc>
              <type name="Discoverer" c:type="GstDiscoverer*"/>
            </parameter>
            <parameter name="uri" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                   line="392">the uri to load the info from</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_reserved">
        <array zero-terminated="0" fixed-size="3">
          <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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="90">#GstDiscovererStreamInfo specific to container streams.</doc>
      <method name="get_streams"
              c:identifier="gst_discoverer_container_info_get_streams">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="108"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="751">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="749">a #GstDiscovererStreamInfo</doc>
            <type name="DiscovererContainerInfo"
                  c:type="GstDiscovererContainerInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tags"
              c:identifier="gst_discoverer_container_info_get_tags"
              version="1.20">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="111"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="775">tags specific to the given container. 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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="773">a #GstDiscovererStreamInfo</doc>
            <type name="DiscovererContainerInfo"
                  c:type="const 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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="267">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2747">Parses a #GVariant as produced by gst_discoverer_info_to_variant()
back to a #GstDiscovererInfo.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="344"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="2754">A newly-allocated #GstDiscovererInfo.</doc>
          <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
        </return-value>
        <parameters>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2749">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="289"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="408">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="406">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="507">Finds all the #GstDiscovererAudioInfo contained in @info</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="328"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="513">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="DiscovererAudioInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="509">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="556">Finds all the #GstDiscovererContainerInfo contained in @info</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="337"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="562">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="DiscovererContainerInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="558">a #GstDiscovererInfo</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_duration"
              c:identifier="gst_discoverer_info_get_duration">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="304"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1068">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1066">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="310"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1086">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1084">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>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="313"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1101">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1096">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="1164">Get the installer details for missing elements</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="321"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1171">An array of strings
containing information 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="const gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1166">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="295"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1016">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1014">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="307"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1077">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1075">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="298"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1025">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1023">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="301"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1045">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1043">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="480">Finds the #GstDiscovererStreamInfo contained in @info that match the
given @streamtype.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="324"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="488">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="482">a #GstDiscovererInfo</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </instance-parameter>
          <parameter name="streamtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="483">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="539">Finds all the #GstDiscovererSubtitleInfo contained in @info</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="334"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="545">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="DiscovererSubtitleInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="541">a #GstDiscovererInfo</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tags"
              c:identifier="gst_discoverer_info_get_tags"
              deprecated="1"
              deprecated-version="1.20">
        <doc-deprecated xml:space="preserve">Use gst_discoverer_{container,stream}_info_get_tags() instead.</doc-deprecated>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="316"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1112">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1110">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="318"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1125">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1123">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="292"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1006">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="1004">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="523">Finds all the #GstDiscovererVideoInfo contained in @info</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="331"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="529">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="DiscovererVideoInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="525">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer.c"
             line="2701">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>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="340"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer.c"
               line="2713">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2703">A #GstDiscovererInfo</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer.c"
                 line="2704">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"
            opaque="1">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="362"/>
    </record>
    <enumeration name="DiscovererResult"
                 glib:type-name="GstDiscovererResult"
                 glib:get-type="gst_discoverer_result_get_type"
                 c:type="GstDiscovererResult">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="223">Result values for the discovery process.</doc>
      <member name="ok"
              value="0"
              c:identifier="GST_DISCOVERER_OK"
              glib:nick="ok"
              glib:name="GST_DISCOVERER_OK">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="225">The discovery was successful</doc>
      </member>
      <member name="uri_invalid"
              value="1"
              c:identifier="GST_DISCOVERER_URI_INVALID"
              glib:nick="uri-invalid"
              glib:name="GST_DISCOVERER_URI_INVALID">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="226">the URI is invalid</doc>
      </member>
      <member name="error"
              value="2"
              c:identifier="GST_DISCOVERER_ERROR"
              glib:nick="error"
              glib:name="GST_DISCOVERER_ERROR">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="227">an error happened and the GError is set</doc>
      </member>
      <member name="timeout"
              value="3"
              c:identifier="GST_DISCOVERER_TIMEOUT"
              glib:nick="timeout"
              glib:name="GST_DISCOVERER_TIMEOUT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="228">the discovery timed-out</doc>
      </member>
      <member name="busy"
              value="4"
              c:identifier="GST_DISCOVERER_BUSY"
              glib:nick="busy"
              glib:name="GST_DISCOVERER_BUSY">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="229">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"
              glib:name="GST_DISCOVERER_MISSING_PLUGINS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="230">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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="243">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"
              glib:name="GST_DISCOVERER_SERIALIZE_BASIC">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="245">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"
              glib:name="GST_DISCOVERER_SERIALIZE_CAPS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="247">Serialize the caps for each stream</doc>
      </member>
      <member name="tags"
              value="2"
              c:identifier="GST_DISCOVERER_SERIALIZE_TAGS"
              glib:nick="tags"
              glib:name="GST_DISCOVERER_SERIALIZE_TAGS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="248">Serialize the tags for each stream</doc>
      </member>
      <member name="misc"
              value="4"
              c:identifier="GST_DISCOVERER_SERIALIZE_MISC"
              glib:nick="misc"
              glib:name="GST_DISCOVERER_SERIALIZE_MISC">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="249">Serialize miscellaneous information for each stream</doc>
      </member>
      <member name="all"
              value="7"
              c:identifier="GST_DISCOVERER_SERIALIZE_ALL"
              glib:nick="all"
              glib:name="GST_DISCOVERER_SERIALIZE_ALL">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstdiscoverer.h"
             line="250">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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="41">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"
             filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
             line="463">Decrements the reference count of all contained #GstDiscovererStreamInfo
and fress the #GList.</doc>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="347"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="infos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="465">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="70"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="649">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="647">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>
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="82"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="715">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="710">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="67"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="630">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="628">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="64"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="612">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="610">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="79"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="696">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="694">a #GstDiscovererStreamInfo</doc>
            <type name="DiscovererStreamInfo"
                  c:type="GstDiscovererStreamInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stream_number"
              c:identifier="gst_discoverer_stream_info_get_stream_number"
              version="1.20">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="732">the stream number, -1 if no index could be determined. This property
acts as a unique identifier as a 'int' for the stream.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="730">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="577">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="575">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="73"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="666">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="664">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="76"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="681">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="679">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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="202">#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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="221"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="990">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="988">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"
           filename="gst-libs/gst/pbutils/gstdiscoverer.h"
           line="152">#GstDiscovererStreamInfo specific to video streams (this includes images).</doc>
      <method name="get_bitrate"
              c:identifier="gst_discoverer_video_info_get_bitrate">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="194"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="950">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="948">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="176"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="891">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="889">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="182"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="909">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="907">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="179"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="900">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="898">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="173"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="882">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="880">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="197"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="959">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="957">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="188"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="927">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="925">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="185"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="918">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="916">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="170"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="873">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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="871">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="200"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="968">%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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="966">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">
        <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                         line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="936">%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"
                 filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
                 line="934">a #GstDiscovererVideoInfo</doc>
            <type name="DiscovererVideoInfo"
                  c:type="const GstDiscovererVideoInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="ENCODING_AUDIO_PROFILE"
                    c:identifier="GST_ENCODING_AUDIO_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="93"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="ENCODING_CATEGORY_CAPTURE"
              value="capture"
              c:type="GST_ENCODING_CATEGORY_CAPTURE">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="66">#GstEncodingTarget category for recording and capture.
Targets within this category are optimized for low latency encoding.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="72"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ENCODING_CATEGORY_DEVICE"
              value="device"
              c:type="GST_ENCODING_CATEGORY_DEVICE">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="35">#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>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="42"/>
      <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"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="74">#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>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="83"/>
      <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"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="44">#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>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="53"/>
      <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"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="55">#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>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="64"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="ENCODING_CONTAINER_PROFILE"
                    c:identifier="GST_ENCODING_CONTAINER_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="57"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENCODING_PROFILE"
                    c:identifier="GST_ENCODING_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENCODING_TARGET"
                    c:identifier="GST_ENCODING_TARGET"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="94"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENCODING_VIDEO_PROFILE"
                    c:identifier="GST_ENCODING_VIDEO_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="75"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="90">Variant of #GstEncodingProfile for audio streams.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="102"/>
      <constructor name="new" c:identifier="gst_encoding_audio_profile_new">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1336">Creates a new #GstEncodingAudioProfile

All provided allocatable arguments will be internally copied, so can be
safely freed/unreferenced after calling this method.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="244"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1350">the newly created #GstEncodingAudioProfile.</doc>
          <type name="EncodingAudioProfile" c:type="GstEncodingAudioProfile*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1338">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1339">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1340">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1342">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"
            opaque="1"
            glib:is-gtype-struct-for="EncodingAudioProfile">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="102"/>
    </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"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="52">Encoding profiles for containers. Keeps track of a list of #GstEncodingProfile</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="64"/>
      <constructor name="new"
                   c:identifier="gst_encoding_container_profile_new">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1282">Creates a new #GstEncodingContainerProfile.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="229"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1292">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1284">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1285">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1287">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1288">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1230">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="217"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1240">%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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1232">the #GstEncodingContainerProfile to use</doc>
            <type name="EncodingContainerProfile"
                  c:type="GstEncodingContainerProfile*"/>
          </instance-parameter>
          <parameter name="profile" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1233">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1208">Checks if @container contains a #GstEncodingProfile identical to
@profile.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="221"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1216">%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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1210">a #GstEncodingContainerProfile</doc>
            <type name="EncodingContainerProfile"
                  c:type="GstEncodingContainerProfile*"/>
          </instance-parameter>
          <parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1211">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_profiles"
              c:identifier="gst_encoding_container_profile_get_profiles">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="225"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1000">
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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="998">a #GstEncodingContainerProfile</doc>
            <type name="EncodingContainerProfile"
                  c:type="GstEncodingContainerProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="EncodingContainerProfileClass"
            c:type="GstEncodingContainerProfileClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="EncodingContainerProfile">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="64"/>
    </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"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="31">The opaque base class object for all encoding profiles. This contains generic
information like name, description, format and preset.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="45"/>
      <function name="find" c:identifier="gst_encoding_profile_find">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1600">Find the #GstEncodingProfile with the specified name and category.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="204"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1609">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1602">The name of the target</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="profilename"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1603">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1605">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="2268">Creates a #GstEncodingProfile matching the formats from the given
#GstDiscovererInfo. Streams other than audio or video (eg,
subtitles), are currently ignored.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="264"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="2276">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="2270">The #GstDiscovererInfo to read from</doc>
            <type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
          </parameter>
        </parameters>
      </function>
      <method name="copy"
              c:identifier="gst_encoding_profile_copy"
              version="1.12">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="2304">Makes a deep copy of @self</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="267"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="2310">The copy of @self</doc>
          <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="2306">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="691">Get whether the format that has been negotiated in at some point can be renegotiated
later during the encoding.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="149"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="693">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="gst_encoding_profile_get_description">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="135"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="534">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="532">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_element_properties"
              c:identifier="gst_encoding_profile_get_element_properties"
              glib:get-property="element-properties"
              version="1.20">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="274"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="918">The properties that are going to be set on the underlying element</doc>
          <type name="Gst.Structure" c:type="GstStructure*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="916">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">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="201"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1499">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1497">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_format" c:identifier="gst_encoding_profile_get_format">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="142"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="548">(nullable): 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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="546">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1381">Computes the full output caps that this @profile will be able to consume.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="195"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1387">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1383">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="gst_encoding_profile_get_name">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="128"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="520">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="518">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_presence"
              c:identifier="gst_encoding_profile_get_presence">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="173"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="592">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="590">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preset" c:identifier="gst_encoding_profile_get_preset">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="163"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="563">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="561">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">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="166"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="578">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="576">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_restriction"
              c:identifier="gst_encoding_profile_get_restriction">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="184"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="623">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="621">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_single_segment"
              c:identifier="gst_encoding_profile_get_single_segment"
              version="1.18">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="156"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="728">#TRUE if the stream represented by @profile should use a single
segment before the encoder, #FALSE otherwise. This means that buffers will be retimestamped
and segments will be eat so as to appear as one segment.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="profile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="726">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">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="198"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1441">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1439">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_enabled" c:identifier="gst_encoding_profile_is_enabled">
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="209"/>
        <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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1362">Checks whether the two #GstEncodingProfile are equal</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1369">%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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1364">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1365">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="706">Sets whether the format that has been negotiated in at some point can be renegotiated
later during the encoding.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="152"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="708">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="allow_dynamic_output" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="709">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="656">Set @description as the given description for the @profile. A copy of
@description will be made internally.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="138"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="658">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="659">the description to set on the profile</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_element_properties"
              c:identifier="gst_encoding_profile_set_element_properties"
              glib:set-property="element-properties"
              version="1.20">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="859">This allows setting the muxing/encoding element properties.

**Set properties generically**

``` properties
 [element-properties, boolean-prop=true, string-prop="hi"]
```

**Mapping properties with well known element factories**

``` properties
element-properties-map, map = {
     [openh264enc, gop-size=32, ],
     [x264enc, key-int-max=32, tune=zerolatency],
 }
```</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="270"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="861">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="element_properties" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="862">A #GstStructure defining the properties
to be set to the element the profile represents.</doc>
            <type name="Gst.Structure" c:type="GstStructure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="gst_encoding_profile_set_enabled"
              version="1.6">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="817">Set whether the profile should be used or not.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="212"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="819">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="820">%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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="674">Sets the media format used in the profile.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="145"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="676">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="677">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="639">Set @name as the given name for the @profile. A copy of @name will be made
internally.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="131"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="641">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="642">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="801">Set the number of time the profile is used in its parent
container profile. If 0, it is not a mandatory stream</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="176"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="803">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="presence" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="804">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="765">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="169"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="767">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="768">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="784">Sets the name of the #GstPreset's factory to be used in the profile.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="180"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="786">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="787">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="835">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="187"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="837">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="838">the restriction to apply</doc>
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_single_segment"
              c:identifier="gst_encoding_profile_set_single_segment"
              version="1.18">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="742">If using a single segment, buffers will be retimestamped and segments will be
eat so as to appear as one segment.

&gt; *NOTE*: Single segment is not property supported when using
&gt; #encodebin:avoid-reencoding</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="159"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="744">a #GstEncodingProfile</doc>
            <type name="EncodingProfile" c:type="GstEncodingProfile*"/>
          </instance-parameter>
          <parameter name="single_segment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="745">#TRUE if the stream represented by @profile should use a
single segment before the encoder, #FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="element-properties"
                version="1.20"
                writable="1"
                transfer-ownership="none"
                setter="set_element_properties"
                getter="get_element_properties">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="492">A #GstStructure defining the properties to be set to the element
the profile represents.

For example for `av1enc`:

```
element-properties,row-mt=true, end-usage=vbr
```</doc>
        <type name="Gst.Structure"/>
      </property>
      <property name="restriction-caps" writable="1" transfer-ownership="none">
        <type name="Gst.Caps"/>
      </property>
    </class>
    <record name="EncodingProfileClass"
            c:type="GstEncodingProfileClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="EncodingProfile">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="45"/>
    </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"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="85">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="293">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 *should* be one of the existing
well-defined categories, like #GST_ENCODING_CATEGORY_DEVICE, but it
*can* be a application or user specific category if
needed.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="125"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="314">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="295">The name of the target.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="category" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="296">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="298">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="300">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="900">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="163"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="915">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="902">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="905">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="800">Opens the provided file and returns the contained #GstEncodingTarget.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="168"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="807">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="802">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="362">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="150"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="374">%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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="364">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="365">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">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="178">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="176">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="gst_encoding_target_get_description">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="191">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="189">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="gst_encoding_target_get_name">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="166">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="164">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path"
              c:identifier="gst_encoding_target_get_path"
              version="1.18">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="140"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="203">The path to the @target file.</doc>
          <type name="filename" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="201">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_profile"
              c:identifier="gst_encoding_target_get_profile">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="146"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="232">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="229">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="230">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">
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="218">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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="216">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="1086">Saves the @target to a default user-local directory.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="154"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="1093">%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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="1088">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"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="1016">Saves the @target to the provided file location.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                         line="158"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="1024">%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"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="1018">a #GstEncodingTarget</doc>
            <type name="EncodingTarget" c:type="GstEncodingTarget*"/>
          </instance-parameter>
          <parameter name="filepath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-target.c"
                 line="1019">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"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="71">Variant of #GstEncodingProfile for video streams, allows specifying the @pass.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="83"/>
      <constructor name="new" c:identifier="gst_encoding_video_profile_new">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1305">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="238"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1325">the newly created #GstEncodingVideoProfile.</doc>
          <type name="EncodingVideoProfile" c:type="GstEncodingVideoProfile*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1307">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1308">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1309">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1311">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1053">Get the pass number if this is part of a multi-pass profile.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="250"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1059">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1055">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">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1070">&gt; *NOTE*: Fixed framerate won't be enforced when #encodebin:avoid-reencoding
&gt; is set.</doc>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="253"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.c"
               line="1077">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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1072">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1088">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="256"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1090">a #GstEncodingVideoProfile</doc>
            <type name="EncodingVideoProfile"
                  c:type="GstEncodingVideoProfile*"/>
          </instance-parameter>
          <parameter name="pass" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1091">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"
             filename="gst-libs/gst/pbutils/encoding-profile.c"
             line="1105">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>
        <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                         line="260"/>
        <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"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1107">a #GstEncodingVideoProfile</doc>
            <type name="EncodingVideoProfile"
                  c:type="GstEncodingVideoProfile*"/>
          </instance-parameter>
          <parameter name="variableframerate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/encoding-profile.c"
                 line="1108">a boolean</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="EncodingVideoProfileClass"
            c:type="GstEncodingVideoProfileClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="EncodingVideoProfile">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="83"/>
    </record>
    <function-macro name="IS_DISCOVERER"
                    c:identifier="GST_IS_DISCOVERER"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="348"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_AUDIO_INFO"
                    c:identifier="GST_IS_DISCOVERER_AUDIO_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="120"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_CLASS"
                    c:identifier="GST_IS_DISCOVERER_CLASS"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="350"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_CONTAINER_INFO"
                    c:identifier="GST_IS_DISCOVERER_CONTAINER_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="97"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_INFO"
                    c:identifier="GST_IS_DISCOVERER_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="272"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_STREAM_INFO"
                    c:identifier="GST_IS_DISCOVERER_STREAM_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_SUBTITLE_INFO"
                    c:identifier="GST_IS_DISCOVERER_SUBTITLE_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="207"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISCOVERER_VIDEO_INFO"
                    c:identifier="GST_IS_DISCOVERER_VIDEO_INFO"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="157"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENCODING_AUDIO_PROFILE"
                    c:identifier="GST_IS_ENCODING_AUDIO_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="95"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENCODING_CONTAINER_PROFILE"
                    c:identifier="GST_IS_ENCODING_CONTAINER_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="59"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENCODING_PROFILE"
                    c:identifier="GST_IS_ENCODING_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENCODING_TARGET"
                    c:identifier="GST_IS_ENCODING_TARGET"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="96"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENCODING_VIDEO_PROFILE"
                    c:identifier="GST_IS_ENCODING_VIDEO_PROFILE"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="77"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYNAESTHESIA"
                    c:identifier="GST_IS_SYNAESTHESIA"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYNAESTHESIA_CLASS"
                    c:identifier="GST_IS_SYNAESTHESIA_CLASS"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/gstaudiovisualizer.h"
                       line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <record name="InstallPluginsContext"
            c:type="GstInstallPluginsContext"
            opaque="1"
            glib:type-name="GstInstallPluginsContext"
            glib:get-type="gst_install_plugins_context_get_type"
            c:symbol-prefix="install_plugins_context">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/install-plugins.h"
           line="90">Opaque context structure for the plugin installation. Use the provided
API to set details on it.</doc>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="99"/>
      <constructor name="new" c:identifier="gst_install_plugins_context_new">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="436">Creates a new #GstInstallPluginsContext.</doc>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="441">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"
              version="1.12.1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="467">Copies a #GstInstallPluginsContext.</doc>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="105"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="473">A copy of @ctx</doc>
          <type name="InstallPluginsContext"
                c:type="GstInstallPluginsContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="469">a #GstInstallPluginsContext</doc>
            <type name="InstallPluginsContext"
                  c:type="GstInstallPluginsContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_install_plugins_context_free">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="450">Frees a #GstInstallPluginsContext.</doc>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="107"/>
        <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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="452">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"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="315">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>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="110"/>
        <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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="317">a #GstInstallPluginsContext</doc>
            <type name="InstallPluginsContext"
                  c:type="GstInstallPluginsContext*"/>
          </instance-parameter>
          <parameter name="confirm_search" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="318">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"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="340">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>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="114"/>
        <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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="342">a #GstInstallPluginsContext</doc>
            <type name="InstallPluginsContext"
                  c:type="GstInstallPluginsContext*"/>
          </instance-parameter>
          <parameter name="desktop_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="343">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"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="365">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>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="118"/>
        <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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="367">a #GstInstallPluginsContext</doc>
            <type name="InstallPluginsContext"
                  c:type="GstInstallPluginsContext*"/>
          </instance-parameter>
          <parameter name="startup_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="368">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"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="399">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 &lt;gtk/gtk.h&gt;
##ifdef GDK_WINDOWING_X11
##include &lt;gdk/gdkx.h&gt;
##endif
...
##ifdef GDK_WINDOWING_X11
  xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)-&gt;window);
##endif
...
]|</doc>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="122"/>
        <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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="401">a #GstInstallPluginsContext</doc>
            <type name="InstallPluginsContext"
                  c:type="GstInstallPluginsContext*"/>
          </instance-parameter>
          <parameter name="xid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="402">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"
           filename="gst-libs/gst/pbutils/install-plugins.h"
           line="128">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>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="137"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.h"
               line="130">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"
               filename="gst-libs/gst/pbutils/install-plugins.h"
               line="131">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"
           filename="gst-libs/gst/pbutils/install-plugins.h"
           line="33">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"
              glib:name="GST_INSTALL_PLUGINS_SUCCESS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="35">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"
              glib:name="GST_INSTALL_PLUGINS_NOT_FOUND">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="37">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"
              glib:name="GST_INSTALL_PLUGINS_ERROR">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="41">an error occurred 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"
              glib:name="GST_INSTALL_PLUGINS_PARTIAL_SUCCESS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="46">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"
              glib:name="GST_INSTALL_PLUGINS_USER_ABORT">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="48">the user has aborted the installation</doc>
      </member>
      <member name="crashed"
              value="100"
              c:identifier="GST_INSTALL_PLUGINS_CRASHED"
              glib:nick="crashed"
              glib:name="GST_INSTALL_PLUGINS_CRASHED">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="44">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"
              glib:name="GST_INSTALL_PLUGINS_INVALID">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="49">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"
              glib:name="GST_INSTALL_PLUGINS_STARTED_OK">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="50">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"
              glib:name="GST_INSTALL_PLUGINS_INTERNAL_FAILURE">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="53">some internal failure has
    occurred 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"
              glib:name="GST_INSTALL_PLUGINS_HELPER_MISSING">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="55">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"
              glib:name="GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.h"
             line="57">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"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="729">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>
        <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                         line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="738">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"
                 filename="gst-libs/gst/pbutils/install-plugins.c"
                 line="731">the return status code</doc>
            <type name="InstallPluginsReturn"
                  c:type="GstInstallPluginsReturn"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <function-macro name="PBUTILS_DEPRECATED_FOR"
                    c:identifier="GST_PBUTILS_DEPRECATED_FOR"
                    introspectable="0">
      <source-position filename="gst-libs/gst/pbutils/pbutils-prelude.h"
                       line="35"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="PLUGINS_BASE_VERSION_MAJOR"
              value="1"
              c:type="GST_PLUGINS_BASE_VERSION_MAJOR">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
           line="28">The major version of GStreamer's gst-plugins-base libraries at compile time.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="PLUGINS_BASE_VERSION_MICRO"
              value="9"
              c:type="GST_PLUGINS_BASE_VERSION_MICRO">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
           line="40">The micro version of GStreamer's gst-plugins-base libraries at compile time.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="45"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="PLUGINS_BASE_VERSION_MINOR"
              value="24"
              c:type="GST_PLUGINS_BASE_VERSION_MINOR">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
           line="34">The minor version of GStreamer's gst-plugins-base libraries at compile time.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="39"/>
      <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"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
           line="46">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>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="52"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <bitfield name="PbUtilsCapsDescriptionFlags"
              version="1.20"
              glib:type-name="GstPbUtilsCapsDescriptionFlags"
              glib:get-type="gst_pb_utils_caps_description_flags_get_type"
              c:type="GstPbUtilsCapsDescriptionFlags">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/descriptions.h"
           line="29">Flags that are returned by gst_pb_utils_get_caps_description_flags() and
describe the format of the caps.</doc>
      <member name="container"
              value="1"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER"
              glib:nick="container"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="31">Caps describe a container format.</doc>
      </member>
      <member name="audio"
              value="2"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO"
              glib:nick="audio"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="32">Caps describe an audio format, or a
    container format that can store audio.</doc>
      </member>
      <member name="video"
              value="4"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO"
              glib:nick="video"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="34">Caps describe an video format, or a
    container format that can store video.</doc>
      </member>
      <member name="image"
              value="8"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE"
              glib:nick="image"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="36">Caps describe an image format, or a
    container format that can store image.</doc>
      </member>
      <member name="subtitle"
              value="16"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE"
              glib:nick="subtitle"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="38">Caps describe an subtitle format, or a
    container format that can store subtitles.</doc>
      </member>
      <member name="tag"
              value="32"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG"
              glib:nick="tag"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="40">Container format is a tags container.</doc>
      </member>
      <member name="generic"
              value="64"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC"
              glib:nick="generic"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="41">Container format can store any kind of
    stream type.</doc>
      </member>
      <member name="metadata"
              value="128"
              c:identifier="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA"
              version="1.22"
              glib:nick="metadata"
              glib:name="GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.h"
             line="60">Caps describe a metadata format, or a container format that can store
metadata.</doc>
      </member>
    </bitfield>
    <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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="511">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="51"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="525">%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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="513">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="514">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="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="517">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"
              version="1.10">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="239">Returns the channels of the given AAC stream.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="48"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="248">The channels or 0 if the channel could not be determined.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="audio_config" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="241">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="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="244">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="110">Translates the sample rate to the index corresponding to it in AAC spec.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="36"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="116">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="112">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="322">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 (if this is 0x5, then the
    real AudioObjectType is carried after the rate and channel data)
  * 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</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="42"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="343">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="324">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="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="327">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="269">Returns the profile of the given AAC stream as a string. The profile is
normally determined using the AudioObjectType field which is in the first
5 bits of @audio_config</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="39"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="280">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="271">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="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="274">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"
              version="1.10">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="209">Translates the sample rate index found in AAC headers to the actual sample
rate.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="45"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="219">The sample rate if sr_idx is valid, 0 otherwise.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="audio_config" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="211">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="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="214">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="90">Translates the sample rate index found in AAC headers to the actual sample
rate.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="33"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="98">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="92">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_caps_from_mime_codec"
              c:identifier="gst_codec_utils_caps_from_mime_codec"
              version="1.22">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="2843">Converts a RFC 6381 compatible codec string to #GstCaps. More than one codec
string can be present (separated by `,`).

Registered codecs can be found at http://mp4ra.org/#/codecs</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="160"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="2852">The corresponding #GstCaps or %NULL</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="codecs_field" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2845">A mime codec string field</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="codec_utils_caps_get_mime_codec"
              c:identifier="gst_codec_utils_caps_get_mime_codec"
              version="1.20">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="2558">Converts @caps to a RFC 6381 compatible codec string if possible.

Useful for providing the 'codecs' field inside the 'Content-Type' HTTP
header for containerized formats, such as mp4 or matroska.

Registered codecs can be found at http://mp4ra.org/#/codecs</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="157"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="2569">a RFC 6381 compatible codec string or %NULL</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2560">A #GstCaps to convert to mime codec</doc>
          <type name="Gst.Caps" c:type="GstCaps*"/>
        </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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="803">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="67"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="813">%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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="805">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="806">Pointer to the sequence parameter set for the stream.</doc>
          <array length="2" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="807">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="680">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="61"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="689">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="682">Pointer to the sequence parameter set for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="683">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="745">Transform a level string from the caps into the level_idc</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="64"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="751">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="747">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="568">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="58"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="588">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="570">Pointer to the sequence parameter set for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="571">Length of the data available in @sps.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="codec_utils_h264_get_profile_flags_level"
              c:identifier="gst_codec_utils_h264_get_profile_flags_level"
              version="1.20">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="842">Parses profile, flags, and level from a H264 AVCC extradata/sequence_header.
These are most commonly retrieved from a video/x-h264 caps with a codec_data
buffer.

The format of H264 AVCC extradata/sequence_header is documented in the
ITU-T H.264 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15
section 5.3.3.1.2.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="72"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="858">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="codec_data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="844">H264 AVCC extradata</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="845">length of @codec_data</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="profile"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="846">return location for h264 profile_idc or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="flags"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="847">return location for h264 constraint set flags or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="level"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="848">return location h264 level_idc or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </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"
              version="1.4">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1500">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="96"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1512">%TRUE if the level, tier, 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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1502">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1503">Pointer to the profile_tier_level
  struct</doc>
          <array length="2" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1505">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"
              version="1.4">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1397">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="89"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1407">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="profile_tier_level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1399">Pointer to the profile_tier_level
  for the stream</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1401">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"
              version="1.4">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1454">Transform a level string from the caps into the level_idc</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="93"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1460">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1456">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"
              version="1.4">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1181">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 - See below
* Bit 88:95 - general_level_idc</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="81"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1204">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="profile_tier_level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1183">Pointer to the profile_tier_level
  structure for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1185">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"
              version="1.4">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1360">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="85"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1370">The tier as a const string, or %NULL if there is an error.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="profile_tier_level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1362">Pointer to the profile_tier_level
  for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1364">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1711">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="108"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1723">%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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1713">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1714">Pointer to the visual object
  sequence for the stream.</doc>
          <array length="2" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1716">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1619">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="105"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1630">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1621">Pointer to the visual object
  sequence for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1623">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1546">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>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="102"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1557">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1548">Pointer to the visual object
  sequence for the stream.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1550">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1868">Creates Opus caps from the given parameters.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="124"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1879">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1870">the sample rate</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1871">the number of channels</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="channel_mapping_family" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1872">the channel mapping family</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="stream_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1873">the number of independent streams</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="coupled_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1874">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1875">the mapping between the streams</doc>
          <array zero-terminated="0" c:type="const 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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="2037">Creates Opus caps from the given OpusHead @header and comment header
@comments.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="132"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="2045">The #GstCaps.</doc>
        <type name="Gst.Caps" c:type="GstCaps*"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2039">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2040">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="2092">Creates OpusHead header from the given parameters.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="135"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="2105">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2094">the sample rate</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2095">the number of channels</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="channel_mapping_family" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2096">the channel mapping family</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="stream_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2097">the number of independent streams</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="coupled_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2098">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2099">the mapping between the streams</doc>
          <array zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="pre_skip" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2100">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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2101">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="1751">Parses Opus caps and fills the different fields with defaults if possible.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="115"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="1763">%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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1753">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1754">the sample rate</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="channels"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1755">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1756">the channel mapping family</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="stream_count"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1757">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1758">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="1759">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"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="2173">Parses the OpusHead header.</doc>
      <source-position filename="gst-libs/gst/pbutils/codec-utils.h"
                       line="145"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/codec-utils.c"
             line="2187">%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"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2175">the OpusHead #GstBuffer</doc>
          <type name="Gst.Buffer" c:type="GstBuffer*"/>
        </parameter>
        <parameter name="rate"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2176">the sample rate</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="channels"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2177">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2178">the channel mapping family</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="stream_count"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2179">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2180">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2181">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2182">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"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/codec-utils.c"
               line="2183">Output gain or 0</doc>
          <type name="gint16" c:type="gint16*"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="discoverer_info_ref"
                    c:identifier="gst_discoverer_info_ref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
           line="1131">Increments the reference count of @info.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="280"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1133">a #GstDiscovererInfo</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="discoverer_info_unref"
                    c:identifier="gst_discoverer_info_unref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
           line="1140">Decrements the reference count of @info.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="279"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1142">a #GstDiscovererInfo</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="discoverer_stream_info_ref"
                    c:identifier="gst_discoverer_stream_info_ref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
           line="1147">Increments the reference count of @info.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1149">a #GstDiscovererStreamInfo</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="discoverer_stream_info_unref"
                    c:identifier="gst_discoverer_stream_info_unref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
           line="1156">Decrements the reference count of @info.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstdiscoverer.h"
                       line="60"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/gstdiscoverer-types.c"
               line="1158">a #GstDiscovererStreamInfo</doc>
        </parameter>
      </parameters>
    </function-macro>
    <docsection name="encoding-profile">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-profile.c"
           line="21">Functions to create and handle encoding profiles.

Encoding profiles describe the media types and settings one wishes to use for
an encoding process. The top-level profiles are commonly
#GstEncodingContainerProfile(s) (which contains a user-readable name and
description along with which container format to use). These, in turn,
reference one or more #GstEncodingProfile(s) which indicate which encoding
format should be used on each individual streams.

#GstEncodingProfile(s) can be provided to the 'encodebin' element, which will
take care of selecting and setting up the required elements to produce an
output stream conforming to the specifications of the profile.

The encoding profiles do not necessarily specify which #GstElement to use for
the various encoding and muxing steps, as they allow to specifying the format
one wishes to use.

Encoding profiles can be created at runtime by the application or loaded from
(and saved to) file using the #GstEncodingTarget API.

## The encoding profile serialization format

Encoding profiles can be serialized to be used in the command line tools or
to set it on other other #GObject-s using #gst_util_set_object_arg for
example.

The serialization format aims at being simple to understand although flexible
enough to describe any possible encoding profile. There are several ways to
describe the profile depending on the context but the general idea is that it
is a colon separated list of EncodingProfiles descriptions, the first one
needs to describe a #GstEncodingContainerProfile and the following ones
describe elementary streams.

### Using encoders and muxer element factory name

```
  muxer_factory_name:video_encoder_factory_name:audio_encoder_factory_name
```

For example to encode a stream into a WebM container, with an OGG audio
stream and a VP8 video stream, the serialized #GstEncodingProfile looks like:

```
  webmmux:vp8enc:vorbisenc
```

### Define the encoding profile in a generic way using caps:

```
  muxer_source_caps:video_encoder_source_caps:audio_encoder_source_caps
```

For example to encode a stream into a WebM container, with an OGG audio
stream and a VP8 video stream, the serialized #GstEncodingProfile looks like:

```
  video/webm:video/x-vp8:audio/x-vorbis
```

It is possible to mix caps and element type names so you can specify a
specific video encoder while using caps for other encoders/muxer.

### Using preset

You can also set the preset name of the encoding profile using the
caps+preset_name syntax as in:

```
  video/webm:video/x-vp8+youtube-preset:audio/x-vorbis
```

### Setting properties on muxers or on the encoding profile itself

Moreover, you can set the extra properties:

 * `|element-properties,property1=true` (See
   #gst_encoding_profile_set_element_properties)
 * `|presence=true` (See See #gst_encoding_profile_get_presence)
 * `|single-segment=true` (See #gst_encoding_profile_set_single_segment)
 * `|single-segment=true` (See
   #gst_encoding_video_profile_set_variableframerate)

for example:

```
  video/webm:video/x-vp8|presence=1|element-properties,target-bitrate=500000:audio/x-vorbis
```

### Enforcing properties to the stream itself (video size, number of audio channels, etc..)

You can also use the `restriction_caps-&gt;encoded_format_caps` syntax to
specify the restriction caps to be set on a #GstEncodingProfile

It corresponds to the restriction #GstCaps to apply before the encoder that
will be used in the profile (See #gst_encoding_profile_get_restriction). 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. This property does not make sense for muxers. See
#gst_encoding_profile_get_restriction for more details.

To force a video stream to be encoded with a Full HD resolution (using WebM
as the container format, VP8 as the video codec and Vorbis as the audio
codec), you should use:

```
  "video/webm:video/x-raw,width=1920,height=1080-&gt;video/x-vp8:audio/x-vorbis"
```

&gt; NOTE: Make sure to enclose into quotes to avoid '&gt;' to be reinterpreted by
&gt; the shell.

In the case you are specifying encoders directly, the following is also
possible:

```
  matroskamux:x264enc,width=1920,height=1080:audio/x-vorbis
```

## Some serialized encoding formats examples

### MP3 audio and H264 in MP4**

```
  video/quicktime,variant=iso:video/x-h264:audio/mpeg,mpegversion=1,layer=3
```

### Vorbis and theora in OGG

```
  application/ogg:video/x-theora:audio/x-vorbis
```

### AC3 and H264 in MPEG-TS

```
  video/mpegts:video/x-h264:audio/x-ac3
```

## Loading a profile from encoding targets

Anywhere you have to use a string to define a #GstEncodingProfile, you
can use load it from a #GstEncodingTarget using the following syntaxes:

```
  target_name[/profilename/category]
```

or

```
  /path/to/target.gep:profilename
```

## Examples

### Creating a profile

``` c
#include &lt;gst/pbutils/encoding-profile.h&gt;
...
GstEncodingProfile *
create_ogg_theora_profile(void)
{
 GstEncodingContainerProfile *prof;
 GstCaps *caps;

 caps = gst_caps_from_string("application/ogg");
 prof = gst_encoding_container_profile_new("Ogg audio/video",
    "Standard OGG/THEORA/VORBIS",
    caps, NULL);
 gst_caps_unref (caps);

 caps = gst_caps_from_string("video/x-theora");
 gst_encoding_container_profile_add_profile(prof,
      (GstEncodingProfile*) gst_encoding_video_profile_new(caps, NULL, NULL, 0));
 gst_caps_unref (caps);

 caps = gst_caps_from_string("audio/x-vorbis");
 gst_encoding_container_profile_add_profile(prof,
      (GstEncodingProfile*) gst_encoding_audio_profile_new(caps, NULL, NULL, 0));
 gst_caps_unref (caps);

 return (GstEncodingProfile*) prof;
}

```

### Example: Using an encoder preset with a profile

``` c
#include &lt;gst/pbutils/encoding-profile.h&gt;
...
GstEncodingProfile *
create_ogg_theora_profile(void)
{
 GstEncodingVideoProfile *v;
 GstEncodingAudioProfile *a;
 GstEncodingContainerProfile *prof;
 GstCaps *caps;
 GstPreset *preset;

 caps = gst_caps_from_string ("application/ogg");
 prof = gst_encoding_container_profile_new ("Ogg audio/video",
    "Standard OGG/THEORA/VORBIS",
    caps, NULL);
 gst_caps_unref (caps);

 preset = GST_PRESET (gst_element_factory_make ("theoraenc", "theorapreset"));
 g_object_set (preset, "bitrate", 1000, NULL);
 // The preset will be saved on the filesystem,
 // so try to use a descriptive name
 gst_preset_save_preset (preset, "theora_bitrate_preset");
 gst_object_unref (preset);

 caps = gst_caps_from_string ("video/x-theora");
 v = gst_encoding_video_profile_new (caps, "theora_bitrate_preset", NULL, 0);
 gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) v);
 gst_caps_unref (caps);

 caps = gst_caps_from_string ("audio/x-vorbis");
 a = gst_encoding_audio_profile_new (caps, NULL, NULL, 0);
 gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) a);
 gst_caps_unref (caps);

 return (GstEncodingProfile*) prof;
}

```

### Listing categories, targets and profiles

``` c
#include &lt;gst/pbutils/encoding-profile.h&gt;
...
GstEncodingProfile *prof;
GList *categories, *tmpc;
GList *targets, *tmpt;
...
categories = gst_encoding_list_available_categories ();

... Show available categories to user ...

for (tmpc = categories; tmpc; tmpc = tmpc-&gt;next) {
  gchar *category = (gchar *) tmpc-&gt;data;

  ... and we can list all targets within that category ...

  targets = gst_encoding_list_all_targets (category);

  ... and show a list to our users ...

  g_list_foreach (targets, (GFunc) gst_encoding_target_unref, NULL);
  g_list_free (targets);
}

g_list_foreach (categories, (GFunc) g_free, NULL);
g_list_free (categories);

...
```</doc>
    </docsection>
    <docsection name="encoding-target">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.c"
           line="20">On top of the notion of profiles, we implement the notion of EncodingTarget.
Encoding Targets are basically a higher level of abstraction to define formats
for specific target types. Those can define several GstEncodingProfiles with
different names, for example one for transcoding in full HD, another one for
low res, etc.. which are defined in the same encoding target.

Basically if you want to encode a stream to send it to, say, youtube you should
have a Youtube encoding target defined in the "online-service" category.

## Encoding target serialization format

Encoding targets are serialized in a KeyFile like files.

|[
[GStreamer Encoding Target]
name : &lt;name&gt;
category : &lt;category&gt;
\description : &lt;description&gt; #translatable

[profile-&lt;profile1name&gt;]
name : &lt;name&gt;
\description : &lt;description&gt; #optional
format : &lt;format&gt;
preset : &lt;preset&gt;

[streamprofile-&lt;id&gt;]
parent : &lt;encodingprofile.name&gt;[,&lt;encodingprofile.name&gt;..]
\type : &lt;type&gt; # "audio", "video", "text"
format : &lt;format&gt;
preset : &lt;preset&gt;
restriction : &lt;restriction&gt;
presence : &lt;presence&gt;
pass : &lt;pass&gt;
variableframerate : &lt;variableframerate&gt;
]|

## Location of encoding target files

$GST_DATADIR/gstreamer-GST_API_VERSION/encoding-profile
$HOME/gstreamer-GST_API_VERSION/encoding-profile

There also is a GST_ENCODING_TARGET_PATH environment variable
defining a list of folder containing encoding target files.

## Naming convention

|[
  $(target.category)/$(target.name).gep
]|

## Naming restrictions:

 * lowercase ASCII letter for the first character
 * Same for all other characters + numerics + hyphens</doc>
    </docsection>
    <function name="encoding_list_all_targets"
              c:identifier="gst_encoding_list_all_targets">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.c"
           line="1285">List all available #GstEncodingTarget for the specified category, or all categories
if @categoryname is %NULL.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="175"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="1293">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"
               filename="gst-libs/gst/pbutils/encoding-target.c"
               line="1287">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"
           filename="gst-libs/gst/pbutils/encoding-target.c"
           line="1152">Lists all #GstEncodingTarget categories present on disk.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="172"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/encoding-target.c"
             line="1157">A list
of #GstEncodingTarget categories.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
    </function>
    <function-macro name="encoding_profile_ref"
                    c:identifier="gst_encoding_profile_ref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="119">Increases the reference count of the @profile.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="121"/>
      <parameters>
        <parameter name="profile">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.h"
               line="121">a #GstEncodingProfile</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="encoding_profile_unref"
                    c:identifier="gst_encoding_profile_unref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-profile.h"
           line="111">Decreases the reference count of the @profile, possibly freeing the @profile.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-profile.h"
                       line="113"/>
      <parameters>
        <parameter name="profile">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-profile.h"
               line="113">a #GstEncodingProfile</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="encoding_target_ref"
                    c:identifier="gst_encoding_target_ref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="115">Increases the reference count of the @target.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="120"/>
      <parameters>
        <parameter name="target">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.h"
               line="117">a #GstEncodingTarget</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="encoding_target_unref"
                    c:identifier="gst_encoding_target_unref"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/encoding-target.h"
           line="106">Decreases the reference count of the @target, possibly freeing it.</doc>
      <source-position filename="gst-libs/gst/pbutils/encoding-target.h"
                       line="111"/>
      <parameters>
        <parameter name="target">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/encoding-target.h"
               line="108">a #GstEncodingTarget</doc>
        </parameter>
      </parameters>
    </function-macro>
    <docsection name="gstpbutils">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/pbutils.c"
           line="20">libgstpbutils is a general utility library for plugins and applications.
It currently provides the
following:

* human-readable description strings of codecs, elements, sources, decoders,
encoders, or sinks from decoder/encoder caps, element names, or protocol
names.

* support for applications to initiate installation of missing plugins (if
this is supported by the distribution or operating system used)

* API for GStreamer elements to create missing-plugin messages in order to
communicate to the application that a certain type of plugin is missing
(decoder, encoder, URI protocol source, URI protocol sink, named element)

* API for applications to recognise and handle missing-plugin messages

## Linking to this library

You should obtain the required CFLAGS and LIBS using pkg-config on the
gstreamer-plugins-base-1.0 module. You will then also need to add
'-lgstreamer-pbutils-1.0' manually to your LIBS line.

## Library initialisation

Before using any of its functions, applications and plugins must call
gst_pb_utils_init() to initialise the library.</doc>
    </docsection>
    <docsection name="gstpbutilscodecutils">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/codec-utils.c"
           line="25">Provides codec-specific ulility functions such as functions to provide the
codec profile and level in human-readable string form from header data.</doc>
    </docsection>
    <docsection name="gstpbutilsdescriptions">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="20">The above functions provide human-readable strings for media formats
and decoder/demuxer/depayloader/encoder/muxer/payloader elements for use
in error dialogs or other messages shown to users.

gst_pb_utils_add_codec_description_to_tag_list() is a utility function
for demuxer and decoder elements to add audio/video codec tags from a
given (fixed) #GstCaps.</doc>
    </docsection>
    <docsection name="gstpbutilsinstallplugins">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="21">## Overview

Using this API, applications can request the installation of missing
GStreamer plugins. These may be missing decoders/demuxers or
encoders/muxers for a certain format, sources or sinks for a certain URI
protocol (e.g. 'http'), or certain elements known by their element
factory name ('audioresample').

Whether plugin installation is supported or not depends on the operating
system and/or distribution in question. The vendor of the operating
system needs to make sure the necessary hooks and mechanisms are in
place for plugin installation to work. See below for more detailed
information.

From the application perspective, plugin installation is usually
triggered either

-   when the application itself has found that it wants or needs to
    install a certain element
-   when the application has been notified by an element (such as
    playbin or decodebin) that one or more plugins are missing *and* the
    application has decided that it wants to install one or more of
    those missing plugins

The install functions in this section all take one or more 'detail
strings'. These detail strings contain information about the type of
plugin that needs to be installed (decoder, encoder, source, sink, or
named element), and some additional information such GStreamer version
used and a human-readable description of the component to install for
user dialogs.

Applications should not concern themselves with the composition of the
string itself. They should regard the string as if it was a shared
secret between GStreamer and the plugin installer application.

Detail strings can be obtained using the function
gst_missing_plugin_message_get_installer_detail() on a
missing-plugin message. Such a message will either have been found by
the application on a pipeline's #GstBus, or the application will have
created it itself using gst_missing_element_message_new(),
gst_missing_decoder_message_new(),
gst_missing_encoder_message_new(),
gst_missing_uri_sink_message_new(), or
gst_missing_uri_source_message_new().

For each GStreamer element/plugin/component that should be installed,
the application needs one of those 'installer detail' string mentioned
in the previous section. This string can be obtained, as already
mentioned above, from a missing-plugin message using the function
gst_missing_plugin_message_get_installer_detail(). The
missing-plugin message is either posted by another element and then
found on the bus by the application, or the application has created it
itself as described above.

The application will then call gst_install_plugins_async(), passing a
NULL-terminated array of installer detail strings, and a function that
should be called when the installation of the plugins has finished
(successfully or not). Optionally, a #GstInstallPluginsContext created
with gst_install_plugins_context_new() may be passed as well. This
way additional optional arguments like the application window's XID can
be passed to the external installer application.

gst_install_plugins_async() will return almost immediately, with the
return code indicating whether plugin installation was started or not.
If the necessary hooks for plugin installation are in place and an
external installer application has in fact been called, the passed in
function will be called with a result code as soon as the external
installer has finished. If the result code indicates that new plugins
have been installed, the application will want to call
gst_update_registry() so the run-time plugin registry is updated and
the new plugins are made available to the application.

&gt; A Gtk/GLib main loop must be running in order for the result function
&gt; to be called when the external installer has finished. If this is not
&gt; the case, make sure to regularly call in your code:
&gt;
&gt; g_main_context_iteration (NULL,FALSE);

## 1. Installer hook

When GStreamer applications initiate plugin installation via
gst_install_plugins_async() or gst_install_plugins_sync(), a
pre-defined helper application will be called.

The exact path of the helper application to be called is set at compile
time, usually by the build system based on the install prefix.
For a normal package build into the `/usr` prefix, this will usually
default to `/usr/libexec/gst-install-plugins-helper` or
`/usr/lib/gst-install-plugins-helper`.

Vendors/distros who want to support GStreamer plugin installation should
either provide such a helper script/application or use the meson option
`-Dinstall_plugins_helper'=/path/to/installer` to make GStreamer call an
installer of their own directly.

It is strongly recommended that vendors provide a small helper
application as interlocutor to the real installer though, even more so
if command line argument munging is required to transform the command
line arguments passed by GStreamer to the helper application into
arguments that are understood by the real installer.

The helper application path defined at compile time can be overridden at
runtime by setting the GST_INSTALL_PLUGINS_HELPER environment
variable. This can be useful for testing/debugging purposes.

## 2. Arguments passed to the install helper

GStreamer will pass the following arguments to the install helper (this
is in addition to the path of the executable itself, which is by
convention argv[0]):

-   none to many optional arguments in the form of `--foo-bar=val`.
    Example: `--transient-for=XID` where XID is the X Window ID of the
    main window of the calling application (so the installer can make
    itself transient to that window). Unknown optional arguments should
    be ignored by the installer.

-   one 'installer detail string' argument for each plugin to be
    installed; these strings will have a `gstreamer` prefix; the exact
    format of the detail string is explained below

## 3. Detail string describing the missing plugin

The string is in UTF-8 encoding and is made up of several fields,
separated by '|' characters (but neither the first nor the last
character is a '|'). The fields are:

-   plugin system identifier, ie. "gstreamer"
    This identifier determines the format of the rest of the detail
    string. Automatic plugin installers should not process detail
    strings with unknown identifiers. This allows other plugin-based
    libraries to use the same mechanism for their automatic plugin
    installation needs, or for the format to be changed should it turn
    out to be insufficient.
-   plugin system version, e.g. "1.0"
    This is required so that when there is GStreamer-2.0 at some point
    in future, the different major versions can still co-exist and use
    the same plugin install mechanism in the same way.
-   application identifier, e.g. "totem"
    This may also be in the form of "pid/12345" if the program name
    can't be obtained for some reason.
-   human-readable localised description of the required component, e.g.
    "Vorbis audio decoder"
-   identifier string for the required component (see below for details
    about how to map this to the package/plugin that needs installing),
    e.g.
    -   urisource-$(PROTOCOL_REQUIRED), e.g. urisource-http or
        urisource-mms
    -   element-$(ELEMENT_REQUIRED), e.g. element-videoconvert
    -   decoder-$(CAPS_REQUIRED), e.g. (do read below for more
        details!):
        -   decoder-audio/x-vorbis
        -   decoder-application/ogg
        -   decoder-audio/mpeg, mpegversion=(int)4
        -   decoder-video/mpeg, systemstream=(boolean)true,
            mpegversion=(int)2
    -   encoder-$(CAPS_REQUIRED), e.g. encoder-audio/x-vorbis
-   optional further fields not yet specified

An entire ID string might then look like this, for example: `
gstreamer|1.0|totem|Vorbis audio decoder|decoder-audio/x-vorbis`

Plugin installers parsing this ID string should expect further fields
also separated by '|' symbols and either ignore them, warn the user, or
error out when encountering them.

Those unfamiliar with the GStreamer 'caps' system should note a few
things about the caps string used in the above decoder/encoder case:

-   the first part ("video/mpeg") of the caps string is a GStreamer
    media type and *not* a MIME type. Wherever possible, the GStreamer
    media type will be the same as the corresponding MIME type, but
    often it is not.
-   a caps string may or may not have additional comma-separated fields
    of various types (as seen in the examples above)
-   the caps string of a 'required' component (as above) will always
    have fields with fixed values, whereas an introspected string (see
    below) may have fields with non-fixed values. Compare for example:
    -   `audio/mpeg, mpegversion=(int)4` vs.
        `audio/mpeg, mpegversion=(int){2, 4}`
    -   `video/mpeg, mpegversion=(int)2` vs.
        `video/mpeg, systemstream=(boolean){ true, false}, mpegversion=(int)[1, 2]`

## 4. Exit codes the installer should return

The installer should return one of the following exit codes when it
exits:

-   0 if all of the requested plugins could be installed
    (#GST_INSTALL_PLUGINS_SUCCESS)
-   1 if no appropriate installation candidate for any of the requested
    plugins could be found. Only return this if nothing has been
    installed (#GST_INSTALL_PLUGINS_NOT_FOUND)
-   2 if an error occurred during the installation. The application will
    assume that the user will already have seen an error message by the
    installer in this case and will usually not show another one
    (#GST_INSTALL_PLUGINS_ERROR)
-   3 if some of the requested plugins could be installed, but not all
    (#GST_INSTALL_PLUGINS_PARTIAL_SUCCESS)
-   4 if the user aborted the installation
    (#GST_INSTALL_PLUGINS_USER_ABORT)

## 5. How to map the required detail string to packages

It is up to the vendor to find mechanism to map required components from
the detail string to the actual packages/plugins to install. This could
be a hardcoded list of mappings, for example, or be part of the
packaging system metadata.

GStreamer plugin files can be introspected for this information. The
`gst-inspect` utility has a special command line option that will output
information similar to what is required. For example `
$ gst-inspect-1.0 --print-plugin-auto-install-info /path/to/libgstvorbis.so
should output something along the lines of
`decoder-audio/x-vorbis`, `element-vorbisdec` `element-vorbisenc`
`element-vorbisparse`, `element-vorbistag`, `encoder-audio/x-vorbis`

Note that in the encoder and decoder case the introspected caps can be
more complex with additional fields, e.g.
`audio/mpeg,mpegversion=(int){2,4}`, so they will not always exactly
match the caps wanted by the application. It is up to the installer to
deal with this (either by doing proper caps intersection using the
GStreamer #GstCaps API, or by only taking into account the media type).

Another potential source of problems are plugins such as ladspa or
libvisual where the list of elements depends on the installed
ladspa/libvisual plugins at the time. This is also up to the
distribution to handle (but usually not relevant for playback
applications).</doc>
    </docsection>
    <docsection name="gstpbutilsmissingplugins">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="20">Functions to create, recognise and parse missing-plugins messages for
applications and elements.

Missing-plugin messages are posted on the bus by elements like decodebin
or playbin if they can't find an appropriate source element or decoder
element. The application can use these messages for two things:

  * concise error/problem reporting to the user mentioning what exactly
    is missing, see gst_missing_plugin_message_get_description()

  * initiate installation of missing plugins, see
    gst_missing_plugin_message_get_installer_detail() and
    gst_install_plugins_async()

Applications may also create missing-plugin messages themselves to install
required elements that are missing, using the install mechanism mentioned
above.</doc>
    </docsection>
    <docsection name="gstpluginsbaseversion">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
           line="20">Use the GST_PLUGINS_BASE_VERSION_* macros e.g. to check what version of
gst-plugins-base you are building against, and gst_plugins_base_version()
if you need to check at runtime what version of the gst-plugins-base
libraries are being used / you are currently linked against.

The version macros get defined by including &lt;gst/pbutils/pbutils.h&gt;.</doc>
    </docsection>
    <function name="install_plugins_async"
              c:identifier="gst_install_plugins_async">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="631">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>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="141"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="656">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"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="633">NULL-terminated array
    of installer string details (see below)</doc>
          <array c:type="const gchar* const*">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="ctx"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="635">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"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="636">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"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="637">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"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="772">Checks whether plugin installation (initiated by this application only)
is currently in progress.</doc>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="154"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="778">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"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="729">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>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="151"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="738">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"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="731">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"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="786">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>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="157"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="794">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"
           filename="gst-libs/gst/pbutils/install-plugins.c"
           line="690">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>
      <source-position filename="gst-libs/gst/pbutils/install-plugins.h"
                       line="147"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/install-plugins.c"
             line="705">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"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="692">NULL-terminated array
    of installer string details</doc>
          <array c:type="const gchar* const*">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="ctx"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/install-plugins.c"
               line="694">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="626">Checks whether @msg is a missing plugins message.</doc>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="63"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="632">%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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="628">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="764">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="82"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="777">a newly-allocated detail string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="766">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="296">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="45"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="305">a new #GstMessage</doc>
        <type name="Gst.Message" c:type="GstMessage*"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="298">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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="299">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="736">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="79"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="750">a newly-allocated detail string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="738">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="263">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="41"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="273">a new #GstMessage</doc>
        <type name="Gst.Message" c:type="GstMessage*"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="265">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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="266">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="802">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="85"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="815">a newly-allocated detail string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="804">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="336">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="49"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="345">a new #GstMessage</doc>
        <type name="Gst.Message" c:type="GstMessage*"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="338">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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="339">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="521">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="60"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="533">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="523">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="425">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="57"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="436">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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="427">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="708">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="76"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="722">a newly-allocated detail string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="710">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="231">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="37"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="241">a new #GstMessage</doc>
        <type name="Gst.Message" c:type="GstMessage*"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="233">the #GstElement posting the message</doc>
          <type name="Gst.Element" c:type="GstElement*"/>
        </parameter>
        <parameter name="protocol" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="234">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="680">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="73"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="694">a newly-allocated detail string. 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"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="682">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"
           filename="gst-libs/gst/pbutils/missing-plugins.c"
           line="198">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>
      <source-position filename="gst-libs/gst/pbutils/missing-plugins.h"
                       line="33"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/missing-plugins.c"
             line="208">a new #GstMessage</doc>
        <type name="Gst.Message" c:type="GstMessage*"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="200">the #GstElement posting the message</doc>
          <type name="Gst.Element" c:type="GstElement*"/>
        </parameter>
        <parameter name="protocol" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/missing-plugins.c"
               line="201">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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1146">Adds a codec tag describing the format specified by @caps to @taglist.</doc>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="78"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1156">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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1148">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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1149">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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1152">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_caps_description_flags"
              c:identifier="gst_pb_utils_get_caps_description_flags"
              version="1.20">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1313">Returns flags that describe the format of the caps if known. No flags are
set for unknown caps.</doc>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="106"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1320">#GstPbUtilsCapsDescriptionFlags that describe @caps, or no flags
         if the caps are unknown.</doc>
        <type name="PbUtilsCapsDescriptionFlags"
              c:type="GstPbUtilsCapsDescriptionFlags"/>
      </return-value>
      <parameters>
        <parameter name="caps" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1315">the (fixed) #GstCaps for which flags are requested</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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1197">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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="83"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1208">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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1199">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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1011">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.

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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="97"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1022">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1013">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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1116">Returns a localised string describing the given element, for use in
error dialogs or other messages to be seen by the user.

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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="103"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1127">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1118">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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1065">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.

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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="100"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1076">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1067">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_file_extension_from_caps"
              c:identifier="gst_pb_utils_get_file_extension_from_caps"
              version="1.20">
      <doc xml:space="preserve"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="1295">Returns a possible file extension for the given caps, if known.</doc>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="109"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="1301">a newly-allocated file extension 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="1297">the (fixed) #GstCaps for which a file extension 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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="976">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.

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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="94"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="988">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="978">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"
           filename="gst-libs/gst/pbutils/descriptions.c"
           line="926">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.

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>
      <source-position filename="gst-libs/gst/pbutils/descriptions.h"
                       line="91"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/descriptions.c"
             line="938">a newly-allocated description string. 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"
               filename="gst-libs/gst/pbutils/descriptions.c"
               line="928">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"
           filename="gst-libs/gst/pbutils/pbutils.c"
           line="105">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>
      <source-position filename="gst-libs/gst/pbutils/pbutils.h" line="39"/>
      <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"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
           line="38">Gets the version number of the GStreamer Plugins Base libraries.</doc>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="72"/>
      <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"
               filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
               line="40">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"
               filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
               line="41">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"
               filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
               line="42">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"
               filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
               line="43">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"
           filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
           line="61">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>
      <source-position filename="gst-libs/gst/pbutils/gstpluginsbaseversion.h"
                       line="75"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gst-libs/gst/pbutils/gstpluginsbaseversion.c"
             line="68">a newly allocated string describing this version of gst-plugins-base</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
  </namespace>
</repository>
