[Scummvm-cvs-logs] CVS: scummvm/sound mixer.cpp,1.41,1.42
Max Horn
fingolfin at users.sourceforge.net
Sun Jul 28 13:47:02 CEST 2002
Update of /cvsroot/scummvm/scummvm/sound
In directory usw-pr-cvs1:/tmp/cvs-serv5628
Modified Files:
mixer.cpp
Log Message:
fixed volume table (that was a neat trick, that int8 cast, really got me; but I prefer readability over the 5 ns time saved <g>)
Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- mixer.cpp 28 Jul 2002 15:03:45 -0000 1.41
+++ mixer.cpp 28 Jul 2002 20:46:07 -0000 1.42
@@ -201,8 +201,12 @@
else if (volume < 0)
volume = 0;
- for (int i = 0; i < 256; i++)
- _volume_table[i] = (i + 1) * volume - 1;
+ // The volume table takes 8 bit unsigned data as index and returns 16 bit signed
+ for (int i = 0; i < 128; i++)
+ _volume_table[i] = i * volume ;
+
+ for (int i = -128; i < 0; i++)
+ _volume_table[i+256] = i * volume ;
}
void SoundMixer::set_music_volume(int volume)
@@ -317,11 +321,11 @@
{
int val = a + b;
- if (val > 32767)
+ if (val > 32767) {
return 32767;
- else if (val < -32768)
+ } else if (val < -32768) {
return -32768;
- else
+ } else
return val;
}
@@ -454,9 +458,8 @@
static int16 *mix_signed_mono_16(int16 *data, uint * len_ptr, byte **s_ptr, uint32 *fp_pos_ptr,
int fp_speed, const int16 *vol_tab, byte *s_end)
{
- printf("mix_signed_mono_16\n");
uint32 fp_pos = *fp_pos_ptr;
- unsigned char volume = ((int)vol_tab[1]) * 32 / 255;
+ unsigned char volume = ((int)vol_tab[1]) / 8;
byte *s = *s_ptr;
uint len = *len_ptr;
do {
@@ -488,9 +491,8 @@
static int16 *mix_signed_stereo_16(int16 *data, uint * len_ptr, byte **s_ptr, uint32 *fp_pos_ptr,
int fp_speed, const int16 *vol_tab, byte *s_end)
{
- printf("mix_signed_stereo_16\n");
uint32 fp_pos = *fp_pos_ptr;
- unsigned char volume = ((int)vol_tab[1]) * 32 / 255;
+ unsigned char volume = ((int)vol_tab[1]) / 8;
byte *s = *s_ptr;
uint len = *len_ptr;
do {
@@ -736,7 +738,8 @@
{
mad_fixed_t const *ch;
const int16 *vol_tab = _mixer->_volume_table;
- unsigned char volume = ((int)vol_tab[1]) * 32 / 255;
+// unsigned char volume = ((int)vol_tab[1]) * 32 / 255;
+ unsigned char volume = ((int)vol_tab[1]) / 8;
if (_to_be_destroyed) {
real_destroy();
@@ -831,7 +834,7 @@
mad_fixed_t const *ch;
mad_timer_t frame_duration;
// unsigned char volume = _mixer->_music_volume * 32 / 255;
- unsigned char volume = _mixer->_music_volume >> 3;
+ unsigned char volume = _mixer->_music_volume / 8;
if (_to_be_destroyed) {
real_destroy();
More information about the Scummvm-git-logs
mailing list