Template Class FFTPlan

Class Documentation

template<typename Real>
class ear::FFTPlan

Plan for performing an FFT of a particular size/layout/type; allocated by calling FFTImpl::plan.

This is not mutated when transform_* are called, so one plan may be shared between threads.

Public Types

using Complex = std::complex<Real>

Public Functions

virtual void transform_forward(Real *input, Complex *output, FFTWorkBuf &workbuf) const = 0

Execute an r2c forwards transform.

Parameters
  • input – n_fft input samples

  • output – n_fft/2+1 output samples containing the first half of the complex frequency components without any packing.

  • workbuf – temporary buffers allocated with alloc_workbuf

virtual void transform_reverse(Complex *input, Real *output, FFTWorkBuf &workbuf) const = 0

Execute an c2r inverse transform.

Parameters
  • input – n_fft/2+1 input samples, in the same format as given by transform_forward

  • output – n_fft output samples

  • workbuf – temporary buffers allocated with alloc_workbuf

virtual std::unique_ptr<FFTWorkBuf> alloc_workbuf() const = 0

allocate temporary buffers to be used with transform_*