Membrane.Testing.Source (Membrane Core v0.7.0) View Source
Testing Element for supplying data based on generator function or payloads passed through options.
Example usage
As mentioned earlier you can use this element in one of two ways, providing
either a generator function or an Enumerable.t
.
If you provide an Enumerable.t
with payloads, then each of those payloads will
be wrapped in a Membrane.Buffer
and sent through :output
pad.
%Source{output: [0xA1, 0xB2, 0xC3, 0xD4]}
In order to specify Membrane.Testing.Source
with generator function you need
to provide initial state and function that matches generator/0
type. This
function should take state and demand size as its arguments and return
a tuple consisting of actions that element will return during the
Membrane.Element.WithOutputPads.handle_demand/5
callback and new state.
generator_function = fn state, size ->
#generate some buffers
{actions, state + 1}
end
%Source{output: {1, generator_function}}
Element options
Passed via struct Membrane.Testing.Source.t/0
output
{initial_state :: any(), generator} | Enum.t()
Default value:
{0, &Membrane.Testing.Source.default_buf_gen/2}
Ifoutput
is an enumerable withMembrane.Payload.t()
then buffer containing those payloads will be sent through the:output
pad and followed byMembrane.Element.Action.end_of_stream_t/0
. Ifoutput
is a{initial_state, function}
tuple then the the function will be invoked each timehandle_demand
is called. It is an action generator that takes two arguments. The first argument is the state that is initially set toinitial_state
. The second one defines the size of the demand. Such function should return{actions, next_state}
whereactions
is a list of actions that will be returned fromhandle_demand/4
andnext_state
is the value that will be used for the next call.caps
struct()
Default value:
%Membrane.RemoteStream{content_format: nil, type: :bytestream}
Caps to be sent before theoutput
.
Pads
:output
Availability | :always |
Caps | :any |
Direction | :output |
Mode | :pull |
Name | :output |
Link to this section Summary
Functions
Returns pads descriptions for Membrane.Testing.Source
Returns description of options available for this module
Creates output with generator function from list of buffers.
Link to this section Types
Specs
generator() :: (state :: any(), buffers_cnt :: pos_integer() -> {[Membrane.Element.Action.t()], state :: any()})
Specs
t() :: %Membrane.Testing.Source{ caps: struct(), output: {initial_state :: any(), generator()} | Enum.t() }
Struct containing options for Membrane.Testing.Source
Link to this section Functions
Specs
default_buf_gen(integer(), integer()) :: {[Membrane.Element.Action.t()], integer()}
Specs
membrane_pads() :: [{Membrane.Pad.name_t(), Membrane.Pad.description_t()}]
Returns pads descriptions for Membrane.Testing.Source
Specs
options() :: keyword()
Returns description of options available for this module
Specs
output_from_buffers([Membrane.Buffer.t()]) :: {[Membrane.Buffer.t()], generator()}
Creates output with generator function from list of buffers.