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

◆ execute_streaming()

Vruta::SoundRoutine MayaFlux::Kriya::BufferPipeline::execute_streaming ( uint64_t  max_cycles,
uint64_t  samples_per_operation 
)
private

Definition at line 185 of file BufferPipelineExecution.cpp.

186{
187 auto& promise = co_await Kriya::GetAudioPromise {};
188
189 if (m_operations.empty()) {
190 co_return;
191 }
192
194 uint32_t cycles_executed = 0;
195
196 while ((max_cycles == 0 || cycles_executed < max_cycles) && (m_continuous_execution || cycles_executed < max_cycles)) {
197
198 if (promise.should_terminate) {
199 break;
200 }
201
202 start_cycle();
203
204 for (size_t i = 0; i < m_operations.size(); ++i) {
205 auto& op = m_operations[i];
206
207 if (!operation_due(op)) {
208 continue;
209 }
210
212 continue;
213 }
214
215 const uint32_t op_iterations = operation_iterations(op);
216
217 for (uint32_t iter = 0; iter < op_iterations; ++iter) {
218
221
222 flow_through(i, m_current_cycle + iter);
223
225 co_await BufferDelay { 1 };
226 } else if (samples_per_operation > 0) {
227 co_await SampleDelay { samples_per_operation };
228 }
229 }
230 }
231
233
234 finish_cycle();
235
237 cycles_executed++;
238 }
239
240 if (m_on_complete)
242}
@ READY
Data ready for processing.
uint32_t operation_iterations(const BufferOperation &op) const
void process_operation(BufferOperation &op, uint64_t cycle)
void flow_through(size_t index, uint64_t cycle)
std::vector< BufferOperation > m_operations
std::vector< DataState > m_data_states
std::function< void()> m_on_complete
bool operation_due(const BufferOperation &op) const
std::vector< std::shared_ptr< Vruta::Routine > > dispatch_cycle_branches(bool frame_rate)
GetPromiseBase< Vruta::audio_promise > GetAudioPromise
Audio domain promise accessor.
@ BUFFER_BASED
Buffer-cycle delay (audio hardware boundary)

References MayaFlux::Vruta::BUFFER_BASED, CONSUMED, dispatch_cycle_branches(), EMPTY, finish_cycle(), flow_through(), m_capture_timing, m_continuous_execution, m_current_cycle, m_data_states, m_on_complete, m_operations, operation_due(), operation_iterations(), process_operation(), READY, and start_cycle().

Referenced by execute_internal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: