Browse Source

Add -L (extra output latency in aynchronous mode) in CoreAudio driver.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2006 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.71
sletz 17 years ago
parent
commit
d13e1567be
3 changed files with 27 additions and 6 deletions
  1. +4
    -0
      ChangeLog
  2. +21
    -5
      macosx/JackCoreAudioDriver.cpp
  3. +2
    -1
      macosx/JackCoreAudioDriver.h

+ 4
- 0
ChangeLog View File

@@ -20,6 +20,10 @@ Fernando Lopez-Lezcano
Jackdmp changes log
---------------------------

2008-03-14 Stephane Letz <letz@grame.fr>
* Add -L (extra output latency in aynchronous mode) in CoreAudio driver.

2008-03-14 Stephane Letz <letz@grame.fr>
* Fernando Lopez-Lezcano scons patch.


+ 21
- 5
macosx/JackCoreAudioDriver.cpp View File

@@ -846,7 +846,7 @@ int JackCoreAudioDriver::AddListeners()
return -1;
}

if (!fEngineControl->fSyncMode) {
if (!fEngineControl->fSyncMode && fIOUsage != 1.f) {
UInt32 outSize = sizeof(float);
err = AudioDeviceSetProperty(fDeviceID, NULL, 0, false, kAudioDevicePropertyIOCycleUsage, outSize, &fIOUsage);
if (err != noErr) {
@@ -879,7 +879,8 @@ int JackCoreAudioDriver::Open(jack_nframes_t nframes,
const char* capture_driver_uid,
const char* playback_driver_uid,
jack_nframes_t capture_latency,
jack_nframes_t playback_latency)
jack_nframes_t playback_latency,
int async_output_latency)
{
int in_nChannels = 0;
int out_nChannels = 0;
@@ -896,6 +897,7 @@ int JackCoreAudioDriver::Open(jack_nframes_t nframes,
strcpy(fPlaybackUID, playback_driver_uid);
fCaptureLatency = capture_latency;
fPlaybackLatency = playback_latency;
fIOUsage = float(async_output_latency)/ 100.f;

if (SetupDevices(capture_driver_uid, playback_driver_uid, capture_driver_name, playback_driver_name) < 0)
return -1;
@@ -1122,7 +1124,7 @@ extern "C"
desc = (jack_driver_desc_t*)calloc(1, sizeof(jack_driver_desc_t));

strcpy(desc->name, "coreaudio");
desc->nparams = 13;
desc->nparams = 14;
desc->params = (jack_driver_param_desc_t*)calloc(desc->nparams, sizeof(jack_driver_param_desc_t));

i = 0;
@@ -1229,6 +1231,14 @@ extern "C"
desc->params[i].value.i = TRUE;
strcpy(desc->params[i].short_desc, "Display available CoreAudio devices");
strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
i++;
strcpy(desc->params[i].name, "async-latency");
desc->params[i].character = 'L';
desc->params[i].type = JackDriverParamUInt;
desc->params[i].value.i = 100;
strcpy(desc->params[i].short_desc, "Extra output latency in aynchronous mode (percent)");
strcpy(desc->params[i].long_desc, desc->params[i].short_desc);

return desc;
}
@@ -1247,6 +1257,7 @@ extern "C"
const jack_driver_param_t *param;
jack_nframes_t systemic_input_latency = 0;
jack_nframes_t systemic_output_latency = 0;
int async_output_latency = 100;

for (node = params; node; node = jack_slist_next(node)) {
param = (const jack_driver_param_t *) node->data;
@@ -1312,6 +1323,10 @@ extern "C"
case 'l':
Jack::DisplayDeviceNames();
break;
case 'L':
async_output_latency = param->value.ui;
break;
}
}

@@ -1321,8 +1336,9 @@ extern "C"
playback = TRUE;
}

Jack::JackDriverClientInterface* driver = new Jack::JackCoreAudioDriver("coreaudio", engine, table);
if (driver->Open(frames_per_interrupt, srate, capture, playback, chan_in, chan_out, monitor, capture_pcm_name, playback_pcm_name, systemic_input_latency, systemic_output_latency) == 0) {
Jack::JackCoreAudioDriver* driver = new Jack::JackCoreAudioDriver("coreaudio", engine, table);
if (driver->Open(frames_per_interrupt, srate, capture, playback, chan_in, chan_out, monitor, capture_pcm_name,
playback_pcm_name, systemic_input_latency, systemic_output_latency, async_output_latency) == 0) {
return driver;
} else {
delete driver;


+ 2
- 1
macosx/JackCoreAudioDriver.h View File

@@ -156,7 +156,8 @@ class JackCoreAudioDriver : public JackAudioDriver
const char* capture_driver_name,
const char* playback_driver_name,
jack_nframes_t capture_latency,
jack_nframes_t playback_latency);
jack_nframes_t playback_latency,
int async_output_latency);
int Close();

int Attach();


Loading…
Cancel
Save