RTP Audio System  2.0.0
wavaudioreader.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines