MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ execute_buffer_rate()

void MayaFlux::Kriya::BufferPipeline::execute_buffer_rate ( uint64_t  max_cycles = 0)

Execute pipeline synchronized to audio hardware cycle boundaries.

This now respects the configured execution strategy and timing modes. Default strategy is PHASED with BUFFER_RATE timing.

Parameters
max_cyclesMaximum number of audio cycles to process (0 = infinite)

Definition at line 73 of file BufferPipeline.cpp.

74{
75 if (!m_scheduler) {
76 error<std::runtime_error>(Journal::Component::Kriya,
78 std::source_location::current(),
79 "Pipeline requires scheduler for execution");
80 }
81
82 auto self = shared_from_this();
83
84 if (max_cycles == 0) {
85 max_cycles = UINT64_MAX;
87 }
88 m_max_cycles = max_cycles;
89
90 auto routine = std::make_shared<Vruta::SoundRoutine>(
91 execute_internal(max_cycles, 0));
92
93 m_scheduler->add_task(std::move(routine));
94
95 m_active_self = self;
96}
Vruta::SoundRoutine execute_internal(uint64_t max_cycles, uint64_t samples_per_operation)
std::shared_ptr< BufferPipeline > m_active_self
Vruta::TaskScheduler * m_scheduler
void add_task(std::shared_ptr< Routine > routine, const std::string &name="", bool initialize=false)
Add a routine to the scheduler based on its processing token.
Definition Scheduler.cpp:17
@ CoroutineScheduling
Coroutine scheduling and temporal coordination (Vruta::TaskScheduler)
@ Kriya
Automatable tasks and fluent scheduling api for Nodes and Buffers.

References MayaFlux::Vruta::TaskScheduler::add_task(), MayaFlux::Journal::CoroutineScheduling, execute_internal(), MayaFlux::Journal::Kriya, m_active_self, m_continuous_execution, m_max_cycles, and m_scheduler.

+ Here is the call graph for this function: