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

◆ transform_convolve_with_fir() [1/2]

template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_convolve_with_fir ( DataType &  input,
const std::vector< double > &  impulse_response 
)

Direct convolution using existing FIR filter infrastructure (IN-PLACE) This leverages the existing, well-tested filter implementation.

Template Parameters
DataTypeOperationReadyData type
Parameters
inputInput data - WILL BE MODIFIED
impulse_responseImpulse response for convolution
Returns
Convolved data

Definition at line 79 of file ConvolutionHelper.hpp.

80{
81 auto [target_data, structure_info] = OperationHelper::extract_structured_double(input);
82
83 for (auto& span : target_data) {
84 auto fir_filter = std::make_shared<Nodes::Filters::FIR>(nullptr, impulse_response);
85 std::vector<double> output;
86 output.reserve(span.size());
87 for (double sample : span) {
88 output.push_back(fir_filter->process_sample(sample));
89 }
90 std::copy(output.begin(), output.end(), span.begin());
91 }
92
93 auto reconstructed_data = target_data
94 | std::views::transform([](const auto& span) {
95 return std::vector<double>(span.begin(), span.end());
96 })
97 | std::ranges::to<std::vector>();
98
99 return OperationHelper::reconstruct_from_double<DataType>(reconstructed_data, structure_info);
100}

References MayaFlux::Yantra::OperationHelper::extract_structured_double().

+ Here is the call graph for this function: