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

◆ convolve()

MAYAFLUX_API std::vector< double > MayaFlux::Kinesis::Discrete::convolve ( std::span< const double >  src,
std::span< const double >  ir 
)

Linear FFT convolution.

Parameters
srcInput signal
irImpulse response
Returns
Convolved output, same length as src

Definition at line 69 of file Convolution.cpp.

70{
71 if (ir.size() == 1) {
72 std::vector<double> out(src.size());
73 const double g = ir[0];
74 std::transform(std::execution::par_unseq, src.begin(), src.end(), out.begin(),
75 [g](double x) { return x * g; });
76 return out;
77 }
78
79 return apply_convolution(src, ir,
80 [](const auto& s, const auto& k, auto& r) {
81 std::transform(std::execution::par_unseq, s.begin(), s.end(), k.begin(), r.begin(),
82 [](const std::complex<double>& a, const std::complex<double>& b) {
83 return a * b;
84 });
85 });
86}
const uint32_t * src
size_t a
size_t b
std::vector< float > * out

References a, apply_convolution(), b, out, and src.

Referenced by MayaFlux::Yantra::ConvolutionTransformer< InputType, OutputType >::transform_implementation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: