[Scummvm-git-logs] scummvm master -> 344349dbd92d71ffea956d81f7fa9a292892ed28

AndywinXp noreply at scummvm.org
Sun Nov 27 11:25:19 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
344349dbd9 SCUMM: DiMUSE: Allow original mono mixing routines to work


Commit: 344349dbd92d71ffea956d81f7fa9a292892ed28
    https://github.com/scummvm/scummvm/commit/344349dbd92d71ffea956d81f7fa9a292892ed28
Author: AndywinXp (andywinxp at gmail.com)
Date: 2022-11-27T12:25:14+01:00

Commit Message:
SCUMM: DiMUSE: Allow original mono mixing routines to work

These changes make use of _mixer->getOutputStereo() to select the proper number of audio channels.
This makes it possible to have mono audio produced using the proper DiMUSE internal mixer mono
routines, instead of having the ScummVM mixer folding down a stereo mix.

Changed paths:
    engines/scumm/imuse_digi/dimuse_internalmixer.cpp
    engines/scumm/imuse_digi/dimuse_waveout.cpp


diff --git a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
index f7e7d70d507..43f7d1ccccc 100644
--- a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
+++ b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
@@ -31,8 +31,8 @@
 namespace Scumm {
 
 IMuseDigiInternalMixer::IMuseDigiInternalMixer(Audio::Mixer *mixer, bool isEarlyDiMUSE) {
-	_stream = Audio::makeQueuingAudioStream(DIMUSE_SAMPLERATE, true);
 	_mixer = mixer;
+	_stream = Audio::makeQueuingAudioStream(DIMUSE_SAMPLERATE, _mixer->getOutputStereo());
 	_isEarlyDiMUSE = isEarlyDiMUSE;
 	_radioChatter = 0;
 	_amp8Table = nullptr;
diff --git a/engines/scumm/imuse_digi/dimuse_waveout.cpp b/engines/scumm/imuse_digi/dimuse_waveout.cpp
index d3433c31996..39f9b83163c 100644
--- a/engines/scumm/imuse_digi/dimuse_waveout.cpp
+++ b/engines/scumm/imuse_digi/dimuse_waveout.cpp
@@ -27,7 +27,7 @@ int IMuseDigital::waveOutInit(int sampleRate, waveOutParamsStruct *waveOutSettin
 	_waveOutSampleRate = sampleRate;
 
 	_waveOutBytesPerSample = 2;
-	_waveOutNumChannels = 2;
+	_waveOutNumChannels = _mixer->getOutputStereo() ? 2 : 1;
 	_waveOutZeroLevel = 0;
 	_waveOutPreferredFeedSize = DIMUSE_FEEDSIZE;
 
@@ -92,7 +92,12 @@ void IMuseDigital::waveOutCallback() {
 }
 
 byte IMuseDigital::waveOutGetStreamFlags() {
-	byte flags = Audio::FLAG_16BITS | Audio::FLAG_STEREO;
+	byte flags = Audio::FLAG_16BITS;
+
+	if (_mixer->getOutputStereo()) {
+		flags |= Audio::FLAG_STEREO;
+	}
+
 #ifdef SCUMM_LITTLE_ENDIAN
 	flags |= Audio::FLAG_LITTLE_ENDIAN;
 #endif




More information about the Scummvm-git-logs mailing list