#pragma once #include #include #include class FFT { public: FFT(); ~FFT(); void process(stereoSample *frame, double d); outputSample *getData(); bool prepareInput(stereoSample *buffer, uint32_t sampleSize, double scale); double hannWindow[BUFFER_SIZE]{}; int size = BUFFER_SIZE; protected: fftw_complex *m_fftwInputLeft{}; fftw_complex *m_fftwInputRight{}; fftw_complex *m_fftwOutputLeft{}; fftw_complex *m_fftwOutputRight{}; outputSample *m_sample = new outputSample(BUFFER_SIZE); fftw_plan m_fftwPlanLeft{}; fftw_plan m_fftwPlanRight{}; std::mutex m_mtx; size_t m_fftwResults; static double valueToAmp(double value); double times; static double limit; };