## gstrtsptransport gstrtsptransport — dealing with RTSP transports |

## Synopsis

    #include <gst/rtsp/gstrtsptransport.h>

    enum                GstRTSPTransMode;
    enum                GstRTSPProfile;
    struct              GstRTSPRange;
    enum                GstRTSPLowerTrans;
    struct              GstRTSPTransport;
    GstRTSPResult       gst_rtsp_transport_new              (GstRTSPTransport **transport);
    GstRTSPResult       gst_rtsp_transport_init             (GstRTSPTransport *transport);
    GstRTSPResult       gst_rtsp_transport_parse            (const gchar *str,
                                                             GstRTSPTransport *transport);
    gchar *             gst_rtsp_transport_as_text          (GstRTSPTransport *transport);
    GstRTSPResult       gst_rtsp_transport_get_mime         (GstRTSPTransMode trans,
                                                             const gchar **mime);
    GstRTSPResult       gst_rtsp_transport_get_manager      (GstRTSPTransMode trans,
                                                             const gchar **manager,
                                                             guint option);
    GstRTSPResult       gst_rtsp_transport_free             (GstRTSPTransport *transport);

## Description

Provides helper functions to deal with RTSP transport strings. Last reviewed on 2007-07-25 (0.10.14)

## Details

### enum GstRTSPTransMode

    typedef enum {
      GST_RTSP_TRANS_UNKNOWN =  0,
      GST_RTSP_TRANS_RTP     = (1 << 0),
      GST_RTSP_TRANS_RDT     = (1 << 1)
    } GstRTSPTransMode;

The transfer mode to use.

`GST_RTSP_TRANS_UNKNOWN` | invalid tansport mode
`GST_RTSP_TRANS_RTP` | transfer RTP data
`GST_RTSP_TRANS_RDT` | transfer RDT (RealMedia) data

### enum GstRTSPProfile

    typedef enum {
      GST_RTSP_PROFILE_UNKNOWN =  0,
      GST_RTSP_PROFILE_AVP     = (1 << 0),
      GST_RTSP_PROFILE_SAVP    = (1 << 1)
    } GstRTSPProfile;

The transfer profile to use.

`GST_RTSP_PROFILE_UNKNOWN` | invalid profile
`GST_RTSP_PROFILE_AVP` | the Audio/Visual profile
`GST_RTSP_PROFILE_SAVP` | the secure Audio/Visual profile

### struct GstRTSPRange

    struct GstRTSPRange {
      gint min;
      gint max;
    };

A type to specify a range.

gint `min`; | minimum value of the range
gint `max`; | maximum value of the range

### enum GstRTSPLowerTrans

    typedef enum {
      GST_RTSP_LOWER_TRANS_UNKNOWN   = 0,
      GST_RTSP_LOWER_TRANS_UDP       = (1 << 0),
      GST_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
      GST_RTSP_LOWER_TRANS_TCP       = (1 << 2),
      GST_RTSP_LOWER_TRANS_HTTP      = (1 << 4)
    } GstRTSPLowerTrans;

The different transport methods.

`GST_RTSP_LOWER_TRANS_UNKNOWN` | invalid transport flag
`GST_RTSP_LOWER_TRANS_UDP` | stream data over UDP
`GST_RTSP_LOWER_TRANS_UDP_MCAST` | stream data over UDP multicast
`GST_RTSP_LOWER_TRANS_TCP` | stream data over TCP
`GST_RTSP_LOWER_TRANS_HTTP` | stream data tunneled over HTTP.

### struct GstRTSPTransport

    struct GstRTSPTransport {
      GstRTSPTransMode  trans;
      GstRTSPProfile    profile;
      GstRTSPLowerTrans lower_transport;

      gchar         *destination;
      gchar         *source;
      guint          layers;
      gboolean       mode_play;
      gboolean       mode_record;
      gboolean       append;
      GstRTSPRange   interleaved;

      /* multicast specific */
      guint  ttl;

      /* UDP specific */
      GstRTSPRange   port;
      GstRTSPRange   client_port;
      GstRTSPRange   server_port;
      /* RTP specific */
      guint          ssrc;
    };

A structure holding the RTSP transport values.

GstRTSPTransMode `trans`; | the transport mode
GstRTSPProfile `profile`; | the tansport profile
GstRTSPLowerTrans `lower_transport`; | the lower transport
gchar *`destination`; | the destination ip/hostname
gchar *`source`; | the source ip/hostname
guint `layers`; | the number of layers
gboolean `mode_play`; | if play mode was selected
gboolean `mode_record`; | if record mode was selected
gboolean `append`; | is append mode was selected
GstRTSPRange `interleaved`; | the interleave range
guint `ttl`; | the time to live for multicast UDP
GstRTSPRange `port`; | the port pair for multicast sessions
GstRTSPRange `client_port`; | the client port pair for receiving data
GstRTSPRange `server_port`; | the server port pair for receiving data
guint `ssrc`; | the ssrc that the sender/receiver will use

### gst_rtsp_transport_new ()

    GstRTSPResult       gst_rtsp_transport_new              (GstRTSPTransport **transport);

Allocate a new initialized GstRTSPTransport. Use `gst_rtsp_transport_free()` after usage.

`transport` : | location to hold the new GstRTSPTransport
Returns : | a GstRTSPResult.

### gst_rtsp_transport_init ()

    GstRTSPResult       gst_rtsp_transport_init             (GstRTSPTransport *transport);

Initialize `transport` so that it can be used.

`transport` : | a GstRTSPTransport
Returns : | GST_RTSP_OK.

### gst_rtsp_transport_parse ()

    GstRTSPResult       gst_rtsp_transport_parse            (const gchar *str,
                                                             GstRTSPTransport *transport);

Parse the RTSP transport string `str` into `transport`.

`str` : | a transport string
`transport` : | a GstRTSPTransport
Returns : | a GstRTSPResult.

### gst_rtsp_transport_as_text ()

    gchar *             gst_rtsp_transport_as_text          (GstRTSPTransport *transport);

Convert `transport` into a string that can be used to signal the transport in an RTSP SETUP response.

`transport` : | a GstRTSPTransport
Returns : | a string describing the RTSP transport or NULL when the transport is invalid.

### gst_rtsp_transport_get_mime ()

    GstRTSPResult       gst_rtsp_transport_get_mime         (GstRTSPTransMode trans,
                                                             const gchar **mime);

Get the mime type of the transport mode `trans`. This mime type is typically used to generate GstCaps on buffers.

`trans` : | a GstRTSPTransMode
`mime` : | location to hold the result
Returns : | GST_RTSP_OK.

### gst_rtsp_transport_get_manager ()

    GstRTSPResult       gst_rtsp_transport_get_manager      (GstRTSPTransMode trans,
                                                             const gchar **manager,
                                                             guint option);

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`.

`trans` : | a GstRTSPTransMode
`manager` : | location to hold the result
`option` : | option index.
Returns : | GST_RTSP_OK.

### gst_rtsp_transport_free ()

    GstRTSPResult       gst_rtsp_transport_free             (GstRTSPTransport *transport);

Free the memory used by `transport`.

`transport` : | a GstRTSPTransport
Returns : | GST_RTSP_OK.