MayaFlux 0.5.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,
uint32_t  default_frame_rate = 60,
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_frame_rateFrame rate for the default domain (default: 60)
default_processing_tokenPrimary processing domain (default: AUDIO_BACKEND)

Definition at line 17 of file BufferManager.cpp.

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

+ Here is the call graph for this function: