Browse Source

Fixed bus error when converting 16-bit to float for non-integral-multiple sample rates

Sam Lantinga 8 years ago
parent
commit
b2f6c4c1bd
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/audio/SDL_audio.c

+ 3 - 1
src/audio/SDL_audio.c

@@ -1191,8 +1191,10 @@ open_audio_device(const char *devname, int iscapture,
             return 0;
         }
         if (device->convert.needed) {
-            device->convert.len = (int) (((double) device->spec.size) /
+            device->convert.len = (int) (((double) device->spec.samples) /
                                          device->convert.len_ratio);
+            device->convert.len *= SDL_AUDIO_BITSIZE(device->spec.format) / 8;
+            device->convert.len *= device->spec.channels;
 
             device->convert.buf =
                 (Uint8 *) SDL_malloc(device->convert.len *