diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c
index 652119cb8..3258dca0d 100644
--- a/src/audio/SDL_audio.c
+++ b/src/audio/SDL_audio.c
@@ -1664,24 +1664,28 @@ SDL_NextAudioFormat(void)
     return format_list[format_idx][format_idx_sub++];
 }
 
+Uint8
+SDL_SilenceValueForFormat(const SDL_AudioFormat format)
+{
+    switch (format) {
+        // !!! 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:
+        case AUDIO_U8:
+            return 0x80;
+
+        default: break;
+    }            
+
+    return 0x00;
+}
+
 void
 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;
-    }
+    spec->silence = SDL_SilenceValueForFormat(spec->format);
     spec->size = SDL_AUDIO_BITSIZE(spec->format) / 8;
     spec->size *= spec->channels;
     spec->size *= spec->samples;
diff --git a/src/audio/SDL_audio_c.h b/src/audio/SDL_audio_c.h
index d7b34c299..aa3bf2084 100644
--- a/src/audio/SDL_audio_c.h
+++ b/src/audio/SDL_audio_c.h
@@ -52,6 +52,7 @@ extern SDL_AudioFormat SDL_FirstAudioFormat(SDL_AudioFormat format);
 extern SDL_AudioFormat SDL_NextAudioFormat(void);
 
 /* Function to calculate the size and silence for a SDL_AudioSpec */
+extern Uint8 SDL_SilenceValueForFormat(const SDL_AudioFormat format);
 extern void SDL_CalculateAudioSpec(SDL_AudioSpec * spec);
 
 /* Choose the audio filter functions below */
diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c
index f601baef2..71adb9e02 100644
--- a/src/audio/SDL_wave.c
+++ b/src/audio/SDL_wave.c
@@ -2081,6 +2081,8 @@ WaveLoad(SDL_RWops *src, WaveFile *file, SDL_AudioSpec *spec, Uint8 **audio_buf,
         break;
     }
 
+    spec->silence = SDL_SilenceValueForFormat(spec->format);
+
     /* Report the end position back to the cleanup code. */
     if (RIFFlengthknown) {
         chunk->position = RIFFend;