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

◆ process()

void MayaFlux::Nodes::Network::CombineOperator::process ( float  dt)
overridevirtual

Process for one batch cycle.

Parameters
dtTime delta or sample count (operator-specific)

Implements MayaFlux::Nodes::Network::NetworkOperator.

Definition at line 192 of file RelationOperators.cpp.

193{
194 const auto num_frames = static_cast<uint32_t>(frames);
195 auto all = slots();
196
197 const size_t count = std::min(all.size(), m_weights->rows());
198 if (m_values.size() < count) {
199 m_values.resize(count, 0.0);
200 }
201 const std::span<const double> values(m_values.data(), count);
202
203 for (auto& output : m_outputs) {
204 output.m_block.assign(num_frames, 0.0);
205 }
206
207 for (uint32_t frame = 0; frame < num_frames; ++frame) {
208 for (size_t m = 0; m < count; ++m) {
209 m_values[m] = all[m].block.size() > frame ? all[m].block[frame] : all[m].level;
210 }
211
212 for (size_t o = 0; o < m_outputs.size(); ++o) {
213 auto& output = m_outputs[o];
214 if (output.has_combine()) {
216 continue;
217 }
218 double sum = 0.0;
219 for (size_t m = 0; m < count; ++m) {
220 sum += m_values[m] * m_weights->get(m, o);
221 }
222 output.m_block[frame] = sum;
223 }
224 }
225}
std::vector< std::byte > values
Definition VDBWriter.cpp:26
size_t count
std::shared_ptr< Kinesis::Stochastic::Weights > m_weights
std::span< RelationSlot > slots() const noexcept
std::vector< double > sum(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Sum per window.
Definition Analysis.cpp:469

References count, MayaFlux::Nodes::Network::CombineOperator::Output::has_combine(), MayaFlux::Nodes::Network::CombineOperator::Output::m_block, MayaFlux::Nodes::Network::CombineOperator::Output::m_function, m_outputs, m_values, m_weights, output(), MayaFlux::Nodes::Network::RelationOperator::slots(), and values.

+ Here is the call graph for this function: