GStreamer Good Plugins 0.10 Plugins Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
"bandwidth" gdouble : Read / Write "internal-session" RTPSession* : Read "ntp-ns-base" guint64 : Read / Write "num-active-sources" guint : Read "num-sources" guint : Read "rtcp-fraction" gdouble : Read / Write "sdes" GstStructure* : Read / Write
"clear-pt-map" : Action "on-bye-ssrc" : Run Last "on-bye-timeout" : Run Last "on-new-ssrc" : Run Last "on-sender-timeout" : Run Last "on-ssrc-active" : Run Last "on-ssrc-collision" : Run Last "on-ssrc-sdes" : Run Last "on-ssrc-validated" : Run Last "on-timeout" : Run Last "request-pt-map" : Run Last
The RTP session manager models one participant with a unique SSRC in an RTP session. This session can be used to send and receive RTP and RTCP packets. Based on what REQUEST pads are requested from the session manager, specific functionality can be activated.
The session manager currently implements RFC 3550 including:
RTP packet validation based on consecutive sequence numbers.
Maintainance of the SSRC participant database.
Keeping per participant statistics based on received RTCP packets.
Scheduling of RR/SR RTCP packets.
The gstrtpsession will not demux packets based on SSRC or payload type, nor will it correct for packet reordering and jitter. Use GstRtpsSrcDemux, GstRtpPtDemux and GstRtpJitterBuffer in addition to GstRtpSession to perform these tasks. It is usually a good idea to use GstRtpBin, which combines all these features in one element.
To use GstRtpSession as an RTP receiver, request a recv_rtp_sink pad, which will automatically create recv_rtp_src pad. Data received on the recv_rtp_sink pad will be processed in the session and after being validated forwarded on the recv_rtp_src pad.
To also use GstRtpSession as an RTCP receiver, request a recv_rtcp_sink pad, which will automatically create a sync_src pad. Packets received on the RTCP pad will be used by the session manager to update the stats and database of the other participants. SR packets will be forwarded on the sync_src pad so that they can be used to perform inter-stream synchronisation when needed.
If you want the session manager to generate and send RTCP packets, request the send_rtcp_src pad. Packet pushed on this pad contain SR/RR RTCP reports that should be sent to all participants in the session.
To use GstRtpSession as a sender, request a send_rtp_sink pad, which will automatically create a send_rtp_src 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 pad after updating its internal state.
The session manager needs the clock-rate of the payload types it is handling and will signal the "request-pt-map" signal when it needs such a mapping. One can clear the cached values with the "clear-pt-map" signal.
gst-launch udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink gstrtpsession .recv_rtp_src ! rtptheoradepay ! theoradec ! xvimagesink
gst-launch udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink gstrtpsession name=session \ .recv_rtp_src ! rtptheoradepay ! theoradec ! xvimagesink \ udpsrc port=5001 caps="application/x-rtcp" ! session.recv_rtcp_sink
gst-launch videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession .send_rtp_src ! udpsink port=5000
gst-launch videotestsrc ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession name=session .send_rtp_src \ ! udpsink port=5000 session.send_rtcp_src ! udpsink port=5001
gst_element_set_locked_state()
) the RTCP udpsink to the PLAYING state.
Last reviewed on 2007-05-28 (0.10.5)
"bandwidth"
property "bandwidth" gdouble : Read / Write
The bandwidth of the session.
Allowed values: >= 0
Default value: 64000
"internal-session"
property "internal-session" RTPSession* : Read
The internal RTPSession object.
"ntp-ns-base"
property "ntp-ns-base" guint64 : Read / Write
The NTP base time corresponding to running_time 0 (deprecated).
Default value: 0
"num-active-sources"
property "num-active-sources" guint : Read
The number of active sources in the session.
Default value: 0
"num-sources"
property "num-sources" guint : Read
The number of sources in the session.
Default value: 0
"rtcp-fraction"
property "rtcp-fraction" gdouble : Read / Write
The fraction of the bandwidth used for RTCP.
Allowed values: >= 0
Default value: 3000
"clear-pt-map"
signalvoid user_function (GstRtpSession *sess, gpointer user_data) : Action
Clear the cached pt-maps requested with "request-pt-map".
|
the object which received the signal |
|
user data set when the signal handler was connected. |
"on-bye-ssrc"
signalvoid user_function (GstRtpSession *sess, guint ssrc, gpointer user_data) : Run Last
Notify of an SSRC that became inactive because of a BYE packet.
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"on-bye-timeout"
signalvoid user_function (GstRtpSession *sess, guint ssrc, gpointer user_data) : Run Last
Notify of an SSRC that has timed out because of BYE
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"on-new-ssrc"
signalvoid user_function (GstRtpSession *sess, guint ssrc, gpointer user_data) : Run Last
Notify of a new SSRC that entered session
.
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"on-sender-timeout"
signalvoid user_function (GstRtpSession *sess, guint ssrc, gpointer user_data) : Run Last
Notify of a sender SSRC that has timed out and became a receiver
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"on-ssrc-active"
signalvoid user_function (GstRtpSession *gstrtpsession, guint arg1, gpointer user_data) : Run Last
|
the object which received the signal. |
|
|
|
user data set when the signal handler was connected. |
"on-ssrc-collision"
signalvoid user_function (GstRtpSession *gstrtpsession, guint arg1, gpointer user_data) : Run Last
|
the object which received the signal. |
|
|
|
user data set when the signal handler was connected. |
"on-ssrc-sdes"
signalvoid user_function (GstRtpSession *session, guint src, gpointer user_data) : Run Last
Notify that a new SDES was received for SSRC.
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"on-ssrc-validated"
signalvoid user_function (GstRtpSession *gstrtpsession, guint arg1, gpointer user_data) : Run Last
|
the object which received the signal. |
|
|
|
user data set when the signal handler was connected. |
"on-timeout"
signalvoid user_function (GstRtpSession *sess, guint ssrc, gpointer user_data) : Run Last
Notify of an SSRC that has timed out
|
the object which received the signal |
|
the SSRC |
|
user data set when the signal handler was connected. |
"request-pt-map"
signalGstCaps* user_function (GstRtpSession *sess, guint pt, gpointer user_data) : Run Last
Request the payload type as GstCaps for pt
.
|
the object which received the signal |
|
the pt |
|
user data set when the signal handler was connected. |