gstrtpbin

gstrtpbin — handle media from one RTP bin

Synopsis




                    GstRTPBin;

Object Hierarchy


  GObject
   +----GstObject
         +----GstElement
               +----GstBin
                     +----GstRTPBin

Implemented Interfaces

GstRTPBin implements GstChildProxy.

Properties


  "latency"                  guint                 : Read / Write

Signals


  "clear-pt-map"                                   : Action
  "request-pt-map"                                 : Run Last

Description

RTP bin combines the functions of gstrtpsession, gstrtpssrcdemux, gstrtpjitterbuffer and gstrtpptdemux in one element. It allows for multiple RTP sessions that will be synchronized together using RTCP SR packets.

gstrtpbin is configured with a number of request pads that define the functionality that is activated, similar to the gstrtpsession element.

To use gstrtpbin as an RTP receiver, request a recv_rtp_sink_%d pad. The session number must be specified in the pad name. Data received on the recv_rtp_sink_%d pad will be processed in the gstrtpsession manager and after being validated forwarded on gstrtpssrcdemuxer element. Each RTP stream is demuxed based on the SSRC and send to a gstrtpjitterbuffer. After the packets are released from the jitterbuffer, they will be forwarded to a gstrtpptdemuxer element. The gstrtpptdemuxer element will demux the packets based on the payload type and will create a unique pad recv_rtp_src_%d_%d_%d on gstrtpbin with the session number, SSRC and payload type respectively as the pad name.

To also use gstrtpbin as an RTCP receiver, request a recv_rtcp_sink_%d pad. The session number must be specified in the pad name.

If you want the session manager to generate and send RTCP packets, request the send_rtcp_src_%d pad with the session number in the pad name. Packet pushed on this pad contain SR/RR RTCP reports that should be sent to all participants in the session.

To use gstrtpbin as a sender, request a send_rtp_sink_%d pad, which will automatically create a send_rtp_src_%d pad. The session number must be specified when requesting the sink pad. The session manager will modify the SSRC in the RTP packets to its own SSRC and wil forward the packets on the send_rtp_src_%d pad after updating its internal state.

The session manager needs the clock-rate of the payload types it is handling and will signal the GstRTPSession::request-pt-map signal when it needs such a mapping. One can clear the cached values with the GstRTPSession::clear-pt-map signal.

Example pipelines

gst-launch udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink_0 \
    gstrtpbin ! rtptheoradepay ! theoradec ! xvimagesink

Receive RTP data from port 5000 and send to the session 0 in gstrtpbin.

Last reviewed on 2007-05-28 (0.10.5)

Element Information

plugin gstrtpmanager
author Wim Taymans <wim@fluendo.com>
class Filter/Network/RTP

Details

GstRTPBin

typedef struct _GstRTPBin GstRTPBin;

Property Details

The "latency" property

  "latency"                  guint                 : Read / Write

Default amount of ms to buffer in the jitterbuffers.

Default value: 200

Signal Details

The "clear-pt-map" signal

void                user_function                      (GstRTPBin *rtpbin,
                                                        gpointer   user_data)      : Action

Clear all previously cached pt-mapping obtained with GstRTPBin::request-pt-map.

rtpbin : the object which received the signal
user_data : user data set when the signal handler was connected.

The "request-pt-map" signal

GstCaps*            user_function                      (GstRTPBin *rtpbin,
                                                        guint      session,
                                                        guint      pt,
                                                        gpointer   user_data)      : Run Last

Request the payload type as GstCaps for pt in session.

rtpbin : the object which received the signal
session : the session
pt : the pt
user_data : user data set when the signal handler was connected.

See Also

gstrtpjitterbuffer, gstrtpsession, gstrtpptdemux, gstrtpssrcdemux