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

Module describing context passed to the `Membrane.Bin` callbacks.

# `t`

```elixir
@type t() :: %{
  :children =&gt; %{required(Membrane.Child.name()) =&gt; Membrane.ChildEntry.t()},
  :clock =&gt; Membrane.Clock.t(),
  :parent_clock =&gt; Membrane.Clock.t(),
  :module =&gt; module(),
  :name =&gt; Membrane.Bin.name(),
  :pads =&gt; %{required(Membrane.Pad.ref()) =&gt; Membrane.Bin.PadData.t()},
  :playback =&gt; Membrane.Playback.t(),
  :resource_guard =&gt; Membrane.ResourceGuard.t(),
  :utility_supervisor =&gt; Membrane.UtilitySupervisor.t(),
  optional(:pad_options) =&gt; map(),
  optional(:members) =&gt; [Membrane.Child.name()],
  optional(:crash_initiator) =&gt; Membrane.Child.name() | nil,
  optional(:crash_reason) =&gt; :normal | :shutdown | {:shutdown, term()} | term(),
  optional(:start_of_stream_received?) =&gt; boolean(),
  optional(:exit_reason) =&gt; :normal | :shutdown | {:shutdown, term()} | term(),
  optional(:group_name) =&gt; Membrane.Child.group() | nil
}
```

Type describing context passed to the `Membrane.Bin` callbacks.

Field `:pad_options` is present only in `c:Membrane.Bin.handle_pad_added/3`
and `c:Membrane.Bin.handle_pad_removed/3`.

Field `:start_of_stream_received?` is present only in
`c:Membrane.Bin.handle_element_end_of_stream/4`.

Field `:crash_initiator` is only present in `c:Membrane.Bin.handle_child_terminated/3`
and `c:Membrane.Bin.handle_crash_group_down/3`.

Fields `:members` and `:crash_reason` are present only in
`c:Membrane.Bin.handle_crash_group_down/3`.

Fields `:exit_reason` and `:group_name` are present only in
`c:Membrane.Bin.handle_child_terminated/3`.

---

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