Packages
membrane_rtp_plugin
0.7.0-alpha
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_send_bin.ex
defmodule Membrane.RTP.StreamSendBin do
@moduledoc """
Bin payloading and serializing media stream to RTP.
"""
use Membrane.Bin
alias Membrane.RTP
def_input_pad :input, demand_unit: :buffers, caps: :any
def_output_pad :output, caps: :any, demand_unit: :buffers
def_options payloader: [spec: module],
payload_type: [spec: RTP.payload_type_t()],
ssrc: [spec: RTP.ssrc_t()],
clock_rate: [spec: RTP.clock_rate_t()]
@impl true
def handle_init(opts) do
children = [
payloader: opts.payloader,
serializer: %RTP.Serializer{
ssrc: opts.ssrc,
payload_type: opts.payload_type,
clock_rate: opts.clock_rate
}
]
links = [link_bin_input() |> to(:payloader) |> to(:serializer) |> 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: {:serializer, :send_stats}}, state}
end
@impl true
def handle_notification({:serializer_stats, stats}, :serializer, _ctx, state) do
{{:ok, notify: {:serializer_stats, stats}}, state}
end
end