Packages
membrane_core
0.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/testing/sink.ex
defmodule Membrane.Testing.Sink do
@moduledoc """
Sink Element that will send every buffer it receives to the pid passed as argument.
"""
use Membrane.Element.Base.Sink
def_input_pad :input, demand_unit: :buffers, caps: :any
def_options target: [
type: :pid,
description: "PID of process that will receive incoming buffers."
],
autodemand: [
type: :boolean,
default: true,
description: """
If true element will automatically make demands.
If it is set to false demand has to be triggered manually by sending `:make_demand` message.
"""
]
@impl true
def handle_init(opts) do
{:ok, opts}
end
@impl true
def handle_prepared_to_playing(_context, %{autodemand: true} = state),
do: {{:ok, demand: :input}, state}
def handle_prepared_to_playing(_context, state), do: {:ok, state}
@impl true
def handle_other({:make_demand, size}, _ctx, %{autodemand: false} = state) do
{{:ok, demand: {:input, size}}, state}
end
@impl true
def handle_write(:input, buf, _ctx, state) do
send(state.target, buf)
case state do
%{autodemand: false} -> {:ok, state}
%{autodemand: true} -> {{:ok, demand: :input}, state}
end
end
end