[Scummvm-git-logs] scummvm master -> 84b2f1fd11be64a323cb85c1297f8b445c564b34

AndywinXp noreply at scummvm.org
Thu Jan 19 09:31:18 UTC 2023


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:
84b2f1fd11 JANITORIAL: SCUMM: Improve readability of SMUSH audio code


Commit: 84b2f1fd11be64a323cb85c1297f8b445c564b34
    https://github.com/scummvm/scummvm/commit/84b2f1fd11be64a323cb85c1297f8b445c564b34
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-01-19T10:31:13+01:00

Commit Message:
JANITORIAL: SCUMM: Improve readability of SMUSH audio code

Changed paths:
    engines/scumm/imuse_digi/dimuse_defs.h
    engines/scumm/imuse_digi/dimuse_engine.cpp
    engines/scumm/smush/smush_player.cpp
    engines/scumm/smush/smush_player.h


diff --git a/engines/scumm/imuse_digi/dimuse_defs.h b/engines/scumm/imuse_digi/dimuse_defs.h
index f9774897bea..7c105132a2b 100644
--- a/engines/scumm/imuse_digi/dimuse_defs.h
+++ b/engines/scumm/imuse_digi/dimuse_defs.h
@@ -51,7 +51,7 @@ namespace Scumm {
 #define DIMUSE_GROUP_MUSICEFF  4
 #define DIMUSE_BUFFER_SPEECH   1
 #define DIMUSE_BUFFER_MUSIC    2
-#define DIMUSE_BUFFER_SMUSH    3
+#define DIMUSE_BUFFER_SFX      3
 
 #define DIMUSE_TIMER_BASE_RATE_HZ       50
 #define DIMUSE_TIMER_BASE_RATE_USEC     20000  // 1000000 / 50Hz
diff --git a/engines/scumm/imuse_digi/dimuse_engine.cpp b/engines/scumm/imuse_digi/dimuse_engine.cpp
index 2856115d62d..6b463c38306 100644
--- a/engines/scumm/imuse_digi/dimuse_engine.cpp
+++ b/engines/scumm/imuse_digi/dimuse_engine.cpp
@@ -112,7 +112,7 @@ IMuseDigital::IMuseDigital(ScummEngine_v7 *scumm, int sampleRate, Audio::Mixer *
 		_filesHandler->allocSoundBuffer(DIMUSE_BUFFER_MUSIC, 220000, 22000, 44000);
 	}
 
-	_filesHandler->allocSoundBuffer(DIMUSE_BUFFER_SMUSH, 198000, 0, 0);
+	_filesHandler->allocSoundBuffer(DIMUSE_BUFFER_SFX, 198000, 0, 0);
 
 	if (_mixer->getOutputBufSize() != 0) {
 		// Let's find the optimal value for the maximum number of streams which can stay in the queue at once;
@@ -147,7 +147,7 @@ IMuseDigital::~IMuseDigital() {
 	_vm->getTimerManager()->removeTimerProc(timer_handler);
 	_filesHandler->deallocSoundBuffer(DIMUSE_BUFFER_SPEECH);
 	_filesHandler->deallocSoundBuffer(DIMUSE_BUFFER_MUSIC);
-	_filesHandler->deallocSoundBuffer(DIMUSE_BUFFER_SMUSH);
+	_filesHandler->deallocSoundBuffer(DIMUSE_BUFFER_SFX);
 	cmdsDeinit();
 	diMUSETerminate();
 	delete _internalMixer;
@@ -563,7 +563,7 @@ void IMuseDigital::stopSMUSHAudio() {
 					// remaining cases. This fixes instances in which exiting from a cutscene leaves both
 					// DiMUSE streams locked, with speech consequently unable to play and a "WARNING: three
 					// streams in use" message from streamerProcessStreams()
-					if (bufSize == 193900 || foundSoundId == DIMUSE_SMUSH_SOUNDID + DIMUSE_BUFFER_SMUSH)
+					if (bufSize == 193900 || foundSoundId == DIMUSE_SMUSH_SOUNDID + DIMUSE_BUFFER_SFX)
 						diMUSEStopSound(foundSoundId);
 				}
 
diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp
index d85a2c7799f..17784100b69 100644
--- a/engines/scumm/smush/smush_player.cpp
+++ b/engines/scumm/smush/smush_player.cpp
@@ -453,16 +453,16 @@ void SmushPlayer::handleIACT(int32 subSize, Common::SeekableReadStream &b) {
 		b.read(dataBuffer, bsize);
 
 		switch (userId) {
-		case 1:
-			bufId = 1;
+		case TRK_USERID_SPEECH:
+			bufId = DIMUSE_BUFFER_SPEECH;
 			volume = 127;
 			break;
-		case 2:
-			bufId = 2;
+		case TRK_USERID_MUSIC:
+			bufId = DIMUSE_BUFFER_MUSIC;
 			volume = 127;
 			break;
-		case 3:
-			bufId = 3;
+		case TRK_USERID_SFX:
+			bufId = DIMUSE_BUFFER_SFX;
 			volume = 127;
 			break;
 		default:
@@ -473,7 +473,7 @@ void SmushPlayer::handleIACT(int32 subSize, Common::SeekableReadStream &b) {
 				bufId = DIMUSE_BUFFER_MUSIC;
 				volume = 2 * userId - 400;
 			} else if (userId >= 300 && userId <= 363) {
-				bufId = DIMUSE_BUFFER_SMUSH;
+				bufId = DIMUSE_BUFFER_SFX;
 				volume = 2 * userId - 600;
 			} else {
 				free(dataBuffer);
@@ -1830,7 +1830,7 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 		code = _smushDispatch[idx].headerPtr;
 
 		switch (code[0]) {
-		case 1: // Init
+		case SAUD_OP_INIT:
 			_smushDispatch[idx].audioLength = 0;
 			buf = _smushDispatch[idx].headerPtr;
 			_smushDispatch[idx].audioRemaining = READ_BE_UINT32(buf + 2);
@@ -1850,20 +1850,21 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 				_smushDispatch[idx].currentOffset -= chunk;
 			}
 			break;
-		case 2:   //
-		case 8:	  //
-		case 9:	  // Compare params
-		case 0xA: //
-		case 0xB: //
+
+		case SAUD_OP_UPDATE_HEADER:
+		case SAUD_OP_COMPARE_GT:
+		case SAUD_OP_COMPARE_LT:
+		case SAUD_OP_COMPARE_EQ:
+		case SAUD_OP_COMPARE_NE:
 			subcode = code[4];
 			switch (subcode) {
-			case 0xFF:
+			case SAUD_VALUEID_ALL_VOLS:
 				value = _smushTrackVols[0];
 				break;
-			case 0xFE:
+			case SAUD_VALUEID_TRK_VOL:
 				value = _smushTracks[idx].volume;
 				break;
-			case 0xFD:
+			case SAUD_VALUEID_TRK_PAN:
 				value = _smushTracks[idx].pan;
 				break;
 			default:
@@ -1872,21 +1873,21 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 			}
 
 			switch (code[0]) {
-			case 2:
+			case SAUD_OP_UPDATE_HEADER:
 				if (value || (subcode == 0)) {
 					_smushDispatch[idx].headerPtr = &code[READ_BE_UINT16(&code[2])];
 				}
 				break;
-			case 8:
+			case SAUD_OP_COMPARE_GT:
 				value = value > code[5];
 				break;
-			case 9:
+			case SAUD_OP_COMPARE_LT:
 				value = value < code[5];
 				break;
-			case 0xA:
+			case SAUD_OP_COMPARE_EQ:
 				value = value == code[5];
 				break;
-			case 0xB:
+			case SAUD_OP_COMPARE_NE:
 				value = value != code[5];
 				break;
 			default:
@@ -1898,14 +1899,14 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 			} else {
 				_smushDispatch[idx].headerPtr = &code[READ_BE_UINT16(&code[2])];
 			}
-
 			break;
-		case 3: // Set params
+
+		case SAUD_OP_SET_PARAM:
 			switch (code[2]) {
-			case 0xFF:
+			case SAUD_VALUEID_ALL_VOLS:
 				_smushTrackVols[0] = code[3];
 				break;
-			case 0xFE:
+			case SAUD_VALUEID_TRK_VOL:
 				_smushTracks[idx].volume = code[3];
 				mixVolume = (_smushTrackVols[0] * _smushTracks[idx].volume) / 127;
 
@@ -1913,7 +1914,7 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 				if ((_smushTracks[idx].flags & TRK_TYPE_MASK) == IS_BKG_MUSIC && isChanActive(CHN_SPEECH))
 					mixVolume = (mixVolume * _gainReductionMultiplier) >> 8;
 				break;
-			case 0xFD:
+			case SAUD_VALUEID_TRK_PAN:
 				_smushTracks[idx].pan = code[3];
 				break;
 			default:
@@ -1922,15 +1923,16 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 			}
 			_smushDispatch[idx].headerPtr = &code[code[1] + 2];
 			break;
-		case 4: // Increment params
+
+		case SAUD_OP_INCR_PARAM:
 			switch (code[2]) {
-			case 0xFF:
+			case SAUD_VALUEID_ALL_VOLS:
 				_smushTrackVols[0] += code[3];
 				break;
-			case 0xFE:
+			case SAUD_VALUEID_TRK_VOL:
 				_smushTracks[idx].volume += code[3];
 				break;
-			case 0xFD:
+			case SAUD_VALUEID_TRK_PAN:
 				_smushTracks[idx].pan += code[3];
 				break;
 			default:
@@ -1939,7 +1941,8 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 			}
 			_smushDispatch[idx].headerPtr = &code[code[1] + 2];
 			break;
-		case 6: // Set offset
+
+		case SAUD_OP_SET_OFFSET:
 			_smushDispatch[idx].audioLength = 0;
 			buf = _smushDispatch[idx].headerPtr;
 			_smushDispatch[idx].audioRemaining = READ_BE_UINT32(buf + 2);
@@ -1960,7 +1963,8 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 				_smushDispatch[idx].currentOffset -= chunk;
 			}
 			break;
-		case 7: // Set audio length
+
+		case SAUD_OP_SET_LENGTH:
 			if (!_smushDispatch[idx].audioLength) {
 				_smushDispatch[idx].audioLength = READ_BE_UINT32(&code[6]);
 				_smushDispatch[idx].elapsedAudio = 0;
@@ -1995,8 +1999,8 @@ bool SmushPlayer::processAudioCodes(int idx, int32 &tmpFeedSize, int &mixVolume)
 					_smushDispatch[idx].currentOffset -= chunk;
 				}
 			}
-
 			break;
+
 		default:
 			_smushTracks[idx].state = TRK_STATE_INACTIVE;
 			_smushTracks[idx].groupId = GRP_MASTER;
diff --git a/engines/scumm/smush/smush_player.h b/engines/scumm/smush/smush_player.h
index 4660e069433..afab716feb0 100644
--- a/engines/scumm/smush/smush_player.h
+++ b/engines/scumm/smush/smush_player.h
@@ -54,6 +54,25 @@ namespace Scumm {
 
 #define TRK_TYPE_MASK 0xC0
 
+#define SAUD_OP_INIT          1
+#define SAUD_OP_UPDATE_HEADER 2
+#define SAUD_OP_SET_PARAM     3
+#define SAUD_OP_INCR_PARAM    4
+#define SAUD_OP_SET_OFFSET    6
+#define SAUD_OP_SET_LENGTH    7
+#define SAUD_OP_COMPARE_GT    8
+#define SAUD_OP_COMPARE_LT    9
+#define SAUD_OP_COMPARE_EQ    10
+#define SAUD_OP_COMPARE_NE    11
+
+#define SAUD_VALUEID_ALL_VOLS 0xFF
+#define SAUD_VALUEID_TRK_VOL  0xFE
+#define SAUD_VALUEID_TRK_PAN  0xFD
+
+#define TRK_USERID_SPEECH 1
+#define TRK_USERID_MUSIC  2
+#define TRK_USERID_SFX    3
+
 #define SMUSH_CODEC_RLE          1
 #define SMUSH_CODEC_RLE_ALT      3
 #define SMUSH_CODEC_UNCOMPRESSED 20




More information about the Scummvm-git-logs mailing list