21struct TimelineGraphSharedBlockState;
22struct TimelineGraphBoundTrack;
23struct TimelineGraphBindingState;
24struct TimelineGraphPreparedCandidate;
136 constexpr explicit operator bool() const noexcept {
176 constexpr explicit operator bool() const noexcept {
196 std::span<const TimelineTrackGraphRoute> routes,
198 int maximum_block_size)
const;
207 std::span<const TimelineTrackGraphRoute> routes,
209 int maximum_block_size);
222 std::span<const TimelineTrackGraphRoute> routes,
224 double sample_rate,
int maximum_block_size);
228 void* context =
nullptr) noexcept {
229 before_binding_publish_hook_for_test_ = hook;
230 before_binding_publish_context_for_test_ = context;
233 void* context =
nullptr) noexcept {
234 before_graph_commit_hook_for_test_ = hook;
235 before_graph_commit_context_for_test_ = context;
261 std::span<const TimelineTrackGraphRoute> routes,
263 double sample_rate,
int maximum_block_size,
264 detail::TimelineGraphPreparedCandidate& candidate)
const;
266 std::span<const TimelineTrackGraphRoute> routes,
268 double sample_rate,
int maximum_block_size,
bool quiesced);
269 void remove_all_owned_nodes() noexcept;
272 const
playback::PlaybackProgramStore& store_;
273 std::shared_ptr<
detail::TimelineGraphSharedBlockState> shared_;
274 std::shared_ptr<
detail::ExactParameterIngressOwner> automation_claim_owner_;
275 runtime::Slot<const
detail::TimelineGraphBindingState> state_;
276 std::uint64_t binding_instance_id_ = 0;
279 void* before_binding_publish_context_for_test_ =
nullptr;
281 void* before_graph_commit_context_for_test_ =
nullptr;
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
Definition signal_graph_runtime.hpp:83
TimelineGraphPlaybackBinding(SignalGraph &graph, const playback::PlaybackProgramStore &store)
TimelineGraphPlaybackBinding & operator=(const TimelineGraphPlaybackBinding &)=delete
void set_timeline_device_factory_for_test(TimelineDeviceSlotFactory factory) noexcept
Installs a control-thread test factory; null restores the production resolver.
Definition timeline_graph_binding.hpp:255
TimelineGraphAdmission prepare_quiesced(const playback::PlaybackProgram &program, std::span< const TimelineTrackGraphRoute > routes, const TimelineGraphBindingConfig &config, double sample_rate, int maximum_block_size)
Dimension-changing prepare for a host lifecycle boundary where audio process(), MIDI injection,...
~TimelineGraphPlaybackBinding()
static constexpr std::size_t maximum_graph_midi_events_per_block
Definition timeline_graph_binding.hpp:188
TimelineGraphAdmission preflight(const playback::PlaybackProgram &program, std::span< const TimelineTrackGraphRoute > routes, const TimelineGraphBindingConfig &config, int maximum_block_size) const
static constexpr audio::RtSafetyClass process_rt_safety_class
Definition timeline_graph_binding.hpp:186
void(*)(void *) noexcept BeforeBindingPublishHookForTest
Definition timeline_graph_binding.hpp:226
void set_before_binding_publish_hook_for_test(BeforeBindingPublishHookForTest hook, void *context=nullptr) noexcept
Definition timeline_graph_binding.hpp:227
playback::EventCompensationShift event_compensation_shift_for(timeline::ItemId track_id) const noexcept
The prepared event-scheduling shift for a track, resolved once at admission from the device latencies...
TimelineGraphAdmission adopt_latest_program()
NodeId device_node_for(timeline::ItemId placement_id) const noexcept
Returns the ephemeral graph node for a resolver-owned placement.
TimelineGraphProcessResult process(audio::BufferView< float > &output, const audio::BufferView< const float > &input, const playback::TransportSnapshot &transport) noexcept
void set_before_graph_commit_hook_for_test(BeforeBindingPublishHookForTest hook, void *context=nullptr) noexcept
Definition timeline_graph_binding.hpp:232
TimelineGraphAdmission prepare(const playback::PlaybackProgram &program, std::span< const TimelineTrackGraphRoute > routes, const TimelineGraphBindingConfig &config, double sample_rate, int maximum_block_size)
Reconciles stable ItemId-keyed nodes through an isolated prepared graph transaction and pins canonica...
playback::RendererCarryState renderer_state_for(timeline::ItemId track_id) const noexcept
NodeId audio_node_for(timeline::ItemId track_id) const noexcept
TimelineGraphAdmission adopt_program(const playback::PlaybackProgram &program)
Re-publishes content for the existing topology as one immutable binding generation.
TimelineGraphPlaybackBinding(const TimelineGraphPlaybackBinding &)=delete
playback::RendererProgramKey renderer_key_for(timeline::ItemId track_id) const noexcept
NodeId midi_input_node_for(timeline::ItemId track_id) const noexcept
Definition program.hpp:371
Definition program.hpp:290
RtSafetyClass
Definition rt_safety_contract.hpp:11
@ AudioCallbackSafeAfterPrepare
Definition rt_safety_contract.hpp:13
Definition graph_runtime_buffer_assignment.hpp:8
std::uint32_t NodeId
Definition graph_types.hpp:7
std::uint32_t PortIndex
Definition graph_types.hpp:8
Definition baked_codec.hpp:158
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
@ Accepted
Definition graph_event_contract.hpp:30
TimelineGraphAdmissionCode
Definition timeline_graph_binding.hpp:63
@ MissingDestination
Definition timeline_graph_binding.hpp:68
@ MixedDeviceOwnership
Definition timeline_graph_binding.hpp:108
@ NonAutomatableAutomationParameter
Definition timeline_graph_binding.hpp:92
@ UnsupportedDeviceWetDry
Definition timeline_graph_binding.hpp:106
@ DestinationPortRange
Definition timeline_graph_binding.hpp:69
@ DuplicateDevicePlacement
Definition timeline_graph_binding.hpp:85
@ MissingProgramProject
Definition timeline_graph_binding.hpp:97
@ Accepted
Definition timeline_graph_binding.hpp:64
@ SourcePortRange
Definition timeline_graph_binding.hpp:72
@ UnsupportedDeviceChain
Definition timeline_graph_binding.hpp:100
@ NoteCapacityExceeded
Definition timeline_graph_binding.hpp:82
@ CleanupRecoveryRequired
Definition timeline_graph_binding.hpp:96
@ EventChainLiveInputUnsupported
A track offers live input into an event chain that is compensated by reading ahead.
Definition timeline_graph_binding.hpp:124
@ DuplicateDeviceNodeOwnership
Definition timeline_graph_binding.hpp:89
@ MissingDevicePlacement
Definition timeline_graph_binding.hpp:83
@ EventDeviceLatencyUnavailable
A device's backend cannot report latency, or asked and the plugin errored.
Definition timeline_graph_binding.hpp:114
@ IncompletePostDeviceRoute
Definition timeline_graph_binding.hpp:70
@ UnknownAutomationParameter
Definition timeline_graph_binding.hpp:90
@ SampleRateMismatch
Definition timeline_graph_binding.hpp:81
@ EventDeviceLatencyOutOfRange
A device reported a negative latency, or one past the graph's declared per-node ceiling.
Definition timeline_graph_binding.hpp:118
@ MissingPostDeviceRoute
Definition timeline_graph_binding.hpp:71
@ DuplicateTrack
Definition timeline_graph_binding.hpp:66
@ MissingDeviceNode
Definition timeline_graph_binding.hpp:86
@ RoutedTopologyIneligible
Definition timeline_graph_binding.hpp:78
@ GraphPrepareFailed
Definition timeline_graph_binding.hpp:80
@ UnresolvedDevicePlugin
Definition timeline_graph_binding.hpp:88
@ GraphMutationFailed
Definition timeline_graph_binding.hpp:79
@ UnsupportedDeviceBinding
Definition timeline_graph_binding.hpp:104
@ UnsupportedDeviceKind
Definition timeline_graph_binding.hpp:103
@ UnsupportedDeviceState
Definition timeline_graph_binding.hpp:107
@ MissingProgramSequence
Definition timeline_graph_binding.hpp:99
@ DeviceNodeAutomationConflict
Definition timeline_graph_binding.hpp:93
@ ReadOnlyAutomationParameter
Definition timeline_graph_binding.hpp:91
@ UnsupportedDeviceSlotKind
Definition timeline_graph_binding.hpp:102
@ AutomationRendererRejected
Definition timeline_graph_binding.hpp:94
@ RoutedPlanRejected
Definition timeline_graph_binding.hpp:77
@ UnsupportedDevicePosition
Definition timeline_graph_binding.hpp:101
@ DeviceNodeNotPlugin
Definition timeline_graph_binding.hpp:87
@ DeviceFactoryFailed
Definition timeline_graph_binding.hpp:109
@ ProgramProjectMismatch
Definition timeline_graph_binding.hpp:98
@ RealtimeStretchRejected
Definition timeline_graph_binding.hpp:95
@ InvalidConfiguration
Definition timeline_graph_binding.hpp:65
@ MissingTrack
Definition timeline_graph_binding.hpp:67
@ UnexpectedDevicePlacement
Definition timeline_graph_binding.hpp:84
@ UnsupportedDeviceBypass
Definition timeline_graph_binding.hpp:105
@ ConnectionLimitExceeded
Definition sample_region_proof.hpp:124
@ NodeLimitExceeded
Definition sample_region_proof.hpp:123
std::unique_ptr< PluginSlot >(*)(const PluginInfo &) TimelineDeviceSlotFactory
Factory signature used by Timeline's disposable graph-lowering transaction.
Definition timeline_device_resolver.hpp:73
std::unique_ptr< PluginSlot > load_builtin_plugin(const PluginInfo &info)
Loads a pathless Pulp-owned device. Unknown keys and non-empty paths fail closed.
TimelineGraphProcessCode
Definition timeline_graph_binding.hpp:141
@ InvalidTransport
Definition timeline_graph_binding.hpp:144
@ AutomationRenderFailed
Definition timeline_graph_binding.hpp:157
@ TopologyChanged
Definition timeline_graph_binding.hpp:156
@ RealtimeStretchGap
Definition timeline_graph_binding.hpp:147
@ MissingProgram
Definition timeline_graph_binding.hpp:143
@ RealtimeStretchUnderflow
Definition timeline_graph_binding.hpp:152
@ RealtimeStretchImpossibleRatio
Definition timeline_graph_binding.hpp:150
@ NoteRenderFailed
Definition timeline_graph_binding.hpp:145
@ Ok
Definition timeline_graph_binding.hpp:142
@ AudioRenderFailed
Definition timeline_graph_binding.hpp:146
@ RealtimeStretchStalePublication
Definition timeline_graph_binding.hpp:149
@ EventCompensationUnsupported
A compensating event shift met a transport range that locates events by host beat rather than by docu...
Definition timeline_graph_binding.hpp:166
@ InputShapeMismatch
Definition timeline_graph_binding.hpp:155
@ AutomationDeliveryFailed
Definition timeline_graph_binding.hpp:158
@ RealtimeStretchStateRequired
Definition timeline_graph_binding.hpp:148
@ CleanupFailed
Definition timeline_graph_binding.hpp:160
@ RoutedDispatchFailed
Definition timeline_graph_binding.hpp:159
@ RealtimeStretchBackpressure
Definition timeline_graph_binding.hpp:151
@ RealtimeStretchUnsupportedScrubbing
Definition timeline_graph_binding.hpp:153
@ CapacityExceeded
Definition timeline_graph_binding.hpp:154
@ Ok
Definition baked_graph_processor.hpp:156
@ TotalPortLimitExceeded
Definition signal_graph_executor_contract.hpp:44
@ PerNodePortLimitExceeded
Definition signal_graph_executor_contract.hpp:43
Definition audio_renderer.hpp:20
Definition generated_event_source.hpp:33
Publishing a value built off the audio thread, and reclaiming the old one without ever calling a dest...
One phase-1 track's lowering into the desktop SignalGraph adapter.
Definition timeline_graph_binding.hpp:33
NodeId plugin_node
Definition timeline_graph_binding.hpp:35
timeline::ItemId device_placement_id
Definition timeline_graph_binding.hpp:34
Structured admission result.
Definition timeline_graph_binding.hpp:130
NodeId node
Definition timeline_graph_binding.hpp:135
timeline::ItemId item
Definition timeline_graph_binding.hpp:134
std::uint64_t limit
Definition timeline_graph_binding.hpp:133
TimelineGraphAdmissionCode code
Definition timeline_graph_binding.hpp:131
std::uint64_t actual
Definition timeline_graph_binding.hpp:132
Definition timeline_graph_binding.hpp:55
std::size_t maximum_note_events_per_track_per_block
Definition timeline_graph_binding.hpp:57
playback::AudioRendererLimits audio_limits
Definition timeline_graph_binding.hpp:58
std::uint32_t audio_channels
Definition timeline_graph_binding.hpp:56
playback::AutomationPlaybackLimits automation_limits
Definition timeline_graph_binding.hpp:59
Definition timeline_graph_binding.hpp:169
TimelineGraphProcessCode code
Definition timeline_graph_binding.hpp:170
std::uint32_t emitted_automation_events
Definition timeline_graph_binding.hpp:174
std::uint32_t dropped_note_events
Definition timeline_graph_binding.hpp:172
std::uint32_t emitted_note_events
Definition timeline_graph_binding.hpp:171
std::uint32_t coalesced_automation_events
Definition timeline_graph_binding.hpp:175
std::uint32_t candidate_automation_events
Definition timeline_graph_binding.hpp:173
Definition timeline_graph_binding.hpp:38
timeline::ItemId track_id
Definition timeline_graph_binding.hpp:39
NodeId post_device_audio_source
Optional explicit end of a hosted device chain.
Definition timeline_graph_binding.hpp:49
NodeId audio_destination
Definition timeline_graph_binding.hpp:40
PortIndex post_mixer_audio_destination_first_port
Definition timeline_graph_binding.hpp:52
PortIndex post_device_audio_source_first_port
Definition timeline_graph_binding.hpp:50
NodeId post_mixer_audio_destination
Definition timeline_graph_binding.hpp:51
PortIndex audio_destination_first_port
Definition timeline_graph_binding.hpp:41
std::span< const TimelineDeviceGraphRoute > device_routes
Definition timeline_graph_binding.hpp:43
NodeId midi_destination
Definition timeline_graph_binding.hpp:42
Shared compile and RT ceilings.
Definition audio_renderer_limits.hpp:10
Preparation and callback-work ceilings shared by document compilation and track automation rendering.
Definition automation_limits.hpp:12
static constexpr AutomationPlaybackLimits platform_defaults() noexcept
Definition automation_limits.hpp:42
One event-injection point's prepared scheduling shift, counted in samples at the program's compiled s...
Definition event_compensation.hpp:33
Definition stable_renderer_shell.hpp:12
Definition program_identity.hpp:12
Definition transport.hpp:71
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19