Commit b98b5adcaea159fc6a9753f808875acf7d3ee945

Ryan C. Gordon 2021-03-15T10:21:36

wasapi: Don't use the system's resampler.

diff --git a/src/audio/wasapi/SDL_wasapi.c b/src/audio/wasapi/SDL_wasapi.c
index e74f80c..63c06e1 100644
--- a/src/audio/wasapi/SDL_wasapi.c
+++ b/src/audio/wasapi/SDL_wasapi.c
@@ -551,6 +551,9 @@ WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
         return WIN_SetErrorFromHRESULT("WASAPI can't determine minimum device period", ret);
     }
 
+#if 1  /* we're getting reports that WASAPI's resampler introduces distortions, so it's disabled for now. --ryan. */
+    this->spec.freq = waveformat->nSamplesPerSec;  /* force sampling rate so our resampler kicks in, if necessary. */
+#else
     /* favor WASAPI's resampler over our own, in Win7+. */
     if (this->spec.freq != waveformat->nSamplesPerSec) {
         /* RATEADJUST only works with output devices in share mode, and is available in Win7 and later.*/
@@ -558,11 +561,11 @@ WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
             streamflags |= AUDCLNT_STREAMFLAGS_RATEADJUST;
             waveformat->nSamplesPerSec = this->spec.freq;
             waveformat->nAvgBytesPerSec = waveformat->nSamplesPerSec * waveformat->nChannels * (waveformat->wBitsPerSample / 8);
-        }
-        else {
+        } else {
             this->spec.freq = waveformat->nSamplesPerSec;  /* force sampling rate so our resampler kicks in. */
         }
     }
+#endif
 
     streamflags |= AUDCLNT_STREAMFLAGS_EVENTCALLBACK;
     ret = IAudioClient_Initialize(client, sharemode, streamflags, 0, 0, waveformat, NULL);