00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackAudioDriver__
00022 #define __JackAudioDriver__
00023
00024 #include "JackDriver.h"
00025
00026 namespace Jack
00027 {
00028
00033 class EXPORT JackAudioDriver : public JackDriver
00034 {
00035
00036 protected:
00037
00038 int fCaptureChannels;
00039 int fPlaybackChannels;
00040
00041
00042
00043 jack_port_id_t fCapturePortList[PORT_NUM];
00044 jack_port_id_t fPlaybackPortList[PORT_NUM];
00045 jack_port_id_t fMonitorPortList[PORT_NUM];
00046
00047 bool fWithMonitorPorts;
00048
00049 jack_default_audio_sample_t* GetInputBuffer(int port_index);
00050 jack_default_audio_sample_t* GetOutputBuffer(int port_index);
00051 jack_default_audio_sample_t* GetMonitorBuffer(int port_index);
00052
00053 private:
00054
00055 int ProcessAsync();
00056 int ProcessSync();
00057
00058 public:
00059
00060 JackAudioDriver(const char* name, JackEngine* engine, JackSynchro** table);
00061 virtual ~JackAudioDriver();
00062
00063 virtual int Process();
00064
00065 virtual int Open(jack_nframes_t nframes,
00066 jack_nframes_t samplerate,
00067 int capturing,
00068 int playing,
00069 int inchannels,
00070 int outchannels,
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 virtual int Attach();
00078 virtual int Detach();
00079 virtual int Write();
00080
00081 virtual int SetBufferSize(jack_nframes_t buffer_size);
00082 virtual int SetSampleRate(jack_nframes_t sample_rate);
00083
00084 virtual void NotifyXRun(jack_time_t callback_usecs);
00085
00086 };
00087
00088 }
00089
00090 #endif