# `Membrane.Element.CallbackContext`
[🔗](https://github.com/membraneframework/membrane-core/blob/v1.2.7/lib/membrane/element/callback_context.ex#L1)

Describes context passed to the Membrane Element callbacks.

# `t`

```elixir
@type t() :: %{
  :clock =&gt; Membrane.Clock.t() | nil,
  :module =&gt; module(),
  :name =&gt; Membrane.Element.name(),
  :pads =&gt; %{required(Membrane.Pad.ref()) =&gt; Membrane.Element.PadData.t()},
  :parent_clock =&gt; Membrane.Clock.t() | nil,
  :playback =&gt; Membrane.Playback.t(),
  :resource_guard =&gt; Membrane.ResourceGuard.t(),
  :utility_supervisor =&gt; Membrane.UtilitySupervisor.t(),
  optional(:incoming_demand) =&gt; non_neg_integer(),
  optional(:pad_options) =&gt; map(),
  optional(:old_stream_format) =&gt; Membrane.StreamFormat.t(),
  optional(:start_of_stream_received?) =&gt; boolean()
}
```

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`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
