rtpbin
RTP bin combines the functions of rtpsession, rtpssrcdemux, rtpjitterbuffer and rtpptdemux in one element. It allows for multiple RTP sessions that will be synchronized together using RTCP SR packets.
rtpbin is configured with a number of request pads that define the functionality that is activated, similar to the rtpsession element.
To use rtpbin as an RTP receiver, request a recv_rtp_sink_%u pad. The session number must be specified in the pad name. Data received on the recv_rtp_sink_%u pad will be processed in the rtpsession manager and after being validated forwarded on rtpssrcdemux element. Each RTP stream is demuxed based on the SSRC and send to a rtpjitterbuffer. After the packets are released from the jitterbuffer, they will be forwarded to a rtpptdemux element. The rtpptdemux element will demux the packets based on the payload type and will create a unique pad recv_rtp_src_%u_%u_%u on rtpbin with the session number, SSRC and payload type respectively as the pad name.
To also use rtpbin as an RTCP receiver, request a recv_rtcp_sink_%u 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_%u 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 rtpbin as a sender, request a send_rtp_sink_%u pad, which will automatically create a send_rtp_src_%u pad. If the session number is not provided, the pad from the lowest available session will be returned. The session manager will modify the SSRC in the RTP packets to its own SSRC and will forward the packets on the send_rtp_src_%u 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.
Access to the internal statistics of rtpbin is provided with the get-internal-session property. This action signal gives access to the RTPSession object which further provides action signals to retrieve the internal source and other sources.
rtpbin also has signals (#GstRtpBin::request-rtp-encoder, request-rtp-decoder, request-rtcp-encoder and request-rtp-decoder) to dynamically request for RTP and RTCP encoders and decoders in order to support SRTP. The encoders must provide the pads rtp_sink_%u and rtp_src_%u for RTP and rtcp_sink_%u and rtcp_src_%u for RTCP. The session number will be used in the pad name. The decoders must provide rtp_sink and rtp_src for RTP and rtcp_sink and rtcp_src for RTCP. The decoders will be placed before the rtpsession element, thus they must support SSRC demuxing internally.
rtpbin has signals (#GstRtpBin::request-aux-sender and request-aux-receiver to dynamically request an element that can be used to create or merge additional RTP streams. AUX elements are needed to implement FEC or retransmission (such as RFC 4588). An AUX sender must have one sink_%u pad that matches the sessionid in the signal and it should have 1 or more src_%u pads. For each src_%\u pad, a session will be made (if needed) and the pad will be linked to the session send_rtp_sink pad. Each session will then expose its source pad as send_rtp_src_%u on rtpbin. An AUX receiver has 1 src_%u pad that much match the sessionid in the signal and 1 or more sink_%u pads. A session will be made for each sink_%u pad when the corresponding recv_rtp_sink_%u pad is requested on rtpbin. The request-jitterbuffer signal can be used to provide a custom element to perform arrival time smoothing, reordering and optionally packet loss detection and retransmission requests.
Example pipelines
gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink_0 \
rtpbin ! rtptheoradepay ! theoradec ! xvimagesink
Receive RTP data from port 5000 and send to the session 0 in rtpbin.
gst-launch-1.0 rtpbin name=rtpbin \
v4l2src ! videoconvert ! ffenc_h263 ! rtph263ppay ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! udpsink port=5000 \
rtpbin.send_rtcp_src_0 ! udpsink port=5001 sync=false async=false \
udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 \
audiotestsrc ! amrnbenc ! rtpamrpay ! rtpbin.send_rtp_sink_1 \
rtpbin.send_rtp_src_1 ! udpsink port=5002 \
rtpbin.send_rtcp_src_1 ! udpsink port=5003 sync=false async=false \
udpsrc port=5007 ! rtpbin.recv_rtcp_sink_1
Encode and payload H263 video captured from a v4l2src. Encode and payload AMR audio generated from audiotestsrc. The video is sent to session 0 in rtpbin and the audio is sent to session 1. Video packets are sent on UDP port 5000 and audio packets on port 5002. The video RTCP packets for session 0 are sent on port 5001 and the audio RTCP packets for session 0 are sent on port 5003. RTCP packets for session 0 are received on port 5005 and RTCP for session 1 is received on port 5007. Since RTCP packets from the sender should be sent as soon as possible and do not participate in preroll, sync=false and async=false is configured on udpsink
gst-launch-1.0 -v rtpbin name=rtpbin \
udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998" \
port=5000 ! rtpbin.recv_rtp_sink_0 \
rtpbin. ! rtph263pdepay ! ffdec_h263 ! xvimagesink \
udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \
rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false \
udpsrc caps="application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)AMR,encoding-params=(string)1,octet-align=(string)1" \
port=5002 ! rtpbin.recv_rtp_sink_1 \
rtpbin. ! rtpamrdepay ! amrnbdec ! alsasink \
udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1 \
rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false
Receive H263 on port 5000, send it through rtpbin in session 0, depayload, decode and display the video. Receive AMR on port 5002, send it through rtpbin in session 1, depayload, decode and play the audio. Receive server RTCP packets for session 0 on port 5001 and RTCP packets for session 1 on port 5003. These packets will be used for session management and synchronisation. Send RTCP reports for session 0 on port 5005 and RTCP reports for session 1 on port 5007.
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstBin ╰──rtpbin
Implemented interfaces
Factory details
Authors: – Wim Taymans
Classification: – Filter/Network/RTP
Rank – none
Plugin – rtpmanager
Package – GStreamer Good Plug-ins
Pad Templates
recv_fec_sink_%u_%u
Sink template for receiving Forward Error Correction packets, in the form recv_fec_sink_<session_idx>_<fec_stream_idx>
See rtpst2022-1-fecdec for example usage
application/x-rtp:
Since : 1.20
recv_rtcp_sink_%u
application/x-rtcp:
application/x-srtcp:
recv_rtp_sink_%u
application/x-rtp:
application/x-srtp:
send_fec_src_%u_%u
Src template for sending Forward Error Correction packets, in the form send_fec_src_<session_idx>_<fec_stream_idx>
See rtpst2022-1-fecenc for example usage
application/x-rtp:
Since : 1.20
send_rtcp_src_%u
application/x-rtcp:
application/x-srtcp:
send_rtp_src_%u
application/x-rtp:
application/x-srtp:
Signals
new-jitterbuffer
new_jitterbuffer_callback (GstElement * rtpbin, GstElement * jitterbuffer, guint session, guint ssrc, gpointer udata)
def new_jitterbuffer_callback (rtpbin, jitterbuffer, session, ssrc, udata):
#python callback for the 'new-jitterbuffer' signal
function new_jitterbuffer_callback(rtpbin: GstElement * rtpbin, jitterbuffer: GstElement * jitterbuffer, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'new-jitterbuffer' signal
}
Notify that a new jitterbuffer was created for session and ssrc. This signal can, for example, be used to configure jitterbuffer.
Parameters:
rtpbin
–
the object which received the signal
jitterbuffer
–
the new jitterbuffer
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
Since : 1.4
new-storage
new_storage_callback (GstElement * rtpbin, GstElement * storage, guint session, gpointer udata)
def new_storage_callback (rtpbin, storage, session, udata):
#python callback for the 'new-storage' signal
function new_storage_callback(rtpbin: GstElement * rtpbin, storage: GstElement * storage, session: guint session, udata: gpointer udata): {
// javascript callback for the 'new-storage' signal
}
Notify that a new storage was created for session. This signal can, for example, be used to configure storage.
Parameters:
rtpbin
–
the object which received the signal
storage
–
the new storage
session
–
the session
udata
–
Flags: Run Last
Since : 1.14
on-bye-ssrc
on_bye_ssrc_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_bye_ssrc_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-bye-ssrc' signal
function on_bye_ssrc_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-bye-ssrc' signal
}
Notify of an SSRC that became inactive because of a BYE packet.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-bye-timeout
on_bye_timeout_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_bye_timeout_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-bye-timeout' signal
function on_bye_timeout_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-bye-timeout' signal
}
Notify of an SSRC that has timed out because of BYE
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-new-sender-ssrc
on_new_sender_ssrc_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_new_sender_ssrc_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-new-sender-ssrc' signal
function on_new_sender_ssrc_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-new-sender-ssrc' signal
}
Notify of a new sender SSRC that entered session.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the sender SSRC
udata
–
Flags: Run Last
Since : 1.8
on-new-ssrc
on_new_ssrc_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_new_ssrc_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-new-ssrc' signal
function on_new_ssrc_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-new-ssrc' signal
}
Notify of a new SSRC that entered session.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-npt-stop
on_npt_stop_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_npt_stop_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-npt-stop' signal
function on_npt_stop_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-npt-stop' signal
}
Notify that SSRC sender has sent data up to the configured NPT stop time.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-sender-ssrc-active
on_sender_ssrc_active_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_sender_ssrc_active_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-sender-ssrc-active' signal
function on_sender_ssrc_active_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-sender-ssrc-active' signal
}
Notify of a sender SSRC that is active, i.e., sending RTCP.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the sender SSRC
udata
–
Flags: Run Last
Since : 1.8
on-sender-timeout
on_sender_timeout_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_sender_timeout_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-sender-timeout' signal
function on_sender_timeout_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-sender-timeout' signal
}
Notify of a sender SSRC that has timed out and became a receiver
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-ssrc-active
on_ssrc_active_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_ssrc_active_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-ssrc-active' signal
function on_ssrc_active_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-ssrc-active' signal
}
Notify of a SSRC that is active, i.e., sending RTCP.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-ssrc-collision
on_ssrc_collision_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_ssrc_collision_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-ssrc-collision' signal
function on_ssrc_collision_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-ssrc-collision' signal
}
Notify when we have an SSRC collision
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-ssrc-sdes
on_ssrc_sdes_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_ssrc_sdes_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-ssrc-sdes' signal
function on_ssrc_sdes_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-ssrc-sdes' signal
}
Notify of a SSRC that is active, i.e., sending RTCP.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-ssrc-validated
on_ssrc_validated_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_ssrc_validated_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-ssrc-validated' signal
function on_ssrc_validated_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-ssrc-validated' signal
}
Notify of a new SSRC that became validated.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
on-timeout
on_timeout_callback (GstElement * rtpbin, guint session, guint ssrc, gpointer udata)
def on_timeout_callback (rtpbin, session, ssrc, udata):
#python callback for the 'on-timeout' signal
function on_timeout_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, udata: gpointer udata): {
// javascript callback for the 'on-timeout' signal
}
Notify of an SSRC that has timed out
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
ssrc
–
the SSRC
udata
–
Flags: Run Last
payload-type-change
payload_type_change_callback (GstElement * rtpbin, guint session, guint pt, gpointer udata)
def payload_type_change_callback (rtpbin, session, pt, udata):
#python callback for the 'payload-type-change' signal
function payload_type_change_callback(rtpbin: GstElement * rtpbin, session: guint session, pt: guint pt, udata: gpointer udata): {
// javascript callback for the 'payload-type-change' signal
}
Signal that the current payload type changed to pt in session.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
pt
–
the pt
udata
–
Flags: Run Last
request-aux-receiver
GstElement * request_aux_receiver_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_aux_receiver_callback (rtpbin, session, udata):
#python callback for the 'request-aux-receiver' signal
function request_aux_receiver_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-aux-receiver' signal
}
Request an AUX receiver element for the given session. The AUX element will be added to the bin.
If no handler is connected, no AUX element will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
request-aux-sender
GstElement * request_aux_sender_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_aux_sender_callback (rtpbin, session, udata):
#python callback for the 'request-aux-sender' signal
function request_aux_sender_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-aux-sender' signal
}
Request an AUX sender element for the given session. The AUX element will be added to the bin.
If no handler is connected, no AUX element will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
request-fec-decoder
GstElement * request_fec_decoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_fec_decoder_callback (rtpbin, session, udata):
#python callback for the 'request-fec-decoder' signal
function request_fec_decoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-fec-decoder' signal
}
Request a FEC decoder element for the given session. The element will be added to the bin after the pt demuxer. If there are multiple ssrc's and pt's in session, this signal may be called multiple times for the same session each corresponding to a newly discovered ssrc.
If no handler is connected, no FEC decoder will be used.
Warning: usage of this signal is not appropriate for the BUNDLE case, connect to request-fec-decoder-full instead.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session index
udata
–
Flags: Run Last
Since : 1.14
request-fec-decoder-full
GstElement * request_fec_decoder_full_callback (GstElement * rtpbin, guint session, guint ssrc, guint pt, gpointer udata)
def request_fec_decoder_full_callback (rtpbin, session, ssrc, pt, udata):
#python callback for the 'request-fec-decoder-full' signal
function request_fec_decoder_full_callback(rtpbin: GstElement * rtpbin, session: guint session, ssrc: guint ssrc, pt: guint pt, udata: gpointer udata): {
// javascript callback for the 'request-fec-decoder-full' signal
}
Request a FEC decoder element for the given session. The element will be added to the bin after the pt demuxer. If there are multiple ssrc's and pt's in session, this signal may be called multiple times for the same session each corresponding to a newly discovered ssrc and payload type, those are provided as parameters.
If no handler is connected, no FEC decoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session index
ssrc
–
the ssrc of the stream
pt
–
the payload type
udata
–
Flags: Run Last
Since : 1.20
request-fec-encoder
GstElement * request_fec_encoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_fec_encoder_callback (rtpbin, session, udata):
#python callback for the 'request-fec-encoder' signal
function request_fec_encoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-fec-encoder' signal
}
Request a FEC encoder element for the given session. The element will be added to the bin after the RTPSession.
If no handler is connected, no FEC encoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session index
udata
–
Flags: Run Last
Since : 1.14
request-jitterbuffer
GstElement * request_jitterbuffer_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_jitterbuffer_callback (rtpbin, session, udata):
#python callback for the 'request-jitterbuffer' signal
function request_jitterbuffer_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-jitterbuffer' signal
}
Request a jitterbuffer element for the given session.
If no handler is connected, the default jitterbuffer will be used.
Note: The provided element is expected to conform to the API exposed by the standard rtpjitterbuffer. Runtime checks will be made to determine whether it exposes properties and signals before attempting to set, call or connect to them, and some functionalities of rtpbin may not be available when that is not the case.
This should be considered experimental API, as the standard jitterbuffer API is susceptible to change, provided elements will have to update their custom jitterbuffer's API to match the API of rtpjitterbuffer if and when it changes.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.18
request-pt-map
GstCaps * request_pt_map_callback (GstElement * rtpbin, guint session, guint pt, gpointer udata)
def request_pt_map_callback (rtpbin, session, pt, udata):
#python callback for the 'request-pt-map' signal
function request_pt_map_callback(rtpbin: GstElement * rtpbin, session: guint session, pt: guint pt, udata: gpointer udata): {
// javascript callback for the 'request-pt-map' signal
}
Request the payload type as GstCaps for pt in session.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
pt
–
the pt
udata
–
Flags: Run Last
request-rtcp-decoder
GstElement * request_rtcp_decoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_rtcp_decoder_callback (rtpbin, session, udata):
#python callback for the 'request-rtcp-decoder' signal
function request_rtcp_decoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-rtcp-decoder' signal
}
Request an RTCP decoder element for the given session. The decoder element will be added to the bin if not previously added.
If no handler is connected, no encoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
request-rtcp-encoder
GstElement * request_rtcp_encoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_rtcp_encoder_callback (rtpbin, session, udata):
#python callback for the 'request-rtcp-encoder' signal
function request_rtcp_encoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-rtcp-encoder' signal
}
Request an RTCP encoder element for the given session. The encoder element will be added to the bin if not previously added.
If no handler is connected, no encoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
request-rtp-decoder
GstElement * request_rtp_decoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_rtp_decoder_callback (rtpbin, session, udata):
#python callback for the 'request-rtp-decoder' signal
function request_rtp_decoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-rtp-decoder' signal
}
Request an RTP decoder element for the given session. The decoder element will be added to the bin if not previously added.
If no handler is connected, no encoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
request-rtp-encoder
GstElement * request_rtp_encoder_callback (GstElement * rtpbin, guint session, gpointer udata)
def request_rtp_encoder_callback (rtpbin, session, udata):
#python callback for the 'request-rtp-encoder' signal
function request_rtp_encoder_callback(rtpbin: GstElement * rtpbin, session: guint session, udata: gpointer udata): {
// javascript callback for the 'request-rtp-encoder' signal
}
Request an RTP encoder element for the given session. The encoder element will be added to the bin if not previously added.
If no handler is connected, no encoder will be used.
Parameters:
rtpbin
–
the object which received the signal
session
–
the session
udata
–
Flags: Run Last
Since : 1.4
Action Signals
clear-pt-map
g_signal_emit_by_name (rtpbin, "clear-pt-map");
ret = rtpbin.emit ("clear-pt-map")
let ret = rtpbin.emit ("clear-pt-map");
Clear all previously cached pt-mapping obtained with request-pt-map.
Parameters:
the object which received the signal
clear-ssrc
g_signal_emit_by_name (rtpbin, "clear-ssrc", id, ssrc);
ret = rtpbin.emit ("clear-ssrc", id, ssrc)
let ret = rtpbin.emit ("clear-ssrc", id, ssrc);
Remove all pads from rtpssrcdemux element associated with the specified ssrc. This delegate the action signal to the rtpssrcdemux element associated with the specified session.
Parameters:
the object which received the signal
the session id
the ssrc
Since : 1.20
get-internal-session
g_signal_emit_by_name (rtpbin, "get-internal-session", id, &ret);
ret = rtpbin.emit ("get-internal-session", id)
let ret = rtpbin.emit ("get-internal-session", id);
Request the internal RTPSession object as GObject in session id.
Parameters:
the object which received the signal
the session id
get-internal-storage
g_signal_emit_by_name (rtpbin, "get-internal-storage", id, &ret);
ret = rtpbin.emit ("get-internal-storage", id)
let ret = rtpbin.emit ("get-internal-storage", id);
Request the internal RTPStorage object as GObject in session id. This is the internal storage used by the RTPStorage element, which is used to keep a backlog of received RTP packets for the session id.
Parameters:
the object which received the signal
the session id
Since : 1.14
get-session
g_signal_emit_by_name (rtpbin, "get-session", id, &ret);
ret = rtpbin.emit ("get-session", id)
let ret = rtpbin.emit ("get-session", id);
Request the related GstRtpSession as GstElement related with session id.
Parameters:
the object which received the signal
the session id
Since : 1.8
get-storage
g_signal_emit_by_name (rtpbin, "get-storage", id, &ret);
ret = rtpbin.emit ("get-storage", id)
let ret = rtpbin.emit ("get-storage", id);
Request the RTPStorage element as GObject in session id. This element is used to keep a backlog of received RTP packets for the session id.
Parameters:
the object which received the signal
the session id
Since : 1.16
reset-sync
g_signal_emit_by_name (rtpbin, "reset-sync");
ret = rtpbin.emit ("reset-sync")
let ret = rtpbin.emit ("reset-sync");
Reset all currently configured lip-sync parameters and require new SR packets for all streams before lip-sync is attempted again.
Parameters:
the object which received the signal
Properties
add-reference-timestamp-meta
“add-reference-timestamp-meta” gboolean
When syncing to a RFC7273 clock or after clock synchronization via RTCP or inband NTP-64 header extensions has happened, add GstReferenceTimestampMeta to buffers with the original reconstructed reference clock timestamp.
Flags : Read / Write
Default value : false
Since : 1.22
autoremove
“autoremove” gboolean
Automatically remove timed out sources
Flags : Read / Write
Default value : false
buffer-mode
“buffer-mode” RTPJitterBufferMode *
Control the buffering and timestamping mode used by the jitterbuffer.
Flags : Read / Write
Default value : slave (1)
do-lost
“do-lost” gboolean
Send an event downstream when a packet is lost
Flags : Read / Write
Default value : false
do-retransmission
“do-retransmission” gboolean
Enables RTP retransmission on all streams. To control retransmission on a per-SSRC basis, connect to the new-jitterbuffer signal and set the do-retransmission property on the rtpjitterbuffer object instead.
Flags : Read / Write
Default value : false
do-sync-event
“do-sync-event” gboolean
Send event downstream when a stream is synchronized to the sender
Flags : Read / Write
Default value : false
drop-on-latency
“drop-on-latency” gboolean
Tells the jitterbuffer to never exceed the given latency in size
Flags : Read / Write
Default value : false
fec-decoders
“fec-decoders” GstStructure *
Used to provide a factory used to build the FEC decoder for a given session, as a command line alternative to request-fec-decoder.
Expects a GstStructure in the form session_id (gint) -> factory (string)
Flags : Read / Write
Default value :
application/x-rtp-fec-decoders;
Since : 1.20
fec-encoders
“fec-encoders” GstStructure *
Used to provide a factory used to build the FEC encoder for a given session, as a command line alternative to request-fec-encoder.
Expects a GstStructure in the form session_id (gint) -> factory (string)
Flags : Read / Write
Default value :
application/x-rtp-fec-encoders;
Since : 1.20
ignore-pt
“ignore-pt” gboolean
Do not demultiplex based on PT values
Flags : Read / Write
Default value : false
latency
“latency” guint
Default amount of ms to buffer in the jitterbuffers
Flags : Read / Write
Default value : 200
max-dropout-time
“max-dropout-time” guint
The maximum time (milliseconds) of missing packets tolerated.
Flags : Read / Write
Default value : 60000
max-misorder-time
“max-misorder-time” guint
The maximum time (milliseconds) of misordered packets tolerated.
Flags : Read / Write
Default value : 2000
max-rtcp-rtp-time-diff
“max-rtcp-rtp-time-diff” gint
Maximum amount of time in ms that the RTP time in RTCP SRs is allowed to be ahead (-1 disabled)
Flags : Read / Write
Default value : -1
max-streams
“max-streams” guint
The maximum number of streams to create for one session
Flags : Read / Write
Default value : -1
max-ts-offset
“max-ts-offset” gint64
Used to set an upper limit of how large a time offset may be. This is used to protect against unrealistic values as a result of either client,server or clock issues.
Flags : Read / Write
Default value : 3000000000
Since : 1.14
max-ts-offset-adjustment
“max-ts-offset-adjustment” guint64
Syncing time stamps to NTP time adds a time offset. This parameter specifies the maximum number of nanoseconds per frame that this time offset may be adjusted with. This is used to avoid sudden large changes to time stamps.
Flags : Read / Write
Default value : 0
Since : 1.14
min-ts-offset
“min-ts-offset” guint64
Used to set an lower limit for when a time offset is deemed large enough to be useful for sync corrections.
When streaming for instance audio, even very small ts_offsets cause audible glitches. This property is used for controlling how sensitive the adjustments should be to small deviations in ts_offset, occurring for instance due to jittery network conditions or system load.
Flags : Read / Write
Default value : 4000000
Since : 1.22
ntp-sync
“ntp-sync” gboolean
Set the NTP time from the sender reports as the running-time on the buffers. When both the sender and receiver have sychronized running-time, i.e. when the clock and base-time is shared between the receivers and the and the senders, this option can be used to synchronize receivers on multiple machines.
Flags : Read / Write
Default value : false
ntp-time-source
“ntp-time-source” GstRtpNtpTimeSource *
NTP time source for RTCP packets
Flags : Read / Write
Default value : ntp (0)
rfc7273-sync
“rfc7273-sync” gboolean
Synchronize received streams to the RFC7273 clock (requires clock and offset to be provided)
Flags : Read / Write
Default value : false
rtcp-sync
“rtcp-sync” Rtcpsync *
If not synchronizing (directly) to the NTP clock, determines how to sync the various streams.
Flags : Read / Write
Default value : always (0)
rtcp-sync-interval
“rtcp-sync-interval” guint
Determines how often to sync streams using RTCP data or inband NTP-64 header extensions.
Flags : Read / Write
Default value : 0
rtcp-sync-send-time
“rtcp-sync-send-time” gboolean
Use send time or capture time for RTCP sync (TRUE = send time, FALSE = capture time)
Flags : Read / Write
Default value : true
rtp-profile
“rtp-profile” GstRTPProfile *
Sets the default RTP profile of newly created RTP sessions. The profile can be changed afterwards on a per-session basis.
Flags : Read / Write
Default value : avp (1)
timeout-inactive-sources
“timeout-inactive-sources” gboolean
Whether inactive sources should be timed out
Flags : Read / Write
Default value : true
Since : 1.24
ts-offset-smoothing-factor
“ts-offset-smoothing-factor” guint
Controls the weighting between previous and current timestamp offsets in a running moving average (RMA): ts_offset_average(n) = ((ts-offset-smoothing-factor - 1) * ts_offset_average(n - 1) + ts_offset(n)) / ts-offset-smoothing-factor
This can stabilize the timestamp offset and prevent unnecessary skew corrections due to jitter introduced by network or system load.
Flags : Read / Write
Default value : 0
Since : 1.22
update-ntp64-header-ext
“update-ntp64-header-ext” gboolean
Whether RTP NTP header extension should be updated with actual NTP time. If not, use the NTP time from buffer timestamp metadata
Flags : Read / Write
Default value : true
Since : 1.22
use-pipeline-clock
“use-pipeline-clock” gboolean
Use the pipeline running-time to set the NTP time in the RTCP SR messages (DEPRECATED: Use ntp-time-source property)
Flags : Read / Write
Default value : false
Named constants
Rtcpsync
Members
always
(0) – always
initial
(1) – initial
rtp-info
(2) – rtp-info
ntp
(3) – ntp
never
(4) – never
The results of the search are