00001 /* 00002 * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG) 00003 * UNIVERSITAT POMPEU FABRA 00004 * 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 2 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 * 00020 */ 00021 00022 00023 00024 #ifndef __AudioIn__ 00025 #define __AudioIn__ 00026 00027 #include "AudioIO.hxx" 00028 #include "Processing.hxx" 00029 #include "Audio.hxx" 00030 #include "AudioOutPort.hxx" 00031 #include "AudioDevice.hxx" 00032 00033 00034 namespace CLAM{ 00035 00039 class AudioIn: public Processing 00040 { 00041 friend class AudioManager; 00042 friend class AudioDevice; 00043 private: 00044 AudioIOConfig mConfig; 00045 AudioDevice* mpDevice; 00046 public: 00047 AudioOutPort mOutput; 00048 00054 bool ConcreteConfigure(const ProcessingConfig& c); 00055 00059 const ProcessingConfig &GetConfig() const { return mConfig;} 00060 00063 AudioIn() :mOutput( "Audio Output",this ) { mpDevice = 0; Configure(AudioIOConfig()); } 00064 00068 AudioIn(const AudioIOConfig &c) : mOutput( "Audio Output",this ) { mpDevice = 0; Configure(c); } 00070 ~AudioIn() { if (mpDevice) mpDevice->Unregister(*this); } 00071 00072 const char * GetClassName() const {return "AudioIn";} 00073 00076 bool Do(void); 00077 00082 bool Do(Audio& data) 00083 { 00084 if (!AbleToExecute()) return true; // object was disabled 00085 00086 mpDevice->Read(data,mConfig.GetChannelID()); 00087 return true; 00088 } 00089 00093 void GetDeviceInfo(AudioDevice::TInfo &) const; 00094 00095 int GetChannelID() const {return mConfig.GetChannelID();} 00096 00099 bool IsSyncSource() const { return true; } 00100 00101 protected: 00102 bool ConcreteStart(void); 00103 }; 00104 00105 00106 };//CLAM 00107 #endif // __AudioIn__ 00108