mirror of
https://github.com/miek/inspectrum.git
synced 2026-03-03 15:04:19 +01:00
26 lines
661 B
C++
26 lines
661 B
C++
#include "fft.h"
|
|
#include "string.h"
|
|
|
|
FFT::FFT(int size)
|
|
{
|
|
fftSize = size;
|
|
|
|
fftwIn = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * fftSize);
|
|
fftwOut = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * fftSize);
|
|
fftwPlan = fftwf_plan_dft_1d(fftSize, fftwIn, fftwOut, FFTW_FORWARD, FFTW_MEASURE);
|
|
}
|
|
|
|
FFT::~FFT()
|
|
{
|
|
if (fftwPlan) fftwf_destroy_plan(fftwPlan);
|
|
if (fftwIn) fftwf_free(fftwIn);
|
|
if (fftwOut) fftwf_free(fftwOut);
|
|
}
|
|
|
|
void FFT::process(void *dest, void *source)
|
|
{
|
|
memcpy(fftwIn, source, fftSize * sizeof(fftwf_complex));
|
|
fftwf_execute(fftwPlan);
|
|
memcpy(dest, fftwOut, fftSize * sizeof(fftwf_complex));
|
|
}
|