<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gio" version="2.0"/>
  <include name="Gst" version="1.0"/>
  <include name="GstSdp" version="1.0"/>
  <package name="gstreamer-rtsp-1.0"/>
  <c:include name="gst/rtsp/rtsp.h"/>
  <namespace name="GstRtsp"
             version="1.0"
             shared-library="libgstrtsp-1.0.so.3.0"
             c:identifier-prefixes="Gst"
             c:symbol-prefixes="gst">
    <enumeration name="RTSPAuthMethod"
                 glib:type-name="GstRTSPAuthMethod"
                 glib:get-type="gst_rtsp_auth_method_get_type"
                 c:type="GstRTSPAuthMethod">
      <doc xml:space="preserve">Authentication methods, ordered by strength</doc>
      <member name="none"
              value="0"
              c:identifier="GST_RTSP_AUTH_NONE"
              glib:nick="none">
        <doc xml:space="preserve">no authentication</doc>
      </member>
      <member name="basic"
              value="1"
              c:identifier="GST_RTSP_AUTH_BASIC"
              glib:nick="basic">
        <doc xml:space="preserve">basic authentication</doc>
      </member>
      <member name="digest"
              value="2"
              c:identifier="GST_RTSP_AUTH_DIGEST"
              glib:nick="digest">
        <doc xml:space="preserve">digest authentication</doc>
      </member>
    </enumeration>
    <record name="RTSPConnection" c:type="GstRTSPConnection" disguised="1">
      <doc xml:space="preserve">This object manages the RTSP connection to the server. It provides function
to receive and send bytes and messages.</doc>
      <method name="clear_auth_params"
              c:identifier="gst_rtsp_connection_clear_auth_params">
        <doc xml:space="preserve">Clear the list of authentication directives stored in @conn.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="close" c:identifier="gst_rtsp_connection_close">
        <doc xml:space="preserve">Close the connected @conn. After this call, the connection is in the same
state as when it was first created.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="connect" c:identifier="gst_rtsp_connection_connect">
        <doc xml:space="preserve">Attempt to connect to the url of @conn made with
gst_rtsp_connection_create(). If @timeout is #NULL this function can block
forever. If @timeout contains a valid timeout, this function will return
#GST_RTSP_ETIMEOUT after the timeout expired.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when a connection could be made.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a #GTimeVal timeout</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_with_response"
              c:identifier="gst_rtsp_connection_connect_with_response">
        <doc xml:space="preserve">Attempt to connect to the url of @conn made with
gst_rtsp_connection_create(). If @timeout is #NULL this function can block
forever. If @timeout contains a valid timeout, this function will return
#GST_RTSP_ETIMEOUT after the timeout expired.  If @conn is set to tunneled,
@response will contain a response to the tunneling request messages.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when a connection could be made.

Since 1.8</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a #GTimeVal timeout</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="do_tunnel" c:identifier="gst_rtsp_connection_do_tunnel">
        <doc xml:space="preserve">If @conn received the first tunnel connection and @conn2 received
the second tunnel connection, link the two connections together so that
@conn manages the tunneled connection.

After this call, @conn2 cannot be used anymore and must be freed with
gst_rtsp_connection_free().

If @conn2 is %NULL then only the base64 decoding context will be setup for
@conn.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">return GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="conn2" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection or %NULL</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="flush" c:identifier="gst_rtsp_connection_flush">
        <doc xml:space="preserve">Start or stop the flushing action on @conn. When flushing, all current
and future actions on @conn will return #GST_RTSP_EINTR until the connection
is set to non-flushing mode again.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="flush" transfer-ownership="none">
            <doc xml:space="preserve">start or stop the flush</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_rtsp_connection_free">
        <doc xml:space="preserve">Close and free @conn.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ip" c:identifier="gst_rtsp_connection_get_ip">
        <doc xml:space="preserve">Retrieve the IP address of the other end of @conn.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The IP address as a string. this value remains valid until the
connection is closed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_read_socket"
              c:identifier="gst_rtsp_connection_get_read_socket">
        <doc xml:space="preserve">Get the file descriptor for reading.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the file descriptor used for reading or %NULL on
error. The file descriptor remains valid until the connection is closed.</doc>
          <type name="Gio.Socket" c:type="GSocket*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remember_session_id"
              c:identifier="gst_rtsp_connection_get_remember_session_id">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the #GstRTSPConnection remembers the session id in the
last response to set it on any further request.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tls"
              c:identifier="gst_rtsp_connection_get_tls"
              version="1.2"
              throws="1">
        <doc xml:space="preserve">Get the TLS connection of @conn.

For client side this will return the #GTlsClientConnection when connected
over TLS.

For server side connections, this function will create a GTlsServerConnection
when called the first time and will return that same connection on subsequent
calls. The server is then responsible for configuring the TLS connection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the TLS connection for @conn.</doc>
          <type name="Gio.TlsConnection" c:type="GTlsConnection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tls_database"
              c:identifier="gst_rtsp_connection_get_tls_database"
              version="1.4">
        <doc xml:space="preserve">Gets the anchor certificate authorities database that will be used
after a server certificate can't be verified with the default
certificate database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the anchor certificate authorities database, or NULL if no
database has been previously set. Use g_object_unref() to release the
certificate database.</doc>
          <type name="Gio.TlsDatabase" c:type="GTlsDatabase*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tls_interaction"
              c:identifier="gst_rtsp_connection_get_tls_interaction"
              version="1.6">
        <doc xml:space="preserve">Gets a #GTlsInteraction object to be used when the connection or certificate
database need to interact with the user. This will be used to prompt the
user for passwords where necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a reference on the #GTlsInteraction. Use
g_object_unref() to release.</doc>
          <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tls_validation_flags"
              c:identifier="gst_rtsp_connection_get_tls_validation_flags"
              version="1.2.1">
        <doc xml:space="preserve">Gets the TLS validation flags used to verify the peer certificate
when a TLS connection is established.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the validationg flags.</doc>
          <type name="Gio.TlsCertificateFlags" c:type="GTlsCertificateFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tunnelid"
              c:identifier="gst_rtsp_connection_get_tunnelid">
        <doc xml:space="preserve">Get the tunnel session id the connection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">returns a non-empty string if @conn is being tunneled over HTTP.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url" c:identifier="gst_rtsp_connection_get_url">
        <doc xml:space="preserve">Retrieve the URL of the other end of @conn.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The URL. This value remains valid until the
connection is freed.</doc>
          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_write_socket"
              c:identifier="gst_rtsp_connection_get_write_socket">
        <doc xml:space="preserve">Get the file descriptor for writing.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the file descriptor used for writing or NULL on
error. The file descriptor remains valid until the connection is closed.</doc>
          <type name="Gio.Socket" c:type="GSocket*"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_tunneled"
              c:identifier="gst_rtsp_connection_is_tunneled">
        <doc xml:space="preserve">Get the tunneling state of the connection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">if @conn is using HTTP tunneling.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="const GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next_timeout"
              c:identifier="gst_rtsp_connection_next_timeout">
        <doc xml:space="preserve">Calculate the next timeout for @conn, storing the result in @timeout.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="poll" c:identifier="gst_rtsp_connection_poll">
        <doc xml:space="preserve">Wait up to the specified @timeout for the connection to become available for
at least one of the operations specified in @events. When the function returns
with #GST_RTSP_OK, @revents will contain a bitmask of available operations on
@conn.

@timeout can be #NULL, in which case this function might block forever.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="events" transfer-ownership="none">
            <doc xml:space="preserve">a bitmask of #GstRTSPEvent flags to check</doc>
            <type name="RTSPEvent" c:type="GstRTSPEvent"/>
          </parameter>
          <parameter name="revents" transfer-ownership="none">
            <doc xml:space="preserve">location for result flags</doc>
            <type name="RTSPEvent" c:type="GstRTSPEvent*"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read" c:identifier="gst_rtsp_connection_read">
        <doc xml:space="preserve">Attempt to read @size bytes into @data from the connected @conn, blocking up to
the specified @timeout. @timeout can be #NULL, in which case this function
might block forever.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to read</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the size of @data</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout value or #NULL</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="receive" c:identifier="gst_rtsp_connection_receive">
        <doc xml:space="preserve">Attempt to read into @message from the connected @conn, blocking up to
the specified @timeout. @timeout can be #NULL, in which case this function
might block forever.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">the message to read</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout value or #NULL</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset_timeout"
              c:identifier="gst_rtsp_connection_reset_timeout">
        <doc xml:space="preserve">Reset the timeout of @conn.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send" c:identifier="gst_rtsp_connection_send">
        <doc xml:space="preserve">Attempt to send @message to the connected @conn, blocking up to
the specified @timeout. @timeout can be #NULL, in which case this function
might block forever.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">the message to send</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout value or #NULL</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_auth" c:identifier="gst_rtsp_connection_set_auth">
        <doc xml:space="preserve">Configure @conn for authentication mode @method with @user and @pass as the
user and password respectively.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">authentication method</doc>
            <type name="RTSPAuthMethod" c:type="GstRTSPAuthMethod"/>
          </parameter>
          <parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve">the user</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="pass" transfer-ownership="none">
            <doc xml:space="preserve">the password</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_auth_param"
              c:identifier="gst_rtsp_connection_set_auth_param">
        <doc xml:space="preserve">Setup @conn with authentication directives. This is not necesary for
methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For
#GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge
in the WWW-Authenticate response header and can include realm, domain,
nonce, opaque, stale, algorithm, qop as per RFC2617.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">authentication directive</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_mode"
              c:identifier="gst_rtsp_connection_set_http_mode">
        <doc xml:space="preserve">By setting the HTTP mode to %TRUE the message parsing will support HTTP
messages in addition to the RTSP messages. It will also disable the
automatic handling of setting up an HTTP tunnel.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to enable manual HTTP mode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ip" c:identifier="gst_rtsp_connection_set_ip">
        <doc xml:space="preserve">Set the IP address of the server.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="ip" transfer-ownership="none">
            <doc xml:space="preserve">an ip address</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_proxy" c:identifier="gst_rtsp_connection_set_proxy">
        <doc xml:space="preserve">Set the proxy host and port.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="host" transfer-ownership="none">
            <doc xml:space="preserve">the proxy host</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve">the proxy port</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_qos_dscp"
              c:identifier="gst_rtsp_connection_set_qos_dscp">
        <doc xml:space="preserve">Configure @conn to use the specified DSCP value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="qos_dscp" transfer-ownership="none">
            <doc xml:space="preserve">DSCP value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_remember_session_id"
              c:identifier="gst_rtsp_connection_set_remember_session_id">
        <doc xml:space="preserve">Sets if the #GstRTSPConnection should remember the session id from the last
response received and force it onto any further requests.

The default value is %TRUE</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="remember" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the connection should remember the session id</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tls_database"
              c:identifier="gst_rtsp_connection_set_tls_database"
              version="1.4">
        <doc xml:space="preserve">Sets the anchor certificate authorities database. This certificate
database will be used to verify the server's certificate in case it
can't be verified with the default certificate database first.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="database" transfer-ownership="none">
            <doc xml:space="preserve">a #GTlsDatabase</doc>
            <type name="Gio.TlsDatabase" c:type="GTlsDatabase*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tls_interaction"
              c:identifier="gst_rtsp_connection_set_tls_interaction"
              version="1.6">
        <doc xml:space="preserve">Sets a #GTlsInteraction object to be used when the connection or certificate
database need to interact with the user. This will be used to prompt the
user for passwords where necessary.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve">a #GTlsInteraction</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tls_validation_flags"
              c:identifier="gst_rtsp_connection_set_tls_validation_flags"
              version="1.2.1">
        <doc xml:space="preserve">Sets the TLS validation flags to be used to verify the peer
certificate when a TLS connection is established.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the validation flags are set correctly, or FALSE if
@conn is NULL or is not a TLS connection.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the validation flags.</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tunneled"
              c:identifier="gst_rtsp_connection_set_tunneled">
        <doc xml:space="preserve">Set the HTTP tunneling state of the connection. This must be configured before
the @conn is connected.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="tunneled" transfer-ownership="none">
            <doc xml:space="preserve">the new state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="write" c:identifier="gst_rtsp_connection_write">
        <doc xml:space="preserve">Attempt to write @size bytes of @data to the connected @conn, blocking up to
the specified @timeout. @timeout can be #NULL, in which case this function
might block forever.

This function can be cancelled with gst_rtsp_connection_flush().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to write</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the size of @data</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a timeout value or #NULL</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <function name="accept" c:identifier="gst_rtsp_connection_accept">
        <doc xml:space="preserve">Accept a new connection on @socket and create a new #GstRTSPConnection for
handling communication on new socket.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="socket" transfer-ownership="none">
            <doc xml:space="preserve">a socket</doc>
            <type name="Gio.Socket" c:type="GSocket*"/>
          </parameter>
          <parameter name="conn"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to cancel the operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="create" c:identifier="gst_rtsp_connection_create">
        <doc xml:space="preserve">Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
The connection will not yet attempt to connect to @url, use
gst_rtsp_connection_connect().

A copy of @url will be made.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
          </parameter>
          <parameter name="conn"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_from_socket"
                c:identifier="gst_rtsp_connection_create_from_socket">
        <doc xml:space="preserve">Create a new #GstRTSPConnection for handling communication on the existing
socket @socket. The @initial_buffer contains zero terminated data already
read from @socket which should be used before starting to read new data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="socket" transfer-ownership="none">
            <doc xml:space="preserve">a #GSocket</doc>
            <type name="Gio.Socket" c:type="GSocket*"/>
          </parameter>
          <parameter name="ip" transfer-ownership="none">
            <doc xml:space="preserve">the IP address of the other end</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve">the port used by the other end</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
          <parameter name="initial_buffer" transfer-ownership="none">
            <doc xml:space="preserve">data already read from @fd</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="conn"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <bitfield name="RTSPEvent"
              glib:type-name="GstRTSPEvent"
              glib:get-type="gst_rtsp_event_get_type"
              c:type="GstRTSPEvent">
      <doc xml:space="preserve">The possible events for the connection.</doc>
      <member name="read"
              value="1"
              c:identifier="GST_RTSP_EV_READ"
              glib:nick="read">
        <doc xml:space="preserve">connection is readable</doc>
      </member>
      <member name="write"
              value="2"
              c:identifier="GST_RTSP_EV_WRITE"
              glib:nick="write">
        <doc xml:space="preserve">connection is writable</doc>
      </member>
    </bitfield>
    <interface name="RTSPExtension"
               c:symbol-prefix="rtsp_extension"
               c:type="GstRTSPExtension"
               glib:type-name="GstRTSPExtension"
               glib:get-type="gst_rtsp_extension_get_type"
               glib:type-struct="RTSPExtensionInterface">
      <doc xml:space="preserve">&lt;refsect2&gt;
&lt;para&gt;
 This interface is implemented e.g. by the Windows Media Streaming RTSP
 exentension (rtspwms) and the RealMedia RTSP extension (rtspreal).
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
      <virtual-method name="after_send" invoker="after_send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="before_send" invoker="before_send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="configure_stream" invoker="configure_stream">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="detect_server" invoker="detect_server">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_transports" invoker="get_transports">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="protocols" transfer-ownership="none">
            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
          </parameter>
          <parameter name="transport" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="parse_sdp" invoker="parse_sdp">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="sdp" transfer-ownership="none">
            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
          </parameter>
          <parameter name="s" transfer-ownership="none">
            <type name="Gst.Structure" c:type="GstStructure*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="receive_request" invoker="receive_request">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="send" invoker="send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="setup_media" invoker="setup_media">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="media" transfer-ownership="none">
            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="stream_select" invoker="stream_select">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="url" transfer-ownership="none">
            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="after_send" c:identifier="gst_rtsp_extension_after_send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="before_send" c:identifier="gst_rtsp_extension_before_send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="configure_stream"
              c:identifier="gst_rtsp_extension_configure_stream">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="caps" transfer-ownership="none">
            <type name="Gst.Caps" c:type="GstCaps*"/>
          </parameter>
        </parameters>
      </method>
      <method name="detect_server"
              c:identifier="gst_rtsp_extension_detect_server">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_transports"
              c:identifier="gst_rtsp_extension_get_transports">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="protocols" transfer-ownership="none">
            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
          </parameter>
          <parameter name="transport" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_sdp" c:identifier="gst_rtsp_extension_parse_sdp">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="sdp" transfer-ownership="none">
            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
          </parameter>
          <parameter name="s" transfer-ownership="none">
            <type name="Gst.Structure" c:type="GstStructure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="receive_request"
              c:identifier="gst_rtsp_extension_receive_request">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="send" c:identifier="gst_rtsp_extension_send">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="req" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="resp" transfer-ownership="none">
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup_media" c:identifier="gst_rtsp_extension_setup_media">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="media" transfer-ownership="none">
            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stream_select"
              c:identifier="gst_rtsp_extension_stream_select">
        <return-value transfer-ownership="none">
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="ext" transfer-ownership="none">
            <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
          </instance-parameter>
          <parameter name="url" transfer-ownership="none">
            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="send" when="last">
        <return-value transfer-ownership="none">
          <type name="RTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="p0"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="RTSPExtensionInterface"
            c:type="GstRTSPExtensionInterface"
            glib:is-gtype-struct-for="RTSPExtension">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="detect_server">
        <callback name="detect_server">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="resp" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="before_send">
        <callback name="before_send">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="req" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="after_send">
        <callback name="after_send">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="req" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="resp" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="parse_sdp">
        <callback name="parse_sdp">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="sdp" transfer-ownership="none">
              <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
            </parameter>
            <parameter name="s" transfer-ownership="none">
              <type name="Gst.Structure" c:type="GstStructure*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="setup_media">
        <callback name="setup_media">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="media" transfer-ownership="none">
              <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="configure_stream">
        <callback name="configure_stream">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="caps" transfer-ownership="none">
              <type name="Gst.Caps" c:type="GstCaps*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_transports">
        <callback name="get_transports">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="protocols" transfer-ownership="none">
              <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
            </parameter>
            <parameter name="transport" transfer-ownership="none">
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="stream_select">
        <callback name="stream_select">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="url" transfer-ownership="none">
              <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="send">
        <callback name="send">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="req" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="resp" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="receive_request">
        <callback name="receive_request">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="ext" transfer-ownership="none">
              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
            </parameter>
            <parameter name="req" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="RTSPFamily"
                 glib:type-name="GstRTSPFamily"
                 glib:get-type="gst_rtsp_family_get_type"
                 c:type="GstRTSPFamily">
      <doc xml:space="preserve">The possible network families.</doc>
      <member name="none"
              value="0"
              c:identifier="GST_RTSP_FAM_NONE"
              glib:nick="none">
        <doc xml:space="preserve">unknown network family</doc>
      </member>
      <member name="inet"
              value="1"
              c:identifier="GST_RTSP_FAM_INET"
              glib:nick="inet">
        <doc xml:space="preserve">internet</doc>
      </member>
      <member name="inet6"
              value="2"
              c:identifier="GST_RTSP_FAM_INET6"
              glib:nick="inet6">
        <doc xml:space="preserve">internet V6</doc>
      </member>
    </enumeration>
    <enumeration name="RTSPHeaderField"
                 glib:type-name="GstRTSPHeaderField"
                 glib:get-type="gst_rtsp_header_field_get_type"
                 c:type="GstRTSPHeaderField">
      <doc xml:space="preserve">Enumeration of rtsp header fields</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_HDR_INVALID"
              glib:nick="invalid">
      </member>
      <member name="accept"
              value="1"
              c:identifier="GST_RTSP_HDR_ACCEPT"
              glib:nick="accept">
      </member>
      <member name="accept_encoding"
              value="2"
              c:identifier="GST_RTSP_HDR_ACCEPT_ENCODING"
              glib:nick="accept-encoding">
      </member>
      <member name="accept_language"
              value="3"
              c:identifier="GST_RTSP_HDR_ACCEPT_LANGUAGE"
              glib:nick="accept-language">
      </member>
      <member name="allow"
              value="4"
              c:identifier="GST_RTSP_HDR_ALLOW"
              glib:nick="allow">
      </member>
      <member name="authorization"
              value="5"
              c:identifier="GST_RTSP_HDR_AUTHORIZATION"
              glib:nick="authorization">
      </member>
      <member name="bandwidth"
              value="6"
              c:identifier="GST_RTSP_HDR_BANDWIDTH"
              glib:nick="bandwidth">
      </member>
      <member name="blocksize"
              value="7"
              c:identifier="GST_RTSP_HDR_BLOCKSIZE"
              glib:nick="blocksize">
      </member>
      <member name="cache_control"
              value="8"
              c:identifier="GST_RTSP_HDR_CACHE_CONTROL"
              glib:nick="cache-control">
      </member>
      <member name="conference"
              value="9"
              c:identifier="GST_RTSP_HDR_CONFERENCE"
              glib:nick="conference">
      </member>
      <member name="connection"
              value="10"
              c:identifier="GST_RTSP_HDR_CONNECTION"
              glib:nick="connection">
      </member>
      <member name="content_base"
              value="11"
              c:identifier="GST_RTSP_HDR_CONTENT_BASE"
              glib:nick="content-base">
      </member>
      <member name="content_encoding"
              value="12"
              c:identifier="GST_RTSP_HDR_CONTENT_ENCODING"
              glib:nick="content-encoding">
      </member>
      <member name="content_language"
              value="13"
              c:identifier="GST_RTSP_HDR_CONTENT_LANGUAGE"
              glib:nick="content-language">
      </member>
      <member name="content_length"
              value="14"
              c:identifier="GST_RTSP_HDR_CONTENT_LENGTH"
              glib:nick="content-length">
      </member>
      <member name="content_location"
              value="15"
              c:identifier="GST_RTSP_HDR_CONTENT_LOCATION"
              glib:nick="content-location">
      </member>
      <member name="content_type"
              value="16"
              c:identifier="GST_RTSP_HDR_CONTENT_TYPE"
              glib:nick="content-type">
      </member>
      <member name="cseq"
              value="17"
              c:identifier="GST_RTSP_HDR_CSEQ"
              glib:nick="cseq">
      </member>
      <member name="date"
              value="18"
              c:identifier="GST_RTSP_HDR_DATE"
              glib:nick="date">
      </member>
      <member name="expires"
              value="19"
              c:identifier="GST_RTSP_HDR_EXPIRES"
              glib:nick="expires">
      </member>
      <member name="from"
              value="20"
              c:identifier="GST_RTSP_HDR_FROM"
              glib:nick="from">
      </member>
      <member name="if_modified_since"
              value="21"
              c:identifier="GST_RTSP_HDR_IF_MODIFIED_SINCE"
              glib:nick="if-modified-since">
      </member>
      <member name="last_modified"
              value="22"
              c:identifier="GST_RTSP_HDR_LAST_MODIFIED"
              glib:nick="last-modified">
      </member>
      <member name="proxy_authenticate"
              value="23"
              c:identifier="GST_RTSP_HDR_PROXY_AUTHENTICATE"
              glib:nick="proxy-authenticate">
      </member>
      <member name="proxy_require"
              value="24"
              c:identifier="GST_RTSP_HDR_PROXY_REQUIRE"
              glib:nick="proxy-require">
      </member>
      <member name="public"
              value="25"
              c:identifier="GST_RTSP_HDR_PUBLIC"
              glib:nick="public">
      </member>
      <member name="range"
              value="26"
              c:identifier="GST_RTSP_HDR_RANGE"
              glib:nick="range">
      </member>
      <member name="referer"
              value="27"
              c:identifier="GST_RTSP_HDR_REFERER"
              glib:nick="referer">
      </member>
      <member name="require"
              value="28"
              c:identifier="GST_RTSP_HDR_REQUIRE"
              glib:nick="require">
      </member>
      <member name="retry_after"
              value="29"
              c:identifier="GST_RTSP_HDR_RETRY_AFTER"
              glib:nick="retry-after">
      </member>
      <member name="rtp_info"
              value="30"
              c:identifier="GST_RTSP_HDR_RTP_INFO"
              glib:nick="rtp-info">
      </member>
      <member name="scale"
              value="31"
              c:identifier="GST_RTSP_HDR_SCALE"
              glib:nick="scale">
      </member>
      <member name="session"
              value="32"
              c:identifier="GST_RTSP_HDR_SESSION"
              glib:nick="session">
      </member>
      <member name="server"
              value="33"
              c:identifier="GST_RTSP_HDR_SERVER"
              glib:nick="server">
      </member>
      <member name="speed"
              value="34"
              c:identifier="GST_RTSP_HDR_SPEED"
              glib:nick="speed">
      </member>
      <member name="transport"
              value="35"
              c:identifier="GST_RTSP_HDR_TRANSPORT"
              glib:nick="transport">
      </member>
      <member name="unsupported"
              value="36"
              c:identifier="GST_RTSP_HDR_UNSUPPORTED"
              glib:nick="unsupported">
      </member>
      <member name="user_agent"
              value="37"
              c:identifier="GST_RTSP_HDR_USER_AGENT"
              glib:nick="user-agent">
      </member>
      <member name="via"
              value="38"
              c:identifier="GST_RTSP_HDR_VIA"
              glib:nick="via">
      </member>
      <member name="www_authenticate"
              value="39"
              c:identifier="GST_RTSP_HDR_WWW_AUTHENTICATE"
              glib:nick="www-authenticate">
      </member>
      <member name="client_challenge"
              value="40"
              c:identifier="GST_RTSP_HDR_CLIENT_CHALLENGE"
              glib:nick="client-challenge">
      </member>
      <member name="real_challenge1"
              value="41"
              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE1"
              glib:nick="real-challenge1">
      </member>
      <member name="real_challenge2"
              value="42"
              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE2"
              glib:nick="real-challenge2">
      </member>
      <member name="real_challenge3"
              value="43"
              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE3"
              glib:nick="real-challenge3">
      </member>
      <member name="subscribe"
              value="44"
              c:identifier="GST_RTSP_HDR_SUBSCRIBE"
              glib:nick="subscribe">
      </member>
      <member name="alert"
              value="45"
              c:identifier="GST_RTSP_HDR_ALERT"
              glib:nick="alert">
      </member>
      <member name="client_id"
              value="46"
              c:identifier="GST_RTSP_HDR_CLIENT_ID"
              glib:nick="client-id">
      </member>
      <member name="company_id"
              value="47"
              c:identifier="GST_RTSP_HDR_COMPANY_ID"
              glib:nick="company-id">
      </member>
      <member name="guid"
              value="48"
              c:identifier="GST_RTSP_HDR_GUID"
              glib:nick="guid">
      </member>
      <member name="region_data"
              value="49"
              c:identifier="GST_RTSP_HDR_REGION_DATA"
              glib:nick="region-data">
      </member>
      <member name="max_asm_width"
              value="50"
              c:identifier="GST_RTSP_HDR_MAX_ASM_WIDTH"
              glib:nick="max-asm-width">
      </member>
      <member name="language"
              value="51"
              c:identifier="GST_RTSP_HDR_LANGUAGE"
              glib:nick="language">
      </member>
      <member name="player_start_time"
              value="52"
              c:identifier="GST_RTSP_HDR_PLAYER_START_TIME"
              glib:nick="player-start-time">
      </member>
      <member name="location"
              value="53"
              c:identifier="GST_RTSP_HDR_LOCATION"
              glib:nick="location">
      </member>
      <member name="etag"
              value="54"
              c:identifier="GST_RTSP_HDR_ETAG"
              glib:nick="etag">
      </member>
      <member name="if_match"
              value="55"
              c:identifier="GST_RTSP_HDR_IF_MATCH"
              glib:nick="if-match">
      </member>
      <member name="accept_charset"
              value="56"
              c:identifier="GST_RTSP_HDR_ACCEPT_CHARSET"
              glib:nick="accept-charset">
      </member>
      <member name="supported"
              value="57"
              c:identifier="GST_RTSP_HDR_SUPPORTED"
              glib:nick="supported">
      </member>
      <member name="vary"
              value="58"
              c:identifier="GST_RTSP_HDR_VARY"
              glib:nick="vary">
      </member>
      <member name="x_accelerate_streaming"
              value="59"
              c:identifier="GST_RTSP_HDR_X_ACCELERATE_STREAMING"
              glib:nick="x-accelerate-streaming">
      </member>
      <member name="x_accept_authent"
              value="60"
              c:identifier="GST_RTSP_HDR_X_ACCEPT_AUTHENT"
              glib:nick="x-accept-authent">
      </member>
      <member name="x_accept_proxy_authent"
              value="61"
              c:identifier="GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT"
              glib:nick="x-accept-proxy-authent">
      </member>
      <member name="x_broadcast_id"
              value="62"
              c:identifier="GST_RTSP_HDR_X_BROADCAST_ID"
              glib:nick="x-broadcast-id">
      </member>
      <member name="x_burst_streaming"
              value="63"
              c:identifier="GST_RTSP_HDR_X_BURST_STREAMING"
              glib:nick="x-burst-streaming">
      </member>
      <member name="x_notice"
              value="64"
              c:identifier="GST_RTSP_HDR_X_NOTICE"
              glib:nick="x-notice">
      </member>
      <member name="x_player_lag_time"
              value="65"
              c:identifier="GST_RTSP_HDR_X_PLAYER_LAG_TIME"
              glib:nick="x-player-lag-time">
      </member>
      <member name="x_playlist"
              value="66"
              c:identifier="GST_RTSP_HDR_X_PLAYLIST"
              glib:nick="x-playlist">
      </member>
      <member name="x_playlist_change_notice"
              value="67"
              c:identifier="GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE"
              glib:nick="x-playlist-change-notice">
      </member>
      <member name="x_playlist_gen_id"
              value="68"
              c:identifier="GST_RTSP_HDR_X_PLAYLIST_GEN_ID"
              glib:nick="x-playlist-gen-id">
      </member>
      <member name="x_playlist_seek_id"
              value="69"
              c:identifier="GST_RTSP_HDR_X_PLAYLIST_SEEK_ID"
              glib:nick="x-playlist-seek-id">
      </member>
      <member name="x_proxy_client_agent"
              value="70"
              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_AGENT"
              glib:nick="x-proxy-client-agent">
      </member>
      <member name="x_proxy_client_verb"
              value="71"
              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_VERB"
              glib:nick="x-proxy-client-verb">
      </member>
      <member name="x_receding_playlistchange"
              value="72"
              c:identifier="GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE"
              glib:nick="x-receding-playlistchange">
      </member>
      <member name="x_rtp_info"
              value="73"
              c:identifier="GST_RTSP_HDR_X_RTP_INFO"
              glib:nick="x-rtp-info">
      </member>
      <member name="x_startupprofile"
              value="74"
              c:identifier="GST_RTSP_HDR_X_STARTUPPROFILE"
              glib:nick="x-startupprofile">
      </member>
      <member name="timestamp"
              value="75"
              c:identifier="GST_RTSP_HDR_TIMESTAMP"
              glib:nick="timestamp">
      </member>
      <member name="authentication_info"
              value="76"
              c:identifier="GST_RTSP_HDR_AUTHENTICATION_INFO"
              glib:nick="authentication-info">
      </member>
      <member name="host"
              value="77"
              c:identifier="GST_RTSP_HDR_HOST"
              glib:nick="host">
      </member>
      <member name="pragma"
              value="78"
              c:identifier="GST_RTSP_HDR_PRAGMA"
              glib:nick="pragma">
      </member>
      <member name="x_server_ip_address"
              value="79"
              c:identifier="GST_RTSP_HDR_X_SERVER_IP_ADDRESS"
              glib:nick="x-server-ip-address">
      </member>
      <member name="x_sessioncookie"
              value="80"
              c:identifier="GST_RTSP_HDR_X_SESSIONCOOKIE"
              glib:nick="x-sessioncookie">
      </member>
      <member name="rtcp_interval"
              value="81"
              c:identifier="GST_RTSP_HDR_RTCP_INTERVAL"
              glib:nick="rtcp-interval">
      </member>
      <member name="keymgmt"
              value="82"
              c:identifier="GST_RTSP_HDR_KEYMGMT"
              glib:nick="keymgmt">
      </member>
      <member name="last"
              value="83"
              c:identifier="GST_RTSP_HDR_LAST"
              glib:nick="last">
      </member>
    </enumeration>
    <bitfield name="RTSPLowerTrans"
              glib:type-name="GstRTSPLowerTrans"
              glib:get-type="gst_rtsp_lower_trans_get_type"
              c:type="GstRTSPLowerTrans">
      <doc xml:space="preserve">The different transport methods.</doc>
      <member name="unknown"
              value="0"
              c:identifier="GST_RTSP_LOWER_TRANS_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">invalid transport flag</doc>
      </member>
      <member name="udp"
              value="1"
              c:identifier="GST_RTSP_LOWER_TRANS_UDP"
              glib:nick="udp">
        <doc xml:space="preserve">stream data over UDP</doc>
      </member>
      <member name="udp_mcast"
              value="2"
              c:identifier="GST_RTSP_LOWER_TRANS_UDP_MCAST"
              glib:nick="udp-mcast">
        <doc xml:space="preserve">stream data over UDP multicast</doc>
      </member>
      <member name="tcp"
              value="4"
              c:identifier="GST_RTSP_LOWER_TRANS_TCP"
              glib:nick="tcp">
        <doc xml:space="preserve">stream data over TCP</doc>
      </member>
      <member name="http"
              value="16"
              c:identifier="GST_RTSP_LOWER_TRANS_HTTP"
              glib:nick="http">
        <doc xml:space="preserve">stream data tunneled over HTTP.</doc>
      </member>
      <member name="tls"
              value="32"
              c:identifier="GST_RTSP_LOWER_TRANS_TLS"
              glib:nick="tls">
        <doc xml:space="preserve">encrypt TCP and HTTP with TLS</doc>
      </member>
    </bitfield>
    <record name="RTSPMessage" c:type="GstRTSPMessage">
      <doc xml:space="preserve">Provides methods for creating and parsing request, response and data messages.</doc>
      <field name="type" writable="1">
        <doc xml:space="preserve">the message type</doc>
        <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
      </field>
      <union name="type_data" c:type="type_data">
        <record name="request" c:type="request">
          <field name="method" writable="1">
            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
          </field>
          <field name="uri" writable="1">
            <type name="utf8" c:type="gchar*"/>
          </field>
          <field name="version" writable="1">
            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
          </field>
        </record>
        <record name="response" c:type="response">
          <field name="code" writable="1">
            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
          </field>
          <field name="reason" writable="1">
            <type name="utf8" c:type="gchar*"/>
          </field>
          <field name="version" writable="1">
            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
          </field>
        </record>
        <record name="data" c:type="data">
          <field name="channel" writable="1">
            <type name="guint8" c:type="guint8"/>
          </field>
        </record>
      </union>
      <field name="hdr_fields" readable="0" private="1">
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="body" readable="0" private="1">
        <type name="guint8" c:type="guint8*"/>
      </field>
      <field name="body_size" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <method name="add_header" c:identifier="gst_rtsp_message_add_header">
        <doc xml:space="preserve">Add a header with key @field and @value to @msg. This function takes a copy
of @value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="field" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value of the header</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_header_by_name"
              c:identifier="gst_rtsp_message_add_header_by_name"
              version="1.6">
        <doc xml:space="preserve">Add a header with key @header and @value to @msg. This function takes a copy
of @value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value of the header</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_headers"
              c:identifier="gst_rtsp_message_append_headers">
        <doc xml:space="preserve">Append the currently configured headers in @msg to the #GString @str suitable
for transmission.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a string</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="gst_rtsp_message_dump">
        <doc xml:space="preserve">Dump the contents of @msg to stdout.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_rtsp_message_free">
        <doc xml:space="preserve">Free the memory used by @msg.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_body" c:identifier="gst_rtsp_message_get_body">
        <doc xml:space="preserve">Get the body of @msg. @data remains valid for as long as @msg is valid and
unchanged.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">location for the data</doc>
            <array length="1" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location for the size of @data</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_header" c:identifier="gst_rtsp_message_get_header">
        <doc xml:space="preserve">Get the @indx header value with key @field from @msg. The result in @value
stays valid as long as it remains present in @msg.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
was not found.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="field" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to hold the result</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="indx" transfer-ownership="none">
            <doc xml:space="preserve">the index of the header</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_header_by_name"
              c:identifier="gst_rtsp_message_get_header_by_name"
              version="1.6">
        <doc xml:space="preserve">Get the @index header value with key @header from @msg. The result in @value
stays valid as long as it remains present in @msg.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
was not found.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to hold the result</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of the header</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_type" c:identifier="gst_rtsp_message_get_type">
        <doc xml:space="preserve">Get the message type of @msg.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the message type.</doc>
          <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gst_rtsp_message_init">
        <doc xml:space="preserve">Initialize @msg. This function is mostly used when @msg is allocated on the
stack. The reverse operation of this is gst_rtsp_message_unset().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_data" c:identifier="gst_rtsp_message_init_data">
        <doc xml:space="preserve">Initialize a new data #GstRTSPMessage for @channel.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve">a channel</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_request" c:identifier="gst_rtsp_message_init_request">
        <doc xml:space="preserve">Initialize @msg as a request message with @method and @uri. To clear @msg
again, use gst_rtsp_message_unset().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">the request method to use</doc>
            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
          </parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve">the uri of the request</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_response"
              c:identifier="gst_rtsp_message_init_response">
        <doc xml:space="preserve">Initialize @msg with @code and @reason.

When @reason is #NULL, the default reason for @code will be used.

When @request is not #NULL, the relevant headers will be copied to the new
response message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve">the status code</doc>
            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the status reason or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="request"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the request that triggered the response or %NULL</doc>
            <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_data" c:identifier="gst_rtsp_message_parse_data">
        <doc xml:space="preserve">Parse the data message @msg and store the channel in @channel.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="channel"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to hold the channel</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_request"
              c:identifier="gst_rtsp_message_parse_request">
        <doc xml:space="preserve">Parse the request message @msg and store the values @method, @uri and
@version. The result locations can be #NULL if one is not interested in its
value.

@uri remains valid for as long as @msg is valid and unchanged.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="method"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the method</doc>
            <type name="RTSPMethod" c:type="GstRTSPMethod*"/>
          </parameter>
          <parameter name="uri"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the uri</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="version"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the version</doc>
            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_response"
              c:identifier="gst_rtsp_message_parse_response">
        <doc xml:space="preserve">Parse the response message @msg and store the values @code, @reason and
@version. The result locations can be #NULL if one is not interested in its
value.

@reason remains valid for as long as @msg is valid and unchanged.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="code"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the status code</doc>
            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode*"/>
          </parameter>
          <parameter name="reason"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the status reason</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="version"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location to hold the version</doc>
            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_header"
              c:identifier="gst_rtsp_message_remove_header">
        <doc xml:space="preserve">Remove the @indx header with key @field from @msg. If @indx equals -1, all
headers will be removed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="field" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
          </parameter>
          <parameter name="indx" transfer-ownership="none">
            <doc xml:space="preserve">the index of the header</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_header_by_name"
              c:identifier="gst_rtsp_message_remove_header_by_name"
              version="1.6">
        <doc xml:space="preserve">Remove the @index header with key @header from @msg. If @index equals -1,
all matching headers will be removed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">the header string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of the header</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_body" c:identifier="gst_rtsp_message_set_body">
        <doc xml:space="preserve">Set the body of @msg to a copy of @data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the size of @data</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="steal_body" c:identifier="gst_rtsp_message_steal_body">
        <doc xml:space="preserve">Take the body of @msg and store it in @data and @size. After this method,
the body and size of @msg will be set to #NULL and 0 respectively.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location for the data</doc>
            <array length="1" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location for the size of @data</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_body" c:identifier="gst_rtsp_message_take_body">
        <doc xml:space="preserve">Set the body of @msg to @data and @size. This method takes ownership of
@data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="full">
            <doc xml:space="preserve">the data</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the size of @data</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_header" c:identifier="gst_rtsp_message_take_header">
        <doc xml:space="preserve">Add a header with key @field and @value to @msg. This function takes
ownership of @value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="field" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
          </parameter>
          <parameter name="value" transfer-ownership="full">
            <doc xml:space="preserve">the value of the header</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_header_by_name"
              c:identifier="gst_rtsp_message_take_header_by_name"
              version="1.6">
        <doc xml:space="preserve">Add a header with key @header and @value to @msg. This function takes
ownership of @value, but not of @header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a header string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="full">
            <doc xml:space="preserve">the value of the header</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unset" c:identifier="gst_rtsp_message_unset">
        <doc xml:space="preserve">Unset the contents of @msg so that it becomes an uninitialized
#GstRTSPMessage again. This function is mostly used in combination with
gst_rtsp_message_init_request(), gst_rtsp_message_init_response() and
gst_rtsp_message_init_data() on stack allocated #GstRTSPMessage structures.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="gst_rtsp_message_new">
        <doc xml:space="preserve">Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="msg"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_data" c:identifier="gst_rtsp_message_new_data">
        <doc xml:space="preserve">Create a new data #GstRTSPMessage with @channel and store the
result message in @msg. Free with gst_rtsp_message_free().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="msg"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
          </parameter>
          <parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve">the channel</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_request" c:identifier="gst_rtsp_message_new_request">
        <doc xml:space="preserve">Create a new #GstRTSPMessage with @method and @uri and store the result
request message in @msg. Free with gst_rtsp_message_free().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="msg"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
          </parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">the request method to use</doc>
            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
          </parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve">the uri of the request</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_response"
                c:identifier="gst_rtsp_message_new_response">
        <doc xml:space="preserve">Create a new response #GstRTSPMessage with @code and @reason and store the
result message in @msg. Free with gst_rtsp_message_free().

When @reason is #NULL, the default reason for @code will be used.

When @request is not #NULL, the relevant headers will be copied to the new
response message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="msg"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
          </parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve">the status code</doc>
            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the status reason or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="request"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the request that triggered the response or %NULL</doc>
            <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <bitfield name="RTSPMethod"
              glib:type-name="GstRTSPMethod"
              glib:get-type="gst_rtsp_method_get_type"
              c:type="GstRTSPMethod">
      <doc xml:space="preserve">The different supported RTSP methods.</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">invalid method</doc>
      </member>
      <member name="describe"
              value="1"
              c:identifier="GST_RTSP_DESCRIBE"
              glib:nick="describe">
        <doc xml:space="preserve">the DESCRIBE method</doc>
      </member>
      <member name="announce"
              value="2"
              c:identifier="GST_RTSP_ANNOUNCE"
              glib:nick="announce">
        <doc xml:space="preserve">the ANNOUNCE method</doc>
      </member>
      <member name="get_parameter"
              value="4"
              c:identifier="GST_RTSP_GET_PARAMETER"
              glib:nick="get-parameter">
        <doc xml:space="preserve">the GET_PARAMETER method</doc>
      </member>
      <member name="options"
              value="8"
              c:identifier="GST_RTSP_OPTIONS"
              glib:nick="options">
        <doc xml:space="preserve">the OPTIONS method</doc>
      </member>
      <member name="pause"
              value="16"
              c:identifier="GST_RTSP_PAUSE"
              glib:nick="pause">
        <doc xml:space="preserve">the PAUSE method</doc>
      </member>
      <member name="play"
              value="32"
              c:identifier="GST_RTSP_PLAY"
              glib:nick="play">
        <doc xml:space="preserve">the PLAY method</doc>
      </member>
      <member name="record"
              value="64"
              c:identifier="GST_RTSP_RECORD"
              glib:nick="record">
        <doc xml:space="preserve">the RECORD method</doc>
      </member>
      <member name="redirect"
              value="128"
              c:identifier="GST_RTSP_REDIRECT"
              glib:nick="redirect">
        <doc xml:space="preserve">the REDIRECT method</doc>
      </member>
      <member name="setup"
              value="256"
              c:identifier="GST_RTSP_SETUP"
              glib:nick="setup">
        <doc xml:space="preserve">the SETUP method</doc>
      </member>
      <member name="set_parameter"
              value="512"
              c:identifier="GST_RTSP_SET_PARAMETER"
              glib:nick="set-parameter">
        <doc xml:space="preserve">the SET_PARAMETER method</doc>
      </member>
      <member name="teardown"
              value="1024"
              c:identifier="GST_RTSP_TEARDOWN"
              glib:nick="teardown">
        <doc xml:space="preserve">the TEARDOWN method</doc>
      </member>
      <member name="get"
              value="2048"
              c:identifier="GST_RTSP_GET"
              glib:nick="get">
        <doc xml:space="preserve">the GET method (HTTP).</doc>
      </member>
      <member name="post"
              value="4096"
              c:identifier="GST_RTSP_POST"
              glib:nick="post">
        <doc xml:space="preserve">the POST method (HTTP).</doc>
      </member>
      <function name="as_text" c:identifier="gst_rtsp_method_as_text">
        <doc xml:space="preserve">Convert @method to a string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a string representation of @method.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMethod</doc>
            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
          </parameter>
        </parameters>
      </function>
    </bitfield>
    <enumeration name="RTSPMsgType"
                 glib:type-name="GstRTSPMsgType"
                 glib:get-type="gst_rtsp_msg_type_get_type"
                 c:type="GstRTSPMsgType">
      <doc xml:space="preserve">The type of a message.</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_MESSAGE_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">invalid message type</doc>
      </member>
      <member name="request"
              value="1"
              c:identifier="GST_RTSP_MESSAGE_REQUEST"
              glib:nick="request">
        <doc xml:space="preserve">RTSP request message</doc>
      </member>
      <member name="response"
              value="2"
              c:identifier="GST_RTSP_MESSAGE_RESPONSE"
              glib:nick="response">
        <doc xml:space="preserve">RTSP response message</doc>
      </member>
      <member name="http_request"
              value="3"
              c:identifier="GST_RTSP_MESSAGE_HTTP_REQUEST"
              glib:nick="http-request">
        <doc xml:space="preserve">HTTP request message.</doc>
      </member>
      <member name="http_response"
              value="4"
              c:identifier="GST_RTSP_MESSAGE_HTTP_RESPONSE"
              glib:nick="http-response">
        <doc xml:space="preserve">HTTP response message.</doc>
      </member>
      <member name="data"
              value="5"
              c:identifier="GST_RTSP_MESSAGE_DATA"
              glib:nick="data">
        <doc xml:space="preserve">data message</doc>
      </member>
    </enumeration>
    <bitfield name="RTSPProfile"
              glib:type-name="GstRTSPProfile"
              glib:get-type="gst_rtsp_profile_get_type"
              c:type="GstRTSPProfile">
      <doc xml:space="preserve">The transfer profile to use.</doc>
      <member name="unknown"
              value="0"
              c:identifier="GST_RTSP_PROFILE_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">invalid profile</doc>
      </member>
      <member name="avp"
              value="1"
              c:identifier="GST_RTSP_PROFILE_AVP"
              glib:nick="avp">
        <doc xml:space="preserve">the Audio/Visual profile (RFC 3551)</doc>
      </member>
      <member name="savp"
              value="2"
              c:identifier="GST_RTSP_PROFILE_SAVP"
              glib:nick="savp">
        <doc xml:space="preserve">the secure Audio/Visual profile (RFC 3711)</doc>
      </member>
      <member name="avpf"
              value="4"
              c:identifier="GST_RTSP_PROFILE_AVPF"
              glib:nick="avpf">
        <doc xml:space="preserve">the Audio/Visual profile with feedback (RFC 4585)</doc>
      </member>
      <member name="savpf"
              value="8"
              c:identifier="GST_RTSP_PROFILE_SAVPF"
              glib:nick="savpf">
        <doc xml:space="preserve">the secure Audio/Visual profile with feedback (RFC 5124)</doc>
      </member>
    </bitfield>
    <record name="RTSPRange" c:type="GstRTSPRange">
      <doc xml:space="preserve">Provides helper functions to deal with time ranges.</doc>
      <field name="min" writable="1">
        <doc xml:space="preserve">minimum value of the range</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="max" writable="1">
        <doc xml:space="preserve">maximum value of the range</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <function name="convert_units"
                c:identifier="gst_rtsp_range_convert_units">
        <doc xml:space="preserve">Converts the range in-place between different types of units.
Ranges containing the special value #GST_RTSP_TIME_NOW can not be
converted as these are only valid for #GST_RTSP_RANGE_NPT.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the range could be converted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="range" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
            <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
          </parameter>
          <parameter name="unit" transfer-ownership="none">
            <doc xml:space="preserve">the unit to convert the range into</doc>
            <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
          </parameter>
        </parameters>
      </function>
      <function name="free" c:identifier="gst_rtsp_range_free">
        <doc xml:space="preserve">Free the memory allocated by @range.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="range" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
            <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_times"
                c:identifier="gst_rtsp_range_get_times"
                version="1.2">
        <doc xml:space="preserve">Retrieve the minimum and maximum values from @range converted to
#GstClockTime in @min and @max.

A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW
and #GST_RTSP_TIME_END for @min and @max respectively.

UTC times will be converted to nanoseconds since 1900.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="range" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
            <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
          </parameter>
          <parameter name="min" transfer-ownership="none">
            <doc xml:space="preserve">result minimum #GstClockTime</doc>
            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
          </parameter>
          <parameter name="max" transfer-ownership="none">
            <doc xml:space="preserve">result maximum #GstClockTime</doc>
            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse" c:identifier="gst_rtsp_range_parse">
        <doc xml:space="preserve">Parse @rangestr to a #GstRTSPTimeRange.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="rangestr" transfer-ownership="none">
            <doc xml:space="preserve">a range string to parse</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="range" transfer-ownership="none">
            <doc xml:space="preserve">location to hold the #GstRTSPTimeRange result</doc>
            <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
          </parameter>
        </parameters>
      </function>
      <function name="to_string" c:identifier="gst_rtsp_range_to_string">
        <doc xml:space="preserve">Convert @range into a string representation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The string representation of @range. g_free() after usage.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="range" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
            <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="RTSPRangeUnit"
                 glib:type-name="GstRTSPRangeUnit"
                 glib:get-type="gst_rtsp_range_unit_get_type"
                 c:type="GstRTSPRangeUnit">
      <doc xml:space="preserve">Different possible time range units.</doc>
      <member name="smpte"
              value="0"
              c:identifier="GST_RTSP_RANGE_SMPTE"
              glib:nick="smpte">
        <doc xml:space="preserve">SMPTE timecode</doc>
      </member>
      <member name="smpte_30_drop"
              value="1"
              c:identifier="GST_RTSP_RANGE_SMPTE_30_DROP"
              glib:nick="smpte-30-drop">
        <doc xml:space="preserve">29.97 frames per second</doc>
      </member>
      <member name="smpte_25"
              value="2"
              c:identifier="GST_RTSP_RANGE_SMPTE_25"
              glib:nick="smpte-25">
        <doc xml:space="preserve">25 frames per second</doc>
      </member>
      <member name="npt"
              value="3"
              c:identifier="GST_RTSP_RANGE_NPT"
              glib:nick="npt">
        <doc xml:space="preserve">Normal play time</doc>
      </member>
      <member name="clock"
              value="4"
              c:identifier="GST_RTSP_RANGE_CLOCK"
              glib:nick="clock">
        <doc xml:space="preserve">Absolute time expressed as ISO 8601 timestamps</doc>
      </member>
    </enumeration>
    <enumeration name="RTSPResult"
                 glib:type-name="GstRTSPResult"
                 glib:get-type="gst_rtsp_result_get_type"
                 c:type="GstRTSPResult">
      <doc xml:space="preserve">Result codes from the RTSP functions.</doc>
      <member name="ok" value="0" c:identifier="GST_RTSP_OK" glib:nick="ok">
        <doc xml:space="preserve">no error</doc>
      </member>
      <member name="error"
              value="-1"
              c:identifier="GST_RTSP_ERROR"
              glib:nick="error">
        <doc xml:space="preserve">some unspecified error occured</doc>
      </member>
      <member name="einval"
              value="-2"
              c:identifier="GST_RTSP_EINVAL"
              glib:nick="einval">
        <doc xml:space="preserve">invalid arguments were provided to a function</doc>
      </member>
      <member name="eintr"
              value="-3"
              c:identifier="GST_RTSP_EINTR"
              glib:nick="eintr">
        <doc xml:space="preserve">an operation was canceled</doc>
      </member>
      <member name="enomem"
              value="-4"
              c:identifier="GST_RTSP_ENOMEM"
              glib:nick="enomem">
        <doc xml:space="preserve">no memory was available for the operation</doc>
      </member>
      <member name="eresolv"
              value="-5"
              c:identifier="GST_RTSP_ERESOLV"
              glib:nick="eresolv">
        <doc xml:space="preserve">a host resolve error occured</doc>
      </member>
      <member name="enotimpl"
              value="-6"
              c:identifier="GST_RTSP_ENOTIMPL"
              glib:nick="enotimpl">
        <doc xml:space="preserve">function not implemented</doc>
      </member>
      <member name="esys"
              value="-7"
              c:identifier="GST_RTSP_ESYS"
              glib:nick="esys">
        <doc xml:space="preserve">a system error occured, errno contains more details</doc>
      </member>
      <member name="eparse"
              value="-8"
              c:identifier="GST_RTSP_EPARSE"
              glib:nick="eparse">
        <doc xml:space="preserve">a persing error occured</doc>
      </member>
      <member name="ewsastart"
              value="-9"
              c:identifier="GST_RTSP_EWSASTART"
              glib:nick="ewsastart">
        <doc xml:space="preserve">windows networking could not start</doc>
      </member>
      <member name="ewsaversion"
              value="-10"
              c:identifier="GST_RTSP_EWSAVERSION"
              glib:nick="ewsaversion">
        <doc xml:space="preserve">windows networking stack has wrong version</doc>
      </member>
      <member name="eeof"
              value="-11"
              c:identifier="GST_RTSP_EEOF"
              glib:nick="eeof">
        <doc xml:space="preserve">end-of-file was reached</doc>
      </member>
      <member name="enet"
              value="-12"
              c:identifier="GST_RTSP_ENET"
              glib:nick="enet">
        <doc xml:space="preserve">a network problem occured, h_errno contains more details</doc>
      </member>
      <member name="enotip"
              value="-13"
              c:identifier="GST_RTSP_ENOTIP"
              glib:nick="enotip">
        <doc xml:space="preserve">the host is not an IP host</doc>
      </member>
      <member name="etimeout"
              value="-14"
              c:identifier="GST_RTSP_ETIMEOUT"
              glib:nick="etimeout">
        <doc xml:space="preserve">a timeout occured</doc>
      </member>
      <member name="etget"
              value="-15"
              c:identifier="GST_RTSP_ETGET"
              glib:nick="etget">
        <doc xml:space="preserve">the tunnel GET request has been performed</doc>
      </member>
      <member name="etpost"
              value="-16"
              c:identifier="GST_RTSP_ETPOST"
              glib:nick="etpost">
        <doc xml:space="preserve">the tunnel POST request has been performed</doc>
      </member>
      <member name="elast"
              value="-17"
              c:identifier="GST_RTSP_ELAST"
              glib:nick="elast">
        <doc xml:space="preserve">last error</doc>
      </member>
    </enumeration>
    <enumeration name="RTSPState"
                 glib:type-name="GstRTSPState"
                 glib:get-type="gst_rtsp_state_get_type"
                 c:type="GstRTSPState">
      <doc xml:space="preserve">The different RTSP states.</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_STATE_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">invalid state</doc>
      </member>
      <member name="init"
              value="1"
              c:identifier="GST_RTSP_STATE_INIT"
              glib:nick="init">
        <doc xml:space="preserve">initializing</doc>
      </member>
      <member name="ready"
              value="2"
              c:identifier="GST_RTSP_STATE_READY"
              glib:nick="ready">
        <doc xml:space="preserve">ready for operation</doc>
      </member>
      <member name="seeking"
              value="3"
              c:identifier="GST_RTSP_STATE_SEEKING"
              glib:nick="seeking">
        <doc xml:space="preserve">seeking in progress</doc>
      </member>
      <member name="playing"
              value="4"
              c:identifier="GST_RTSP_STATE_PLAYING"
              glib:nick="playing">
        <doc xml:space="preserve">playing</doc>
      </member>
      <member name="recording"
              value="5"
              c:identifier="GST_RTSP_STATE_RECORDING"
              glib:nick="recording">
        <doc xml:space="preserve">recording</doc>
      </member>
    </enumeration>
    <enumeration name="RTSPStatusCode"
                 glib:type-name="GstRTSPStatusCode"
                 glib:get-type="gst_rtsp_status_code_get_type"
                 c:type="GstRTSPStatusCode">
      <doc xml:space="preserve">Enumeration of rtsp status codes</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_STS_INVALID"
              glib:nick="invalid">
      </member>
      <member name="continue"
              value="100"
              c:identifier="GST_RTSP_STS_CONTINUE"
              glib:nick="continue">
      </member>
      <member name="ok"
              value="200"
              c:identifier="GST_RTSP_STS_OK"
              glib:nick="ok">
      </member>
      <member name="created"
              value="201"
              c:identifier="GST_RTSP_STS_CREATED"
              glib:nick="created">
      </member>
      <member name="low_on_storage"
              value="250"
              c:identifier="GST_RTSP_STS_LOW_ON_STORAGE"
              glib:nick="low-on-storage">
      </member>
      <member name="multiple_choices"
              value="300"
              c:identifier="GST_RTSP_STS_MULTIPLE_CHOICES"
              glib:nick="multiple-choices">
      </member>
      <member name="moved_permanently"
              value="301"
              c:identifier="GST_RTSP_STS_MOVED_PERMANENTLY"
              glib:nick="moved-permanently">
      </member>
      <member name="move_temporarily"
              value="302"
              c:identifier="GST_RTSP_STS_MOVE_TEMPORARILY"
              glib:nick="move-temporarily">
      </member>
      <member name="see_other"
              value="303"
              c:identifier="GST_RTSP_STS_SEE_OTHER"
              glib:nick="see-other">
      </member>
      <member name="not_modified"
              value="304"
              c:identifier="GST_RTSP_STS_NOT_MODIFIED"
              glib:nick="not-modified">
      </member>
      <member name="use_proxy"
              value="305"
              c:identifier="GST_RTSP_STS_USE_PROXY"
              glib:nick="use-proxy">
      </member>
      <member name="bad_request"
              value="400"
              c:identifier="GST_RTSP_STS_BAD_REQUEST"
              glib:nick="bad-request">
      </member>
      <member name="unauthorized"
              value="401"
              c:identifier="GST_RTSP_STS_UNAUTHORIZED"
              glib:nick="unauthorized">
      </member>
      <member name="payment_required"
              value="402"
              c:identifier="GST_RTSP_STS_PAYMENT_REQUIRED"
              glib:nick="payment-required">
      </member>
      <member name="forbidden"
              value="403"
              c:identifier="GST_RTSP_STS_FORBIDDEN"
              glib:nick="forbidden">
      </member>
      <member name="not_found"
              value="404"
              c:identifier="GST_RTSP_STS_NOT_FOUND"
              glib:nick="not-found">
      </member>
      <member name="method_not_allowed"
              value="405"
              c:identifier="GST_RTSP_STS_METHOD_NOT_ALLOWED"
              glib:nick="method-not-allowed">
      </member>
      <member name="not_acceptable"
              value="406"
              c:identifier="GST_RTSP_STS_NOT_ACCEPTABLE"
              glib:nick="not-acceptable">
      </member>
      <member name="proxy_auth_required"
              value="407"
              c:identifier="GST_RTSP_STS_PROXY_AUTH_REQUIRED"
              glib:nick="proxy-auth-required">
      </member>
      <member name="request_timeout"
              value="408"
              c:identifier="GST_RTSP_STS_REQUEST_TIMEOUT"
              glib:nick="request-timeout">
      </member>
      <member name="gone"
              value="410"
              c:identifier="GST_RTSP_STS_GONE"
              glib:nick="gone">
      </member>
      <member name="length_required"
              value="411"
              c:identifier="GST_RTSP_STS_LENGTH_REQUIRED"
              glib:nick="length-required">
      </member>
      <member name="precondition_failed"
              value="412"
              c:identifier="GST_RTSP_STS_PRECONDITION_FAILED"
              glib:nick="precondition-failed">
      </member>
      <member name="request_entity_too_large"
              value="413"
              c:identifier="GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE"
              glib:nick="request-entity-too-large">
      </member>
      <member name="request_uri_too_large"
              value="414"
              c:identifier="GST_RTSP_STS_REQUEST_URI_TOO_LARGE"
              glib:nick="request-uri-too-large">
      </member>
      <member name="unsupported_media_type"
              value="415"
              c:identifier="GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE"
              glib:nick="unsupported-media-type">
      </member>
      <member name="parameter_not_understood"
              value="451"
              c:identifier="GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD"
              glib:nick="parameter-not-understood">
      </member>
      <member name="conference_not_found"
              value="452"
              c:identifier="GST_RTSP_STS_CONFERENCE_NOT_FOUND"
              glib:nick="conference-not-found">
      </member>
      <member name="not_enough_bandwidth"
              value="453"
              c:identifier="GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH"
              glib:nick="not-enough-bandwidth">
      </member>
      <member name="session_not_found"
              value="454"
              c:identifier="GST_RTSP_STS_SESSION_NOT_FOUND"
              glib:nick="session-not-found">
      </member>
      <member name="method_not_valid_in_this_state"
              value="455"
              c:identifier="GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE"
              glib:nick="method-not-valid-in-this-state">
      </member>
      <member name="header_field_not_valid_for_resource"
              value="456"
              c:identifier="GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE"
              glib:nick="header-field-not-valid-for-resource">
      </member>
      <member name="invalid_range"
              value="457"
              c:identifier="GST_RTSP_STS_INVALID_RANGE"
              glib:nick="invalid-range">
      </member>
      <member name="parameter_is_readonly"
              value="458"
              c:identifier="GST_RTSP_STS_PARAMETER_IS_READONLY"
              glib:nick="parameter-is-readonly">
      </member>
      <member name="aggregate_operation_not_allowed"
              value="459"
              c:identifier="GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED"
              glib:nick="aggregate-operation-not-allowed">
      </member>
      <member name="only_aggregate_operation_allowed"
              value="460"
              c:identifier="GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED"
              glib:nick="only-aggregate-operation-allowed">
      </member>
      <member name="unsupported_transport"
              value="461"
              c:identifier="GST_RTSP_STS_UNSUPPORTED_TRANSPORT"
              glib:nick="unsupported-transport">
      </member>
      <member name="destination_unreachable"
              value="462"
              c:identifier="GST_RTSP_STS_DESTINATION_UNREACHABLE"
              glib:nick="destination-unreachable">
      </member>
      <member name="key_management_failure"
              value="463"
              c:identifier="GST_RTSP_STS_KEY_MANAGEMENT_FAILURE"
              glib:nick="key-management-failure">
      </member>
      <member name="internal_server_error"
              value="500"
              c:identifier="GST_RTSP_STS_INTERNAL_SERVER_ERROR"
              glib:nick="internal-server-error">
      </member>
      <member name="not_implemented"
              value="501"
              c:identifier="GST_RTSP_STS_NOT_IMPLEMENTED"
              glib:nick="not-implemented">
      </member>
      <member name="bad_gateway"
              value="502"
              c:identifier="GST_RTSP_STS_BAD_GATEWAY"
              glib:nick="bad-gateway">
      </member>
      <member name="service_unavailable"
              value="503"
              c:identifier="GST_RTSP_STS_SERVICE_UNAVAILABLE"
              glib:nick="service-unavailable">
      </member>
      <member name="gateway_timeout"
              value="504"
              c:identifier="GST_RTSP_STS_GATEWAY_TIMEOUT"
              glib:nick="gateway-timeout">
      </member>
      <member name="rtsp_version_not_supported"
              value="505"
              c:identifier="GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED"
              glib:nick="rtsp-version-not-supported">
      </member>
      <member name="option_not_supported"
              value="551"
              c:identifier="GST_RTSP_STS_OPTION_NOT_SUPPORTED"
              glib:nick="option-not-supported">
      </member>
    </enumeration>
    <record name="RTSPTime" c:type="GstRTSPTime">
      <doc xml:space="preserve">A time indication.</doc>
      <field name="type" writable="1">
        <doc xml:space="preserve">the time of the time</doc>
        <type name="RTSPTimeType" c:type="GstRTSPTimeType"/>
      </field>
      <field name="seconds" writable="1">
        <doc xml:space="preserve">seconds when @type is GST_RTSP_TIME_SECONDS,
          GST_RTSP_TIME_UTC and GST_RTSP_TIME_FRAMES</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </record>
    <record name="RTSPTime2" c:type="GstRTSPTime2" version="1.2">
      <doc xml:space="preserve">Extra fields for a time indication.</doc>
      <field name="frames" writable="1">
        <doc xml:space="preserve">frames and subframes when type in GstRTSPTime is
         GST_RTSP_TIME_FRAMES</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="year" writable="1">
        <doc xml:space="preserve">year when type is GST_RTSP_TIME_UTC</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="month" writable="1">
        <doc xml:space="preserve">month when type is GST_RTSP_TIME_UTC</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="day" writable="1">
        <doc xml:space="preserve">day when type is GST_RTSP_TIME_UTC</doc>
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <record name="RTSPTimeRange" c:type="GstRTSPTimeRange">
      <doc xml:space="preserve">A time range.</doc>
      <field name="unit" writable="1">
        <doc xml:space="preserve">the time units used</doc>
        <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
      </field>
      <field name="min" writable="1">
        <doc xml:space="preserve">the minimum interval</doc>
        <type name="RTSPTime" c:type="GstRTSPTime"/>
      </field>
      <field name="max" writable="1">
        <doc xml:space="preserve">the maximum interval</doc>
        <type name="RTSPTime" c:type="GstRTSPTime"/>
      </field>
      <field name="min2" writable="1">
        <doc xml:space="preserve">extra fields in the minimum interval (Since: 1.2)</doc>
        <type name="RTSPTime2" c:type="GstRTSPTime2"/>
      </field>
      <field name="max2" writable="1">
        <doc xml:space="preserve">extra fields in the maximum interval (Since: 1.2)</doc>
        <type name="RTSPTime2" c:type="GstRTSPTime2"/>
      </field>
    </record>
    <enumeration name="RTSPTimeType"
                 glib:type-name="GstRTSPTimeType"
                 glib:get-type="gst_rtsp_time_type_get_type"
                 c:type="GstRTSPTimeType">
      <doc xml:space="preserve">Possible time types.</doc>
      <member name="seconds"
              value="0"
              c:identifier="GST_RTSP_TIME_SECONDS"
              glib:nick="seconds">
        <doc xml:space="preserve">seconds</doc>
      </member>
      <member name="now"
              value="1"
              c:identifier="GST_RTSP_TIME_NOW"
              glib:nick="now">
        <doc xml:space="preserve">now</doc>
      </member>
      <member name="end"
              value="2"
              c:identifier="GST_RTSP_TIME_END"
              glib:nick="end">
        <doc xml:space="preserve">end</doc>
      </member>
      <member name="frames"
              value="3"
              c:identifier="GST_RTSP_TIME_FRAMES"
              glib:nick="frames">
        <doc xml:space="preserve">frames and subframes</doc>
      </member>
      <member name="utc"
              value="4"
              c:identifier="GST_RTSP_TIME_UTC"
              glib:nick="utc">
        <doc xml:space="preserve">UTC time</doc>
      </member>
    </enumeration>
    <bitfield name="RTSPTransMode"
              glib:type-name="GstRTSPTransMode"
              glib:get-type="gst_rtsp_trans_mode_get_type"
              c:type="GstRTSPTransMode">
      <doc xml:space="preserve">The transfer mode to use.</doc>
      <member name="unknown"
              value="0"
              c:identifier="GST_RTSP_TRANS_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">invalid tansport mode</doc>
      </member>
      <member name="rtp"
              value="1"
              c:identifier="GST_RTSP_TRANS_RTP"
              glib:nick="rtp">
        <doc xml:space="preserve">transfer RTP data</doc>
      </member>
      <member name="rdt"
              value="2"
              c:identifier="GST_RTSP_TRANS_RDT"
              glib:nick="rdt">
        <doc xml:space="preserve">transfer RDT (RealMedia) data</doc>
      </member>
    </bitfield>
    <record name="RTSPTransport" c:type="GstRTSPTransport">
      <doc xml:space="preserve">Provides helper functions to deal with RTSP transport strings.</doc>
      <field name="trans" writable="1">
        <doc xml:space="preserve">the transport mode</doc>
        <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
      </field>
      <field name="profile" writable="1">
        <doc xml:space="preserve">the tansport profile</doc>
        <type name="RTSPProfile" c:type="GstRTSPProfile"/>
      </field>
      <field name="lower_transport" writable="1">
        <doc xml:space="preserve">the lower transport</doc>
        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
      </field>
      <field name="destination" writable="1">
        <doc xml:space="preserve">the destination ip/hostname</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="source" writable="1">
        <doc xml:space="preserve">the source ip/hostname</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="layers" writable="1">
        <doc xml:space="preserve">the number of layers</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="mode_play" writable="1">
        <doc xml:space="preserve">if play mode was selected</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="mode_record" writable="1">
        <doc xml:space="preserve">if record mode was selected</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="append" writable="1">
        <doc xml:space="preserve">is append mode was selected</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="interleaved" writable="1">
        <doc xml:space="preserve">the interleave range</doc>
        <type name="RTSPRange" c:type="GstRTSPRange"/>
      </field>
      <field name="ttl" writable="1">
        <doc xml:space="preserve">the time to live for multicast UDP</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="port" writable="1">
        <doc xml:space="preserve">the port pair for multicast sessions</doc>
        <type name="RTSPRange" c:type="GstRTSPRange"/>
      </field>
      <field name="client_port" writable="1">
        <doc xml:space="preserve">the client port pair for receiving data. For TCP
  based transports, applications can use this field to store the
  sender and receiver ports of the client.</doc>
        <type name="RTSPRange" c:type="GstRTSPRange"/>
      </field>
      <field name="server_port" writable="1">
        <doc xml:space="preserve">the server port pair for receiving data. For TCP
  based transports, applications can use this field to store the
  sender and receiver ports of the server.</doc>
        <type name="RTSPRange" c:type="GstRTSPRange"/>
      </field>
      <field name="ssrc" writable="1">
        <doc xml:space="preserve">the ssrc that the sender/receiver will use</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <method name="as_text" c:identifier="gst_rtsp_transport_as_text">
        <doc xml:space="preserve">Convert @transport into a string that can be used to signal the transport in
an RTSP SETUP response.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string describing the RTSP transport or #NULL when the transport
is invalid.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_rtsp_transport_free">
        <doc xml:space="preserve">Free the memory used by @transport.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_media_type"
              c:identifier="gst_rtsp_transport_get_media_type"
              version="1.4">
        <doc xml:space="preserve">Get the media type of @transport. This media type is typically
used to generate #GstCaps events.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
          </instance-parameter>
          <parameter name="media_type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">media type of @transport</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gst_rtsp_transport_init">
        <doc xml:space="preserve">Initialize @transport so that it can be used.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="get_manager"
                c:identifier="gst_rtsp_transport_get_manager">
        <doc xml:space="preserve">Get the #GstElement that can handle the buffers transported over @trans.

It is possible that there are several managers available, use @option to
selected one.

@manager will contain an element name or #NULL when no manager is
needed/available for @trans.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="trans" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransMode</doc>
            <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
          </parameter>
          <parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve">location to hold the result</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="option" transfer-ownership="none">
            <doc xml:space="preserve">option index.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_mime"
                c:identifier="gst_rtsp_transport_get_mime"
                deprecated="1">
        <doc xml:space="preserve">Get the mime type of the transport mode @trans. This mime type is typically
used to generate #GstCaps events.</doc>
        <doc-deprecated xml:space="preserve">This functions only deals with the GstRTSPTransMode and only
   returns the mime type for #GST_RTSP_PROFILE_AVP. Use
   gst_rtsp_transport_get_media_type() instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="trans" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransMode</doc>
            <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
          </parameter>
          <parameter name="mime" transfer-ownership="none">
            <doc xml:space="preserve">location to hold the result</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </function>
      <function name="new" c:identifier="gst_rtsp_transport_new">
        <doc xml:space="preserve">Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
after usage.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">location to hold the new #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse" c:identifier="gst_rtsp_transport_parse">
        <doc xml:space="preserve">Parse the RTSP transport string @str into @transport.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a transport string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="transport" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPTransport</doc>
            <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="RTSPUrl"
            c:type="GstRTSPUrl"
            glib:type-name="GstRTSPUrl"
            glib:get-type="gst_rtsp_url_get_type"
            c:symbol-prefix="rtsp_url">
      <doc xml:space="preserve">Provides helper functions to handle RTSP urls.</doc>
      <field name="transports" writable="1">
        <doc xml:space="preserve">the transports allowed</doc>
        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
      </field>
      <field name="family" writable="1">
        <doc xml:space="preserve">the family</doc>
        <type name="RTSPFamily" c:type="GstRTSPFamily"/>
      </field>
      <field name="user" writable="1">
        <doc xml:space="preserve">the user</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="passwd" writable="1">
        <doc xml:space="preserve">the password</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="host" writable="1">
        <doc xml:space="preserve">the host</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="port" writable="1">
        <doc xml:space="preserve">the port</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="abspath" writable="1">
        <doc xml:space="preserve">the absolute path</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="query" writable="1">
        <doc xml:space="preserve">additional query parameters</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy" c:identifier="gst_rtsp_url_copy">
        <doc xml:space="preserve">Make a copy of @url.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a copy of @url. Free with gst_rtsp_url_free () after usage.</doc>
          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="decode_path_components"
              c:identifier="gst_rtsp_url_decode_path_components">
        <doc xml:space="preserve">Splits the path of @url on '/' boundaries, decoding the resulting components,

The decoding performed by this routine is "URI decoding", as defined in RFC
3986, commonly known as percent-decoding. For example, a string "foo\%2fbar"
will decode to "foo/bar" -- the \%2f being replaced by the corresponding byte
with hex value 0x2f. Note that there is no guarantee that the resulting byte
sequence is valid in any given encoding. As a special case, \%00 is not
unescaped to NUL, as that would prematurely terminate the string.

Also note that since paths usually start with a slash, the first component
will usually be the empty string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">%NULL-terminated array of URL components. Free with
g_strfreev() when no longer needed.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_rtsp_url_free">
        <doc xml:space="preserve">Free the memory used by @url.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_port" c:identifier="gst_rtsp_url_get_port">
        <doc xml:space="preserve">Get the port number of @url.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve">location to hold the port</doc>
            <type name="guint16" c:type="guint16*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_request_uri"
              c:identifier="gst_rtsp_url_get_request_uri">
        <doc xml:space="preserve">Get a newly allocated string describing the request URI for @url.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string with the request URI. g_free() after usage.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_port" c:identifier="gst_rtsp_url_set_port">
        <doc xml:space="preserve">Set the port number in @url to @port.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPUrl</doc>
            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve">the port</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <function name="parse" c:identifier="gst_rtsp_url_parse">
        <doc xml:space="preserve">Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
with gst_rtsp_url_free().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <parameter name="urlstr" transfer-ownership="none">
            <doc xml:space="preserve">the url string to parse</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="url"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to hold the result.</doc>
            <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="RTSPVersion"
                 glib:type-name="GstRTSPVersion"
                 glib:get-type="gst_rtsp_version_get_type"
                 c:type="GstRTSPVersion">
      <doc xml:space="preserve">The supported RTSP versions.</doc>
      <member name="invalid"
              value="0"
              c:identifier="GST_RTSP_VERSION_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">unknown/invalid version</doc>
      </member>
      <member name="1_0"
              value="16"
              c:identifier="GST_RTSP_VERSION_1_0"
              glib:nick="1-0">
        <doc xml:space="preserve">version 1.0</doc>
      </member>
      <member name="1_1"
              value="17"
              c:identifier="GST_RTSP_VERSION_1_1"
              glib:nick="1-1">
        <doc xml:space="preserve">version 1.1.</doc>
      </member>
      <function name="as_text" c:identifier="gst_rtsp_version_as_text">
        <doc xml:space="preserve">Convert @version to a string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a string representation of @version.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPVersion</doc>
            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <record name="RTSPWatch" c:type="GstRTSPWatch" disguised="1">
      <doc xml:space="preserve">Opaque RTSP watch object that can be used for asynchronous RTSP
operations.</doc>
      <method name="attach" c:identifier="gst_rtsp_watch_attach">
        <doc xml:space="preserve">Adds a #GstRTSPWatch to a context so that it will be executed within that context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the ID (greater than 0) for the watch within the GMainContext.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve">a GMainContext (if NULL, the default context will be used)</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_send_backlog"
              c:identifier="gst_rtsp_watch_get_send_backlog"
              version="1.2">
        <doc xml:space="preserve">Get the maximum amount of bytes and messages that will be queued in @watch.
See gst_rtsp_watch_set_send_backlog().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="bytes"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">maximum bytes</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="messages"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">maximum messages</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="gst_rtsp_watch_reset">
        <doc xml:space="preserve">Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel()
when the file descriptors of the connection might have changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_message" c:identifier="gst_rtsp_watch_send_message">
        <doc xml:space="preserve">Send a @message using the connection of the @watch. If it cannot be sent
immediately, it will be queued for transmission in @watch. The contents of
@message will then be serialized and transmitted when the connection of the
@watch becomes writable. In case the @message is queued, the ID returned in
@id will be non-zero and used as the ID argument in the message_sent
callback.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPMessage</doc>
            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
          </parameter>
          <parameter name="id"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location for a message ID or %NULL</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_flushing"
              c:identifier="gst_rtsp_watch_set_flushing"
              version="1.4">
        <doc xml:space="preserve">When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog()
and make sure gst_rtsp_watch_write_data() returns immediately with
#GST_RTSP_EINTR. And empty the queue.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="flushing" transfer-ownership="none">
            <doc xml:space="preserve">new flushing state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_send_backlog"
              c:identifier="gst_rtsp_watch_set_send_backlog"
              version="1.2">
        <doc xml:space="preserve">Set the maximum amount of bytes and messages that will be queued in @watch.
When the maximum amounts are exceeded, gst_rtsp_watch_write_data() and
gst_rtsp_watch_send_message() will return #GST_RTSP_ENOMEM.

A value of 0 for @bytes or @messages means no limits.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve">maximum bytes</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="messages" transfer-ownership="none">
            <doc xml:space="preserve">maximum messages</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="gst_rtsp_watch_unref">
        <doc xml:space="preserve">Decreases the reference count of @watch by one. If the resulting reference
count is zero the watch and associated memory will be destroyed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="wait_backlog"
              c:identifier="gst_rtsp_watch_wait_backlog"
              version="1.4">
        <doc xml:space="preserve">Wait until there is place in the backlog queue, @timeout is reached
or @watch is set to flushing.

If @timeout is %NULL this function can block forever. If @timeout
contains a valid timeout, this function will return %GST_RTSP_ETIMEOUT
after the timeout expired.

The typically use of this function is when gst_rtsp_watch_write_data
returns %GST_RTSP_ENOMEM. The caller then calls this function to wait for
free space in the backlog queue and try again.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%GST_RTSP_OK when if there is room in queue.
         %GST_RTSP_ETIMEOUT when @timeout was reached.
         %GST_RTSP_EINTR when @watch is flushing
         %GST_RTSP_EINVAL when called with invalid parameters.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve">a #GTimeVal timeout</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_data" c:identifier="gst_rtsp_watch_write_data">
        <doc xml:space="preserve">Write @data using the connection of the @watch. If it cannot be sent
immediately, it will be queued for transmission in @watch. The contents of
@message will then be serialized and transmitted when the connection of the
@watch becomes writable. In case the @message is queued, the ID returned in
@id will be non-zero and used as the ID argument in the message_sent
callback.

This function will take ownership of @data and g_free() it after use.

If the amount of queued data exceeds the limits set with
gst_rtsp_watch_set_send_backlog(), this function will return
#GST_RTSP_ENOMEM.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GST_RTSP_OK on success. #GST_RTSP_ENOMEM when the backlog limits
are reached. #GST_RTSP_EINTR when @watch was flushing.</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="watch" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPWatch</doc>
            <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="full">
            <doc xml:space="preserve">the data to queue</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">the size of @data</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="id"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">location for a message ID or %NULL</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="gst_rtsp_watch_new"
                introspectable="0">
        <doc xml:space="preserve">Create a watch object for @conn. The functions provided in @funcs will be
called with @user_data when activity happened on the watch.

The new watch is usually created so that it can be attached to a
maincontext with gst_rtsp_watch_attach().

@conn must exist for the entire lifetime of the watch.</doc>
        <return-value>
          <doc xml:space="preserve">a #GstRTSPWatch that can be used for asynchronous RTSP
communication. Free with gst_rtsp_watch_unref () after usage.</doc>
          <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
        </return-value>
        <parameters>
          <parameter name="conn" transfer-ownership="none">
            <doc xml:space="preserve">a #GstRTSPConnection</doc>
            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
          </parameter>
          <parameter name="funcs" transfer-ownership="none">
            <doc xml:space="preserve">watch functions</doc>
            <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data to pass to @funcs</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">notify when @user_data is not referenced anymore</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs">
      <doc xml:space="preserve">Callback functions from a #GstRTSPWatch.</doc>
      <field name="message_received">
        <callback name="message_received">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="2">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="message_sent">
        <callback name="message_sent">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="2">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="closed">
        <callback name="closed">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="error">
        <callback name="error">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <type name="RTSPResult" c:type="GstRTSPResult"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="2">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tunnel_start">
        <callback name="tunnel_start">
          <return-value transfer-ownership="none">
            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tunnel_complete">
        <callback name="tunnel_complete">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="error_full">
        <callback name="error_full">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <type name="RTSPResult" c:type="GstRTSPResult"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tunnel_lost">
        <callback name="tunnel_lost">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tunnel_http_response">
        <callback name="tunnel_http_response">
          <return-value transfer-ownership="none">
            <type name="RTSPResult" c:type="GstRTSPResult"/>
          </return-value>
          <parameters>
            <parameter name="watch" transfer-ownership="none">
              <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
            </parameter>
            <parameter name="request" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="response" transfer-ownership="none">
              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="RTSP_DEFAULT_PORT"
              value="554"
              c:type="GST_RTSP_DEFAULT_PORT">
      <doc xml:space="preserve">The default RTSP port to connect to.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <function name="rtsp_connection_accept"
              c:identifier="gst_rtsp_connection_accept"
              moved-to="RTSPConnection.accept">
      <doc xml:space="preserve">Accept a new connection on @socket and create a new #GstRTSPConnection for
handling communication on new socket.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="socket" transfer-ownership="none">
          <doc xml:space="preserve">a socket</doc>
          <type name="Gio.Socket" c:type="GSocket*"/>
        </parameter>
        <parameter name="conn"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GCancellable to cancel the operation</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_connection_create"
              c:identifier="gst_rtsp_connection_create"
              moved-to="RTSPConnection.create">
      <doc xml:space="preserve">Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
The connection will not yet attempt to connect to @url, use
gst_rtsp_connection_connect().

A copy of @url will be made.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="url" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPUrl</doc>
          <type name="RTSPUrl" c:type="const GstRTSPUrl*"/>
        </parameter>
        <parameter name="conn"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_connection_create_from_socket"
              c:identifier="gst_rtsp_connection_create_from_socket"
              moved-to="RTSPConnection.create_from_socket">
      <doc xml:space="preserve">Create a new #GstRTSPConnection for handling communication on the existing
socket @socket. The @initial_buffer contains zero terminated data already
read from @socket which should be used before starting to read new data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK when @conn contains a valid connection.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="socket" transfer-ownership="none">
          <doc xml:space="preserve">a #GSocket</doc>
          <type name="Gio.Socket" c:type="GSocket*"/>
        </parameter>
        <parameter name="ip" transfer-ownership="none">
          <doc xml:space="preserve">the IP address of the other end</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="port" transfer-ownership="none">
          <doc xml:space="preserve">the port used by the other end</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="initial_buffer" transfer-ownership="none">
          <doc xml:space="preserve">data already read from @fd</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="conn"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">storage for a #GstRTSPConnection</doc>
          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_find_header_field"
              c:identifier="gst_rtsp_find_header_field">
      <doc xml:space="preserve">Convert @header to a #GstRTSPHeaderField.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPHeaderField for @header or #GST_RTSP_HDR_INVALID if the
header field is unknown.</doc>
        <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">a header string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_find_method" c:identifier="gst_rtsp_find_method">
      <doc xml:space="preserve">Convert @method to a #GstRTSPMethod.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPMethod for @method or #GST_RTSP_INVALID if the
method is unknown.</doc>
        <type name="RTSPMethod" c:type="GstRTSPMethod"/>
      </return-value>
      <parameters>
        <parameter name="method" transfer-ownership="none">
          <doc xml:space="preserve">a method</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_header_allow_multiple"
              c:identifier="gst_rtsp_header_allow_multiple">
      <doc xml:space="preserve">Check whether @field may appear multiple times in a message.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if multiple headers are allowed.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_header_as_text"
              c:identifier="gst_rtsp_header_as_text">
      <doc xml:space="preserve">Convert @field to a string.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a string representation of @field.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="field" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPHeaderField</doc>
          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_message_new"
              c:identifier="gst_rtsp_message_new"
              moved-to="RTSPMessage.new">
      <doc xml:space="preserve">Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="msg"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
          <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_message_new_data"
              c:identifier="gst_rtsp_message_new_data"
              moved-to="RTSPMessage.new_data">
      <doc xml:space="preserve">Create a new data #GstRTSPMessage with @channel and store the
result message in @msg. Free with gst_rtsp_message_free().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="msg"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
          <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
        </parameter>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve">the channel</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_message_new_request"
              c:identifier="gst_rtsp_message_new_request"
              moved-to="RTSPMessage.new_request">
      <doc xml:space="preserve">Create a new #GstRTSPMessage with @method and @uri and store the result
request message in @msg. Free with gst_rtsp_message_free().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="msg"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
          <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
        </parameter>
        <parameter name="method" transfer-ownership="none">
          <doc xml:space="preserve">the request method to use</doc>
          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve">the uri of the request</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_message_new_response"
              c:identifier="gst_rtsp_message_new_response"
              moved-to="RTSPMessage.new_response">
      <doc xml:space="preserve">Create a new response #GstRTSPMessage with @code and @reason and store the
result message in @msg. Free with gst_rtsp_message_free().

When @reason is #NULL, the default reason for @code will be used.

When @request is not #NULL, the relevant headers will be copied to the new
response message.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="msg"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">a location for the new #GstRTSPMessage</doc>
          <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
        </parameter>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve">the status code</doc>
          <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
        </parameter>
        <parameter name="reason"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">the status reason or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="request"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">the request that triggered the response or %NULL</doc>
          <type name="RTSPMessage" c:type="const GstRTSPMessage*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_method_as_text"
              c:identifier="gst_rtsp_method_as_text"
              moved-to="RTSPMethod.as_text">
      <doc xml:space="preserve">Convert @method to a string.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a string representation of @method.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="method" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPMethod</doc>
          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_options_as_text"
              c:identifier="gst_rtsp_options_as_text">
      <doc xml:space="preserve">Convert @options to a string.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string of @options. g_free() after usage.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve">one or more #GstRTSPMethod</doc>
          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_options_from_text"
              c:identifier="gst_rtsp_options_from_text"
              version="1.2">
      <doc xml:space="preserve">Convert the comma separated list @options to a #GstRTSPMethod bitwise or
of methods. This functions is the reverse of gst_rtsp_options_as_text().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPMethod</doc>
        <type name="RTSPMethod" c:type="GstRTSPMethod"/>
      </return-value>
      <parameters>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve">a comma separated list of options</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_range_convert_units"
              c:identifier="gst_rtsp_range_convert_units"
              moved-to="RTSPRange.convert_units">
      <doc xml:space="preserve">Converts the range in-place between different types of units.
Ranges containing the special value #GST_RTSP_TIME_NOW can not be
converted as these are only valid for #GST_RTSP_RANGE_NPT.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the range could be converted</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="range" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
        </parameter>
        <parameter name="unit" transfer-ownership="none">
          <doc xml:space="preserve">the unit to convert the range into</doc>
          <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_range_free"
              c:identifier="gst_rtsp_range_free"
              moved-to="RTSPRange.free">
      <doc xml:space="preserve">Free the memory allocated by @range.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="range" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_range_get_times"
              c:identifier="gst_rtsp_range_get_times"
              moved-to="RTSPRange.get_times"
              version="1.2">
      <doc xml:space="preserve">Retrieve the minimum and maximum values from @range converted to
#GstClockTime in @min and @max.

A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW
and #GST_RTSP_TIME_END for @min and @max respectively.

UTC times will be converted to nanoseconds since 1900.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE on success.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="range" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
          <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
        </parameter>
        <parameter name="min" transfer-ownership="none">
          <doc xml:space="preserve">result minimum #GstClockTime</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
        <parameter name="max" transfer-ownership="none">
          <doc xml:space="preserve">result maximum #GstClockTime</doc>
          <type name="Gst.ClockTime" c:type="GstClockTime*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_range_parse"
              c:identifier="gst_rtsp_range_parse"
              moved-to="RTSPRange.parse">
      <doc xml:space="preserve">Parse @rangestr to a #GstRTSPTimeRange.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK on success.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="rangestr" transfer-ownership="none">
          <doc xml:space="preserve">a range string to parse</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="range" transfer-ownership="none">
          <doc xml:space="preserve">location to hold the #GstRTSPTimeRange result</doc>
          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_range_to_string"
              c:identifier="gst_rtsp_range_to_string"
              moved-to="RTSPRange.to_string">
      <doc xml:space="preserve">Convert @range into a string representation.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">The string representation of @range. g_free() after usage.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="range" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTimeRange</doc>
          <type name="RTSPTimeRange" c:type="const GstRTSPTimeRange*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_status_as_text"
              c:identifier="gst_rtsp_status_as_text">
      <doc xml:space="preserve">Convert @code to a string.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a string representation of @code.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPStatusCode</doc>
          <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_strresult" c:identifier="gst_rtsp_strresult">
      <doc xml:space="preserve">Convert @result in a human readable string.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated string. g_free() after usage.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPResult</doc>
          <type name="RTSPResult" c:type="GstRTSPResult"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_transport_get_manager"
              c:identifier="gst_rtsp_transport_get_manager"
              moved-to="RTSPTransport.get_manager">
      <doc xml:space="preserve">Get the #GstElement that can handle the buffers transported over @trans.

It is possible that there are several managers available, use @option to
selected one.

@manager will contain an element name or #NULL when no manager is
needed/available for @trans.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="trans" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTransMode</doc>
          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
        </parameter>
        <parameter name="manager" transfer-ownership="none">
          <doc xml:space="preserve">location to hold the result</doc>
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
        <parameter name="option" transfer-ownership="none">
          <doc xml:space="preserve">option index.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_transport_get_mime"
              c:identifier="gst_rtsp_transport_get_mime"
              moved-to="RTSPTransport.get_mime"
              deprecated="1">
      <doc xml:space="preserve">Get the mime type of the transport mode @trans. This mime type is typically
used to generate #GstCaps events.</doc>
      <doc-deprecated xml:space="preserve">This functions only deals with the GstRTSPTransMode and only
   returns the mime type for #GST_RTSP_PROFILE_AVP. Use
   gst_rtsp_transport_get_media_type() instead.</doc-deprecated>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#GST_RTSP_OK.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="trans" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTransMode</doc>
          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
        </parameter>
        <parameter name="mime" transfer-ownership="none">
          <doc xml:space="preserve">location to hold the result</doc>
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_transport_new"
              c:identifier="gst_rtsp_transport_new"
              moved-to="RTSPTransport.new">
      <doc xml:space="preserve">Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
after usage.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="transport" transfer-ownership="none">
          <doc xml:space="preserve">location to hold the new #GstRTSPTransport</doc>
          <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_transport_parse"
              c:identifier="gst_rtsp_transport_parse"
              moved-to="RTSPTransport.parse">
      <doc xml:space="preserve">Parse the RTSP transport string @str into @transport.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a transport string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="transport" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPTransport</doc>
          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_url_parse"
              c:identifier="gst_rtsp_url_parse"
              moved-to="RTSPUrl.parse">
      <doc xml:space="preserve">Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
with gst_rtsp_url_free().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GstRTSPResult.</doc>
        <type name="RTSPResult" c:type="GstRTSPResult"/>
      </return-value>
      <parameters>
        <parameter name="urlstr" transfer-ownership="none">
          <doc xml:space="preserve">the url string to parse</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="url"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">location to hold the result.</doc>
          <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_version_as_text"
              c:identifier="gst_rtsp_version_as_text"
              moved-to="RTSPVersion.as_text">
      <doc xml:space="preserve">Convert @version to a string.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a string representation of @version.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPVersion</doc>
          <type name="RTSPVersion" c:type="GstRTSPVersion"/>
        </parameter>
      </parameters>
    </function>
    <function name="rtsp_watch_new"
              c:identifier="gst_rtsp_watch_new"
              moved-to="RTSPWatch.new"
              introspectable="0">
      <doc xml:space="preserve">Create a watch object for @conn. The functions provided in @funcs will be
called with @user_data when activity happened on the watch.

The new watch is usually created so that it can be attached to a
maincontext with gst_rtsp_watch_attach().

@conn must exist for the entire lifetime of the watch.</doc>
      <return-value>
        <doc xml:space="preserve">a #GstRTSPWatch that can be used for asynchronous RTSP
communication. Free with gst_rtsp_watch_unref () after usage.</doc>
        <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
      </return-value>
      <parameters>
        <parameter name="conn" transfer-ownership="none">
          <doc xml:space="preserve">a #GstRTSPConnection</doc>
          <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
        </parameter>
        <parameter name="funcs" transfer-ownership="none">
          <doc xml:space="preserve">watch functions</doc>
          <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">user data to pass to @funcs</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="notify" transfer-ownership="none" scope="async">
          <doc xml:space="preserve">notify when @user_data is not referenced anymore</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
