View Source Membrane.RTP.SSRCRouter (Membrane RTP plugin v0.21.0)

A filter separating RTP packets from different SSRCs into different outpts.

When receiving a new SSRC, it creates a new pad and notifies its parent (new_stream_notification_t/0) that should link the new output pad.

When an RTCP event arrives from some output pad the router tries to forward it to a proper input pad. The input pad gets chosen by the source input pad from which packets with given ssrc were previously sent, the source pad's id gets extracted and the router tries to send the event to an input pad of id {:input, id}, if no such pad exists the router simply drops the event.

pads

Pads

input

:input

Accepted formats:

RTCP
RTP
Direction::input
Availability::on_request
Mode::pull
Demand mode::auto
Demand unit::buffers

output

:output

Accepted formats:

RTP
Direction::output
Availability::on_request
Mode::pull
Demand mode::auto

Pad options:

  • telemetry_label

    Membrane.TelemetryMetrics.label()

    Default value: []

  • encoding

    atom() | nil

    Default value: nil

Link to this section Summary

Types

Notification sent when an RTP packet with new SSRC arrives and new output pad should be linked

Options for pad :output

Link to this section Types

Link to this type

new_stream_notification_t()

View Source
@type new_stream_notification_t() ::
  {:new_rtp_stream, Membrane.RTP.ssrc_t(), Membrane.RTP.payload_type_t(),
   [Membrane.RTP.Header.Extension.t()]}

Notification sent when an RTP packet with new SSRC arrives and new output pad should be linked

@type output_pad_opts_t() :: [
  telemetry_label: Membrane.TelemetryMetrics.label(),
  encoding: atom() | nil
]

Options for pad :output