# rtpstorage

Helper element for storing packets to aid later packet recovery from packet loss using RED/FEC (Forward Error Correction).

The purpose of this element is to store a moving window of packets which downstream elements such as rtpulpfecdec can request in order to perform recovery of lost packets upon receiving custom GstRtpPacketLost events, usually from rtpjitterbuffer.

As such, when building a pipeline manually, it should have the form:

    rtpstorage ! rtpjitterbuffer ! rtpulpfecdec

where rtpulpfecdec get passed a reference to the object pointed to by the internal-storage property.

The size-time property should be configured with a value equal to the rtpjitterbuffer latency, plus some tolerance, in the order of milliseconds, for example in the example found at https://github.com/sdroege/gstreamer-rs/blob/master/examples/src/bin/rtpfecclient.rs, `size-time` is configured as 200 + 50 milliseconds (latency + tolerance).

When using rtpbin, a storage element is created automatically, and can be configured upon receiving the new-storage signal.

See also: rtpbin, rtpulpfecdec

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──rtpstorage

## Factory details

Authors: – Mikhail Fludkov <misha></misha>

Classification: – `Analyzer/RTP`

Rank – none

Plugin – rtp

Package – GStreamer Good Plug-ins

## Pad Templates

### `sink`

    application/x-rtp:

Presence – always

Direction – sink

Object type – GstPad

### `src`

    application/x-rtp:

Presence – always

Direction – src

Object type – GstPad

## Properties

### internal-storage

    “internal-storage” GObject *

Internal RtpStorage object

Flags : Read

### size-time

    “size-time” guint64

The amount of data to keep in the storage (in ns, 0-disable)

Flags : Read / Write / Construct

Default value : 0

The results of the search are