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

◆ clone_audio_buffer_for_channels()

std::vector< std::shared_ptr< AudioBuffer > > MayaFlux::Buffers::BufferSupplyMixing::clone_audio_buffer_for_channels ( const std::shared_ptr< AudioBuffer > &  buffer,
const std::vector< uint32_t > &  channels,
ProcessingToken  token 
)

Clones an audio buffer for each channel in the specified list.

Parameters
bufferBuffer to clone
channelsVector of channel indices to clone for
tokenProcessing domain

Creates a new buffer for each specified channel, copying the structure but maintaining independent data. Useful for multi-channel processing where each channel needs its own processing chain.

Definition at line 145 of file BufferSupplyMixing.cpp.

149{
150 if (channels.empty()) {
152 "BufferSupplyMixing: No channels specified for cloning");
153 return {};
154 }
155 if (!buffer) {
157 "BufferSupplyMixing: Invalid buffer for cloning");
158 return {};
159 }
160
163 "BufferSupplyMixing: Token not found for cloning");
164 return {};
165 }
166
168
169 std::vector<std::shared_ptr<AudioBuffer>> cloned_buffers {};
170
171 for (const auto channel : channels) {
172 if (channel >= unit.channel_count) {
174 "BufferSupplyMixing: Channel {} out of range for cloning", channel);
175 return cloned_buffers;
176 }
177
178 auto cloned_buffer = buffer->clone_to(channel);
179 m_access_control.add_audio_buffer(cloned_buffer, token, channel);
180 cloned_buffers.push_back(cloned_buffer);
181 }
182
183 return cloned_buffers;
184}
#define MF_ERROR(comp, ctx,...)
static MayaFlux::Nodes::ProcessingToken token
Definition Timers.cpp:8
void add_audio_buffer(const std::shared_ptr< AudioBuffer > &buffer, ProcessingToken token, uint32_t channel)
Adds an audio buffer to a token and channel.
TokenUnitManager & m_unit_manager
Reference to the token/unit manager.
BufferAccessControl & m_access_control
Reference to the buffer access control.
bool has_audio_unit(ProcessingToken token) const
Checks if an audio unit exists for the given token.
RootAudioUnit & get_audio_unit_mutable(ProcessingToken token)
Gets an existing audio unit without creating if missing (mutable)
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Buffers::BufferAccessControl::add_audio_buffer(), MayaFlux::Journal::BufferManagement, MayaFlux::Journal::Core, MayaFlux::Buffers::TokenUnitManager::get_audio_unit_mutable(), MayaFlux::Buffers::TokenUnitManager::has_audio_unit(), m_access_control, m_unit_manager, MF_ERROR, and token.

+ Here is the call graph for this function: