[Scummvm-cvs-logs] CVS: scummvm/sound mixer.cpp,1.27,1.28
Max Horn
fingolfin at users.sourceforge.net
Mon Nov 18 17:51:02 CET 2002
Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv30029/sound
Modified Files:
mixer.cpp
Log Message:
Patch #639931: ALL: Fix for possible mixer distortion
Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- mixer.cpp 15 Nov 2002 10:47:36 -0000 1.27
+++ mixer.cpp 19 Nov 2002 01:50:15 -0000 1.28
@@ -837,8 +837,10 @@
while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
int16 sample = (int16)((scale_sample(*ch) * volume) / 32);
- *data++ += sample;
- *data++ += sample;
+ *data = clamped_add_16(*data, sample);
+ data++;
+ *data = clamped_add_16(*data, sample);
+ data++;
len--;
ch++;
_posInFrame++;
@@ -957,8 +959,10 @@
ch = _synth.pcm.samples[0] + _posInFrame;
while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
int16 sample = (int16)((scale_sample(*ch++) * volume) / 32);
- *data++ += sample;
- *data++ += sample;
+ *data = clamped_add_16(*data, sample);
+ data++;
+ *data = clamped_add_16(*data, sample);
+ data++;
len--;
_posInFrame++;
}
@@ -1083,10 +1087,12 @@
// Mix the samples in
for (uint i = 0; i < len; i++) {
int16 sample = (int16) ((int32) samples[i * channels] * volume / 256);
- *data++ += sample;
+ *data = clamped_add_16(*data, sample);
+ data++;
if (channels > 1)
sample = (int16) ((int32) samples[i * channels + 1] * volume / 256);
- *data++ += sample;
+ *data = clamped_add_16(*data, sample);
+ data++;
}
delete [] samples;
More information about the Scummvm-git-logs
mailing list