summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio_utils.c
diff options
context:
space:
mode:
authorrcombs <rcombs@rcombs.me>2022-12-09 16:32:22 -0600
committerJan Ekström <jeebjp@gmail.com>2022-12-10 18:15:46 +0200
commit2fa1e7d0b409f2ceb608d9b6c5d90106507595aa (patch)
treea12a48a953ca19b0d4197805d326f71068f6ee8b /audio/out/ao_coreaudio_utils.c
parent25b66256d7ff48254b2055a066e29f260414112f (diff)
downloadmpv-2fa1e7d0b409f2ceb608d9b6c5d90106507595aa.tar.bz2
mpv-2fa1e7d0b409f2ceb608d9b6c5d90106507595aa.tar.xz
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
Diffstat (limited to 'audio/out/ao_coreaudio_utils.c')
-rw-r--r--audio/out/ao_coreaudio_utils.c10
1 files changed, 9 insertions, 1 deletions
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(