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);
 LIB_EXPORT int jack_port_unregister(jack_client_t *, jack_port_t *)
Locked Engine, access to methods is serialized using a mutex. 
LIB_EXPORT jack_port_t * jack_port_by_id(jack_client_t *client, jack_port_id_t port_id)
Inter process synchronization using POSIX semaphore. 
LIB_EXPORT int jack_set_process_callback(jack_client_t *client, JackProcessCallback process_callback, void *arg)
LIB_EXPORT int jack_activate(jack_client_t *client)
LIB_EXPORT int jack_connect(jack_client_t *, const char *source_port, const char *destination_port)
LIB_EXPORT jack_port_t * jack_port_register(jack_client_t *client, const char *port_name, const char *port_type, unsigned long flags, unsigned long buffer_size)
LIB_EXPORT void jack_on_shutdown(jack_client_t *client, JackShutdownCallback shutdown_callback, void *arg)
LIB_EXPORT int jack_set_port_connect_callback(jack_client_t *, JackPortConnectCallback connect_callback, void *arg)
LIB_EXPORT jack_client_t * jack_client_open(const char *client_name, jack_options_t options, jack_status_t *status,...)
LIB_EXPORT jack_nframes_t jack_get_buffer_size(jack_client_t *)
LIB_EXPORT int jack_set_sample_rate_callback(jack_client_t *client, JackSampleRateCallback srate_callback, void *arg)
LIB_EXPORT void * jack_port_get_buffer(jack_port_t *, jack_nframes_t)
LIB_EXPORT int jack_port_is_mine(const jack_client_t *, const jack_port_t *port)
LIB_EXPORT jack_nframes_t jack_get_sample_rate(jack_client_t *)
LIB_EXPORT int jack_set_buffer_size_callback(jack_client_t *client, JackBufferSizeCallback bufsize_callback, void *arg)
LIB_EXPORT const char * jack_port_name(const jack_port_t *port)
LIB_EXPORT const char ** jack_get_ports(jack_client_t *, const char *port_name_pattern, const char *type_name_pattern, unsigned long flags)
LIB_EXPORT int jack_deactivate(jack_client_t *client)
LIB_EXPORT int jack_client_close(jack_client_t *client)