comparison data/fft/FFTFileCache.cpp @ 183:146eb9e35baa

* Improve output from Profiler class and make it incur less (no) overhead in release builds with NO_TIMING defined * Fix a lock contention issue in spectrogram * Marginal optimisations elsewhere
author Chris Cannam
date Tue, 10 Oct 2006 14:51:17 +0000
parents b23eea68357e
children 91fdc752e540
comparison
equal deleted inserted replaced
182:f75f8a1cd7b1 183:146eb9e35baa
87 } 87 }
88 88
89 float 89 float
90 FFTFileCache::getMagnitudeAt(size_t x, size_t y) const 90 FFTFileCache::getMagnitudeAt(size_t x, size_t y) const
91 { 91 {
92 Profiler profiler("FFTFileCache::getMagnitudeAt", false);
93
92 float value = 0.f; 94 float value = 0.f;
93 95
94 switch (m_storageType) { 96 switch (m_storageType) {
95 97
96 case Compact: 98 case Compact:
292 return (height * 2 + 1) * width * 294 return (height * 2 + 1) * width *
293 (type == Compact ? sizeof(uint16_t) : sizeof(float)) + 295 (type == Compact ? sizeof(uint16_t) : sizeof(float)) +
294 2 * sizeof(size_t); // matrix file header size 296 2 * sizeof(size_t); // matrix file header size
295 } 297 }
296 298
299 void
300 FFTFileCache::populateReadBuf(size_t x) const
301 {
302 Profiler profiler("FFTFileCache::populateReadBuf", false);
303
304 if (!m_readbuf) {
305 m_readbuf = new char[m_mfc->getHeight() * 2 * m_mfc->getCellSize()];
306 }
307 m_mfc->getColumnAt(x, m_readbuf);
308 if (m_mfc->haveSetColumnAt(x + 1)) {
309 m_mfc->getColumnAt
310 (x + 1, m_readbuf + m_mfc->getCellSize() * m_mfc->getHeight());
311 m_readbufWidth = 2;
312 } else {
313 m_readbufWidth = 1;
314 }
315 m_readbufCol = x;
316 }
317