From 5f86fad2f0ab76b7497230b18cd146a7c4d38cd2 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 28 Apr 2015 22:09:51 +0200 Subject: ao_coreaudio_exclusive: account for additional latency Whether this is correct is unknown. This change tripples the latency from ~15ms to ~45ms. XBMC does this, VLC does not from what I could see. --- audio/out/ao_coreaudio_exclusive.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'audio/out') diff --git a/audio/out/ao_coreaudio_exclusive.c b/audio/out/ao_coreaudio_exclusive.c index cc8c33e72e..762decffa4 100644 --- a/audio/out/ao_coreaudio_exclusive.c +++ b/audio/out/ao_coreaudio_exclusive.c @@ -501,10 +501,17 @@ static int init_digital(struct ao *ao, AudioStreamBasicDescription asbd) p->stream_asbd.mFramesPerPacket); uint32_t latency_frames = 0; - err = CA_GET_O(p->device, kAudioDevicePropertyLatency, &latency_frames); - if (err != noErr) { + uint32_t latency_properties[] = { + kAudioDevicePropertyLatency, + kAudioDevicePropertyBufferFrameSize, + kAudioDevicePropertySafetyOffset, + }; + for (int n = 0; n < MP_ARRAY_SIZE(latency_properties); n++) { + uint32_t temp; + err = CA_GET_O(p->device, kAudioDevicePropertyLatency, &temp); CHECK_CA_WARN("cannot get device latency"); - latency_frames = 0; + if (err == noErr) + latency_frames += temp; } p->hw_latency_us = ca_frames_to_us(ao, latency_frames); -- cgit v1.2.3