Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::host::TimelineGraphPlaybackBinding Class Reference

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

Detailed Description

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.

Member Typedef Documentation

◆ BeforeBindingPublishHookForTest

Constructor & Destructor Documentation

◆ TimelineGraphPlaybackBinding() [1/2]

pulp::host::TimelineGraphPlaybackBinding::TimelineGraphPlaybackBinding ( SignalGraph & graph,
const playback::PlaybackProgramStore & store )

◆ ~TimelineGraphPlaybackBinding()

pulp::host::TimelineGraphPlaybackBinding::~TimelineGraphPlaybackBinding ( )

◆ TimelineGraphPlaybackBinding() [2/2]

pulp::host::TimelineGraphPlaybackBinding::TimelineGraphPlaybackBinding ( const TimelineGraphPlaybackBinding & )
delete

Member Function Documentation

◆ adopt_latest_program()

TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::adopt_latest_program ( )

◆ adopt_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.

◆ audio_node_for()

NodeId pulp::host::TimelineGraphPlaybackBinding::audio_node_for ( timeline::ItemId track_id) const
noexcept

◆ device_node_for()

NodeId pulp::host::TimelineGraphPlaybackBinding::device_node_for ( timeline::ItemId placement_id) const
noexcept

Returns the ephemeral graph node for a resolver-owned placement.

◆ event_compensation_shift_for()

playback::EventCompensationShift pulp::host::TimelineGraphPlaybackBinding::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.

Zero for an unknown track and for every chain with no event-domain latency.

◆ midi_input_node_for()

NodeId pulp::host::TimelineGraphPlaybackBinding::midi_input_node_for ( timeline::ItemId track_id) const
noexcept

◆ operator=()

TimelineGraphPlaybackBinding & pulp::host::TimelineGraphPlaybackBinding::operator= ( const TimelineGraphPlaybackBinding & )
delete

◆ preflight()

TimelineGraphAdmission pulp::host::TimelineGraphPlaybackBinding::preflight ( const playback::PlaybackProgram & program,
std::span< const TimelineTrackGraphRoute > routes,
const TimelineGraphBindingConfig & config,
int maximum_block_size ) const

◆ prepare()

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.

◆ prepare_quiesced()

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.

◆ process()

TimelineGraphProcessResult pulp::host::TimelineGraphPlaybackBinding::process ( audio::BufferView< float > & output,
const audio::BufferView< const float > & input,
const playback::TransportSnapshot & transport )
noexcept

◆ renderer_key_for()

playback::RendererProgramKey pulp::host::TimelineGraphPlaybackBinding::renderer_key_for ( timeline::ItemId track_id) const
noexcept

◆ renderer_state_for()

playback::RendererCarryState pulp::host::TimelineGraphPlaybackBinding::renderer_state_for ( timeline::ItemId track_id) const
noexcept

◆ set_before_binding_publish_hook_for_test()

void pulp::host::TimelineGraphPlaybackBinding::set_before_binding_publish_hook_for_test ( BeforeBindingPublishHookForTest hook,
void * context = nullptr )
inlinenoexcept

◆ set_before_graph_commit_hook_for_test()

void pulp::host::TimelineGraphPlaybackBinding::set_before_graph_commit_hook_for_test ( BeforeBindingPublishHookForTest hook,
void * context = nullptr )
inlinenoexcept

◆ set_timeline_device_factory_for_test()

void pulp::host::TimelineGraphPlaybackBinding::set_timeline_device_factory_for_test ( TimelineDeviceSlotFactory factory)
inlinenoexcept

Installs a control-thread test factory; null restores the production resolver.

Member Data Documentation

◆ maximum_graph_midi_events_per_block

std::size_t pulp::host::TimelineGraphPlaybackBinding::maximum_graph_midi_events_per_block = 1024
staticconstexpr

◆ process_rt_safety_class

audio::RtSafetyClass pulp::host::TimelineGraphPlaybackBinding::process_rt_safety_class
staticconstexpr
Initial value:

The documentation for this class was generated from the following file: