comparison data/fileio/AudioFileReader.h @ 1069:32ab6c48efaa

Merge from branch tonioni
author Chris Cannam
date Mon, 20 Apr 2015 09:11:34 +0100
parents 843f67be0ed9
children 4d9816ba0ebe
comparison
equal deleted inserted replaced
1036:682d64f05e72 1069:32ab6c48efaa
16 #ifndef _AUDIO_FILE_READER_H_ 16 #ifndef _AUDIO_FILE_READER_H_
17 #define _AUDIO_FILE_READER_H_ 17 #define _AUDIO_FILE_READER_H_
18 18
19 #include <QString> 19 #include <QString>
20 20
21 #include "base/BaseTypes.h"
21 #include "FileSource.h" 22 #include "FileSource.h"
22 23
23 #include <vector> 24 #include <vector>
24 #include <map> 25 #include <map>
25 26
34 35
35 bool isOK() const { return (m_channelCount > 0); } 36 bool isOK() const { return (m_channelCount > 0); }
36 37
37 virtual QString getError() const { return ""; } 38 virtual QString getError() const { return ""; }
38 39
39 int getFrameCount() const { return m_frameCount; } 40 sv_frame_t getFrameCount() const { return m_frameCount; }
40 int getChannelCount() const { return m_channelCount; } 41 int getChannelCount() const { return m_channelCount; }
41 int getSampleRate() const { return m_sampleRate; } 42 sv_samplerate_t getSampleRate() const { return m_sampleRate; }
42 43
43 virtual int getNativeRate() const { return m_sampleRate; } // if resampled 44 virtual sv_samplerate_t getNativeRate() const { return m_sampleRate; } // if resampled
44 45
45 /** 46 /**
46 * Return the location of the audio data in the reader (as passed 47 * Return the location of the audio data in the reader (as passed
47 * in to the FileSource constructor, for example). 48 * in to the FileSource constructor, for example).
48 */ 49 */
91 * 92 *
92 * The subclass implementations of this function must be 93 * The subclass implementations of this function must be
93 * thread-safe -- that is, safe to call from multiple threads with 94 * thread-safe -- that is, safe to call from multiple threads with
94 * different arguments on the same object at the same time. 95 * different arguments on the same object at the same time.
95 */ 96 */
96 virtual void getInterleavedFrames(int start, int count, 97 virtual SampleBlock getInterleavedFrames(sv_frame_t start, sv_frame_t count) const = 0;
97 SampleBlock &frames) const = 0;
98 98
99 /** 99 /**
100 * Return de-interleaved samples for count frames from index 100 * Return de-interleaved samples for count frames from index
101 * start. Implemented in this class (it calls 101 * start. Implemented in this class (it calls
102 * getInterleavedFrames and de-interleaves). The resulting vector 102 * getInterleavedFrames and de-interleaves). The resulting vector
103 * will contain getChannelCount() sample blocks of count samples 103 * will contain getChannelCount() sample blocks of count samples
104 * each (or fewer if end of file is reached). 104 * each (or fewer if end of file is reached).
105 */ 105 */
106 virtual void getDeInterleavedFrames(int start, int count, 106 virtual std::vector<SampleBlock> getDeInterleavedFrames(sv_frame_t start, sv_frame_t count) const;
107 std::vector<SampleBlock> &frames) const;
108 107
109 // only subclasses that do not know exactly how long the audio 108 // only subclasses that do not know exactly how long the audio
110 // file is until it's been completely decoded should implement this 109 // file is until it's been completely decoded should implement this
111 virtual int getDecodeCompletion() const { return 100; } // % 110 virtual int getDecodeCompletion() const { return 100; } // %
112 111
114 113
115 signals: 114 signals:
116 void frameCountChanged(); 115 void frameCountChanged();
117 116
118 protected: 117 protected:
119 int m_frameCount; 118 sv_frame_t m_frameCount;
120 int m_channelCount; 119 int m_channelCount;
121 int m_sampleRate; 120 sv_samplerate_t m_sampleRate;
122 }; 121 };
123 122
124 #endif 123 #endif