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

◆ get_audio_buffer()

std::optional< std::vector< double > > MayaFlux::Nodes::Network::NodeNetwork::get_audio_buffer ( ) const
virtual

Get cached audio buffer from last process_batch()

Returns
Optional vector of samples

Returns the buffer generated by the most recent process_batch() call. All channels requesting this network's output get the same buffer.

Reimplemented in MayaFlux::Nodes::Network::ResonatorNetwork.

Definition at line 16 of file NodeNetwork.cpp.

17{
19 return std::nullopt;
20
21 while (m_audio_buffer_lock.test_and_set(std::memory_order_acquire))
22 std::this_thread::yield();
23
24 auto result = m_last_audio_buffer.empty()
25 ? std::nullopt
26 : std::optional<std::vector<double>> { m_last_audio_buffer };
27 m_audio_buffer_lock.clear(std::memory_order_release);
28
29 return result;
30}
std::atomic_flag m_audio_buffer_lock
Spinlock guarding m_last_audio_buffer.
std::vector< double > m_last_audio_buffer
@ AUDIO_COMPUTE
processed each cycle but not sent to output
@ AUDIO_SINK
Aggregated audio samples sent to output.

References MayaFlux::Nodes::Network::AUDIO_COMPUTE, MayaFlux::Nodes::Network::AUDIO_SINK, m_audio_buffer_lock, m_last_audio_buffer, and m_output_mode.