00001 /* Copyright (C) 2004 Guido Simone 00002 * 00003 * This program is free software; you can redistribute it and/or modify 00004 * it under the terms of the GNU General Public License as published by 00005 * the Free Software Foundation; either version 2 of the License, or 00006 * (at your option) any later version. 00007 * 00008 * This program is distributed in the hope that it will be useful, 00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00011 * GNU General Public License for more details. 00012 00013 * You should have received a copy of the GNU General Public License 00014 * along with this program; if not, write to the Free Software 00015 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00016 */ 00017 00018 #ifndef GXLIB_GXAUDIOCARD_H 00019 #define GXLIB_GXAUDIOCARD_H 00020 00021 #include "../util/gxThreadSafeObject.h" 00022 00023 #include "../gx.h" 00024 00025 class gxAudioClockSource; 00026 00043 class gxAudioCard 00044 { 00045 public: 00046 00047 enum state_t 00048 { 00049 STATE_CLOSED, 00050 STATE_OPEN, 00051 STATE_STARTED 00052 }; 00053 00054 gxAudioCard() {} 00055 00056 virtual ~gxAudioCard() {} 00070 virtual int write( float * samples, int sampleCount ) = 0; 00074 virtual bool readyToWrite() = 0; 00085 virtual bool lookup( const char * driverName ) = 0; 00089 virtual int open(int framesPerBuffer, int sampleRate) = 0; 00090 00096 virtual int start( ) = 0; 00100 virtual int stop( ) = 0; 00104 virtual int close( ) = 0; 00108 virtual state_t getState() = 0; 00109 00115 virtual bool isClockSource( gxAudioClockSource ** sourceInterface ) = 0; 00116 00117 00118 private: 00119 gxAudioCard( const gxAudioCard & rhs); 00120 gxAudioCard & operator=( const gxAudioCard & rhs); 00121 }; 00122 00123 #endif