View Source Membrane.VideoCompositor (Membrane Video Compositor plugin v0.7.0)

A bin responsible for doing framerate conversion on all input videos and piping them into the compositor element.

Bin options

Passed via struct Membrane.VideoCompositor.t/0

  • output_stream_format

    Membrane.RawVideo.t()

    Required
    Stream format for the output video of the compositor

  • handler

    Handler.t()

    Required
    Module implementing callbacks reacting to VC events. Specifies how Membrane.VideoCompositor.Scene should look like. Describes what VC should compose.

  • queuing_strategy

    QueueingStrategy.t()

    Default value: Membrane.VideoCompositor.QueueingStrategy.Offline
    Specifies used frames queueing strategy

  • metadata

    init_metadata()

    Default value: nil
    User-specified init metadata passed to handler callbacks. Passing init metadata into Membrane.VideoCompositor.Handler.handle_init/1 callback allows the user to alternate custom-implemented init callback logic.

Pads

:input

Accepted formats:

%RawVideo{pixel_format: :I420}
Direction::input
Availability::on_request

Pad options:

  • timestamp_offset

    Membrane.Time.non_neg()

    Default value: 0
    Input stream PTS offset in nanoseconds. Must be non-negative.

  • metadata

    input_pad_metadata()

    Default value: nil
    User-specified input stream metadata passed to handler callbacks. Passing pad metadata into Membrane.VideoCompositor.Handler.handle_inputs_change/3 callback, allows the user to alternate custom-implemented callbacks logic, e.g. prioritizing input stream in the Membrane.VideoCompositor.Scene structs returned from callback.

:output

Accepted formats:

%RawVideo{pixel_format: :I420}
Direction::output
Availability::always

Summary

Types

User-specified init metadata passed to handler callbacks. Passing init metadata into Membrane.VideoCompositor.Handler.handle_init/1 callback allows the user to alternate custom-implemented init callback logic.

User-specified input stream metadata passed to handler callbacks. Passing pad metadata into Membrane.VideoCompositor.Handler.handle_inputs_change/3 callback, allows the user to alternate custom-implemented callbacks logic, e.g. prioritizing input stream in the Membrane.VideoCompositor.Scene structs returned from callback.

Options for pad :input

t()

Struct containing options for Membrane.VideoCompositor

Functions

Returns description of options available for this module

Types

@type init_metadata() :: any()

User-specified init metadata passed to handler callbacks. Passing init metadata into Membrane.VideoCompositor.Handler.handle_init/1 callback allows the user to alternate custom-implemented init callback logic.

@type init_options() :: %Membrane.VideoCompositor{
  handler: Membrane.VideoCompositor.Handler.t(),
  metadata: init_metadata(),
  output_stream_format: Membrane.RawVideo.t(),
  queuing_strategy: Membrane.VideoCompositor.QueueingStrategy.t()
}
@type input_pad_metadata() :: any()

User-specified input stream metadata passed to handler callbacks. Passing pad metadata into Membrane.VideoCompositor.Handler.handle_inputs_change/3 callback, allows the user to alternate custom-implemented callbacks logic, e.g. prioritizing input stream in the Membrane.VideoCompositor.Scene structs returned from callback.

@type input_pad_options() :: %{
  metadata: input_pad_metadata(),
  timestamp_offset: Membrane.Time.non_neg()
}
@type input_pad_opts() :: [
  timestamp_offset: Membrane.Time.non_neg(),
  metadata: input_pad_metadata()
]

Options for pad :input

@type t() :: %Membrane.VideoCompositor{
  handler: Membrane.VideoCompositor.Handler.t(),
  metadata: init_metadata(),
  output_stream_format: Membrane.RawVideo.t(),
  queuing_strategy: Membrane.VideoCompositor.QueueingStrategy.t()
}

Struct containing options for Membrane.VideoCompositor

Functions

@spec options() :: keyword()

Returns description of options available for this module