Current section
Files
Jump to
Current section
Files
lib/membrane_rtp_opus/depayloader.ex
defmodule Membrane.RTP.Opus.Depayloader do
@moduledoc """
Parses RTP payloads into parseable Opus packets.
Based on [RFC 7587](https://tools.ietf.org/html/rfc7587).
"""
use Membrane.Filter
alias Membrane.Caps.RTP
def_input_pad :input,
caps: {RTP, payload_type: :dynamic},
demand_unit: :buffers
def_output_pad :output,
caps: :any
@impl true
def handle_caps(:input, _caps, _context, state) do
{:ok, state}
end
@impl true
def handle_process(:input, buffer, _ctx, state) do
{{:ok, buffer: {:output, buffer}}, state}
end
@impl true
def handle_demand(:output, size, :buffers, _ctx, state) do
{{:ok, demand: {:input, size}}, state}
end
def handle_demand(:output, _size, :bytes, _ctx, state) do
{{:error, :not_supported_unit}, state}
end
end