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;