You're seeing just the function create_offer, go back to Membrane.WebRTC.SDP module for more information.


  ice_ufrag: String.t(),
  ice_pwd: String.t(),
  fingerprint: fingerprint(),
  audio_codecs: [ExSDP.Attribute.t()],
  video_codecs: [ExSDP.Attribute.t()],
  inbound_tracks: [Membrane.WebRTC.Track.t()],
  outbound_tracks: [Membrane.WebRTC.Track.t()],
  use_default_codecs: [:audio | :video]
) :: ExSDP.t()

Creates Unified Plan SDP offer.

The mandatory options are:

  • ice_ufrag - ICE username fragment
  • ice_pwd - ICE password
  • fingerprint - DTLS fingerprint
  • inbound_tracks - list of inbound tracks
  • outbound_tracks - list of outbound tracks

Additionally accepts audio_codecs and video_codecs options, that should contain lists of SDP attributes for desired codecs, for example:

video_codecs: [
  %RTPMapping{payload_type: 98, encoding: "VP9", clock_rate: 90_000}

By default both lists are empty and default audio and video codecs get appended including OPUS for audio, H264 and VP8 for video.

To disable all or enable just one specific codec type use use_default_codecs option. To disable default codecs pass an empty list. To enable only either audio or video, pass a list with a single atom [:audio] or [:video].