aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2010-01-19 23:50:33 +0000
committerMax Horn2010-01-19 23:50:33 +0000
commitcebaa0b0d305aecbdd60424eff1890ebde66312a (patch)
tree6b24ac15f231dd9f3a9f00ae20af38326bcead8c /engines
parentbce959e0465fd6d5f92b05f338ffde24820bb1ed (diff)
downloadscummvm-rg350-cebaa0b0d305aecbdd60424eff1890ebde66312a.tar.gz
scummvm-rg350-cebaa0b0d305aecbdd60424eff1890ebde66312a.tar.bz2
scummvm-rg350-cebaa0b0d305aecbdd60424eff1890ebde66312a.zip
Started to get rid of Audio::FLAG_LOOP
svn-id: r47397
Diffstat (limited to 'engines')
-rw-r--r--engines/draci/sound.cpp7
-rw-r--r--engines/m4/sound.cpp24
-rw-r--r--engines/made/resource.cpp10
-rw-r--r--engines/mohawk/sound.cpp9
-rw-r--r--engines/saga/sound.cpp9
-rw-r--r--engines/saga/sound.h2
-rw-r--r--engines/scumm/he/sound_he.cpp16
-rw-r--r--engines/sky/intro.cpp6
-rw-r--r--engines/sword1/sound.cpp6
9 files changed, 39 insertions, 50 deletions
diff --git a/engines/draci/sound.cpp b/engines/draci/sound.cpp
index 88421abe97..dfe5b7a045 100644
--- a/engines/draci/sound.cpp
+++ b/engines/draci/sound.cpp
@@ -197,14 +197,13 @@ void Sound::playSoundBuffer(Audio::SoundHandle *handle, const SoundSample &buffe
byte flags = Audio::FLAG_UNSIGNED;
- if (loop)
- flags |= Audio::FLAG_LOOP;
-
const Audio::Mixer::SoundType soundType = (handleType == kVoiceHandle) ?
Audio::Mixer::kSpeechSoundType : Audio::Mixer::kSFXSoundType;
// Don't use DisposeAfterUse::YES, because our caching system deletes samples by itself.
- Audio::AudioStream *stream = Audio::makeRawMemoryStream(buffer._data, buffer._length, DisposeAfterUse::NO, buffer._frequency, flags, 0, 0);
+ Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(buffer._data, buffer._length, DisposeAfterUse::NO, buffer._frequency, flags),
+ loop ? 0 : 1);
_mixer->playInputStream(soundType, handle, stream, -1, volume);
}
diff --git a/engines/m4/sound.cpp b/engines/m4/sound.cpp
index cf2f54fb9a..654ce7bcbd 100644
--- a/engines/m4/sound.cpp
+++ b/engines/m4/sound.cpp
@@ -70,7 +70,6 @@ bool Sound::isHandleActive(SndHandle *handle) {
}
void Sound::playSound(const char *soundName, int volume, bool loop, int channel) {
- byte flags;
Common::SeekableReadStream *soundStream = _vm->res()->get(soundName);
SndHandle *handle;
if (channel < 0) {
@@ -90,15 +89,13 @@ void Sound::playSound(const char *soundName, int volume, bool loop, int channel)
_vm->res()->toss(soundName);
handle->type = kEffectHandle;
- flags = Audio::FLAG_UNSIGNED;
-
- if (loop)
- flags |= Audio::FLAG_LOOP;
_vm->res()->toss(soundName);
// Sound format is 8bit mono, unsigned, 11025kHz
- Audio::AudioStream *stream = Audio::makeRawMemoryStream(buffer, bufferSize, DisposeAfterUse::YES, 11025, flags, 0, 0);
+ Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(buffer, bufferSize, DisposeAfterUse::YES, 11025, Audio::FLAG_UNSIGNED),
+ loop ? 0 : 1);
_mixer->playInputStream(Audio::Mixer::kSFXSoundType, &handle->handle, stream, -1, volume);
}
@@ -137,7 +134,6 @@ void Sound::stopSound(int channel) {
}
void Sound::playVoice(const char *soundName, int volume) {
- byte flags;
Common::SeekableReadStream *soundStream = _vm->res()->get(soundName);
SndHandle *handle = getHandle();
byte *buffer;
@@ -146,12 +142,11 @@ void Sound::playVoice(const char *soundName, int volume) {
soundStream->read(buffer, soundStream->size());
handle->type = kEffectHandle;
- flags = Audio::FLAG_UNSIGNED;
_vm->res()->toss(soundName);
// Voice format is 8bit mono, unsigned, 11025kHz
- Audio::AudioStream *stream = Audio::makeRawMemoryStream(buffer, soundStream->size(), DisposeAfterUse::YES, 11025, flags);
+ Audio::AudioStream *stream = Audio::makeRawMemoryStream(buffer, soundStream->size(), DisposeAfterUse::YES, 11025, Audio::FLAG_UNSIGNED);
_mixer->playInputStream(Audio::Mixer::kSFXSoundType, &handle->handle, stream, -1, volume);
}
@@ -246,14 +241,9 @@ void Sound::playDSRSound(int soundIndex, int volume, bool loop) {
return;
}
- byte flags;
SndHandle *handle = getHandle();
handle->type = kEffectHandle;
- flags = Audio::FLAG_UNSIGNED;
-
- if (loop)
- flags |= Audio::FLAG_LOOP;
// Get sound data
FabDecompressor fab;
@@ -268,9 +258,11 @@ void Sound::playDSRSound(int soundIndex, int volume, bool loop) {
buffer, _dsrFile.dsrEntries[soundIndex]->uncompSize);
// Play sound
- Audio::AudioStream *stream = Audio::makeRawMemoryStream(buffer,
+ Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(buffer,
_dsrFile.dsrEntries[soundIndex]->uncompSize, DisposeAfterUse::YES,
- _dsrFile.dsrEntries[soundIndex]->frequency, flags, 0, 0);
+ _dsrFile.dsrEntries[soundIndex]->frequency, Audio::FLAG_UNSIGNED),
+ loop ? 0 : 1);
_mixer->playInputStream(Audio::Mixer::kSFXSoundType, &handle->handle, stream, -1, volume);
/*
diff --git a/engines/made/resource.cpp b/engines/made/resource.cpp
index b29e1b8fb0..80c8a28687 100644
--- a/engines/made/resource.cpp
+++ b/engines/made/resource.cpp
@@ -261,11 +261,13 @@ void SoundResource::load(byte *source, int size) {
}
Audio::AudioStream *SoundResource::getAudioStream(int soundRate, bool loop) {
- byte flags = Audio::FLAG_UNSIGNED;
- if (loop)
- flags |= Audio::FLAG_LOOP;
+ Audio::RewindableAudioStream *stream =
+ Audio::makeRawMemoryStream(_soundData, _soundSize, DisposeAfterUse::NO, soundRate, Audio::FLAG_UNSIGNED);
- return Audio::makeRawMemoryStream(_soundData, _soundSize, DisposeAfterUse::NO, soundRate, flags, 0, 0);
+ if (loop)
+ return Audio::makeLoopingAudioStream(stream, 0);
+ else
+ return stream;
}
void SoundResourceV1::load(byte *source, int size) {
diff --git a/engines/mohawk/sound.cpp b/engines/mohawk/sound.cpp
index e0b95c96e0..e9c577283e 100644
--- a/engines/mohawk/sound.cpp
+++ b/engines/mohawk/sound.cpp
@@ -481,12 +481,9 @@ Audio::AudioStream *Sound::makeOldMohawkWaveStream(Common::SeekableReadStream *s
stream->read(data, size);
delete stream;
- byte flags = Audio::FLAG_UNSIGNED;
-
- if (loop)
- flags |= Audio::FLAG_LOOP;
-
- return Audio::makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags, 0, 0);
+ return Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, Audio::FLAG_UNSIGNED),
+ loop ? 0 : 1);
}
SndHandle *Sound::getHandle() {
diff --git a/engines/saga/sound.cpp b/engines/saga/sound.cpp
index 39867c9f37..cf647d0c53 100644
--- a/engines/saga/sound.cpp
+++ b/engines/saga/sound.cpp
@@ -64,19 +64,18 @@ SndHandle *Sound::getHandle() {
return NULL; // for compilers that don't support NORETURN
}
-void Sound::playSoundBuffer(Audio::SoundHandle *handle, SoundBuffer &buffer, int volume,
+void Sound::playSoundBuffer(Audio::SoundHandle *handle, const SoundBuffer &buffer, int volume,
sndHandleType handleType, bool loop) {
Audio::AudioStream *stream = 0;
- if (loop)
- buffer.flags |= Audio::FLAG_LOOP;
-
Audio::Mixer::SoundType soundType = (handleType == kVoiceHandle) ?
Audio::Mixer::kSpeechSoundType : Audio::Mixer::kSFXSoundType;
if (!buffer.isCompressed) {
- stream = Audio::makeRawMemoryStream(buffer.buffer, buffer.size, DisposeAfterUse::YES, buffer.frequency, buffer.flags, 0, 0);
+ stream = Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(buffer.buffer, buffer.size, DisposeAfterUse::YES, buffer.frequency, buffer.flags),
+ loop ? 0 : 1);
} else {
// TODO / FIXME: It seems we don't loop compressed audio at all, but do loop uncompressed data.
diff --git a/engines/saga/sound.h b/engines/saga/sound.h
index 0aeb54a55f..845c0ab573 100644
--- a/engines/saga/sound.h
+++ b/engines/saga/sound.h
@@ -87,7 +87,7 @@ public:
private:
- void playSoundBuffer(Audio::SoundHandle *handle, SoundBuffer &buffer, int volume,
+ void playSoundBuffer(Audio::SoundHandle *handle, const SoundBuffer &buffer, int volume,
sndHandleType handleType, bool loop);
SndHandle *getHandle();
diff --git a/engines/scumm/he/sound_he.cpp b/engines/scumm/he/sound_he.cpp
index 5b19322290..48adca2ca9 100644
--- a/engines/scumm/he/sound_he.cpp
+++ b/engines/scumm/he/sound_he.cpp
@@ -528,7 +528,7 @@ byte *findSoundTag(uint32 tag, byte *ptr) {
}
void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags) {
- Audio::AudioStream *stream = 0;
+ Audio::RewindableAudioStream *stream = 0;
byte *ptr, *spoolPtr;
int size = -1;
int priority, rate;
@@ -636,7 +636,6 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags)
// TODO: Extra sound flags
if (heFlags & 1) {
- flags |= Audio::FLAG_LOOP;
_heChannel[heChannel].timer = 0;
} else {
_heChannel[heChannel].timer = size * 1000 / rate;
@@ -668,11 +667,12 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags)
#ifdef SCUMM_LITTLE_ENDIAN
flags |= Audio::FLAG_LITTLE_ENDIAN;
#endif
- stream = Audio::makeRawMemoryStream(sound + heOffset, size - heOffset, DisposeAfterUse::YES, rate, flags, 0, 0);
+ stream = Audio::makeRawMemoryStream(sound + heOffset, size - heOffset, DisposeAfterUse::YES, rate, flags);
} else {
- stream = Audio::makeRawMemoryStream(ptr + memStream.pos() + heOffset, size - heOffset, DisposeAfterUse::YES, rate, flags, 0, 0);
+ stream = Audio::makeRawMemoryStream(ptr + memStream.pos() + heOffset, size - heOffset, DisposeAfterUse::YES, rate, flags);
}
- _mixer->playInputStream(type, &_heSoundChannels[heChannel], stream, soundID);
+ _mixer->playInputStream(type, &_heSoundChannels[heChannel],
+ Audio::makeLoopingAudioStream(stream, (heFlags & 1) ? 0 : 1), soundID);
}
// Support for sound in Humongous Entertainment games
else if (READ_BE_UINT32(ptr) == MKID_BE('DIGI') || READ_BE_UINT32(ptr) == MKID_BE('TALK')) {
@@ -722,7 +722,6 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags)
// TODO: Extra sound flags
if (heFlags & 1) {
- flags |= Audio::FLAG_LOOP;
_heChannel[heChannel].timer = 0;
} else {
_heChannel[heChannel].timer = size * 1000 / rate;
@@ -730,8 +729,9 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags)
_mixer->stopHandle(_heSoundChannels[heChannel]);
- stream = Audio::makeRawMemoryStream(ptr + heOffset + 8, size, DisposeAfterUse::NO, rate, flags, 0, 0);
- _mixer->playInputStream(type, &_heSoundChannels[heChannel], stream, soundID);
+ stream = Audio::makeRawMemoryStream(ptr + heOffset + 8, size, DisposeAfterUse::NO, rate, flags);
+ _mixer->playInputStream(type, &_heSoundChannels[heChannel],
+ Audio::makeLoopingAudioStream(stream, (heFlags & 1) ? 0 : 1), soundID);
}
// Support for PCM music in 3DO versions of Humongous Entertainment games
else if (READ_BE_UINT32(ptr) == MKID_BE('MRAW')) {
diff --git a/engines/sky/intro.cpp b/engines/sky/intro.cpp
index d5318d66f1..991a763750 100644
--- a/engines/sky/intro.cpp
+++ b/engines/sky/intro.cpp
@@ -680,7 +680,7 @@ bool Intro::doIntro(bool floppyIntro) {
bool Intro::nextPart(uint16 *&data) {
uint8 *vData = NULL;
- Audio::AudioStream *stream = 0;
+ Audio::RewindableAudioStream *stream = 0;
// return false means cancel intro
uint16 command = *data++;
@@ -757,8 +757,8 @@ bool Intro::nextPart(uint16 *&data) {
case LOOPBG:
_mixer->stopID(SOUND_BG);
stream = Audio::makeRawMemoryStream(_bgBuf + 256, _bgSize - 768, DisposeAfterUse::YES,
- 11025, Audio::FLAG_UNSIGNED | Audio::FLAG_LOOP, 0, 0);
- _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_bgSfx, stream, SOUND_BG);
+ 11025, Audio::FLAG_UNSIGNED);
+ _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_bgSfx, Audio::makeLoopingAudioStream(stream, 0), SOUND_BG);
return true;
case PLAYBG:
_mixer->stopID(SOUND_BG);
diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp
index 5840b165e5..d3ef4382e0 100644
--- a/engines/sword1/sound.cpp
+++ b/engines/sword1/sound.cpp
@@ -270,9 +270,9 @@ void Sound::playSample(QueueElement *elem) {
flags = Audio::FLAG_UNSIGNED;
if (READ_LE_UINT16(sampleData + 0x16) == 2)
flags |= Audio::FLAG_STEREO;
- if (_fxList[elem->id].type == FX_LOOP)
- flags |= Audio::FLAG_LOOP;
- Audio::AudioStream *stream = Audio::makeRawMemoryStream(sampleData + 0x2C, size, DisposeAfterUse::NO, 11025, flags, 0, 0);
+ Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
+ Audio::makeRawMemoryStream(sampleData + 0x2C, size, DisposeAfterUse::NO, 11025, flags),
+ (_fxList[elem->id].type == FX_LOOP) ? 0 : 1);
_mixer->playInputStream(Audio::Mixer::kSFXSoundType, &elem->handle, stream, elem->id, volume, pan);
}
}