00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef GXLIB_GXAUDIOFACTORY_H
00019 #define GXLIB_GXAUDIOFACTORY_H
00020
00021 #include "../gx.h"
00022
00023 class gxAudioFilter;
00024 class gxAudioGraph;
00025 class gxAudioDeviceEnumerator;
00026 class gxAudioFilterEnumerator;
00027 class gxMidiStatusMap;
00028
00032 class gxAudioFactory
00033 {
00034 public:
00035 virtual ~gxAudioFactory();
00036
00046 virtual int createFilter( const char * type, gxAudioFilter ** filter ) = 0;
00047
00051 virtual int createGraph( gxAudioGraph ** graph ) = 0;
00052
00058 virtual int createMidiMerge( int inPinCount, int outPinCount, gxAudioFilter ** midiMerge) = 0;
00059
00063 virtual int createMidiThru( int outPinCount, gxAudioFilter ** midiThru) = 0;
00064
00069 virtual int createMidiStatusMap( gxMidiStatusMap ** statusMap) = 0;
00070
00074 virtual int createMixer(int inputPinCount, long sampleRate, long framesPerBuffer,
00075 gxAudioFilter ** mixer ) = 0;
00076
00081 virtual int createNullSource( long sampleRate, long framesPerBuffer,
00082 gxAudioFilter ** filter) = 0;
00086 virtual int enumAudioCards( gxAudioDeviceEnumerator ** devices ) = 0;
00087
00088 virtual int enumFilters( gxAudioFilterEnumerator ** filters ) = 0;
00092 virtual int enumMidiInPorts( gxAudioDeviceEnumerator ** devices ) = 0;
00096 virtual int enumMidiOutPorts( gxAudioDeviceEnumerator ** devices ) = 0;
00106 virtual int openAudioCard( const char * deviceName, long * sampleRate,
00107 long * framesPerBuffer, gxAudioFilter ** filter) = 0;
00108
00113 virtual int createMidiInBank( gxAudioFilter ** inBank) = 0;
00114
00119 virtual int createMidiOutBank( gxAudioFilter ** outBank) = 0;
00124 virtual int initialize() = 0;
00128 static gxAudioFactory * getInstance();
00129
00130 protected:
00135 gxAudioFactory();
00136 private:
00137 gxAudioFactory( const gxAudioFactory & rhs);
00138 gxAudioFactory & operator=( const gxAudioFactory & rhs);
00139 };
00140
00141 #endif