[Scummvm-cvs-logs] SF.net SVN: scummvm:[43466] scummvm/trunk/engines/saga

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Aug 17 13:06:28 CEST 2009


Revision: 43466
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43466&view=rev
Author:   thebluegr
Date:     2009-08-17 11:06:27 +0000 (Mon, 17 Aug 2009)

Log Message:
-----------
Made sound effect playing code consistent for compressed and uncompressed sounds. MemoryReadStream is used again instead of SeekableSubReadStream, as there will be issues when multiple sound effects or voices are played simultaneously

Modified Paths:
--------------
    scummvm/trunk/engines/saga/sndres.cpp
    scummvm/trunk/engines/saga/sound.cpp
    scummvm/trunk/engines/saga/sound.h

Modified: scummvm/trunk/engines/saga/sndres.cpp
===================================================================
--- scummvm/trunk/engines/saga/sndres.cpp	2009-08-17 10:48:03 UTC (rev 43465)
+++ scummvm/trunk/engines/saga/sndres.cpp	2009-08-17 11:06:27 UTC (rev 43466)
@@ -365,9 +365,13 @@
 
 		buffer.size = soundResourceLength;
 		buffer.soundType = resourceType;
-		buffer.soundFile = context->getFile(resourceData);
 		buffer.fileOffset = resourceData->offset + 9; // skip compressed sfx header: byte + uint16 + uint32 + byte + byte
 
+		if (!onlyHeader) {
+			buffer.buffer = (byte *)malloc(buffer.size);
+			readS.read(buffer.buffer, buffer.size);
+		}
+
 		result = true;
 		break;
 	default:

Modified: scummvm/trunk/engines/saga/sound.cpp
===================================================================
--- scummvm/trunk/engines/saga/sound.cpp	2009-08-17 10:48:03 UTC (rev 43465)
+++ scummvm/trunk/engines/saga/sound.cpp	2009-08-17 11:06:27 UTC (rev 43466)
@@ -91,25 +91,22 @@
 			_mixer->playRaw(Audio::Mixer::kSFXSoundType, handle, buffer.buffer,
 					buffer.size, buffer.frequency, flags, -1, volume);
 	} else {
-		Audio::AudioStream *stream = NULL;
-		Common::SeekableSubReadStream *soundStream = 
-				new Common::SeekableSubReadStream(buffer.soundFile, (uint32)buffer.fileOffset + 9, 
-				(uint32)buffer.fileOffset + buffer.size - 9);
+		Audio::AudioStream *stream = 0;
 
 		switch (buffer.soundType) {
 #ifdef USE_MAD
 			case kSoundMP3:
-				stream = Audio::makeMP3Stream(soundStream, true);
+				stream = Audio::makeMP3Stream(new Common::MemoryReadStream(buffer.buffer, buffer.size, true), true);
 				break;
 #endif
 #ifdef USE_VORBIS
 			case kSoundOGG:
-				stream = Audio::makeVorbisStream(soundStream, true);
+				stream = Audio::makeVorbisStream(new Common::MemoryReadStream(buffer.buffer, buffer.size, true), true);
 				break;
 #endif
 #ifdef USE_FLAC
 			case kSoundFLAC:
-				stream = Audio::makeFlacStream(soundStream, true);
+				stream = Audio::makeFlacStream(new Common::MemoryReadStream(buffer.buffer, buffer.size, true), true);
 				break;
 #endif
 			default:

Modified: scummvm/trunk/engines/saga/sound.h
===================================================================
--- scummvm/trunk/engines/saga/sound.h	2009-08-17 10:48:03 UTC (rev 43465)
+++ scummvm/trunk/engines/saga/sound.h	2009-08-17 11:06:27 UTC (rev 43466)
@@ -54,7 +54,6 @@
 	size_t originalSize;
 	bool isBigEndian;
 	GameSoundTypes soundType;
-	Common::File *soundFile;
 	size_t fileOffset;
 };
 


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