[Scummvm-cvs-logs] SF.net SVN: scummvm: [27724] tools/trunk

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Tue Jun 26 09:12:17 CEST 2007


Revision: 27724
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27724&view=rev
Author:   Kirben
Date:     2007-06-26 00:12:17 -0700 (Tue, 26 Jun 2007)

Log Message:
-----------
Fix sign issue, when using FLAC encoding, with raw input files.

Modified Paths:
--------------
    tools/trunk/compress.c
    tools/trunk/compress.h
    tools/trunk/compress_saga.cpp
    tools/trunk/compress_sword1.c

Modified: tools/trunk/compress.c
===================================================================
--- tools/trunk/compress.c	2007-06-26 05:51:47 UTC (rev 27723)
+++ tools/trunk/compress.c	2007-06-26 07:12:17 UTC (rev 27724)
@@ -49,20 +49,23 @@
 } flaccparams;
 
 typedef struct {
-    bool isLittleEndian, isStereo;
+	bool isLittleEndian;
+	bool isStereo;
+	bool isUnsigned;
 	uint8 bitsPerSample;
 } rawtype;
 
 lameparams encparms = { minBitrDef, maxBitrDef, false, algqualDef, vbrqualDef, 0 };
 oggencparams oggparms = { -1, -1, -1, oggqualDef, 0 };
 flaccparams flacparms;
-rawtype	rawAudioType = { false, false, 8 };
+rawtype	rawAudioType = { false, false, false, 8 };
 
 const char *tempEncoded = TEMP_MP3;
 
-void setRawAudioType(bool isLittleEndian, bool isStereo, uint8 bitsPerSample) {
+void setRawAudioType(bool isLittleEndian, bool isStereo, bool isUnsigned, uint8 bitsPerSample) {
 	rawAudioType.isLittleEndian = isLittleEndian;
 	rawAudioType.isStereo = isStereo;
+	rawAudioType.isUnsigned = isUnsigned;
 	rawAudioType.bitsPerSample = bitsPerSample;
 }
 
@@ -173,7 +176,8 @@
 		tmp += sprintf(tmp, "flac --best -b 1152 -f --lax --no-padding --no-seektable --no-ogg ");
 
 		if (rawInput) {
-			tmp += sprintf(tmp, "--force-raw-format --sign=unsigned ");
+			tmp += sprintf(tmp, "--force-raw-format ");
+			tmp += sprintf(tmp, "--sign=%s ", (rawAudioType.isUnsigned ? "unsigned" : "signed"));
 			tmp += sprintf(tmp, "--channels=%d ", (rawAudioType.isStereo ? 2 : 1));
 			tmp += sprintf(tmp, "--bps=%d ", rawAudioType.bitsPerSample);
 			tmp += sprintf(tmp, "--sample-rate=%d ", rawSamplerate);
@@ -300,7 +304,7 @@
 
 	assert(real_samplerate != -1);
 
-	setRawAudioType(false, false, 8);
+	setRawAudioType(false, false, true, 8);
 
 	/* Convert the raw temp file to OGG/MP3 */
 	encodeAudio(outName, true, real_samplerate, tempEncoded, compMode);

Modified: tools/trunk/compress.h
===================================================================
--- tools/trunk/compress.h	2007-06-26 05:51:47 UTC (rev 27723)
+++ tools/trunk/compress.h	2007-06-26 07:12:17 UTC (rev 27724)
@@ -60,7 +60,7 @@
 extern void extractAndEncodeWAV(const char *outName, FILE *input, CompressMode compMode);
 
 extern void encodeAudio(const char *inname, bool rawInput, int rawSamplerate, const char *outname, CompressMode compmode);
-extern void setRawAudioType(bool isLittleEndian, bool isStereo, uint8 bitsPerSample);
+extern void setRawAudioType(bool isLittleEndian, bool isStereo, bool isUnSigned, uint8 bitsPerSample);
 
 #if defined(__cplusplus)
 }

Modified: tools/trunk/compress_saga.cpp
===================================================================
--- tools/trunk/compress_saga.cpp	2007-06-26 05:51:47 UTC (rev 27723)
+++ tools/trunk/compress_saga.cpp	2007-06-26 07:12:17 UTC (rev 27724)
@@ -175,13 +175,13 @@
 		writeHeader(outputFile);
 
 		inStream = Audio::makeADPCMStream(&inputFileStream, inputSize, Audio::kADPCMOki);
-        inputData = (byte *)malloc(sampleSize);
+		inputData = (byte *)malloc(sampleSize);
 		inStream->readBuffer((int16*)inputData, inputSize * 2);
 		delete inStream;
 		writeBufferToFile(inputData, sampleSize, TEMP_RAW);
 		free(inputData);
 
-		setRawAudioType( true, sampleStereo != 0, sampleBits);
+		setRawAudioType( true, sampleStereo != 0, !soundInfo->isSigned, sampleBits);
 		encodeAudio(TEMP_RAW, true, sampleRate, tempEncoded, gCompMode);
 		return copyFile(tempEncoded, outputFile) + HEADER_SIZE;
 	}
@@ -195,7 +195,7 @@
 		free(inputData);
 		writeHeader(outputFile);
 
-		setRawAudioType( true, false, 8);
+		setRawAudioType( true, false, !soundInfo->isSigned, 8);
 		encodeAudio(TEMP_RAW, true, sampleRate, tempEncoded, gCompMode);
 		return copyFile(tempEncoded, outputFile) + HEADER_SIZE;
 	}
@@ -207,7 +207,7 @@
 		sampleStereo = soundInfo->stereo;
 		writeHeader(outputFile);
 
-		setRawAudioType( !soundInfo->isBigEndian, soundInfo->stereo, soundInfo->sampleBits);
+		setRawAudioType( !soundInfo->isBigEndian, soundInfo->stereo, !soundInfo->isSigned, soundInfo->sampleBits);
 		encodeAudio(TEMP_RAW, true, soundInfo->frequency, tempEncoded, gCompMode);
 		return copyFile(tempEncoded, outputFile) + HEADER_SIZE;
 	}
@@ -223,7 +223,7 @@
 
 		copyFile(inputFile, size, TEMP_RAW);
 
-		setRawAudioType( true, sampleStereo != 0, sampleBits);
+		setRawAudioType( true, sampleStereo != 0, !soundInfo->isSigned, sampleBits);
 		encodeAudio(TEMP_RAW, true, sampleRate, tempEncoded, gCompMode);
 		return copyFile(tempEncoded, outputFile) + HEADER_SIZE;
 	}

Modified: tools/trunk/compress_sword1.c
===================================================================
--- tools/trunk/compress_sword1.c	2007-06-26 05:51:47 UTC (rev 27723)
+++ tools/trunk/compress_sword1.c	2007-06-26 07:12:17 UTC (rev 27724)
@@ -475,7 +475,7 @@
 	int i;
 	char cluName[256], outName[256];
 
-	setRawAudioType(true, false, 16);
+	setRawAudioType(true, false, false, 16);
 	for (i = 1; i <= 2; i++) {
 		sprintf(cluName, "SPEECH/SPEECH%d.CLU", i);
 		clu = fopen(cluName, "rb");


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list