## rtprtxqueue

rtprtxqueue

## Properties

guint | max-size-packets | Read / Write
guint | max-size-time | Read / Write
guint | fulfilled-requests | Read
guint | requests | Read

## Types and Values

struct | GstRTPRtxQueue

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstElement
                    ╰── GstRTPRtxQueue

## Description

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 GstRtpRtxSend, GstRtpRtxReceive

### Example pipelines

    1
    2
    3
    4
    5

    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

    1
    2
    3
    4
    5
    6

    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

## Synopsis

### Element Information

plugin | rtpmanager
author | Wim Taymans <wim.taymans@gmail.com>
class | Codec

### Element Pads

name | sink
direction | sink
presence | always
details | application/x-rtp

name | src
direction | source
presence | always
details | application/x-rtp

## Functions

## Types and Values

### struct GstRTPRtxQueue

    struct GstRTPRtxQueue;

The opaque GstRTPRtxQueue structure.

## Property Details

### The `“max-size-packets”` property

      “max-size-packets”         guint

Amount of packets to queue (0 = unlimited).

Owner: GstRTPRtxQueue

Flags: Read / Write

Default value: 100

### The `“max-size-time”` property

      “max-size-time”            guint

Amount of ms to queue (0 = unlimited).

Owner: GstRTPRtxQueue

Flags: Read / Write

Default value: 0

### The `“fulfilled-requests”` property

      “fulfilled-requests”       guint

Number of fulfilled retransmission requests.

Owner: GstRTPRtxQueue

Flags: Read

Default value: 0

### The `“requests”` property

      “requests”                 guint

Total number of retransmission requests.

Owner: GstRTPRtxQueue

Flags: Read

Default value: 0