From 4be4fa66d9520ccfcb2129cc6c75612a5e6dcc92 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Fri, 6 Oct 2023 22:00:05 -0600 Subject: [PATCH] audio stuff --- src/ui/audio.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ui/audio.rs b/src/ui/audio.rs index 125aeb96..05488b2d 100644 --- a/src/ui/audio.rs +++ b/src/ui/audio.rs @@ -32,5 +32,16 @@ pub fn play_audio(device: &mut device::Device, dram_addr: usize, length: u64) { i += 2; } - let _ = audio_device.queue_audio(&primary_buffer); + let audio_queued = audio_device.size() as f64; + let acceptable_latency = (audio_device.spec().freq as f64 * 0.2) * 4.0; + let min_latency = (audio_device.spec().freq as f64 * 0.02) * 4.0; + + if audio_device.status() != sdl2::audio::AudioStatus::Paused && audio_queued < min_latency { + let silence_buffer: Vec = vec![0; ((min_latency - audio_queued) * 2.0) as usize & !1]; + let _ = audio_device.queue_audio(&silence_buffer); + } + + if audio_queued < acceptable_latency { + let _ = audio_device.queue_audio(&primary_buffer); + } }