Esempio n. 1
0
/** inform JACK that port has /frames/ frames of latency */
    void
    Port::set_latency ( direction_e dir, nframes_t min, nframes_t max )
    {
#ifdef HAVE_JACK_PORT_GET_LATENCY_RANGE
        jack_latency_range_t range;
//        DMESSAGE( "Setting port latency!" );

        range.max = max;
        range.min = min;

        jack_port_set_latency_range( _port, dir == Output ? JackPlaybackLatency : JackCaptureLatency, &range );   
#else
        jack_port_set_latency( _port, max );
#endif
    }
Esempio n. 2
0
static int
coreaudio_driver_attach (coreaudio_driver_t *driver, jack_engine_t *engine)
{
    jack_port_t *port;
    int port_flags;
    channel_t chn;
    char buf[JACK_PORT_NAME_SIZE];

    driver->engine = engine;

    driver->engine->set_buffer_size (engine, driver->frames_per_cycle);
    driver->engine->set_sample_rate (engine, driver->frame_rate);

    port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal;

    /*
    if (driver->has_hw_monitoring) {
            port_flags |= JackPortCanMonitor;
    }
    */

    for (chn = 0; chn < driver->capture_nchannels; chn++) {

        //snprintf (buf, sizeof(buf) - 1, "capture_%lu", chn+1);
        snprintf (buf, sizeof(buf) - 1, "%s:out%lu", driver->driver_name, chn+1);

        if ((port = jack_port_register (driver->client, buf, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0)) == NULL) {
            jack_error ("coreaudio: cannot register port for %s", buf);
            break;
        }

        /* XXX fix this so that it can handle: systemic (external) latency
        */

        jack_port_set_latency (port, driver->frames_per_cycle);

        driver->capture_ports = jack_slist_append (driver->capture_ports, port);
    }

    port_flags = JackPortIsInput|JackPortIsPhysical|JackPortIsTerminal;

    for (chn = 0; chn < driver->playback_nchannels; chn++) {
        //snprintf (buf, sizeof(buf) - 1, "playback_%lu", chn+1);
        snprintf (buf, sizeof(buf) - 1, "%s:in%lu", driver->driver_name, chn+1);

        if ((port = jack_port_register (driver->client, buf, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0)) == NULL) {
            jack_error ("coreaudio: cannot register port for %s", buf);
            break;
        }

        /* XXX fix this so that it can handle: systemic (external) latency
        */

        jack_port_set_latency (port, driver->frames_per_cycle);
        driver->playback_ports = jack_slist_append (driver->playback_ports, port);
    }

    jack_activate (driver->client);

    return 0;
}