aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agos/sound.cpp7
-rw-r--r--sound/voc.cpp6
-rw-r--r--sound/voc.h4
3 files changed, 7 insertions, 10 deletions
diff --git a/engines/agos/sound.cpp b/engines/agos/sound.cpp
index 3aa3bd1865..dc8d6d8fc2 100644
--- a/engines/agos/sound.cpp
+++ b/engines/agos/sound.cpp
@@ -261,11 +261,8 @@ void VocSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType typ
_file->seek(_offsets[sound], SEEK_SET);
- int size, rate;
- byte *buffer = Audio::loadVOCFromStream(*_file, size, rate);
- // TODO: Use makeVOCStream
- assert(buffer);
- _mixer->playRaw(type, handle, buffer, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE);
+ Audio::AudioStream *stream = Audio::makeVOCStream(*_file, flags);
+ _mixer->playInputStream(type, handle, stream);
}
void RawSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol) {
diff --git a/sound/voc.cpp b/sound/voc.cpp
index acad3ebed4..ce659460f0 100644
--- a/sound/voc.cpp
+++ b/sound/voc.cpp
@@ -156,14 +156,14 @@ byte *loadVOCFromStream(Common::ReadStream &stream, int &size, int &rate) {
return loadVOCFromStream(stream, size, rate, loops, begin_loop, end_loop);
}
-AudioStream *makeVOCStream(Common::ReadStream &stream) {
+AudioStream *makeVOCStream(Common::ReadStream &stream, byte flags, uint loopStart, uint loopEnd) {
int size, rate;
- byte *data = loadVOCFromStream(stream, size, rate);
+ byte *data = loadVOCFromStream(stream, size, rate);
if (!data)
return 0;
- return makeLinearInputStream(data, size, rate, Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_UNSIGNED, 0, 0);
+ return makeLinearInputStream(data, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_UNSIGNED, loopStart, loopEnd);
}
diff --git a/sound/voc.h b/sound/voc.h
index 4641b3b6aa..f9f9d9d728 100644
--- a/sound/voc.h
+++ b/sound/voc.h
@@ -76,11 +76,11 @@ extern byte *loadVOCFromStream(Common::ReadStream &stream, int &size, int &rate)
/**
* Try to load a VOC from the given seekable stream and create an AudioStream
* from that data. Currently this function only supports uncompressed raw PCM
- * data. Looping is not supported.
+ * data. Optionally supports (infinite) looping of a portion of the data.
*
* This function uses loadVOCFromStream() internally.
*/
-AudioStream *makeVOCStream(Common::ReadStream &stream);
+AudioStream *makeVOCStream(Common::ReadStream &stream, byte flags = 0, uint loopStart = 0, uint loopEnd = 0);
} // End of namespace Audio