aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/aiff.cpp6
-rw-r--r--sound/audiostream.cpp4
-rw-r--r--sound/audiostream.h2
-rw-r--r--sound/iff_sound.cpp4
-rw-r--r--sound/mixer.cpp6
-rw-r--r--sound/mixer.h7
-rw-r--r--sound/mixer_intern.h4
-rw-r--r--sound/raw.cpp13
-rw-r--r--sound/raw.h23
-rw-r--r--sound/shorten.cpp6
-rw-r--r--sound/voc.cpp4
-rw-r--r--sound/wave.cpp6
12 files changed, 46 insertions, 39 deletions
diff --git a/sound/aiff.cpp b/sound/aiff.cpp
index b1f00c714e..c0832b7cea 100644
--- a/sound/aiff.cpp
+++ b/sound/aiff.cpp
@@ -172,10 +172,8 @@ SeekableAudioStream *makeAIFFStream(Common::SeekableReadStream &stream) {
assert(data);
stream.read(data, size);
- // Since we allocated our own buffer for the data, we must set the autofree flag.
- flags |= Audio::Mixer::FLAG_AUTOFREE;
-
- return makeRawMemoryStream(data, size, rate, flags);
+ // Since we allocated our own buffer for the data, we must specify DisposeAfterUse::YES.
+ return makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags);
}
} // End of namespace Audio
diff --git a/sound/audiostream.cpp b/sound/audiostream.cpp
index 2f7be667b7..d233f39edf 100644
--- a/sound/audiostream.cpp
+++ b/sound/audiostream.cpp
@@ -252,8 +252,8 @@ bool SubSeekableAudioStream::seek(const Timestamp &where) {
#pragma mark -
-void QueuingAudioStream::queueBuffer(byte *data, uint32 size, byte flags) {
- AudioStream *stream = makeRawMemoryStream(data, size, getRate(), flags, 0, 0);
+void QueuingAudioStream::queueBuffer(byte *data, uint32 size, DisposeAfterUse::Flag disposeAfterUse, byte flags) {
+ AudioStream *stream = makeRawMemoryStream(data, size, disposeAfterUse, getRate(), flags, 0, 0);
queueAudioStream(stream, DisposeAfterUse::YES);
}
diff --git a/sound/audiostream.h b/sound/audiostream.h
index 5ce026b3d7..61705bc04c 100644
--- a/sound/audiostream.h
+++ b/sound/audiostream.h
@@ -315,7 +315,7 @@ public:
* the buffer will be delete[]'d (so make sure to allocate them
* with new[], not with malloc).
*/
- void queueBuffer(byte *data, uint32 size, byte flags);
+ void queueBuffer(byte *data, uint32 size, DisposeAfterUse::Flag disposeAfterUse, byte flags);
/**
* Mark the stream as finished, that is, signal that no further data
diff --git a/sound/iff_sound.cpp b/sound/iff_sound.cpp
index a78fe97288..c476ff9676 100644
--- a/sound/iff_sound.cpp
+++ b/sound/iff_sound.cpp
@@ -99,9 +99,7 @@ AudioStream *make8SVXStream(Common::ReadStream &input, bool loop) {
flags |= Audio::Mixer::FLAG_LOOP;
}
- flags |= Audio::Mixer::FLAG_AUTOFREE;
-
- return Audio::makeRawMemoryStream((byte *)loader._data, loader._dataSize, loader._header.samplesPerSec, flags, loopStart, loopEnd);
+ return Audio::makeRawMemoryStream((byte *)loader._data, loader._dataSize, DisposeAfterUse::YES, loader._header.samplesPerSec, flags, loopStart, loopEnd);
}
}
diff --git a/sound/mixer.cpp b/sound/mixer.cpp
index a3aaa19e8f..7a5be35fbb 100644
--- a/sound/mixer.cpp
+++ b/sound/mixer.cpp
@@ -221,12 +221,14 @@ void MixerImpl::playRaw(
SoundType type,
SoundHandle *handle,
void *sound,
- uint32 size, uint rate, byte flags,
+ uint32 size,
+ DisposeAfterUse::Flag autofreeBuffer,
+ uint rate, byte flags,
int id, byte volume, int8 balance,
uint32 loopStart, uint32 loopEnd) {
// Create the input stream
- AudioStream *input = makeRawMemoryStream((byte *)sound, size, rate, flags, loopStart, loopEnd);
+ AudioStream *input = makeRawMemoryStream((byte *)sound, size, autofreeBuffer, rate, flags, loopStart, loopEnd);
// Play it
playInputStream(type, handle, input, id, volume, balance, DisposeAfterUse::YES, false, ((flags & Mixer::FLAG_REVERSE_STEREO) != 0));
diff --git a/sound/mixer.h b/sound/mixer.h
index 23ad29082d..0055e51d87 100644
--- a/sound/mixer.h
+++ b/sound/mixer.h
@@ -88,9 +88,6 @@ public:
/** reverse the left and right stereo channel */
FLAG_REVERSE_STEREO = 1 << 4,
- /** sound buffer is freed automagically at the end of playing */
- FLAG_AUTOFREE = 1 << 5,
-
/** loop the audio */
FLAG_LOOP = 1 << 6
};
@@ -137,7 +134,9 @@ public:
virtual void playRaw(
SoundType type,
SoundHandle *handle,
- void *sound, uint32 size, uint rate, byte flags,
+ void *sound, uint32 size,
+ DisposeAfterUse::Flag autofreeBuffer,
+ uint rate, byte flags,
int id = -1, byte volume = kMaxChannelVolume, int8 balance = 0,
uint32 loopStart = 0, uint32 loopEnd = 0) = 0;
diff --git a/sound/mixer_intern.h b/sound/mixer_intern.h
index b206396bf8..de78ec988f 100644
--- a/sound/mixer_intern.h
+++ b/sound/mixer_intern.h
@@ -77,7 +77,9 @@ public:
virtual void playRaw(
SoundType type,
SoundHandle *handle,
- void *sound, uint32 size, uint rate, byte flags,
+ void *sound, uint32 size,
+ DisposeAfterUse::Flag autofreeBuffer,
+ uint rate, byte flags,
int id, byte volume, int8 balance,
uint32 loopStart, uint32 loopEnd);
diff --git a/sound/raw.cpp b/sound/raw.cpp
index 84627d0ff0..20307acfbf 100644
--- a/sound/raw.cpp
+++ b/sound/raw.cpp
@@ -328,12 +328,13 @@ bool RawDiskStream<stereo, is16Bit, isUnsigned, isLE>::seek(const Timestamp &whe
} else \
return new RawMemoryStream<STEREO, false, UNSIGNED, false>(rate, ptr, len, autoFree)
-SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate, byte flags) {
+SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len,
+ DisposeAfterUse::Flag autoFree,
+ int rate, byte flags) {
const bool isStereo = (flags & Mixer::FLAG_STEREO) != 0;
const bool is16Bit = (flags & Mixer::FLAG_16BITS) != 0;
const bool isUnsigned = (flags & Mixer::FLAG_UNSIGNED) != 0;
const bool isLE = (flags & Mixer::FLAG_LITTLE_ENDIAN) != 0;
- const DisposeAfterUse::Flag autoFree = (flags & Mixer::FLAG_AUTOFREE) != 0 ? DisposeAfterUse::YES : DisposeAfterUse::NO;
// Verify the buffer sizes are sane
if (is16Bit && isStereo) {
@@ -358,9 +359,11 @@ SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate,
}
-AudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate,
- byte flags, uint loopStart, uint loopEnd) {
- SeekableAudioStream *stream = makeRawMemoryStream(ptr, len, rate, flags);
+AudioStream *makeRawMemoryStream(const byte *ptr, uint32 len,
+ DisposeAfterUse::Flag autoFree,
+ int rate, byte flags,
+ uint loopStart, uint loopEnd) {
+ SeekableAudioStream *stream = makeRawMemoryStream(ptr, len, autoFree, rate, flags);
const bool isStereo = (flags & Mixer::FLAG_STEREO) != 0;
const bool is16Bit = (flags & Mixer::FLAG_16BITS) != 0;
diff --git a/sound/raw.h b/sound/raw.h
index c06eea35d2..e0b1a6c239 100644
--- a/sound/raw.h
+++ b/sound/raw.h
@@ -48,7 +48,9 @@ class SeekableAudioStream;
* @see Mixer::RawFlags
* @return The new SeekableAudioStream (or 0 on failure).
*/
-SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate, byte flags);
+SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len,
+ DisposeAfterUse::Flag autofreeBuffer,
+ int rate, byte flags);
/**
* NOTE:
@@ -61,8 +63,10 @@ SeekableAudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate,
* signed native endian). Optionally supports (infinite) looping of a portion
* of the data.
*/
-AudioStream *makeRawMemoryStream(const byte *ptr, uint32 len, int rate,
- byte flags, uint loopStart, uint loopEnd);
+AudioStream *makeRawMemoryStream(const byte *ptr, uint32 len,
+ DisposeAfterUse::Flag autofreeBuffer,
+ int rate, byte flags,
+ uint loopStart, uint loopEnd);
/**
@@ -87,8 +91,10 @@ struct RawDiskStreamAudioBlock {
* @param disposeStream Whether the "stream" object should be destroyed after playback.
* @return The new SeekableAudioStream (or 0 on failure).
*/
-SeekableAudioStream *makeRawDiskStream(Common::SeekableReadStream *stream, RawDiskStreamAudioBlock *block,
- int numBlocks, int rate, byte flags, DisposeAfterUse::Flag disposeStream);
+SeekableAudioStream *makeRawDiskStream(Common::SeekableReadStream *stream,
+ RawDiskStreamAudioBlock *block, int numBlocks,
+ int rate, byte flags,
+ DisposeAfterUse::Flag disposeStream);
/**
* NOTE:
@@ -99,8 +105,11 @@ SeekableAudioStream *makeRawDiskStream(Common::SeekableReadStream *stream, RawDi
* RawDiskStreamAudioBlock which defines the start position and length of
* each block of uncompressed audio in the stream.
*/
-AudioStream *makeRawDiskStream(Common::SeekableReadStream *stream, RawDiskStreamAudioBlock *block,
- int numBlocks, int rate, byte flags, DisposeAfterUse::Flag disposeStream, uint loopStart, uint loopEnd);
+AudioStream *makeRawDiskStream(Common::SeekableReadStream *stream,
+ RawDiskStreamAudioBlock *block, int numBlocks,
+ int rate, byte flags,
+ DisposeAfterUse::Flag disposeStream,
+ uint loopStart, uint loopEnd);
} // End of namespace Audio
diff --git a/sound/shorten.cpp b/sound/shorten.cpp
index fa62080c9c..44f4e66ed8 100644
--- a/sound/shorten.cpp
+++ b/sound/shorten.cpp
@@ -523,10 +523,8 @@ AudioStream *makeShortenStream(Common::SeekableReadStream &stream) {
if (!data)
return 0;
- // Since we allocated our own buffer for the data, we must set the autofree flag.
- flags |= Audio::Mixer::FLAG_AUTOFREE;
-
- return makeRawMemoryStream(data, size, rate, flags, 0, 0);
+ // Since we allocated our own buffer for the data, we must specify DisposeAfterUse::YES.
+ return makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags, 0, 0);
}
} // End of namespace Audio
diff --git a/sound/voc.cpp b/sound/voc.cpp
index 7a9a5e8b1b..27f78f9eeb 100644
--- a/sound/voc.cpp
+++ b/sound/voc.cpp
@@ -353,7 +353,7 @@ AudioStream *makeVOCStream(Common::SeekableReadStream &stream, byte flags, uint
if (!data)
return 0;
- return makeRawMemoryStream(data, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE, loopStart, loopEnd);
+ return makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags, loopStart, loopEnd);
#endif
}
@@ -368,7 +368,7 @@ SeekableAudioStream *makeVOCStream(Common::SeekableReadStream &stream, byte flag
if (!data)
return 0;
- return makeRawMemoryStream(data, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE);
+ return makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags);
#endif
}
diff --git a/sound/wave.cpp b/sound/wave.cpp
index d299128762..977b6953e6 100644
--- a/sound/wave.cpp
+++ b/sound/wave.cpp
@@ -188,10 +188,8 @@ RewindableAudioStream *makeWAVStream(Common::SeekableReadStream *stream, Dispose
if (disposeAfterUse == DisposeAfterUse::YES)
delete stream;
- // Since we allocated our own buffer for the data, we must set the autofree flag.
- flags |= Audio::Mixer::FLAG_AUTOFREE;
-
- return makeRawMemoryStream(data, size, rate, flags);
+ // Since we allocated our own buffer for the data, we must specify DisposeAfterUse::YES.
+ return makeRawMemoryStream(data, size, DisposeAfterUse::YES, rate, flags);
}
} // End of namespace Audio