Desktop adapter that lowers phase-1 timeline tracks into stable SignalGraph nodes. More...
#include <timeline_graph_binding.hpp>
Public Types | |
| using | BeforeBindingPublishHookForTest = void (*)(void*) noexcept |
Public Member Functions | |
| TimelineGraphPlaybackBinding (SignalGraph &graph, const playback::PlaybackProgramStore &store) | |
| ~TimelineGraphPlaybackBinding () | |
| TimelineGraphPlaybackBinding (const TimelineGraphPlaybackBinding &)=delete | |
| TimelineGraphPlaybackBinding & | operator= (const TimelineGraphPlaybackBinding &)=delete |
| TimelineGraphAdmission | preflight (const playback::PlaybackProgram &program, std::span< const TimelineTrackGraphRoute > routes, const TimelineGraphBindingConfig &config, int maximum_block_size) const |
| 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 canonical routed execution. | |
| TimelineGraphAdmission | adopt_program (const playback::PlaybackProgram &program) |
| Re-publishes content for the existing topology as one immutable binding generation. | |
| TimelineGraphAdmission | adopt_latest_program () |
| 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, and anticipation are stopped. | |
| void | set_before_binding_publish_hook_for_test (BeforeBindingPublishHookForTest hook, void *context=nullptr) noexcept |
| void | set_before_graph_commit_hook_for_test (BeforeBindingPublishHookForTest hook, void *context=nullptr) noexcept |
| TimelineGraphProcessResult | process (audio::BufferView< float > &output, const audio::BufferView< const float > &input, const playback::TransportSnapshot &transport) noexcept |
| NodeId | audio_node_for (timeline::ItemId track_id) const noexcept |
| NodeId | midi_input_node_for (timeline::ItemId track_id) const noexcept |
| NodeId | device_node_for (timeline::ItemId placement_id) const noexcept |
| Returns the ephemeral graph node for a resolver-owned placement. | |
| 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 the resolver discovered. | |
| playback::RendererProgramKey | renderer_key_for (timeline::ItemId track_id) const noexcept |
| playback::RendererCarryState | renderer_state_for (timeline::ItemId track_id) const noexcept |
| void | set_timeline_device_factory_for_test (TimelineDeviceSlotFactory factory) noexcept |
| Installs a control-thread test factory; null restores the production resolver. | |
Static Public Attributes | |
| static constexpr audio::RtSafetyClass | process_rt_safety_class |
| static constexpr std::size_t | maximum_graph_midi_events_per_block = 1024 |
Desktop adapter that lowers phase-1 timeline tracks into stable SignalGraph nodes.
The graph and program store must outlive this binding. Topology work is control-thread-only; process() is the single audio-thread entry point.
| using pulp::host::TimelineGraphPlaybackBinding::BeforeBindingPublishHookForTest = void (*)(void*) noexcept |
| pulp::host::TimelineGraphPlaybackBinding::TimelineGraphPlaybackBinding | ( | SignalGraph & | graph, |
| const playback::PlaybackProgramStore & | store ) |
| pulp::host::TimelineGraphPlaybackBinding::~TimelineGraphPlaybackBinding | ( | ) |
|
delete |
| TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::adopt_latest_program | ( | ) |
| TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::adopt_program | ( | const playback::PlaybackProgram & | program | ) |
Re-publishes content for the existing topology as one immutable binding generation.
This is the only content-program adoption path; process() never independently latches PlaybackProgramStore.
|
noexcept |
|
noexcept |
Returns the ephemeral graph node for a resolver-owned placement.
|
noexcept |
The prepared event-scheduling shift for a track, resolved once at admission from the device latencies the resolver discovered.
Zero for an unknown track and for every chain with no event-domain latency.
|
noexcept |
|
delete |
| TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::preflight | ( | const playback::PlaybackProgram & | program, |
| std::span< const TimelineTrackGraphRoute > | routes, | ||
| const TimelineGraphBindingConfig & | config, | ||
| int | maximum_block_size ) const |
| TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::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 canonical routed execution.
Existing nodes for unchanged track IDs retain their SignalGraph NodeIds across calls. A failed mutation, prepare, routed admission, or commit leaves both the live graph and the binding's last published state untouched unless a quiesced lifecycle rollback fails, in which case both revoke publication.
| TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::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, and anticipation are stopped.
External plugins and retained custom nodes are re-prepared; renderer carry is deliberately reset after a successful sample-rate or maximum-block change.
|
noexcept |
|
noexcept |
|
noexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Installs a control-thread test factory; null restores the production resolver.
|
staticconstexpr |
|
staticconstexpr |