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

Top-level aggregation buffer for computational data streams. More...

#include <RootAudioBuffer.hpp>

+ Inheritance diagram for MayaFlux::Buffers::RootAudioBuffer:
+ Collaboration diagram for MayaFlux::Buffers::RootAudioBuffer:

Public Member Functions

 RootAudioBuffer (uint32_t channel_id, uint32_t num_samples=512)
 Creates a new root aggregation buffer for a channel.
 
void initialize ()
 
 ~RootAudioBuffer () override=default
 Virtual destructor for proper resource management.
 
virtual void process_default () override
 Processes this buffer using its default aggregation processor.
 
virtual void resize (uint32_t num_samples) override
 Resizes this buffer and all tributary buffers.
 
void set_node_output (const std::vector< double > &data)
 Sets direct node network output data for this buffer.
 
const std::vector< double > & get_node_output () const
 Gets the current node network output data.
 
bool has_node_output () const
 Checks if this buffer has node network output data.
 
virtual void set_token_active (bool active) override
 Activates/deactivates processing for the current token.
 
virtual bool is_token_active () const override
 Checks if the buffer is active for its assigned token.
 
- Public Member Functions inherited from MayaFlux::Buffers::RootBuffer< AudioBuffer >
virtual void add_child_buffer (std::shared_ptr< AudioBuffer > buffer)
 Adds a tributary buffer to this root buffer.
 
virtual bool try_add_child_buffer (std::shared_ptr< AudioBuffer > buffer, std::string *rejection_reason=nullptr)
 Attempts to add a child buffer without throwing exceptions.
 
virtual void remove_child_buffer (std::shared_ptr< AudioBuffer > buffer)
 Removes a tributary buffer from this root buffer.
 
size_t get_num_children () const
 Gets the number of tributary buffers in the aggregation hierarchy.
 
const std::vector< std::shared_ptr< AudioBuffer > > & get_child_buffers () const
 Gets all tributary buffers in the aggregation hierarchy.
 
void clear () override
 Resets all data values in this buffer and its tributaries.
 
virtual void set_processing_rate_hint (uint32_t tick_rate)
 Sets processing rate hint for the buffer.
 
virtual uint32_t get_processing_rate_hint () const
 Gets the processing rate hint.
 
virtual void enable_cross_modal_sharing (bool enabled)
 Enables cross-modal data sharing.
 
virtual bool is_cross_modal_sharing_enabled () const
 Checks if cross-modal sharing is enabled.
 
bool is_buffer_acceptable (std::shared_ptr< AudioBuffer > buffer, std::string *rejection_reason=nullptr) const
 Validates if a buffer is acceptable based on current token enforcement strategy.
 
bool has_pending_operations () const
 
- Public Member Functions inherited from MayaFlux::Buffers::AudioBuffer
 AudioBuffer ()
 Creates a new uninitialized audio buffer.
 
 AudioBuffer (uint32_t channel_id, uint32_t num_samples=512)
 Creates a new audio buffer with specified channel and capacity.
 
virtual ~AudioBuffer () override=default
 Virtual destructor for proper resource management.
 
virtual void setup (uint32_t channel, uint32_t num_samples)
 Initializes the audio buffer with specified channel and capacity.
 
virtual uint32_t get_num_samples () const
 Gets the current capacity of the audio buffer.
 
virtual std::vector< double > & get_data ()
 Gets mutable access to the buffer's underlying audio data.
 
virtual const std::vector< double > & get_data () const
 Gets read-only access to the buffer's underlying audio data.
 
virtual uint32_t get_channel_id () const
 Gets the audio channel identifier for this buffer.
 
void set_channel_id (uint32_t id)
 Sets the audio channel identifier for this buffer.
 
virtual void set_num_samples (uint32_t num_samples)
 Sets the capacity of the audio buffer.
 
virtual void set_default_processor (std::shared_ptr< BufferProcessor > processor) override
 Sets the default audio transformation processor for this buffer.
 
virtual std::shared_ptr< BufferProcessorget_default_processor () const override
 Gets the current default audio transformation processor.
 
virtual std::shared_ptr< BufferProcessingChainget_processing_chain () override
 Gets the audio transformation chain attached to this buffer.
 
virtual void set_processing_chain (std::shared_ptr< BufferProcessingChain > chain, bool force=false) override
 Sets the audio transformation chain for this buffer.
 
virtual double & get_sample (uint32_t index)
 Gets a reference to a specific audio sample in the buffer.
 
virtual bool has_data_for_cycle () const override
 Checks if the audio buffer has data for the current processing cycle.
 
virtual bool needs_removal () const override
 Checks if the buffer should be removed from the processing chain This is relevant when using SignalSourceContainers.
 
virtual void mark_for_processing (bool has_data) override
 Marks the audio buffer for processing in the current cycle.
 
virtual void mark_for_removal () override
 Marks the audio buffer for removal from processing chains.
 
virtual void enforce_default_processing (bool should_process) override
 Controls whether the audio buffer should use default processing.
 
virtual bool needs_default_processing () override
 Checks if the audio buffer should undergo default processing.
 
bool try_acquire_processing () override
 Attempts to acquire processing rights for the buffer.
 
void release_processing () override
 Releases processing rights for the buffer.
 
bool is_processing () const override
 Checks if the buffer is currently being processed.
 
virtual std::shared_ptr< AudioBufferclone_to (uint32_t channel)
 Creates a clone of this audio buffer for a specific channel.
 
std::shared_ptr< Bufferclone_to (uint8_t dest_desc) override
 Creates a clone of this buffer for a specific channel or usage enum.
 
virtual bool read_once (std::shared_ptr< AudioBuffer > buffer, bool force=false)
 Reads audio data into the buffer from the audio backend.
 
void force_internal_usage (bool internal) override
 Marks the buffer as internal-only, preventing root aggregation.
 
bool is_internal_only () const override
 Checks if the buffer is marked as internal-only.
 
- Public Member Functions inherited from MayaFlux::Buffers::Buffer
virtual ~Buffer ()=default
 Virtual destructor for proper resource management.
 

Protected Member Functions

virtual std::shared_ptr< BufferProcessorcreate_default_processor () override
 Creates the default processor for this buffer type.
 
- Protected Member Functions inherited from MayaFlux::Buffers::RootBuffer< AudioBuffer >
void add_child_buffer_direct (std::shared_ptr< AudioBuffer > buffer)
 
void remove_child_buffer_direct (std::shared_ptr< AudioBuffer > buffer)
 
void process_pending_buffer_operations ()
 Process pending operations - call this at start of processing cycles.
 

Private Attributes

std::vector< double > m_node_output
 Data received directly from computational node networks.
 
bool m_has_node_output
 Flag indicating if node network output data is present.
 
bool m_token_active
 Flag indicating if this buffer is active for token processing.
 

Additional Inherited Members

- Protected Attributes inherited from MayaFlux::Buffers::RootBuffer< AudioBuffer >
std::vector< std::shared_ptr< AudioBuffer > > m_child_buffers
 Vector of tributary buffers that contribute to this root buffer.
 
uint32_t m_processing_rate_hint
 Processing rate hint for this buffer.
 
bool m_cross_modal_sharing
 Whether this buffer allows cross-modal data sharing.
 
TokenEnforcementStrategy m_token_enforcement_strategy
 Current token enforcement strategy for this root buffer.
 
ProcessingToken m_preferred_processing_token
 Preferred processing token for this root buffer.
 
std::atomic< uint32_t > m_pending_count
 
struct MayaFlux::Buffers::RootBuffer::PendingBufferOp m_pending_ops [MAX_PENDING]
 
- Protected Attributes inherited from MayaFlux::Buffers::AudioBuffer
uint32_t m_channel_id
 Audio channel identifier for this buffer.
 
uint32_t m_num_samples
 Capacity of the buffer in audio samples.
 
std::vector< double > m_data
 Vector storing the actual double-precision audio sample data.
 
std::shared_ptr< BufferProcessorm_default_processor
 Default audio transformation processor for this buffer.
 
std::shared_ptr< BufferProcessingChainm_processing_chain
 Audio transformation processing chain for this buffer.
 
bool m_has_data
 Whether the audio buffer has data to process this cycle.
 
bool m_should_remove
 Whether the audio buffer should be removed from processing chains.
 
bool m_process_default
 Whether the audio buffer should be processed using its default processor.
 
- Static Protected Attributes inherited from MayaFlux::Buffers::RootBuffer< AudioBuffer >
static constexpr size_t MAX_PENDING
 

Detailed Description

Top-level aggregation buffer for computational data streams.

RootAudioBuffer serves as the final convergence point for data streams in each channel before output to hardware interfaces. Similar to RootNode in the node system, there is typically one RootAudioBuffer per output channel in a multi-channel system.

Key responsibilities:

  • Aggregating and combining data from multiple tributary buffers
  • Receiving direct output from computational node networks (via set_node_output)
  • Applying final normalization and boundary enforcement to ensure valid output
  • Ensuring thread-safe access to shared data resources

RootAudioBuffer implements a hierarchical data aggregation pattern where multiple computational streams (child buffers and node output) are combined through a configurable mixing algorithm before being transmitted to hardware interfaces.

Definition at line 28 of file RootAudioBuffer.hpp.


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