Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}