Mercurial > hg > svcore
diff data/model/ReadOnlyWaveFileModel.h @ 1527:710e6250a401 zoom
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 17 Sep 2018 13:51:14 +0100 |
parents | b7042aaecebe |
children | d93e34684da7 |
line wrap: on
line diff
--- a/data/model/ReadOnlyWaveFileModel.h Mon Dec 12 15:18:52 2016 +0000 +++ b/data/model/ReadOnlyWaveFileModel.h Mon Sep 17 13:51:14 2018 +0100 @@ -36,8 +36,20 @@ Q_OBJECT public: + /** + * Construct a WaveFileModel from a source path and optional + * resampling target rate + */ ReadOnlyWaveFileModel(FileSource source, sv_samplerate_t targetRate = 0); + + /** + * Construct a WaveFileModel from a source path using an existing + * AudioFileReader. The model does not take ownership of the + * AudioFileReader, which remains managed by the caller and must + * outlive the model. + */ ReadOnlyWaveFileModel(FileSource source, AudioFileReader *reader); + ~ReadOnlyWaveFileModel(); bool isOK() const; @@ -64,9 +76,9 @@ void setStartFrame(sv_frame_t startFrame) { m_startFrame = startFrame; } - virtual std::vector<float> getData(int channel, sv_frame_t start, sv_frame_t count) const; + virtual floatvec_t getData(int channel, sv_frame_t start, sv_frame_t count) const; - virtual std::vector<std::vector<float>> getMultiChannelData(int fromchannel, int tochannel, sv_frame_t start, sv_frame_t count) const; + virtual std::vector<floatvec_t> getMultiChannelData(int fromchannel, int tochannel, sv_frame_t start, sv_frame_t count) const; virtual int getSummaryBlockSize(int desired) const; @@ -93,15 +105,15 @@ { public: RangeCacheFillThread(ReadOnlyWaveFileModel &model) : - m_model(model), m_fillExtent(0), + m_model(model), m_fillExtent(0), m_frameCount(model.getFrameCount()) { } - sv_frame_t getFillExtent() const { return m_fillExtent; } + sv_frame_t getFillExtent() const { return m_fillExtent; } virtual void run(); protected: ReadOnlyWaveFileModel &m_model; - sv_frame_t m_fillExtent; + sv_frame_t m_fillExtent; sv_frame_t m_frameCount; }; @@ -122,7 +134,7 @@ bool m_exiting; static PowerOfSqrtTwoZoomConstraint m_zoomConstraint; - mutable std::vector<float> m_directRead; + mutable floatvec_t m_directRead; mutable sv_frame_t m_lastDirectReadStart; mutable sv_frame_t m_lastDirectReadCount; mutable QMutex m_directReadMutex;