tweak audio queue formula

This commit is contained in:
Logan McNaughton committed 2026-01-20 13:05:32 +01:00
1 parent bfad71f09f
commit 1aa879d759
2 files changed
+3 -4

No files matched your search

+1 -2
View File
@@ -45,11 +45,10 @@ fn get_remaining_dma_length(device: &device::Device) -> u64 {
}
fn get_dma_duration(device: &device::Device) -> u64 {
let samples_per_sec = device.vi.clock / (1 + device.ai.regs[AI_DACRATE_REG as usize]) as u64;
let bytes_per_sample = 4; /* XXX: assume 16bit stereo - should depends on bitrate instead */
let length = (device.ai.regs[AI_LEN_REG as usize] & !7) as u64;
length * (device.cpu.clock_rate / (bytes_per_sample * samples_per_sec))
length * (device.cpu.clock_rate / (bytes_per_sample * device.ai.freq))
}
fn do_dma(device: &mut device::Device) {
+2 -2
View File
@@ -85,8 +85,8 @@ pub fn play_audio(device: &device::Device, dram_addr: usize, length: u64) {
let audio_queued =
unsafe { sdl3_sys::audio::SDL_GetAudioStreamQueued(device.ui.audio.audio_stream) } as f64;
let acceptable_latency = (device.ai.freq as f64 * 0.2) * 4.0;
let min_latency = (device.ai.freq as f64 * 0.02) * 4.0;
let min_latency = device.ai.freq as f64 * device.vi.frame_time * 4.0;
let acceptable_latency = min_latency * 8.0;
if audio_queued < min_latency {
let silence_buffer: Vec<u8> = vec![0; min_latency as usize & !3];