Browse Source

Add systemic latencies management in CoreAudio driver.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1515 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.64
sletz 18 years ago
parent
commit
62ff24405d
2 changed files with 27 additions and 3 deletions
  1. +4
    -0
      ChangeLog
  2. +23
    -3
      macosx/JackCoreAudioDriver.cpp

+ 4
- 0
ChangeLog View File

@@ -1,6 +1,10 @@
---------------------------
Jackdmp changes log
---------------------------

2007-08-21 Stephane Letz <letz@grame.fr>
* Add "systemic" latencies management in CoreAudio driver.
2007-08-16 Stephane Letz <letz@grame.fr>


+ 23
- 3
macosx/JackCoreAudioDriver.cpp View File

@@ -823,9 +823,19 @@ int JackCoreAudioDriver::Attach()
jack_error("Cannot register port for %s", buf);
return -1;
}

size = sizeof(UInt32);
UInt32 value1 = 0;
UInt32 value2 = 0;
err = AudioDeviceGetProperty(fDeviceID, 0, true, kAudioDevicePropertyLatency, &size, &value1);
if (err != noErr)
JackLog("AudioDeviceGetProperty kAudioDevicePropertyLatency error \n");
err = AudioDeviceGetProperty(fDeviceID, 0, true, kAudioDevicePropertySafetyOffset, &size, &value2);
if (err != noErr)
JackLog("AudioDeviceGetProperty kAudioDevicePropertySafetyOffset error \n");
port = fGraphManager->GetPort(port_index);
port->SetLatency(fEngineControl->fBufferSize + fCaptureLatency);
port->SetLatency(fEngineControl->fBufferSize + value1 + value2 + fCaptureLatency);
fCapturePortList[i] = port_index;
}

@@ -849,9 +859,19 @@ int JackCoreAudioDriver::Attach()
jack_error("Cannot register port for %s", buf);
return -1;
}
size = sizeof(UInt32);
UInt32 value1 = 0;
UInt32 value2 = 0;
err = AudioDeviceGetProperty(fDeviceID, 0, false, kAudioDevicePropertyLatency, &size, &value1);
if (err != noErr)
JackLog("AudioDeviceGetProperty kAudioDevicePropertyLatency error \n");
err = AudioDeviceGetProperty(fDeviceID, 0, false, kAudioDevicePropertySafetyOffset, &size, &value2);
if (err != noErr)
JackLog("AudioDeviceGetProperty kAudioDevicePropertySafetyOffset error \n");

port = fGraphManager->GetPort(port_index);
port->SetLatency(fEngineControl->fBufferSize + fPlaybackLatency);
port->SetLatency(fEngineControl->fBufferSize + value1 + value2 + fPlaybackLatency);
fPlaybackPortList[i] = port_index;

// Monitor ports


Loading…
Cancel
Save