[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse_codecs.cpp,1.11,1.12

Max Horn fingolfin at users.sourceforge.net
Sun Jun 26 17:01:15 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv776

Modified Files:
	dimuse_codecs.cpp 
Log Message:
Fix handling of music data in COMI

Index: dimuse_codecs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_codecs.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- dimuse_codecs.cpp	24 Jun 2005 19:09:12 -0000	1.11
+++ dimuse_codecs.cpp	27 Jun 2005 00:00:32 -0000	1.12
@@ -576,7 +576,7 @@
 				memcpy(dst, src, firstWord);
 				dst += firstWord;
 				src += firstWord;
-				assert((firstWord & 3) == 0);
+				assert((firstWord & 1) == 0);
 				outputSamplesLeft -= firstWord / 2;
 			} else {
 				// Read the seed values for the decoder.
@@ -590,7 +590,6 @@
 				}
 			}
 
-			outputSamplesLeft /= channels;
 			totalBitOffset = 0;
 			// The channels are encoded separately.
 			for (int chan = 0; chan < channels; chan++) {
@@ -604,7 +603,12 @@
 				// that by using a variables dest offset:
 				destPos = chan * 2;
 
-				for (i = 0; i < outputSamplesLeft; ++i) {
+				const int bound = (channels == 1)
+									? outputSamplesLeft 
+									: ((chan == 0)
+										? (outputSamplesLeft+1) / 2
+										: outputSamplesLeft / 2);
+				for (i = 0; i < bound; ++i) {
 					// Determine the size (in bits) of the next data packet
 					const int32 curTableEntryBitCount = _destImcTable[curTablePos];
 					assert(2 <= curTableEntryBitCount && curTableEntryBitCount <= 7);





More information about the Scummvm-git-logs mailing list