lib/membrane_webrtc_plugin/extension/repaired_rid.ex

defmodule Membrane.WebRTC.Extension.RepairedRid do
  @moduledoc """
  Module implementing `Membrane.WebRTC.Extension` behaviour for Repaired RTP Stream Identifier RTP Header extension.

  This extension is described in RFC 8852.
  """
  @behaviour Membrane.WebRTC.Extension

  alias ExSDP.Attribute.Extmap
  alias ExSDP.Media
  alias Membrane.WebRTC.Extension

  @name :repaired_rid
  @uri "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"

  @impl true
  def new(opts \\ Keyword.new()),
    do: %Extension{module: __MODULE__, rtp_opts: opts, uri: @uri, name: @name}

  @impl true
  def compatible?(_encoding), do: true

  @impl true
  def get_rtp_module(_rid_id, _opts, _track_type), do: :no_rtp_module

  @impl true
  def add_to_media(media, id, _direction, _payload_types),
    do: Media.add_attribute(media, %Extmap{id: id, uri: @uri})

  @impl true
  def uri, do: @uri
end