View Source Membrane.Testing.Source (Membrane Core v1.1.2)
Testing Element for supplying data based on generator function or payloads passed through options.
example-usage
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
Element options
Passed via struct Membrane.Testing.Source.t/0
outputEnum.t() | {initial_state :: any(), generator}Default value:
{0, &Membrane.Testing.Source.default_buf_gen/2}
Ifoutputis an Enumerable, then each element of it will be sent through the:outputpad, followed byMembrane.Element.Action.end_of_stream/0. Each element of the Enumerable must be eitherMembrane.Buffer.t/0orMembrane.Payload.t/0. In the latter case, it will be automatically wrapped intoMembrane.Buffer.t/0before sending.Otherwise, if
outputis a{initial_state, function}tuple then the the function will be invoked each timehandle_demandis 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}whereactionsis a list of actions that will be returned fromhandle_demand/4andnext_stateis the value that will be used for the next call.stream_formatstruct()Default value:
%Membrane.RemoteStream{content_format: nil, type: :bytestream}
StreamFormat to be sent before theoutput.
pads
Pads
output
:output
Accepted formats:
_any| Direction: | :output |
| Availability: | :always |
| Flow control: | :manual |
| Demand unit: | nil |
Link to this section Summary
Functions
Returns description of options available for this module
Creates output with generator function from list of buffers.
Link to this section Types
@type generator() :: (state :: any(), buffers_cnt :: pos_integer() -> {[Membrane.Element.Action.t()], state :: any()})
@type t() :: %Membrane.Testing.Source{ output: Enum.t() | {initial_state :: any(), generator()}, stream_format: struct() }
Struct containing options for Membrane.Testing.Source
Link to this section Functions
@spec default_buf_gen(integer(), integer()) :: {[Membrane.Element.Action.t()], integer()}
@spec options() :: keyword()
Returns description of options available for this module
@spec output_from_buffers([Membrane.Buffer.t()]) :: {[Membrane.Buffer.t()], generator()}
Creates output with generator function from list of buffers.