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

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

Availability :on_request
Caps Membrane.RTCP,
Membrane.RTP
Demand mode :auto
Demand unit :buffers
Direction :input
Mode :pull
Name :input

output

:output

Availability :on_request
Caps Membrane.RTP
Demand mode :auto
Demand unit :buffers
Direction :output
Mode :pull
Name :output

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

Functions

Returns pads descriptions for Membrane.RTP.SSRCRouter

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

Link to this section Functions

@spec membrane_pads() :: [{Membrane.Pad.name_t(), Membrane.Pad.description_t()}]

Returns pads descriptions for Membrane.RTP.SSRCRouter