Packages
membrane_core
0.12.9
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), do: :ok
def_options 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.
"""
]
@impl true
def handle_init(_ctx, opts) do
{[], Map.from_struct(opts)}
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
end