Multi-backend FFT. More...
#include <fft_backend.hpp>
Public Member Functions | |
| MultiBackendFft (int size, FftBackend backend=FftBackend::auto_) | |
| Construct for a given power-of-2 size. | |
| ~MultiBackendFft () | |
| MultiBackendFft (const MultiBackendFft &)=delete | |
| MultiBackendFft & | operator= (const MultiBackendFft &)=delete |
| MultiBackendFft (MultiBackendFft &&) noexcept | |
| MultiBackendFft & | operator= (MultiBackendFft &&) noexcept |
| int | size () const noexcept |
| FftBackend | backend () const noexcept |
| void | forward (std::complex< float > *data) const |
| Forward complex FFT (in-place). | |
| void | inverse (std::complex< float > *data) const |
| Inverse complex FFT (in-place), normalized by 1/N. | |
Multi-backend FFT.
Pinned at construction to a single backend so the audio thread never has to branch on backend selection during process().
RT contract: construction/destruction and backend availability probes may load libraries, allocate plans, or throw, so run them off the audio thread. forward(), inverse(), size(), and backend() are allocation-free after construction when callers provide a valid buffer.
|
explicit |
Construct for a given power-of-2 size.
backend=auto_ picks via resolve_fft_backend(). Throws std::invalid_argument if size is not a power of two, or std::runtime_error if the requested backend cannot be initialized.
| pulp::signal::MultiBackendFft::~MultiBackendFft | ( | ) |
|
delete |
|
noexcept |
|
noexcept |
| void pulp::signal::MultiBackendFft::forward | ( | std::complex< float > * | data | ) | const |
Forward complex FFT (in-place).
| void pulp::signal::MultiBackendFft::inverse | ( | std::complex< float > * | data | ) | const |
Inverse complex FFT (in-place), normalized by 1/N.
|
delete |
|
noexcept |
|
noexcept |