[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