|
MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
|
Token-based multimodal buffer management system for unified data stream processing. More...
#include <BufferManager.hpp>
Collaboration diagram for MayaFlux::Buffers::BufferManager:Public Member Functions | |
| BufferManager (uint32_t default_out_channels=2, uint32_t default_in_channels=0, uint32_t default_buffer_size=512, ProcessingToken default_audio_token=ProcessingToken::AUDIO_BACKEND, ProcessingToken default_graphics_token=ProcessingToken::GRAPHICS_BACKEND) | |
| Creates a new multimodal buffer manager. | |
| ~BufferManager () | |
| void | process_token (ProcessingToken token, uint32_t processing_units) |
| Processes all buffers for a specific token. | |
| void | process_all_tokens () |
| Processes all active tokens with their configured processing units. | |
| void | process_channel (ProcessingToken token, uint32_t channel, uint32_t processing_units, const std::vector< double > &node_output_data={}) |
| Processes a specific channel within a token domain. | |
| std::vector< ProcessingToken > | get_active_tokens () const |
| Gets all currently active processing tokens. | |
| void | register_audio_token_processor (ProcessingToken token, RootAudioProcessingFunction processor) |
| Registers a custom processor for an audio token domain. | |
| ProcessingToken | get_default_audio_token () const |
| Gets the default processing token used by the manager. | |
| std::shared_ptr< RootAudioBuffer > | get_root_audio_buffer (ProcessingToken token, uint32_t channel=0) |
| Gets a root buffer for a specific token and channel (audio-specific due to channels) | |
| std::shared_ptr< RootGraphicsBuffer > | get_root_graphics_buffer (ProcessingToken token) |
| Gets a root graphics buffer for a specific token. | |
| std::vector< double > & | get_buffer_data (ProcessingToken token, uint32_t channel) |
| Gets data from a specific token and channel (audio-specific) | |
| const std::vector< double > & | get_buffer_data (ProcessingToken token, uint32_t channel) const |
| uint32_t | get_num_channels (ProcessingToken token) const |
| Gets the number of channels for a token (audio-specific) | |
| uint32_t | get_buffer_size (ProcessingToken token) const |
| Gets the buffer size for a token. | |
| void | resize_buffers (ProcessingToken token, uint32_t buffer_size) |
| Resizes buffers for a token. | |
| void | ensure_channels (ProcessingToken token, uint32_t channel_count) |
| Ensures minimum number of channels exist for an audio token. | |
| void | validate_num_channels (ProcessingToken token, uint32_t num_channels, uint32_t buffer_size) |
| Validates the number of channels and resizes buffers if necessary (audio-specific) | |
| std::shared_ptr< BufferProcessingChain > | get_processing_chain (ProcessingToken token, uint32_t channel) |
| Gets the processing chain for a token and channel (audio-specific) | |
| std::shared_ptr< BufferProcessingChain > | get_global_processing_chain () |
| Gets the global processing chain (applied to all tokens) | |
| void | add_buffer (const std::shared_ptr< Buffer > &buffer, ProcessingToken token, uint32_t channel=0) |
| Adds a buffer to a token and channel. | |
| void | remove_buffer (const std::shared_ptr< Buffer > &buffer, ProcessingToken token, uint32_t channel=0) |
| Removes a buffer from a token. | |
| const std::vector< std::shared_ptr< AudioBuffer > > & | get_buffers (ProcessingToken token, uint32_t channel) const |
| Gets buffers for a token (audio-specific due to channels) | |
| const std::vector< std::shared_ptr< VKBuffer > > & | get_graphics_buffers (ProcessingToken token) const |
| Gets graphics buffers for a token. | |
| std::vector< std::shared_ptr< VKBuffer > > | get_buffers_by_usage (VKBuffer::Usage usage, ProcessingToken token) const |
| Gets graphics buffers filtered by usage. | |
| template<typename BufferType , typename... Args> | |
| std::shared_ptr< BufferType > | create_audio_buffer (ProcessingToken token, uint32_t channel, Args &&... args) |
| Creates a specialized audio buffer and adds it to the specified token/channel. | |
| template<typename BufferType , typename... Args> | |
| std::shared_ptr< BufferType > | create_graphics_buffer (ProcessingToken token, Args &&... args) |
| Creates a specialized vulkan buffer and adds it to the specified token/channel. | |
| void | add_processor (const std::shared_ptr< BufferProcessor > &processor, const std::shared_ptr< Buffer > &buffer, ProcessingToken token=ProcessingToken::AUDIO_BACKEND) |
| Adds a processor to a buffer. | |
| void | add_processor (const std::shared_ptr< BufferProcessor > &processor, ProcessingToken token, uint32_t channel) |
| Adds a processor to a token and channel (audio-specific) | |
| void | add_processor (const std::shared_ptr< BufferProcessor > &processor, ProcessingToken token) |
| Adds a processor to all channels in a token (audio-specific) | |
| void | remove_processor (const std::shared_ptr< BufferProcessor > &processor, const std::shared_ptr< Buffer > &buffer) |
| Removes a processor from a buffer. | |
| void | remove_processor_from_channel (const std::shared_ptr< BufferProcessor > &processor, ProcessingToken token, uint32_t channel) |
| Removes a processor from a token and channel (audio-specific) | |
| void | remove_processor_from_token (const std::shared_ptr< BufferProcessor > &processor, ProcessingToken token) |
| Removes a processor from all channels in a token (audio-specific) | |
| void | set_final_processor (const std::shared_ptr< BufferProcessor > &processor, ProcessingToken token) |
| Sets a final processor for a token (audio-specific) | |
| std::shared_ptr< BufferProcessor > | attach_quick_process (BufferProcessingFunction processor, const std::shared_ptr< Buffer > &buffer, ProcessingToken token=ProcessingToken::AUDIO_BACKEND) |
| std::shared_ptr< BufferProcessor > | attach_quick_process (BufferProcessingFunction processor, ProcessingToken token, uint32_t channel) |
| std::shared_ptr< BufferProcessor > | attach_quick_process (BufferProcessingFunction processor, ProcessingToken token) |
| void | connect_node_to_channel (const std::shared_ptr< Nodes::Node > &node, ProcessingToken token, uint32_t channel, float mix=0.5F, bool clear_before=false) |
| void | connect_node_to_buffer (const std::shared_ptr< Nodes::Node > &node, const std::shared_ptr< AudioBuffer > &buffer, float mix=0.5F, bool clear_before=true) |
| void | fill_from_interleaved (const double *interleaved_data, uint32_t num_frames, ProcessingToken token, uint32_t num_channels) |
| void | fill_interleaved (double *interleaved_data, uint32_t num_frames, ProcessingToken token, uint32_t num_channels) const |
| std::vector< std::shared_ptr< AudioBuffer > > | clone_buffer_for_channels (const std::shared_ptr< AudioBuffer > &buffer, const std::vector< uint32_t > &channels, ProcessingToken token) |
| void | process_input (double *input_data, uint32_t num_channels, uint32_t num_frames) |
| void | register_input_listener (const std::shared_ptr< AudioBuffer > &buffer, uint32_t channel) |
| void | unregister_input_listener (const std::shared_ptr< AudioBuffer > &buffer, uint32_t channel) |
| bool | supply_buffer_to (const std::shared_ptr< AudioBuffer > &buffer, ProcessingToken token, uint32_t channel, double mix=1.0) |
| bool | remove_supplied_buffer (const std::shared_ptr< AudioBuffer > &buffer, ProcessingToken token, uint32_t channel) |
| void | initialize_buffer_service () |
| void | terminate_active_buffers () |
| Terminates all active buffers, clearing their data. | |
Private Member Functions | |
| void | process_audio_token_default (ProcessingToken token, uint32_t processing_units) |
| void | process_graphics_token_default (ProcessingToken token, uint32_t processing_units) |
Private Attributes | |
| std::unique_ptr< TokenUnitManager > | m_unit_manager |
| Token/unit storage and lifecycle. | |
| std::unique_ptr< BufferAccessControl > | m_access_control |
| Buffer and unit access operations. | |
| std::unique_ptr< BufferProcessingControl > | m_processor_control |
| Processor attachment/removal operations. | |
| std::unique_ptr< BufferInputControl > | m_input_control |
| Audio input management. | |
| std::unique_ptr< BufferSupplyMixing > | m_supply_mixing |
| Buffer supply and mixing operations. | |
| std::shared_ptr< BufferProcessingChain > | m_global_processing_chain |
| Global processing chain applied to all tokens. | |
Token-based multimodal buffer management system for unified data stream processing.
BufferManager serves as the central orchestrator for buffer processing in the MayaFlux engine, implementing a token-based architecture that enables seamless integration of different processing domains while maintaining proven audio processing patterns.
Architecture:
This design scales to new domains without API explosion—just add token support.
Definition at line 36 of file BufferManager.hpp.