RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### WAV Audio Reader #### 00007 // #### #### 00008 // #### Copyright (C) 1999-2012 by Thomas Dreibholz #### 00009 // #### #### 00010 // #### Contact: #### 00011 // #### EMail: dreibh@iem.uni-due.de #### 00012 // #### WWW: https://www.nntb.no/~dreibh/rtpaudio #### 00013 // #### #### 00014 // #### ---------------------------------------------------------------- #### 00015 // #### #### 00016 // #### This program is free software: you can redistribute it and/or #### 00017 // #### modify it under the terms of the GNU General Public License as #### 00018 // #### published by the Free Software Foundation, either version 3 of #### 00019 // #### the License, or (at your option) any later version. #### 00020 // #### #### 00021 // #### This program is distributed in the hope that it will be useful, #### 00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of #### 00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #### 00024 // #### GNU General Public License for more details. #### 00025 // #### #### 00026 // #### You should have received a copy of the GNU General Public #### 00027 // #### License along with this program. If not, see #### 00028 // #### <http://www.gnu.org/licenses/>. #### 00029 // #### #### 00030 // ########################################################################## 00031 // $Id: wavaudioreader.h 1296 2011-12-19 15:42:30Z dreibh $ 00032 00033 00034 #ifndef WAVAUDIOREADER_H 00035 #define WAVAUDIOREADER_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "audioreaderinterface.h" 00040 #include "audioquality.h" 00041 00042 00050 class WavAudioReader : virtual public AudioReaderInterface, 00051 public AudioQuality 00052 { 00053 // ====== Constructor/Destructor ========================================= 00054 public: 00060 WavAudioReader(const char* name = NULL); 00061 00065 ~WavAudioReader(); 00066 00067 // ====== Initialize ===================================================== 00073 bool openMedia(const char* name); 00074 00080 void closeMedia(); 00081 00087 bool ready() const; 00088 00089 00090 // ====== Input functions ================================================ 00096 void getMediaInfo(MediaInfo& mediaInfo) const; 00097 00103 MediaError getErrorCode() const; 00104 00110 card64 getPosition() const; 00111 00117 card64 getMaxPosition() const; 00118 00124 void setPosition(const card64 position); 00125 00131 cardinal getNextBlock(void* buffer, const cardinal blockSize); 00132 00133 00134 // ====== Private data =================================================== 00135 private: 00136 struct RIFF_Header { 00137 char RIFF[4]; 00138 card32 Length; 00139 char FormatID[4]; 00140 }; 00141 struct RIFF_Chunk { 00142 char ID[4]; 00143 card32 Length; 00144 }; 00145 struct WAVE_Format { 00146 card16 FormatTag; 00147 card16 Channels; 00148 card32 SamplesPerSec; 00149 card32 AvgBytesPerSec; 00150 card16 BlockAlign; 00151 }; 00152 00153 00154 bool getChunk(RIFF_Chunk& chunk); 00155 00156 00157 MediaError Error; 00158 FILE* InputFD; 00159 WAVE_Format Format; 00160 card64 StartPosition; 00161 card64 EndPosition; 00162 card64 Position; 00163 card64 MaxPosition; 00164 }; 00165 00166 00167 #endif