jack_driver_t * driver_initialize (jack_client_t *client, int argc, char **argv) { jack_nframes_t srate = 44100; jack_nframes_t frames_per_interrupt = 128; int capture = FALSE; int playback = FALSE; int chan_in = -1; int chan_out = -1; DitherAlgorithm dither = None; char* name = NULL; int i; AudioDeviceID deviceID = 0; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'n': name = (argv[i+1]); i++; break; case 'D': capture = TRUE; playback = TRUE; break; case 'c': switch (argv[i][2]) { case 'i': chan_in = atoi (argv[i+1]); break; case 'o': chan_out = atoi (argv[i+1]); break; default: chan_in = atoi (argv[i+1]); chan_out = chan_in; break; } i++; break; case 'C': capture = TRUE; break; case 'P': playback = TRUE; break; case 'r': srate = atoi (argv[i+1]); i++; break; case 'p': frames_per_interrupt = atoi (argv[i+1]); i++; break; case 'z': switch (argv[i][2]) { case '-': dither = None; break; case 'r': dither = Rectangular; break; case 's': dither = Shaped; break; case 't': default: dither = Triangular; break; } break; case 'I': deviceID = atoi(argv[i+1]); i++; break; default: coreaudio_usage (); return NULL; } } else { coreaudio_usage (); return NULL; } } /* duplex is the default */ if (!capture && !playback) { capture = TRUE; playback = TRUE; } return coreaudio_driver_new ("coreaudio", client, frames_per_interrupt, srate, capture, playback, chan_in, chan_out, dither, name,deviceID); }
jack_driver_t *driver_initialize(jack_client_t * client, const JSList * params) { jack_nframes_t srate = 44100; /* Some older Mac models only support this value */ jack_nframes_t frames_per_interrupt = 128; int capture = FALSE; int playback = FALSE; int chan_in = 0; int chan_out = 0; char* capture_pcm_name = ""; char* playback_pcm_name = ""; const JSList *node; const jack_driver_param_t *param; jack_nframes_t systemic_input_latency = 0; jack_nframes_t systemic_output_latency = 0; for (node = params; node; node = jack_slist_next(node)) { param = (const jack_driver_param_t *) node->data; switch (param->character) { case 'd': capture_pcm_name = strdup(param->value.str); playback_pcm_name = strdup(param->value.str); break; case 'D': capture = TRUE; playback = TRUE; break; case 'c': chan_in = chan_out = (int) param->value.ui; break; case 'i': chan_in = (int) param->value.ui; break; case 'o': chan_out = (int) param->value.ui; break; case 'C': capture = TRUE; if (strcmp(param->value.str, "none") != 0) { capture_pcm_name = strdup(param->value.str); } break; case 'P': playback = TRUE; if (strcmp(param->value.str, "none") != 0) { playback_pcm_name = strdup(param->value.str); } break; case 'r': srate = param->value.ui; break; case 'p': frames_per_interrupt = (unsigned int) param->value.ui; break; case 'I': systemic_input_latency = param->value.ui; break; case 'O': systemic_output_latency = param->value.ui; break; case 'l': display_device_names(); break; } } /* duplex is the default */ if (!capture && !playback) { capture = TRUE; playback = TRUE; } return coreaudio_driver_new("coreaudio", client, frames_per_interrupt, srate, capture, playback, chan_in, chan_out, capture_pcm_name, playback_pcm_name, systemic_input_latency, systemic_output_latency); }