diff plugins/AdaptiveSpectrogram.cpp @ 106:35f2138c6891

* Update to new FFT api
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 13 May 2009 09:19:30 +0000
parents abbc482aaad2
children 0dd97d053053
line wrap: on
line diff
--- a/plugins/AdaptiveSpectrogram.cpp	Tue May 12 21:05:44 2009 +0000
+++ b/plugins/AdaptiveSpectrogram.cpp	Wed May 13 09:19:30 2009 +0000
@@ -42,8 +42,8 @@
     }
     m_cutThreads.clear();
 
-    for (int i = 0; i < m_fftThreads.size(); ++i) {
-        delete m_fftThreads[i];
+    for (FFTMap::iterator i = m_fftThreads.begin(); i != m_fftThreads.end(); ++i) {
+        delete i->second;
     }
     m_fftThreads.clear();
 }
@@ -102,10 +102,6 @@
     if (channels < getMinChannelCount() ||
 	channels > getMaxChannelCount()) return false;
 
-    while (m_fftThreads.size() < (m_n + 1)) {
-        m_fftThreads.push_back(new FFTThread());
-    }
-    
     return true;
 }
 
@@ -229,18 +225,18 @@
     int index = 0;
 
     while (w <= maxwid) {
-        m_fftThreads[index]->calculate(inputBuffers[0], s, index, w, maxwid);
+        if (m_fftThreads.find(w) == m_fftThreads.end()) {
+            m_fftThreads[w] = new FFTThread(w);
+        }
+        m_fftThreads[w]->calculate(inputBuffers[0], s, index, maxwid);
         w *= 2;
         ++index;
     }
 
     w = minwid;
-    index = 0;
-
     while (w <= maxwid) {
-        m_fftThreads[index]->await();
+        m_fftThreads[w]->await();
         w *= 2;
-        ++index;
     }
 
     m_first = true;//!!!