diff options
Diffstat (limited to 'sdrbase/dsp/fftsengine.cpp')
-rw-r--r-- | sdrbase/dsp/fftsengine.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/sdrbase/dsp/fftsengine.cpp b/sdrbase/dsp/fftsengine.cpp new file mode 100644 index 0000000..e719065 --- /dev/null +++ b/sdrbase/dsp/fftsengine.cpp @@ -0,0 +1,46 @@ +#include <QTime> +#include "dsp/fftsengine.h" + +FFTSEngine::FFTSEngine() : + m_currentplan(ffts_init_1d(1024, 1)) +{ + allocate(4096); +} + +FFTSEngine::~FFTSEngine() +{ + ffts_free(m_currentplan); + free(imem); + free(omem); +} + +void FFTSEngine::allocate(int n) +{ + imem = malloc(n*4*2+15); + iptr = (void*)(((unsigned long)imem+15) & (unsigned long)(~ 0x0F)); + omem = malloc(n*4*2+15); + optr = (void*)(((unsigned long)omem+15) & (unsigned long)(~ 0x0F)); +} + +void FFTSEngine::configure(int n, bool inverse) +{ + ffts_free(m_currentplan); + m_currentplan = ffts_init_1d(n, 1); +} + +void FFTSEngine::transform() +{ + ffts_execute(m_currentplan, iptr, optr); +} + + +Complex* FFTSEngine::in() +{ + return reinterpret_cast<Complex*>(iptr); +} + +Complex* FFTSEngine::out() +{ + return reinterpret_cast<Complex*>(optr); +} + |