14 std::shared_ptr<Buffers::BufferManager> manager,
16 : m_manager(
std::move(manager))
26 std::source_location::current(),
27 "Invalid buffer processing handle: BufferManager is null");
52 uint32_t processing_units,
53 const std::vector<double>& node_data)
61 m_manager->process_input(input_data, num_channels, num_frames);
84 std::shared_ptr<Nodes::NodeGraphManager> manager,
86 : m_manager(
std::move(manager))
112 std::shared_ptr<Vruta::TaskScheduler> task_manager,
114 : m_scheduler(
std::move(task_manager))
119 std::source_location::current(),
120 "TaskSchedulerHandle requires valid TaskScheduler");
140 : m_window_manager(
std::move(window_manager))
160 std::shared_ptr<Buffers::BufferManager> buffer_manager,
161 std::shared_ptr<Nodes::NodeGraphManager> node_manager,
162 std::shared_ptr<Vruta::TaskScheduler> task_scheduler,
164 : buffers(
std::move(buffer_manager), tokens.Buffer)
165 , nodes(
std::move(node_manager), tokens.Node)
166 , tasks(
std::move(task_scheduler), tokens.Task)
173 std::shared_ptr<Buffers::BufferManager> buffer_manager,
174 std::shared_ptr<Nodes::NodeGraphManager> node_manager,
175 std::shared_ptr<Vruta::TaskScheduler> task_scheduler,
176 std::shared_ptr<Core::WindowManager> window_manager,
178 : buffers(
std::move(buffer_manager), tokens.Buffer)
179 , nodes(
std::move(node_manager), tokens.Node)
180 , tasks(
std::move(task_scheduler), tokens.Task)
181 , windows(
std::move(window_manager))
Unified processing architecture for multimodal subsystem coordination.
static MayaFlux::Nodes::ProcessingToken token
std::span< double > write_channel_data(uint32_t channel)
Get write access to channel data with automatic locking.
std::span< const double > read_channel_data(uint32_t channel) const
Get read-only access to channel data.
void process_channel(uint32_t channel, uint32_t processing_units)
Process specific channel.
BufferProcessingHandle(std::shared_ptr< Buffers::BufferManager > manager, Buffers::ProcessingToken token)
Constructs handle for specific buffer manager and token.
void process(uint32_t processing_units)
Process all channels in token domain.
void acquire_write_lock()
void setup_channels(uint32_t num_channels, uint32_t buffer_size)
Configure channel layout for token domain.
void process_channel_with_node_data(uint32_t channel, uint32_t processing_units, const std::vector< double > &node_data)
Process channel with node output data integration.
Buffers::ProcessingToken m_token
std::shared_ptr< Buffers::BufferManager > m_manager
void process_input(double *input_data, uint32_t num_channels, uint32_t num_frames)
@brienf Process Input from backend into buffer manager
void ensure_valid() const
void process(uint32_t num_samples)
Process all nodes in token domain.
std::vector< double > process_channel(uint32_t channel, uint32_t num_samples)
Process nodes for specific channel and return output.
Nodes::ProcessingToken m_token
std::vector< std::vector< double > > process_audio_networks(uint32_t num_samples, uint32_t channel=0)
double process_sample(uint32_t channel)
std::shared_ptr< Nodes::NodeGraphManager > m_manager
NodeProcessingHandle(std::shared_ptr< Nodes::NodeGraphManager > manager, Nodes::ProcessingToken token)
Constructs handle for specific node manager and token.
SubsystemProcessingHandle(std::shared_ptr< Buffers::BufferManager > buffer_manager, std::shared_ptr< Nodes::NodeGraphManager > node_manager, std::shared_ptr< Vruta::TaskScheduler > task_scheduler, SubsystemTokens tokens)
Constructs unified handle with buffer and node managers.
void register_token_processor(Vruta::token_processing_func_t processor)
Register custom processing function for token domain.
void process_buffer_cycle()
Process all tasks scheduled for current buffer cycle.
TaskSchedulerHandle(std::shared_ptr< MayaFlux::Vruta::TaskScheduler > task_manager, MayaFlux::Vruta::ProcessingToken token)
Vruta::ProcessingToken m_token
std::shared_ptr< Vruta::TaskScheduler > m_scheduler
void process(uint64_t processing_units)
Process all tasks in token domain.
void process()
Process window events and frame hooks.
std::shared_ptr< Core::WindowManager > m_window_manager
std::vector< std::shared_ptr< Core::Window > > get_processing_windows() const
Get list of windows that are open and not minimized.
WindowManagerHandle(std::shared_ptr< Core::WindowManager > window_manager)
Constructs handle for specific window manager.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ CoroutineScheduling
Coroutine scheduling and temporal coordination (Vruta::TaskScheduler)
@ Core
Core engine, backend, subsystems.
ProcessingToken
Enumerates the different processing domains for nodes.
std::function< void(const std::vector< std::shared_ptr< Routine > > &, uint64_t)> token_processing_func_t
Function type for processing tasks in a specific token domain.
Processing token configuration for subsystem operation.