EMIPLIB
|
00001 /* 00002 00003 This file is a part of EMIPLIB, the EDM Media over IP Library. 00004 00005 Copyright (C) 2006-2011 Hasselt University - Expertise Centre for 00006 Digital Media (EDM) (http://www.edm.uhasselt.be) 00007 00008 This library is free software; you can redistribute it and/or 00009 modify it under the terms of the GNU Lesser General Public 00010 License as published by the Free Software Foundation; either 00011 version 2.1 of the License, or (at your option) any later version. 00012 00013 This library is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with this library; if not, write to the Free Software 00020 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 00021 USA 00022 00023 */ 00024 00029 #ifndef MIPWAVREADER_H 00030 00031 #define MIPWAVREADER_H 00032 00033 #include "mipconfig.h" 00034 #include "miperrorbase.h" 00035 #include "miptypes.h" 00036 #include <stdio.h> 00037 00039 class EMIPLIB_IMPORTEXPORT MIPWAVReader : public MIPErrorBase 00040 { 00041 public: 00042 MIPWAVReader(); 00043 ~MIPWAVReader(); 00044 00046 bool open(const std::string &fileName); 00047 00049 int getSamplingRate() const { return m_samplingRate; } 00050 00052 int getNumberOfChannels() const { return m_channels; } 00053 00055 int64_t getNumberOfFrames() const { return m_totalFrames; } 00056 00063 bool readFrames(float *pBuffer, int numFrames, int *numFramesRead); 00064 00071 bool readFrames(int16_t *pBuffer, int numFrames, int *numFramesRead); 00072 00074 bool rewind(); 00075 00077 bool close(); 00078 private: 00079 FILE *m_file; 00080 int m_samplingRate; 00081 int m_channels; 00082 int m_frameSize; 00083 int64_t m_framesLeft; 00084 int64_t m_totalFrames; 00085 int m_bytesPerSample; 00086 long m_dataStartPos; 00087 float m_scale; 00088 uint8_t *m_pFrameBuffer; 00089 uint32_t m_negStartVal; 00090 }; 00091 00092 #endif // MIPWAVREADER_H 00093