[Scummvm-cvs-logs] CVS: tools compress_scumm_bun.cpp,1.18,1.19

Pawel Kolodziejski aquadran at users.sourceforge.net
Sun Jan 30 12:49:16 CET 2005


Update of /cvsroot/scummvm/tools
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16999

Modified Files:
	compress_scumm_bun.cpp 
Log Message:
only convert 8 bits samples

Index: compress_scumm_bun.cpp
===================================================================
RCS file: /cvsroot/scummvm/tools/compress_scumm_bun.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- compress_scumm_bun.cpp	30 Jan 2005 17:38:22 -0000	1.18
+++ compress_scumm_bun.cpp	30 Jan 2005 20:42:18 -0000	1.19
@@ -697,12 +697,10 @@
 	}
 }
 
-void writeWaveHeader(int s_size) {
-	int rate = 22050;
+void writeWaveHeader(int s_size, int rate, int chan) {
 	int bits = 16;
-	int chan = 2;
 	byte wav[44];
-	memset (wav, 0,	44);
+	memset(wav, 0, 44);
 	wav[0] = 'R';
 	wav[1] = 'I';
 	wav[2] = 'F';
@@ -751,7 +749,7 @@
 	_waveTmpFile = NULL;
 }
 
-void writeToTempWave(char *fileName, byte *output_data, unsigned int size) {
+void writeToTempWave(char *fileName, byte *output_data, unsigned int size, int bits) {
 	if (!_waveTmpFile) {
 		_waveTmpFile = fopen(fileName, "wb");
 		if (!_waveTmpFile) {
@@ -771,7 +769,6 @@
 		output_data[j + 0] = output_data[j + 1];
 		output_data[j + 1] = tmp;
 	}
-
 	if (fwrite(output_data, 1, size, _waveTmpFile) != size) {
 		printf("error write temp wave file");
 		exit(1);
@@ -826,16 +823,12 @@
 	return compFinal;
 }
 
-byte *convertTo16bitStereo(byte *ptr, int inputSize, int &outputSize, int bits, int freq, int channels) {
+byte *convertTo16bit(byte *ptr, int inputSize, int &outputSize, int bits, int freq, int channels) {
 	outputSize = inputSize;
 	if (bits == 8)
 		outputSize *= 2;
 	if (bits == 12)
 		outputSize = (outputSize / 3) * 4;
-	if (channels == 1)
-		outputSize *= 2;
-	if (freq == 11025)
-		outputSize *= 2;
 
 	byte *outputBuf = (byte *)malloc(outputSize);
 	if (bits == 8) {
@@ -845,18 +838,6 @@
 			uint16 val = (*src++ - 0x80) << 8;
 			*buf++ = (byte)(val >> 8);
 			*buf++ = (byte)val;
-			if (freq == 11025) {
-				*buf++ = (byte)(val >> 8);
-				*buf++ = (byte)val;
-			}
-			if (channels == 1) {
-				*buf++ = (byte)(val >> 8);
-				*buf++ = (byte)val;
-				if (freq == 11025) {
-					*buf++ = (byte)(val >> 8);
-					*buf++ = (byte)val;
-				}
-			}
 		}
 	}
 	if (bits == 12) {
@@ -872,33 +853,9 @@
 			value = ((((v2 & 0x0f) << 8) | v1) << 4) - 0x8000;
 			*decoded++ = (byte)((value >> 8) & 0xff);
 			*decoded++ = (byte)(value & 0xff);
-			if (freq == 11025) {
-				*decoded++ = (byte)((value >> 8) & 0xff);
-				*decoded++ = (byte)(value & 0xff);
-			}
-			if (channels == 1) {
-				*decoded++ = (byte)((value >> 8) & 0xff);
-				*decoded++ = (byte)(value & 0xff);
-				if (freq == 11025) {
-					*decoded++ = (byte)((value >> 8) & 0xff);
-					*decoded++ = (byte)(value & 0xff);
-				}
-			}
 			value = ((((v2 & 0xf0) << 4) | v3) << 4) - 0x8000;
 			*decoded++ = (byte)((value >> 8) & 0xff);
 			*decoded++ = (byte)(value & 0xff);
-			if (freq == 11025) {
-				*decoded++ = (byte)((value >> 8) & 0xff);
-				*decoded++ = (byte)(value & 0xff);
-			}
-			if (channels == 1) {
-				*decoded++ = (byte)((value >> 8) & 0xff);
-				*decoded++ = (byte)(value & 0xff);
-				if (freq == 11025) {
-					*decoded++ = (byte)((value >> 8) & 0xff);
-					*decoded++ = (byte)(value & 0xff);
-				}
-			}
 		}
 	}
 	if (bits == 16) {
@@ -908,10 +865,6 @@
 		while (loop_size--) {
 			*buf++ = *src++;
 			*buf++ = *src++;
-			if (channels == 1) {
-				*buf++ = *(src - 2);
-				*buf++ = *(src - 1);
-			}
 		}
 	}
 
@@ -976,11 +929,11 @@
 		int outputSize = 0;
 		int size = _region[l].length;
 		int offset = _region[l].offset;
-		byte *outputData = convertTo16bitStereo(ptr + offset, size, outputSize, bits, freq, channels);
-
+		byte *outputData = convertTo16bit(ptr + offset, size, outputSize, bits, freq, channels);
+		bits = 16;
 		sprintf(tmpPath, "%s/%s_reg%03d.wav", dir, filename, l);
-		writeToTempWave(tmpPath, outputData, outputSize);
-		writeWaveHeader(_waveDataSize);
+		writeToTempWave(tmpPath, outputData, outputSize, bits);
+		writeWaveHeader(_waveDataSize, freq, channels);
 
 		free(outputData);
 		sprintf(tmpPath, "%s/%s_reg%03d", dir, filename, l);
@@ -1024,10 +977,6 @@
 		size *= 2;
 	if (bits == 12)
 		size = (size / 3) * 4;
-	if (channels == 1)
-		size *= 2;
-	if (freq == 11025)
-		size *= 2;
 	value = size;
 }
 
@@ -1101,7 +1050,10 @@
 	cbundleTable[cbundleCurIndex].offset = startPos;
 
 	writeUint32BE(output, 'RMAP');
-	writeUint32BE(output, 1); // version
+	writeUint32BE(output, 2); // version
+	writeUint32BE(output, 16); // bits
+	writeUint32BE(output, freq);
+	writeUint32BE(output, channels);
 	writeUint32BE(output, numRegions);
 	writeUint32BE(output, numJumps);
 	writeUint32BE(output, numSyncs);





More information about the Scummvm-git-logs mailing list