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

◆ BufferManager()

MayaFlux::Buffers::BufferManager::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.

Parameters
default_out_channelsNumber of output channels for the default domain (default: 2)
default_in_channelsNumber of input channels for the default domain (default: 0)
default_buffer_sizeBuffer size for the default domain (default: 512)
default_processing_tokenPrimary processing domain (default: AUDIO_BACKEND)

Definition at line 17 of file BufferManager.cpp.

23 : m_unit_manager(std::make_unique<TokenUnitManager>(default_audio_token, default_graphics_token))
24 , m_access_control(std::make_unique<BufferAccessControl>(*m_unit_manager))
25 , m_processor_control(std::make_unique<BufferProcessingControl>(*m_unit_manager, *m_access_control))
26 , m_input_control(std::make_unique<BufferInputControl>())
27 , m_supply_mixing(std::make_unique<BufferSupplyMixing>(*m_unit_manager, *m_access_control))
28 , m_global_processing_chain(std::make_shared<BufferProcessingChain>())
29{
30 validate_num_channels(default_audio_token, default_out_channels, default_buffer_size);
31
32 if (default_in_channels) {
33 m_input_control->setup_audio_input_buffers(default_in_channels, default_buffer_size);
34 }
35
36 auto& a_unit = m_unit_manager->get_or_create_audio_unit(default_audio_token);
37 if (a_unit.channel_count > 0) {
38 auto limiter = std::make_shared<FinalLimiterProcessor>();
39 m_processor_control->set_audio_final_processor(limiter, default_audio_token);
40 }
41
42 auto& g_unit = m_unit_manager->get_or_create_graphics_unit(default_graphics_token);
43 auto present_processor = std::make_shared<PresentProcessor>();
44 m_processor_control->set_graphics_final_processor(present_processor, default_graphics_token);
45}
std::shared_ptr< BufferProcessingChain > m_global_processing_chain
Global processing chain applied to all tokens.
std::unique_ptr< TokenUnitManager > m_unit_manager
Token/unit storage and lifecycle.
std::unique_ptr< BufferInputControl > m_input_control
Audio input management.
std::unique_ptr< BufferProcessingControl > m_processor_control
Processor attachment/removal operations.
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::unique_ptr< BufferSupplyMixing > m_supply_mixing
Buffer supply and mixing operations.
std::unique_ptr< BufferAccessControl > m_access_control
Buffer and unit access operations.

References m_input_control, m_processor_control, m_unit_manager, and validate_num_channels().

+ Here is the call graph for this function: