diff --git a/src/audio/windib/SDL_dibaudio.c b/src/audio/windib/SDL_dibaudio.c index 757e4e7c7..c92b70e9c 100644 --- a/src/audio/windib/SDL_dibaudio.c +++ b/src/audio/windib/SDL_dibaudio.c @@ -248,7 +248,7 @@ DIB_OpenAudio(_THIS, SDL_AudioSpec * spec) waveformat.wFormatTag = WAVE_FORMAT_PCM; /* Determine the audio parameters from the AudioSpec */ - switch (spec->format & 0xFF) { + switch (SDL_AUDIO_BITSIZE(spec->format)) { case 8: /* Unsigned 8 bit audio data */ spec->format = AUDIO_U8; @@ -259,6 +259,11 @@ DIB_OpenAudio(_THIS, SDL_AudioSpec * spec) spec->format = AUDIO_S16; waveformat.wBitsPerSample = 16; break; + case 16: + /* Signed 32 bit audio data */ + spec->format = AUDIO_S32; + waveformat.wBitsPerSample = 32; + break; default: SDL_SetError("Unsupported audio format"); return (-1); diff --git a/src/audio/windx5/SDL_dx5audio.c b/src/audio/windx5/SDL_dx5audio.c index db4d62cc4..4188b60f6 100644 --- a/src/audio/windx5/SDL_dx5audio.c +++ b/src/audio/windx5/SDL_dx5audio.c @@ -658,7 +658,7 @@ DX5_OpenAudio(_THIS, SDL_AudioSpec * spec) waveformat.wFormatTag = WAVE_FORMAT_PCM; /* Determine the audio parameters from the AudioSpec */ - switch (spec->format & 0xFF) { + switch (SDL_AUDIO_BITSIZE(spec->format)) { case 8: /* Unsigned 8 bit audio data */ spec->format = AUDIO_U8; @@ -671,6 +671,12 @@ DX5_OpenAudio(_THIS, SDL_AudioSpec * spec) silence = 0x00; waveformat.wBitsPerSample = 16; break; + case 32: + /* Signed 32 bit audio data */ + spec->format = AUDIO_S32; + silence = 0x00; + waveformat.wBitsPerSample = 32; + break; default: SDL_SetError("Unsupported audio format"); return (-1);