From 9470c9f66131d16ca19d111d21948ba57a1a8eb3 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Thu, 18 Sep 2003 16:01:33 +0000 Subject: changed & documented the premixer semantics svn-id: r10294 --- scumm/player_v2.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'scumm') diff --git a/scumm/player_v2.cpp b/scumm/player_v2.cpp index d8910ebf63..b1f7be623c 100644 --- a/scumm/player_v2.cpp +++ b/scumm/player_v2.cpp @@ -381,7 +381,7 @@ Player_V2::Player_V2(Scumm *scumm) { set_pcjr(scumm->_midiDriver != MD_PCSPK); setMasterVolume(255); - _mixer->setupPremix(this, premix_proc); + _mixer->setupPremix(premix_proc, this); } Player_V2::~Player_V2() { @@ -820,10 +820,12 @@ void Player_V2::next_freqs(ChannelInfo *channel) { } } -void Player_V2::do_mix (int16 *data, uint len) { +void Player_V2::do_mix(int16 *data, uint len) { mutex_up(); uint step; + int16 *origData = data; + uint origLen = len; do { step = len; if (step > (_next_tick >> FIXP_SHIFT)) @@ -848,6 +850,12 @@ void Player_V2::do_mix (int16 *data, uint len) { } } } while (len -= step); + + // Convert mono data to stereo + for (int i = (origLen - 1); i >= 0; i--) { + origData[2 * i] = origData[2 * i + 1] = origData[i]; + } + mutex_down(); } @@ -911,7 +919,7 @@ void Player_V2::generateSpkSamples(int16 *data, uint len) { } } - memset (data, 0, sizeof(int16) * len); + memset(data, 0, sizeof(int16) * len); if (winning_channel != -1) { squareGenerator(0, _channels[winning_channel].d.freq, 0, 0, data, len); -- cgit v1.2.3