00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __JackASIODriver__
00026 #define __JackASIODriver__
00027
00028 #include "JackAudioDriver.h"
00029 #include "portaudio.h"
00030
00031 namespace Jack
00032 {
00033
00038 class JackASIODriver : public JackAudioDriver
00039 {
00040
00041 private:
00042
00043 PaStream* fStream;
00044 float** fInputBuffer;
00045 float** fOutputBuffer;
00046 PaDeviceIndex fInputDevice;
00047 PaDeviceIndex fOutputDevice;
00048
00049 static int Render(const void* inputBuffer, void* outputBuffer,
00050 unsigned long framesPerBuffer,
00051 const PaStreamCallbackTimeInfo* timeInfo,
00052 PaStreamCallbackFlags statusFlags,
00053 void* userData);
00054
00055 public:
00056
00057 JackASIODriver(const char* name, JackEngine* engine, JackSynchro** table)
00058 : JackAudioDriver(name, engine, table), fStream(NULL), fInputBuffer(NULL), fOutputBuffer(NULL),
00059 fInputDevice(paNoDevice), fOutputDevice(paNoDevice)
00060 {}
00061
00062 virtual ~JackASIODriver()
00063 {}
00064
00065 int Open(jack_nframes_t frames_per_cycle,
00066 jack_nframes_t rate,
00067 int capturing,
00068 int 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 int SetBufferSize(jack_nframes_t nframes);
00086
00087 void PrintState();
00088 };
00089
00090 }
00091
00092 #endif