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

◆ pull_input_nodes()

void MayaFlux::Nodes::Generator::Logic::pull_input_nodes ( )
private

Definition at line 384 of file Logic.cpp.

385{
386 if (m_input_buffer.size() < m_input_nodes.size()) {
387 m_input_buffer.resize(m_input_nodes.size(), 0.0);
388 }
389
390 for (size_t i = 0; i < m_input_nodes.size(); ++i) {
391 const auto& node = m_input_nodes[i];
392 atomic_inc_modulator_count(node->m_modulator_count, 1);
393
394 uint32_t state = node->m_state.load();
395 if (state & NodeState::PROCESSED) {
396 m_input_buffer[i] = node->get_last_output();
397 } else {
398 m_input_buffer[i] = node->process_sample(0.0);
400 }
401 }
402}
std::vector< std::shared_ptr< Node > > m_input_nodes
Nodes feeding the input slots in parallel input mode.
Definition Logic.hpp:714
std::vector< double > m_input_buffer
Definition Logic.hpp:712
@ PROCESSED
Node has been processed this cycle.
Definition NodeSpec.hpp:49
void atomic_inc_modulator_count(std::atomic< uint32_t > &count, int amount)
Atomically increments the modulator count by a specified amount.
void atomic_add_flag(std::atomic< NodeState > &state, NodeState flag)
Atomically adds a flag to a node state.

References MayaFlux::Nodes::atomic_add_flag(), MayaFlux::Nodes::atomic_inc_modulator_count(), m_input_buffer, m_input_nodes, and MayaFlux::Nodes::PROCESSED.

Referenced by process_sample().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: