+float *
+FFT::get_hann_window()
+{
+ if (_hann_window)
+ return _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;
+ }
+
+ return _hann_window;
+}
+