SDL: Limit DirectSound maximum sample rate

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;