Browse Source

wav: Make sure the data size is a multiple of blockalign, not an exact match.

I _think_ this is a right thing to do; it fixes a .wav file I have here that
has blockalign==2 when channels==2 and bitspersample==16, which otherwise
would fail.
Ryan C. Gordon 4 years ago
parent
commit
003a16980c
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/audio/SDL_wave.c

+ 2 - 1
src/audio/SDL_wave.c

@@ -1334,7 +1334,8 @@ PCM_Init(WaveFile *file, size_t datalength)
     /* It wouldn't be that hard to support more exotic block sizes, but
      * the most common formats should do for now.
      */
-    if (format->blockalign * 8 != format->channels * format->bitspersample) {
+    /* Make sure we're a multiple of the blockalign, at least. */
+    if ((format->channels * format->bitspersample) % (format->blockalign * 8)) {
         return SDL_SetError("Unsupported block alignment");
     }