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

◆ add_audio_buffer()

void MayaFlux::Buffers::BufferAccessControl::add_audio_buffer ( const std::shared_ptr< AudioBuffer > &  buffer,
ProcessingToken  token,
uint32_t  channel 
)

Adds an audio buffer to a token and channel.

Parameters
bufferAudio buffer to add
tokenProcessing domain
channelChannel index

Definition at line 143 of file BufferAccessControl.cpp.

147{
148 ensure_audio_channels(token, channel + 1);
149
151 auto processing_chain = unit.get_chain(channel);
152 buffer->set_channel_id(channel);
153
154 if (auto buf_chain = buffer->get_processing_chain()) {
155 if (buf_chain != processing_chain) {
156 processing_chain->merge_chain(buf_chain);
157 }
158 } else {
159 buffer->set_processing_chain(processing_chain);
160 }
161
162 {
163 if (buffer->get_num_samples() != unit.buffer_size) {
165 "Resizing buffer to match unit size: {} samples", unit.buffer_size);
166
167 std::lock_guard<std::mutex> lock(m_unit_manager.get_mutex());
168 buffer->resize(unit.buffer_size);
169 }
170 }
171
172 unit.get_buffer(channel)->add_child_buffer(buffer);
173}
#define MF_ERROR(comp, ctx,...)
static MayaFlux::Nodes::ProcessingToken token
Definition Timers.cpp:8
void ensure_audio_channels(ProcessingToken token, uint32_t channel_count)
Ensures minimum number of audio channels exist for a token.
TokenUnitManager & m_unit_manager
Reference to the token/unit manager for storage operations.
std::mutex & get_mutex() const
Acquires the manager's mutex for external synchronization.
RootAudioUnit & get_or_create_audio_unit(ProcessingToken token)
Gets or creates a root audio unit for the specified token.
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Core
Core engine, backend, subsystems.
std::shared_ptr< BufferProcessingChain > get_chain(uint32_t channel) const

References MayaFlux::Journal::BufferManagement, MayaFlux::Journal::Core, ensure_audio_channels(), MayaFlux::Buffers::RootAudioUnit::get_chain(), MayaFlux::Buffers::TokenUnitManager::get_mutex(), MayaFlux::Buffers::TokenUnitManager::get_or_create_audio_unit(), m_unit_manager, MF_ERROR, and token.

Referenced by add_buffer(), and MayaFlux::Buffers::BufferSupplyMixing::clone_audio_buffer_for_channels().

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