[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