GStreamer RTSP Server Reference Manual: GstRTSPStream

## 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 ()
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_update_crypto ()
GstRTSPFilterResult | (*GstRTSPStreamTransportFilterFunc) ()
GList * | gst_rtsp_stream_transport_filter ()

## Types and Values

struct | GstRTSPStream
| 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 *srcpad);

Create a new media stream with index `idx` that handles RTP data on `srcpad` and has a payloader element `payloader` .

#### Parameters

idx | an index |
srcpad | 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_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_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

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

### GstRTSPStreamClass

    typedef struct _GstRTSPStreamClass GstRTSPStreamClass;

## See Also

GstRTSPMedia