Packages
membrane_hls_plugin
2.0.2
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.16
2.0.15
2.0.14
2.0.13
2.0.12
2.0.11
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
Adaptive live streaming (HLS) plugin for the Membrane Framework.
Current section
Files
Jump to
Current section
Files
lib/membrane/hls/filler/text_filler.ex
defmodule Membrane.HLS.TextFiller do
use Membrane.Filter
def_input_pad(:input,
accepted_format: Membrane.Text
)
def_output_pad(:output,
accepted_format: Membrane.Text
)
def_options(
from: [
spec: Membrane.Time.t()
]
)
def handle_init(_ctx, opts) do
{[], %{from: opts.from, filled: false}}
end
def handle_buffer(:input, buffer, _ctx, state) do
if state.filled do
{[forward: buffer], state}
else
duration = buffer.pts - state.from - Membrane.Time.millisecond()
if duration > 0 do
Membrane.Logger.warning(
"Generated empty text buffer with a duration of #{buffer.pts - state.from - Membrane.Time.millisecond()}"
)
silence_buffer = %Membrane.Buffer{
payload: "",
pts: state.from,
metadata: %{to: buffer.pts - Membrane.Time.millisecond()}
}
{[buffer: {:output, [silence_buffer, buffer]}], %{state | filled: true}}
else
{[forward: buffer], state}
end
end
end
end