Browse Source

audio: Set (something close to) the correct silence value for U16 audio.

Partially fixes Bugzilla #4805.
Ryan C. Gordon 5 years ago
parent
commit
aef1ed4ac6
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/audio/SDL_audio.c

+ 7 - 0
src/audio/SDL_audio.c

@@ -1669,8 +1669,15 @@ SDL_CalculateAudioSpec(SDL_AudioSpec * spec)
 {
     switch (spec->format) {
     case AUDIO_U8:
+
+    // !!! FIXME: 0x80 isn't perfect for U16, but we can't fit 0x8000 in a
+    // !!! FIXME:  byte for memset() use. This is actually 0.1953 percent off
+    //  from silence. Maybe just don't use U16.
+    case AUDIO_U16LSB:
+    case AUDIO_U16MSB:
         spec->silence = 0x80;
         break;
+
     default:
         spec->silence = 0x00;
         break;