00001 /*************************************************************************** 00002 libvorbisfilewavedata.h - description 00003 ------------------- 00004 begin : Wed Dec 18 2002 00005 copyright : (C) 2002 by Peter Eschler 00006 email : eschler@users.sourceforge.net 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU Library General Public License as * 00013 * published by the Free Software Foundation; either version 2 of the * 00014 * License, or (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef QwavLIBVORBISFILEWAVEDATA_H 00019 #define QwavLIBVORBISFILEWAVEDATA_H 00020 00021 00022 //--------------------------------------------------------------------------- 00023 // Includes: project 00024 //--------------------------------------------------------------------------- 00025 00026 #include "qwavdefines.h" 00027 #include "qwavwavedatainterface.h" 00028 00029 Qwav_BEGIN_NAMESPACE 00030 00031 //--------------------------------------------------------------------------- 00032 // Class: QwavLibVorbisWaveData 00033 //--------------------------------------------------------------------------- 00034 00041 class QWAV_EXPORTIMPORT QwavVorbisWaveData : public QwavWaveDataInterface 00042 { 00043 00044 public: 00045 QwavVorbisWaveData(); 00046 QwavVorbisWaveData(const string& filename) 00047 throw(FileOpenError, FileReadError); 00048 00049 virtual ~QwavVorbisWaveData(); 00050 00051 inline float sampleRate (void) const; 00052 inline long nrOfSamples (void) const; 00053 inline uint nrOfChannels(void) const; 00054 inline const Float& operator[] (uint index) const; 00055 // inline QwavPeakVector& getPeaks (void); 00056 00057 bool readFile (const string& filename ) 00058 throw(FileOpenError, FileReadError); 00059 00060 bool writeFile(const string& filename) 00061 throw(FileOpenError,FileReadError); 00062 00063 QwavPeakInfo getPeak(QwavPeakInterpolator* s, 00064 int pixel, 00065 int nPixels, 00066 Float zoomFac=1.0, 00067 uint channel=1) const; 00068 00069 inline bool isOpen() const; 00070 00071 protected: 00075 QwavVorbisWaveData(const QwavVorbisWaveData&); 00076 00080 const QwavVorbisWaveData& operator=(const QwavVorbisWaveData&); 00081 00082 private: 00083 float _sampleRate; 00084 int _nrSamples; 00085 int _nrChannels; 00086 00087 bool _isOpen; 00088 00089 Float* _data; 00090 QwavPeakVector _peaks; 00091 }; 00092 00093 00094 //--------------------------------------------------------------------------- 00095 // Method: getSampleRate 00096 //--------------------------------------------------------------------------- 00097 00098 float QwavVorbisWaveData::sampleRate() const 00099 { 00100 return _sampleRate; 00101 } 00102 00103 00104 //--------------------------------------------------------------------------- 00105 // Method: getNrOfSamples 00106 //--------------------------------------------------------------------------- 00107 00108 long QwavVorbisWaveData::nrOfSamples() const 00109 { 00110 return _nrSamples; 00111 } 00112 00113 00114 //--------------------------------------------------------------------------- 00115 // Method: getNrOfChannels 00116 //--------------------------------------------------------------------------- 00117 00118 uint QwavVorbisWaveData::nrOfChannels() const 00119 { 00120 return _nrChannels; 00121 } 00122 00123 //--------------------------------------------------------------------------- 00124 // Method: operator[] 00125 //--------------------------------------------------------------------------- 00126 00140 const Float& QwavVorbisWaveData::operator[] (uint index) const 00141 { 00142 return _data[index]; 00143 } 00144 00145 00146 //--------------------------------------------------------------------------- 00147 // Method: isOpen 00148 //--------------------------------------------------------------------------- 00149 00152 bool QwavVorbisWaveData::isOpen() const 00153 { 00154 return _isOpen; 00155 } 00156 00157 Qwav_END_NAMESPACE 00158 00159 #endif // QwavLIBVORBISFILEWAVEDATA_H