GstRTSPStream: GStreamer RTSP Server Reference Manual

## GstRTSPStream GstRTSPStream — A media stream |

## Functions

GstRTSPStream * | gst_rtsp_stream_new ()
guint | gst_rtsp_stream_get_index ()
GstPad * | gst_rtsp_stream_get_srcpad ()
gchar * | gst_rtsp_stream_get_control ()
void | gst_rtsp_stream_set_control ()
gboolean | gst_rtsp_stream_has_control ()
guint | gst_rtsp_stream_get_mtu ()
void | gst_rtsp_stream_set_mtu ()
gint | gst_rtsp_stream_get_dscp_qos ()
void | gst_rtsp_stream_set_dscp_qos ()
void | gst_rtsp_stream_set_profiles ()
GstRTSPProfile | gst_rtsp_stream_get_profiles ()
GstRTSPLowerTrans | gst_rtsp_stream_get_protocols ()
void | gst_rtsp_stream_set_protocols ()
GstClockTime | gst_rtsp_stream_get_retransmission_time ()
void | gst_rtsp_stream_set_retransmission_time ()
void | gst_rtsp_stream_set_buffer_size ()
guint | gst_rtsp_stream_get_buffer_size ()
void | gst_rtsp_stream_set_seqnum_offset ()
guint16 | gst_rtsp_stream_get_current_seqnum ()
gboolean | gst_rtsp_stream_is_transport_supported ()
GstRTSPAddressPool * | gst_rtsp_stream_get_address_pool ()
void | gst_rtsp_stream_set_address_pool ()
GstRTSPAddress * | gst_rtsp_stream_reserve_address ()
gboolean | gst_rtsp_stream_join_bin ()
gboolean | gst_rtsp_stream_leave_bin ()
void | gst_rtsp_stream_get_server_port ()
GstRTSPAddress * | gst_rtsp_stream_get_multicast_address ()
GObject * | gst_rtsp_stream_get_rtpsession ()
void | gst_rtsp_stream_get_ssrc ()
gboolean | gst_rtsp_stream_get_rtpinfo ()
GstCaps * | gst_rtsp_stream_get_caps ()
guint | gst_rtsp_stream_get_pt ()
GstFlowReturn | gst_rtsp_stream_recv_rtcp ()
GstFlowReturn | gst_rtsp_stream_recv_rtp ()
gboolean | gst_rtsp_stream_add_transport ()
gboolean | gst_rtsp_stream_remove_transport ()
GSocket * | gst_rtsp_stream_get_rtp_socket ()
GSocket * | gst_rtsp_stream_get_rtcp_socket ()
gboolean | gst_rtsp_stream_set_blocked ()
gboolean | gst_rtsp_stream_is_blocking ()
gboolean | gst_rtsp_stream_query_stop ()
gboolean | gst_rtsp_stream_query_position ()
gboolean | gst_rtsp_stream_update_crypto ()
void | gst_rtsp_stream_set_pt_map ()
GstElement * | gst_rtsp_stream_request_aux_sender ()
GstRTSPFilterResult | (*GstRTSPStreamTransportFilterFunc) ()
GList * | gst_rtsp_stream_transport_filter ()

## Properties

gchar * | control | Read / Write
GstRTSPProfile | profiles | Read / Write
GstRTSPLowerTrans | protocols | Read / Write

## Signals

void | new-rtcp-encoder | Run Last
void | new-rtp-encoder | Run Last

## Types and Values

struct | GstRTSPStream
struct | GstRTSPStreamClass

## Object Hierarchy

        GObject
        ╰── GstRTSPStream

## Description

The GstRTSPStream object manages the data transport for one stream. It is created from a payloader element and a source pad that produce the RTP packets for the stream.

With `gst_rtsp_stream_join_bin()` the streaming elements are added to the bin and rtpbin. `gst_rtsp_stream_leave_bin()` removes the elements again.

The GstRTSPStream will use the configured addresspool, as set with `gst_rtsp_stream_set_address_pool()`, to allocate multicast addresses for the stream. With `gst_rtsp_stream_get_multicast_address()` you can get the configured address.

With `gst_rtsp_stream_get_server_port()` you can get the port that the server will use to receive RTCP. This is the part that the clients will use to send RTCP to.

With `gst_rtsp_stream_add_transport()` destinations can be added where the stream should be sent to. Use `gst_rtsp_stream_remove_transport()` to remove the destination again.

Last reviewed on 2013-07-16 (1.0.0)

## Functions

### gst_rtsp_stream_new ()

    GstRTSPStream *
    gst_rtsp_stream_new (guint idx,
                         GstElement *payloader,
                         GstPad *pad);

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.

#### Parameters

idx | an index |
pad | a GstPad |
payloader | a GstElement |

#### Returns

a new GstRTSPStream.

[transfer full]

### gst_rtsp_stream_get_index ()

    guint
    gst_rtsp_stream_get_index (GstRTSPStream *stream);

Get the stream index.

Return: the stream index.

#### Parameters

stream | a GstRTSPStream |

### gst_rtsp_stream_get_srcpad ()

    GstPad *
    gst_rtsp_stream_get_srcpad (GstRTSPStream *stream);

Get the srcpad associated with `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

the srcpad. Unref after usage.

[transfer full]

### gst_rtsp_stream_get_control ()

    gchar *
    gst_rtsp_stream_get_control (GstRTSPStream *stream);

Get the control string to identify this stream.

#### Parameters

stream | a GstRTSPStream |

#### Returns

the control string. `g_free()` after usage.

[transfer full]

### gst_rtsp_stream_set_control ()

    void
    gst_rtsp_stream_set_control (GstRTSPStream *stream,
                                 const gchar *control);

Set the control string in `stream` .

#### Parameters

stream | a GstRTSPStream |
control | a control string |

### gst_rtsp_stream_has_control ()

    gboolean
    gst_rtsp_stream_has_control (GstRTSPStream *stream,
                                 const gchar *control);

Check if `stream` has the control string `control` .

#### Parameters

stream | a GstRTSPStream |
control | a control string |

#### Returns

`TRUE` is `stream` has `control` as the control string

### gst_rtsp_stream_get_mtu ()

    guint
    gst_rtsp_stream_get_mtu (GstRTSPStream *stream);

Get the configured MTU in the payloader of `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

the MTU of the payloader.

### gst_rtsp_stream_set_mtu ()

    void
    gst_rtsp_stream_set_mtu (GstRTSPStream *stream,
                             guint mtu);

Configure the mtu in the payloader of `stream` to `mtu` .

#### Parameters

stream | a GstRTSPStream |
mtu | a new MTU |

### gst_rtsp_stream_get_dscp_qos ()

    gint
    gst_rtsp_stream_get_dscp_qos (GstRTSPStream *stream);

Get the configured DSCP QoS in of the outgoing sockets.

#### Parameters

stream | a GstRTSPStream |

#### Returns

the DSCP QoS value of the outgoing sockets, or -1 if disbled.

### gst_rtsp_stream_set_dscp_qos ()

    void
    gst_rtsp_stream_set_dscp_qos (GstRTSPStream *stream,
                                  gint dscp_qos);

Configure the dscp qos of the outgoing sockets to `dscp_qos` .

#### Parameters

stream | a GstRTSPStream |
dscp_qos | a new dscp qos value (0-63, or -1 to disable) |

### gst_rtsp_stream_set_profiles ()

    void
    gst_rtsp_stream_set_profiles (GstRTSPStream *stream,
                                  GstRTSPProfile profiles);

Configure the allowed profiles for `stream` .

#### Parameters

stream | a GstRTSPStream |
profiles | the new profiles |

### gst_rtsp_stream_get_profiles ()

    GstRTSPProfile
    gst_rtsp_stream_get_profiles (GstRTSPStream *stream);

Get the allowed profiles of `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

a GstRTSPProfile

### gst_rtsp_stream_get_protocols ()

    GstRTSPLowerTrans
    gst_rtsp_stream_get_protocols (GstRTSPStream *stream);

Get the allowed protocols of `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

a GstRTSPLowerTrans

### gst_rtsp_stream_set_protocols ()

    void
    gst_rtsp_stream_set_protocols (GstRTSPStream *stream,
                                   GstRTSPLowerTrans protocols);

Configure the allowed lower transport for `stream` .

#### Parameters

stream | a GstRTSPStream |
protocols | the new flags |

### gst_rtsp_stream_get_retransmission_time ()

    GstClockTime
    gst_rtsp_stream_get_retransmission_time
                                   (GstRTSPStream *stream);

Get the amount of time to store retransmission data.

#### Parameters

stream | a GstRTSPStream |

#### Returns

the amount of time to store retransmission data.

### gst_rtsp_stream_set_retransmission_time ()

    void
    gst_rtsp_stream_set_retransmission_time
                                   (GstRTSPStream *stream,
                                    GstClockTime time);

Set the amount of time to store retransmission packets.

#### Parameters

stream | a GstRTSPStream |
time | a GstClockTime |

### gst_rtsp_stream_set_buffer_size ()

    void
    gst_rtsp_stream_set_buffer_size (GstRTSPStream *stream,
                                     guint size);

Set the size of the UDP transmission buffer (in bytes) Needs to be set before the stream is joined to a bin.

#### Parameters

stream | a GstRTSPStream |
size | the buffer size |

Since: 1.6

### gst_rtsp_stream_get_buffer_size ()

    guint
    gst_rtsp_stream_get_buffer_size (GstRTSPStream *stream);

Get the size of the UDP transmission buffer (in bytes)

#### Parameters

stream | a GstRTSPStream |

#### Returns

the size of the UDP TX buffer

Since: 1.6

### gst_rtsp_stream_set_seqnum_offset ()

    void
    gst_rtsp_stream_set_seqnum_offset (GstRTSPStream *stream,
                                       guint16 seqnum);

### gst_rtsp_stream_get_current_seqnum ()

    guint16
    gst_rtsp_stream_get_current_seqnum (GstRTSPStream *stream);

### gst_rtsp_stream_is_transport_supported ()

    gboolean
    gst_rtsp_stream_is_transport_supported
                                   (GstRTSPStream *stream,
                                    GstRTSPTransport *transport);

Check if `transport` can be handled by stream

#### Parameters

stream | a GstRTSPStream |
transport | a GstRTSPTransport. | [transfer none]

#### Returns

`TRUE` if `transport` can be handled by `stream` .

### gst_rtsp_stream_get_address_pool ()

    GstRTSPAddressPool *
    gst_rtsp_stream_get_address_pool (GstRTSPStream *stream);

Get the GstRTSPAddressPool used as the address pool of `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

the GstRTSPAddressPool of `stream` . `g_object_unref()` after usage.

[transfer full]

### gst_rtsp_stream_set_address_pool ()

    void
    gst_rtsp_stream_set_address_pool (GstRTSPStream *stream,
                                      GstRTSPAddressPool *pool);

configure `pool` to be used as the address pool of `stream` .

#### Parameters

stream | a GstRTSPStream |
pool | a GstRTSPAddressPool. | [transfer none]

### gst_rtsp_stream_reserve_address ()

    GstRTSPAddress *
    gst_rtsp_stream_reserve_address (GstRTSPStream *stream,
                                     const gchar *address,
                                     guint port,
                                     guint n_ports,
                                     guint ttl);

Reserve `address` and `port` as the address and port of `stream` .

#### Parameters

stream | a GstRTSPStream |
address | an address |
port | a port |
n_ports | n_ports |
ttl | a TTL |

#### Returns

the GstRTSPAddress of `stream` or `NULL` when the address could be reserved. `gst_rtsp_address_free()` after usage.

[nullable]

### gst_rtsp_stream_join_bin ()

    gboolean
    gst_rtsp_stream_join_bin (GstRTSPStream *stream,
                              GstBin *bin,
                              GstElement *rtpbin,
                              GstState state);

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

#### Parameters

stream | a GstRTSPStream |
bin | a GstBin to join. | [transfer none]
rtpbin | a rtpbin element in `bin` . | [transfer none]
state | the target state of the new elements |

#### Returns

`TRUE` on success.

### gst_rtsp_stream_leave_bin ()

    gboolean
    gst_rtsp_stream_leave_bin (GstRTSPStream *stream,
                               GstBin *bin,
                               GstElement *rtpbin);

Remove the elements of `stream` from `bin` .

Return: `TRUE` on success.

#### Parameters

stream | a GstRTSPStream |
bin | a GstBin. | [transfer none]
rtpbin | a rtpbin GstElement. | [transfer none]

### gst_rtsp_stream_get_server_port ()

    void
    gst_rtsp_stream_get_server_port (GstRTSPStream *stream,
                                     GstRTSPRange *server_port,
                                     GSocketFamily family);

Fill `server_port` with the port pair used by the server. This function can only be called when `stream` has been joined.

#### Parameters

stream | a GstRTSPStream |
server_port | result server port. | [out]
family | the port family to get |

### gst_rtsp_stream_get_multicast_address ()

    GstRTSPAddress *
    gst_rtsp_stream_get_multicast_address (GstRTSPStream *stream,
                                           GSocketFamily family);

Get the multicast address of `stream` for `family` .

#### Parameters

stream | a GstRTSPStream |
family | the GSocketFamily |

#### Returns

the GstRTSPAddress of `stream` or `NULL` when no address could be allocated. `gst_rtsp_address_free()` after usage.

[transfer full][nullable]

### gst_rtsp_stream_get_rtpsession ()

    GObject *
    gst_rtsp_stream_get_rtpsession (GstRTSPStream *stream);

Get the RTP session of this stream.

#### Parameters

stream | a GstRTSPStream |

#### Returns

The RTP session of this stream. Unref after usage.

[transfer full]

### gst_rtsp_stream_get_ssrc ()

    void
    gst_rtsp_stream_get_ssrc (GstRTSPStream *stream,
                              guint *ssrc);

Get the SSRC used by the RTP session of this stream. This function can only be called when `stream` has been joined.

#### Parameters

stream | a GstRTSPStream |
ssrc | result ssrc. | [out]

### gst_rtsp_stream_get_rtpinfo ()

    gboolean
    gst_rtsp_stream_get_rtpinfo (GstRTSPStream *stream,
                                 guint *rtptime,
                                 guint *seq,
                                 guint *clock_rate,
                                 GstClockTime *running_time);

Retrieve the current rtptime, seq and running-time. This is used to construct a RTPInfo reply header.

#### Parameters

stream | a GstRTSPStream |
rtptime | result RTP timestamp. | [allow-none]
seq | result RTP seqnum. | [allow-none]
clock_rate | the clock rate. | [allow-none]
running_time | result running-time. | [allow-none]

#### Returns

`TRUE` when rtptime, seq and running-time could be determined.

### gst_rtsp_stream_get_caps ()

    GstCaps *
    gst_rtsp_stream_get_caps (GstRTSPStream *stream);

Retrieve the current caps of `stream` .

#### Parameters

stream | a GstRTSPStream |

#### Returns

the GstCaps of `stream` . use `gst_caps_unref()` after usage.

[transfer full]

### gst_rtsp_stream_get_pt ()

    guint
    gst_rtsp_stream_get_pt (GstRTSPStream *stream);

Get the stream payload type.

Return: the stream payload type.

#### Parameters

stream | a GstRTSPStream |

### gst_rtsp_stream_recv_rtcp ()

    GstFlowReturn
    gst_rtsp_stream_recv_rtcp (GstRTSPStream *stream,
                               GstBuffer *buffer);

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

#### Parameters

stream | a GstRTSPStream |
buffer | a GstBuffer. | [transfer full]

#### Returns

a GstFlowReturn.

### gst_rtsp_stream_recv_rtp ()

    GstFlowReturn
    gst_rtsp_stream_recv_rtp (GstRTSPStream *stream,
                              GstBuffer *buffer);

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

#### Parameters

stream | a GstRTSPStream |
buffer | a GstBuffer. | [transfer full]

#### Returns

a GstFlowReturn.

### gst_rtsp_stream_add_transport ()

    gboolean
    gst_rtsp_stream_add_transport (GstRTSPStream *stream,
                                   GstRTSPStreamTransport *trans);

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.

#### Parameters

stream | a GstRTSPStream |
trans | a GstRTSPStreamTransport. | [transfer none]

#### Returns

`TRUE` if `trans` was added

### gst_rtsp_stream_remove_transport ()

    gboolean
    gst_rtsp_stream_remove_transport (GstRTSPStream *stream,
                                      GstRTSPStreamTransport *trans);

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.

#### Parameters

stream | a GstRTSPStream |
trans | a GstRTSPStreamTransport. | [transfer none]

#### Returns

`TRUE` if `trans` was removed

### gst_rtsp_stream_get_rtp_socket ()

    GSocket *
    gst_rtsp_stream_get_rtp_socket (GstRTSPStream *stream,
                                    GSocketFamily family);

Get the RTP socket from `stream` for a `family` .

`stream` must be joined to a bin.

#### Parameters

stream | a GstRTSPStream |
family | the socket family |

#### Returns

the RTP socket or `NULL` if no socket could be allocated for `family` . Unref after usage.

[transfer full][nullable]

### gst_rtsp_stream_get_rtcp_socket ()

    GSocket *
    gst_rtsp_stream_get_rtcp_socket (GstRTSPStream *stream,
                                     GSocketFamily family);

Get the RTCP socket from `stream` for a `family` .

`stream` must be joined to a bin.

#### Parameters

stream | a GstRTSPStream |
family | the socket family |

#### Returns

the RTCP socket or `NULL` if no socket could be allocated for `family` . Unref after usage.

[transfer full][nullable]

### gst_rtsp_stream_set_blocked ()

    gboolean
    gst_rtsp_stream_set_blocked (GstRTSPStream *stream,
                                 gboolean blocked);

Blocks or unblocks the dataflow on `stream` .

#### Parameters

stream | a GstRTSPStream |
blocked | boolean indicating we should block or unblock |

#### Returns

`TRUE` on success

### gst_rtsp_stream_is_blocking ()

    gboolean
    gst_rtsp_stream_is_blocking (GstRTSPStream *stream);

Check if `stream` is blocking on a GstBuffer.

#### Parameters

stream | a GstRTSPStream |

#### Returns

`TRUE` if `stream` is blocking

### gst_rtsp_stream_query_stop ()

    gboolean
    gst_rtsp_stream_query_stop (GstRTSPStream *stream,
                                gint64 *stop);

Query the stop of the stream in `GST_FORMAT_TIME`. This only considers the RTP parts of the pipeline and not the RTCP parts.

#### Parameters

stream | a GstRTSPStream |

#### Returns

`TRUE` if the stop could be queried

### gst_rtsp_stream_query_position ()

    gboolean
    gst_rtsp_stream_query_position (GstRTSPStream *stream,
                                    gint64 *position);

Query the position of the stream in `GST_FORMAT_TIME`. This only considers the RTP parts of the pipeline and not the RTCP parts.

#### Parameters

stream | a GstRTSPStream |

#### Returns

`TRUE` if the position could be queried

### gst_rtsp_stream_update_crypto ()

    gboolean
    gst_rtsp_stream_update_crypto (GstRTSPStream *stream,
                                   guint ssrc,
                                   GstCaps *crypto);

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

#### Parameters

stream | a GstRTSPStream |
ssrc | the SSRC |
crypto | a GstCaps with crypto info. | [transfer none][allow-none]

#### Returns

`TRUE` if `crypto` could be updated

### gst_rtsp_stream_set_pt_map ()

    void
    gst_rtsp_stream_set_pt_map (GstRTSPStream *stream,
                                guint pt,
                                GstCaps *caps);

Configure a pt map between `pt` and `caps` .

#### Parameters

stream | a GstRTSPStream |
pt | the pt |
caps | a GstCaps |

### gst_rtsp_stream_request_aux_sender ()

    GstElement *
    gst_rtsp_stream_request_aux_sender (GstRTSPStream *stream,
                                        guint sessid);

Creating a rtxsend bin

#### Parameters

stream | a GstRTSPStream |
sessid | the session id |

#### Returns

a GstElement.

[transfer full]

Since: 1.6

### GstRTSPStreamTransportFilterFunc ()

    GstRTSPFilterResult
    (*GstRTSPStreamTransportFilterFunc) (GstRTSPStream *stream,
                                         GstRTSPStreamTransport *trans,
                                         gpointer user_data);

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

#### Parameters

stream | a GstRTSPStream object |
trans | a GstRTSPStreamTransport in `stream` |
user_data | user data that has been given to `gst_rtsp_stream_transport_filter()` |

#### Returns

a GstRTSPFilterResult.

### gst_rtsp_stream_transport_filter ()

    GList *
    gst_rtsp_stream_transport_filter (GstRTSPStream *stream,
                                      GstRTSPStreamTransportFilterFunc func,
                                      gpointer user_data);

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.

#### Parameters

stream | a GstRTSPStream |
func | a callback. | [scope call][allow-none]
user_data | user data passed to `func` . | [closure]

#### Returns

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.

[element-type GstRTSPStreamTransport][transfer full]

## Types and Values

### struct GstRTSPStream

    struct GstRTSPStream;

The definition of a media stream.

### struct GstRTSPStreamClass

    struct GstRTSPStreamClass {
      GObjectClass parent_class;
    };

## Property Details

### The `“control”` property

      “control”                  gchar *

The control string for this stream.

Flags: Read / Write

Default value: NULL

### The `“profiles”` property

      “profiles”                 GstRTSPProfile

Allowed transfer profiles.

Flags: Read / Write

Default value: GST_RTSP_PROFILE_AVP

### The `“protocols”` property

      “protocols”                GstRTSPLowerTrans

Allowed lower transport protocols.

Flags: Read / Write

Default value: GST_RTSP_LOWER_TRANS_UDP | GST_RTSP_LOWER_TRANS_UDP_MCAST | GST_RTSP_LOWER_TRANS_TCP

## Signal Details

### The `“new-rtcp-encoder”` signal

    void
    user_function (GstRTSPStream *gstrtspstream,
                   GstElement    *arg1,
                   gpointer       user_data)

Flags: Run Last

### The `“new-rtp-encoder”` signal

    void
    user_function (GstRTSPStream *gstrtspstream,
                   GstElement    *arg1,
                   gpointer       user_data)

Flags: Run Last

## See Also

GstRTSPMedia