diff data/model/FFTModel.h @ 1527:710e6250a401 zoom

Merge from default branch
author Chris Cannam
date Mon, 17 Sep 2018 13:51:14 +0100
parents fad8f533ca13
children 0f62bce0f0be
line wrap: on
line diff
--- a/data/model/FFTModel.h	Mon Dec 12 15:18:52 2016 +0000
+++ b/data/model/FFTModel.h	Mon Sep 17 13:51:14 2018 +0100
@@ -22,11 +22,11 @@
 #include "base/Window.h"
 
 #include <bqfft/FFT.h>
+#include <bqvec/Allocators.h>
 
 #include <set>
 #include <vector>
 #include <complex>
-#include <deque>
 
 /**
  * An implementation of DenseThreeDimensionalModel that makes FFT data
@@ -167,22 +167,27 @@
         return { startFrame, endFrame };
     }
 
-    std::vector<std::complex<float> > getFFTColumn(int column) const;
-    std::vector<float> getSourceSamples(int column) const;
-    std::vector<float> getSourceData(std::pair<sv_frame_t, sv_frame_t>) const;
-    std::vector<float> getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const;
+    typedef std::vector<float, breakfastquay::StlAllocator<float>> fvec;
+    typedef std::vector<std::complex<float>,
+                        breakfastquay::StlAllocator<std::complex<float>>> cvec;
+    
+    const cvec &getFFTColumn(int column) const; // returns ref for immediate use only
+    fvec getSourceSamples(int column) const;
+    fvec getSourceData(std::pair<sv_frame_t, sv_frame_t>) const;
+    fvec getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const;
 
     struct SavedSourceData {
         std::pair<sv_frame_t, sv_frame_t> range;
-        std::vector<float> data;
+        fvec data;
     };
     mutable SavedSourceData m_savedData;
-    
+
     struct SavedColumn {
         int n;
-        std::vector<std::complex<float> > col;
+        cvec col;
     };
-    mutable std::deque<SavedColumn> m_cached;
+    mutable std::vector<SavedColumn> m_cached;
+    mutable size_t m_cacheWriteIndex;
     size_t m_cacheSize;
 };