Packages
membrane_rtp_plugin
0.8.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/payloader_bin.ex
defmodule Membrane.RTP.PayloaderBin do
@moduledoc """
Module responsible for payloading a stream to RTP format and preparing RTP headers.
"""
use Membrane.Bin
alias Membrane.ParentSpec
def_input_pad :input, demand_unit: :buffers, caps: :any
def_output_pad :output, caps: :any, demand_unit: :buffers
def_options payloader: [
spec: module(),
description: "Payloader module used for payloading a stream to RTP format"
],
ssrc: [spec: RTP.ssrc_t()],
payload_type: [spec: RTP.payload_type_t()],
clock_rate: [spec: RTP.clock_rate_t()],
alignment: [
default: 1,
spec: pos_integer(),
description: """
Number of bytes that each packet should be aligned to.
Alignment is achieved by adding RTP padding.
"""
]
@impl true
def handle_init(opts) do
links = [
link_bin_input()
|> to(:payloader, opts.payloader)
|> to(:serializer, %Membrane.RTP.Serializer{
ssrc: opts.ssrc,
payload_type: opts.payload_type,
clock_rate: opts.clock_rate,
alignment: opts.alignment
})
|> to_bin_output()
]
{{:ok, spec: %ParentSpec{links: links}}, %{}}
end
end