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 `:old_stream_format` is present only in `c:Membrane.Element.WithInputPads.handle_stream_format/4`. """ @type t :: %{ :pads => %{Membrane.Pad.ref() => Membrane.Element.PadData.t()}, :clock => Membrane.Clock.t() | nil, :parent_clock => Membrane.Clock.t() | nil, :name => Membrane.Element.name(), :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() } end