lib/membrane_webrtc_plugin/track/encoding.ex

defmodule Membrane.WebRTC.Track.Encoding do
  @moduledoc """
  A struct holding data passed via SDP about a possible encoding of a track
  """

  alias ExSDP.Attribute.{FMTP, RTCPFeedback}

  @type t :: %__MODULE__{
          payload_type: non_neg_integer(),
          name: String.t(),
          clock_rate: pos_integer(),
          rtx: %{payload_type: non_neg_integer(), rtx_time: non_neg_integer() | nil} | nil,
          red_payload_type: non_neg_integer() | nil,
          audio_channels: pos_integer() | nil,
          rtcp_feedback: MapSet.t(RTCPFeedback.t()),
          format_params: FMTP.t() | nil
        }

  @enforce_keys [:payload_type, :name, :clock_rate]
  defstruct @enforce_keys ++
              [
                rtx: nil,
                red_payload_type: nil,
                audio_channels: nil,
                rtcp_feedback: MapSet.new(),
                format_params: nil
              ]
end