RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### MP3 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: mp3audioreader.h 1304 2011-12-22 06:18:45Z dreibh $ 00032 00033 00034 #ifndef MP3AUDIOREADER_H 00035 #define MP3AUDIOREADER_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "audioreaderinterface.h" 00040 #include "audioquality.h" 00041 00042 00043 // IMPORTANT: PTHREADEDMPEG *must* be defined, if libmpegsound.a is 00044 // compiled with PTHREADEDMPEG set!!! Otherwise initialization 00045 // of Mpegtoraw object will fail with segmentation fault! 00046 #define PTHREADEDMPEG 1 00047 #define HAVE_PTHREAD_H 00048 #include "mpegsound.h" 00049 00050 00058 class MP3AudioReader : public AudioReaderInterface, 00059 public AudioQuality, 00060 public Soundplayer 00061 { 00062 // ====== Constructor/Destructor ========================================= 00063 public: 00069 MP3AudioReader(const char* name = NULL); 00070 00074 ~MP3AudioReader(); 00075 00076 // ====== Initialize ===================================================== 00082 bool openMedia(const char* name); 00083 00089 void closeMedia(); 00090 00096 bool ready() const; 00097 00098 00099 // ====== Input functions ================================================ 00105 void getMediaInfo(MediaInfo& mediaInfo) const; 00106 00112 MediaError getErrorCode() const; 00113 00119 card64 getPosition() const; 00120 00126 card64 getMaxPosition() const; 00127 00133 void setPosition(const card64 position); 00134 00140 cardinal getNextBlock(void* buffer, const cardinal blockSize); 00141 00142 00143 // ====== Soundplayer implementation ===================================== 00144 private: 00145 bool initialize(char* filename); 00146 bool setsoundtype(int stereo, int samplesize, int speed); 00147 void set8bitmode(); 00148 bool putblock(void* buffer, int size); 00149 int putblock_nt(void* buffer, int size); 00150 void releasedevice(); 00151 bool attachdevice(); 00152 00153 00154 // ====== Private data =================================================== 00155 private: 00156 bool readNextFrame(); 00157 00158 Mpegtoraw* MP3Decoder; 00159 Soundinputstreamfromfile* MP3Source; 00160 00161 cardinal BufferPos; 00162 cardinal BufferSize; 00163 double FramesPerSecond; 00164 card64 Position; 00165 card64 MaxPosition; 00166 00167 MediaError Error; 00168 00169 char Buffer[RAWDATASIZE * sizeof(short int)]; 00170 }; 00171 00172 00173 #endif