VulcanoLE/headers/VulcanoLE/Audio/FFT.h

25 lines
596 B
C++

#pragma once
#include <mutex>
#include <fftw3.h>
#include "Types.h"
class FFT {
public:
FFT();
~FFT();
void process(pcm_stereo_sample *pFrame);
outputSample *getData();
bool prepareInput(pcm_stereo_sample *buffer, uint32_t sample_size);
protected:
double *m_fftw_input_left{};
double *m_fftw_input_right{};
fftw_complex *m_fftw_output_left{};
fftw_complex *m_fftw_output_right{};
outputSample *m_sample = new outputSample(FFT_SIZE);
fftw_plan m_fftw_plan_left{};
fftw_plan m_fftw_plan_right{};
std::mutex m_mtx;
size_t m_fftw_results;
};