From 2fa1e7d0b409f2ceb608d9b6c5d90106507595aa Mon Sep 17 00:00:00 2001 From: rcombs Date: Fri, 9 Dec 2022 16:32:22 -0600 Subject: [PATCH] ao_coreaudio: use device's nominal sample rate for latency properties Fixes sync issues when using high-latency devices at non-native sample rates Closes #10984 --- audio/out/ao_coreaudio_utils.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/audio/out/ao_coreaudio_utils.c b/audio/out/ao_coreaudio_utils.c index b55bf1c0df..f7869c2453 100644 --- a/audio/out/ao_coreaudio_utils.c +++ b/audio/out/ao_coreaudio_utils.c @@ -456,7 +456,15 @@ int64_t ca_get_device_latency_us(struct ao *ao, AudioDeviceID device) } } - return ca_frames_to_us(ao, latency_frames); + double sample_rate = ao->samplerate; + OSStatus err = CA_GET_O(device, kAudioDevicePropertyNominalSampleRate, + &sample_rate); + CHECK_CA_WARN("cannot get device sample rate, falling back to AO sample rate!"); + if (err == noErr) { + MP_VERBOSE(ao, "Device sample rate: %f\n", sample_rate); + } + + return latency_frames / sample_rate * 1e6; } static OSStatus ca_change_format_listener(