Packages
membrane_core
0.8.1
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
retired
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc1
1.1.2
1.1.1
1.1.0
1.1.0-rc1
1.1.0-rc0
1.0.1
1.0.0
1.0.0-rc1
1.0.0-rc0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
retired
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Membrane Multimedia Framework (Core)
Current section
Files
Jump to
Current section
Files
lib/membrane/core/bin/state.ex
defmodule Membrane.Core.Bin.State do
@moduledoc false
# Structure representing state of a bin. It is a part of the private API.
# It does not represent state of bins you construct, it's a state used
# internally in Membrane.
use Bunch
use Bunch.Access
alias Membrane.Core.{Playback, Timer}
alias Membrane.Core.Bin.LinkingBuffer
alias Membrane.Core.Child.PadModel
alias Membrane.Core.Parent.Link
alias Membrane.Core.Parent.ChildrenModel
alias Membrane.{Child, Clock, Sync}
alias Membrane.Core.Parent.CrashGroup
@type t :: %__MODULE__{
internal_state: Membrane.Bin.state_t() | nil,
playback: Playback.t(),
module: module,
children: ChildrenModel.children_t(),
name: Membrane.Bin.name_t() | nil,
pads: PadModel.pads_t() | nil,
parent_pid: pid,
linking_buffer: LinkingBuffer.t(),
links: [Link.t()],
crash_groups: %{CrashGroup.name_t() => CrashGroup.t()},
synchronization: %{
timers: %{Timer.id_t() => Timer.t()},
parent_clock: Clock.t(),
latency: non_neg_integer(),
stream_sync: Sync.t(),
clock: Clock.t() | nil,
clock_proxy: Clock.t(),
clock_provider: %{
clock: Clock.t() | nil,
provider: Child.name_t() | nil,
choice: :auto | :manual
}
},
children_log_metadata: Keyword.t()
}
@enforce_keys [:module, :synchronization]
defstruct @enforce_keys ++
[
internal_state: nil,
playback: %Playback{},
children: %{},
name: nil,
pads: nil,
parent_pid: nil,
crash_groups: %{},
linking_buffer: LinkingBuffer.new(),
children_log_metadata: [],
links: []
]
end