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

◆ manage_transient_data()

Vruta::SoundRoutine MayaFlux::Kriya::CycleCoordinator::manage_transient_data ( std::shared_ptr< Buffers::AudioBuffer buffer,
std::function< void(uint32_t)>  on_data_ready,
std::function< void(uint32_t)>  on_data_expired 
)

Create a transient data management routine.

Parameters
bufferAudioBuffer with transient data lifecycle
on_data_readyCallback when data becomes available
on_data_expiredCallback when data expires
Returns
SoundRoutine that manages data lifecycle

Definition at line 58 of file CycleCoordinator.cpp.

62{
63
64 auto& promise = co_await GetAudioPromise {};
65 uint32_t cycle = 0;
66
67 while (true) {
68 if (promise.should_terminate) {
69 break;
70 }
71
72 if (buffer->has_data_for_cycle()) {
73 on_data_ready(cycle);
74 co_await SampleDelay { 1 };
75
76 if (buffer->has_data_for_cycle()) {
77 on_data_expired(cycle + 1);
78 }
79 }
80
81 cycle++;
82 co_await SampleDelay { 1 };
83 }
84}
GetPromiseBase< Vruta::audio_promise > GetAudioPromise
Audio domain promise accessor.