diff --git a/Cargo.toml b/Cargo.toml
index af971d672..b3c358272 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,6 +7,9 @@ members = [
"gstreamer-base",
"gstreamer-net",
"gstreamer-player",
+ "gstreamer-rtsp",
+ "gstreamer-rtsp-server",
+ "gstreamer-sdp",
"gstreamer-video",
"examples",
"tutorials",
diff --git a/Gir_GstRtsp.toml b/Gir_GstRtsp.toml
new file mode 100644
index 000000000..5dc80946b
--- /dev/null
+++ b/Gir_GstRtsp.toml
@@ -0,0 +1,67 @@
+[options]
+girs_dir = "gir-files"
+library = "GstRtsp"
+version = "1.0"
+min_cfg_version = "1.8"
+target_path = "gstreamer-rtsp"
+work_mode = "normal"
+concurrency = "send+sync"
+generate_safety_asserts = true
+doc_target_path = "docs/gstreamer-rtsp/docs.md"
+
+external_libraries = [
+ "GLib",
+ "GObject",
+ "Gio",
+ "GstSdp"
+]
+
+generate = [
+ "GstRtsp.RTSPAuthMethod",
+ "GstRtsp.RTSPEvent",
+ "GstRtsp.RTSPFamily",
+ "GstRtsp.RTSPHeaderField",
+ "GstRtsp.RTSPLowerTrans",
+ "GstRtsp.RTSPMethod",
+ "GstRtsp.RTSPMsgType",
+ "GstRtsp.RTSPProfile",
+ "GstRtsp.RTSPRangeUnit",
+ "GstRtsp.RTSPResult",
+ "GstRtsp.RTSPState",
+ "GstRtsp.RTSPStatusCode",
+ "GstRtsp.RTSPTimeType",
+ "GstRtsp.RTSPTransMode"
+]
+
+manual = [
+ "GLib.MainContext",
+]
+
+[[object]]
+name = "GstRtsp.RTSPUrl"
+status = "generate"
+concurrency = "send"
+
+ [[object.function]]
+ name = "get_port"
+ ignore = true
+
+[[object]]
+name = "GstRtsp.RTSPAuthParam"
+status = "generate"
+concurrency="send"
+
+[[object]]
+name = "Gst.ClockTime"
+status = "manual"
+conversion_type = "scalar"
+
+[[object]]
+name = "Gst.Caps"
+status = "manual"
+ref_mode = "ref"
+
+[[object]]
+name = "Gst.Structure"
+status = "manual"
+ref_mode = "ref-mut"
diff --git a/Gir_GstRtspServer.toml b/Gir_GstRtspServer.toml
new file mode 100644
index 000000000..45ce5355e
--- /dev/null
+++ b/Gir_GstRtspServer.toml
@@ -0,0 +1,226 @@
+[options]
+girs_dir = "gir-files"
+library = "GstRtspServer"
+version = "1.0"
+min_cfg_version = "1.8"
+target_path = "gstreamer-rtsp-server"
+work_mode = "normal"
+concurrency = "send+sync"
+generate_safety_asserts = true
+doc_target_path = "docs/gstreamer-rtsp-server/docs.md"
+
+external_libraries = [
+ "GLib",
+ "GObject",
+ "Gio",
+ "Gst",
+ "GstNet",
+ "GstRtsp",
+ "GstSDP"
+]
+
+generate = [
+ "GstRtspServer.RTSPAddressFlags",
+ "GstRtspServer.RTSPAddressPoolResult",
+ "GstRtspServer.RTSPMediaFactory",
+ "GstRtspServer.RTSPMediaFactoryURI",
+ "GstRtspServer.RTSPMediaStatus",
+ "GstRtspServer.RTSPMountPoints",
+ "GstRtspServer.RTSPPublishClockMode",
+ "GstRtspServer.RTSPSession",
+ "GstRtspServer.RTSPSuspendMode",
+ "GstRtspServer.RTSPThreadPool",
+ "GstRtspServer.RTSPThreadType",
+ "GstRtspServer.RTSPTransportMode"
+]
+
+manual = [
+ "GLib.MainContext",
+ "GLib.IOCondition",
+ "GLib.Source",
+ "GLib.MainLoop",
+ "GLib.ThreadPool",
+ "GLib.Error",
+ "GObject.Object",
+ "Gio.TlsCertificateFlags",
+ "Gio.TlsCertificate",
+ "Gio.Socket",
+ "Gio.Cancellable",
+ "Gio.SocketFamily",
+ "Gst.Element",
+ "Gst.State",
+ "Gst.Clock",
+ "Gst.Pipeline",
+ "Gst.Pad",
+ "Gst.Bin",
+ "Gst.FlowReturn",
+ "GstRtsp.RTSPAuthMethod",
+ "GstRtsp.RTSPUrl",
+ "GstRtsp.RTSPResult",
+ "GstRtsp.RTSPStatusCode",
+ "GstRtsp.RTSPRangeUnit",
+ "GstRtsp.RTSPProfile",
+ "GstRtsp.RTSPLowerTrans"
+]
+
+[[object]]
+name = "Gst.Message"
+status = "manual"
+ref_mode = "ref"
+
+[[object]]
+name = "Gst.Structure"
+status = "manual"
+ref_mode = "ref-mut"
+
+[[object]]
+name = "Gst.Buffer"
+status = "manual"
+ref_mode = "ref"
+
+[[object]]
+name = "Gst.Caps"
+status = "manual"
+ref_mode = "ref"
+
+[[object]]
+name = "Gst.ClockTime"
+status = "manual"
+conversion_type = "scalar"
+
+[[object]]
+name = "GstRtspServer.RTSPServer"
+status = "generate"
+
+ [[object.function]]
+ name = "attach"
+ ignore = true
+
+[[object]]
+name = "GstRtspServer.RTSPClient"
+status = "generate"
+
+ [[object.function]]
+ name = "attach"
+ ignore = true
+
+[[object]]
+name = "GstRtspServer.RTSPStream"
+status = "generate"
+
+ [[object.function]]
+ name = "query_position"
+ ignore = true
+
+ [[object.function]]
+ name = "query_stop"
+ ignore = true
+
+ [[object.function]]
+ name = "add_transport"
+ [object.function.return]
+ bool_return_is_error = "Failed to add transport"
+
+ [[object.function]]
+ name = "remove_transport"
+ [object.function.return]
+ bool_return_is_error = "Failed to remove transport"
+
+ [[object.function]]
+ name = "join_bin"
+ [object.function.return]
+ bool_return_is_error = "Failed to join bin"
+
+ [[object.function]]
+ name = "leave_bin"
+ [object.function.return]
+ bool_return_is_error = "Failed to leave bin"
+
+[[object]]
+name = "GstRtspServer.RTSPAddress"
+status = "generate"
+concurrency = "send"
+
+[[object]]
+name = "GstRtspServer.RTSPStreamTransport"
+status = "generate"
+concurrency = "none"
+
+ [[object.function]]
+ name = "send_rtcp"
+ [object.function.return]
+ bool_return_is_error = "Failed to send rtcp"
+
+ [[object.function]]
+ name = "send_rtp"
+ [object.function.return]
+ bool_return_is_error = "Failed to send rtp"
+
+ [[object.function]]
+ name = "set_active"
+ [object.function.return]
+ bool_return_is_error = "Failed to set active"
+
+[[object]]
+name = "GstRtspServer.RTSPAddressPool"
+status = "generate"
+
+ [[object.function]]
+ name = "add_range"
+ [object.function.return]
+ bool_return_is_error = "Failed to add address range"
+
+ [[object.function]]
+ name = "reserve_address"
+ ignore = true
+
+[[object]]
+name = "GstRtspServer.RTSPMedia"
+status = "generate"
+
+ [[object.function]]
+ name = "suspend"
+ [object.function.return]
+ bool_return_is_error = "Failed to suspend media"
+
+ [[object.function]]
+ name = "unprepare"
+ [object.function.return]
+ bool_return_is_error = "Failed to unprepare media"
+
+ [[object.function]]
+ name = "unsuspend"
+ [object.function.return]
+ bool_return_is_error = "Failed to unsuspend media"
+
+[[object]]
+name = "GstRtspServer.RTSPSessionMedia"
+status = "generate"
+
+ [[object.function]]
+ name = "set_state"
+ [object.function.return]
+ bool_return_is_error = "Failed to set state of session media"
+
+[[object]]
+name = "GstRtspServer.RTSPSessionPool"
+status = "generate"
+
+ [[object.function]]
+ name = "remove"
+ [object.function.return]
+ bool_return_is_error = "Failed to remove session from pool"
+
+ [[object.function]]
+ name = "create_watch"
+ # GSource return
+ ignore = true
+
+[[object]]
+name="GstRtspServer.RTSPAuth"
+status="generate"
+
+ [[object.function]]
+ name = "make_basic"
+ [object.function.return]
+ nullable = false
diff --git a/Gir_GstSdp.toml b/Gir_GstSdp.toml
new file mode 100644
index 000000000..e8a589d82
--- /dev/null
+++ b/Gir_GstSdp.toml
@@ -0,0 +1,40 @@
+[options]
+girs_dir = "gir-files"
+library = "GstSdp"
+version = "1.0"
+min_cfg_version = "1.8"
+target_path = "gstreamer-sdp"
+work_mode = "normal"
+concurrency = "send+sync"
+generate_safety_asserts = true
+doc_target_path = "docs/gstreamer-sdp/docs.md"
+
+external_libraries = [
+ "GLib",
+ "GObject",
+ "Gst",
+]
+
+generate = [
+ "GstSdp.MIKEYCacheType",
+ "GstSdp.MIKEYEncAlg",
+ "GstSdp.MIKEYKVType",
+ "GstSdp.MIKEYKeyDataType",
+ "GstSdp.MIKEYMacAlg",
+ "GstSdp.MIKEYMapType",
+ "GstSdp.MIKEYPRFFunc",
+ "GstSdp.MIKEYPayloadType",
+ "GstSdp.MIKEYSecProto",
+ "GstSdp.MIKEYSecSRTP",
+ "GstSdp.MIKEYTSType",
+ "GstSdp.MIKEYType",
+ "GstSdp.SDPResult"
+]
+
+manual = [
+]
+
+[[object]]
+name = "Gst.Caps"
+status = "manual"
+ref_mode = "ref"
diff --git a/docs/gstreamer-rtsp-server/docs.md b/docs/gstreamer-rtsp-server/docs.md
new file mode 100644
index 000000000..c43da5ba1
--- /dev/null
+++ b/docs/gstreamer-rtsp-server/docs.md
@@ -0,0 +1,2539 @@
+
+
+An address
+
+Make a copy of `self`.
+
+# Returns
+
+a copy of `self`.
+
+Free `self` and releasing it back into the pool when owned by a
+pool.
+
+An address pool, all member are private
+
+# Implements
+
+[`RTSPAddressPoolExt`](trait.RTSPAddressPoolExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPAddressPool` methods.
+
+# Implementors
+
+[`RTSPAddressPool`](struct.RTSPAddressPool.html)
+
+Make a new `RTSPAddressPool`.
+
+# Returns
+
+a new `RTSPAddressPool`
+
+Take an address and ports from `self`. `flags` can be used to control the
+allocation. `n_ports` consecutive ports will be allocated of which the first
+one can be found in `port`.
+## `flags`
+flags
+## `n_ports`
+the amount of ports
+
+# Returns
+
+a `RTSPAddress` that should be freed with
+gst_rtsp_address_free after use or `None` when no address could be
+acquired.
+
+Adds the addresses from `min_addess` to `max_address` (inclusive)
+to `self`. The valid port range for the addresses will be from `min_port` to
+`max_port` inclusive.
+
+When `ttl` is 0, `min_address` and `max_address` should be unicast addresses.
+`min_address` and `max_address` can be set to
+`GST_RTSP_ADDRESS_POOL_ANY_IPV4` or `GST_RTSP_ADDRESS_POOL_ANY_IPV6` to bind
+to all available IPv4 or IPv6 addresses.
+
+When `ttl` > 0, `min_address` and `max_address` should be multicast addresses.
+## `min_address`
+a minimum address to add
+## `max_address`
+a maximum address to add
+## `min_port`
+the minimum port
+## `max_port`
+the maximum port
+## `ttl`
+a TTL or 0 for unicast addresses
+
+# Returns
+
+`true` if the addresses could be added.
+
+Clear all addresses in `self`. There should be no outstanding
+allocations.
+
+Dump the free and allocated addresses to stdout.
+
+Used to know if the pool includes any unicast addresses.
+
+# Returns
+
+`true` if the pool includes any unicast addresses, `false` otherwise
+
+Take a specific address and ports from `self`. `n_ports` consecutive
+ports will be allocated of which the first one can be found in
+`port`.
+
+If `ttl` is 0, `address` should be a unicast address. If `ttl` > 0, `address`
+should be a valid multicast address.
+## `ip_address`
+The IP address to reserve
+## `port`
+The first port to reserve
+## `n_ports`
+The number of ports
+## `ttl`
+The requested ttl
+## `address`
+storage for a `RTSPAddress`
+
+# Returns
+
+`RTSPAddressPoolResult::Ok` if an address was reserved. The address
+is returned in `address` and should be freed with gst_rtsp_address_free
+after use.
+
+Result codes from RTSP address pool functions.
+
+no error
+
+invalid arguments were provided to a function
+
+the addres has already been reserved
+
+the address is not in the pool
+
+last error
+
+The authentication structure.
+
+# Implements
+
+[`RTSPAuthExt`](trait.RTSPAuthExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPAuth` methods.
+
+# Implementors
+
+[`RTSPAuth`](struct.RTSPAuth.html)
+
+Create a new `RTSPAuth` instance.
+
+# Returns
+
+a new `RTSPAuth`
+
+Check if `check` is allowed in the current context.
+## `check`
+the item to check
+
+# Returns
+
+FALSE if check failed.
+
+Construct a Basic authorisation token from `user` and `pass`.
+## `user`
+a userid
+## `pass`
+a password
+
+# Returns
+
+the base64 encoding of the string `user`:`pass`.
+`g_free` after usage.
+
+Add a basic token for the default authentication algorithm that
+enables the client with privileges listed in `token`.
+## `basic`
+the basic token
+## `token`
+authorisation token
+
+Add a digest `user` and `pass` for the default authentication algorithm that
+enables the client with privileges listed in `token`.
+
+Feature: `v1_12`
+
+## `user`
+the digest user name
+## `pass`
+the digest password
+## `token`
+authorisation token
+
+Get the default token for `self`. This token will be used for unauthenticated
+users.
+
+# Returns
+
+the `RTSPToken` of `self`. `gst_rtsp_token_unref` after
+usage.
+
+Gets the supported authentication methods of `self`.
+
+Feature: `v1_12`
+
+
+# Returns
+
+The supported authentication methods
+
+Get the `gio::TlsAuthenticationMode`.
+
+# Returns
+
+the `gio::TlsAuthenticationMode`.
+
+Get the `gio::TlsCertificate` used for negotiating TLS `self`.
+
+# Returns
+
+the `gio::TlsCertificate` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Get the `gio::TlsDatabase` used for verifying client certificate.
+
+# Returns
+
+the `gio::TlsDatabase` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Removes `basic` authentication token.
+## `basic`
+the basic token
+
+Removes a digest user.
+
+Feature: `v1_12`
+
+## `user`
+the digest user name
+
+Set the default `RTSPToken` to `token` in `self`. The default token will
+be used for unauthenticated users.
+## `token`
+a `RTSPToken`
+
+Sets the supported authentication `methods` for `self`.
+
+Feature: `v1_12`
+
+## `methods`
+supported methods
+
+The `gio::TlsAuthenticationMode` to set on the underlying GTlsServerConnection.
+When set to another value than `gio::TlsAuthenticationMode::None`,
+`RTSPAuth::accept-certificate` signal will be emitted and must be handled.
+## `mode`
+a `gio::TlsAuthenticationMode`
+
+Set the TLS certificate for the auth. Client connections will only
+be accepted when TLS is negotiated.
+## `cert`
+a `gio::TlsCertificate`
+
+Sets the certificate database that is used to verify peer certificates.
+If set to `None` (the default), then peer certificate validation will always
+set the `gio::TlsCertificateFlags::UnknownCa` error.
+
+Since 1.6
+## `database`
+a `gio::TlsDatabase`
+
+Emitted during the TLS handshake after the client certificate has
+been received. See also `RTSPAuthExt::set_tls_authentication_mode`.
+## `connection`
+a `gio::TlsConnection`
+## `peer_cert`
+the peer's `gio::TlsCertificate`
+## `errors`
+the problems with `peer_cert`.
+
+# Returns
+
+`true` to accept `peer_cert` (which will also
+immediately end the signal emission). `false` to allow the signal
+emission to continue, which will cause the handshake to fail if
+no one else overrides it.
+
+The client object represents the connection and its state with a client.
+
+# Implements
+
+[`RTSPClientExt`](trait.RTSPClientExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPClient` methods.
+
+# Implementors
+
+[`RTSPClient`](struct.RTSPClient.html)
+
+Create a new `RTSPClient` instance.
+
+# Returns
+
+a new `RTSPClient`
+
+Attaches `self` to `context`. When the mainloop for `context` is run, the
+client will be dispatched. When `context` is `None`, the default context will be
+used).
+
+This function should be called when the client properties and urls are fully
+configured and the client is ready to start.
+## `context`
+a `glib::MainContext`
+
+# Returns
+
+the ID (greater than 0) for the source within the GMainContext.
+
+Close the connection of `self` and remove all media it was managing.
+
+Get the `RTSPAuth` used as the authentication manager of `self`.
+
+# Returns
+
+the `RTSPAuth` of `self`.
+`gobject::ObjectExt::unref` after usage.
+
+Get the `gst_rtsp::RTSPConnection` of `self`.
+
+# Returns
+
+the `gst_rtsp::RTSPConnection` of `self`.
+The connection object returned remains valid until the client is freed.
+
+Get the `RTSPMountPoints` object that `self` uses to manage its sessions.
+
+# Returns
+
+a `RTSPMountPoints`, unref after usage.
+
+Get the `RTSPSessionPool` object that `self` uses to manage its sessions.
+
+# Returns
+
+a `RTSPSessionPool`, unref after usage.
+
+Get the `RTSPThreadPool` used as the thread pool of `self`.
+
+# Returns
+
+the `RTSPThreadPool` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Let the client handle `message`.
+## `message`
+an `gst_rtsp::RTSPMessage`
+
+# Returns
+
+a `gst_rtsp::RTSPResult`.
+
+Send a message message to the remote end. `message` must be a
+`gst_rtsp::RTSPMsgType::Request` or a `gst_rtsp::RTSPMsgType::Response`.
+## `session`
+a `RTSPSession` to send
+ the message to or `None`
+## `message`
+The `gst_rtsp::RTSPMessage` to send
+
+Call `func` for each session managed by `self`. The result value of `func`
+determines what happens to the session. `func` will be called with `self`
+locked so no further actions on `self` can be performed from `func`.
+
+If `func` returns `RTSPFilterResult::Remove`, the session will be removed from
+`self`.
+
+If `func` returns `RTSPFilterResult::Keep`, the session will remain in `self`.
+
+If `func` returns `RTSPFilterResult::Ref`, the session will remain in `self` but
+will also be added with an additional ref to the result `glib::List` of this
+function..
+
+When `func` is `None`, `RTSPFilterResult::Ref` will be assumed for each session.
+## `func`
+a callback
+## `user_data`
+user data passed to `func`
+
+# Returns
+
+a `glib::List` with all
+sessions for which `func` returned `RTSPFilterResult::Ref`. After usage, each
+element in the `glib::List` should be unreffed before the list is freed.
+
+configure `auth` to be used as the authentication manager of `self`.
+## `auth`
+a `RTSPAuth`
+
+Set the `gst_rtsp::RTSPConnection` of `self`. This function takes ownership of
+`conn`.
+## `conn`
+a `gst_rtsp::RTSPConnection`
+
+# Returns
+
+`true` on success.
+
+Set `mounts` as the mount points for `self` which it will use to map urls
+to media streams. These mount points are usually inherited from the server that
+created the client but can be overriden later.
+## `mounts`
+a `RTSPMountPoints`
+
+Set `func` as the callback that will be called when a new message needs to be
+sent to the client. `user_data` is passed to `func` and `notify` is called when
+`user_data` is no longer in use.
+
+By default, the client will send the messages on the `gst_rtsp::RTSPConnection` that
+was configured with `RTSPClient::attach` was called.
+## `func`
+a `GstRTSPClientSendFunc`
+## `user_data`
+user data passed to `func`
+## `notify`
+called when `user_data` is no longer in use
+
+Set `pool` as the sessionpool for `self` which it will use to find
+or allocate sessions. the sessionpool is usually inherited from the server
+that created the client but can be overridden later.
+## `pool`
+a `RTSPSessionPool`
+
+configure `pool` to be used as the thread pool of `self`.
+## `pool`
+a `RTSPThreadPool`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+## `arr`
+a NULL-terminated array of strings
+
+# Returns
+
+a newly allocated string with comma-separated list of
+ unsupported options. An empty string must be returned if
+ all options are supported.
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+Feature: `v1_12`
+
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a `gst_rtsp::RTSPStatusCode`, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+## `ctx`
+a `RTSPContext`
+
+## `session`
+The session
+## `message`
+The message
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+## `ctx`
+a `RTSPContext`
+
+A class that contains the GStreamer element along with a list of
+`RTSPStream` objects that can produce data.
+
+This object is usually created from a `RTSPMediaFactory`.
+
+# Implements
+
+[`RTSPMediaExt`](trait.RTSPMediaExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPMedia` methods.
+
+# Implementors
+
+[`RTSPMedia`](struct.RTSPMedia.html)
+
+Create a new `RTSPMedia` instance. `element` is the bin element that
+provides the different streams. The `RTSPMedia` object contains the
+element to produce RTP data for one or more related (audio/video/..)
+streams.
+
+Ownership is taken of `element`.
+## `element`
+a `gst::Element`
+
+# Returns
+
+a new `RTSPMedia` object.
+
+Find all payloader elements, they should be named pay\%d in the
+element of `self`, and create `GstRTSPStreams` for them.
+
+Collect all dynamic elements, named dynpay\%d, and add them to
+the list of dynamic elements.
+
+Find all depayloader elements, they should be named depay\%d in the
+element of `self`, and create `GstRTSPStreams` for them.
+
+Create a new stream in `self` that provides RTP data on `pad`.
+`pad` should be a pad of an element inside `self`->element.
+## `payloader`
+a `gst::Element`
+## `pad`
+a `gst::Pad`
+
+# Returns
+
+a new `RTSPStream` that remains valid for as long
+as `self` exists.
+
+Find a stream in `self` with `control` as the control uri.
+## `control`
+the control of the stream
+
+# Returns
+
+the `RTSPStream` with
+control uri `control` or `None` when a stream with that control did
+not exist.
+
+Get the `RTSPAddressPool` used as the address pool of `self`.
+
+# Returns
+
+the `RTSPAddressPool` of `self`.
+`gobject::ObjectExt::unref` after usage.
+
+Get the base_time that is used by the pipeline in `self`.
+
+`self` must be prepared before this method returns a valid base_time.
+
+# Returns
+
+the base_time used by `self`.
+
+Get the kernel UDP buffer size.
+
+# Returns
+
+the kernel UDP buffer size.
+
+Get the clock that is used by the pipeline in `self`.
+
+`self` must be prepared before this method returns a valid clock object.
+
+# Returns
+
+the `gst::Clock` used by `self`. unref after usage.
+
+Get the element that was used when constructing `self`.
+
+# Returns
+
+a `gst::Element`. Unref after usage.
+
+Get the latency that is used for receiving media.
+
+# Returns
+
+latency in milliseconds
+
+Get the multicast interface used for `self`.
+
+# Returns
+
+the multicast interface for `self`.
+`g_free` after usage.
+
+Get the permissions object from `self`.
+
+# Returns
+
+a `RTSPPermissions` object, unref after usage.
+
+Get the allowed profiles of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPProfile`
+
+Get the allowed protocols of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPLowerTrans`
+
+Gets if and how the media clock should be published according to RFC7273.
+
+# Returns
+
+The GstRTSPPublishClockMode
+
+Get the current range as a string. `self` must be prepared with
+gst_rtsp_media_prepare ().
+## `play`
+for the PLAY request
+## `unit`
+the unit to use for the string
+
+# Returns
+
+The range as a string, `g_free` after usage.
+
+Get the amount of time to store retransmission data.
+
+# Returns
+
+the amount of time to store retransmission data.
+
+Get the status of `self`. When `self` is busy preparing, this function waits
+until `self` is prepared or in error.
+
+# Returns
+
+the status of `self`.
+
+Retrieve the stream with index `idx` from `self`.
+## `idx`
+the stream index
+
+# Returns
+
+the `RTSPStream` at index
+`idx` or `None` when a stream with that index did not exist.
+
+Get how `self` will be suspended.
+
+# Returns
+
+`RTSPSuspendMode`.
+
+Get the `gst_net::NetTimeProvider` for the clock used by `self`. The time provider
+will listen on `address` and `port` for client time requests.
+## `address`
+an address or `None`
+## `port`
+a port or 0
+
+# Returns
+
+the `gst_net::NetTimeProvider` of `self`.
+
+Check if the pipeline for `self` can be used for PLAY or RECORD methods.
+
+# Returns
+
+The transport mode.
+
+Configure an SDP on `self` for receiving streams
+## `sdp`
+a `gst_sdp::SDPMessage`
+
+# Returns
+
+TRUE on success.
+
+Check if the pipeline for `self` will send an EOS down the pipeline before
+unpreparing.
+
+# Returns
+
+`true` if the media will send EOS before unpreparing.
+
+Check if the pipeline for `self` can be reused after an unprepare.
+
+# Returns
+
+`true` if the media can be reused
+
+Check if the pipeline for `self` can be shared between multiple clients.
+
+# Returns
+
+`true` if the media can be shared between clients.
+
+Check if the pipeline for `self` will be stopped when a client disconnects
+without sending TEARDOWN.
+
+# Returns
+
+`true` if the media will be stopped when a client disconnects
+ without sending TEARDOWN.
+
+Check if `self` can provide a `gst_net::NetTimeProvider` for its pipeline clock.
+
+Use `RTSPMediaExt::get_time_provider` to get the network clock.
+
+# Returns
+
+`true` if `self` can provide a `gst_net::NetTimeProvider`.
+
+Get the number of streams in this media.
+
+# Returns
+
+The number of streams.
+
+Prepare `self` for streaming. This function will create the objects
+to manage the streaming. A pipeline must have been set on `self` with
+`RTSPMediaExt::take_pipeline`.
+
+It will preroll the pipeline and collect vital information about the streams
+such as the duration.
+## `thread`
+a `RTSPThread` to run the
+ bus handler or `None`
+
+# Returns
+
+`true` on success.
+
+Seek the pipeline of `self` to `range`. `self` must be prepared with
+`RTSPMediaExt::prepare`.
+## `range`
+a `gst_rtsp::RTSPTimeRange`
+
+# Returns
+
+`true` on success.
+
+configure `pool` to be used as the address pool of `self`.
+## `pool`
+a `RTSPAddressPool`
+
+Set the kernel UDP buffer size.
+## `size`
+the new value
+
+Configure the clock used for the media.
+## `clock`
+`gst::Clock` to be used
+
+Set or unset if an EOS event will be sent to the pipeline for `self` before
+it is unprepared.
+## `eos_shutdown`
+the new value
+
+Configure the latency used for receiving media.
+## `latency`
+latency in milliseconds
+
+configure `multicast_iface` to be used for `self`.
+## `multicast_iface`
+a multicast interface name
+
+Set `permissions` on `self`.
+## `permissions`
+a `RTSPPermissions`
+
+Set the state of the pipeline managed by `self` to `state`
+## `state`
+the target state of the pipeline
+
+Configure the allowed lower transport for `self`.
+## `profiles`
+the new flags
+
+Configure the allowed lower transport for `self`.
+## `protocols`
+the new flags
+
+Sets if and how the media clock should be published according to RFC7273.
+## `mode`
+the clock publish mode
+
+Set the amount of time to store retransmission packets.
+## `time`
+the new value
+
+Set or unset if the pipeline for `self` can be reused after the pipeline has
+been unprepared.
+## `reusable`
+the new value
+
+Set or unset if the pipeline for `self` can be shared will multiple clients.
+When `shared` is `true`, client requests for this media will share the media
+pipeline.
+## `shared`
+the new value
+
+Set the state of `self` to `state` and for the transports in `transports`.
+
+`self` must be prepared with `RTSPMediaExt::prepare`;
+## `state`
+the target state of the media
+## `transports`
+
+a `glib::PtrArray` of `RTSPStreamTransport` pointers
+
+# Returns
+
+`true` on success.
+
+Set or unset if the pipeline for `self` should be stopped when a
+client disconnects without sending TEARDOWN.
+## `stop_on_disconnect`
+the new value
+
+Control how @ media will be suspended after the SDP has been generated and
+after a PAUSE request has been performed.
+
+Media must be unprepared when setting the suspend mode.
+## `mode`
+the new `RTSPSuspendMode`
+
+Sets if the media pipeline can work in PLAY or RECORD mode
+## `mode`
+the new value
+
+Add `self` specific info to `sdp`. `info` is used to configure the connection
+information in the SDP.
+## `sdp`
+a `gst_sdp::SDPMessage`
+## `info`
+a `SDPInfo`
+
+# Returns
+
+TRUE on success.
+
+Suspend `self`. The state of the pipeline managed by `self` is set to
+GST_STATE_NULL but all streams are kept. `self` can be prepared again
+with `RTSPMediaExt::unsuspend`
+
+`self` must be prepared with `RTSPMediaExt::prepare`;
+
+# Returns
+
+`true` on success.
+
+Set `pipeline` as the `gst::Pipeline` for `self`. Ownership is
+taken of `pipeline`.
+## `pipeline`
+a `gst::Pipeline`
+
+Unprepare `self`. After this call, the media should be prepared again before
+it can be used again. If the media is set to be non-reusable, a new instance
+must be created.
+
+# Returns
+
+`true` on success.
+
+Unsuspend `self` if it was in a suspended state. This method does nothing
+when the media was not in the suspended state.
+
+# Returns
+
+`true` on success.
+
+Set `self` to provide a `gst_net::NetTimeProvider`.
+## `time_provider`
+if a `gst_net::NetTimeProvider` should be used
+
+The definition and logic for constructing the pipeline for a media. The media
+can contain multiple streams like audio and video.
+
+# Implements
+
+[`RTSPMediaFactoryExt`](trait.RTSPMediaFactoryExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPMediaFactory` methods.
+
+# Implementors
+
+[`RTSPMediaFactoryURI`](struct.RTSPMediaFactoryURI.html), [`RTSPMediaFactory`](struct.RTSPMediaFactory.html)
+
+Create a new `RTSPMediaFactory` instance.
+
+# Returns
+
+a new `RTSPMediaFactory` object.
+
+A convenience method to add `role` with `fieldname` and additional arguments to
+the permissions of `self`. If `self` had no permissions, new permissions
+will be created and the role will be added to it.
+## `role`
+a role
+## `fieldname`
+the first field name
+
+Construct the media object and create its streams. Implementations
+should create the needed gstreamer elements and add them to the result
+object. No state changes should be performed on them yet.
+
+One or more GstRTSPStream objects should be created from the result
+with gst_rtsp_media_create_stream ().
+
+After the media is constructed, it can be configured and then prepared
+with gst_rtsp_media_prepare ().
+## `url`
+the url used
+
+# Returns
+
+a new `RTSPMedia` if the media could be prepared.
+
+Construct and return a `gst::Element` that is a `gst::Bin` containing
+the elements to use for streaming the media.
+
+The bin should contain payloaders pay\%d for each stream. The default
+implementation of this function returns the bin created from the
+launch parameter.
+## `url`
+the url used
+
+# Returns
+
+a new `gst::Element`.
+
+Get the `RTSPAddressPool` used as the address pool of `self`.
+
+# Returns
+
+the `RTSPAddressPool` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Get the kernel UDP buffer size.
+
+# Returns
+
+the kernel UDP buffer size.
+
+Returns the clock that is going to be used by the pipelines
+of all medias created from this factory.
+
+# Returns
+
+The GstClock
+
+Get the latency that is used for receiving media
+
+# Returns
+
+latency in milliseconds
+
+Get the `gst_parse_launch` pipeline description that will be used in the
+default prepare vmethod.
+
+# Returns
+
+the configured launch description. `g_free` after
+usage.
+
+Return the GType of the GstRTSPMedia subclass this
+factory will create.
+
+Get the multicast interface used for `self`.
+
+# Returns
+
+the multicast interface for `self`. `g_free` after
+usage.
+
+Get the permissions object from `self`.
+
+# Returns
+
+a `RTSPPermissions` object, unref after usage.
+
+Get the allowed profiles of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPProfile`
+
+Get the allowed protocols of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPLowerTrans`
+
+Gets if and how the media clock should be published according to RFC7273.
+
+# Returns
+
+The GstRTSPPublishClockMode
+
+Get the time that is stored for retransmission purposes
+
+# Returns
+
+a `gst::ClockTime`
+
+Get how media created from this factory will be suspended.
+
+# Returns
+
+a `RTSPSuspendMode`.
+
+Get if media created from this factory can be used for PLAY or RECORD
+methods.
+
+# Returns
+
+The supported transport modes.
+
+Get if media created from this factory will have an EOS event sent to the
+pipeline before shutdown.
+
+# Returns
+
+`true` if the media will receive EOS before shutdown.
+
+Get if media created from this factory can be shared between clients.
+
+# Returns
+
+`true` if the media will be shared between clients.
+
+configure `pool` to be used as the address pool of `self`.
+## `pool`
+a `RTSPAddressPool`
+
+Set the kernel UDP buffer size.
+## `size`
+the new value
+
+Configures a specific clock to be used by the pipelines
+of all medias created from this factory.
+## `clock`
+the clock to be used by the media factory
+
+Configure if media created from this factory will have an EOS sent to the
+pipeline before shutdown.
+## `eos_shutdown`
+the new value
+
+Configure the latency used for receiving media
+## `latency`
+latency in milliseconds
+
+The `gst_parse_launch` line to use for constructing the pipeline in the
+default prepare vmethod.
+
+The pipeline description should return a GstBin as the toplevel element
+which can be accomplished by enclosing the description with brackets '('
+')'.
+
+The description should return a pipeline with payloaders named pay0, pay1,
+etc.. Each of the payloaders will result in a stream.
+## `launch`
+the launch description
+
+Configure the GType of the GstRTSPMedia subclass to
+create (by default, overridden construct vmethods
+may of course do something different)
+## `media_gtype`
+the GType of the class to create
+
+configure `multicast_iface` to be used for `self`.
+## `multicast_iface`
+a multicast interface name
+
+Set `permissions` on `self`.
+## `permissions`
+a `RTSPPermissions`
+
+Configure the allowed profiles for `self`.
+## `profiles`
+the new flags
+
+Configure the allowed lower transport for `self`.
+## `protocols`
+the new flags
+
+Sets if and how the media clock should be published according to RFC7273.
+## `mode`
+the clock publish mode
+
+Configure the time to store for possible retransmission
+## `time`
+a `gst::ClockTime`
+
+Configure if media created from this factory can be shared between clients.
+## `shared`
+the new value
+
+Configure if media created from this factory should be stopped
+when a client disconnects without sending TEARDOWN.
+## `stop_on_disconnect`
+the new value
+
+Configure how media created from this factory will be suspended.
+## `mode`
+the new `RTSPSuspendMode`
+
+Configure if this factory creates media for PLAY or RECORD modes.
+## `mode`
+the new value
+
+A media factory that creates a pipeline to play and uri.
+
+# Implements
+
+[`RTSPMediaFactoryURIExt`](trait.RTSPMediaFactoryURIExt.html), [`RTSPMediaFactoryExt`](trait.RTSPMediaFactoryExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPMediaFactoryURI` methods.
+
+# Implementors
+
+[`RTSPMediaFactoryURI`](struct.RTSPMediaFactoryURI.html)
+
+Create a new `RTSPMediaFactoryURI` instance.
+
+# Returns
+
+a new `RTSPMediaFactoryURI` object.
+
+Get the URI that will provide media for this factory.
+
+# Returns
+
+the configured URI. `g_free` after usage.
+
+Set the URI of the resource that will be streamed by this factory.
+## `uri`
+the uri the stream
+
+The state of the media pipeline.
+
+media pipeline not prerolled
+
+media pipeline is busy doing a clean
+ shutdown.
+
+media pipeline is prerolling
+
+media pipeline is prerolled
+
+media is suspended
+
+media pipeline is in error
+
+Creates a `RTSPMediaFactory` object for a given url.
+
+# Implements
+
+[`RTSPMountPointsExt`](trait.RTSPMountPointsExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPMountPoints` methods.
+
+# Implementors
+
+[`RTSPMountPoints`](struct.RTSPMountPoints.html)
+
+Make a new mount points object.
+
+# Returns
+
+a new `RTSPMountPoints`
+
+Attach `factory` to the mount point `path` in `self`.
+
+`path` is of the form (/node)+. Any previous mount point will be freed.
+
+Ownership is taken of the reference on `factory` so that `factory` should not be
+used after calling this function.
+## `path`
+a mount point
+## `factory`
+a `RTSPMediaFactory`
+
+Make a path string from `url`.
+## `url`
+a `gst_rtsp::RTSPUrl`
+
+# Returns
+
+a path string for `url`, `g_free` after usage.
+
+Find the factory in `self` that has the longest match with `path`.
+
+If `matched` is `None`, `path` will match the factory exactly otherwise
+the amount of characters that matched is returned in `matched`.
+## `path`
+a mount point
+## `matched`
+the amount of `path` matched
+
+# Returns
+
+the `RTSPMediaFactory` for `path`.
+`gobject::ObjectExt::unref` after usage.
+
+Remove the `RTSPMediaFactory` associated with `path` in `self`.
+## `path`
+a mount point
+
+Whether the clock and possibly RTP/clock offset should be published according to RFC7273.
+
+Publish nothing
+
+Publish the clock but not the offset
+
+Publish the clock and offset
+
+This object listens on a port, creates and manages the clients connected to
+it.
+
+# Implements
+
+[`RTSPServerExt`](trait.RTSPServerExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPServer` methods.
+
+# Implementors
+
+[`RTSPServer`](struct.RTSPServer.html)
+
+Create a new `RTSPServer` instance.
+
+# Returns
+
+a new `RTSPServer`
+
+A default `GSocketSourceFunc` that creates a new `RTSPClient` to accept and handle a
+new connection on `socket` or `server`.
+## `socket`
+a `gio::Socket`
+## `condition`
+the condition on `source`
+## `server`
+a `RTSPServer`
+
+# Returns
+
+TRUE if the source could be connected, FALSE if an error occurred.
+
+Attaches `self` to `context`. When the mainloop for `context` is run, the
+server will be dispatched. When `context` is `None`, the default context will be
+used).
+
+This function should be called when the server properties and urls are fully
+configured and the server is ready to start.
+
+This takes a reference on `self` until the source is destroyed. Note that
+if `context` is not the default main context as returned by
+`glib::MainContext::default` (or `None`), `glib::Source::remove` cannot be used to
+destroy the source. In that case it is recommended to use
+`RTSPServerExt::create_source` and attach it to `context` manually.
+## `context`
+a `glib::MainContext`
+
+# Returns
+
+the ID (greater than 0) for the source within the GMainContext.
+
+Call `func` for each client managed by `self`. The result value of `func`
+determines what happens to the client. `func` will be called with `self`
+locked so no further actions on `self` can be performed from `func`.
+
+If `func` returns `RTSPFilterResult::Remove`, the client will be removed from
+`self`.
+
+If `func` returns `RTSPFilterResult::Keep`, the client will remain in `self`.
+
+If `func` returns `RTSPFilterResult::Ref`, the client will remain in `self` but
+will also be added with an additional ref to the result `glib::List` of this
+function..
+
+When `func` is `None`, `RTSPFilterResult::Ref` will be assumed for each client.
+## `func`
+a callback
+## `user_data`
+user data passed to `func`
+
+# Returns
+
+a `glib::List` with all
+clients for which `func` returned `RTSPFilterResult::Ref`. After usage, each
+element in the `glib::List` should be unreffed before the list is freed.
+
+Create a `gio::Socket` for `self`. The socket will listen on the
+configured service.
+## `cancellable`
+a `gio::Cancellable`
+
+# Returns
+
+the `gio::Socket` for `self` or `None` when an error
+occurred.
+
+Create a `glib::Source` for `self`. The new source will have a default
+`GSocketSourceFunc` of `RTSPServer::io_func`.
+
+`cancellable` if not `None` can be used to cancel the source, which will cause
+the source to trigger, reporting the current condition (which is likely 0
+unless cancellation happened at the same time as a condition change). You can
+check for this in the callback using `gio::CancellableExt::is_cancelled`.
+
+This takes a reference on `self` until `source` is destroyed.
+## `cancellable`
+a `gio::Cancellable` or `None`.
+
+# Returns
+
+the `glib::Source` for `self` or `None` when an error
+occurred. Free with g_source_unref ()
+
+Get the address on which the server will accept connections.
+
+# Returns
+
+the server address. `g_free` after usage.
+
+Get the `RTSPAuth` used as the authentication manager of `self`.
+
+# Returns
+
+the `RTSPAuth` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+The maximum amount of queued requests for the server.
+
+# Returns
+
+the server backlog.
+
+Get the port number where the server was bound to.
+
+# Returns
+
+the port number
+
+Get the `RTSPMountPoints` used as the mount points of `self`.
+
+# Returns
+
+the `RTSPMountPoints` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Get the service on which the server will accept connections.
+
+# Returns
+
+the service. use `g_free` after usage.
+
+Get the `RTSPSessionPool` used as the session pool of `self`.
+
+# Returns
+
+the `RTSPSessionPool` used for sessions. `gobject::ObjectExt::unref` after
+usage.
+
+Get the `RTSPThreadPool` used as the thread pool of `self`.
+
+# Returns
+
+the `RTSPThreadPool` of `self`. `gobject::ObjectExt::unref` after
+usage.
+
+Configure `self` to accept connections on the given address.
+
+This function must be called before the server is bound.
+## `address`
+the address
+
+configure `auth` to be used as the authentication manager of `self`.
+## `auth`
+a `RTSPAuth`
+
+configure the maximum amount of requests that may be queued for the
+server.
+
+This function must be called before the server is bound.
+## `backlog`
+the backlog
+
+configure `mounts` to be used as the mount points of `self`.
+## `mounts`
+a `RTSPMountPoints`
+
+Configure `self` to accept connections on the given service.
+`service` should be a string containing the service name (see services(5)) or
+a string containing a port number between 1 and 65535.
+
+When `service` is set to "0", the server will listen on a random free
+port. The actual used port can be retrieved with
+`RTSPServerExt::get_bound_port`.
+
+This function must be called before the server is bound.
+## `service`
+the service
+
+configure `pool` to be used as the session pool of `self`.
+## `pool`
+a `RTSPSessionPool`
+
+configure `pool` to be used as the thread pool of `self`.
+## `pool`
+a `RTSPThreadPool`
+
+Take an existing network socket and use it for an RTSP connection. This
+is used when transferring a socket from an HTTP server which should be used
+as an RTSP over HTTP tunnel. The `initial_buffer` contains any remaining data
+that the HTTP server read from the socket while parsing the HTTP header.
+## `socket`
+a network socket
+## `ip`
+the IP address of the remote client
+## `port`
+the port used by the other end
+## `initial_buffer`
+any initial data that was already read from the socket
+
+# Returns
+
+TRUE if all was ok, FALSE if an error occurred.
+
+Session information kept by the server for a specific client.
+One client session, identified with a session id, can handle multiple medias
+identified with the url of a media.
+
+# Implements
+
+[`RTSPSessionExt`](trait.RTSPSessionExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPSession` methods.
+
+# Implementors
+
+[`RTSPSession`](struct.RTSPSession.html)
+
+Create a new `RTSPSession` instance with `sessionid`.
+## `sessionid`
+a session id
+
+# Returns
+
+a new `RTSPSession`
+
+Allow `self` to expire. This method must be called an equal
+amount of time as `RTSPSessionExt::prevent_expire`.
+
+Call `func` for each media in `self`. The result value of `func` determines
+what happens to the media. `func` will be called with `self`
+locked so no further actions on `self` can be performed from `func`.
+
+If `func` returns `RTSPFilterResult::Remove`, the media will be removed from
+`self`.
+
+If `func` returns `RTSPFilterResult::Keep`, the media will remain in `self`.
+
+If `func` returns `RTSPFilterResult::Ref`, the media will remain in `self` but
+will also be added with an additional ref to the result `glib::List` of this
+function..
+
+When `func` is `None`, `RTSPFilterResult::Ref` will be assumed for all media.
+## `func`
+a callback
+## `user_data`
+user data passed to `func`
+
+# Returns
+
+a GList with all
+media for which `func` returned `RTSPFilterResult::Ref`. After usage, each
+element in the `glib::List` should be unreffed before the list is freed.
+
+Get the string that can be placed in the Session header field.
+
+# Returns
+
+the Session header of `self`.
+`g_free` after usage.
+
+Get the session media for `path`. `matched` will contain the number of matched
+characters of `path`.
+## `path`
+the path for the media
+## `matched`
+the amount of matched characters
+
+# Returns
+
+the configuration for `path` in `self`.
+
+Get the sessionid of `self`.
+
+# Returns
+
+the sessionid of `self`.
+The value remains valid as long as `self` is alive.
+
+Get the timeout value of `self`.
+
+# Returns
+
+the timeout of `self` in seconds.
+
+Check if `self` timeout out.
+
+# Deprecated
+
+Use `RTSPSessionExt::is_expired_usec` instead.
+## `now`
+the current system time
+
+# Returns
+
+`true` if `self` timed out
+
+Check if `self` timeout out.
+## `now`
+the current monotonic time
+
+# Returns
+
+`true` if `self` timed out
+
+Manage the media object `obj` in `self`. `path` will be used to retrieve this
+media from the session with `RTSPSessionExt::get_media`.
+
+Ownership is taken from `media`.
+## `path`
+the path for the media
+## `media`
+a `RTSPMedia`
+
+# Returns
+
+a new `RTSPSessionMedia` object.
+
+Get the amount of milliseconds till the session will expire.
+
+# Deprecated
+
+Use `RTSPSessionExt::next_timeout_usec` instead.
+## `now`
+the current system time
+
+# Returns
+
+the amount of milliseconds since the session will time out.
+
+Get the amount of milliseconds till the session will expire.
+## `now`
+the current monotonic time
+
+# Returns
+
+the amount of milliseconds since the session will time out.
+
+Prevent `self` from expiring.
+
+Release the managed `media` in `self`, freeing the memory allocated by it.
+## `media`
+a `RTSPMedia`
+
+# Returns
+
+`true` if there are more media session left in `self`.
+
+Configure `self` for a timeout of `timeout` seconds. The session will be
+cleaned up when there is no activity for `timeout` seconds.
+## `timeout`
+the new timeout
+
+Update the last_access time of the session to the current time.
+
+State of a client session regarding a specific media identified by path.
+
+# Implements
+
+[`RTSPSessionMediaExt`](trait.RTSPSessionMediaExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPSessionMedia` methods.
+
+# Implementors
+
+[`RTSPSessionMedia`](struct.RTSPSessionMedia.html)
+
+Create a new `RTSPSessionMedia` that manages the streams
+in `media` for `path`. `media` should be prepared.
+
+Ownership is taken of `media`.
+## `path`
+the path
+## `media`
+the `RTSPMedia`
+
+# Returns
+
+a new `RTSPSessionMedia`.
+
+Fill `range` with the next available min and max channels for
+interleaved transport.
+## `range`
+a `gst_rtsp::RTSPRange`
+
+# Returns
+
+`true` on success.
+
+Get the base_time of the `RTSPMedia` in `self`
+
+# Returns
+
+the base_time of the media.
+
+Get the `RTSPMedia` that was used when constructing `self`
+
+# Returns
+
+the `RTSPMedia` of `self`.
+Remains valid as long as `self` is valid.
+
+Retrieve the RTP-Info header string for all streams in `self`
+with configured transports.
+
+# Returns
+
+The RTP-Info as a string or
+`None` when no RTP-Info could be generated, `g_free` after usage.
+
+Get the current RTSP state of `self`.
+
+# Returns
+
+the current RTSP state of `self`.
+
+Get a previously created `RTSPStreamTransport` for the stream at `idx`.
+## `idx`
+the stream index
+
+# Returns
+
+a `RTSPStreamTransport` that is
+valid until the session of `self` is unreffed.
+
+Check if the path of `self` matches `path`. It `path` matches, the amount of
+matched characters is returned in `matched`.
+## `path`
+a path
+## `matched`
+the amount of matched characters of `path`
+
+# Returns
+
+`true` when `path` matches the path of `self`.
+
+Set the RTSP state of `self` to `state`.
+## `state`
+a `gst_rtsp::RTSPState`
+
+Tell the media object `self` to change to `state`.
+## `state`
+the new state
+
+# Returns
+
+`true` on success.
+
+Configure the transport for `stream` to `tr` in `self`.
+## `stream`
+a `RTSPStream`
+## `tr`
+a `gst_rtsp::RTSPTransport`
+
+# Returns
+
+the new or updated `RTSPStreamTransport` for `stream`.
+
+An object that keeps track of the active sessions. This object is usually
+attached to a `RTSPServer` object to manage the sessions in that server.
+
+# Implements
+
+[`RTSPSessionPoolExt`](trait.RTSPSessionPoolExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPSessionPool` methods.
+
+# Implementors
+
+[`RTSPSessionPool`](struct.RTSPSessionPool.html)
+
+Create a new `RTSPSessionPool` instance.
+
+# Returns
+
+A new `RTSPSessionPool`. `gobject::ObjectExt::unref` after
+usage.
+
+Inspect all the sessions in `self` and remove the sessions that are inactive
+for more than their timeout.
+
+# Returns
+
+the amount of sessions that got removed.
+
+Create a new `RTSPSession` object in `self`.
+
+# Returns
+
+a new `RTSPSession`.
+
+Create a `glib::Source` that will be dispatched when the session should be cleaned
+up.
+
+# Returns
+
+a `glib::Source`
+
+Call `func` for each session in `self`. The result value of `func` determines
+what happens to the session. `func` will be called with the session pool
+locked so no further actions on `self` can be performed from `func`.
+
+If `func` returns `RTSPFilterResult::Remove`, the session will be set to the
+expired state with `gst_rtsp_session_set_expired` and removed from
+`self`.
+
+If `func` returns `RTSPFilterResult::Keep`, the session will remain in `self`.
+
+If `func` returns `RTSPFilterResult::Ref`, the session will remain in `self` but
+will also be added with an additional ref to the result GList of this
+function..
+
+When `func` is `None`, `RTSPFilterResult::Ref` will be assumed for all sessions.
+## `func`
+a callback
+## `user_data`
+user data passed to `func`
+
+# Returns
+
+a GList with all
+sessions for which `func` returned `RTSPFilterResult::Ref`. After usage, each
+element in the GList should be unreffed before the list is freed.
+
+Find the session with `sessionid` in `self`. The access time of the session
+will be updated with `RTSPSessionExt::touch`.
+## `sessionid`
+the session id
+
+# Returns
+
+the `RTSPSession` with `sessionid`
+or `None` when the session did not exist. `gobject::ObjectExt::unref` after usage.
+
+Get the maximum allowed number of sessions in `self`. 0 means an unlimited
+amount of sessions.
+
+# Returns
+
+the maximum allowed number of sessions.
+
+Get the amount of active sessions in `self`.
+
+# Returns
+
+the amount of active sessions in `self`.
+
+Remove `sess` from `self`, releasing the ref that the pool has on `sess`.
+## `sess`
+a `RTSPSession`
+
+# Returns
+
+`true` if the session was found and removed.
+
+Configure the maximum allowed number of sessions in `self` to `max`.
+A value of 0 means an unlimited amount of sessions.
+## `max`
+the maximum number of sessions
+
+The definition of a media stream.
+
+# Implements
+
+[`RTSPStreamExt`](trait.RTSPStreamExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPStream` methods.
+
+# Implementors
+
+[`RTSPStream`](struct.RTSPStream.html)
+
+Create a new media stream with index `idx` that handles RTP data on
+`pad` and has a payloader element `payloader` if `pad` is a source pad
+or a depayloader element `payloader` if `pad` is a sink pad.
+## `idx`
+an index
+## `payloader`
+a `gst::Element`
+## `pad`
+a `gst::Pad`
+
+# Returns
+
+a new `RTSPStream`
+
+Add the transport in `trans` to `self`. The media of `self` will
+then also be send to the values configured in `trans`.
+
+`self` must be joined to a bin.
+
+`trans` must contain a valid `gst_rtsp::RTSPTransport`.
+## `trans`
+a `RTSPStreamTransport`
+
+# Returns
+
+`true` if `trans` was added
+
+Allocates RTP and RTCP ports.
+
+# Deprecated
+
+This function shouldn't have been made public
+## `family`
+protocol family
+## `transport`
+transport method
+## `use_client_setttings`
+Whether to use client settings or not
+
+# Returns
+
+`true` if the RTP and RTCP sockets have been succeccully allocated.
+
+Get the `RTSPAddressPool` used as the address pool of `self`.
+
+# Returns
+
+the `RTSPAddressPool` of `self`.
+`gobject::ObjectExt::unref` after usage.
+
+Get the size of the UDP transmission buffer (in bytes)
+
+# Returns
+
+the size of the UDP TX buffer
+
+Retrieve the current caps of `self`.
+
+# Returns
+
+the `gst::Caps` of `self`.
+use `gst_caps_unref` after usage.
+
+Get the control string to identify this stream.
+
+# Returns
+
+the control string. `g_free` after usage.
+
+Get the configured DSCP QoS in of the outgoing sockets.
+
+# Returns
+
+the DSCP QoS value of the outgoing sockets, or -1 if disbled.
+
+Get the stream index.
+
+# Returns
+
+the stream index.
+
+Get the previous joined bin with `RTSPStreamExt::join_bin` or NULL.
+
+# Returns
+
+the joined bin or NULL.
+
+Get the configured MTU in the payloader of `self`.
+
+# Returns
+
+the MTU of the payloader.
+
+Get the multicast address of `self` for `family`. The original
+`RTSPAddress` is cached and copy is returned, so freeing the return value
+won't release the address from the pool.
+## `family`
+the `gio::SocketFamily`
+
+# Returns
+
+the `RTSPAddress` of `self`
+or `None` when no address could be allocated. `RTSPAddress::free`
+after usage.
+
+Get the multicast interface used for `self`.
+
+# Returns
+
+the multicast interface for `self`.
+`g_free` after usage.
+
+Get the allowed profiles of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPProfile`
+
+Get the allowed protocols of `self`.
+
+# Returns
+
+a `gst_rtsp::RTSPLowerTrans`
+
+Get the stream payload type.
+
+# Returns
+
+the stream payload type.
+
+Gets if and how the stream clock should be published according to RFC7273.
+
+# Returns
+
+The GstRTSPPublishClockMode
+
+Get the payload-type used for retransmission of this stream
+
+# Returns
+
+The retransmission PT.
+
+Get the amount of time to store retransmission data.
+
+# Returns
+
+the amount of time to store retransmission data.
+
+Get the RTCP socket from `self` for a `family`.
+
+`self` must be joined to a bin.
+## `family`
+the socket family
+
+# Returns
+
+the RTCP socket or `None` if no
+socket could be allocated for `family`. Unref after usage
+
+Get the RTP socket from `self` for a `family`.
+
+`self` must be joined to a bin.
+## `family`
+the socket family
+
+# Returns
+
+the RTP socket or `None` if no
+socket could be allocated for `family`. Unref after usage
+
+Retrieve the current rtptime, seq and running-time. This is used to
+construct a RTPInfo reply header.
+## `rtptime`
+result RTP timestamp
+## `seq`
+result RTP seqnum
+## `clock_rate`
+the clock rate
+## `running_time`
+result running-time
+
+# Returns
+
+`true` when rtptime, seq and running-time could be determined.
+
+Get the RTP session of this stream.
+
+# Returns
+
+The RTP session of this stream. Unref after usage.
+
+Fill `server_port` with the port pair used by the server. This function can
+only be called when `self` has been joined.
+## `server_port`
+result server port
+## `family`
+the port family to get
+
+Get the sinkpad associated with `self`.
+
+# Returns
+
+the sinkpad. Unref after usage.
+
+Get the srcpad associated with `self`.
+
+# Returns
+
+the srcpad. Unref after usage.
+
+Get the SRTP encoder for this stream.
+
+# Returns
+
+The SRTP encoder for this stream. Unref after usage.
+
+Get the SSRC used by the RTP session of this stream. This function can only
+be called when `self` has been joined.
+## `ssrc`
+result ssrc
+
+Check if `self` has the control string `control`.
+## `control`
+a control string
+
+# Returns
+
+`true` is `self` has `control` as the control string
+
+Check if `self` is blocking on a `gst::Buffer`.
+
+# Returns
+
+`true` if `self` is blocking
+
+See `RTSPStreamExt::set_client_side`
+
+# Returns
+
+TRUE if this `RTSPStream` is client-side.
+
+Check if `transport` can be handled by stream
+## `transport`
+a `gst_rtsp::RTSPTransport`
+
+# Returns
+
+`true` if `transport` can be handled by `self`.
+
+Join the `gst::Bin` `bin` that contains the element `rtpbin`.
+
+`self` will link to `rtpbin`, which must be inside `bin`. The elements
+added to `bin` will be set to the state given in `state`.
+## `bin`
+a `gst::Bin` to join
+## `rtpbin`
+a rtpbin element in `bin`
+## `state`
+the target state of the new elements
+
+# Returns
+
+`true` on success.
+
+Remove the elements of `self` from `bin`.
+## `bin`
+a `gst::Bin`
+## `rtpbin`
+a rtpbin `gst::Element`
+
+# Returns
+
+`true` on success.
+
+Query the position of the stream in `gst::Format::Time`. This only considers
+the RTP parts of the pipeline and not the RTCP parts.
+## `position`
+current position of a `RTSPStream`
+
+# Returns
+
+`true` if the position could be queried
+
+Query the stop of the stream in `gst::Format::Time`. This only considers
+the RTP parts of the pipeline and not the RTCP parts.
+## `stop`
+current stop of a `RTSPStream`
+
+# Returns
+
+`true` if the stop could be queried
+
+Handle an RTCP buffer for the stream. This method is usually called when a
+message has been received from a client using the TCP transport.
+
+This function takes ownership of `buffer`.
+## `buffer`
+a `gst::Buffer`
+
+# Returns
+
+a GstFlowReturn.
+
+Handle an RTP buffer for the stream. This method is usually called when a
+message has been received from a client using the TCP transport.
+
+This function takes ownership of `buffer`.
+## `buffer`
+a `gst::Buffer`
+
+# Returns
+
+a GstFlowReturn.
+
+Remove the transport in `trans` from `self`. The media of `self` will
+not be sent to the values configured in `trans`.
+
+`self` must be joined to a bin.
+
+`trans` must contain a valid `gst_rtsp::RTSPTransport`.
+## `trans`
+a `RTSPStreamTransport`
+
+# Returns
+
+`true` if `trans` was removed
+
+Creating a rtxsend bin
+## `sessid`
+the session id
+
+# Returns
+
+a `gst::Element`.
+
+Reserve `address` and `port` as the address and port of `self`. The original
+`RTSPAddress` is cached and copy is returned, so freeing the return value
+won't release the address from the pool.
+## `address`
+an address
+## `port`
+a port
+## `n_ports`
+n_ports
+## `ttl`
+a TTL
+
+# Returns
+
+the `RTSPAddress` of `self` or `None` when
+the address could be reserved. `RTSPAddress::free` after usage.
+
+configure `pool` to be used as the address pool of `self`.
+## `pool`
+a `RTSPAddressPool`
+
+Blocks or unblocks the dataflow on `self`.
+## `blocked`
+boolean indicating we should block or unblock
+
+# Returns
+
+`true` on success
+
+Set the size of the UDP transmission buffer (in bytes)
+Needs to be set before the stream is joined to a bin.
+## `size`
+the buffer size
+
+Sets the `RTSPStream` as a 'client side' stream - used for sending
+streams to an RTSP server via RECORD. This has the practical effect
+of changing which UDP port numbers are used when setting up the local
+side of the stream sending to be either the 'server' or 'client' pair
+of a configured UDP transport.
+## `client_side`
+TRUE if this `RTSPStream` is running on the 'client' side of
+an RTSP connection.
+
+Set the control string in `self`.
+## `control`
+a control string
+
+Configure the dscp qos of the outgoing sockets to `dscp_qos`.
+## `dscp_qos`
+a new dscp qos value (0-63, or -1 to disable)
+
+Configure the mtu in the payloader of `self` to `mtu`.
+## `mtu`
+a new MTU
+
+configure `multicast_iface` to be used for `self`.
+## `multicast_iface`
+a multicast interface name
+
+Configure the allowed profiles for `self`.
+## `profiles`
+the new profiles
+
+Configure the allowed lower transport for `self`.
+## `protocols`
+the new flags
+
+Configure a pt map between `pt` and `caps`.
+## `pt`
+the pt
+## `caps`
+a `gst::Caps`
+
+Sets if and how the stream clock should be published according to RFC7273.
+## `mode`
+the clock publish mode
+
+Set the payload type (pt) for retransmission of this stream.
+## `rtx_pt`
+a `guint`
+
+Set the amount of time to store retransmission packets.
+## `time`
+a `gst::ClockTime`
+
+Call `func` for each transport managed by `self`. The result value of `func`
+determines what happens to the transport. `func` will be called with `self`
+locked so no further actions on `self` can be performed from `func`.
+
+If `func` returns `RTSPFilterResult::Remove`, the transport will be removed from
+`self`.
+
+If `func` returns `RTSPFilterResult::Keep`, the transport will remain in `self`.
+
+If `func` returns `RTSPFilterResult::Ref`, the transport will remain in `self` but
+will also be added with an additional ref to the result `glib::List` of this
+function..
+
+When `func` is `None`, `RTSPFilterResult::Ref` will be assumed for each transport.
+## `func`
+a callback
+## `user_data`
+user data passed to `func`
+
+# Returns
+
+a `glib::List` with all
+transports for which `func` returned `RTSPFilterResult::Ref`. After usage, each
+element in the `glib::List` should be unreffed before the list is freed.
+
+Update the new crypto information for `ssrc` in `self`. If information
+for `ssrc` did not exist, it will be added. If information
+for `ssrc` existed, it will be replaced. If `crypto` is `None`, it will
+be removed from `self`.
+## `ssrc`
+the SSRC
+## `crypto`
+a `gst::Caps` with crypto info
+
+# Returns
+
+`true` if `crypto` could be updated
+
+A Transport description for a stream
+
+# Implements
+
+[`RTSPStreamTransportExt`](trait.RTSPStreamTransportExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPStreamTransport` methods.
+
+# Implementors
+
+[`RTSPStreamTransport`](struct.RTSPStreamTransport.html)
+
+Create a new `RTSPStreamTransport` that can be used to manage
+`stream` with transport `tr`.
+## `stream`
+a `RTSPStream`
+## `tr`
+a GstRTSPTransport
+
+# Returns
+
+a new `RTSPStreamTransport`
+
+Get the RTP-Info string for `self` and `start_time`.
+## `start_time`
+a star time
+
+# Returns
+
+the RTPInfo string for `self`
+and `start_time` or `None` when the RTP-Info could not be
+determined. `g_free` after usage.
+
+Get the `RTSPStream` used when constructing `self`.
+
+# Returns
+
+the stream used when constructing `self`.
+
+Get the transport configured in `self`.
+
+# Returns
+
+the transport configured in `self`. It remains
+valid for as long as `self` is valid.
+
+Get the url configured in `self`.
+
+# Returns
+
+the url configured in `self`.
+It remains valid for as long as `self` is valid.
+
+Check if `self` is timed out.
+
+# Returns
+
+`true` if `self` timed out.
+
+Signal the installed keep_alive callback for `self`.
+
+Receive `buffer` on `channel` `self`.
+## `channel`
+a channel
+## `buffer`
+a `gst::Buffer`
+
+# Returns
+
+a `gst::FlowReturn`. Returns GST_FLOW_NOT_LINKED when `channel` is not
+ configured in the transport of `self`.
+
+Send `buffer` to the installed RTCP callback for `self`.
+## `buffer`
+a `gst::Buffer`
+
+# Returns
+
+`true` on success
+
+Send `buffer` to the installed RTP callback for `self`.
+## `buffer`
+a `gst::Buffer`
+
+# Returns
+
+`true` on success
+
+Activate or deactivate datatransfer configured in `self`.
+## `active`
+new state of `self`
+
+# Returns
+
+`true` when the state was changed.
+
+Install callbacks that will be called when data for a stream should be sent
+to a client. This is usually used when sending RTP/RTCP over TCP.
+## `send_rtp`
+a callback called when RTP should be sent
+## `send_rtcp`
+a callback called when RTCP should be sent
+## `user_data`
+user data passed to callbacks
+## `notify`
+called with the user_data when no longer needed.
+
+Install callbacks that will be called when RTCP packets are received from the
+receiver of `self`.
+## `keep_alive`
+a callback called when the receiver is active
+## `user_data`
+user data passed to callback
+## `notify`
+called with the user_data when no longer needed.
+
+Set the timed out state of `self` to `timedout`
+## `timedout`
+timed out value
+
+Set `tr` as the client transport. This function takes ownership of the
+passed `tr`.
+## `tr`
+a client `gst_rtsp::RTSPTransport`
+
+Set `url` as the client url.
+## `url`
+a client `gst_rtsp::RTSPUrl`
+
+The suspend mode of the media pipeline. A media pipeline is suspended right
+after creating the SDP and when the client performs a PAUSED request.
+
+Media is not suspended
+
+Media is PAUSED in suspend
+
+The media is set to NULL when suspended
+
+The thread pool structure.
+
+# Implements
+
+[`RTSPThreadPoolExt`](trait.RTSPThreadPoolExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `RTSPThreadPool` methods.
+
+# Implementors
+
+[`RTSPThreadPool`](struct.RTSPThreadPool.html)
+
+Create a new `RTSPThreadPool` instance.
+
+# Returns
+
+a new `RTSPThreadPool`
+
+Wait for all tasks to be stopped and free all allocated resources. This is
+mainly used in test suites to ensure proper cleanup of internal data
+structures.
+
+Get the maximum number of threads used for client connections.
+See `RTSPThreadPoolExt::set_max_threads`.
+
+# Returns
+
+the maximum number of threads.
+
+Get a new `RTSPThread` for `type_` and `ctx`.
+## `type_`
+the `RTSPThreadType`
+## `ctx`
+a `RTSPContext`
+
+# Returns
+
+a new `RTSPThread`,
+`RTSPThread::stop` after usage
+
+Set the maximum threads used by the pool to handle client requests.
+A value of 0 will use the pool mainloop, a value of -1 will use an
+unlimited number of threads.
+## `max_threads`
+maximum threads
+
+Different thread types
+
+a thread to handle the client communication
+
+a thread to handle media
diff --git a/docs/gstreamer-rtsp/docs.md b/docs/gstreamer-rtsp/docs.md
new file mode 100644
index 000000000..4f18e3cc7
--- /dev/null
+++ b/docs/gstreamer-rtsp/docs.md
@@ -0,0 +1,172 @@
+
+
+Authentication methods, ordered by strength
+
+no authentication
+
+basic authentication
+
+digest authentication
+
+
+The possible network families.
+
+unknown network family
+
+internet
+
+internet V6
+
+Enumeration of rtsp header fields
+
+The type of a message.
+
+invalid message type
+
+RTSP request message
+
+RTSP response message
+
+HTTP request message.
+
+HTTP response message.
+
+data message
+
+Different possible time range units.
+
+SMPTE timecode
+
+29.97 frames per second
+
+25 frames per second
+
+Normal play time
+
+Absolute time expressed as ISO 8601 timestamps
+
+Result codes from the RTSP functions.
+
+no error
+
+some unspecified error occured
+
+invalid arguments were provided to a function
+
+an operation was canceled
+
+no memory was available for the operation
+
+a host resolve error occured
+
+function not implemented
+
+a system error occured, errno contains more details
+
+a persing error occured
+
+windows networking could not start
+
+windows networking stack has wrong version
+
+end-of-file was reached
+
+a network problem occured, h_errno contains more details
+
+the host is not an IP host
+
+a timeout occured
+
+the tunnel GET request has been performed
+
+the tunnel POST request has been performed
+
+last error
+
+The different RTSP states.
+
+invalid state
+
+initializing
+
+ready for operation
+
+seeking in progress
+
+playing
+
+recording
+
+Enumeration of rtsp status codes
+
+Possible time types.
+
+seconds
+
+now
+
+end
+
+frames and subframes
+
+UTC time
+
+Provides helper functions to handle RTSP urls.
+
+Make a copy of `self`.
+
+# Returns
+
+a copy of `self`. Free with gst_rtsp_url_free () after usage.
+
+Splits the path of `self` 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.
+
+# Returns
+
+`None`-terminated array of URL components. Free with
+`g_strfreev` when no longer needed.
+
+Free the memory used by `self`.
+
+Get the port number of `self`.
+## `port`
+location to hold the port
+
+# Returns
+
+`RTSPResult::Ok`.
+
+Get a newly allocated string describing the request URI for `self`.
+
+# Returns
+
+a string with the request URI. `g_free` after usage.
+
+Set the port number in `self` to `port`.
+## `port`
+the port
+
+# Returns
+
+`RTSPResult::Ok`.
+
+Parse the RTSP `urlstr` into a newly allocated `RTSPUrl`. Free after usage
+with `RTSPUrl::free`.
+## `urlstr`
+the url string to parse
+## `url`
+location to hold the result.
+
+# Returns
+
+a `RTSPResult`.
diff --git a/docs/gstreamer-sdp/docs.md b/docs/gstreamer-sdp/docs.md
new file mode 100644
index 000000000..19d475bf0
--- /dev/null
+++ b/docs/gstreamer-sdp/docs.md
@@ -0,0 +1,139 @@
+
+
+The different cache types
+
+The envelope key MUST NOT be cached
+
+The envelope key MUST be cached
+
+The envelope key MUST be cached, but only
+ to be used for the specific CSB.
+
+The encryption algorithm used to encrypt the Encr data field
+
+no encryption
+
+AES-CM using a 128-bit key
+
+AES Key Wrap using a 128-bit key
+
+The key validity type
+
+No specific usage rule
+
+The key is associated with the SPI/MKI
+
+The key has a start and expiration time
+
+The type of key.
+
+a TEK Generation Key
+
+Traffic-Encrypting Key
+
+Specifies the authentication algorithm used
+
+no authentication
+
+HMAC-SHA-1-160
+
+Specifies the method of uniquely mapping Crypto Sessions to the security
+protocol sessions.
+
+The PRF function that has been/will be used for key derivation
+
+MIKEY-1 PRF function
+
+Different MIKEY Payload types.
+
+Last payload
+
+Key data transport payload
+
+Envelope data payload
+
+DH data payload
+
+Signature payload
+
+Timestamp payload
+
+ID payload
+
+Certificate Payload
+
+Cert hash payload
+
+Verfication message payload
+
+Security Policy payload
+
+RAND payload
+
+Error payload
+
+Key data sub-payload
+
+General Extension Payload
+
+Specifies the security protocol
+
+This policy specifies the parameters for SRTP and SRTCP
+
+Encryption algorithm
+
+Session Encr. key length
+
+Authentication algorithm
+
+Session Auth. key length
+
+Session Salt key length
+
+SRTP Pseudo Random Function
+
+Key derivation rate
+
+SRTP encryption off/on, 0 if off, 1 if on
+
+SRTCP encryption off/on, 0 if off, 1 if on
+
+sender's FEC order
+
+SRTP authentication off/on, 0 if off, 1 if on
+
+Authentication tag length
+
+SRTP prefix length
+
+Specifies the timestamp type.
+
+an NTP time in UTC timezone
+
+an NTP time
+
+a counter
+
+Different MIKEY data types.
+
+Invalid type
+
+Initiator's pre-shared key message
+
+Verification message of a Pre-shared key message
+
+Initiator's public-key transport message
+
+Verification message of a public-key message
+
+Initiator's DH exchange message
+
+Responder's DH exchange message
+
+Error message
+
+Return values for the SDP functions.
+
+A successful return value
+
+a function was given invalid parameters
diff --git a/examples/Cargo.toml b/examples/Cargo.toml
index 51e104589..dcacdd350 100644
--- a/examples/Cargo.toml
+++ b/examples/Cargo.toml
@@ -10,6 +10,7 @@ gstreamer-app = { path = "../gstreamer-app" }
gstreamer-audio = { path = "../gstreamer-audio" }
gstreamer-video = { path = "../gstreamer-video" }
gstreamer-player = { path = "../gstreamer-player", optional = true }
+gstreamer-rtsp-server = { path = "../gstreamer-rtsp-server", optional = true }
gtk = { git = "https://github.com/gtk-rs/gtk", features = ["v3_6"], optional = true }
gdk = { git = "https://github.com/gtk-rs/gdk", optional = true }
gio = { git = "https://github.com/gtk-rs/gio", optional = true }
@@ -27,6 +28,7 @@ gtkvideooverlay = ["gtk", "gdk", "gio"]
gtkvideooverlay-x11 = ["gtkvideooverlay"]
gtkvideooverlay-quartz = ["gtkvideooverlay"]
tokio = ["gstreamer/futures", "futures", "tokio-core"]
+gst-rtsp-server = ["gstreamer-rtsp-server"]
default-features = []
v1_10 = ["gstreamer/v1_10"]
diff --git a/examples/src/bin/rtsp-server.rs b/examples/src/bin/rtsp-server.rs
new file mode 100644
index 000000000..6a40c6246
--- /dev/null
+++ b/examples/src/bin/rtsp-server.rs
@@ -0,0 +1,78 @@
+#[cfg(feature = "gst-rtsp-server")]
+use std::env;
+
+extern crate gstreamer as gst;
+
+#[cfg(feature = "gst-rtsp-server")]
+extern crate gstreamer_rtsp_server as gst_rtsp_server;
+#[cfg(feature = "gst-rtsp-server")]
+use gst_rtsp_server::prelude::*;
+
+extern crate glib;
+
+extern crate failure;
+use failure::Error;
+
+#[cfg(feature = "gst-rtsp-server")]
+#[macro_use]
+extern crate failure_derive;
+
+#[path = "../examples-common.rs"]
+mod examples_common;
+
+#[derive(Debug, Fail)]
+#[fail(display = "Could not get mount points")]
+#[cfg(feature = "gst-rtsp-server")]
+struct NoMountPoints;
+
+#[derive(Debug, Fail)]
+#[fail(display = "Usage: {} LAUNCH_LINE", _0)]
+#[cfg(feature = "gst-rtsp-server")]
+struct UsageError(String);
+
+#[cfg(feature = "gst-rtsp-server")]
+fn main_loop() -> Result<(), Error> {
+ let args: Vec<_> = env::args().collect();
+
+ if args.len() != 2 {
+ return Err(Error::from(UsageError(args[0].clone())));
+ }
+
+ let main_loop = glib::MainLoop::new(None, false);
+ let server = gst_rtsp_server::RTSPServer::new();
+ let factory = gst_rtsp_server::RTSPMediaFactory::new();
+ let mounts = server.get_mount_points().ok_or(NoMountPoints)?;
+
+ factory.set_launch(args[1].as_str());
+ factory.set_shared(true);
+
+ mounts.add_factory("/test", &factory);
+
+ server.attach(None);
+
+ println!("Stream ready at rtsp://127.0.0.1:{}/test", server.get_bound_port());
+
+ main_loop.run();
+
+ Ok(())
+}
+
+fn example_main() -> Result<(), Error> {
+ gst::init()?;
+
+ #[cfg(not(feature = "gst-rtsp-server"))]
+ {
+ eprintln!("Feature gst-rtsp-server is required. Please rebuild with --features gst-rtsp-server");
+ std::process::exit(-1)
+ }
+
+ #[cfg(feature = "gst-rtsp-server")]
+ main_loop()
+}
+
+fn main() {
+ match examples_common::run(example_main) {
+ Ok(r) => r,
+ Err(e) => eprintln!("Error! {}", e),
+ }
+}
diff --git a/gir-files/GstRtsp-1.0.gir b/gir-files/GstRtsp-1.0.gir
new file mode 100644
index 000000000..af34b1dd5
--- /dev/null
+++ b/gir-files/GstRtsp-1.0.gir
@@ -0,0 +1,5018 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Authentication methods, ordered by strength
+
+ no authentication
+
+
+ basic authentication
+
+
+ digest authentication
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This object manages the RTSP connection to the server. It provides function
+to receive and send bytes and messages.
+
+ Clear the list of authentication directives stored in @conn.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Close the connected @conn. After this call, the connection is in the same
+state as when it was first created.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK when a connection could be made.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a #GTimeVal timeout
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK when a connection could be made.
+
+Since 1.8
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a #GTimeVal timeout
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ 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.
+
+ return GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a #GstRTSPConnection or %NULL
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ start or stop the flush
+
+
+
+
+
+ Close and free @conn.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Retrieve the IP address of the other end of @conn.
+
+ The IP address as a string. this value remains valid until the
+connection is closed.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Get the file descriptor for reading.
+
+ the file descriptor used for reading or %NULL on
+error. The file descriptor remains valid until the connection is closed.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+
+ %TRUE if the #GstRTSPConnection remembers the session id in the
+last response to set it on any further request.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ 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.
+
+ the TLS connection for @conn.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Gets the anchor certificate authorities database that will be used
+after a server certificate can't be verified with the default
+certificate database.
+
+ the anchor certificate authorities database, or NULL if no
+database has been previously set. Use g_object_unref() to release the
+certificate database.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ 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.
+
+ a reference on the #GTlsInteraction. Use
+g_object_unref() to release.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Gets the TLS validation flags used to verify the peer certificate
+when a TLS connection is established.
+
+ the validationg flags.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Get the tunnel session id the connection.
+
+ returns a non-empty string if @conn is being tunneled over HTTP.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Retrieve the URL of the other end of @conn.
+
+ The URL. This value remains valid until the
+connection is freed.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Get the file descriptor for writing.
+
+ the file descriptor used for writing or NULL on
+error. The file descriptor remains valid until the connection is closed.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Get the tunneling state of the connection.
+
+ if @conn is using HTTP tunneling.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Calculate the next timeout for @conn, storing the result in @timeout.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a timeout
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a bitmask of #GstRTSPEvent flags to check
+
+
+
+ location for result flags
+
+
+
+ a timeout
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the data to read
+
+
+
+ the size of @data
+
+
+
+ a timeout value or #NULL
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the message to read
+
+
+
+ a timeout value or #NULL
+
+
+
+
+
+ Reset the timeout of @conn.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the message to send
+
+
+
+ a timeout value or #NULL
+
+
+
+
+
+ Configure @conn for authentication mode @method with @user and @pass as the
+user and password respectively.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ authentication method
+
+
+
+ the user
+
+
+
+ the password
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ authentication directive
+
+
+
+ value
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ %TRUE to enable manual HTTP mode
+
+
+
+
+
+ Set the IP address of the server.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ an ip address
+
+
+
+
+
+ Set the proxy host and port.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the proxy host
+
+
+
+ the proxy port
+
+
+
+
+
+ Configure @conn to use the specified DSCP value.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ DSCP value
+
+
+
+
+
+ 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
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ %TRUE if the connection should remember the session id
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a #GTlsDatabase
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ a #GTlsInteraction
+
+
+
+
+
+ Sets the TLS validation flags to be used to verify the peer
+certificate when a TLS connection is established.
+
+ TRUE if the validation flags are set correctly, or FALSE if
+@conn is NULL or is not a TLS connection.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the validation flags.
+
+
+
+
+
+ Set the HTTP tunneling state of the connection. This must be configured before
+the @conn is connected.
+
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the new state
+
+
+
+
+
+ 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().
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ the data to write
+
+
+
+ the size of @data
+
+
+
+ a timeout value or #NULL
+
+
+
+
+
+ Accept a new connection on @socket and create a new #GstRTSPConnection for
+handling communication on new socket.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a socket
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+ a #GCancellable to cancel the operation
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a #GSocket
+
+
+
+ the IP address of the other end
+
+
+
+ the port used by the other end
+
+
+
+ data already read from @fd
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+
+
+
+ The possible events for the connection.
+
+ connection is readable
+
+
+ connection is writable
+
+
+
+ This interface is implemented e.g. by the Windows Media Streaming RTSP
+ exentension (rtspwms) and the RealMedia RTSP extension (rtspreal).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The possible network families.
+
+ unknown network family
+
+
+ internet
+
+
+ internet V6
+
+
+
+ Enumeration of rtsp header fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The different transport methods.
+
+ invalid transport flag
+
+
+ stream data over UDP
+
+
+ stream data over UDP multicast
+
+
+ stream data over TCP
+
+
+ stream data tunneled over HTTP.
+
+
+ encrypt TCP and HTTP with TLS
+
+
+
+ Provides methods for creating and parsing request, response and data messages.
+
+ the message type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add a header with key @field and @value to @msg. This function takes a copy
+of @value.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+ the value of the header
+
+
+
+
+
+ Add a header with key @header and @value to @msg. This function takes a copy
+of @value.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ header string
+
+
+
+ the value of the header
+
+
+
+
+
+ Append the currently configured headers in @msg to the #GString @str suitable
+for transmission.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a string
+
+
+
+
+
+ Dump the contents of @msg to stdout.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ Free the memory used by @msg.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ Get the body of @msg. @data remains valid for as long as @msg is valid and
+unchanged.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location for the data
+
+
+
+
+
+ location for the size of @data
+
+
+
+
+
+ Get the @indx header value with key @field from @msg. The result in @value
+stays valid as long as it remains present in @msg.
+
+ #GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
+was not found.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+ pointer to hold the result
+
+
+
+ the index of the header
+
+
+
+
+
+ Get the @index header value with key @header from @msg. The result in @value
+stays valid as long as it remains present in @msg.
+
+ #GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key
+was not found.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+ pointer to hold the result
+
+
+
+ the index of the header
+
+
+
+
+
+ Get the message type of @msg.
+
+ the message type.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ Initialize @msg. This function is mostly used when @msg is allocated on the
+stack. The reverse operation of this is gst_rtsp_message_unset().
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ Initialize a new data #GstRTSPMessage for @channel.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a channel
+
+
+
+
+
+ Initialize @msg as a request message with @method and @uri. To clear @msg
+again, use gst_rtsp_message_unset().
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ the request method to use
+
+
+
+ the uri of the request
+
+
+
+
+
+ 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.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ the status code
+
+
+
+ the status reason or %NULL
+
+
+
+ the request that triggered the response or %NULL
+
+
+
+
+
+ Parses the credentials given in a WWW-Authenticate or Authorization header.
+
+ %NULL-terminated array of GstRTSPAuthCredential or %NULL.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+
+
+ Parse the data message @msg and store the channel in @channel.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location to hold the channel
+
+
+
+
+
+ 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.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location to hold the method
+
+
+
+ location to hold the uri
+
+
+
+ location to hold the version
+
+
+
+
+
+ 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.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location to hold the status code
+
+
+
+ location to hold the status reason
+
+
+
+ location to hold the version
+
+
+
+
+
+ Remove the @indx header with key @field from @msg. If @indx equals -1, all
+headers will be removed.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+ the index of the header
+
+
+
+
+
+ Remove the @index header with key @header from @msg. If @index equals -1,
+all matching headers will be removed.
+
+ a #GstRTSPResult
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ the header string
+
+
+
+ the index of the header
+
+
+
+
+
+ Set the body of @msg to a copy of @data.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ the data
+
+
+
+
+
+ the size of @data
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location for the data
+
+
+
+
+
+ location for the size of @data
+
+
+
+
+
+ Set the body of @msg to @data and @size. This method takes ownership of
+@data.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ the data
+
+
+
+
+
+ the size of @data
+
+
+
+
+
+ Add a header with key @field and @value to @msg. This function takes
+ownership of @value.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+ the value of the header
+
+
+
+
+
+ Add a header with key @header and @value to @msg. This function takes
+ownership of @value, but not of @header.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+ a header string
+
+
+
+ the value of the header
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPMessage
+
+
+
+
+
+ Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+
+
+ Create a new data #GstRTSPMessage with @channel and store the
+result message in @msg. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the channel
+
+
+
+
+
+ Create a new #GstRTSPMessage with @method and @uri and store the result
+request message in @msg. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the request method to use
+
+
+
+ the uri of the request
+
+
+
+
+
+ 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.
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the status code
+
+
+
+ the status reason or %NULL
+
+
+
+ the request that triggered the response or %NULL
+
+
+
+
+
+
+ The different supported RTSP methods.
+
+ invalid method
+
+
+ the DESCRIBE method
+
+
+ the ANNOUNCE method
+
+
+ the GET_PARAMETER method
+
+
+ the OPTIONS method
+
+
+ the PAUSE method
+
+
+ the PLAY method
+
+
+ the RECORD method
+
+
+ the REDIRECT method
+
+
+ the SETUP method
+
+
+ the SET_PARAMETER method
+
+
+ the TEARDOWN method
+
+
+ the GET method (HTTP).
+
+
+ the POST method (HTTP).
+
+
+ Convert @method to a string.
+
+ a string representation of @method.
+
+
+
+
+ a #GstRTSPMethod
+
+
+
+
+
+
+ The type of a message.
+
+ invalid message type
+
+
+ RTSP request message
+
+
+ RTSP response message
+
+
+ HTTP request message.
+
+
+ HTTP response message.
+
+
+ data message
+
+
+
+ The transfer profile to use.
+
+ invalid profile
+
+
+ the Audio/Visual profile (RFC 3551)
+
+
+ the secure Audio/Visual profile (RFC 3711)
+
+
+ the Audio/Visual profile with feedback (RFC 4585)
+
+
+ the secure Audio/Visual profile with feedback (RFC 5124)
+
+
+
+ Provides helper functions to deal with time ranges.
+
+ minimum value of the range
+
+
+
+ maximum value of the range
+
+
+
+ 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.
+
+ %TRUE if the range could be converted
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+ the unit to convert the range into
+
+
+
+
+
+ Free the memory allocated by @range.
+
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+
+
+ 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.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+ result minimum #GstClockTime
+
+
+
+ result maximum #GstClockTime
+
+
+
+
+
+ Parse @rangestr to a #GstRTSPTimeRange.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a range string to parse
+
+
+
+ location to hold the #GstRTSPTimeRange result
+
+
+
+
+
+ Convert @range into a string representation.
+
+ The string representation of @range. g_free() after usage.
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+
+
+
+ Different possible time range units.
+
+ SMPTE timecode
+
+
+ 29.97 frames per second
+
+
+ 25 frames per second
+
+
+ Normal play time
+
+
+ Absolute time expressed as ISO 8601 timestamps
+
+
+
+ Result codes from the RTSP functions.
+
+ no error
+
+
+ some unspecified error occured
+
+
+ invalid arguments were provided to a function
+
+
+ an operation was canceled
+
+
+ no memory was available for the operation
+
+
+ a host resolve error occured
+
+
+ function not implemented
+
+
+ a system error occured, errno contains more details
+
+
+ a persing error occured
+
+
+ windows networking could not start
+
+
+ windows networking stack has wrong version
+
+
+ end-of-file was reached
+
+
+ a network problem occured, h_errno contains more details
+
+
+ the host is not an IP host
+
+
+ a timeout occured
+
+
+ the tunnel GET request has been performed
+
+
+ the tunnel POST request has been performed
+
+
+ last error
+
+
+
+ The different RTSP states.
+
+ invalid state
+
+
+ initializing
+
+
+ ready for operation
+
+
+ seeking in progress
+
+
+ playing
+
+
+ recording
+
+
+
+ Enumeration of rtsp status codes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A time indication.
+
+ the time of the time
+
+
+
+ seconds when @type is GST_RTSP_TIME_SECONDS,
+ GST_RTSP_TIME_UTC and GST_RTSP_TIME_FRAMES
+
+
+
+
+ Extra fields for a time indication.
+
+ frames and subframes when type in GstRTSPTime is
+ GST_RTSP_TIME_FRAMES
+
+
+
+ year when type is GST_RTSP_TIME_UTC
+
+
+
+ month when type is GST_RTSP_TIME_UTC
+
+
+
+ day when type is GST_RTSP_TIME_UTC
+
+
+
+
+ A time range.
+
+ the time units used
+
+
+
+ the minimum interval
+
+
+
+ the maximum interval
+
+
+
+ extra fields in the minimum interval (Since: 1.2)
+
+
+
+ extra fields in the maximum interval (Since: 1.2)
+
+
+
+
+ Possible time types.
+
+ seconds
+
+
+ now
+
+
+ end
+
+
+ frames and subframes
+
+
+ UTC time
+
+
+
+ The transfer mode to use.
+
+ invalid tansport mode
+
+
+ transfer RTP data
+
+
+ transfer RDT (RealMedia) data
+
+
+
+ Provides helper functions to deal with RTSP transport strings.
+
+ the transport mode
+
+
+
+ the tansport profile
+
+
+
+ the lower transport
+
+
+
+ the destination ip/hostname
+
+
+
+ the source ip/hostname
+
+
+
+ the number of layers
+
+
+
+ if play mode was selected
+
+
+
+ if record mode was selected
+
+
+
+ is append mode was selected
+
+
+
+ the interleave range
+
+
+
+ the time to live for multicast UDP
+
+
+
+ the port pair for multicast sessions
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ the ssrc that the sender/receiver will use
+
+
+
+
+
+
+
+
+ Convert @transport into a string that can be used to signal the transport in
+an RTSP SETUP response.
+
+ a string describing the RTSP transport or #NULL when the transport
+is invalid.
+
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+ Free the memory used by @transport.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+ Get the media type of @transport. This media type is typically
+used to generate #GstCaps events.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransport
+
+
+
+ media type of @transport
+
+
+
+
+
+ Initialize @transport so that it can be used.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransMode
+
+
+
+ location to hold the result
+
+
+
+ option index.
+
+
+
+
+
+ Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps events.
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransMode
+
+
+
+ location to hold the result
+
+
+
+
+
+ Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.
+
+ a #GstRTSPResult.
+
+
+
+
+ location to hold the new #GstRTSPTransport
+
+
+
+
+
+ Parse the RTSP transport string @str into @transport.
+
+ a #GstRTSPResult.
+
+
+
+
+ a transport string
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+
+ Provides helper functions to handle RTSP urls.
+
+ the transports allowed
+
+
+
+ the family
+
+
+
+ the user
+
+
+
+ the password
+
+
+
+ the host
+
+
+
+ the port
+
+
+
+ the absolute path
+
+
+
+ additional query parameters
+
+
+
+ Make a copy of @url.
+
+ a copy of @url. Free with gst_rtsp_url_free () after usage.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ 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.
+
+ %NULL-terminated array of URL components. Free with
+g_strfreev() when no longer needed.
+
+
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ Free the memory used by @url.
+
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ Get the port number of @url.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+ location to hold the port
+
+
+
+
+
+ Get a newly allocated string describing the request URI for @url.
+
+ a string with the request URI. g_free() after usage.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ Set the port number in @url to @port.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+ the port
+
+
+
+
+
+ Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ the url string to parse
+
+
+
+ location to hold the result.
+
+
+
+
+
+
+ The supported RTSP versions.
+
+ unknown/invalid version
+
+
+ version 1.0
+
+
+ version 1.1.
+
+
+ Convert @version to a string.
+
+ a string representation of @version.
+
+
+
+
+ a #GstRTSPVersion
+
+
+
+
+
+
+ Opaque RTSP watch object that can be used for asynchronous RTSP
+operations.
+
+ Adds a #GstRTSPWatch to a context so that it will be executed within that context.
+
+ the ID (greater than 0) for the watch within the GMainContext.
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ a GMainContext (if NULL, the default context will be used)
+
+
+
+
+
+ Get the maximum amount of bytes and messages that will be queued in @watch.
+See gst_rtsp_watch_set_send_backlog().
+
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ maximum bytes
+
+
+
+ maximum messages
+
+
+
+
+
+ Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel()
+when the file descriptors of the connection might have changed.
+
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ a #GstRTSPMessage
+
+
+
+ location for a message ID or %NULL
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ new flushing state
+
+
+
+
+
+ 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.
+
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ maximum bytes
+
+
+
+ maximum messages
+
+
+
+
+
+ Decreases the reference count of @watch by one. If the resulting reference
+count is zero the watch and associated memory will be destroyed.
+
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+
+
+ 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.
+
+ %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.
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ a #GTimeVal timeout
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK on success. #GST_RTSP_ENOMEM when the backlog limits
+are reached. #GST_RTSP_EINTR when @watch was flushing.
+
+
+
+
+ a #GstRTSPWatch
+
+
+
+ the data to queue
+
+
+
+
+
+ the size of @data
+
+
+
+ location for a message ID or %NULL
+
+
+
+
+
+ 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.
+
+ a #GstRTSPWatch that can be used for asynchronous RTSP
+communication. Free with gst_rtsp_watch_unref () after usage.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ watch functions
+
+
+
+ user data to pass to @funcs
+
+
+
+ notify when @user_data is not referenced anymore
+
+
+
+
+
+
+ Callback functions from a #GstRTSPWatch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The default RTSP port to connect to.
+
+
+
+ Free a %NULL-terminated array of credentials returned from
+gst_rtsp_message_parse_auth_credentials().
+
+
+
+
+
+ a %NULL-terminated array of #GstRTSPAuthCredential
+
+
+
+
+
+ Accept a new connection on @socket and create a new #GstRTSPConnection for
+handling communication on new socket.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a socket
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+ a #GCancellable to cancel the operation
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a #GstRTSPUrl
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK when @conn contains a valid connection.
+
+
+
+
+ a #GSocket
+
+
+
+ the IP address of the other end
+
+
+
+ the port used by the other end
+
+
+
+ data already read from @fd
+
+
+
+ storage for a #GstRTSPConnection
+
+
+
+
+
+ Convert @header to a #GstRTSPHeaderField.
+
+ a #GstRTSPHeaderField for @header or #GST_RTSP_HDR_INVALID if the
+header field is unknown.
+
+
+
+
+ a header string
+
+
+
+
+
+ Convert @method to a #GstRTSPMethod.
+
+ a #GstRTSPMethod for @method or #GST_RTSP_INVALID if the
+method is unknown.
+
+
+
+
+ a method
+
+
+
+
+
+ Calculates the digest auth response from the values given by the server and
+the username and password. See RFC2069 for details.
+
+Currently only supported algorithm "md5".
+
+ Authentication response or %NULL if unsupported
+
+
+
+
+ Hash algorithm to use, or %NULL for MD5
+
+
+
+ Request method, e.g. PLAY
+
+
+
+ Realm
+
+
+
+ Username
+
+
+
+ Password
+
+
+
+ Original request URI
+
+
+
+ Nonce
+
+
+
+
+
+ Check whether @field may appear multiple times in a message.
+
+ %TRUE if multiple headers are allowed.
+
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+
+
+ Convert @field to a string.
+
+ a string representation of @field.
+
+
+
+
+ a #GstRTSPHeaderField
+
+
+
+
+
+ Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+
+
+ Create a new data #GstRTSPMessage with @channel and store the
+result message in @msg. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the channel
+
+
+
+
+
+ Create a new #GstRTSPMessage with @method and @uri and store the result
+request message in @msg. Free with gst_rtsp_message_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the request method to use
+
+
+
+ the uri of the request
+
+
+
+
+
+ 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.
+
+ a #GstRTSPResult.
+
+
+
+
+ a location for the new #GstRTSPMessage
+
+
+
+ the status code
+
+
+
+ the status reason or %NULL
+
+
+
+ the request that triggered the response or %NULL
+
+
+
+
+
+ Convert @method to a string.
+
+ a string representation of @method.
+
+
+
+
+ a #GstRTSPMethod
+
+
+
+
+
+ Convert @options to a string.
+
+ a new string of @options. g_free() after usage.
+
+
+
+
+ one or more #GstRTSPMethod
+
+
+
+
+
+ Convert the comma separated list @options to a #GstRTSPMethod bitwise or
+of methods. This functions is the reverse of gst_rtsp_options_as_text().
+
+ a #GstRTSPMethod
+
+
+
+
+ a comma separated list of options
+
+
+
+
+
+ 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.
+
+ %TRUE if the range could be converted
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+ the unit to convert the range into
+
+
+
+
+
+ Free the memory allocated by @range.
+
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+
+
+ 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.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+ result minimum #GstClockTime
+
+
+
+ result maximum #GstClockTime
+
+
+
+
+
+ Parse @rangestr to a #GstRTSPTimeRange.
+
+ #GST_RTSP_OK on success.
+
+
+
+
+ a range string to parse
+
+
+
+ location to hold the #GstRTSPTimeRange result
+
+
+
+
+
+ Convert @range into a string representation.
+
+ The string representation of @range. g_free() after usage.
+
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+
+
+ Convert @code to a string.
+
+ a string representation of @code.
+
+
+
+
+ a #GstRTSPStatusCode
+
+
+
+
+
+ Convert @result in a human readable string.
+
+ a newly allocated string. g_free() after usage.
+
+
+
+
+ a #GstRTSPResult
+
+
+
+
+
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransMode
+
+
+
+ location to hold the result
+
+
+
+ option index.
+
+
+
+
+
+ Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps events.
+ 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.
+
+ #GST_RTSP_OK.
+
+
+
+
+ a #GstRTSPTransMode
+
+
+
+ location to hold the result
+
+
+
+
+
+ Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.
+
+ a #GstRTSPResult.
+
+
+
+
+ location to hold the new #GstRTSPTransport
+
+
+
+
+
+ Parse the RTSP transport string @str into @transport.
+
+ a #GstRTSPResult.
+
+
+
+
+ a transport string
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+ Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().
+
+ a #GstRTSPResult.
+
+
+
+
+ the url string to parse
+
+
+
+ location to hold the result.
+
+
+
+
+
+ Convert @version to a string.
+
+ a string representation of @version.
+
+
+
+
+ a #GstRTSPVersion
+
+
+
+
+
+ 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.
+
+ a #GstRTSPWatch that can be used for asynchronous RTSP
+communication. Free with gst_rtsp_watch_unref () after usage.
+
+
+
+
+ a #GstRTSPConnection
+
+
+
+ watch functions
+
+
+
+ user data to pass to @funcs
+
+
+
+ notify when @user_data is not referenced anymore
+
+
+
+
+
+
diff --git a/gir-files/GstRtspServer-1.0.gir b/gir-files/GstRtspServer-1.0.gir
new file mode 100644
index 000000000..a6addaa73
--- /dev/null
+++ b/gir-files/GstRtspServer-1.0.gir
@@ -0,0 +1,9575 @@
+
+
+
+
+
+
+
+
+
+
+ An address
+
+ the #GstRTSPAddressPool owner of this address
+
+
+
+ the address
+
+
+
+ the port number
+
+
+
+ number of ports
+
+
+
+ TTL or 0 for unicast addresses
+
+
+
+
+
+
+ Make a copy of @addr.
+
+ a copy of @addr.
+
+
+
+
+ a #GstRTSPAddress
+
+
+
+
+
+ Free @addr and releasing it back into the pool when owned by a
+pool.
+
+
+
+
+
+ a #GstRTSPAddress
+
+
+
+
+
+
+ Flags used to control allocation of addresses
+
+ no flags
+
+
+ an IPv4 address
+
+
+ and IPv6 address
+
+
+ address with an even port
+
+
+ a multicast address
+
+
+ a unicast address
+
+
+
+ An address pool, all member are private
+
+ Make a new #GstRTSPAddressPool.
+
+ a new #GstRTSPAddressPool
+
+
+
+
+ Take an address and ports from @pool. @flags can be used to control the
+allocation. @n_ports consecutive ports will be allocated of which the first
+one can be found in @port.
+
+ a #GstRTSPAddress that should be freed with
+gst_rtsp_address_free after use or %NULL when no address could be
+acquired.
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+ flags
+
+
+
+ the amount of ports
+
+
+
+
+
+ Adds the addresses from @min_addess to @max_address (inclusive)
+to @pool. The valid port range for the addresses will be from @min_port to
+@max_port inclusive.
+
+When @ttl is 0, @min_address and @max_address should be unicast addresses.
+@min_address and @max_address can be set to
+#GST_RTSP_ADDRESS_POOL_ANY_IPV4 or #GST_RTSP_ADDRESS_POOL_ANY_IPV6 to bind
+to all available IPv4 or IPv6 addresses.
+
+When @ttl > 0, @min_address and @max_address should be multicast addresses.
+
+ %TRUE if the addresses could be added.
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+ a minimum address to add
+
+
+
+ a maximum address to add
+
+
+
+ the minimum port
+
+
+
+ the maximum port
+
+
+
+ a TTL or 0 for unicast addresses
+
+
+
+
+
+ Clear all addresses in @pool. There should be no outstanding
+allocations.
+
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Dump the free and allocated addresses to stdout.
+
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Used to know if the pool includes any unicast addresses.
+
+ %TRUE if the pool includes any unicast addresses, %FALSE otherwise
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Take a specific address and ports from @pool. @n_ports consecutive
+ports will be allocated of which the first one can be found in
+@port.
+
+If @ttl is 0, @address should be a unicast address. If @ttl > 0, @address
+should be a valid multicast address.
+
+ #GST_RTSP_ADDRESS_POOL_OK if an address was reserved. The address
+is returned in @address and should be freed with gst_rtsp_address_free
+after use.
+
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+ The IP address to reserve
+
+
+
+ The first port to reserve
+
+
+
+ The number of ports
+
+
+
+ The requested ttl
+
+
+
+ storage for a #GstRTSPAddress
+
+
+
+
+
+ the parent GObject
+
+
+
+
+
+
+
+
+
+
+
+
+ Opaque Address pool class.
+
+
+
+
+
+
+
+
+
+
+
+
+ Result codes from RTSP address pool functions.
+
+ no error
+
+
+ invalid arguments were provided to a function
+
+
+ the addres has already been reserved
+
+
+ the address is not in the pool
+
+
+ last error
+
+
+
+ The authentication structure.
+
+ Create a new #GstRTSPAuth instance.
+
+ a new #GstRTSPAuth
+
+
+
+
+ Check if @check is allowed in the current context.
+
+ FALSE if check failed.
+
+
+
+
+ the item to check
+
+
+
+
+
+ Construct a Basic authorisation token from @user and @pass.
+
+ the base64 encoding of the string @user:@pass.
+g_free() after usage.
+
+
+
+
+ a userid
+
+
+
+ a password
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add a basic token for the default authentication algorithm that
+enables the client with privileges listed in @token.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ the basic token
+
+
+
+ authorisation token
+
+
+
+
+
+ Add a digest @user and @pass for the default authentication algorithm that
+enables the client with privileges listed in @token.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ the digest user name
+
+
+
+ the digest password
+
+
+
+ authorisation token
+
+
+
+
+
+ Get the default token for @auth. This token will be used for unauthenticated
+users.
+
+ the #GstRTSPToken of @auth. gst_rtsp_token_unref() after
+usage.
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Gets the supported authentication methods of @auth.
+
+ The supported authentication methods
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Get the #GTlsAuthenticationMode.
+
+ the #GTlsAuthenticationMode.
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Get the #GTlsCertificate used for negotiating TLS @auth.
+
+ the #GTlsCertificate of @auth. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Get the #GTlsDatabase used for verifying client certificate.
+
+ the #GTlsDatabase of @auth. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Removes @basic authentication token.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ the basic token
+
+
+
+
+
+ Removes a digest user.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ the digest user name
+
+
+
+
+
+ Set the default #GstRTSPToken to @token in @auth. The default token will
+be used for unauthenticated users.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ a #GstRTSPToken
+
+
+
+
+
+ Sets the supported authentication @methods for @auth.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ supported methods
+
+
+
+
+
+ The #GTlsAuthenticationMode to set on the underlying GTlsServerConnection.
+When set to another value than %G_TLS_AUTHENTICATION_NONE,
+#GstRTSPAuth::accept-certificate signal will be emitted and must be handled.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ a #GTlsAuthenticationMode
+
+
+
+
+
+ Set the TLS certificate for the auth. Client connections will only
+be accepted when TLS is negotiated.
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ a #GTlsCertificate
+
+
+
+
+
+ Sets the certificate database that is used to verify peer certificates.
+If set to %NULL (the default), then peer certificate validation will always
+set the %G_TLS_CERTIFICATE_UNKNOWN_CA error.
+
+Since 1.6
+
+
+
+
+
+ a #GstRTSPAuth
+
+
+
+ a #GTlsDatabase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Emitted during the TLS handshake after the client certificate has
+been received. See also gst_rtsp_auth_set_tls_authentication_mode().
+
+ %TRUE to accept @peer_cert (which will also
+immediately end the signal emission). %FALSE to allow the signal
+emission to continue, which will cause the handshake to fail if
+no one else overrides it.
+
+
+
+
+ a #GTlsConnection
+
+
+
+ the peer's #GTlsCertificate
+
+
+
+ the problems with @peer_cert.
+
+
+
+
+
+
+ The authentication class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The client object represents the connection and its state with a client.
+
+ Create a new #GstRTSPClient instance.
+
+ a new #GstRTSPClient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Attaches @client to @context. When the mainloop for @context is run, the
+client will be dispatched. When @context is %NULL, the default context will be
+used).
+
+This function should be called when the client properties and urls are fully
+configured and the client is ready to start.
+
+ the ID (greater than 0) for the source within the GMainContext.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GMainContext
+
+
+
+
+
+ Close the connection of @client and remove all media it was managing.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Get the #GstRTSPAuth used as the authentication manager of @client.
+
+ the #GstRTSPAuth of @client.
+g_object_unref() after usage.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Get the #GstRTSPConnection of @client.
+
+ the #GstRTSPConnection of @client.
+The connection object returned remains valid until the client is freed.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Get the #GstRTSPMountPoints object that @client uses to manage its sessions.
+
+ a #GstRTSPMountPoints, unref after usage.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Get the #GstRTSPSessionPool object that @client uses to manage its sessions.
+
+ a #GstRTSPSessionPool, unref after usage.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Get the #GstRTSPThreadPool used as the thread pool of @client.
+
+ the #GstRTSPThreadPool of @client. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+
+
+ Let the client handle @message.
+
+ a #GstRTSPResult.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ an #GstRTSPMessage
+
+
+
+
+
+ Send a message message to the remote end. @message must be a
+#GST_RTSP_MESSAGE_REQUEST or a #GST_RTSP_MESSAGE_RESPONSE.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPSession to send
+ the message to or %NULL
+
+
+
+ The #GstRTSPMessage to send
+
+
+
+
+
+ Call @func for each session managed by @client. The result value of @func
+determines what happens to the session. @func will be called with @client
+locked so no further actions on @client can be performed from @func.
+
+If @func returns #GST_RTSP_FILTER_REMOVE, the session will be removed from
+@client.
+
+If @func returns #GST_RTSP_FILTER_KEEP, the session will remain in @client.
+
+If @func returns #GST_RTSP_FILTER_REF, the session will remain in @client but
+will also be added with an additional ref to the result #GList of this
+function..
+
+When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each session.
+
+ a #GList with all
+sessions for which @func returned #GST_RTSP_FILTER_REF. After usage, each
+element in the #GList should be unreffed before the list is freed.
+
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a callback
+
+
+
+ user data passed to @func
+
+
+
+
+
+ configure @auth to be used as the authentication manager of @client.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ Set the #GstRTSPConnection of @client. This function takes ownership of
+@conn.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPConnection
+
+
+
+
+
+ Set @mounts as the mount points for @client which it will use to map urls
+to media streams. These mount points are usually inherited from the server that
+created the client but can be overriden later.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+
+
+ Set @func as the callback that will be called when a new message needs to be
+sent to the client. @user_data is passed to @func and @notify is called when
+@user_data is no longer in use.
+
+By default, the client will send the messages on the #GstRTSPConnection that
+was configured with gst_rtsp_client_attach() was called.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPClientSendFunc
+
+
+
+ user data passed to @func
+
+
+
+ called when @user_data is no longer in use
+
+
+
+
+
+ Set @pool as the sessionpool for @client which it will use to find
+or allocate sessions. the sessionpool is usually inherited from the server
+that created the client but can be overridden later.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ configure @pool to be used as the thread pool of @client.
+
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a newly allocated string with comma-separated list of
+ unsupported options. An empty string must be returned if
+ all options are supported.
+
+
+
+
+ a #GstRTSPContext
+
+
+
+ a NULL-terminated array of strings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success,
+ otherwise an appropriate return code
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ The session
+
+
+
+ The message
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+ The client class structure.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This callback is called when @client wants to send @message. When @close is
+%TRUE, the connection should be closed when the message has been sent.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPMessage
+
+
+
+ close the connection
+
+
+
+ user data when registering the callback
+
+
+
+
+
+ This function will be called by the gst_rtsp_client_session_filter(). An
+implementation should return a value of #GstRTSPFilterResult.
+
+When this function returns #GST_RTSP_FILTER_REMOVE, @sess will be removed
+from @client.
+
+A return value of #GST_RTSP_FILTER_KEEP will leave @sess untouched in
+@client.
+
+A value of #GST_RTSP_FILTER_REF will add @sess to the result #GList of
+gst_rtsp_client_session_filter().
+
+ a #GstRTSPFilterResult.
+
+
+
+
+ a #GstRTSPClient object
+
+
+
+ a #GstRTSPSession in @client
+
+
+
+ user data that has been given to gst_rtsp_client_session_filter()
+
+
+
+
+
+ Information passed around containing the context of a request.
+
+ the server
+
+
+
+ the connection
+
+
+
+ the client
+
+
+
+ the complete request
+
+
+
+ the complete url parsed from @request
+
+
+
+ the parsed method of @uri
+
+
+
+ the current auth object or %NULL
+
+
+
+ authorisation token
+
+
+
+ the session, can be %NULL
+
+
+
+ the session media for the url can be %NULL
+
+
+
+ the media factory for the url, can be %NULL
+
+
+
+ the media for the url can be %NULL
+
+
+
+ the stream for the url can be %NULL
+
+
+
+ the response
+
+
+
+ the stream transport, can be %NULL
+
+
+
+
+
+
+
+
+ Pops @ctx off the context stack (verifying that @ctx
+is on the top of the stack).
+
+
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+ Pushes @ctx onto the context stack. The current
+context can then be received using gst_rtsp_context_get_current().
+
+
+
+
+
+ a ##GstRTSPContext
+
+
+
+
+
+ Get the current #GstRTSPContext. This object is retrieved from the
+current thread that is handling the request for a client.
+
+ a #GstRTSPContext
+
+
+
+
+
+ Possible return values for gst_rtsp_session_pool_filter().
+
+ Remove session
+
+
+ Keep session in the pool
+
+
+ Ref session in the result list
+
+
+
+ Function registered with gst_rtsp_stream_transport_set_keepalive() and called
+when the stream is active.
+
+
+
+
+
+ user data
+
+
+
+
+
+ A class that contains the GStreamer element along with a list of
+#GstRTSPStream objects that can produce data.
+
+This object is usually created from a #GstRTSPMediaFactory.
+
+ Create a new #GstRTSPMedia instance. @element is the bin element that
+provides the different streams. The #GstRTSPMedia object contains the
+element to produce RTP data for one or more related (audio/video/..)
+streams.
+
+Ownership is taken of @element.
+
+ a new #GstRTSPMedia object.
+
+
+
+
+ a #GstElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure an SDP on @media for receiving streams
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prepare @media for streaming. This function will create the objects
+to manage the streaming. A pipeline must have been set on @media with
+gst_rtsp_media_take_pipeline().
+
+It will preroll the pipeline and collect vital information about the streams
+such as the duration.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPThread to run the
+ bus handler or %NULL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add @media specific info to @sdp. @info is used to configure the connection
+information in the SDP.
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPInfo
+
+
+
+
+
+ Suspend @media. The state of the pipeline managed by @media is set to
+GST_STATE_NULL but all streams are kept. @media can be prepared again
+with gst_rtsp_media_unsuspend()
+
+@media must be prepared with gst_rtsp_media_prepare();
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unprepare @media. After this call, the media should be prepared again before
+it can be used again. If the media is set to be non-reusable, a new instance
+must be created.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unsuspend @media if it was in a suspended state. This method does nothing
+when the media was not in the suspended state.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Find all payloader elements, they should be named pay\%d in the
+element of @media, and create #GstRTSPStreams for them.
+
+Collect all dynamic elements, named dynpay\%d, and add them to
+the list of dynamic elements.
+
+Find all depayloader elements, they should be named depay\%d in the
+element of @media, and create #GstRTSPStreams for them.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Create a new stream in @media that provides RTP data on @pad.
+@pad should be a pad of an element inside @media->element.
+
+ a new #GstRTSPStream that remains valid for as long
+as @media exists.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstElement
+
+
+
+ a #GstPad
+
+
+
+
+
+ Find a stream in @media with @control as the control uri.
+
+ the #GstRTSPStream with
+control uri @control or %NULL when a stream with that control did
+not exist.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the control of the stream
+
+
+
+
+
+ Get the #GstRTSPAddressPool used as the address pool of @media.
+
+ the #GstRTSPAddressPool of @media.
+g_object_unref() after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the base_time that is used by the pipeline in @media.
+
+@media must be prepared before this method returns a valid base_time.
+
+ the base_time used by @media.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the kernel UDP buffer size.
+
+ the kernel UDP buffer size.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the clock that is used by the pipeline in @media.
+
+@media must be prepared before this method returns a valid clock object.
+
+ the #GstClock used by @media. unref after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the element that was used when constructing @media.
+
+ a #GstElement. Unref after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the latency that is used for receiving media.
+
+ latency in milliseconds
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the multicast interface used for @media.
+
+ the multicast interface for @media.
+g_free() after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the permissions object from @media.
+
+ a #GstRTSPPermissions object, unref after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the allowed profiles of @media.
+
+ a #GstRTSPProfile
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the allowed protocols of @media.
+
+ a #GstRTSPLowerTrans
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Gets if and how the media clock should be published according to RFC7273.
+
+ The GstRTSPPublishClockMode
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the current range as a string. @media must be prepared with
+gst_rtsp_media_prepare ().
+
+ The range as a string, g_free() after usage.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ for the PLAY request
+
+
+
+ the unit to use for the string
+
+
+
+
+
+ Get the amount of time to store retransmission data.
+
+ the amount of time to store retransmission data.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the status of @media. When @media is busy preparing, this function waits
+until @media is prepared or in error.
+
+ the status of @media.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Retrieve the stream with index @idx from @media.
+
+ the #GstRTSPStream at index
+@idx or %NULL when a stream with that index did not exist.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the stream index
+
+
+
+
+
+ Get how @media will be suspended.
+
+ #GstRTSPSuspendMode.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the #GstNetTimeProvider for the clock used by @media. The time provider
+will listen on @address and @port for client time requests.
+
+ the #GstNetTimeProvider of @media.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ an address or %NULL
+
+
+
+ a port or 0
+
+
+
+
+
+ Check if the pipeline for @media can be used for PLAY or RECORD methods.
+
+ The transport mode.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Configure an SDP on @media for receiving streams
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Check if the pipeline for @media will send an EOS down the pipeline before
+unpreparing.
+
+ %TRUE if the media will send EOS before unpreparing.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Check if the pipeline for @media can be reused after an unprepare.
+
+ %TRUE if the media can be reused
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Check if the pipeline for @media can be shared between multiple clients.
+
+ %TRUE if the media can be shared between clients.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Check if the pipeline for @media will be stopped when a client disconnects
+without sending TEARDOWN.
+
+ %TRUE if the media will be stopped when a client disconnects
+ without sending TEARDOWN.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Check if @media can provide a #GstNetTimeProvider for its pipeline clock.
+
+Use gst_rtsp_media_get_time_provider() to get the network clock.
+
+ %TRUE if @media can provide a #GstNetTimeProvider.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the number of streams in this media.
+
+ The number of streams.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Prepare @media for streaming. This function will create the objects
+to manage the streaming. A pipeline must have been set on @media with
+gst_rtsp_media_take_pipeline().
+
+It will preroll the pipeline and collect vital information about the streams
+such as the duration.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPThread to run the
+ bus handler or %NULL
+
+
+
+
+
+ Seek the pipeline of @media to @range. @media must be prepared with
+gst_rtsp_media_prepare().
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPTimeRange
+
+
+
+
+
+ configure @pool to be used as the address pool of @media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Set the kernel UDP buffer size.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Configure the clock used for the media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ #GstClock to be used
+
+
+
+
+
+ Set or unset if an EOS event will be sent to the pipeline for @media before
+it is unprepared.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Configure the latency used for receiving media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ latency in milliseconds
+
+
+
+
+
+ configure @multicast_iface to be used for @media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a multicast interface name
+
+
+
+
+
+ Set @permissions on @media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPPermissions
+
+
+
+
+
+ Set the state of the pipeline managed by @media to @state
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the target state of the pipeline
+
+
+
+
+
+ Configure the allowed lower transport for @media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new flags
+
+
+
+
+
+ Configure the allowed lower transport for @media.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new flags
+
+
+
+
+
+ Sets if and how the media clock should be published according to RFC7273.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the clock publish mode
+
+
+
+
+
+ Set the amount of time to store retransmission packets.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Set or unset if the pipeline for @media can be reused after the pipeline has
+been unprepared.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Set or unset if the pipeline for @media can be shared will multiple clients.
+When @shared is %TRUE, client requests for this media will share the media
+pipeline.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Set the state of @media to @state and for the transports in @transports.
+
+@media must be prepared with gst_rtsp_media_prepare();
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the target state of the media
+
+
+
+
+a #GPtrArray of #GstRTSPStreamTransport pointers
+
+
+
+
+
+
+
+ Set or unset if the pipeline for @media should be stopped when a
+client disconnects without sending TEARDOWN.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Control how @ media will be suspended after the SDP has been generated and
+after a PAUSE request has been performed.
+
+Media must be unprepared when setting the suspend mode.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new #GstRTSPSuspendMode
+
+
+
+
+
+ Sets if the media pipeline can work in PLAY or RECORD mode
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Add @media specific info to @sdp. @info is used to configure the connection
+information in the SDP.
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPInfo
+
+
+
+
+
+ Suspend @media. The state of the pipeline managed by @media is set to
+GST_STATE_NULL but all streams are kept. @media can be prepared again
+with gst_rtsp_media_unsuspend()
+
+@media must be prepared with gst_rtsp_media_prepare();
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Set @pipeline as the #GstPipeline for @media. Ownership is
+taken of @pipeline.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstPipeline
+
+
+
+
+
+ Unprepare @media. After this call, the media should be prepared again before
+it can be used again. If the media is set to be non-reusable, a new instance
+must be created.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Unsuspend @media if it was in a suspended state. This method does nothing
+when the media was not in the suspended state.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Set @media to provide a #GstNetTimeProvider.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ if a #GstNetTimeProvider should be used
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The RTSP media class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstRTSPThread to run the
+ bus handler or %NULL
+
+
+
+
+
+
+
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+
+
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+
+
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPInfo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRUE on success.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+
+
+
+
+
+
+
+ The definition and logic for constructing the pipeline for a media. The media
+can contain multiple streams like audio and video.
+
+ Create a new #GstRTSPMediaFactory instance.
+
+ a new #GstRTSPMediaFactory object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Construct the media object and create its streams. Implementations
+should create the needed gstreamer elements and add them to the result
+object. No state changes should be performed on them yet.
+
+One or more GstRTSPStream objects should be created from the result
+with gst_rtsp_media_create_stream ().
+
+After the media is constructed, it can be configured and then prepared
+with gst_rtsp_media_prepare ().
+
+ a new #GstRTSPMedia if the media could be prepared.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+ Construct and return a #GstElement that is a #GstBin containing
+the elements to use for streaming the media.
+
+The bin should contain payloaders pay\%d for each stream. The default
+implementation of this function returns the bin created from the
+launch parameter.
+
+ a new #GstElement.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A convenience method to add @role with @fieldname and additional arguments to
+the permissions of @factory. If @factory had no permissions, new permissions
+will be created and the role will be added to it.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ a role
+
+
+
+ the first field name
+
+
+
+ additional arguments
+
+
+
+
+
+ Construct the media object and create its streams. Implementations
+should create the needed gstreamer elements and add them to the result
+object. No state changes should be performed on them yet.
+
+One or more GstRTSPStream objects should be created from the result
+with gst_rtsp_media_create_stream ().
+
+After the media is constructed, it can be configured and then prepared
+with gst_rtsp_media_prepare ().
+
+ a new #GstRTSPMedia if the media could be prepared.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+ Construct and return a #GstElement that is a #GstBin containing
+the elements to use for streaming the media.
+
+The bin should contain payloaders pay\%d for each stream. The default
+implementation of this function returns the bin created from the
+launch parameter.
+
+ a new #GstElement.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+ Get the #GstRTSPAddressPool used as the address pool of @factory.
+
+ the #GstRTSPAddressPool of @factory. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the kernel UDP buffer size.
+
+ the kernel UDP buffer size.
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Returns the clock that is going to be used by the pipelines
+of all medias created from this factory.
+
+ The GstClock
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the latency that is used for receiving media
+
+ latency in milliseconds
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the gst_parse_launch() pipeline description that will be used in the
+default prepare vmethod.
+
+ the configured launch description. g_free() after
+usage.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Return the GType of the GstRTSPMedia subclass this
+factory will create.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the multicast interface used for @factory.
+
+ the multicast interface for @factory. g_free() after
+usage.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the permissions object from @factory.
+
+ a #GstRTSPPermissions object, unref after usage.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the allowed profiles of @factory.
+
+ a #GstRTSPProfile
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the allowed protocols of @factory.
+
+ a #GstRTSPLowerTrans
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Gets if and how the media clock should be published according to RFC7273.
+
+ The GstRTSPPublishClockMode
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get the time that is stored for retransmission purposes
+
+ a #GstClockTime
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get how media created from this factory will be suspended.
+
+ a #GstRTSPSuspendMode.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get if media created from this factory can be used for PLAY or RECORD
+methods.
+
+ The supported transport modes.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get if media created from this factory will have an EOS event sent to the
+pipeline before shutdown.
+
+ %TRUE if the media will receive EOS before shutdown.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Get if media created from this factory can be shared between clients.
+
+ %TRUE if the media will be shared between clients.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ configure @pool to be used as the address pool of @factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Set the kernel UDP buffer size.
+
+
+
+
+
+ a #GstRTSPMedia
+
+
+
+ the new value
+
+
+
+
+
+ Configures a specific clock to be used by the pipelines
+of all medias created from this factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the clock to be used by the media factory
+
+
+
+
+
+ Configure if media created from this factory will have an EOS sent to the
+pipeline before shutdown.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new value
+
+
+
+
+
+ Configure the latency used for receiving media
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ latency in milliseconds
+
+
+
+
+
+ The gst_parse_launch() line to use for constructing the pipeline in the
+default prepare vmethod.
+
+The pipeline description should return a GstBin as the toplevel element
+which can be accomplished by enclosing the description with brackets '('
+')'.
+
+The description should return a pipeline with payloaders named pay0, pay1,
+etc.. Each of the payloaders will result in a stream.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the launch description
+
+
+
+
+
+ Configure the GType of the GstRTSPMedia subclass to
+create (by default, overridden construct vmethods
+may of course do something different)
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the GType of the class to create
+
+
+
+
+
+ configure @multicast_iface to be used for @factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ a multicast interface name
+
+
+
+
+
+ Set @permissions on @factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ a #GstRTSPPermissions
+
+
+
+
+
+ Configure the allowed profiles for @factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new flags
+
+
+
+
+
+ Configure the allowed lower transport for @factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new flags
+
+
+
+
+
+ Sets if and how the media clock should be published according to RFC7273.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the clock publish mode
+
+
+
+
+
+ Configure the time to store for possible retransmission
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ a #GstClockTime
+
+
+
+
+
+ Configure if media created from this factory can be shared between clients.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new value
+
+
+
+
+
+ Configure if media created from this factory should be stopped
+when a client disconnects without sending TEARDOWN.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new value
+
+
+
+
+
+ Configure how media created from this factory will be suspended.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new #GstRTSPSuspendMode
+
+
+
+
+
+ Configure if this factory creates media for PLAY or RECORD modes.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the new value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GstRTSPMediaFactory class structure.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a new #GstElement.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+
+
+
+ a new #GstRTSPMedia if the media could be prepared.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the url used
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A media factory that creates a pipeline to play and uri.
+
+ Create a new #GstRTSPMediaFactoryURI instance.
+
+ a new #GstRTSPMediaFactoryURI object.
+
+
+
+
+ Get the URI that will provide media for this factory.
+
+ the configured URI. g_free() after usage.
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Set the URI of the resource that will be streamed by this factory.
+
+
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+ the uri the stream
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GstRTSPMediaFactoryURI class structure.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The state of the media pipeline.
+
+ media pipeline not prerolled
+
+
+ media pipeline is busy doing a clean
+ shutdown.
+
+
+ media pipeline is prerolling
+
+
+ media pipeline is prerolled
+
+
+ media is suspended
+
+
+ media pipeline is in error
+
+
+
+ Creates a #GstRTSPMediaFactory object for a given url.
+
+ Make a new mount points object.
+
+ a new #GstRTSPMountPoints
+
+
+
+
+ Make a path string from @url.
+
+ a path string for @url, g_free() after usage.
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ Attach @factory to the mount point @path in @mounts.
+
+@path is of the form (/node)+. Any previous mount point will be freed.
+
+Ownership is taken of the reference on @factory so that @factory should not be
+used after calling this function.
+
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a mount point
+
+
+
+ a #GstRTSPMediaFactory
+
+
+
+
+
+ Make a path string from @url.
+
+ a path string for @url, g_free() after usage.
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+ Find the factory in @mounts that has the longest match with @path.
+
+If @matched is %NULL, @path will match the factory exactly otherwise
+the amount of characters that matched is returned in @matched.
+
+ the #GstRTSPMediaFactory for @path.
+g_object_unref() after usage.
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a mount point
+
+
+
+ the amount of @path matched
+
+
+
+
+
+ Remove the #GstRTSPMediaFactory associated with @path in @mounts.
+
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a mount point
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The class for the media mounts object.
+
+
+
+
+
+
+ a path string for @url, g_free() after usage.
+
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+ a #GstRTSPUrl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The opaque permissions structure. It is used to define the permissions
+of objects in different roles.
+
+
+
+
+ Create a new empty Authorization permissions.
+
+ a new empty authorization permissions.
+
+
+
+
+ Add a new @role to @permissions with the given variables. The fields
+are the same layout as gst_structure_new().
+
+
+
+
+
+ a #GstRTSPPermissions
+
+
+
+ a role
+
+
+
+ the first field name
+
+
+
+ additional arguments
+
+
+
+
+
+ Add a new @role to @permissions with the given variables. Structure fields
+are set according to the varargs in a manner similar to gst_structure_new().
+
+
+
+
+
+ a #GstRTSPPermissions
+
+
+
+ a role
+
+
+
+ the first field name
+
+
+
+ additional fields to add
+
+
+
+
+
+ Get all permissions for @role in @permissions.
+
+ the structure with permissions for @role. It
+remains valid for as long as @permissions is valid.
+
+
+
+
+ a #GstRTSPPermissions
+
+
+
+ a role
+
+
+
+
+
+ Check if @role in @permissions is given permission for @permission.
+
+ %TRUE if @role is allowed @permission.
+
+
+
+
+ a #GstRTSPPermissions
+
+
+
+ a role
+
+
+
+ a permission
+
+
+
+
+
+ Remove all permissions for @role in @permissions.
+
+
+
+
+
+ a #GstRTSPPermissions
+
+
+
+ a role
+
+
+
+
+
+
+ Whether the clock and possibly RTP/clock offset should be published according to RFC7273.
+
+ Publish nothing
+
+
+ Publish the clock but not the offset
+
+
+ Publish the clock and offset
+
+
+
+ Function registered with gst_rtsp_stream_transport_set_callbacks() and
+called when @buffer must be sent on @channel.
+
+ %TRUE on success
+
+
+
+
+ a #GstBuffer
+
+
+
+ a channel
+
+
+
+ user data
+
+
+
+
+
+ This object listens on a port, creates and manages the clients connected to
+it.
+
+ Create a new #GstRTSPServer instance.
+
+ a new #GstRTSPServer
+
+
+
+
+ A default #GSocketSourceFunc that creates a new #GstRTSPClient to accept and handle a
+new connection on @socket or @server.
+
+ TRUE if the source could be connected, FALSE if an error occurred.
+
+
+
+
+ a #GSocket
+
+
+
+ the condition on @source
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Attaches @server to @context. When the mainloop for @context is run, the
+server will be dispatched. When @context is %NULL, the default context will be
+used).
+
+This function should be called when the server properties and urls are fully
+configured and the server is ready to start.
+
+This takes a reference on @server until the source is destroyed. Note that
+if @context is not the default main context as returned by
+g_main_context_default() (or %NULL), g_source_remove() cannot be used to
+destroy the source. In that case it is recommended to use
+gst_rtsp_server_create_source() and attach it to @context manually.
+
+ the ID (greater than 0) for the source within the GMainContext.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GMainContext
+
+
+
+
+
+ Call @func for each client managed by @server. The result value of @func
+determines what happens to the client. @func will be called with @server
+locked so no further actions on @server can be performed from @func.
+
+If @func returns #GST_RTSP_FILTER_REMOVE, the client will be removed from
+@server.
+
+If @func returns #GST_RTSP_FILTER_KEEP, the client will remain in @server.
+
+If @func returns #GST_RTSP_FILTER_REF, the client will remain in @server but
+will also be added with an additional ref to the result #GList of this
+function..
+
+When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each client.
+
+ a #GList with all
+clients for which @func returned #GST_RTSP_FILTER_REF. After usage, each
+element in the #GList should be unreffed before the list is freed.
+
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a callback
+
+
+
+ user data passed to @func
+
+
+
+
+
+ Create a #GSocket for @server. The socket will listen on the
+configured service.
+
+ the #GSocket for @server or %NULL when an error
+occurred.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GCancellable
+
+
+
+
+
+ Create a #GSource for @server. The new source will have a default
+#GSocketSourceFunc of gst_rtsp_server_io_func().
+
+@cancellable if not %NULL can be used to cancel the source, which will cause
+the source to trigger, reporting the current condition (which is likely 0
+unless cancellation happened at the same time as a condition change). You can
+check for this in the callback using g_cancellable_is_cancelled().
+
+This takes a reference on @server until @source is destroyed.
+
+ the #GSource for @server or %NULL when an error
+occurred. Free with g_source_unref ()
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GCancellable or %NULL.
+
+
+
+
+
+ Get the address on which the server will accept connections.
+
+ the server address. g_free() after usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the #GstRTSPAuth used as the authentication manager of @server.
+
+ the #GstRTSPAuth of @server. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ The maximum amount of queued requests for the server.
+
+ the server backlog.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the port number where the server was bound to.
+
+ the port number
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the #GstRTSPMountPoints used as the mount points of @server.
+
+ the #GstRTSPMountPoints of @server. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the service on which the server will accept connections.
+
+ the service. use g_free() after usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the #GstRTSPSessionPool used as the session pool of @server.
+
+ the #GstRTSPSessionPool used for sessions. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Get the #GstRTSPThreadPool used as the thread pool of @server.
+
+ the #GstRTSPThreadPool of @server. g_object_unref() after
+usage.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+
+
+ Configure @server to accept connections on the given address.
+
+This function must be called before the server is bound.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ the address
+
+
+
+
+
+ configure @auth to be used as the authentication manager of @server.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GstRTSPAuth
+
+
+
+
+
+ configure the maximum amount of requests that may be queued for the
+server.
+
+This function must be called before the server is bound.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ the backlog
+
+
+
+
+
+ configure @mounts to be used as the mount points of @server.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GstRTSPMountPoints
+
+
+
+
+
+ Configure @server to accept connections on the given service.
+@service should be a string containing the service name (see services(5)) or
+a string containing a port number between 1 and 65535.
+
+When @service is set to "0", the server will listen on a random free
+port. The actual used port can be retrieved with
+gst_rtsp_server_get_bound_port().
+
+This function must be called before the server is bound.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ the service
+
+
+
+
+
+ configure @pool to be used as the session pool of @server.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ configure @pool to be used as the thread pool of @server.
+
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+
+
+ Take an existing network socket and use it for an RTSP connection. This
+is used when transferring a socket from an HTTP server which should be used
+as an RTSP over HTTP tunnel. The @initial_buffer contains any remaining data
+that the HTTP server read from the socket while parsing the HTTP header.
+
+ TRUE if all was ok, FALSE if an error occurred.
+
+
+
+
+ a #GstRTSPServer
+
+
+
+ a network socket
+
+
+
+ the IP address of the remote client
+
+
+
+ the port used by the other end
+
+
+
+ any initial data that was already read from the socket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The RTSP server class structure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This function will be called by the gst_rtsp_server_client_filter(). An
+implementation should return a value of #GstRTSPFilterResult.
+
+When this function returns #GST_RTSP_FILTER_REMOVE, @client will be removed
+from @server.
+
+A return value of #GST_RTSP_FILTER_KEEP will leave @client untouched in
+@server.
+
+A value of #GST_RTSP_FILTER_REF will add @client to the result #GList of
+gst_rtsp_server_client_filter().
+
+ a #GstRTSPFilterResult.
+
+
+
+
+ a #GstRTSPServer object
+
+
+
+ a #GstRTSPClient in @server
+
+
+
+ user data that has been given to gst_rtsp_server_client_filter()
+
+
+
+
+
+
+
+ Session information kept by the server for a specific client.
+One client session, identified with a session id, can handle multiple medias
+identified with the url of a media.
+
+ Create a new #GstRTSPSession instance with @sessionid.
+
+ a new #GstRTSPSession
+
+
+
+
+ a session id
+
+
+
+
+
+ Allow @session to expire. This method must be called an equal
+amount of time as gst_rtsp_session_prevent_expire().
+
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Call @func for each media in @sess. The result value of @func determines
+what happens to the media. @func will be called with @sess
+locked so no further actions on @sess can be performed from @func.
+
+If @func returns #GST_RTSP_FILTER_REMOVE, the media will be removed from
+@sess.
+
+If @func returns #GST_RTSP_FILTER_KEEP, the media will remain in @sess.
+
+If @func returns #GST_RTSP_FILTER_REF, the media will remain in @sess but
+will also be added with an additional ref to the result #GList of this
+function..
+
+When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for all media.
+
+ a GList with all
+media for which @func returned #GST_RTSP_FILTER_REF. After usage, each
+element in the #GList should be unreffed before the list is freed.
+
+
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ a callback
+
+
+
+ user data passed to @func
+
+
+
+
+
+ Get the string that can be placed in the Session header field.
+
+ the Session header of @session.
+g_free() after usage.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Get the session media for @path. @matched will contain the number of matched
+characters of @path.
+
+ the configuration for @path in @sess.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the path for the media
+
+
+
+ the amount of matched characters
+
+
+
+
+
+ Get the sessionid of @session.
+
+ the sessionid of @session.
+The value remains valid as long as @session is alive.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Get the timeout value of @session.
+
+ the timeout of @session in seconds.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Check if @session timeout out.
+ Use gst_rtsp_session_is_expired_usec() instead.
+
+ %TRUE if @session timed out
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the current system time
+
+
+
+
+
+ Check if @session timeout out.
+
+ %TRUE if @session timed out
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the current monotonic time
+
+
+
+
+
+ Manage the media object @obj in @sess. @path will be used to retrieve this
+media from the session with gst_rtsp_session_get_media().
+
+Ownership is taken from @media.
+
+ a new @GstRTSPSessionMedia object.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the path for the media
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Get the amount of milliseconds till the session will expire.
+ Use gst_rtsp_session_next_timeout_usec() instead.
+
+ the amount of milliseconds since the session will time out.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the current system time
+
+
+
+
+
+ Get the amount of milliseconds till the session will expire.
+
+ the amount of milliseconds since the session will time out.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the current monotonic time
+
+
+
+
+
+ Prevent @session from expiring.
+
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Release the managed @media in @sess, freeing the memory allocated by it.
+
+ %TRUE if there are more media session left in @sess.
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Configure @session for a timeout of @timeout seconds. The session will be
+cleaned up when there is no activity for @timeout seconds.
+
+
+
+
+
+ a #GstRTSPSession
+
+
+
+ the new timeout
+
+
+
+
+
+ Update the last_access time of the session to the current time.
+
+
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This function will be called by the gst_rtsp_session_filter(). An
+implementation should return a value of #GstRTSPFilterResult.
+
+When this function returns #GST_RTSP_FILTER_REMOVE, @media will be removed
+from @sess.
+
+A return value of #GST_RTSP_FILTER_KEEP will leave @media untouched in
+@sess.
+
+A value of GST_RTSP_FILTER_REF will add @media to the result #GList of
+gst_rtsp_session_filter().
+
+ a #GstRTSPFilterResult.
+
+
+
+
+ a #GstRTSPSession object
+
+
+
+ a #GstRTSPSessionMedia in @sess
+
+
+
+ user data that has been given to gst_rtsp_session_filter()
+
+
+
+
+
+ State of a client session regarding a specific media identified by path.
+
+ Create a new #GstRTSPSessionMedia that manages the streams
+in @media for @path. @media should be prepared.
+
+Ownership is taken of @media.
+
+ a new #GstRTSPSessionMedia.
+
+
+
+
+ the path
+
+
+
+ the #GstRTSPMedia
+
+
+
+
+
+ Fill @range with the next available min and max channels for
+interleaved transport.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ a #GstRTSPRange
+
+
+
+
+
+ Get the base_time of the #GstRTSPMedia in @media
+
+ the base_time of the media.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+
+
+ Get the #GstRTSPMedia that was used when constructing @media
+
+ the #GstRTSPMedia of @media.
+Remains valid as long as @media is valid.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+
+
+ Retrieve the RTP-Info header string for all streams in @media
+with configured transports.
+
+ The RTP-Info as a string or
+%NULL when no RTP-Info could be generated, g_free() after usage.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+
+
+ Get the current RTSP state of @media.
+
+ the current RTSP state of @media.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+
+
+ Get a previously created #GstRTSPStreamTransport for the stream at @idx.
+
+ a #GstRTSPStreamTransport that is
+valid until the session of @media is unreffed.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ the stream index
+
+
+
+
+
+ Check if the path of @media matches @path. It @path matches, the amount of
+matched characters is returned in @matched.
+
+ %TRUE when @path matches the path of @media.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ a path
+
+
+
+ the amount of matched characters of @path
+
+
+
+
+
+ Set the RTSP state of @media to @state.
+
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ a #GstRTSPState
+
+
+
+
+
+ Tell the media object @media to change to @state.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ the new state
+
+
+
+
+
+ Configure the transport for @stream to @tr in @media.
+
+ the new or updated #GstRTSPStreamTransport for @stream.
+
+
+
+
+ a #GstRTSPSessionMedia
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An object that keeps track of the active sessions. This object is usually
+attached to a #GstRTSPServer object to manage the sessions in that server.
+
+ Create a new #GstRTSPSessionPool instance.
+
+ A new #GstRTSPSessionPool. g_object_unref() after
+usage.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Inspect all the sessions in @pool and remove the sessions that are inactive
+for more than their timeout.
+
+ the amount of sessions that got removed.
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ Create a new #GstRTSPSession object in @pool.
+
+ a new #GstRTSPSession.
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ Create a #GSource that will be dispatched when the session should be cleaned
+up.
+
+ a #GSource
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ Call @func for each session in @pool. The result value of @func determines
+what happens to the session. @func will be called with the session pool
+locked so no further actions on @pool can be performed from @func.
+
+If @func returns #GST_RTSP_FILTER_REMOVE, the session will be set to the
+expired state with gst_rtsp_session_set_expired() and removed from
+@pool.
+
+If @func returns #GST_RTSP_FILTER_KEEP, the session will remain in @pool.
+
+If @func returns #GST_RTSP_FILTER_REF, the session will remain in @pool but
+will also be added with an additional ref to the result GList of this
+function..
+
+When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for all sessions.
+
+ a GList with all
+sessions for which @func returned #GST_RTSP_FILTER_REF. After usage, each
+element in the GList should be unreffed before the list is freed.
+
+
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+ a callback
+
+
+
+ user data passed to @func
+
+
+
+
+
+ Find the session with @sessionid in @pool. The access time of the session
+will be updated with gst_rtsp_session_touch().
+
+ the #GstRTSPSession with @sessionid
+or %NULL when the session did not exist. g_object_unref() after usage.
+
+
+
+
+ the pool to search
+
+
+
+ the session id
+
+
+
+
+
+ Get the maximum allowed number of sessions in @pool. 0 means an unlimited
+amount of sessions.
+
+ the maximum allowed number of sessions.
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ Get the amount of active sessions in @pool.
+
+ the amount of active sessions in @pool.
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+
+
+ Remove @sess from @pool, releasing the ref that the pool has on @sess.
+
+ %TRUE if the session was found and removed.
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+ a #GstRTSPSession
+
+
+
+
+
+ Configure the maximum allowed number of sessions in @pool to @max.
+A value of 0 means an unlimited amount of sessions.
+
+
+
+
+
+ a #GstRTSPSessionPool
+
+
+
+ the maximum number of sessions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This function will be called by the gst_rtsp_session_pool_filter(). An
+implementation should return a value of #GstRTSPFilterResult.
+
+When this function returns #GST_RTSP_FILTER_REMOVE, @session will be removed
+from @pool.
+
+A return value of #GST_RTSP_FILTER_KEEP will leave @session untouched in
+@pool.
+
+A value of GST_RTSP_FILTER_REF will add @session to the result #GList of
+gst_rtsp_session_pool_filter().
+
+ a #GstRTSPFilterResult.
+
+
+
+
+ a #GstRTSPSessionPool object
+
+
+
+ a #GstRTSPSession in @pool
+
+
+
+ user data that has been given to gst_rtsp_session_pool_filter()
+
+
+
+
+
+ The function that will be called from the GSource watch on the session pool.
+
+The function will be called when the pool must be cleaned up because one or
+more sessions timed out.
+
+ %FALSE if the source should be removed.
+
+
+
+
+ a #GstRTSPSessionPool object
+
+
+
+ user data that has been given when registering the handler
+
+
+
+
+
+
+
+
+
+ The definition of a media stream.
+
+ Create a new media stream with index @idx that handles RTP data on
+@pad and has a payloader element @payloader if @pad is a source pad
+or a depayloader element @payloader if @pad is a sink pad.
+
+ a new #GstRTSPStream
+
+
+
+
+ an index
+
+
+
+ a #GstElement
+
+
+
+ a #GstPad
+
+
+
+
+
+ Add the transport in @trans to @stream. The media of @stream will
+then also be send to the values configured in @trans.
+
+@stream must be joined to a bin.
+
+@trans must contain a valid #GstRTSPTransport.
+
+ %TRUE if @trans was added
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Allocates RTP and RTCP ports.
+ This function shouldn't have been made public
+
+ %TRUE if the RTP and RTCP sockets have been succeccully allocated.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ protocol family
+
+
+
+ transport method
+
+
+
+ Whether to use client settings or not
+
+
+
+
+
+ Get the #GstRTSPAddressPool used as the address pool of @stream.
+
+ the #GstRTSPAddressPool of @stream.
+g_object_unref() after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the size of the UDP transmission buffer (in bytes)
+
+ the size of the UDP TX buffer
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Retrieve the current caps of @stream.
+
+ the #GstCaps of @stream.
+use gst_caps_unref() after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the control string to identify this stream.
+
+ the control string. g_free() after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get the configured DSCP QoS in of the outgoing sockets.
+
+ the DSCP QoS value of the outgoing sockets, or -1 if disbled.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the stream index.
+
+ the stream index.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the previous joined bin with gst_rtsp_stream_join_bin() or NULL.
+
+ the joined bin or NULL.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the configured MTU in the payloader of @stream.
+
+ the MTU of the payloader.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the multicast address of @stream for @family. The original
+#GstRTSPAddress is cached and copy is returned, so freeing the return value
+won't release the address from the pool.
+
+ the #GstRTSPAddress of @stream
+or %NULL when no address could be allocated. gst_rtsp_address_free()
+after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the #GSocketFamily
+
+
+
+
+
+ Get the multicast interface used for @stream.
+
+ the multicast interface for @stream.
+g_free() after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the allowed profiles of @stream.
+
+ a #GstRTSPProfile
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the allowed protocols of @stream.
+
+ a #GstRTSPLowerTrans
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the stream payload type.
+
+ the stream payload type.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Gets if and how the stream clock should be published according to RFC7273.
+
+ The GstRTSPPublishClockMode
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the payload-type used for retransmission of this stream
+
+ The retransmission PT.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the amount of time to store retransmission data.
+
+ the amount of time to store retransmission data.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the RTCP socket from @stream for a @family.
+
+@stream must be joined to a bin.
+
+ the RTCP socket or %NULL if no
+socket could be allocated for @family. Unref after usage
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the socket family
+
+
+
+
+
+ Get the RTP socket from @stream for a @family.
+
+@stream must be joined to a bin.
+
+ the RTP socket or %NULL if no
+socket could be allocated for @family. Unref after usage
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the socket family
+
+
+
+
+
+ Retrieve the current rtptime, seq and running-time. This is used to
+construct a RTPInfo reply header.
+
+ %TRUE when rtptime, seq and running-time could be determined.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ result RTP timestamp
+
+
+
+ result RTP seqnum
+
+
+
+ the clock rate
+
+
+
+ result running-time
+
+
+
+
+
+ Get the RTP session of this stream.
+
+ The RTP session of this stream. Unref after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Fill @server_port with the port pair used by the server. This function can
+only be called when @stream has been joined.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ result server port
+
+
+
+ the port family to get
+
+
+
+
+
+ Get the sinkpad associated with @stream.
+
+ the sinkpad. Unref after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the srcpad associated with @stream.
+
+ the srcpad. Unref after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the SRTP encoder for this stream.
+
+ The SRTP encoder for this stream. Unref after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Get the SSRC used by the RTP session of this stream. This function can only
+be called when @stream has been joined.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ result ssrc
+
+
+
+
+
+ Check if @stream has the control string @control.
+
+ %TRUE is @stream has @control as the control string
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a control string
+
+
+
+
+
+ Check if @stream is blocking on a #GstBuffer.
+
+ %TRUE if @stream is blocking
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ See gst_rtsp_stream_set_client_side()
+
+ TRUE if this #GstRTSPStream is client-side.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+ Check if @transport can be handled by stream
+
+ %TRUE if @transport can be handled by @stream.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstRTSPTransport
+
+
+
+
+
+ Join the #GstBin @bin that contains the element @rtpbin.
+
+@stream will link to @rtpbin, which must be inside @bin. The elements
+added to @bin will be set to the state given in @state.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstBin to join
+
+
+
+ a rtpbin element in @bin
+
+
+
+ the target state of the new elements
+
+
+
+
+
+ Remove the elements of @stream from @bin.
+
+ %TRUE on success.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstBin
+
+
+
+ a rtpbin #GstElement
+
+
+
+
+
+ Query the position of the stream in %GST_FORMAT_TIME. This only considers
+the RTP parts of the pipeline and not the RTCP parts.
+
+ %TRUE if the position could be queried
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ current position of a #GstRTSPStream
+
+
+
+
+
+ Query the stop of the stream in %GST_FORMAT_TIME. This only considers
+the RTP parts of the pipeline and not the RTCP parts.
+
+ %TRUE if the stop could be queried
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ current stop of a #GstRTSPStream
+
+
+
+
+
+ Handle an RTCP buffer for the stream. This method is usually called when a
+message has been received from a client using the TCP transport.
+
+This function takes ownership of @buffer.
+
+ a GstFlowReturn.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstBuffer
+
+
+
+
+
+ Handle an RTP buffer for the stream. This method is usually called when a
+message has been received from a client using the TCP transport.
+
+This function takes ownership of @buffer.
+
+ a GstFlowReturn.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstBuffer
+
+
+
+
+
+ Remove the transport in @trans from @stream. The media of @stream will
+not be sent to the values configured in @trans.
+
+@stream must be joined to a bin.
+
+@trans must contain a valid #GstRTSPTransport.
+
+ %TRUE if @trans was removed
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Creating a rtxsend bin
+
+ a #GstElement.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the session id
+
+
+
+
+
+ Reserve @address and @port as the address and port of @stream. The original
+#GstRTSPAddress is cached and copy is returned, so freeing the return value
+won't release the address from the pool.
+
+ the #GstRTSPAddress of @stream or %NULL when
+the address could be reserved. gst_rtsp_address_free() after usage.
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ an address
+
+
+
+ a port
+
+
+
+ n_ports
+
+
+
+ a TTL
+
+
+
+
+
+ configure @pool to be used as the address pool of @stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstRTSPAddressPool
+
+
+
+
+
+ Blocks or unblocks the dataflow on @stream.
+
+ %TRUE on success
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ boolean indicating we should block or unblock
+
+
+
+
+
+ Set the size of the UDP transmission buffer (in bytes)
+Needs to be set before the stream is joined to a bin.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the buffer size
+
+
+
+
+
+ Sets the #GstRTSPStream as a 'client side' stream - used for sending
+streams to an RTSP server via RECORD. This has the practical effect
+of changing which UDP port numbers are used when setting up the local
+side of the stream sending to be either the 'server' or 'client' pair
+of a configured UDP transport.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ TRUE if this #GstRTSPStream is running on the 'client' side of
+an RTSP connection.
+
+
+
+
+
+ Set the control string in @stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a control string
+
+
+
+
+
+ Configure the dscp qos of the outgoing sockets to @dscp_qos.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a new dscp qos value (0-63, or -1 to disable)
+
+
+
+
+
+ Configure the mtu in the payloader of @stream to @mtu.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a new MTU
+
+
+
+
+
+ configure @multicast_iface to be used for @stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a multicast interface name
+
+
+
+
+
+ Configure the allowed profiles for @stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the new profiles
+
+
+
+
+
+ Configure the allowed lower transport for @stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the new flags
+
+
+
+
+
+ Configure a pt map between @pt and @caps.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the pt
+
+
+
+ a #GstCaps
+
+
+
+
+
+ Sets if and how the stream clock should be published according to RFC7273.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the clock publish mode
+
+
+
+
+
+ Set the payload type (pt) for retransmission of this stream.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #guint
+
+
+
+
+
+ Set the amount of time to store retransmission packets.
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a #GstClockTime
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Call @func for each transport managed by @stream. The result value of @func
+determines what happens to the transport. @func will be called with @stream
+locked so no further actions on @stream can be performed from @func.
+
+If @func returns #GST_RTSP_FILTER_REMOVE, the transport will be removed from
+@stream.
+
+If @func returns #GST_RTSP_FILTER_KEEP, the transport will remain in @stream.
+
+If @func returns #GST_RTSP_FILTER_REF, the transport will remain in @stream but
+will also be added with an additional ref to the result #GList of this
+function..
+
+When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each transport.
+
+ a #GList with all
+transports for which @func returned #GST_RTSP_FILTER_REF. After usage, each
+element in the #GList should be unreffed before the list is freed.
+
+
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a callback
+
+
+
+ user data passed to @func
+
+
+
+
+
+ Update the new crypto information for @ssrc in @stream. If information
+for @ssrc did not exist, it will be added. If information
+for @ssrc existed, it will be replaced. If @crypto is %NULL, it will
+be removed from @stream.
+
+ %TRUE if @crypto could be updated
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ the SSRC
+
+
+
+ a #GstCaps with crypto info
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A Transport description for a stream
+
+ Create a new #GstRTSPStreamTransport that can be used to manage
+@stream with transport @tr.
+
+ a new #GstRTSPStreamTransport
+
+
+
+
+ a #GstRTSPStream
+
+
+
+ a GstRTSPTransport
+
+
+
+
+
+ Get the RTP-Info string for @trans and @start_time.
+
+ the RTPInfo string for @trans
+and @start_time or %NULL when the RTP-Info could not be
+determined. g_free() after usage.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a star time
+
+
+
+
+
+ Get the #GstRTSPStream used when constructing @trans.
+
+ the stream used when constructing @trans.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Get the transport configured in @trans.
+
+ the transport configured in @trans. It remains
+valid for as long as @trans is valid.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Get the url configured in @trans.
+
+ the url configured in @trans.
+It remains valid for as long as @trans is valid.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Check if @trans is timed out.
+
+ %TRUE if @trans timed out.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Signal the installed keep_alive callback for @trans.
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+
+
+ Receive @buffer on @channel @trans.
+
+ a #GstFlowReturn. Returns GST_FLOW_NOT_LINKED when @channel is not
+ configured in the transport of @trans.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a channel
+
+
+
+ a #GstBuffer
+
+
+
+
+
+ Send @buffer to the installed RTCP callback for @trans.
+
+ %TRUE on success
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a #GstBuffer
+
+
+
+
+
+ Send @buffer to the installed RTP callback for @trans.
+
+ %TRUE on success
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a #GstBuffer
+
+
+
+
+
+ Activate or deactivate datatransfer configured in @trans.
+
+ %TRUE when the state was changed.
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ new state of @trans
+
+
+
+
+
+ Install callbacks that will be called when data for a stream should be sent
+to a client. This is usually used when sending RTP/RTCP over TCP.
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a callback called when RTP should be sent
+
+
+
+ a callback called when RTCP should be sent
+
+
+
+ user data passed to callbacks
+
+
+
+ called with the user_data when no longer needed.
+
+
+
+
+
+ Install callbacks that will be called when RTCP packets are received from the
+receiver of @trans.
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a callback called when the receiver is active
+
+
+
+ user data passed to callback
+
+
+
+ called with the user_data when no longer needed.
+
+
+
+
+
+ Set the timed out state of @trans to @timedout
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ timed out value
+
+
+
+
+
+ Set @tr as the client transport. This function takes ownership of the
+passed @tr.
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a client #GstRTSPTransport
+
+
+
+
+
+ Set @url as the client url.
+
+
+
+
+
+ a #GstRTSPStreamTransport
+
+
+
+ a client #GstRTSPUrl
+
+
+
+
+
+ parent instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This function will be called by the gst_rtsp_stream_transport_filter(). An
+implementation should return a value of #GstRTSPFilterResult.
+
+When this function returns #GST_RTSP_FILTER_REMOVE, @trans will be removed
+from @stream.
+
+A return value of #GST_RTSP_FILTER_KEEP will leave @trans untouched in
+@stream.
+
+A value of #GST_RTSP_FILTER_REF will add @trans to the result #GList of
+gst_rtsp_stream_transport_filter().
+
+ a #GstRTSPFilterResult.
+
+
+
+
+ a #GstRTSPStream object
+
+
+
+ a #GstRTSPStreamTransport in @stream
+
+
+
+ user data that has been given to gst_rtsp_stream_transport_filter()
+
+
+
+
+
+
+
+ The suspend mode of the media pipeline. A media pipeline is suspended right
+after creating the SDP and when the client performs a PAUSED request.
+
+ Media is not suspended
+
+
+ Media is PAUSED in suspend
+
+
+ The media is set to NULL when suspended
+
+
+
+ Structure holding info about a mainloop running in a thread
+
+ parent #GstMiniObject
+
+
+
+ the thread type
+
+
+
+ a #GMainContext
+
+
+
+ a #GMainLoop
+
+
+
+ Create a new thread object that can run a mainloop.
+
+ a #GstRTSPThread.
+
+
+
+
+ the thread type
+
+
+
+
+
+ Reuse the mainloop of @thread
+
+ %TRUE if the mainloop could be reused
+
+
+
+
+ a #GstRTSPThread
+
+
+
+
+
+ Stop and unref @thread. When no threads are using the mainloop, the thread
+will be stopped and the final ref to @thread will be released.
+
+
+
+
+
+ a #GstRTSPThread
+
+
+
+
+
+
+ The thread pool structure.
+
+ Create a new #GstRTSPThreadPool instance.
+
+ a new #GstRTSPThreadPool
+
+
+
+
+ Wait for all tasks to be stopped and free all allocated resources. This is
+mainly used in test suites to ensure proper cleanup of internal data
+structures.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get a new #GstRTSPThread for @type and @ctx.
+
+ a new #GstRTSPThread,
+gst_rtsp_thread_stop() after usage
+
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+ the #GstRTSPThreadType
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get the maximum number of threads used for client connections.
+See gst_rtsp_thread_pool_set_max_threads().
+
+ the maximum number of threads.
+
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+
+
+ Get a new #GstRTSPThread for @type and @ctx.
+
+ a new #GstRTSPThread,
+gst_rtsp_thread_stop() after usage
+
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+ the #GstRTSPThreadType
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+ Set the maximum threads used by the pool to handle client requests.
+A value of 0 will use the pool mainloop, a value of -1 will use an
+unlimited number of threads.
+
+
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+ maximum threads
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Class for managing threads.
+
+
+
+
+ a #GThreadPool used internally
+
+
+
+
+
+ a new #GstRTSPThread,
+gst_rtsp_thread_stop() after usage
+
+
+
+
+ a #GstRTSPThreadPool
+
+
+
+ the #GstRTSPThreadType
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Different thread types
+
+ a thread to handle the client communication
+
+
+ a thread to handle media
+
+
+
+ An opaque object used for checking authorisations.
+It is generated after successful authentication.
+
+
+
+
+ Create a new Authorization token with the given fieldnames and values.
+Arguments are given similar to gst_structure_new().
+
+ a new authorization token.
+
+
+
+
+ the first fieldname
+
+
+
+ additional arguments
+
+
+
+
+
+ Create a new empty Authorization token.
+
+ a new empty authorization token.
+
+
+
+
+ Create a new Authorization token with the given fieldnames and values.
+Arguments are given similar to gst_structure_new_valist().
+
+ a new authorization token.
+
+
+
+
+ the first fieldname
+
+
+
+ additional arguments
+
+
+
+
+
+ Get the string value of @field in @token.
+
+ the string value of @field in
+@token or %NULL when @field is not defined in @token. The string
+becomes invalid when you free @token.
+
+
+
+
+ a #GstRTSPToken
+
+
+
+ a field name
+
+
+
+
+
+ Access the structure of the token.
+
+ The structure of the token. The structure is still
+owned by the token, which means that you should not free it and that the
+pointer becomes invalid when you free the token.
+
+MT safe.
+
+
+
+
+ The #GstRTSPToken.
+
+
+
+
+
+ Check if @token has a boolean @field and if it is set to %TRUE.
+
+ %TRUE if @token has a boolean field named @field set to %TRUE.
+
+
+
+
+ a #GstRTSPToken
+
+
+
+ a field name
+
+
+
+
+
+ Get a writable version of the structure.
+
+ The structure of the token. The structure is still
+owned by the token, which means that you should not free it and that the
+pointer becomes invalid when you free the token. This function checks if
+@token is writable and will never return %NULL.
+
+MT safe.
+
+
+
+
+ The #GstRTSPToken.
+
+
+
+
+
+
+ The supported modes of the media.
+
+ Transport supports PLAY mode
+
+
+ Transport supports RECORD mode
+
+
+
+ Used with gst_rtsp_address_pool_add_range() to bind to all
+IPv4 addresses
+
+
+
+ Used with gst_rtsp_address_pool_add_range() to bind to all
+IPv6 addresses
+
+
+
+ Check a new connection
+
+
+
+ Check if access is allowed to a factory.
+When access is not allowed an 404 Not Found is sent in the response.
+
+
+
+ Check if media can be constructed from a media factory
+A response should be sent on error.
+
+
+
+ Check if the client can specify TTL, destination and
+port pair in multicast. No response is sent when the check returns
+%FALSE.
+
+
+
+ Check the URL and methods
+
+
+
+ G_TYPE_BOOLEAN, %TRUE if the media can be accessed, %FALSE will
+return a 404 Not Found error when trying to access the media.
+
+
+
+ G_TYPE_BOOLEAN, %TRUE if the media can be constructed, %FALSE will
+return a 404 Not Found error when trying to access the media.
+
+
+
+ G_TYPE_STRING, the role to use when dealing with media factories
+
+The default #GstRTSPAuth object uses this string in the token to find the
+role of the media factory. It will then retrieve the #GstRTSPPermissions of
+the media factory and retrieve the role with the same name.
+
+
+
+ G_TYPE_BOOLEAN, %TRUE if the client can specify TTL, destination and
+ port pair in multicast.
+
+
+
+
+
+
+
+
+
+
+
+ Get the current #GstRTSPContext. This object is retrieved from the
+current thread that is handling the request for a client.
+
+ a #GstRTSPContext
+
+
+
+
+
+
+
+
+
+ Get parameters (not implemented yet)
+
+ a #GstRTSPResult
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+ Set parameters (not implemented yet)
+
+ a #GstRTSPResult
+
+
+
+
+ a #GstRTSPClient
+
+
+
+ a #GstRTSPContext
+
+
+
+
+
+ Add @media specific info to @sdp. @info is used to configure the connection
+information in the SDP.
+
+ TRUE on success.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPInfo
+
+
+
+ a #GstRTSPMedia
+
+
+
+
+
+ Add info from @stream to @sdp.
+
+ TRUE on success.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPInfo
+
+
+
+ a #GstRTSPStream
+
+
+
+
+
+
diff --git a/gir-files/GstSdp-1.0.gir b/gir-files/GstSdp-1.0.gir
new file mode 100644
index 000000000..db78f9dce
--- /dev/null
+++ b/gir-files/GstSdp-1.0.gir
@@ -0,0 +1,4309 @@
+
+
+
+
+
+
+
+
+ The different cache types
+
+ The envelope key MUST NOT be cached
+
+
+ The envelope key MUST be cached
+
+
+ The envelope key MUST be cached, but only
+ to be used for the specific CSB.
+
+
+
+
+
+ The encryption algorithm used to encrypt the Encr data field
+
+ no encryption
+
+
+ AES-CM using a 128-bit key
+
+
+ AES Key Wrap using a 128-bit key
+
+
+
+
+
+ The key validity type
+
+ No specific usage rule
+
+
+ The key is associated with the SPI/MKI
+
+
+ The key has a start and expiration time
+
+
+
+ The type of key.
+
+ a TEK Generation Key
+
+
+ Traffic-Encrypting Key
+
+
+
+ Specifies the authentication algorithm used
+
+ no authentication
+
+
+ HMAC-SHA-1-160
+
+
+
+ The Security policy Map item for SRTP
+
+ The security policy applied for the stream with @ssrc
+
+
+
+ the SSRC that must be used for the stream
+
+
+
+ current rollover counter
+
+
+
+
+ Specifies the method of uniquely mapping Crypto Sessions to the security
+protocol sessions.
+
+
+
+
+ Structure holding the information of the MIKEY message
+
+
+
+
+ the version
+
+
+
+ the #GstMIKEYType message type
+
+
+
+ verify flag
+
+
+
+ a #GstMIKEYPRFFunc
+
+
+
+ Identifies the Crypto Session Bundle
+
+
+
+ a #GstMIKEYMapType
+
+
+
+ map info array of type depending on @map_type
+
+
+
+
+
+ the payload array of #GstMIKEYPayload
+
+
+
+
+
+ Make a new MIKEY message.
+
+ a new #GstMIKEYMessage on success
+
+
+
+
+ Make a new #GstMIKEYMessage from @bytes.
+
+ a new #GstMIKEYMessage
+
+
+
+
+ a #GBytes
+
+
+
+ a #GstMIKEYDecryptInfo
+
+
+
+
+
+ Makes mikey message including:
+ - Security Policy Payload
+ - Key Data Transport Payload
+ - Key Data Sub-Payload
+
+ a #GstMIKEYMessage,
+or %NULL if there is no srtp information in the caps.
+
+
+
+
+ a #GstCaps, including SRTP parameters (srtp/srtcp cipher, authorization, key data)
+
+
+
+
+
+ Parse @size bytes from @data into a #GstMIKEYMessage. @info contains the
+parameters to decrypt and verify the data.
+
+ a #GstMIKEYMessage on success or %NULL when parsing failed and
+@error will be set.
+
+
+
+
+ bytes to read
+
+
+
+
+
+ length of @data
+
+
+
+ #GstMIKEYDecryptInfo
+
+
+
+
+
+ Add a Crypto policy for SRTP to @msg.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ The security policy applied for the stream with @ssrc
+
+
+
+ the SSRC that must be used for the stream
+
+
+
+ current rollover counter
+
+
+
+
+
+ Add a new payload to @msg.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ a #GstMIKEYPayload
+
+
+
+
+
+ Add a new PKE payload to @msg with the given parameters.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ envelope key cache indicator
+
+
+
+ the length of @data
+
+
+
+ the encrypted envelope key
+
+
+
+
+
+
+
+ Add a new RAND payload to @msg with the given parameters.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ the length of @rand
+
+
+
+ random data
+
+
+
+
+
+
+
+ Add a new RAND payload to @msg with @len random bytes.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ length
+
+
+
+
+
+ Add a new T payload to @msg with the given parameters.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ specifies the timestamp type used
+
+
+
+ The timestamp value of the specified @type
+
+
+
+
+
+
+
+ Add a new T payload to @msg that contains the current time
+in NTP-UTC format.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+
+
+
+ a #gchar, base64-encoded data
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+
+
+ Find the @nth occurence of the payload with @type in @msg.
+
+ the @nth #GstMIKEYPayload of @type.
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ a #GstMIKEYPayloadType
+
+
+
+ payload to find
+
+
+
+
+
+ Get the policy information of @msg at @idx.
+
+ a #GstMIKEYMapSRTP
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ an index
+
+
+
+
+
+ Get the number of crypto sessions in @msg.
+
+ the number of crypto sessions
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+
+
+ Get the number of payloads in @msg.
+
+ the number of payloads in @msg
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+
+
+ Get the #GstMIKEYPayload at @idx in @msg
+
+ the #GstMIKEYPayload at @idx. The payload
+remains valid for as long as it is part of @msg.
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ an index
+
+
+
+
+
+ Insert a Crypto Session map for SRTP in @msg at @idx
+
+When @idx is -1, the policy will be appended.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ the index to insert at
+
+
+
+ the map info
+
+
+
+
+
+ Insert the @payload at index @idx in @msg. If @idx is -1, the payload
+will be appended to @msg.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ an index
+
+
+
+ a #GstMIKEYPayload
+
+
+
+
+
+ Remove the SRTP policy at @idx.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ the index to remove
+
+
+
+
+
+ Remove the payload in @msg at @idx
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ an index
+
+
+
+
+
+ Replace a Crypto Session map for SRTP in @msg at @idx with @map.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ the index to insert at
+
+
+
+ the map info
+
+
+
+
+
+ Replace the payload at @idx in @msg with @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ an index
+
+
+
+ a #GstMIKEYPayload
+
+
+
+
+
+ Set the information in @msg.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ a version
+
+
+
+ a #GstMIKEYType
+
+
+
+ verify flag
+
+
+
+ the #GstMIKEYPRFFunc function to use
+
+
+
+ the Crypto Session Bundle id
+
+
+
+ the #GstMIKEYCSIDMapType
+
+
+
+
+
+ Convert @msg to a #GBytes.
+
+ a new #GBytes for @msg.
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ a #GstMIKEYEncryptInfo
+
+
+
+
+
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYMessage
+
+
+
+ a #GstCaps to be filled with SRTP parameters (srtp/srtcp cipher, authorization, key data)
+
+
+
+
+
+
+ The PRF function that has been/will be used for key derivation
+
+ MIKEY-1 PRF function
+
+
+
+ Hold the common fields for all payloads
+
+
+
+
+ the payload type
+
+
+
+ length of the payload
+
+
+
+ Make a new #GstMIKEYPayload with @type.
+
+ a new #GstMIKEYPayload or %NULL on failure.
+
+
+
+
+ a #GstMIKEYPayloadType
+
+
+
+
+
+ Add a new sub payload to @payload.
+
+ %TRUE on success.
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ a #GstMIKEYPayload to add
+
+
+
+
+
+ Get the number of sub payloads of @payload. @payload should be of type
+%GST_MIKEY_PT_KEMAC.
+
+ the number of sub payloads in @payload
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+
+
+ Get the sub payload of @payload at @idx. @payload should be of type
+%GST_MIKEY_PT_KEMAC.
+
+ the #GstMIKEYPayload at @idx.
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ an index
+
+
+
+
+
+ Remove the sub payload at @idx in @payload.
+
+ %TRUE on success.
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the index to remove
+
+
+
+
+
+ Set the KEMAC parameters. @payload should point to a %GST_MIKEY_PT_KEMAC
+payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the #GstMIKEYEncAlg
+
+
+
+ a #GstMIKEYMacAlg
+
+
+
+
+
+ Set the key validity period in the %GST_MIKEY_PT_KEY_DATA @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the length of @vf_data
+
+
+
+ the Valid From data
+
+
+
+
+
+ the length of @vt_data
+
+
+
+ the Valid To data
+
+
+
+
+
+
+
+ Set @key_len bytes of @key_data of type @key_type as the key for the
+%GST_MIKEY_PT_KEY_DATA @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ a #GstMIKEYKeyDataType
+
+
+
+ the length of @key_data
+
+
+
+ the key of type @key_type
+
+
+
+
+
+
+
+ Set the salt key data. If @salt_len is 0 and @salt_data is %NULL, the
+salt data will be removed.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the length of @salt_data
+
+
+
+ the salt
+
+
+
+
+
+
+
+ Set the SPI/MKI validity in the %GST_MIKEY_PT_KEY_DATA @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the length of @spi_data
+
+
+
+ the SPI/MKI data
+
+
+
+
+
+
+
+ Set the PKE values in @payload. @payload must be of type
+%GST_MIKEY_PT_PKE.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ envelope key cache indicator
+
+
+
+ the length of @data
+
+
+
+ the encrypted envelope key
+
+
+
+
+
+
+
+ Set the random values in a %GST_MIKEY_PT_RAND @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the length of @rand
+
+
+
+ random values
+
+
+
+
+
+
+
+ Add a new parameter to the %GST_MIKEY_PT_SP @payload with @type, @len
+and @val.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ a type
+
+
+
+ a length
+
+
+
+ @len bytes of data
+
+
+
+
+
+
+
+ Get the number of security policy parameters in a %GST_MIKEY_PT_SP
+@payload.
+
+ the number of parameters in @payload
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+
+
+ Get the Security Policy parameter in a %GST_MIKEY_PT_SP @payload
+at @idx.
+
+ the #GstMIKEYPayloadSPParam at @idx in @payload
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ an index
+
+
+
+
+
+ Remove the Security Policy parameters from a %GST_MIKEY_PT_SP
+@payload at @idx.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ an index
+
+
+
+
+
+ Set the Security Policy parameters for @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the policy number
+
+
+
+ a #GstMIKEYSecProto
+
+
+
+
+
+ Set the timestamp in a %GST_MIKEY_PT_T @payload.
+
+ %TRUE on success
+
+
+
+
+ a #GstMIKEYPayload
+
+
+
+ the #GstMIKEYTSType
+
+
+
+ the timestamp value
+
+
+
+
+
+
+
+
+ A structure holding the KEMAC payload
+
+ the common #GstMIKEYPayload
+
+
+
+ the #GstMIKEYEncAlg
+
+
+
+ the #GstMIKEYMacAlg
+
+
+
+ the subpayloads
+
+
+
+
+
+
+ The Key data payload contains key material. It should be added as sub
+payload to the KEMAC.
+
+ the payload header
+
+
+
+
+
+
+ length of @key_data
+
+
+
+
+
+
+ the length of @salt_data, can be 0
+
+
+
+ salt data
+
+
+
+ the Key Validity type
+
+
+
+ length of @kv_data
+
+
+
+
+
+ key validity data
+
+
+
+
+
+
+ The Envelope data payload contains the encrypted envelope key that is
+used in the public-key transport to protect the data in the Key data
+transport payload. The encryption algorithm used is implicit from
+the certificate/public key used.
+
+ the common #GstMIKEYPayload
+
+
+
+ envelope key cache indicator
+
+
+
+ length of @data
+
+
+
+ the encrypted envelope key
+
+
+
+
+ The RAND payload consists of a (pseudo-)random bit-string
+
+ the payload header
+
+
+
+ the length of @rand
+
+
+
+ random values
+
+
+
+
+ The Security Policy payload defines a set of policies that apply to a
+specific security protocol
+
+ the payload header
+
+
+
+ the policy number
+
+
+
+ the security protocol
+
+
+
+ array of #GstMIKEYPayloadPSParam
+
+
+
+
+
+
+ A Type/Length/Value field for security paramaters
+
+ specifies the type of the parameter
+
+
+
+ specifies the length of @val
+
+
+
+ specifies the value of the parameter
+
+
+
+
+ The timestamp payload carries the timestamp information
+
+ the payload header
+
+
+
+ a #GstMIKEYTSType
+
+
+
+ the timestamp value
+
+
+
+
+ Different MIKEY Payload types.
+
+ Last payload
+
+
+ Key data transport payload
+
+
+ Envelope data payload
+
+
+ DH data payload
+
+
+ Signature payload
+
+
+ Timestamp payload
+
+
+ ID payload
+
+
+ Certificate Payload
+
+
+ Cert hash payload
+
+
+ Verfication message payload
+
+
+ Security Policy payload
+
+
+ RAND payload
+
+
+ Error payload
+
+
+ Key data sub-payload
+
+
+ General Extension Payload
+
+
+
+ Specifies the security protocol
+
+
+
+
+ This policy specifies the parameters for SRTP and SRTCP
+
+ Encryption algorithm
+
+
+ Session Encr. key length
+
+
+ Authentication algorithm
+
+
+ Session Auth. key length
+
+
+ Session Salt key length
+
+
+ SRTP Pseudo Random Function
+
+
+ Key derivation rate
+
+
+ SRTP encryption off/on, 0 if off, 1 if on
+
+
+ SRTCP encryption off/on, 0 if off, 1 if on
+
+
+ sender's FEC order
+
+
+ SRTP authentication off/on, 0 if off, 1 if on
+
+
+ Authentication tag length
+
+
+ SRTP prefix length
+
+
+
+ Specifies the timestamp type.
+
+ an NTP time in UTC timezone
+
+
+ an NTP time
+
+
+ a counter
+
+
+
+ Different MIKEY data types.
+
+ Invalid type
+
+
+ Initiator's pre-shared key message
+
+
+ Verification message of a Pre-shared key message
+
+
+ Initiator's public-key transport message
+
+
+ Verification message of a public-key message
+
+
+ Initiator's DH exchange message
+
+
+ Responder's DH exchange message
+
+
+ Error message
+
+
+
+ The supported MIKEY version 1.
+
+
+
+ The contents of the SDP "a=" field which contains a key/value pair.
+
+ the attribute key
+
+
+
+ the attribute value or NULL when it was a property attribute
+
+
+
+ Clear the attribute.
+
+ @GST_SDP_OK.
+
+
+
+
+ a #GstSDPAttribute
+
+
+
+
+
+ Set the attribute with @key and @value.
+
+ @GST_SDP_OK.
+
+
+
+
+ a #GstSDPAttribute
+
+
+
+ the key
+
+
+
+ the value
+
+
+
+
+
+
+ The contents of the SDP "b=" field which specifies the proposed bandwidth to
+be used by the session or media.
+
+ the bandwidth modifier type
+
+
+
+ the bandwidth in kilobits per second
+
+
+
+ Reset the bandwidth information in @bw.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPBandwidth
+
+
+
+
+
+ Set bandwidth information in @bw.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPBandwidth
+
+
+
+ the bandwidth modifier type
+
+
+
+ the bandwidth in kilobits per second
+
+
+
+
+
+
+ The contents of the SDP "c=" field which contains connection data.
+
+ the type of network. "IN" is defined to have the meaning
+ "Internet".
+
+
+
+ the type of @address.
+
+
+
+ the address
+
+
+
+ the time to live of the address
+
+
+
+ the number of layers
+
+
+
+ Clear the connection.
+
+ @GST_SDP_OK.
+
+
+
+
+ a #GstSDPConnection
+
+
+
+
+
+ Set the connection with the given parameters.
+
+ @GST_SDP_OK.
+
+
+
+
+ a #GstSDPConnection
+
+
+
+ the type of network. "IN" is defined to have the meaning
+"Internet".
+
+
+
+ the type of address.
+
+
+
+ the address
+
+
+
+ the time to live of the address
+
+
+
+ the number of layers
+
+
+
+
+
+
+ The contents of the SDP "k=" field which is used to convey encryption
+keys.
+
+ the encryption type
+
+
+
+ the encryption data
+
+
+
+
+ The contents of the SDP "m=" field with all related fields.
+
+ the media type
+
+
+
+ the transport port to which the media stream will be sent
+
+
+
+ the number of ports or -1 if only one port was specified
+
+
+
+ the transport protocol
+
+
+
+ an array of #gchar formats
+
+
+
+
+
+ the media title
+
+
+
+ array of #GstSDPConnection with media connection information
+
+
+
+
+
+ array of #GstSDPBandwidth with media bandwidth information
+
+
+
+
+
+ the encryption key
+
+
+
+ array of #GstSDPAttribute with the additional media attributes
+
+
+
+
+
+ Add the attribute with @key and @value to @media.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ a key
+
+
+
+ a value
+
+
+
+
+
+ Add the bandwidth information with @bwtype and @bandwidth to @media.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the bandwidth modifier type
+
+
+
+ the bandwidth in kilobits per second
+
+
+
+
+
+ Add the given connection parameters to @media.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the type of network. "IN" is defined to have the meaning
+"Internet".
+
+
+
+ the type of address.
+
+
+
+ the address
+
+
+
+ the time to live of the address
+
+
+
+ the number of layers
+
+
+
+
+
+ Add the format information to @media.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the format
+
+
+
+
+
+ Convert the contents of @media to a text string.
+
+ A dynamically allocated string representing the media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the number of attribute fields in @media.
+
+ the number of attributes in @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Mapping of attributes of #GstSDPMedia to #GstCaps
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ a #GstCaps
+
+
+
+
+
+ Get the number of bandwidth fields in @media.
+
+ the number of bandwidths in @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the number of connection fields in @media.
+
+ the number of connections in @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Allocate a new copy of @media and store the result in @copy. The value in
+@copy should be release with gst_sdp_media_free function.
+
+ a #GstSDPResult
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ pointer to new #GstSDPMedia
+
+
+
+
+
+ Get the number of formats in @media.
+
+ the number of formats in @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Free all resources allocated by @media. @media should not be used anymore after
+this function. This function should be used when @media was dynamically
+allocated with gst_sdp_media_new().
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the attribute at position @idx in @media.
+
+ the #GstSDPAttribute at position @idx.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Get the first attribute value for @key in @media.
+
+ the first attribute value for @key.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ a key
+
+
+
+
+
+ Get the @nth attribute value for @key in @media.
+
+ the @nth attribute value.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ a key
+
+
+
+ an index
+
+
+
+
+
+ Get the bandwidth at position @idx in @media.
+
+ the #GstSDPBandwidth at position @idx.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Mapping of caps from SDP fields:
+
+a=rtpmap:(payload) (encoding_name)/(clock_rate)[/(encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...
+
+ a #GstCaps, or %NULL if an error happened
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ a payload type
+
+
+
+
+
+ Get the connection at position @idx in @media.
+
+ the #GstSDPConnection at position @idx.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Get the format information at position @idx in @media.
+
+ the format at position @idx.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Get the information of @media
+
+ the information of @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the encryption information from @media.
+
+ a #GstSDPKey.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the media description of @media.
+
+ the media description.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the number of ports for @media.
+
+ the number of ports for @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the port number for @media.
+
+ the port number of @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Get the transport protocol of @media
+
+ the transport protocol of @media.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Initialize @media so that its contents are as if it was freshly allocated
+with gst_sdp_media_new(). This function is mostly used to initialize a media
+allocated on the stack. gst_sdp_media_uninit() undoes this operation.
+
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Insert the attribute to @media at @idx. When @idx is -1,
+the attribute is appended.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPAttribute
+
+
+
+
+
+ Insert the bandwidth information to @media at @idx. When @idx is -1,
+the bandwidth is appended.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPBandwidth
+
+
+
+
+
+ Insert the connection information to @media at @idx. When @idx is -1,
+the connection is appended.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPConnection
+
+
+
+
+
+ Insert the format information to @media at @idx. When @idx is -1,
+the format is appended.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ the format
+
+
+
+
+
+ Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute
+from a #GstSDPMedia.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ pointer to new #GstMIKEYMessage
+
+
+
+
+
+ Remove the attribute in @media at @idx.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Remove the bandwidth information in @media at @idx.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Remove the connection information in @media at @idx.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Remove the format information in @media at @idx.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+
+
+ Replace the attribute in @media at @idx with @attr.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPAttribute
+
+
+
+
+
+ Replace the bandwidth information in @media at @idx with @bw.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPBandwidth
+
+
+
+
+
+ Replace the connection information in @media at @idx with @conn.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ a #GstSDPConnection
+
+
+
+
+
+ Replace the format information in @media at @idx with @format.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ an index
+
+
+
+ the format
+
+
+
+
+
+ Set the media information of @media to @information.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the media information
+
+
+
+
+
+ Adds the encryption information to @media.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the encryption type
+
+
+
+ the encryption data
+
+
+
+
+
+ Set the media description of @media to @med.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the media description
+
+
+
+
+
+ Set the port information in @media.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the port number
+
+
+
+ the number of ports
+
+
+
+
+
+ Set the media transport protocol of @media to @proto.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+ the media transport protocol
+
+
+
+
+
+ Free all resources allocated in @media. @media should not be used anymore after
+this function. This function should be used when @media was allocated on the
+stack and initialized with gst_sdp_media_init().
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Allocate a new GstSDPMedia and store the result in @media.
+
+ a #GstSDPResult.
+
+
+
+
+ pointer to new #GstSDPMedia
+
+
+
+
+
+ Mapping of caps to SDP fields:
+
+a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...
+
+a=rtcp-fb:(payload) (param1) [param2]...
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstCaps
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+
+ The GstSDPMessage helper functions makes it easy to parse and create SDP
+messages.
+
+ the protocol version
+
+
+
+ owner/creator and session identifier
+
+
+
+ session name
+
+
+
+ session information
+
+
+
+ URI of description
+
+
+
+ array of #gchar with email addresses
+
+
+
+
+
+ array of #gchar with phone numbers
+
+
+
+
+
+ connection information for the session
+
+
+
+ array of #GstSDPBandwidth with bandwidth information
+
+
+
+
+
+ array of #GstSDPTime with time descriptions
+
+
+
+
+
+ array of #GstSDPZone with time zone adjustments
+
+
+
+
+
+ encryption key
+
+
+
+ array of #GstSDPAttribute with session attributes
+
+
+
+
+
+ array of #GstSDPMedia with media descriptions
+
+
+
+
+
+ Add the attribute with @key and @value to @msg.
+
+ @GST_SDP_OK.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the key
+
+
+
+ the value
+
+
+
+
+
+ Add the specified bandwidth information to @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the bandwidth modifier type
+
+
+
+ the bandwidth in kilobits per second
+
+
+
+
+
+ Add @email to the list of emails in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an email
+
+
+
+
+
+ Adds @media to the array of medias in @msg. This function takes ownership of
+the contents of @media so that @media will have to be reinitialized with
+gst_sdp_media_init() before it can be used again.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstSDPMedia to add
+
+
+
+
+
+ Add @phone to the list of phones in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a phone
+
+
+
+
+
+ Add time information @start and @stop to @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the start time
+
+
+
+ the stop time
+
+
+
+ the repeat times
+
+
+
+
+
+
+
+ Add time zone information to @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the NTP time that a time zone adjustment happens
+
+
+
+ the offset from the time when the session was first scheduled
+
+
+
+
+
+ Convert the contents of @msg to a text string.
+
+ A dynamically allocated string representing the SDP description.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the number of attributes in @msg.
+
+ the number of attributes in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Mapping of attributes of #GstSDPMessage to #GstCaps
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a #GstCaps
+
+
+
+
+
+ Get the number of bandwidth information in @msg.
+
+ the number of bandwidth information in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Allocate a new copy of @msg and store the result in @copy. The value in
+@copy should be release with gst_sdp_message_free function.
+
+ a #GstSDPResult
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ pointer to new #GstSDPMessage
+
+
+
+
+
+ Dump the parsed contents of @msg to stdout.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the number of emails in @msg.
+
+ the number of emails in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Free all resources allocated by @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was dynamically
+allocated with gst_sdp_message_new().
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the attribute at position @idx in @msg.
+
+ the #GstSDPAttribute at position @idx.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+
+
+ Get the first attribute with key @key in @msg.
+
+ the attribute value of the first attribute with @key.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the key
+
+
+
+
+
+ Get the @nth attribute with key @key in @msg.
+
+ the attribute value of the @nth attribute with @key.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the key
+
+
+
+ the index
+
+
+
+
+
+ Get the bandwidth at index @idx from @msg.
+
+ a #GstSDPBandwidth.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the bandwidth index
+
+
+
+
+
+ Get the connection of @msg.
+
+ a #GstSDPConnection. The result remains valid as long as @msg is valid.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the email with number @idx from @msg.
+
+ the email at position @idx.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an email index
+
+
+
+
+
+ Get the information in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the encryption information from @msg.
+
+ a #GstSDPKey.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the media description at index @idx in @msg.
+
+ a #GstSDPMedia.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+
+
+ Get the origin of @msg.
+
+ a #GstSDPOrigin. The result remains valid as long as @msg is valid.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the phone with number @idx from @msg.
+
+ the phone at position @idx.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a phone index
+
+
+
+
+
+ Get the session name in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get time information with index @idx from @msg.
+
+ a #GstSDPTime.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the time index
+
+
+
+
+
+ Get the URI in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the version in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get time zone information with index @idx from @msg.
+
+ a #GstSDPZone.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the zone index
+
+
+
+
+
+ Initialize @msg so that its contents are as if it was freshly allocated
+with gst_sdp_message_new(). This function is mostly used to initialize a message
+allocated on the stack. gst_sdp_message_uninit() undoes this operation.
+
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Insert attribute into the array of attributes in @msg
+at index @idx.
+When -1 is given as @idx, the attribute is inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an index
+
+
+
+ a #GstSDPAttribute
+
+
+
+
+
+ Insert bandwidth parameters into the array of bandwidths in @msg
+at index @idx.
+When -1 is given as @idx, the bandwidth is inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an index
+
+
+
+ the bandwidth
+
+
+
+
+
+ Insert @email into the array of emails in @msg at index @idx.
+When -1 is given as @idx, the email is inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an index
+
+
+
+ an email
+
+
+
+
+
+ Insert @phone into the array of phone numbers in @msg at index @idx.
+When -1 is given as @idx, the phone is inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a phone index
+
+
+
+ a phone
+
+
+
+
+
+ Insert time parameters into the array of times in @msg
+at index @idx.
+When -1 is given as @idx, the times are inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an index
+
+
+
+ a #GstSDPTime
+
+
+
+
+
+ Insert zone parameters into the array of zones in @msg
+at index @idx.
+When -1 is given as @idx, the zone is inserted at the end.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an index
+@zone a #GstSDPZone
+
+
+
+
+
+
+
+
+ Get the number of media descriptions in @msg.
+
+ the number of media descriptions in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute
+from a #GstSDPMessage.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ pointer to new #GstMIKEYMessage
+
+
+
+
+
+ Get the number of phones in @msg.
+
+ the number of phones in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Remove the attribute in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+
+
+ Remove the bandwidth information in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the bandwidth index
+
+
+
+
+
+ Remove the email in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an email index
+
+
+
+
+
+ Remove the phone number in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a phone index
+
+
+
+
+
+ Remove the time information in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+
+
+ Remove the zone information in @msg at index @idx.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+
+
+ Replace the attribute in @msg at index @idx with @attr.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+ a #GstSDPAttribute
+
+
+
+
+
+ Replace the bandwidth information in @msg at index @idx with @bw.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the bandwidth index
+
+
+
+ the bandwidth
+
+
+
+
+
+ Replace the email in @msg at index @idx with @email.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ an email index
+
+
+
+ an email
+
+
+
+
+
+ Replace the phone number in @msg at index @idx with @phone.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ a phone index
+
+
+
+ a phone
+
+
+
+
+
+ Replace the time information in @msg at index @idx with @t.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+ a #GstSDPTime
+
+
+
+
+
+ Replace the zone information in @msg at index @idx with @zone.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the index
+
+
+
+ a #GstSDPZone
+
+
+
+
+
+ Configure the SDP connection in @msg with the given parameters.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the type of network. "IN" is defined to have the meaning
+"Internet".
+
+
+
+ the type of address.
+
+
+
+ the address
+
+
+
+ the time to live of the address
+
+
+
+ the number of layers
+
+
+
+
+
+ Set the information in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the information
+
+
+
+
+
+ Adds the encryption information to @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the encryption type
+
+
+
+ the encryption data
+
+
+
+
+
+ Configure the SDP origin in @msg with the given parameters.
+
+ #GST_SDP_OK.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the user name
+
+
+
+ a session id
+
+
+
+ a session version
+
+
+
+ a network type
+
+
+
+ an address type
+
+
+
+ an address
+
+
+
+
+
+ Set the session name in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the session name
+
+
+
+
+
+ Set the URI in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the URI
+
+
+
+
+
+ Set the version in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+ the version
+
+
+
+
+
+ Get the number of time information entries in @msg.
+
+ the number of time information entries in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Free all resources allocated in @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was allocated on the
+stack and initialized with gst_sdp_message_init().
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Get the number of time zone information entries in @msg.
+
+ the number of time zone information entries in @msg.
+
+
+
+
+ a #GstSDPMessage
+
+
+
+
+
+ Creates a uri from @msg with the given @scheme. The uri has the format:
+
+ \@scheme:///[#type=value *[&type=value]]
+
+ Where each value is url encoded.
+
+ a uri for @msg.
+
+
+
+
+ the uri scheme
+
+
+
+ the #GstSDPMessage
+
+
+
+
+
+ Allocate a new GstSDPMessage and store the result in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ pointer to new #GstSDPMessage
+
+
+
+
+
+ Parse the contents of @size bytes pointed to by @data and store the result in
+@msg.
+
+ #GST_SDP_OK on success.
+
+
+
+
+ the start of the buffer
+
+
+
+
+
+ the size of the buffer
+
+
+
+ the result #GstSDPMessage
+
+
+
+
+
+ Parse the null-terminated @uri and store the result in @msg.
+
+The uri should be of the form:
+
+ scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname]
+ [#type=value *[&type=value]]
+
+ where value is url encoded. This looslely resembles
+ http://tools.ietf.org/html/draft-fujikawa-sdp-url-01
+
+ #GST_SDP_OK on success.
+
+
+
+
+ the start of the uri
+
+
+
+ the result #GstSDPMessage
+
+
+
+
+
+
+ The contents of the SDP "o=" field which gives the originator of the session
+(their username and the address of the user's host) plus a session id and
+session version number.
+
+ the user's login on the originating host, or it is "-"
+ if the originating host does not support the concept of user ids.
+
+
+
+ is a numeric string such that the tuple of @username, @sess_id,
+ @nettype, @addrtype and @addr form a globally unique identifier for the
+ session.
+
+
+
+ a version number for this announcement
+
+
+
+ the type of network. "IN" is defined to have the meaning
+ "Internet".
+
+
+
+ the type of @addr.
+
+
+
+ the globally unique address of the machine from which the session was
+ created.
+
+
+
+
+ Return values for the SDP functions.
+
+ A successful return value
+
+
+ a function was given invalid parameters
+
+
+
+ The contents of the SDP "t=" field which specify the start and stop times for
+a conference session.
+
+ start time for the conference. The value is the decimal
+ representation of Network Time Protocol (NTP) time values in seconds
+
+
+
+ stop time for the conference. The value is the decimal
+ representation of Network Time Protocol (NTP) time values in seconds
+
+
+
+ repeat times for a session
+
+
+
+
+
+ Reset the time information in @t.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPTime
+
+
+
+
+
+ Set time information @start, @stop and @repeat in @t.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPTime
+
+
+
+ the start time
+
+
+
+ the stop time
+
+
+
+ the repeat times
+
+
+
+
+
+
+
+
+ The contents of the SDP "z=" field which allows the sender to
+specify a list of time zone adjustments and offsets from the base
+time.
+
+ the NTP time that a time zone adjustment happens
+
+
+
+ the offset from the time when the session was first scheduled
+
+
+
+ Reset the zone information in @zone.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPZone
+
+
+
+
+
+ Set zone information in @zone.
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstSDPZone
+
+
+
+ the NTP time that a time zone adjustment happens
+
+
+
+ the offset from the time when the session was first scheduled
+
+
+
+
+
+
+ The Application-Specific Maximum bandwidth modifier.
+
+
+
+ The Conference Total bandwidth modifier.
+
+
+
+ The extension prefix bandwidth modifier.
+
+
+
+ RTCP bandwidth allocated to data receivers (RFC 3556).
+
+
+
+ RTCP bandwidth allocated to active data senders (RFC 3556).
+
+
+
+ Transport Independent Application Specific Maximum bandwidth (RFC 3890).
+
+
+
+ Check if the given @addr is a multicast address.
+
+ TRUE when @addr is multicast.
+
+
+
+
+ a network type
+
+
+
+ an address type
+
+
+
+ an address
+
+
+
+
+
+ Makes key management data
+
+ a #gchar key-mgmt data,
+
+
+
+
+ a #gchar URI
+
+
+
+ a #gchar base64-encoded key data
+
+
+
+
+
+ Allocate a new GstSDPMedia and store the result in @media.
+
+ a #GstSDPResult.
+
+
+
+
+ pointer to new #GstSDPMedia
+
+
+
+
+
+ Mapping of caps to SDP fields:
+
+a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
+
+a=framesize:(payload) (width)-(height)
+
+a=fmtp:(payload) (param)[=(value)];...
+
+a=rtcp-fb:(payload) (param1) [param2]...
+
+ a #GstSDPResult.
+
+
+
+
+ a #GstCaps
+
+
+
+ a #GstSDPMedia
+
+
+
+
+
+ Creates a uri from @msg with the given @scheme. The uri has the format:
+
+ \@scheme:///[#type=value *[&type=value]]
+
+ Where each value is url encoded.
+
+ a uri for @msg.
+
+
+
+
+ the uri scheme
+
+
+
+ the #GstSDPMessage
+
+
+
+
+
+ Allocate a new GstSDPMessage and store the result in @msg.
+
+ a #GstSDPResult.
+
+
+
+
+ pointer to new #GstSDPMessage
+
+
+
+
+
+ Parse the contents of @size bytes pointed to by @data and store the result in
+@msg.
+
+ #GST_SDP_OK on success.
+
+
+
+
+ the start of the buffer
+
+
+
+
+
+ the size of the buffer
+
+
+
+ the result #GstSDPMessage
+
+
+
+
+
+ Parse the null-terminated @uri and store the result in @msg.
+
+The uri should be of the form:
+
+ scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname]
+ [#type=value *[&type=value]]
+
+ where value is url encoded. This looslely resembles
+ http://tools.ietf.org/html/draft-fujikawa-sdp-url-01
+
+ #GST_SDP_OK on success.
+
+
+
+
+ the start of the uri
+
+
+
+ the result #GstSDPMessage
+
+
+
+
+
+
diff --git a/gstreamer-rtsp-server/CHANGELOG.md b/gstreamer-rtsp-server/CHANGELOG.md
new file mode 100644
index 000000000..614f2ff50
--- /dev/null
+++ b/gstreamer-rtsp-server/CHANGELOG.md
@@ -0,0 +1,218 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html),
+specifically the [variant used by Rust](http://doc.crates.io/manifest.html#the-version-field).
+
+## [0.10.1] - 2018-01-03
+### Fixed
+- Don't require &mut self for TagSetterExtManual::add()
+
+### Added
+- A TagSetter example application
+- Bindings for gst_video::convert_sample() and ::convert_sample_async()
+- Bindings for gst_video::VideoRectangle
+- Debug impl for Sample and ::with_buffer_list() constructor
+- A borrowing version of VideoFrame: VideoFrameRef
+- Bindings for GstVideoFilter
+
+### Changed
+- Deprecated Sample::get_info() in favour of ::get_structure()
+- Player has gst::Object as another parent class now
+
+## [0.10.0] - 2017-12-22
+### Fixed
+- Various clippy warnings
+- Memory leak of the tag list in Toc::merge_tags()
+- Property getters use Values of the correct type
+- Event::get_structure(), Message::get_structure() and
+ Query::get_structure() can return None for the structure
+- Various other nullability fixes all over the API, changing functions to
+ accept Option<> or returning Option<>, or only plain types
+- Functions taking paths/filenames now actually take Paths instead of &strs
+- Element::remove_pad() is not giving away a new reference to the pad
+ anymore, which caused a memory leak of all pads ever removed
+- Precision handling in ClockTime's Display impl
+- Video/AudioInfo are only Send, not Sync
+
+### Added
+- Various enums now also derive useful traits like Copy, Clone and Hash in
+ addition to PartialEq, Eq and Debug
+- TagList::merge() and insert() for combining tag lists
+- EventType gained many useful functions to work with event types and
+ a PartialOrd impl to check expected event order of event types where it matters
+- MessageRef/EventRef/QueryRef implement ToOwned
+- Bindings for Registry and PluginFeature
+- Event::set_running_time_offset() for adjusting the offset while events
+ pass through the pipeline
+- Event/Message GroupIds and Seqnums now have a newtype wrapper around u32
+ instead of the plain value, making usage of them slightly more typesafe.
+ Also add an "invalid" value for both, as exists in latest GStreamer now.
+- FormattedValue, GenericFormattedValue and related types were
+ implemented now, which allows more convenient and type-safe usage of
+ formatted values (time, bytes, etc)
+- Bindings for force-keyunit and still-frame events were added
+- MappedBuffer/BufferMap now implement various other useful traits, including
+ AsRef<[u8]>, AsMut, Deref, DerefMut, Debug, PartialEq and Eq
+- Add VideoMultiviewFramePacking enum, and use it in Player
+- Bindings for the GStreamer Net library, including PTP/NTP/network client
+ clocks and the GStreamer NetClock provider for network synchronization of
+ pipelines
+- IteratorError implements std::error:Error
+- Plugin::add_dependency() and ::add_dependency_simple() was added
+- Rank and TypeFindProbability implement PartialOrd/Ord now
+- Bindings for TypeFind, TypeFindFactory and the typefind helpers
+- StreamCollection::iter() for iterating over all contained streams
+- ErrorMessage type that can be used e.g. in a Result for passing an error
+ message from somewhere to upper layers to then be posted on an element the
+ same way gst_element_error!() would've done
+
+### Changed
+- Sample::new(), TagList::add(), Structure::set() and similar
+ functions take the values (ToSendValue impls) by reference instead of value.
+ They were not consumed by the function before.
+- The Debug impls of various types, including Event/Buffer/Message/Query/Structure
+ were improved to print all the fields, similar to what GST_PTR_FORMAT would
+ do in C
+- Switched to lazy_static 1.0
+- Gap event and Duration tag are using ClockTimes now, as well as various
+ Player signals
+- Segment is now based on a generic type FormattedSegment that can
+ take any format (time, bytes, etc) or a GenericFormattedValue for more
+ type-safety and convenience. Also functions for "casting" between a generic
+ segment and a segment with a specific format exist on this now
+- AppSrc and AppSink now have a builder for the callbacks, making it
+ unnecessary to always provide all callbacks even if only one is actually
+ needed
+- Various functions that returned bool for errors, are now returning a Result
+- Player configuration is now a custom type with more convenient API
+- Player VideoInfo uses a Fraction instead of (u32,u32) for the framerate and
+ pixel-aspect-ratio
+- VideoFrame API has more consistent API between writable and read-only
+ variants
+- Buffer::copy_into() was added, and ::copy_region() now takes a
+ BufferCopyFlags parameter instead of always using the default flags
+- ChildProxy::set_child_property() takes a &ToValue now to follow the API of
+ Object::set_property() and improve usability
+- Proxy/GhostPad default pad functions use the correct specific pad type now
+ instead of a generic Pad
+- Bus::add_signal_watch_full() takes a Priority for the priority instead of u32
+- Clock::(un)adjust_with_calibration() takes no clock parameter anymore
+
+### Removed
+- FormatValue was removed in favour of GenericFormattedValue and the
+ connected traits and specific format impls
+
+## [0.9.1] - 2017-11-26
+### Fixed
+- Export `FlowError`/`FlowSuccess`, `ClockError`/`ClockSuccess`,
+ `PadLinkError`/`PadLinkSuccess` too
+
+## [0.9.0] - 2017-11-26
+### Added
+- Bindings for (outputting to) the GStreamer logging system
+- Bindings for the GStreamer base library
+- Bindings for all the `Pad` functions to override pad behaviour, and pad task
+ functions
+- Bindings for `StaticCaps` and `StaticPadTemplate`
+- Bindings for `deep-notify` signal on `Object`
+- Support for directly creating `Error`/`Warning`/`Info` `Messages` and posting them
+ from an element with context information (file, line, module, etc.) similar
+ to the C `GST_ELEMENT_ERROR` macro
+- Support for setting custom fields in `Messages`/`Events` during construction
+- Support for creating Buffers out of anything that is `AsRef<[u8]>` or
+ `AsMut<[u8]>`
+- Support for using the `Read` trait on `Adapter`
+- Functions for getting all sink/src/all pads of an `Element`, and all children
+ of a `Bin`
+- Builder for `Caps` and `Structures` in addition to the existing functions
+- `AppSrc`/`AppSink` implement `BaseSrc`/`BaseSink` and `URIHandler`
+- Rust ports of the basic tutorials 1 to 8 from
+ https://gstreamer.freedesktop.org/documentation/tutorials/
+- "Getting started" and "Installation" sections to the README.md
+- "dox" feature for generating documentation for all available configurations
+
+### Fixed
+- `StackTraceFlags` are only available since 1.12
+- Worked around macOS requiring a `NSRunLoop` running on the main thread in all
+ examples and tutorials, to be able to show a window or anything else
+
+### Changed
+- `ClockTime` is now a wrapper around `Option` to handle the
+ `CLOCK_TIME_NONE` case better. This wrapper implements all the arithmetic
+ and other traits as needed and ensures that no accidential calculations with
+ `CLOCK_TIME_NONE` can happen
+- "Values with format", like in `Duration`/`Position`/`Convert` queries or
+ `Seek` events now return a `FormatValue` type. This contains the actual
+ `Format` together with the value and does any required conversions. This
+ also makes it harder to accidentially mix e.g. values in bytes and time
+- `PadProbeId` does not implement `Clone`/`Copy` anymore
+- Property notify watches return a custom type instead of ulong
+- `Error`/`Warning`/`Info` `Messages` can only be created with specific kinds of
+ `glib::Error` now. Using arbitrary ones does not work
+- `Iterator` bindings were completely rewritten and provide the item type as a
+ generic type parameter now, greatly simplifying its usage
+- All `glib::Values` are now `glib::SendValue` instead, e.g. in `Caps` and
+ `Structures`, as their content must be possible to send to different threads
+ safely
+- `Message::get_src()` can return `None`
+- Allow `None` as `Caps` in `AppSrc`/`AppSink`
+- Allow everything implementing `Into