[Scummvm-cvs-logs] CVS: scummvm/simon sound.cpp,1.73,1.74

kirben kirben at users.sourceforge.net
Thu Jan 13 16:40:21 CET 2005


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

Modified Files:
	sound.cpp 
Log Message:

Change SIMON to use makeWAVStream - patch #1101740


Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/sound.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- sound.cpp	9 Jan 2005 15:57:38 -0000	1.73
+++ sound.cpp	14 Jan 2005 00:38:54 -0000	1.74
@@ -116,70 +116,20 @@
 		free(_offsets);
 	delete _file;
 }
-
-#if !defined(__GNUC__)
-#pragma START_PACK_STRUCTS
-#endif
-
-struct WaveHeader {
-	uint32 riff;
-	uint32 unk;
-	uint32 wave;
-	uint32 fmt;
-
-	uint32 size;
-
-	uint16 format_tag;
-	uint16 channels;
-	uint32 samples_per_sec;
-	uint32 avg_bytes;
-
-	uint16 block_align;
-	uint16 bits_per_sample;
-} GCC_PACK;
-
-#if !defined(__GNUC__)
-#pragma END_PACK_STRUCTS
-#endif
 	
 void WavSound::playSound(uint sound, PlayingSoundHandle *handle, byte flags) {
 	if (_offsets == NULL)
 		return;
 
-	WaveHeader wave_hdr;
-	uint32 data[2];
-
-	flags |= SoundMixer::FLAG_AUTOFREE;
-
 	_file->seek(_offsets[sound], SEEK_SET);
 
-	// TODO: use loadWAVFromStream to load the WAVE data!
-	/*
-	int rate, size;
-	bye flags;
-	isValidWAV = loadWAVFromStream(*_file, size, rate, flags);
-	*/
-
-	if (_file->read(&wave_hdr, sizeof(wave_hdr)) != sizeof(wave_hdr) ||
-			wave_hdr.riff != MKID('RIFF') || wave_hdr.wave != MKID('WAVE')
-			|| wave_hdr.fmt != MKID('fmt ') || READ_LE_UINT16(&wave_hdr.format_tag) != 1
-			|| READ_LE_UINT16(&wave_hdr.channels) != 1
-			|| READ_LE_UINT16(&wave_hdr.bits_per_sample) != 8) {
-		error("playWav(%d): can't read RIFF header", sound);
-	}
-
-	_file->seek(FROM_LE_32(wave_hdr.size) - sizeof(wave_hdr) + 20, SEEK_CUR);
-
-	data[0] = _file->readUint32LE();
-	data[1] = _file->readUint32LE();
-	if (data[0] != 'atad') {
-		error("playWav(%d): can't read data header", sound);
+	// Try to load the WAVE data into an audio stream
+	AudioStream *stream = makeWAVStream(*_file);
+	if (!stream) {
+		error("playWav(%d): can't read WAVE header", sound);
 	}
 
-	byte *buffer = (byte *)malloc(data[1]);
-	_file->read(buffer, data[1]);
-
-	_mixer->playRaw(handle, buffer, data[1], FROM_LE_32(wave_hdr.samples_per_sec), flags);
+	_mixer->playInputStream(SoundMixer::kSFXAudioDataType, handle, stream);
 }
 
 void VocSound::playSound(uint sound, PlayingSoundHandle *handle, byte flags) {





More information about the Scummvm-git-logs mailing list