[Scummvm-cvs-logs] CVS: scummvm/scumm/smush imuse_channel.cpp,1.25,1.26
Max Horn
fingolfin at users.sourceforge.net
Thu Dec 25 06:04:01 CET 2003
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1:/tmp/cvs-serv10556/smush
Modified Files:
imuse_channel.cpp
Log Message:
cleanup (TODO: reduce code duplication)
Index: imuse_channel.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/imuse_channel.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- imuse_channel.cpp 25 Dec 2003 08:25:03 -0000 1.25
+++ imuse_channel.cpp 25 Dec 2003 14:03:04 -0000 1.26
@@ -185,27 +185,29 @@
_tbufferSize += remaining_size;
}
}
+
+ // FIXME: Code duplication! See decode12BitsSample() in scumm/imuse_digi.cpp
+
int loop_size = _sbufferSize / 3;
- int new_size = loop_size * 2;
+ int new_size = loop_size * 4;
byte *keep, *decoded;
uint32 value;
- keep = decoded = new byte[new_size * 2];
+ keep = decoded = new byte[new_size];
assert(keep);
unsigned char * source = _sbuffer;
- while (loop_size--) {
+
+ while (loop_size--) {
byte v1 = *source++;
byte v2 = *source++;
byte v3 = *source++;
value = ((((v2 & 0x0f) << 8) | v1) << 4) - 0x8000;
- *decoded++ = (byte)((value >> 8) & 0xff);
- *decoded++ = (byte)(value & 0xff);
+ WRITE_BE_UINT16(decoded, value); decoded += 2;
value = ((((v2 & 0xf0) << 4) | v3) << 4) - 0x8000;
- *decoded++ = (byte)((value >> 8) & 0xff);
- *decoded++ = (byte)(value & 0xff);
+ WRITE_BE_UINT16(decoded, value); decoded += 2;
}
delete []_sbuffer;
_sbuffer = (byte *)keep;
- _sbufferSize = new_size * sizeof(int16);
+ _sbufferSize = new_size;
}
bool ImuseChannel::handleSubTags(int32 &offset) {
More information about the Scummvm-git-logs
mailing list