Prefer testing the session instead of using a global variable
[ardour.git] / gtk2_ardour / fft.cc
index f78a1e94ad2f1935313765c16e1e67f8bb452388..ec9af2fd3e086faf0fa90b7e605cc27faaf614d8 100644 (file)
@@ -23,6 +23,8 @@
 #include <string.h>
 #include <math.h>
 
+using namespace GTKArdour;
+
 FFT::FFT(uint32_t windowSize)
        : _window_size(windowSize),
          _data_size(_window_size/2),
@@ -46,7 +48,7 @@ FFT::reset()
 {
        memset(_power_at_bin, 0, sizeof(float) * _data_size);
        memset(_phase_at_bin, 0, sizeof(float) * _data_size);
-       
+
        _iterations = 0;
 }
 
@@ -74,11 +76,11 @@ FFT::analyze(ARDOUR::Sample *input, WindowingType windowing_type)
 
 #define Re (_fftOutput[i])
 #define Im (_fftOutput[_window_size-i])
-               for (uint32_t i=1; i < _data_size - 1; i++) { 
+               for (uint32_t i=1; i < _data_size - 1; i++) {
 
                power = (Re * Re) + (Im * Im);
                phase = atanf(Im / Re);
-       
+
                if (Re < 0.0 && Im > 0.0) {
                        phase += M_PI;
                } else if (Re < 0.0 && Im < 0.0) {
@@ -96,7 +98,7 @@ void
 FFT::calculate()
 {
        if (_iterations > 1) {
-               for (uint32_t i=0; i < _data_size - 1; i++) { 
+               for (uint32_t i=0; i < _data_size - 1; i++) {
                        _power_at_bin[i] /= (float)_iterations;
                        _phase_at_bin[i] /= (float)_iterations;
                }
@@ -114,14 +116,14 @@ FFT::get_hann_window()
         _hann_window = (float *) malloc(sizeof(float) * _window_size);
 
        double sum = 0.0;
-        
+
         for (uint32_t i=0; i < _window_size; i++) {
                 _hann_window[i]=0.81f * ( 0.5f - (0.5f * (float) cos(2.0f * M_PI * (float)i / (float)(_window_size))));
                 sum += _hann_window[i];
         }
 
         double isum = 1.0 / sum;
-        
+
         for (uint32_t i=0; i < _window_size; i++) {
                 _hann_window[i] *= isum;
         }
@@ -138,6 +140,6 @@ FFT::~FFT()
        fftwf_destroy_plan(_plan);
        free(_power_at_bin);
        free(_phase_at_bin);
-       free(_fftOutput);
-       free(_fftInput);
+       fftwf_free(_fftOutput);
+       fftwf_free(_fftInput);
 }