[Scummvm-cvs-logs] CVS: scummvm/sound mixer.cpp,1.25,1.26
Lionel Ulmer
bbrox at users.sourceforge.net
Mon May 20 13:36:01 CEST 2002
- Previous message: [Scummvm-cvs-logs] CVS: scummvm actor.cpp,1.69,1.70 object.cpp,1.69,1.70 script.cpp,1.59,1.60 scumm.h,1.165,1.166 scummvm.cpp,1.157,1.158
- Next message: [Scummvm-cvs-logs] CVS: scummvm x11.cpp,1.28,1.29
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/sound
In directory usw-pr-cvs1:/tmp/cvs-serv21428/sound
Modified Files:
mixer.cpp
Log Message:
Add volume control like it is done for MP3 to the 16 bit 'mixers' (ie
using a 32 level only volume range).
Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- mixer.cpp 19 May 2002 20:38:53 -0000 1.25
+++ mixer.cpp 20 May 2002 20:35:25 -0000 1.26
@@ -264,12 +264,13 @@
}
static void mix_signed_mono_16(int16 *data, uint len, byte **s_ptr, uint32 *fp_pos_ptr, int fp_speed, const int16 *vol_tab) {
uint32 fp_pos = *fp_pos_ptr;
+ unsigned char volume = ((int) vol_tab[1]) * 32 / 255;
byte *s = *s_ptr;
do {
+ int16 sample = (int16) (((int32) ((*s << 8) | *(s + 1))) * volume / 32);
fp_pos += fp_speed;
- // FIXME: missing volume table
- *data++ += ((*s << 8) | *(s + 1));
- *data++ += ((*s << 8) | *(s + 1));
+ *data++ += sample;
+ *data++ += sample;
s += (fp_pos >> 16) << 1;
fp_pos &= 0x0000FFFF;
} while (--len);
@@ -282,12 +283,12 @@
}
static void mix_signed_stereo_16(int16 *data, uint len, byte **s_ptr, uint32 *fp_pos_ptr, int fp_speed, const int16 *vol_tab) {
uint32 fp_pos = *fp_pos_ptr;
+ unsigned char volume = ((int) vol_tab[1]) * 32 / 255;
byte *s = *s_ptr;
do {
fp_pos += fp_speed;
- // FIXME: missing volume table
- *data++ += ((*s << 8) | *(s + 1));
- *data++ += ((*(s + 2) << 8) | *(s + 3));
+ *data++ += (int16) ((((int32) ((*(s ) << 8) | *(s + 1))) * volume) / 32);
+ *data++ += (int16) ((((int32) ((*(s + 2) << 8) | *(s + 3))) * volume) / 32);
s += (fp_pos >> 16) << 2;
fp_pos &= 0x0000FFFF;
} while (--len);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm actor.cpp,1.69,1.70 object.cpp,1.69,1.70 script.cpp,1.59,1.60 scumm.h,1.165,1.166 scummvm.cpp,1.157,1.158
- Next message: [Scummvm-cvs-logs] CVS: scummvm x11.cpp,1.28,1.29
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list