From f9e82031f47e254ea05c9562de2eba4c799d6015 Mon Sep 17 00:00:00 2001
From: Regan Green <[EMAIL REDACTED]>
Date: Wed, 25 Mar 2026 20:44:13 -0400
Subject: [PATCH] Limit DirectSound maximum sample rate
---
src/audio/directsound/SDL_directsound.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/audio/directsound/SDL_directsound.c b/src/audio/directsound/SDL_directsound.c
index 3c79452fd3db0..7cf7298a54256 100644
--- a/src/audio/directsound/SDL_directsound.c
+++ b/src/audio/directsound/SDL_directsound.c
@@ -526,6 +526,7 @@ static int DSOUND_OpenDevice(_THIS, const char *devname)
tried_format = SDL_TRUE;
this->spec.format = test_format;
+ this->spec.freq = SDL_min(DSBFREQUENCY_MAX, this->spec.freq);
/* Update the fragment size as size in bytes */
SDL_CalculateAudioSpec(&this->spec);
@@ -580,7 +581,7 @@ static int DSOUND_OpenDevice(_THIS, const char *devname)
}
wfmt.Format.wBitsPerSample = SDL_AUDIO_BITSIZE(this->spec.format);
- wfmt.Format.nChannels = this->spec.channels;
+ wfmt.Format.nChannels = (WORD)this->spec.channels;
wfmt.Format.nSamplesPerSec = this->spec.freq;
wfmt.Format.nBlockAlign = wfmt.Format.nChannels * (wfmt.Format.wBitsPerSample / 8);
wfmt.Format.nAvgBytesPerSec = wfmt.Format.nSamplesPerSec * wfmt.Format.nBlockAlign;