RADLib
RADical C++ application framework
RADDsp::FftPlan Class Reference

Reusable power-of-two complex FFT plan with cached bit-reversal and twiddle factors. More...

#include <RADDsp.h>

Public Member Functions

 FftPlan ()=default
 Creates an empty invalid plan. More...
 
 FftPlan (size_t size)
 Creates a plan for size when size is a non-zero power of two. More...
 
bool reset (size_t size)
 Rebuilds the plan and returns false for zero or non-power-of-two sizes. More...
 
size_t size () const
 Returns the FFT length owned by this plan. More...
 
bool valid () const
 Returns true when the plan has a non-zero power-of-two size. More...
 
bool transformInPlace (std::vector< ComplexSample > &samples, bool inverse=false) const
 Transforms samples in place. Returns false if the plan or sample count is invalid. More...
 
bool transform (const std::vector< ComplexSample > &input, std::vector< ComplexSample > &output, bool inverse=false) const
 Transforms input into output. Returns false if the plan or sample count is invalid. More...
 
std::vector< ComplexSampletransform (const std::vector< ComplexSample > &input, bool inverse=false) const
 Transforms input and returns an empty vector if the plan or sample count is invalid. More...
 
bool transformManyInPlace (std::vector< std::vector< ComplexSample >> &frames, bool inverse=false) const
 Transforms many equal-sized frames in place. Returns false if any frame has the wrong size. More...
 
bool transformMany (const std::vector< std::vector< ComplexSample >> &inputs, std::vector< std::vector< ComplexSample >> &outputs, bool inverse=false) const
 Transforms many equal-sized frames. Returns false if any frame has the wrong size. More...
 
std::vector< std::vector< ComplexSample > > transformMany (const std::vector< std::vector< ComplexSample >> &inputs, bool inverse=false) const
 Transforms many equal-sized frames, returning an empty vector on invalid input. More...
 
bool transformFramesInPlace (std::vector< ComplexSample > &frames, size_t frameCount, bool inverse=false) const
 Transforms frameCount contiguous frames of size() in place. More...
 
bool transformFrames (const std::vector< ComplexSample > &input, size_t frameCount, std::vector< ComplexSample > &output, bool inverse=false) const
 Transforms frameCount contiguous frames of size(). Returns false on invalid sizes. More...
 
std::vector< ComplexSampletransformFrames (const std::vector< ComplexSample > &input, size_t frameCount, bool inverse=false) const
 Transforms frameCount contiguous frames, returning an empty vector on invalid input. More...
 

Detailed Description

Reusable power-of-two complex FFT plan with cached bit-reversal and twiddle factors.

Constructor & Destructor Documentation

◆ FftPlan() [1/2]

RADDsp::FftPlan::FftPlan ( )
default

Creates an empty invalid plan.

◆ FftPlan() [2/2]

RADDsp::FftPlan::FftPlan ( size_t  size)
explicit

Creates a plan for size when size is a non-zero power of two.

Member Function Documentation

◆ reset()

bool RADDsp::FftPlan::reset ( size_t  size)

Rebuilds the plan and returns false for zero or non-power-of-two sizes.

◆ size()

size_t RADDsp::FftPlan::size ( ) const

Returns the FFT length owned by this plan.

◆ transform() [1/2]

std::vector<ComplexSample> RADDsp::FftPlan::transform ( const std::vector< ComplexSample > &  input,
bool  inverse = false 
) const

Transforms input and returns an empty vector if the plan or sample count is invalid.

◆ transform() [2/2]

bool RADDsp::FftPlan::transform ( const std::vector< ComplexSample > &  input,
std::vector< ComplexSample > &  output,
bool  inverse = false 
) const

Transforms input into output. Returns false if the plan or sample count is invalid.

◆ transformFrames() [1/2]

std::vector<ComplexSample> RADDsp::FftPlan::transformFrames ( const std::vector< ComplexSample > &  input,
size_t  frameCount,
bool  inverse = false 
) const

Transforms frameCount contiguous frames, returning an empty vector on invalid input.

◆ transformFrames() [2/2]

bool RADDsp::FftPlan::transformFrames ( const std::vector< ComplexSample > &  input,
size_t  frameCount,
std::vector< ComplexSample > &  output,
bool  inverse = false 
) const

Transforms frameCount contiguous frames of size(). Returns false on invalid sizes.

◆ transformFramesInPlace()

bool RADDsp::FftPlan::transformFramesInPlace ( std::vector< ComplexSample > &  frames,
size_t  frameCount,
bool  inverse = false 
) const

Transforms frameCount contiguous frames of size() in place.

◆ transformInPlace()

bool RADDsp::FftPlan::transformInPlace ( std::vector< ComplexSample > &  samples,
bool  inverse = false 
) const

Transforms samples in place. Returns false if the plan or sample count is invalid.

◆ transformMany() [1/2]

std::vector<std::vector<ComplexSample> > RADDsp::FftPlan::transformMany ( const std::vector< std::vector< ComplexSample >> &  inputs,
bool  inverse = false 
) const

Transforms many equal-sized frames, returning an empty vector on invalid input.

◆ transformMany() [2/2]

bool RADDsp::FftPlan::transformMany ( const std::vector< std::vector< ComplexSample >> &  inputs,
std::vector< std::vector< ComplexSample >> &  outputs,
bool  inverse = false 
) const

Transforms many equal-sized frames. Returns false if any frame has the wrong size.

◆ transformManyInPlace()

bool RADDsp::FftPlan::transformManyInPlace ( std::vector< std::vector< ComplexSample >> &  frames,
bool  inverse = false 
) const

Transforms many equal-sized frames in place. Returns false if any frame has the wrong size.

◆ valid()

bool RADDsp::FftPlan::valid ( ) const

Returns true when the plan has a non-zero power-of-two size.


The documentation for this class was generated from the following file: