defmodule Membrane.RTCP.FeedbackPacket.FIR do @moduledoc """ Encodes and decodes [Full Intra Request](https://datatracker.ietf.org/doc/html/rfc5104#section-4.3.1) packets. """ @behaviour Membrane.RTCP.FeedbackPacket @enforce_keys [:target_ssrc, :seq_num] defstruct @enforce_keys @impl true def encode(%__MODULE__{} = packet) do <> end @impl true def encode(packets) when is_list(packets) do Enum.map_join(packets, &encode/1) end @impl true def decode(binary) do do_decode(binary, []) end defp do_decode(<<>>, acc) do {:ok, Enum.reverse(acc)} end defp do_decode(<>, acc) do do_decode(rest, [%__MODULE__{target_ssrc: target_ssrc, seq_num: seq_num} | acc]) end defp do_decode(_binary, _acc) do {:error, :malformed_packet} end end