# HG changeset patch # User Ryan C. Gordon # Date 1157138225 0 # Node ID 0615fa58c0be4c4580fcf868c9a073ec0eb0e364 # Parent 575d5c9d4db828bca8d89216ac9c7d64bf422a6c Fixed S32 audio mixing, but I'm a bit nervous about the use of 64-bit datatypes here... diff -r 575d5c9d4db8 -r 0615fa58c0be src/audio/SDL_mixer.c --- a/src/audio/SDL_mixer.c Fri Sep 01 19:16:26 2006 +0000 +++ b/src/audio/SDL_mixer.c Fri Sep 01 19:17:05 2006 +0000 @@ -261,17 +261,17 @@ { const Uint32 *src32 = (Uint32 *) src; Uint32 *dst32 = (Uint32 *) dst; - Sint32 src1, src2; + Sint64 src1, src2; Sint64 dst_sample; const Sint64 max_audioval = ((((Sint64) 1) << (32 - 1)) - 1); const Sint64 min_audioval = -(((Sint64) 1) << (32 - 1)); len /= 4; while (len--) { - src1 = (Sint32) SDL_SwapLE32(*src32); + src1 = (Sint64) ((Sint32) SDL_SwapLE32(*src32)); src32++; ADJUST_VOLUME(src1, volume); - src2 = (Sint32) SDL_SwapLE32(*dst32); + src2 = (Sint64) ((Sint32) SDL_SwapLE32(*dst32)); dst_sample = src1 + src2; if (dst_sample > max_audioval) { dst_sample = max_audioval; @@ -287,17 +287,17 @@ { const Uint32 *src32 = (Uint32 *) src; Uint32 *dst32 = (Uint32 *) dst; - Sint32 src1, src2; + Sint64 src1, src2; Sint64 dst_sample; const Sint64 max_audioval = ((((Sint64) 1) << (32 - 1)) - 1); const Sint64 min_audioval = -(((Sint64) 1) << (32 - 1)); len /= 4; while (len--) { - src1 = (Sint32) SDL_SwapBE32(*src32); + src1 = (Sint64) ((Sint32) SDL_SwapBE32(*src32)); src32++; ADJUST_VOLUME(src1, volume); - src2 = (Sint32) SDL_SwapBE32(*dst32); + src2 = (Sint64) ((Sint32) SDL_SwapBE32(*dst32)); dst_sample = src1 + src2; if (dst_sample > max_audioval) { dst_sample = max_audioval;