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

◆ process_channel()

void MayaFlux::Buffers::BufferManager::process_channel ( ProcessingToken  token,
uint32_t  channel,
uint32_t  processing_units,
const std::vector< double > &  node_output_data = {} 
)

Processes a specific channel within a token domain.

Parameters
tokenProcessing domain
channelChannel index (audio-specific)
processing_unitsNumber of processing units to process
node_output_dataOptional output data from a node

Definition at line 74 of file BufferManager.cpp.

79{
80 if (!m_unit_manager->has_audio_unit(token)) {
81 return;
82 }
83
84 auto& unit = m_unit_manager->get_audio_unit_mutable(token);
85 if (channel >= unit.channel_count) {
86 return;
87 }
88
89 auto root_buffer = unit.get_buffer(channel);
90
91 if (!node_output_data.empty()) {
92 root_buffer->set_node_output(node_output_data);
93 }
94
95 for (auto& child : root_buffer->get_child_buffers()) {
96 if (child->needs_default_processing()) {
97 child->process_default();
98 }
99
100 if (auto processing_chain = child->get_processing_chain()) {
101 if (child->has_data_for_cycle()) {
102 processing_chain->process_complete(child);
103 }
104 }
105 unit.get_chain(channel)->process_complete(child);
106 }
107
108 root_buffer->process_default();
109
110 unit.get_chain(channel)->process(root_buffer);
111
112 m_global_processing_chain->process(root_buffer);
113
114 if (auto chain = root_buffer->get_processing_chain()) {
115 chain->process_final(root_buffer);
116 }
117}
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.

References m_global_processing_chain, and m_unit_manager.

Referenced by process_audio_token_default().

+ Here is the caller graph for this function: