00001 #define MAX_NAME_LEN 32 /* for client and port name */ 00002 00003 typedef struct RtJackBuffer_ { 00004 #ifdef LINUX 00005 pthread_mutex_t csndLock; /* signaled by process callback */ 00006 pthread_mutex_t jackLock; /* signaled by audio thread */ 00007 #else 00008 void *csndLock; /* signaled by process callback */ 00009 void *jackLock; /* signaled by audio thread */ 00010 #endif 00011 jack_default_audio_sample_t **inBufs; /* 'nChannels' capture buffers */ 00012 jack_default_audio_sample_t **outBufs; /* 'nChannels' playback buffers */ 00013 } RtJackBuffer; 00014 00015 typedef struct RtJackGlobals_ { 00016 CSOUND *csound; /* Csound instance pointer */ 00017 int jackState; /* 0: OK, 1: sr changed, 2: quit */ 00018 char clientName[MAX_NAME_LEN + 1]; /* client name */ 00019 char inputPortName[MAX_NAME_LEN + 1]; /* input port name prefix */ 00020 char outputPortName[MAX_NAME_LEN + 1]; /* output port name prefix */ 00021 int sleepTime; /* sleep time in us (deprecated) */ 00022 char *inDevName; /* device name for -i adc */ 00023 char *outDevName; /* device name for -o dac */ 00024 int sampleRate; /* sample rate in Hz */ 00025 int nChannels; /* number of channels */ 00026 int bufSize; /* buffer size in sample frames */ 00027 int nBuffers; /* number of buffers (>= 2) */ 00028 int inputEnabled; /* non-zero if capture (adc) is on */ 00029 int outputEnabled; /* non-zero if playback (dac) is on */ 00030 int csndBufCnt; /* current buffer in Csound thread */ 00031 int csndBufPos; /* buffer position in Csound thread */ 00032 int jackBufCnt; /* current buffer in JACK callback */ 00033 int jackBufPos; /* buffer position in JACK callback */ 00034 jack_client_t *client; /* JACK client pointer */ 00035 jack_port_t **inPorts; /* 'nChannels' ports for capture */ 00036 jack_default_audio_sample_t **inPortBufs; 00037 jack_port_t **outPorts; /* 'nChannels' ports for playback */ 00038 jack_default_audio_sample_t **outPortBufs; 00039 RtJackBuffer **bufs; /* 'nBuffers' I/O buffers */ 00040 int xrunFlag; /* non-zero if an xrun has occured */ 00041 } RtJackGlobals;