aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/decoders/vag.cpp27
-rw-r--r--sound/decoders/vag.h37
2 files changed, 43 insertions, 21 deletions
diff --git a/sound/decoders/vag.cpp b/sound/decoders/vag.cpp
index f2c9281d80..d3f0811f2b 100644
--- a/sound/decoders/vag.cpp
+++ b/sound/decoders/vag.cpp
@@ -24,9 +24,32 @@
*/
#include "sound/decoders/vag.h"
+#include "sound/audiostream.h"
+#include "common/stream.h"
namespace Audio {
+class VagStream : public Audio::RewindableAudioStream {
+public:
+ VagStream(Common::SeekableReadStream *stream, int rate);
+ ~VagStream();
+
+ bool isStereo() const { return false; }
+ bool endOfData() const { return _stream->pos() == _stream->size(); }
+ int getRate() const { return _rate; }
+ int readBuffer(int16 *buffer, const int numSamples);
+
+ bool rewind();
+private:
+ Common::SeekableReadStream *_stream;
+
+ byte _predictor;
+ double _samples[28];
+ byte _samplesRemaining;
+ int _rate;
+ double _s1, _s2;
+};
+
VagStream::VagStream(Common::SeekableReadStream *stream, int rate) : _stream(stream) {
_samplesRemaining = 0;
_predictor = 0;
@@ -120,4 +143,8 @@ bool VagStream::rewind() {
return true;
}
+RewindableAudioStream *makeVagStream(Common::SeekableReadStream *stream, int rate) {
+ return new VagStream(stream, rate);
+}
+
}
diff --git a/sound/decoders/vag.h b/sound/decoders/vag.h
index d659a7db4e..7e0ed255be 100644
--- a/sound/decoders/vag.h
+++ b/sound/decoders/vag.h
@@ -34,31 +34,26 @@
#ifndef SOUND_VAG_H
#define SOUND_VAG_H
-#include "sound/audiostream.h"
-#include "common/stream.h"
+namespace Common {
+ class SeekableReadStream;
+}
namespace Audio {
-class VagStream : public Audio::RewindableAudioStream {
-public:
- VagStream(Common::SeekableReadStream *stream, int rate = 11025);
- ~VagStream();
+class AudioStream;
+class RewindableAudioStream;
- bool isStereo() const { return false; }
- bool endOfData() const { return _stream->pos() == _stream->size(); }
- int getRate() const { return _rate; }
- int readBuffer(int16 *buffer, const int numSamples);
-
- bool rewind();
-private:
- Common::SeekableReadStream *_stream;
-
- byte _predictor;
- double _samples[28];
- byte _samplesRemaining;
- int _rate;
- double _s1, _s2;
-};
+/**
+ * Takes an input stream containing Vag sound data and creates
+ * an RewindableAudioStream from that.
+ *
+ * @param stream the SeekableReadStream from which to read the ADPCM data
+ * @param rate the sampling rate
+ * @return a new RewindableAudioStream, or NULL, if an error occured
+ */
+RewindableAudioStream *makeVagStream(
+ Common::SeekableReadStream *stream,
+ int rate = 11025);
} // End of namespace Sword1