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

◆ transform_convolve_with_fir() [2/2]

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

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

Template Parameters
DataTypeOperationReadyData type
Parameters
inputInput data - will NOT be modified
impulse_responseImpulse response for convolution
working_bufferBuffer for operations (will be resized if needed)
Returns
Convolved data

Definition at line 112 of file ConvolutionHelper.hpp.

113{
114 auto [target_data, structure_info] = OperationHelper::setup_operation_buffer(input, working_buffer);
115
116 working_buffer.clear();
117 working_buffer.resize(target_data.size());
118
119 for (size_t i = 0; i < target_data.size(); ++i) {
120 auto fir_filter = std::make_shared<Nodes::Filters::FIR>(nullptr, impulse_response);
121 working_buffer[i].reserve(target_data[i].size());
122 for (double sample : target_data[i]) {
123 working_buffer[i].push_back(fir_filter->process_sample(sample));
124 }
125 }
126
127 return OperationHelper::reconstruct_from_double<DataType>(working_buffer, structure_info);
128}

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

+ Here is the call graph for this function: