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 15 of file NodeNetwork.cpp.

16{
18 return std::nullopt;
19
20 while (m_audio_buffer_lock.test_and_set(std::memory_order_acquire))
21 std::this_thread::yield();
22
23 auto result = m_last_audio_buffer.empty()
24 ? std::nullopt
25 : std::optional<std::vector<double>> { m_last_audio_buffer };
26 m_audio_buffer_lock.clear(std::memory_order_release);
27
28 return result;
29}
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.