defmodule Membrane.Element.CallbackContext do @moduledoc """ Describes context passed to the Membrane Element callbacks. """ @typedoc """ Type describing context passed to the Membrane Element callbacks. Field `:incoming_demand` is present only in `c:Membrane.Element.WithOutputPads.handle_demand/5`. Field `:pad_options` is present only in `c:Membrane.Element.Base.handle_pad_added/3` and `c:Membrane.Element.Base.handle_pad_removed/3`. Field `:start_of_stream_received?` is present only in `c:Membrane.Element.WithInputPads.handle_end_of_stream/3`. Field `:old_stream_format` is present only in `c:Membrane.Element.WithInputPads.handle_stream_format/4`. """ @type t :: %{ :clock => Membrane.Clock.t() | nil, :module => module(), :name => Membrane.Element.name(), :pads => %{Membrane.Pad.ref() => Membrane.Element.PadData.t()}, :parent_clock => Membrane.Clock.t() | nil, :playback => Membrane.Playback.t(), :resource_guard => Membrane.ResourceGuard.t(), :utility_supervisor => Membrane.UtilitySupervisor.t(), optional(:incoming_demand) => non_neg_integer(), optional(:pad_options) => map(), optional(:old_stream_format) => Membrane.StreamFormat.t(), optional(:start_of_stream_received?) => boolean() } end