aboutsummaryrefslogtreecommitdiff
path: root/saga/sndres.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-01-11 08:32:10 +0000
committerTorbjörn Andersson2005-01-11 08:32:10 +0000
commitc5e83de099dcffca0f5c0d791305c0189467e9d9 (patch)
tree043f8eff7f879a221c18a68e6e164e2bd9510417 /saga/sndres.cpp
parent9eecc9406dba5b7f7a16713c7802bd2bb2f3292a (diff)
downloadscummvm-rg350-c5e83de099dcffca0f5c0d791305c0189467e9d9.tar.gz
scummvm-rg350-c5e83de099dcffca0f5c0d791305c0189467e9d9.tar.bz2
scummvm-rg350-c5e83de099dcffca0f5c0d791305c0189467e9d9.zip
Use Fingolfin's new WAV code.
svn-id: r16540
Diffstat (limited to 'saga/sndres.cpp')
-rw-r--r--saga/sndres.cpp54
1 files changed, 6 insertions, 48 deletions
diff --git a/saga/sndres.cpp b/saga/sndres.cpp
index de47cafc09..8bb225bb0d 100644
--- a/saga/sndres.cpp
+++ b/saga/sndres.cpp
@@ -199,61 +199,19 @@ int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, SOUNDBUFFER *snd_buf
}
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) {