Packages
membrane_rtp_plugin
0.7.0-alpha.2
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