Просмотр исходного кода

Limit DirectSound maximum sample rate

Regan Green 22 часов назад
Родитель
Сommit
f9e82031f4
1 измененных файлов с 2 добавлено и 1 удалено
  1. 2 1
      src/audio/directsound/SDL_directsound.c

+ 2 - 1
src/audio/directsound/SDL_directsound.c

@@ -526,6 +526,7 @@ static int DSOUND_OpenDevice(_THIS, const char *devname)
             tried_format = SDL_TRUE;
             tried_format = SDL_TRUE;
 
 
             this->spec.format = test_format;
             this->spec.format = test_format;
+            this->spec.freq = SDL_min(DSBFREQUENCY_MAX, this->spec.freq);
 
 
             /* Update the fragment size as size in bytes */
             /* Update the fragment size as size in bytes */
             SDL_CalculateAudioSpec(&this->spec);
             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.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.nSamplesPerSec = this->spec.freq;
                 wfmt.Format.nBlockAlign = wfmt.Format.nChannels * (wfmt.Format.wBitsPerSample / 8);
                 wfmt.Format.nBlockAlign = wfmt.Format.nChannels * (wfmt.Format.wBitsPerSample / 8);
                 wfmt.Format.nAvgBytesPerSec = wfmt.Format.nSamplesPerSec * wfmt.Format.nBlockAlign;
                 wfmt.Format.nAvgBytesPerSec = wfmt.Format.nSamplesPerSec * wfmt.Format.nBlockAlign;