Membrane.RTC.Engine.Endpoint.WebRTC (Membrane RTC Engine v0.1.0) View Source

An Endpoint responsible for communicatiing with WebRTC peer.

It is responsible for sending and receiving media tracks from other WebRTC peer (e.g. web browser).

Bin options

Passed via struct Membrane.RTC.Engine.Endpoint.WebRTC.t/0

  • ice_name

    String.t()

    Required
    Ice name is used in creating credentials for ice connnection

  • stun_servers

    [ExLibnice.stun_server()]

    Default value: []
    List of stun servers

  • turn_servers

    [ExLibnice.relay_info()]

    Default value: []
    List of turn servers

  • port_range

    Range.t()

    Default value: 0..0
    Port range to be used by Membrane.ICE.Bin

  • handshake_opts

    Keyword.t()

    Default value: []
    Keyword list with options for handshake module. For more information please refer to Membrane.ICE.Bin

  • filter_codecs

    ({RTPMapping.t(), FMTP.t() | nil} -> boolean())

    Default value: &Membrane.WebRTC.SDP.filter_mappings/1
    Defines function which will filter SDP m-line by codecs

  • log_metadata

    :list

    Default value: []
    Logger metadata used for endpoint bin and all its descendants

  • webrtc_extensions

    [Membrane.WebRTC.Extension.t()]

    Default value: []
    List of WebRTC extensions to use. At this moment only VAD (RFC 6464) is supported. Enabling it will cause RTC Engine sending {:vad_notification, val, endpoint_id} messages.

  • extensions

    %{encoding_name :: atom() | :any => [Membrane.RTP.SessionBin.extension_t()]}

    Default value: %{}
    A map pointing from encoding names to lists of extensions that should be used for given encodings. Encoding ":any" indicates that extensions should be applied regardless of encoding. A sample usage would be to add silence discarder to OPUS tracks when VAD extension is enabled. It can greatly reduce CPU usage in rooms when there are a lot of people but only a few of them are actively speaking.

  • integrated_turn_options

    Membrane.ICE.Bin.integrated_turn_options_t()

    Default value: [use_integrated_turn: false]

  • owner

    pid()

    Required
    Pid of parent all notifications will be send to. To see possible notifications please refer to module docs.

  • trace_context

    :list

    Default value: []
    Trace context for otel propagation

Pads

:input

Availability:on_request
Caps:any
Demand unit:buffers
Direction:input
Mode:pull
Name:input

:output

Availability:on_request
Caps:any
Demand unit:buffers
Direction:output
Mode:pull
Name:output

Link to this section Summary

Functions

Returns description of options available for this module

Link to this section Types

Specs

stun_server_t() :: ExLibnice.stun_server()

Specs

t() :: %Membrane.RTC.Engine.Endpoint.WebRTC{
  extensions: %{
    required(encoding_name :: atom() | :any) => [
      Membrane.RTP.SessionBin.extension_t()
    ]
  },
  filter_codecs:
    ({ExSDP.Attribute.RTPMapping.t(), ExSDP.Attribute.FMTP.t() | nil} ->
       boolean()),
  handshake_opts: Keyword.t(),
  ice_name: String.t(),
  integrated_turn_options: Membrane.ICE.Bin.integrated_turn_options_t(),
  log_metadata: :list,
  owner: pid(),
  port_range: Range.t(),
  stun_servers: [ExLibnice.stun_server()],
  trace_context: :list,
  turn_servers: [ExLibnice.relay_info()],
  webrtc_extensions: [Membrane.WebRTC.Extension.t()]
}

Struct containing options for Membrane.RTC.Engine.Endpoint.WebRTC

Specs

turn_server_t() :: ExLibnice.relay_info()

Link to this section Functions

Specs

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

Returns pads descriptions for Membrane.RTC.Engine.Endpoint.WebRTC

Specs

options() :: keyword()

Returns description of options available for this module