Mercurial > hg > svcore
diff data/model/WaveFileModel.h @ 300:5877d68815c7
* Change WaveFileModel API from getValues(start,end) to getData(start,count).
It's much less error-prone to pass in frame counts instead of start/end
locations. Should have done this ages ago. This closes #1794563.
* Add option to apply a transform to only the selection region, instead of
the whole audio.
* (to make the above work properly) Add start frame offset to wave models
author | Chris Cannam |
---|---|
date | Mon, 01 Oct 2007 13:48:38 +0000 |
parents | c022976d18e8 |
children | 3a6725f285d6 |
line wrap: on
line diff
--- a/data/model/WaveFileModel.h Fri Sep 28 16:15:06 2007 +0000 +++ b/data/model/WaveFileModel.h Mon Oct 01 13:48:38 2007 +0000 @@ -52,20 +52,22 @@ float getValueMinimum() const { return -1.0f; } float getValueMaximum() const { return 1.0f; } - virtual size_t getStartFrame() const { return 0; } - virtual size_t getEndFrame() const { return getFrameCount(); } + virtual size_t getStartFrame() const { return m_startFrame; } + virtual size_t getEndFrame() const { return m_startFrame + getFrameCount(); } - virtual size_t getValues(int channel, size_t start, size_t end, - float *buffer) const; + void setStartFrame(size_t startFrame) { m_startFrame = startFrame; } - virtual size_t getValues(int channel, size_t start, size_t end, - double *buffer) const; + virtual size_t getData(int channel, size_t start, size_t count, + float *buffer) const; - virtual void getRanges(size_t channel, size_t start, size_t end, - RangeBlock &ranges, - size_t &blockSize) const; + virtual size_t getData(int channel, size_t start, size_t count, + double *buffer) const; - virtual Range getRange(size_t channel, size_t start, size_t end) const; + virtual void getSummaries(size_t channel, size_t start, size_t count, + RangeBlock &ranges, + size_t &blockSize) const; + + virtual Range getSummary(size_t channel, size_t start, size_t count) const; virtual void toXml(QTextStream &out, QString indent = "", @@ -105,6 +107,8 @@ AudioFileReader *m_reader; bool m_myReader; + size_t m_startFrame; + RangeBlock m_cache[2]; // interleaved at two base resolutions mutable QMutex m_mutex; RangeCacheFillThread *m_fillThread;