comparison 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
comparison
equal deleted inserted replaced
1324:d4a28d1479a8 1527:710e6250a401
20 #include "DenseTimeValueModel.h" 20 #include "DenseTimeValueModel.h"
21 21
22 #include "base/Window.h" 22 #include "base/Window.h"
23 23
24 #include <bqfft/FFT.h> 24 #include <bqfft/FFT.h>
25 #include <bqvec/Allocators.h>
25 26
26 #include <set> 27 #include <set>
27 #include <vector> 28 #include <vector>
28 #include <complex> 29 #include <complex>
29 #include <deque>
30 30
31 /** 31 /**
32 * An implementation of DenseThreeDimensionalModel that makes FFT data 32 * An implementation of DenseThreeDimensionalModel that makes FFT data
33 * derived from a DenseTimeValueModel available as a generic data 33 * derived from a DenseTimeValueModel available as a generic data
34 * grid. 34 * grid.
165 startFrame -= m_windowSize / 2; 165 startFrame -= m_windowSize / 2;
166 endFrame -= m_windowSize / 2; 166 endFrame -= m_windowSize / 2;
167 return { startFrame, endFrame }; 167 return { startFrame, endFrame };
168 } 168 }
169 169
170 std::vector<std::complex<float> > getFFTColumn(int column) const; 170 typedef std::vector<float, breakfastquay::StlAllocator<float>> fvec;
171 std::vector<float> getSourceSamples(int column) const; 171 typedef std::vector<std::complex<float>,
172 std::vector<float> getSourceData(std::pair<sv_frame_t, sv_frame_t>) const; 172 breakfastquay::StlAllocator<std::complex<float>>> cvec;
173 std::vector<float> getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const; 173
174 const cvec &getFFTColumn(int column) const; // returns ref for immediate use only
175 fvec getSourceSamples(int column) const;
176 fvec getSourceData(std::pair<sv_frame_t, sv_frame_t>) const;
177 fvec getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const;
174 178
175 struct SavedSourceData { 179 struct SavedSourceData {
176 std::pair<sv_frame_t, sv_frame_t> range; 180 std::pair<sv_frame_t, sv_frame_t> range;
177 std::vector<float> data; 181 fvec data;
178 }; 182 };
179 mutable SavedSourceData m_savedData; 183 mutable SavedSourceData m_savedData;
180 184
181 struct SavedColumn { 185 struct SavedColumn {
182 int n; 186 int n;
183 std::vector<std::complex<float> > col; 187 cvec col;
184 }; 188 };
185 mutable std::deque<SavedColumn> m_cached; 189 mutable std::vector<SavedColumn> m_cached;
190 mutable size_t m_cacheWriteIndex;
186 size_t m_cacheSize; 191 size_t m_cacheSize;
187 }; 192 };
188 193
189 #endif 194 #endif