MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Buffers::BufferAccessControl Class Reference

Token-aware buffer and unit access patterns. More...

#include <BufferAccessControl.hpp>

+ Collaboration diagram for MayaFlux::Buffers::BufferAccessControl:

Public Member Functions

 BufferAccessControl (TokenUnitManager &unit_manager)
 Creates a new access control handler.
 
 ~BufferAccessControl ()=default
 
std::vector< double > & get_audio_buffer_data (ProcessingToken token, uint32_t channel)
 Gets mutable reference to audio buffer data for a channel.
 
const std::vector< double > & get_audio_buffer_data (ProcessingToken token, uint32_t channel) const
 Gets const reference to audio buffer data for a channel.
 
uint32_t get_num_audio_out_channels (ProcessingToken token) const
 Gets the number of channels for an audio token.
 
uint32_t get_audio_buffer_size (ProcessingToken token) const
 Gets the buffer size for an audio token.
 
void resize_audio_buffers (ProcessingToken token, uint32_t buffer_size)
 Resizes all audio buffers for a token to the specified size.
 
void ensure_audio_channels (ProcessingToken token, uint32_t channel_count)
 Ensures minimum number of audio channels exist for a token.
 
std::shared_ptr< RootAudioBufferget_root_audio_buffer (ProcessingToken token, uint32_t channel)
 Gets the root audio buffer for a specific token and channel.
 
std::shared_ptr< const RootAudioBufferget_root_audio_buffer (ProcessingToken token, uint32_t channel) const
 Gets the root audio buffer for a specific token and channel (const)
 
std::shared_ptr< RootGraphicsBufferget_root_graphics_buffer (ProcessingToken token)
 Gets the root graphics buffer for a specific token.
 
std::shared_ptr< const RootGraphicsBufferget_root_graphics_buffer (ProcessingToken token) const
 Gets the root graphics buffer for a specific token (const)
 
void add_buffer (const std::shared_ptr< Buffer > &buffer, ProcessingToken token, uint32_t channel=0)
 Adds a buffer to a token (dispatches based on token type)
 
void add_audio_buffer (const std::shared_ptr< AudioBuffer > &buffer, ProcessingToken token, uint32_t channel)
 Adds an audio 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 (dispatches based on token type)
 
void remove_audio_buffer (const std::shared_ptr< AudioBuffer > &buffer, ProcessingToken token, uint32_t channel)
 Removes an audio buffer from a token and channel.
 
const std::vector< std::shared_ptr< AudioBuffer > > & get_audio_buffers (ProcessingToken token, uint32_t channel) const
 Gets all audio buffers for a token and channel.
 
void add_graphics_buffer (const std::shared_ptr< Buffer > &buffer, ProcessingToken token)
 Adds a graphics buffer to a token.
 
void remove_graphics_buffer (const std::shared_ptr< Buffer > &buffer, ProcessingToken token)
 Removes a graphics buffer from a token.
 
const std::vector< std::shared_ptr< VKBuffer > > & get_graphics_buffers (ProcessingToken token) const
 Gets all graphics buffers for a token.
 
std::vector< std::shared_ptr< VKBuffer > > get_graphics_buffers_by_usage (VKBuffer::Usage usage, ProcessingToken token) const
 Gets graphics buffers filtered by usage type.
 
std::shared_ptr< BufferProcessingChainget_audio_processing_chain (ProcessingToken token, uint32_t channel)
 Gets the processing chain for an audio token and channel.
 
std::shared_ptr< BufferProcessingChainget_graphics_processing_chain (ProcessingToken token)
 Gets the processing chain for a graphics token.
 
void initialize_buffer_service ()
 Initializes the buffer service for Vulkan operations.
 
void terminate_active_buffers ()
 Terminates all active Audio and VK buffers.
 

Private Attributes

TokenUnitManagerm_unit_manager
 Reference to the token/unit manager for storage operations.
 
Registry::Service::BufferServicem_buffer_service = nullptr
 Vulkan buffer processing context.
 

Detailed Description

Token-aware buffer and unit access patterns.

Manages all operations related to accessing and querying buffer data, units, and processing chains. Works directly with a TokenUnitManager that it holds as a member, providing a cohesive interface for buffer access operations.

Design Principles:

  • Member variable: Holds reference to TokenUnitManager
  • Token-aware: Works with any token's audio or graphics units
  • Domain-agnostic: Doesn't distinguish between audio/graphics at logic level
  • Single responsibility: Only handles access/query/resize, not processing

This class is a facade over the unit manager's storage, providing convenient methods for the common buffer access patterns BufferManager needs.

Definition at line 33 of file BufferAccessControl.hpp.


The documentation for this class was generated from the following files: