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

◆ set_data() [1/4]

void MayaFlux::Buffers::AudioWriteProcessor::set_data ( const Kakshya::DataVariant variant)

Supply data from any DataVariant — converted to double via EigenAccess.

Parameters
variantSource variant. Arithmetic/complex types: converted via EigenAccess::to_vector() (complex uses magnitude). GLM vector/matrix types: converted via EigenAccess::to_matrix(), then flattened column-major: [x0,y0,z0, x1,y1,z1, ...].

EigenAccess::to_matrix() flattens glm types into a components-as-rows MatrixXd. Flatten column-major into a double sequence: [x0,y0,z0, x1,y1,z1, ...]

Map column-major layout directly — Eigen default is column-major.

Arithmetic and complex types: to_vector() handles magnitude for complex.

Definition at line 20 of file AudioWriteProcessor.cpp.

21{
22 const bool is_glm = std::holds_alternative<std::vector<glm::vec2>>(variant)
23 || std::holds_alternative<std::vector<glm::vec3>>(variant)
24 || std::holds_alternative<std::vector<glm::vec4>>(variant)
25 || std::holds_alternative<std::vector<glm::mat4>>(variant);
26
27 if (is_glm) {
28 /** EigenAccess::to_matrix() flattens glm types into a components-as-rows MatrixXd.
29 Flatten column-major into a double sequence: [x0,y0,z0, x1,y1,z1, ...]
30 **/
31 const Eigen::MatrixXd mat = Kakshya::EigenAccess(variant).to_matrix();
32 const Eigen::Index total = mat.size();
33 m_pending.resize(static_cast<size_t>(total));
34 /** Map column-major layout directly — Eigen default is column-major. **/
35 Eigen::Map<Eigen::VectorXd>(m_pending.data(), total) = Eigen::Map<const Eigen::VectorXd>(mat.data(), total);
36 } else {
37 /** Arithmetic and complex types: to_vector() handles magnitude for complex. **/
38 const Eigen::VectorXd vec = Kakshya::EigenAccess(variant).to_vector();
39 m_pending.resize(static_cast<size_t>(vec.size()));
40 Eigen::Map<Eigen::VectorXd>(m_pending.data(), vec.size()) = vec;
41 }
42
43 m_dirty.test_and_set(std::memory_order_release);
44}

References m_dirty, m_pending, MayaFlux::Kakshya::EigenAccess::to_matrix(), and MayaFlux::Kakshya::EigenAccess::to_vector().

+ Here is the call graph for this function: