rtprtxqueue
rtprtxqueue maintains a queue of transmitted RTP packets, up to a configurable limit (see max-size-time, max-size-packets), and retransmits them upon request from the downstream rtpsession (GstRTPRetransmissionRequest event).
This element is similar to rtprtxsend, but it has differences:
- Retransmission from rtprtxqueue is not RFC 4588 compliant. The retransmitted packets have the same ssrc and payload type as the original stream.
- As a side-effect of the above, rtprtxqueue does not require the use of rtprtxreceive on the receiving end. rtpjitterbuffer alone is able to reconstruct the stream.
- Retransmission from rtprtxqueue happens as soon as the next regular flow packet is chained, while rtprtxsend retransmits as soon as the retransmission event is received, using a helper thread.
- rtprtxqueue can be used with rtpbin without the need of hooking to its request-aux-sender signal, which means it can be used with rtpbin using gst-launch.
See also rtprtxsend, rtprtxreceive
Example pipelines
gst-launch-1.0 rtpbin name=b rtp-profile=avpf \
audiotestsrc is-live=true ! opusenc ! rtpopuspay pt=96 ! rtprtxqueue ! b.send_rtp_sink_0 \
b.send_rtp_src_0 ! identity drop-probability=0.01 ! udpsink host="127.0.0.1" port=5000 \
udpsrc port=5001 ! b.recv_rtcp_sink_0 \
b.send_rtcp_src_0 ! udpsink host="127.0.0.1" port=5002 sync=false async=false
Sender pipeline
gst-launch-1.0 rtpbin name=b rtp-profile=avpf do-retransmission=true \
udpsrc port=5000 caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS,payload=(int)96" ! \
b.recv_rtp_sink_0 \
b. ! rtpopusdepay ! opusdec ! audioconvert ! audioresample ! autoaudiosink \
udpsrc port=5002 ! b.recv_rtcp_sink_0 \
b.send_rtcp_src_0 ! udpsink host="127.0.0.1" port=5001 sync=false async=false
Receiver pipeline
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──rtprtxqueue
Factory details
Authors: – Wim Taymans
Classification: – Codec
Rank – none
Plugin – rtpmanager
Package – GStreamer Good Plug-ins
Pad Templates
Properties
fulfilled-requests
“fulfilled-requests” guint
Number of fulfilled retransmission requests
Flags : Read
Default value : 0
max-size-packets
“max-size-packets” guint
Amount of packets to queue (0 = unlimited)
Flags : Read / Write
Default value : 100
max-size-time
“max-size-time” guint
Amount of ms to queue (0 = unlimited)
Flags : Read / Write
Default value : 0
The results of the search are