diff options
-rw-r--r-- | sound/mixer.cpp | 16 | ||||
-rw-r--r-- | sound/mixer.h | 4 |
2 files changed, 16 insertions, 4 deletions
diff --git a/sound/mixer.cpp b/sound/mixer.cpp index c49d09b908..f1cab83ff7 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -23,6 +23,16 @@ #include "stdafx.h" #include "scumm.h" +SoundMixer::SoundMixer() +{ + _volume_table = (int16 *)calloc(256 * sizeof(int16), 1); +} + +SoundMixer::~SoundMixer() +{ + free(_volume_table); +} + void SoundMixer::uninsert(Channel * chan) { @@ -146,8 +156,6 @@ void SoundMixer::on_generate_samples(void *s, byte *samples, int len) bool SoundMixer::bind_to_system(OSystem *syst) { - _volume_table = (int16 *)calloc(256 * sizeof(int16), 1); - uint rate = (uint) syst->property(OSystem::PROP_GET_SAMPLE_RATE, 0); _output_rate = rate; @@ -211,10 +219,10 @@ void SoundMixer::set_volume(int volume) // The volume table takes 8 bit unsigned data as index and returns 16 bit signed for (i = 0; i < 128; i++) - _volume_table[i] = i * volume ; + _volume_table[i] = i * volume; for (i = -128; i < 0; i++) - _volume_table[i+256] = i * volume ; + _volume_table[i+256] = i * volume; } void SoundMixer::set_music_volume(int volume) diff --git a/sound/mixer.h b/sound/mixer.h index 3bf5aaf755..9ce371acd7 100644 --- a/sound/mixer.h +++ b/sound/mixer.h @@ -24,6 +24,7 @@ #define MIXER_H #include <stdio.h> + #ifdef COMPRESSED_SOUND_FILE #include <mad.h> #endif @@ -146,6 +147,9 @@ public: Channel *_channels[NUM_CHANNELS]; PlayingSoundHandle *_handles[NUM_CHANNELS]; + SoundMixer(); + ~SoundMixer(); + int insert_at(PlayingSoundHandle *handle, int index, Channel * chan); void append(void *data, uint32 len); void uninsert(Channel * chan); |