aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/saga/sndres.cpp6
-rw-r--r--engines/saga/sound.cpp11
-rw-r--r--engines/saga/sound.h1
3 files changed, 9 insertions, 9 deletions
diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp
index b2744482bd..b2ffe55e5b 100644
--- a/engines/saga/sndres.cpp
+++ b/engines/saga/sndres.cpp
@@ -365,9 +365,13 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff
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:
diff --git a/engines/saga/sound.cpp b/engines/saga/sound.cpp
index 41d3b522b7..202ce918de 100644
--- a/engines/saga/sound.cpp
+++ b/engines/saga/sound.cpp
@@ -91,25 +91,22 @@ void Sound::playSoundBuffer(Audio::SoundHandle *handle, SoundBuffer &buffer, int
_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:
diff --git a/engines/saga/sound.h b/engines/saga/sound.h
index b61cbbbe90..7650357a78 100644
--- a/engines/saga/sound.h
+++ b/engines/saga/sound.h
@@ -54,7 +54,6 @@ struct SoundBuffer {
size_t originalSize;
bool isBigEndian;
GameSoundTypes soundType;
- Common::File *soundFile;
size_t fileOffset;
};