00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackPortAudioDriver__
00021 #define __JackPortAudioDriver__
00022
00023 #include "JackAudioDriver.h"
00024 #include "JackPortAudioDevices.h"
00025
00026 namespace Jack
00027 {
00028
00033 class JackPortAudioDriver : public JackAudioDriver
00034 {
00035
00036 private:
00037
00038 PortAudioDevices* fPaDevices;
00039 PaStream* fStream;
00040 jack_default_audio_sample_t** fInputBuffer;
00041 jack_default_audio_sample_t** fOutputBuffer;
00042 PaDeviceIndex fInputDevice;
00043 PaDeviceIndex fOutputDevice;
00044
00045 static int Render(const void* inputBuffer, void* outputBuffer,
00046 unsigned long framesPerBuffer,
00047 const PaStreamCallbackTimeInfo* timeInfo,
00048 PaStreamCallbackFlags statusFlags,
00049 void* userData);
00050
00051 public:
00052
00053 JackPortAudioDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, PortAudioDevices* pa_devices)
00054 : JackAudioDriver(name, alias, engine, table), fStream(NULL), fInputBuffer(NULL), fOutputBuffer(NULL),
00055 fInputDevice(paNoDevice), fOutputDevice(paNoDevice)
00056 {
00057 fPaDevices = pa_devices;
00058 }
00059
00060 virtual ~JackPortAudioDriver()
00061 {
00062 delete fPaDevices;
00063 }
00064
00065 int Open(jack_nframes_t buffe_size,
00066 jack_nframes_t samplerate,
00067 bool capturing,
00068 bool playing,
00069 int chan_in,
00070 int chan_out,
00071 bool monitor,
00072 const char* capture_driver_name,
00073 const char* playback_driver_name,
00074 jack_nframes_t capture_latency,
00075 jack_nframes_t playback_latency);
00076
00077 int Close();
00078
00079 int Start();
00080 int Stop();
00081
00082 int Read();
00083 int Write();
00084
00085
00086 bool IsFixedBufferSize()
00087 {
00088 return false;
00089 }
00090
00091 int SetBufferSize(jack_nframes_t buffer_size);
00092 };
00093
00094 }
00095
00096 #endif