diff options
author | wm4 <wm4@nowhere> | 2015-04-28 22:09:51 +0200 |
---|---|---|
committer | Diogo Franco (Kovensky) <diogomfranco@gmail.com> | 2015-04-29 18:40:20 +0900 |
commit | 63bd171c0d564fa2398df78b642c097d69c5a568 (patch) | |
tree | e9f0d269f631d4e4fee200017e093826cafee1ad /audio | |
parent | 73086a6ba3de013e1aae42ed375f39592d100031 (diff) | |
download | mpv-63bd171c0d564fa2398df78b642c097d69c5a568.tar.bz2 mpv-63bd171c0d564fa2398df78b642c097d69c5a568.tar.xz |
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.
(cherry picked from commit 5f86fad2f0ab76b7497230b18cd146a7c4d38cd2)
Diffstat (limited to 'audio')
-rw-r--r-- | audio/out/ao_coreaudio_exclusive.c | 13 |
1 files changed, 10 insertions, 3 deletions
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); |