Packages
membrane_core
1.3.2
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
retired
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc1
1.1.2
1.1.1
1.1.0
1.1.0-rc1
1.1.0-rc0
1.0.1
1.0.0
1.0.0-rc1
1.0.0-rc0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
retired
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Membrane Multimedia Framework (Core)
Current section
Files
Jump to
Current section
Files
lib/membrane/debug/sink.ex
defmodule Membrane.Debug.Sink do
@moduledoc """
Membrane Sink, that can be used to create a child that will be used to debug data flowing thouth pipeline.
Usage example:
```elixir
child(:source, CustomSource)
|> child(:sink, %Membrane.Debug.Sink{
handle_buffer: &IO.inspect(&1, label: "buffer"),
handle_event: &IO.inspect(&1, label: "event")
})
```
"""
use Membrane.Sink
alias Membrane.Buffer
alias Membrane.Event
alias Membrane.StreamFormat
def_input_pad :input, accepted_format: _any, flow_control: :auto
@spec noop(any()) :: :ok
def noop(_arg \\ nil), do: :ok
def_options handle_start_of_stream: [
spec: (-> any()),
default: &__MODULE__.noop/0,
description: """
Function with arity 0, that will be called when the start of stream is received on the input pad.
Result of this function is ignored.
"""
],
handle_buffer: [
spec: (Buffer.t() -> any()),
default: &__MODULE__.noop/1,
description: """
Function with arity 1, that will be called with all buffers handled by this sink.
Result of this function is ignored.
"""
],
handle_event: [
spec: (Event.t() -> any()),
default: &__MODULE__.noop/1,
description: """
Function with arity 1, that will be called with all events handled by this sink.
Result of this function is ignored.
"""
],
handle_stream_format: [
spec: (StreamFormat.t() -> any()),
default: &__MODULE__.noop/1,
description: """
Function with arity 1, that will be called with all stream formats handled by this sink.
Result of this function is ignored.
"""
],
handle_end_of_stream: [
spec: (-> any()),
default: &__MODULE__.noop/0,
description: """
Function with arity 0, that will be called when the end of stream is received on the input pad.
Result of this function is ignored.
"""
]
@impl true
def handle_init(_ctx, opts) do
{[], Map.from_struct(opts)}
end
@impl true
def handle_start_of_stream(:input, _ctx, state) do
_ignored = state.handle_start_of_stream.()
{[], state}
end
@impl true
def handle_buffer(:input, buffer, _ctx, state) do
_ignored = state.handle_buffer.(buffer)
{[], state}
end
@impl true
def handle_event(:input, event, _ctx, state) do
_ignored = state.handle_event.(event)
{[], state}
end
@impl true
def handle_stream_format(:input, stream_format, _ctx, state) do
_ignored = state.handle_stream_format.(stream_format)
{[], state}
end
@impl true
def handle_end_of_stream(:input, _ctx, state) do
_ignored = state.handle_end_of_stream.()
{[], state}
end
end