Packages
membrane_rtp_plugin
0.5.1
0.31.5
0.31.4
0.31.3
0.31.2
0.31.1
0.31.0
0.30.0
0.29.1
0.29.0
0.28.0
0.27.1
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.0
0.15.0-rc.1
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1-alpha.3
0.7.1-alpha.2
0.7.0-alpha.2
0.7.0-alpha.1
0.7.0-alpha
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0-alpha
Membrane Multimedia Framework plugin for RTP
Current section
Files
Jump to
Current section
Files
lib/membrane/rtp/stream_receive_bin.ex
defmodule Membrane.RTP.StreamReceiveBin do
@moduledoc """
This bin gets a parsed RTP stream on input and outputs raw media stream.
Its responsibility is to depayload the RTP stream and compensate the
jitter.
"""
use Membrane.Bin
alias Membrane.ParentSpec
def_options clock_rate: [type: :integer, spec: Membrane.RTP.clock_rate_t()],
depayloader: [type: :module],
ssrc: [spec: Membrane.RTP.ssrc_t()]
def_input_pad :input, demand_unit: :buffers, caps: :any
def_output_pad :output, caps: :any, demand_unit: :buffers
@impl true
def handle_init(opts) do
children = [
jitter_buffer: %Membrane.RTP.JitterBuffer{clock_rate: opts.clock_rate},
depayloader: opts.depayloader
]
links = [
link_bin_input()
|> to(:jitter_buffer)
|> to(:depayloader)
|> to_bin_output()
]
spec = %ParentSpec{
children: children,
links: links
}
{{:ok, spec: spec}, %{}}
end
@impl true
def handle_other(:send_stats, _ctx, state) do
{{:ok, forward: {:jitter_buffer, :send_stats}}, state}
end
@impl true
def handle_notification({:jitter_buffer_stats, stats}, :jitter_buffer, _ctx, state) do
{{:ok, notify: {:jitter_buffer_stats, stats}}, state}
end
end