aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorMax Horn2002-07-27 13:16:32 +0000
committerMax Horn2002-07-27 13:16:32 +0000
commit7fb81392105a774a6001f3e08f4b736e636193e2 (patch)
tree6efbc15c82ae7ec09e22d0a84cd9f78f54dbb5d4 /sound
parent853e3efbc3704b055aae771d1a3a0e5b895d06ad (diff)
downloadscummvm-rg350-7fb81392105a774a6001f3e08f4b736e636193e2.tar.gz
scummvm-rg350-7fb81392105a774a6001f3e08f4b736e636193e2.tar.bz2
scummvm-rg350-7fb81392105a774a6001f3e08f4b736e636193e2.zip
fixed some warnings, fixed clamped_add_16 to do the right thing now (wow, nobody noticed this.. :-)
svn-id: r4652
Diffstat (limited to 'sound')
-rw-r--r--sound/mixer.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp
index aac7c6175c..55c612ee29 100644
--- a/sound/mixer.cpp
+++ b/sound/mixer.cpp
@@ -230,7 +230,7 @@ SoundMixer::Channel_RAW::Channel_RAW(SoundMixer *mixer, void *sound, uint32 size
_to_be_destroyed = false;
_realsize = size;
- /* adjust the magnitute to prevent division error */
+ // adjust the magnitude to prevent division error
while (size & 0xFFFF0000)
size >>= 1, rate = (rate >> 1) + 1;
@@ -304,8 +304,11 @@ protected:
static inline int clamped_add_16(int a, int b)
{
int val = a + b;
- if (val > 0xFFFF)
- return 0xFFFF;
+
+ if (val > 32767)
+ return 32767;
+ else if (val < -32768)
+ return -32768;
else
return val;
}
@@ -325,9 +328,9 @@ static int16 *mix_signed_mono_8(int16 *data, uint * len_ptr, byte **s_ptr, uint3
result = interp.interpolate(fp_pos);
*data = clamped_add_16(*data, result);
- *data++;
+ data++;
*data = clamped_add_16(*data, result);
- *data++;
+ data++;
fp_pos += fp_speed;
inc = fp_pos >> 16;
@@ -364,9 +367,9 @@ static int16 *mix_unsigned_mono_8(int16 *data, uint * len_ptr, byte **s_ptr, uin
result = interp.interpolate(fp_pos);
*data = clamped_add_16(*data, result);
- *data++;
+ data++;
*data = clamped_add_16(*data, result);
- *data++;
+ data++;
fp_pos += fp_speed;
inc = fp_pos >> 16;
@@ -409,9 +412,9 @@ static int16 *mix_unsigned_stereo_8(int16 *data, uint * len_ptr, byte **s_ptr, u
do {
do {
*data = clamped_add_16(*data, left.interpolate(fp_pos));
- *data++;
+ data++;
*data = clamped_add_16(*data, right.interpolate(fp_pos));
- *data++;
+ data++;
fp_pos += fp_speed;
inc = (fp_pos >> 16) << 1;
@@ -449,9 +452,9 @@ static int16 *mix_signed_mono_16(int16 *data, uint * len_ptr, byte **s_ptr, uint
fp_pos += fp_speed;
*data = clamped_add_16(*data, sample);
- *data++;
+ data++;
*data = clamped_add_16(*data, sample);
- *data++;
+ data++;
s += (fp_pos >> 16) << 1;
fp_pos &= 0x0000FFFF;
@@ -482,9 +485,9 @@ static int16 *mix_signed_stereo_16(int16 *data, uint * len_ptr, byte **s_ptr, ui
fp_pos += fp_speed;
*data = clamped_add_16(*data, (((int16)(*(s) << 8) | *(s + 1)) * volume) / 32);
- *data++;
+ data++;
*data = clamped_add_16(*data, (((int16)(*(s + 2) << 8) | *(s + 3)) * volume) / 32);
- *data++;
+ data++;
s += (fp_pos >> 16) << 2;
fp_pos &= 0x0000FFFF;
@@ -504,7 +507,7 @@ static int16 *mix_unsigned_stereo_16(int16 *data, uint * len_ptr, byte **s_ptr,
return data;
}
-static int16 *(*mixer_helper_table[16]) (int16 *data, uint * len_ptr, byte **s_ptr,
+static int16 *(*mixer_helper_table[8]) (int16 *data, uint * len_ptr, byte **s_ptr,
uint32 *fp_pos_ptr, int fp_speed, const int16 *vol_tab,
byte *s_end) = {
mix_signed_mono_8, mix_unsigned_mono_8, mix_signed_stereo_8, mix_unsigned_stereo_8,