diff options
-rw-r--r-- | engines/agos/sound.cpp | 7 | ||||
-rw-r--r-- | sound/voc.cpp | 6 | ||||
-rw-r--r-- | sound/voc.h | 4 |
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 |