EMIPLIB

mipwavinput.h

Go to the documentation of this file.
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 MIPWAVINPUT_H
00030 
00031 #define MIPWAVINPUT_H
00032 
00033 #include "mipconfig.h"
00034 #include "mipcomponent.h"
00035 #include "miptime.h"
00036 #include <string>
00037 
00038 class MIPAudioMessage;
00039 class MIPWAVReader;
00040 
00051 class EMIPLIB_IMPORTEXPORT MIPWAVInput : public MIPComponent
00052 {
00053 public:
00054         MIPWAVInput();
00055         ~MIPWAVInput();
00056 
00064         bool open(const std::string &fname, int frames, bool loop = true, bool intSamples = false);
00065         
00074         bool open(const std::string &fname, MIPTime interval, bool loop = true, bool intSamples = false);
00075 
00079         bool close();
00080 
00082         int getSamplingRate() const                                                             { if (m_pSndFile) return m_sampRate; return 0; }
00083         
00085         int getNumberOfFrames() const                                                           { if (m_pSndFile) return m_numFrames; return 0; }
00086 
00088         int getNumberOfChannels() const                                                         { if (m_pSndFile) return m_numChannels; return 0; }
00089 
00091         void setSourceID(uint64_t sourceID)                                                     { m_sourceID = sourceID; }
00092 
00093         bool push(const MIPComponentChain &chain, int64_t iteration, MIPMessage *pMsg);
00094         bool pull(const MIPComponentChain &chain, int64_t iteration, MIPMessage **pMsg);
00095 protected:
00101         virtual void onLastInputFrame()                                                         { }
00102 private:
00103         MIPWAVReader *m_pSndFile;
00104         int m_sampRate;
00105         int m_numFrames;
00106         int m_numChannels;
00107         bool m_intSamples;
00108         float *m_pFramesFloat;
00109         uint16_t *m_pFramesInt;
00110         MIPAudioMessage *m_pMsg;
00111         bool m_gotMessage;
00112         bool m_loop, m_eof;
00113         uint64_t m_sourceID;
00114 };
00115 
00116 #endif // MIPWAVINPUT_H
00117