MayaFlux 0.3.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,
uint64_t  default_sample_rate = 48000,
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_sample_rateSample rate for the default domain (default: 48000)
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.

24 : m_unit_manager(std::make_unique<TokenUnitManager>(default_audio_token, default_graphics_token))
25 , m_access_control(std::make_unique<BufferAccessControl>(*m_unit_manager))
26 , m_processor_control(std::make_unique<BufferProcessingControl>(*m_unit_manager, *m_access_control))
27 , m_input_control(std::make_unique<BufferInputControl>())
28 , m_supply_mixing(std::make_unique<BufferSupplyMixing>(*m_unit_manager, *m_access_control))
29 , m_global_processing_chain(std::make_shared<BufferProcessingChain>())
30{
31 s_registered_sample_rate = default_sample_rate;
32 s_preferred_buffer_size = default_buffer_size;
33 validate_num_channels(default_audio_token, default_out_channels, default_buffer_size);
34
35 if (default_in_channels) {
36 m_input_control->setup_audio_input_buffers(default_in_channels, default_buffer_size);
37 }
38
39 auto& a_unit = m_unit_manager->get_or_create_audio_unit(default_audio_token);
40 if (a_unit.channel_count > 0) {
41 auto limiter = std::make_shared<FinalLimiterProcessor>();
42 m_processor_control->set_audio_final_processor(limiter, default_audio_token);
43 }
44
45 auto& g_unit = m_unit_manager->get_or_create_graphics_unit(default_graphics_token);
46 auto present_processor = std::make_shared<PresentProcessor>();
47 m_processor_control->set_graphics_final_processor(present_processor, default_graphics_token);
48}
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.
static uint32_t s_preferred_buffer_size
Global default buffer size.
static uint64_t s_registered_sample_rate
Global default sample rate.

References m_input_control, m_processor_control, m_unit_manager, MayaFlux::Buffers::s_preferred_buffer_size, MayaFlux::Buffers::s_registered_sample_rate, and validate_num_channels().

+ Here is the call graph for this function: