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

◆ process_modify()

void MayaFlux::Kriya::BufferPipeline::process_modify ( BufferOperation &  op,
uint64_t  cycle 
)
private

Definition at line 278 of file BufferPipelineOperations.cpp.

279{
280 if (!m_buffer_manager) {
281 error<std::invalid_argument>(Journal::Component::Kriya,
283 std::source_location::current(),
284 "BufferPipeline has no BufferManager for MODIFY operation");
285 }
286
287 if (!op.m_attached_processor) {
288 if (op.m_target_graphics_buffer) {
289 op.m_attached_processor = m_buffer_manager->attach_quick_process(
290 op.m_graphics_buffer_modifier,
291 op.m_target_graphics_buffer, op.get_token());
292 } else {
293 op.m_attached_processor = m_buffer_manager->attach_quick_process(
294 op.m_audio_buffer_modifier,
295 op.m_target_audio_buffer, Buffers::ProcessingToken::AUDIO_BACKEND);
296 }
297 if (m_max_cycles != 0 && op.is_streaming()) {
298 op.m_modify_cycle_count = m_max_cycles - cycle;
299 }
300 }
301
302 if (op.m_modify_cycle_count > 0 && cycle >= op.m_modify_cycle_count - 1) {
303 if (op.m_attached_processor) {
304 if (op.m_target_graphics_buffer) {
305 m_buffer_manager->remove_processor(
306 op.m_attached_processor,
307 op.m_target_graphics_buffer);
308 } else {
309 m_buffer_manager->remove_processor(
310 op.m_attached_processor,
311 op.m_target_audio_buffer);
312 }
313 op.m_attached_processor = nullptr;
314 }
315 }
316}
std::shared_ptr< Buffers::BufferManager > m_buffer_manager
@ AUDIO_BACKEND
Standard audio processing backend configuration.
@ CoroutineScheduling
Coroutine scheduling and temporal coordination (Vruta::TaskScheduler)
@ Kriya
Automatable tasks and fluent scheduling api for Nodes and Buffers.

References MayaFlux::Buffers::AUDIO_BACKEND, MayaFlux::Journal::CoroutineScheduling, MayaFlux::Kriya::BufferOperation::get_token(), MayaFlux::Kriya::BufferOperation::is_streaming(), MayaFlux::Journal::Kriya, MayaFlux::Kriya::BufferOperation::m_attached_processor, MayaFlux::Kriya::BufferOperation::m_audio_buffer_modifier, m_buffer_manager, MayaFlux::Kriya::BufferOperation::m_graphics_buffer_modifier, m_max_cycles, MayaFlux::Kriya::BufferOperation::m_modify_cycle_count, MayaFlux::Kriya::BufferOperation::m_target_audio_buffer, and MayaFlux::Kriya::BufferOperation::m_target_graphics_buffer.

Referenced by process_operation().

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