comparison data/model/FFTModel.h @ 1837:1b688ab5f1b3

Unify various vectors to our base floatvec_t type; store columns in fft model cache at their desired height so we can return a reference (speeding up the peak-frequency spectrogram in particular)
author Chris Cannam
date Thu, 09 Apr 2020 11:22:55 +0100
parents 21c792334c2e
children
comparison
equal deleted inserted replaced
1835:804dd0c06f0e 1837:1b688ab5f1b3
191 startFrame -= m_windowSize / 2; 191 startFrame -= m_windowSize / 2;
192 endFrame -= m_windowSize / 2; 192 endFrame -= m_windowSize / 2;
193 return { startFrame, endFrame }; 193 return { startFrame, endFrame };
194 } 194 }
195 195
196 typedef std::vector<float, breakfastquay::StlAllocator<float>> fvec; 196 const complexvec_t &getFFTColumn(int column) const;
197 typedef std::vector<std::complex<float>, 197 floatvec_t getSourceSamples(int column) const;
198 breakfastquay::StlAllocator<std::complex<float>>> cvec; 198 floatvec_t getSourceData(std::pair<sv_frame_t, sv_frame_t>) const;
199 199 floatvec_t getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const;
200 cvec getFFTColumn(int column) const;
201 fvec getSourceSamples(int column) const;
202 fvec getSourceData(std::pair<sv_frame_t, sv_frame_t>) const;
203 fvec getSourceDataUncached(std::pair<sv_frame_t, sv_frame_t>) const;
204 200
205 struct SavedSourceData { 201 struct SavedSourceData {
206 std::pair<sv_frame_t, sv_frame_t> range; 202 std::pair<sv_frame_t, sv_frame_t> range;
207 fvec data; 203 floatvec_t data;
208 }; 204 };
209 mutable SavedSourceData m_savedData; 205 mutable SavedSourceData m_savedData;
210 206
211 struct SavedColumn { 207 struct SavedColumn {
212 int n; 208 int n;
213 cvec col; 209 complexvec_t col;
214 }; 210 };
215 mutable std::vector<SavedColumn> m_cached; 211 mutable std::vector<SavedColumn> m_cached;
216 mutable size_t m_cacheWriteIndex; 212 mutable size_t m_cacheWriteIndex;
217 size_t m_cacheSize; 213 size_t m_cacheSize;
214
215 void clearCaches();
218 }; 216 };
219 217
220 #endif 218 #endif