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

◆ extract_numeric_data() [2/3]

template<typename T >
requires (MultiVariant<T> || EigenMatrixLike<T>)
static std::vector< std::span< double > > MayaFlux::Yantra::OperationHelper::extract_numeric_data ( const T &  compute_data,
bool  needs_processig = false 
)
inlinestatic

extract numeric data from multi-variant types

Template Parameters
TComputeData type
Parameters
compute_dataInput data
Returns
Vector of spans of double data (one per channel/variant)

Definition at line 94 of file OperationHelper.hpp.

95 {
96 if constexpr (std::is_same_v<T, std::vector<Kakshya::DataVariant>>) {
97 return Kakshya::convert_variants<double>(compute_data, s_complex_strategy);
98 }
99
100 if constexpr (std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>) {
101 if (needs_processig) {
102 if (compute_data->get_processing_state() != Kakshya::ProcessingState::PROCESSED) {
103 compute_data->process_default();
104 compute_data->update_processing_state(Kakshya::ProcessingState::PROCESSED);
105 }
106 std::vector<Kakshya::DataVariant> variant = compute_data->get_processed_data();
107 return Kakshya::convert_variants<double>(variant, s_complex_strategy);
108 }
109 std::vector<Kakshya::DataVariant> variant = compute_data->get_data();
110 return Kakshya::convert_variants<double>(variant, s_complex_strategy);
111 }
112
113 if constexpr (is_eigen_matrix_v<T>)
114 return extract_from_eigen_matrix(compute_data);
115
116 return std::vector<std::span<double>> {};
117 }
static std::vector< std::span< double > > extract_from_eigen_matrix(const EigenMatrix &matrix)
Infer data structure from ComputeData type.
static Kakshya::ComplexConversionStrategy s_complex_strategy
@ PROCESSED
Container has completed processing and results are available.