[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