21 [[nodiscard]] std::shared_ptr<RootAudioBuffer>
get_buffer(uint32_t channel)
const
26 [[nodiscard]] std::shared_ptr<BufferProcessingChain>
get_chain(uint32_t channel)
const
78 uint32_t default_out_channels,
79 uint32_t default_buffer_size);
83 ProcessingToken default_graphics_token = ProcessingToken::GRAPHICS_BACKEND);
141 std::vector<ProcessingToken> get_active_audio_tokens()
const;
189 std::vector<ProcessingToken> get_active_graphics_tokens()
const;
234 ensure_audio_channels(
token, num_channels);
235 resize_audio_buffers(
token, buffer_size);
270 inline std::mutex&
get_mutex()
const {
return m_manager_mutex; }
static MayaFlux::Nodes::ProcessingToken token
ProcessingToken get_default_graphics_token() const
Gets the default graphics processing token.
std::mutex m_manager_mutex
Mutex for thread-safe access to all unit maps.
std::mutex & get_mutex() const
Acquires the manager's mutex for external synchronization.
std::unordered_map< ProcessingToken, RootGraphicsUnit > m_graphics_units
Token-based map of root graphics buffer units.
TokenUnitManager(ProcessingToken default_token, uint32_t default_out_channels, uint32_t default_buffer_size)
Creates a new unit manager with initial audio unit configuration.
std::unordered_map< ProcessingToken, RootAudioUnit > m_audio_units
Token-based map of root audio buffer units Maps: ProcessingToken -> channel -> {root_buffers,...
ProcessingToken m_default_audio_token
Default processing token for legacy compatibility and initialization.
ProcessingToken get_default_audio_token() const
Gets the default processing token.
void validate_num_audio_channels(ProcessingToken token, uint32_t num_channels, uint32_t buffer_size)
Validates the number of channels and resizes buffers if necessary.
~TokenUnitManager()=default
ProcessingToken m_default_graphics_token
Default graphics processing token.
Token-scoped unit storage and lifecycle management.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
std::function< void(std::shared_ptr< RootGraphicsBuffer > &, uint32_t)> RootGraphicsProcessingFunction
std::function< void(std::vector< std::shared_ptr< RootAudioBuffer > > &, uint32_t)> RootAudioProcessingFunction
std::vector< std::shared_ptr< BufferProcessingChain > > processing_chains
std::vector< std::shared_ptr< RootAudioBuffer > > root_buffers
void resize_buffers(uint32_t new_buffer_size)
RootAudioProcessingFunction custom_processor
std::shared_ptr< RootAudioBuffer > get_buffer(uint32_t channel) const
void resize_channels(uint32_t new_count, uint32_t new_buffer_size, ProcessingToken token)
std::shared_ptr< BufferProcessingChain > get_chain(uint32_t channel) const
Represents a root audio unit containing buffers and processing chains for multiple channels.
std::shared_ptr< RootGraphicsBuffer > root_buffer
std::shared_ptr< RootGraphicsBuffer > get_buffer() const
std::shared_ptr< BufferProcessingChain > processing_chain
std::shared_ptr< BufferProcessingChain > get_chain() const
RootGraphicsProcessingFunction custom_processor
Represents a root graphics unit containing a buffer and processing chain.