diff --git a/main.cpp b/main.cpp index 60e30e0..58a372e 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -27,18 +28,35 @@ static int waterfall_height = 700; static unsigned int waterfall_data[1600*700]; static void dsp_thread() { - std::vector frames(6400); + size_t len = 6400; + std::vector frames(len); + + std::vector frames_f(len); + pocketfft::shape_t shape{len}; + pocketfft::stride_t stride(shape.size()); + size_t tmp=sizeof(float); + for (int i=shape.size()-1; i>=0; --i) { + stride[i] = tmp; + tmp *= shape[i]; + }; + pocketfft::shape_t axes; + for(size_t i=0; i> frames_ft(len); while(!terminate_dsp) { - int read_count = snd_pcm_readi(pcm, frames.data(), 6400); + int read_count = snd_pcm_readi(pcm, frames.data(), len); if(read_count < 0) { std::cerr << "read from audio interface failed: " << snd_strerror(read_count) << std::endl; break; } + for(size_t i=0;i guard(waterfall_data_mutex); - std::memmove(&waterfall_data[waterfall_width], &waterfall_data[0], 4*waterfall_width*(waterfall_height - 1)); + std::memmove(&waterfall_data[waterfall_width], &waterfall_data[0], sizeof(int)*waterfall_width*(waterfall_height - 1)); for(int i=0;i