20 #ifndef __JackProxyDriver__
21 #define __JackProxyDriver__
23 #include "JackTimedDriver.h"
25 #define DEFAULT_UPSTREAM "default"
26 #define DEFAULT_CLIENT_NAME "proxy"
29 #define JACK_PROXY_CLIENT_LIB "libjack.0.dylib"
32 #define JACK_PROXY_CLIENT_LIB "libjack64.dll"
34 #define JACK_PROXY_CLIENT_LIB "libjack.dll"
37 #define JACK_PROXY_CLIENT_LIB "libjack.so.0"
40 #define PROXY_DEF_SYMBOL(ret,name,...) ret (*name) (__VA_ARGS__)
41 #define PROXY_LOAD_SYMBOL(ret,name,...) name = (ret (*) (__VA_ARGS__)) GetJackProc(fHandle, #name); assert(name)
65 char fUpstream[JACK_CLIENT_NAME_SIZE+1];
66 char fClientName[JACK_CLIENT_NAME_SIZE+1];
67 const char* fPromiscuous;
70 jack_client_t* fClient;
71 jack_port_t** fUpstreamCapturePorts;
72 jack_port_t** fUpstreamPlaybackPorts;
73 int* fUpstreamCapturePortConnected;
74 int* fUpstreamPlaybackPortConnected;
78 bool fDetectPlaybackChannels;
79 bool fDetectCaptureChannels;
87 int CountIO(
const char*,
int);
90 static int process_callback(jack_nframes_t,
void*);
91 static int bufsize_callback(jack_nframes_t,
void*);
92 static int srate_callback(jack_nframes_t,
void*);
93 static void connect_callback(jack_port_id_t, jack_port_id_t,
int,
void*);
94 static void shutdown_callback(
void*);
97 int bufsize_callback(jack_nframes_t);
98 int srate_callback(jack_nframes_t);
99 void connect_callback(jack_port_id_t, jack_port_id_t,
int);
104 PROXY_DEF_SYMBOL(jack_client_t*,
jack_client_open,
const char*, jack_options_t, jack_status_t*, ...);
109 PROXY_DEF_SYMBOL(
void,
jack_on_shutdown, jack_client_t*, JackShutdownCallback,
void*);
114 PROXY_DEF_SYMBOL(jack_port_t*,
jack_port_by_id, jack_client_t*, jack_port_id_t);
115 PROXY_DEF_SYMBOL(
int,
jack_port_is_mine,
const jack_client_t*,
const jack_port_t*);
116 PROXY_DEF_SYMBOL(
const char**,
jack_get_ports, jack_client_t*,
const char*,
const char*,
unsigned long);
117 PROXY_DEF_SYMBOL(
void, jack_free,
void*);
118 PROXY_DEF_SYMBOL(jack_port_t*,
jack_port_register, jack_client_t*,
const char*,
const char*,
unsigned long,
unsigned long);
121 PROXY_DEF_SYMBOL(
int,
jack_connect, jack_client_t*,
const char*,
const char*);
122 PROXY_DEF_SYMBOL(
const char*,
jack_port_name,
const jack_port_t*);
128 PROXY_LOAD_SYMBOL(jack_client_t*,
jack_client_open,
const char*, jack_options_t, jack_status_t*, ...);
133 PROXY_LOAD_SYMBOL(
void,
jack_on_shutdown, jack_client_t*, JackShutdownCallback,
void*);
138 PROXY_LOAD_SYMBOL(jack_port_t*,
jack_port_by_id, jack_client_t*, jack_port_id_t);
139 PROXY_LOAD_SYMBOL(
int,
jack_port_is_mine,
const jack_client_t*,
const jack_port_t*);
140 PROXY_LOAD_SYMBOL(
const char**,
jack_get_ports, jack_client_t*,
const char*,
const char*,
unsigned long);
141 PROXY_LOAD_SYMBOL(
void, jack_free,
void*);
142 PROXY_LOAD_SYMBOL(jack_port_t*,
jack_port_register, jack_client_t*,
const char*,
const char*,
unsigned long,
unsigned long);
145 PROXY_LOAD_SYMBOL(
int,
jack_connect, jack_client_t*,
const char*,
const char*);
146 PROXY_LOAD_SYMBOL(
const char*,
jack_port_name,
const jack_port_t*);
154 const char* upstream,
const char* promiscuous,
char* client_name,
bool auto_connect,
bool auto_save);
157 int Open(jack_nframes_t buffer_size,
158 jack_nframes_t samplerate,
164 const char* capture_driver_name,
165 const char* playback_driver_name,
166 jack_nframes_t capture_latency,
167 jack_nframes_t playback_latency);