[Scummvm-cvs-logs] CVS: scummvm/saga sndres.cpp,1.38,1.39
Torbjörn Andersson
eriktorbjorn at users.sourceforge.net
Tue Jan 11 00:33:19 CET 2005
Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30867
Modified Files:
sndres.cpp
Log Message:
Use Fingolfin's new WAV code.
Index: sndres.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sndres.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- sndres.cpp 9 Jan 2005 23:41:22 -0000 1.38
+++ sndres.cpp 11 Jan 2005 08:32:10 -0000 1.39
@@ -199,61 +199,19 @@
}
int SndRes::loadWavSound(byte *snd_res, size_t snd_res_len, SOUNDBUFFER *snd_buf_i) {
- // TODO: This function should, perhaps, be made more robust.
-
- // TODO: use loadWAVFromStream to load the WAVE data!
- /*
+ Common::MemoryReadStream readS(snd_res, snd_res_len);
int rate, size;
- bye flags;
- bool isValidWAV;
- Common::MemoryReadStream stream(snd_res, snd_res_len);
- isValidWAV = loadWAVFromStream(stream, size, rate, flags);
- */
-
- MemoryReadStreamEndian readS(snd_res, snd_res_len, IS_BIG_ENDIAN);
-
- byte buf[4];
-
- readS.read(buf, sizeof(buf));
- if (memcmp(buf, "RIFF", sizeof(buf)) != 0) {
- return FAILURE;
- }
-
- readS.readUint32();
-
- readS.read(buf, sizeof(buf));
- if (memcmp(buf, "WAVE", sizeof(buf)) != 0) {
- return FAILURE;
- }
+ byte flags;
- readS.read(buf, sizeof(buf));
- if (memcmp(buf, "fmt ", sizeof(buf)) != 0) {
+ if (!loadWAVFromStream(readS, size, rate, flags)) {
return FAILURE;
}
- uint32 len = readS.readUint32();
- uint32 pos = readS.pos();
-
- readS.readUint16();
-
- snd_buf_i->s_stereo = (readS.readUint16() == 2) ? 1 : 0;
- snd_buf_i->s_freq = readS.readUint16();
+ snd_buf_i->s_stereo = ((flags & SoundMixer::FLAG_STEREO) != 0);
+ snd_buf_i->s_freq = rate;
snd_buf_i->s_samplebits = 16;
snd_buf_i->s_signed = 1;
-
- readS.seek(pos + len);
-
- for (;;) {
- readS.read(buf, sizeof(buf));
- if (memcmp(buf, "data", sizeof(buf)) == 0) {
- break;
- }
-
- len = readS.readUint32();
- readS.seek(len, SEEK_CUR);
- }
-
- snd_buf_i->s_buf_len = readS.readUint32();
+ snd_buf_i->s_buf_len = size;
byte *data = (byte *)malloc(snd_buf_i->s_buf_len);
if (!data) {
More information about the Scummvm-git-logs
mailing list