View Source Membrane.Sink behaviour (Membrane Core v0.11.0)

Module defining behaviour for sinks - elements consuming data.

Behaviours for sinks are specified, besides this place, in modules Membrane.Element.Base, and Membrane.Element.WithInputPads.

Sink elements can define only input pads. Job of a usual sink is to receive some data on such pad and consume it (write to a soundcard, send through TCP etc.). If the pad works in pull mode, which is the most common case, then element is also responsible for requesting demands when it is able and willing to consume data (for more details, see Membrane.Element.Action.demand_t/0). Sinks, like all elements, can of course have multiple pads if needed to provide more complex solutions.

list-of-available-callbacks

List of available callbacks

Below there is a list of all the callbacks available in a module, that implements Membrane.Sink behaviour. We have put it for your convenience, as some of these callbacks aren't directly defined in that module and their specification is available in different modules.

The callbacks available in Membrane.Sink behaviour:

Membrane.Sink

Membrane.Element.Base

Membrane.Element.WithInputPads

Link to this section Summary

Callbacks

Callback that is called when buffer should be written by the sink. In contrast to handle_write_list/4, it is passed only a single buffer.

Callback that is called when buffer should be written by the sink.

Functions

Brings all the stuff necessary to implement a sink element.

Link to this section Callbacks

Link to this callback

handle_write(pad, buffer, context, state)

View Source (optional)

Callback that is called when buffer should be written by the sink. In contrast to handle_write_list/4, it is passed only a single buffer.

Called by default implementation of handle_write_list/4.

Link to this callback

handle_write_list(pad, buffers, context, state)

View Source
@callback handle_write_list(
  pad :: Membrane.Pad.ref_t(),
  buffers :: [Membrane.Buffer.t()],
  context :: Membrane.Element.CallbackContext.Write.t(),
  state :: Membrane.Element.state_t()
) :: Membrane.Element.Base.callback_return_t()

Callback that is called when buffer should be written by the sink.

By default calls handle_write/4 for each buffer.

For pads in pull mode it is called when buffers have been demanded (by returning :demand action from any callback).

For pads in push mode it is invoked when buffers arrive.

Link to this section Functions

Link to this macro

__using__(options)

View Source (macro)

Brings all the stuff necessary to implement a sink element.

Options:

  • :bring_pad? - if true (default) requires and aliases Membrane.Pad