GstRTSPStream

GstRTSPStream — A media stream

Synopsis

struct              GstRTSPStream;
                    GstRTSPStreamClass;
GstRTSPStream *     gst_rtsp_stream_new                 (guint idx,
                                                         GstElement *payloader,
                                                         GstPad *srcpad);
guint               gst_rtsp_stream_get_index           (GstRTSPStream *stream);
GstPad *            gst_rtsp_stream_get_srcpad          (GstRTSPStream *stream);
gchar *             gst_rtsp_stream_get_control         (GstRTSPStream *stream);
void                gst_rtsp_stream_set_control         (GstRTSPStream *stream,
                                                         const gchar *control);
gboolean            gst_rtsp_stream_has_control         (GstRTSPStream *stream,
                                                         const gchar *control);
guint               gst_rtsp_stream_get_mtu             (GstRTSPStream *stream);
void                gst_rtsp_stream_set_mtu             (GstRTSPStream *stream,
                                                         guint mtu);
gint                gst_rtsp_stream_get_dscp_qos        (GstRTSPStream *stream);
void                gst_rtsp_stream_set_dscp_qos        (GstRTSPStream *stream,
                                                         gint dscp_qos);
GstRTSPLowerTrans   gst_rtsp_stream_get_protocols       (GstRTSPStream *stream);
void                gst_rtsp_stream_set_protocols       (GstRTSPStream *stream,
                                                         GstRTSPLowerTrans protocols);
GstRTSPAddressPool * gst_rtsp_stream_get_address_pool   (GstRTSPStream *stream);
void                gst_rtsp_stream_set_address_pool    (GstRTSPStream *stream,
                                                         GstRTSPAddressPool *pool);
GstRTSPAddress *    gst_rtsp_stream_reserve_address     (GstRTSPStream *stream,
                                                         const gchar *address,
                                                         guint port,
                                                         guint n_ports,
                                                         guint ttl);
gboolean            gst_rtsp_stream_join_bin            (GstRTSPStream *stream,
                                                         GstBin *bin,
                                                         GstElement *rtpbin,
                                                         GstState state);
gboolean            gst_rtsp_stream_leave_bin           (GstRTSPStream *stream,
                                                         GstBin *bin,
                                                         GstElement *rtpbin);
void                gst_rtsp_stream_get_server_port     (GstRTSPStream *stream,
                                                         GstRTSPRange *server_port,
                                                         GSocketFamily family);
GstRTSPAddress *    gst_rtsp_stream_get_multicast_address
                                                        (GstRTSPStream *stream,
                                                         GSocketFamily family);
GObject *           gst_rtsp_stream_get_rtpsession      (GstRTSPStream *stream);
void                gst_rtsp_stream_get_ssrc            (GstRTSPStream *stream,
                                                         guint *ssrc);
gboolean            gst_rtsp_stream_get_rtpinfo         (GstRTSPStream *stream,
                                                         guint *rtptime,
                                                         guint *seq,
                                                         guint *clock_rate,
                                                         GstClockTime *running_time);
GstCaps *           gst_rtsp_stream_get_caps            (GstRTSPStream *stream);
GstFlowReturn       gst_rtsp_stream_recv_rtcp           (GstRTSPStream *stream,
                                                         GstBuffer *buffer);
GstFlowReturn       gst_rtsp_stream_recv_rtp            (GstRTSPStream *stream,
                                                         GstBuffer *buffer);
gboolean            gst_rtsp_stream_add_transport       (GstRTSPStream *stream,
                                                         GstRTSPStreamTransport *trans);
gboolean            gst_rtsp_stream_remove_transport    (GstRTSPStream *stream,
                                                         GstRTSPStreamTransport *trans);
GSocket *           gst_rtsp_stream_get_rtp_socket      (GstRTSPStream *stream,
                                                         GSocketFamily family);
GSocket *           gst_rtsp_stream_get_rtcp_socket     (GstRTSPStream *stream,
                                                         GSocketFamily family);
GstRTSPFilterResult (*GstRTSPStreamTransportFilterFunc) (GstRTSPStream *stream,
                                                         GstRTSPStreamTransport *trans,
                                                         gpointer user_data);
GList *             gst_rtsp_stream_transport_filter    (GstRTSPStream *stream,
                                                         GstRTSPStreamTransportFilterFunc func,
                                                         gpointer user_data);

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)

Details

struct GstRTSPStream

struct GstRTSPStream;

The definition of a media stream.


GstRTSPStreamClass

typedef struct _GstRTSPStreamClass GstRTSPStreamClass;

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.

idx :

an index

srcpad :

a GstPad

payloader :

a GstElement

Returns :

a new GstRTSPStream

gst_rtsp_stream_get_index ()

guint               gst_rtsp_stream_get_index           (GstRTSPStream *stream);

Get the stream index.

Return: the stream index.

stream :

a GstRTSPStream

gst_rtsp_stream_get_srcpad ()

GstPad *            gst_rtsp_stream_get_srcpad          (GstRTSPStream *stream);

Get the srcpad associated with stream.

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.

stream :

a GstRTSPStream

Returns :

the control string. 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.

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.

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.

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.

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.

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.

stream :

a GstRTSPStream

dscp_qos :

a new dscp qos value (0-63, or -1 to disable)

gst_rtsp_stream_get_protocols ()

GstRTSPLowerTrans   gst_rtsp_stream_get_protocols       (GstRTSPStream *stream);

Get the allowed protocols of stream.

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.

stream :

a GstRTSPStream

protocols :

the new flags

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.

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.

stream :

a GstRTSPStream

pool :

a GstRTSPAddressPool

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.

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.

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.

stream :

a GstRTSPStream

bin :

a GstBin to join

rtpbin :

a rtpbin element in bin

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.

stream :

a GstRTSPStream

bin :

a GstBin

rtpbin :

a rtpbin GstElement

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.

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.

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.

gst_rtsp_stream_get_rtpsession ()

GObject *           gst_rtsp_stream_get_rtpsession      (GstRTSPStream *stream);

Get the RTP session of this stream.

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.

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.

stream :

a GstRTSPStream

rtptime :

result RTP timestamp. [allow-none]

seq :

result RTP seqnum. [allow-none]

clock_rate :

the clock rate

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.

stream :

a GstRTSPStream

Returns :

the GstCaps of stream. use gst_caps_unref() after usage. [transfer full]

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.

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.

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.

stream :

a GstRTSPStream

trans :

a GstRTSPStreamTransport

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.

stream :

a GstRTSPStream

trans :

a GstRTSPStreamTransport

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.

stream :

a GstRTSPStream

family :

the socket family

Returns :

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

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.

stream :

a GstRTSPStream

family :

the socket family

Returns :

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

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

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.

stream :

a GstRTSPStream

func :

a callback. [scope call][allow-none]

user_data :

user data passed to func

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]

See Also

GstRTSPMedia