# ristsink

This element implements RIST TR-06-1 Simple Profile transmitter. It currently supports any registered RTP static payload types such as MPEG TS. The stream passed to this element must be already RTP payloaded. Even though RTP SSRC collision are rare in unidirectional streaming, this element expects the upstream elements to obey to collision events and change the SSRC in use. Collisions will occur when transmitting and receiving over multicast on the same host, and will be properly ignored.

It also implements part of the RIST TR-06-2 Main Profile transmitter. The tunneling, multiplexing and encryption parts of the specification are not included. This element will include the RIST header extension if either of the "sequence-number-extension" or "drop-null-ts-packets" properties are set.

## Example gst-launch line

     gst-launch-1.0 udpsrc ! tsparse set-timestamps=1 smoothing-latency=40000 ! \
     rtpmp2tpay ! ristsink address=10.0.0.1 port=5004

Additionally, this element supports bonding, which consist of using multiple links in order to transmit the streams. The address of each link is configured through the "bonding-addresses" property. When set, this will replace the value that might have been set on the "address" and "port" properties. Each link will be mapped to its own RTP session. RTX request are only replied to on the link the NACK was received from.

There are currently two bonding methods in place: "broadcast" and "round-robin". In "broadcast" mode, all the packets are duplicated over all sessions. While in "round-robin" mode, packets are evenly distributed over the links. One can also implement its own dispatcher element and configure it using the "dispatcher" property. As a reference, "broadcast" mode is implemented with the "tee" element, while "round-robin" mode is implemented with the "round-robin" element.

## Example gst-launch line for bonding

     gst-launch-1.0 udpsrc ! tsparse set-timestamps=1 smoothing-latency=40000 ! \
      rtpmp2tpay ! ristsink bonding-addresses="10.0.0.1:5004,11.0.0.1:5006"

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBin
                        ╰──ristsink

## Implemented interfaces

    GstChildProxy

## Factory details

Authors: – Nicolas Dufresne

Classification: – `Source/Network`

Rank – primary

Plugin – rist

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    application/x-rtp:

Presence – always

Direction – sink

Object type – GstPad

## Properties

### address

    “address” gchararray

Address to send packets to (can be IPv4 or IPv6).

Flags : Read / Write

Default value : localhost

### bonding-addresses

    “bonding-addresses” gchararray

Comma (,) separated list of

### bonding-method

    “bonding-method” Rist-bonding-method-type *

Defines the bonding method to use.

Flags : Read / Write / Construct

Default value : broadcast (0)

### cname

    “cname” gchararray

Set the CNAME in the SDES block of the sender report.

Flags : Read / Write

Default value : NULL

### dispatcher

    “dispatcher” GstElement *

An element that takes care of multi-plexing bonded links. When set "bonding-method" is ignored.

Flags : Read / Write

### drop-null-ts-packets

    “drop-null-ts-packets” gboolean

Drop null MPEG-TS packet and replace them with a custom header extension.

Flags : Read / Write / Construct

Default value : false

### max-rtcp-bandwidth

    “max-rtcp-bandwidth” gdouble

The maximum bandwidth used for RTCP as a fraction of RTP bandwdith

Flags : Read / Write / Construct

Default value : 0.05

### min-rtcp-interval

    “min-rtcp-interval” guint

The minimum interval (in ms) between two regular successive RTCP packets.

Flags : Read / Write / Construct

Default value : 100

### multicast-iface

    “multicast-iface” gchararray

The multicast interface to use to send packets.

Flags : Read / Write

Default value : NULL

### multicast-loopback

    “multicast-loopback” gboolean

When enabled, the packet will be received locally.

Flags : Read / Write / Construct

Default value : false

### multicast-ttl

    “multicast-ttl” gint

The multicast time-to-live parameter.

Flags : Read / Write / Construct

Default value : 1

### port

    “port” guint

The port RTP packets will be sent, the RTCP port is this value + 1. This port must be an even number.

Flags : Read / Write / Construct

Default value : 5004

### sender-buffer

    “sender-buffer” guint

Size of the retransmission queue (in ms)

Flags : Read / Write / Construct

Default value : 1200

### sequence-number-extension

    “sequence-number-extension” gboolean

Add sequence number extension to packets.

Flags : Read / Write / Construct

Default value : false

### stats

    “stats” GstStructure *

Statistic in a GstStructure named 'rist/x-sender-stats'

Flags : Read

Default value :

    rist/x-sender-stats, sent-original-packets=(guint64)0, sent-retransmitted-packets=(guint64)0, session-stats=(GValueArray)< "rist/x-sender-session-stats\,\ session-id\=\(int\)0\,\ sent-original-packets\=\(guint64\)0\,\ sent-retransmitted-packets\=\(guint64\)0\,\ round-trip-time\=\(guint64\)0\;" >;

### stats-update-interval

    “stats-update-interval” guint

The interval between 'stats' update notification (in ms) (0 disabled)

Flags : Read / Write / Construct

Default value : 0

## Named constants

### Rist-bonding-method-type

#### Members

`broadcast` (0) – GST_RIST_BONDING_METHOD_BROADCAST
`round-robin` (1) – GST_RIST_BONDING_METHOD_ROUND_ROBIN

The results of the search are