00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackAudioAdapter__
00021 #define __JackAudioAdapter__
00022
00023 #include "JackAudioAdapterInterface.h"
00024 #include "driver_interface.h"
00025
00026 namespace Jack
00027 {
00028
00033 class JackAudioAdapter
00034 {
00035 private:
00036
00037 static int Process(jack_nframes_t, void* arg);
00038 static int BufferSize(jack_nframes_t buffer_size, void* arg);
00039 static int SampleRate(jack_nframes_t sample_rate, void* arg);
00040 static void Latency(jack_latency_callback_mode_t mode, void* arg);
00041
00042 jack_port_t** fCapturePortList;
00043 jack_port_t** fPlaybackPortList;
00044
00045 jack_default_audio_sample_t** fInputBufferList;
00046 jack_default_audio_sample_t** fOutputBufferList;
00047
00048 jack_client_t* fClient;
00049 JackAudioAdapterInterface* fAudioAdapter;
00050 bool fAutoConnect;
00051
00052 void FreePorts();
00053 void ConnectPorts();
00054 void Reset();
00055 int ProcessAux(jack_nframes_t frames);
00056
00057 public:
00058
00059 JackAudioAdapter(jack_client_t* client, JackAudioAdapterInterface* audio_io, const JSList* params = NULL);
00060 ~JackAudioAdapter();
00061
00062 int Open();
00063 int Close();
00064 };
00065
00066 }
00067
00068 #define CaptureDriverFlags static_cast<JackPortFlags>(JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal)
00069 #define PlaybackDriverFlags static_cast<JackPortFlags>(JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal)
00070
00071 #endif