summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio_utils.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2023-10-11 13:45:40 -0500
committerDudemanguy <random342@airmail.cc>2023-10-16 15:38:59 +0000
commit50025428b17e82c9689dab82fcd0486648c4a9fd (patch)
treef9039f4110dd54be060b5e7ef4ef3131be0a3e32 /audio/out/ao_coreaudio_utils.c
parentd310430332b9c7dbedf28398b7018364401d327d (diff)
downloadmpv-50025428b17e82c9689dab82fcd0486648c4a9fd.tar.bz2
mpv-50025428b17e82c9689dab82fcd0486648c4a9fd.tar.xz
ao: convert all timing code to nanoseconds
Pull AOs work off of a callback that relies on mpv's internal timer. So like with the related video changes, convert all of these to nanoseconds instead. In many cases, the underlying audio API does actually provide nanosecond resolution as well.
Diffstat (limited to 'audio/out/ao_coreaudio_utils.c')
-rw-r--r--audio/out/ao_coreaudio_utils.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/audio/out/ao_coreaudio_utils.c b/audio/out/ao_coreaudio_utils.c
index 45c5eff9db..67ab98d34d 100644
--- a/audio/out/ao_coreaudio_utils.c
+++ b/audio/out/ao_coreaudio_utils.c
@@ -292,9 +292,9 @@ bool ca_asbd_is_better(AudioStreamBasicDescription *req,
return true;
}
-int64_t ca_frames_to_us(struct ao *ao, uint32_t frames)
+int64_t ca_frames_to_ns(struct ao *ao, uint32_t frames)
{
- return frames / (float) ao->samplerate * 1e6;
+ return MP_TIME_S_TO_NS(frames / (double)ao->samplerate);
}
int64_t ca_get_latency(const AudioTimeStamp *ts)
@@ -306,7 +306,7 @@ int64_t ca_get_latency(const AudioTimeStamp *ts)
if (now > out)
return 0;
- return (out - now) * 1e-3;
+ return out - now;
#else
static mach_timebase_info_data_t timebase;
if (timebase.denom == 0)
@@ -318,7 +318,7 @@ int64_t ca_get_latency(const AudioTimeStamp *ts)
if (now > out)
return 0;
- return (out - now) * timebase.numer / timebase.denom / 1e3;
+ return (out - now) * timebase.numer / timebase.denom;
#endif
}
@@ -422,7 +422,7 @@ OSStatus ca_enable_mixing(struct ao *ao, AudioDeviceID device, bool changed)
return noErr;
}
-int64_t ca_get_device_latency_us(struct ao *ao, AudioDeviceID device)
+int64_t ca_get_device_latency_ns(struct ao *ao, AudioDeviceID device)
{
uint32_t latency_frames = 0;
uint32_t latency_properties[] = {
@@ -449,7 +449,7 @@ int64_t ca_get_device_latency_us(struct ao *ao, AudioDeviceID device)
MP_VERBOSE(ao, "Device sample rate: %f\n", sample_rate);
}
- return latency_frames / sample_rate * 1e6;
+ return MP_TIME_S_TO_NS(latency_frames / sample_rate);
}
static OSStatus ca_change_format_listener(