30 std::span<const TrackAutomationEvent>
events;
102 std::span<const DeviceAutomationBatch>
batches() const noexcept {
110 std::shared_ptr<const AutomationProgram>
program;
113 std::array<AutomationBlockEvent, kEventsPerDevice> scratch{};
114 std::uint32_t event_count = 0;
115 std::uint32_t merge_position = 0;
116 std::uint32_t selected_sample_offset = 0;
117 bool has_selected_event =
false;
118 bool coalesced =
false;
128 std::vector<std::size_t> lane_indices;
129 std::vector<std::size_t> merge_heap;
130 std::array<QueuedEvent, kEventsPerDevice> queued_events{};
131 std::array<TrackAutomationEvent, kEventsPerDevice>
events{};
132 std::uint32_t event_count = 0;
133 bool coalesced =
false;
136 std::shared_ptr<const TrackAutomationProgram> program_;
137 AutomationPlaybackLimits limits_;
138 std::vector<LaneState> lanes_;
139 std::vector<DeviceState> devices_;
140 std::vector<DeviceAutomationBatch> batch_views_;
Allocation-free renderer for one immutable AutomationProgram.
Definition automation_cursor.hpp:221
Immutable compiler-supplied grouping of one track's compiled automation lanes.
Definition track_automation_program.hpp:44
TrackAutomationRenderer(const TrackAutomationRenderer &)=delete
const std::shared_ptr< const TrackAutomationProgram > & program() const noexcept
Definition track_automation_renderer.hpp:96
timeline::ItemId track_id() const noexcept
static constexpr std::size_t kEventsPerDevice
Definition track_automation_renderer.hpp:73
std::span< const DeviceAutomationBatch > batches() const noexcept
Definition track_automation_renderer.hpp:102
TrackAutomationRenderer & operator=(const TrackAutomationRenderer &)=delete
static constexpr audio::RtSafetyClass process_rt_safety_class
Definition track_automation_renderer.hpp:75
TrackAutomationRenderer(TrackAutomationRenderer &&) noexcept=default
const AutomationPlaybackLimits & limits() const noexcept
Definition track_automation_renderer.hpp:99
static runtime::Result< TrackAutomationRenderer, TrackAutomationRendererError > create(std::shared_ptr< const TrackAutomationProgram > program, AutomationPlaybackLimits limits=AutomationPlaybackLimits::platform_defaults())
TrackAutomationRenderResult process(const TransportSnapshot &transport) noexcept
runtime::Result< TrackAutomationRendererAdoption, TrackAutomationRendererError > adopt(std::shared_ptr< const TrackAutomationProgram > program)
Rebuilds prepared storage while the caller has exclusive access.
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
RtSafetyClass
Definition rt_safety_contract.hpp:11
@ AudioCallbackSafeWithImmutableInputs
Definition rt_safety_contract.hpp:14
Definition child_process_manager.hpp:18
Definition audio_renderer.hpp:20
@ InvalidLimits
The carried automation ceilings are not a configuration the renderer accepts.
Definition program_wire.hpp:347
@ InvalidTransport
Definition audio_renderer.hpp:218
TrackAutomationRendererCode
Definition track_automation_renderer.hpp:34
@ LaneCapacityExceeded
Definition track_automation_renderer.hpp:42
@ PointCapacityExceeded
Definition track_automation_renderer.hpp:43
@ MissingProgram
Definition track_automation_renderer.hpp:37
@ TrackMismatch
Definition track_automation_renderer.hpp:38
@ Ok
Definition track_automation_renderer.hpp:35
@ DeviceCapacityExceeded
Definition track_automation_renderer.hpp:44
@ LaneAdoptionRejected
Definition track_automation_renderer.hpp:41
@ Unchanged
Definition automation_cursor.hpp:40
@ Adopted
Definition automation_cursor.hpp:39
@ MissingProgram
Definition note_renderer.hpp:38
TrackAutomationRendererAdoption
Definition track_automation_renderer.hpp:49
@ Coalesced
Definition automation_cursor.hpp:30
@ WorkCapacityExceeded
Definition automation_cursor.hpp:35
@ TempoMapMismatch
Definition automation_cursor.hpp:33
@ Ok
Definition automation_cursor.hpp:29
Definition generated_event_source.hpp:33
Definition program_compiler.hpp:18
Result<T, E> — success / failure union for fallible operations.
Preparation and callback-work ceilings shared by document compilation and track automation rendering.
Definition automation_limits.hpp:12
static constexpr std::uint32_t kMaximumEventsPerDevicePerBlock
Definition automation_limits.hpp:18
static constexpr AutomationPlaybackLimits platform_defaults() noexcept
Definition automation_limits.hpp:42
Definition track_automation_renderer.hpp:28
timeline::ItemId device_placement_id
Definition track_automation_renderer.hpp:29
std::span< const TrackAutomationEvent > events
Definition track_automation_renderer.hpp:30
bool coalesced
Definition track_automation_renderer.hpp:31
Definition track_automation_renderer.hpp:18
float value
Definition track_automation_renderer.hpp:22
std::uint32_t param_id
Definition track_automation_renderer.hpp:20
timeline::ItemId lane_id
Definition track_automation_renderer.hpp:19
constexpr bool operator==(const TrackAutomationEvent &) const =default
std::uint32_t ramp_duration_sample_frames
Definition track_automation_renderer.hpp:23
std::uint32_t sample_offset
Definition track_automation_renderer.hpp:21
Definition track_automation_renderer.hpp:60
timeline::ItemId failed_device_placement_id
Definition track_automation_renderer.hpp:65
std::uint32_t emitted_events
Definition track_automation_renderer.hpp:62
timeline::ItemId failed_lane_id
Definition track_automation_renderer.hpp:64
TrackAutomationRendererCode code
Definition track_automation_renderer.hpp:61
std::uint32_t candidate_events
Definition track_automation_renderer.hpp:63
Definition track_automation_renderer.hpp:54
TrackAutomationRendererCode code
Definition track_automation_renderer.hpp:55
timeline::ItemId track_id
Definition track_automation_renderer.hpp:56
timeline::ItemId lane_id
Definition track_automation_renderer.hpp:57
Definition track_automation_renderer.hpp:122
std::uint32_t lane_sequence
Definition track_automation_renderer.hpp:124
TrackAutomationEvent event
Definition track_automation_renderer.hpp:123
Definition transport.hpp:71
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19