Packages
membrane_hls_plugin
2.0.13
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/shifter.ex
defmodule Membrane.HLS.Shifter do
use Membrane.Filter
def_input_pad(:input,
accepted_format: any_of(Membrane.H264, Membrane.AAC, Membrane.Text, Membrane.RemoteStream)
)
def_output_pad(:output,
accepted_format: any_of(Membrane.H264, Membrane.AAC, Membrane.Text, Membrane.RemoteStream)
)
def_options(
duration: [
spec: Membrane.Time.t()
]
)
def handle_init(_ctx, opts) do
{[], %{duration: opts.duration}}
end
def handle_buffer(:input, buffer, _ctx, state) do
shifted_buffer = %{
buffer
| pts: buffer.pts + state.duration,
dts: if(buffer.dts, do: buffer.dts + state.duration),
metadata: update_metadata(buffer.metadata, state.duration)
}
{[buffer: {:output, shifted_buffer}], state}
end
def update_metadata(%{to: to} = metadata, duration), do: %{metadata | to: to + duration}
def update_metadata(metadata, _duration), do: metadata
end