MayaFlux 1.0.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 270 of file OperationHelper.hpp.

271 {
272 if constexpr (std::is_same_v<T, std::vector<Kakshya::DataVariant>>) {
273 return Kakshya::convert_variants<double>(compute_data, s_complex_strategy);
274 }
275
276 if constexpr (std::is_same_v<T, std::shared_ptr<Kakshya::SignalSourceContainer>>) {
277 if (needs_processig) {
278 if (compute_data->get_processing_state() != Kakshya::ProcessingState::PROCESSED) {
279 compute_data->process_default();
280 compute_data->update_processing_state(Kakshya::ProcessingState::PROCESSED);
281 }
282 std::vector<Kakshya::DataVariant> variant = compute_data->get_processed_data();
283 return Kakshya::convert_variants<double>(variant, s_complex_strategy);
284 }
285 std::vector<Kakshya::DataVariant> variant = compute_data->get_data();
286 return Kakshya::convert_variants<double>(variant, s_complex_strategy);
287 }
288
289 if constexpr (is_eigen_matrix_v<T>)
290 return extract_from_eigen_matrix(compute_data);
291
292 return std::vector<std::span<double>> {};
293 }
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.