[Scummvm-git-logs] scummvm master -> 9518dc53411b7a80dbb6842e1426706d0edde536

AndywinXp noreply at scummvm.org
Wed Jul 13 05:50:13 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:
9518dc5341 SCUMM: DiMUSE: Fix if guard for quarter samplerate case


Commit: 9518dc53411b7a80dbb6842e1426706d0edde536
    https://github.com/scummvm/scummvm/commit/9518dc53411b7a80dbb6842e1426706d0edde536
Author: AndywinXp (andywinxp at gmail.com)
Date: 2022-07-13T07:50:04+02:00

Commit Message:
SCUMM: DiMUSE: Fix if guard for quarter samplerate case

Also, amend a5d4e15 which removed the half samplerate case.

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


diff --git a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
index 11c420e94aa..f7e7d70d507 100644
--- a/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
+++ b/engines/scumm/imuse_digi/dimuse_internalmixer.cpp
@@ -1075,6 +1075,22 @@ void IMuseDigiInternalMixer::mixBits8Stereo(uint8 *srcBuf, int32 inFrameCount, i
 				mixBufCurCell += 2;
 			}
 		}
+	} else if (2 * inFrameCount == feedSize) {
+		srcBuf_ptr = srcBuf;
+		if (inFrameCount - 1 != 0) {
+			for (int i = 0; i < inFrameCount - 1; i++) {
+				mixBufCurCell[0] += *((uint16 *)ampTable + srcBuf_ptr[0]);
+				mixBufCurCell[1] += *((uint16 *)ampTable + srcBuf_ptr[1]);
+				mixBufCurCell[2] += (*((int16 *)ampTable + srcBuf_ptr[0]) + *((int16 *)ampTable + srcBuf_ptr[2])) >> 1;
+				mixBufCurCell[3] += (*((int16 *)ampTable + srcBuf_ptr[1]) + *((int16 *)ampTable + srcBuf_ptr[3])) >> 1;
+				mixBufCurCell += 4;
+				srcBuf_ptr += 2;
+			}
+		}
+		mixBufCurCell[0] += *((uint16 *)ampTable + srcBuf_ptr[0]);
+		mixBufCurCell[1] += *((uint16 *)ampTable + srcBuf_ptr[1]);
+		mixBufCurCell[2] += *((uint16 *)ampTable + srcBuf_ptr[0]);
+		mixBufCurCell[3] += *((uint16 *)ampTable + srcBuf_ptr[1]);
 	} else if (2 * feedSize == inFrameCount) {
 		if (feedSize) {
 			srcBuf_ptr = srcBuf;
@@ -1085,7 +1101,7 @@ void IMuseDigiInternalMixer::mixBits8Stereo(uint8 *srcBuf, int32 inFrameCount, i
 				mixBufCurCell += 2;
 			}
 		}
-	} else if (2 * inFrameCount == feedSize) {
+	} else if (4 * inFrameCount == feedSize) {
 		srcBuf_ptr = srcBuf;
 		if (inFrameCount - 1 != 0) {
 			for (int i = 0; i < inFrameCount - 1; i++) {




More information about the Scummvm-git-logs mailing list