std1.0.0-beta-7 SafeC docs

std :: dsp::conv_core

Macro CONV_OLA_BATCH

#include <std/dsp/conv_core.h> source

#define CONV_OLA_BATCH 64UL

Two strategies, both on fft_batch / fft_n_ (threaded, vendor FFT if linked):

  • kernel much shorter than the signal: overlap-add. The kernel's spectrum is computed once at a block size N of about 8x the kernel; signal blocks of N - len_h + 1 samples go two to a complex FFT (one in the real part, one in the imaginary part: H is a real signal's spectrum, so the two results come back apart), in batches through fft_batch, multiplied on the pool, transformed back and added in.
  • otherwise one transform of the whole thing, with x and h packed into one complex FFT (x + i h) and separated in the frequency domain:
two transforms instead of three.