# `Membrane.Playback`
[🔗](https://github.com/membraneframework/membrane-core/blob/v1.3.0/lib/membrane/playback.ex#L1)

Playback defines whether media is processed within a pipeline (`:playing`) or not (`:stopped`).

Component playback will not enter `:playing` state until its parent playback is playing and
all components from the `spec`, that started this component have ended their setups and linked
their pads.

By default, component setup ends with the end of `handle_setup/2` callback.
If `{:setup, :incomplete}` is returned there, setup lasts until `{:setup, :complete}`
is returned from antoher callback.

Untils the setup lasts, the component won't enter `:playing` playback.

When the component enters `:playing` playback, `handle_playing/2` callback is called.

# `t`

```elixir
@type t() :: :stopped | :playing
```

Playback defines whether media is processed within a pipeline (`:playing`) or not (`:stopped`).

Component playback will not enter `:playing` state until its parent playback is playing and
all components from the `spec`, that started this component have ended their setups and linked
their pads.

By default, component setup ends with the end of `handle_setup/2` callback.
If `{:setup, :incomplete}` is returned there, setup lasts until `{:setup, :complete}`
is returned from antoher callback.

Untils the setup lasts, the component won't enter `:playing` playback.

When the component enters `:playing` playback, `handle_playing/2` callback is called.

---

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