From 191dd1097cb9b8827e53ecd450c31d60e63e91f3 Mon Sep 17 00:00:00 2001 From: Mikhail Burakov Date: Sun, 5 May 2024 13:53:01 +0200 Subject: Add audio stats to overlay when it is enabled --- audio.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'audio.c') diff --git a/audio.c b/audio.c index bb5ef23..e93dd4a 100644 --- a/audio.c +++ b/audio.c @@ -32,6 +32,7 @@ struct AudioContext { const char* device; atomic_bool running; struct AtomicQueue queue; + atomic_uint_fast64_t latency; thrd_t thread; }; @@ -64,6 +65,9 @@ static int AudioContextThreadProc(void* arg) { if (size < sizeof(buffer)) { // LOG("Audio queue underflow!"); memset(buffer + size, 0, sizeof(buffer) - size); + uint64_t micros = (sizeof(buffer) - size) * 1000 / frame_size / 48; + atomic_fetch_add_explicit(&context->latency, micros, + memory_order_relaxed); } for (snd_pcm_uframes_t offset = 0; offset < sizeof(buffer) / frame_size;) { @@ -123,6 +127,10 @@ bool AudioContextDecode(struct AudioContext* audio_context, const void* buffer, return true; } +uint64_t AudioContextGetLatency(const struct AudioContext* audio_context) { + return atomic_load_explicit(&audio_context->latency, memory_order_relaxed); +} + void AudioContextDestroy(struct AudioContext* audio_context) { atomic_store_explicit(&audio_context->running, 0, memory_order_relaxed); thrd_join(audio_context->thread, NULL); -- cgit v1.2.3