aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/sound.h
diff options
context:
space:
mode:
authorPaul Gilbert2013-10-14 22:58:29 -0400
committerPaul Gilbert2013-10-14 22:58:29 -0400
commitacc7cd58a203fb0c1991c3b8b35c2f296b739f06 (patch)
tree5a1d7b1ffe37b0c77977b015ff4b650d8f9a66dc /engines/tsage/sound.h
parentc9aa875c8de12a9851a66433654f00c60a14ca14 (diff)
downloadscummvm-rg350-acc7cd58a203fb0c1991c3b8b35c2f296b739f06.tar.gz
scummvm-rg350-acc7cd58a203fb0c1991c3b8b35c2f296b739f06.tar.bz2
scummvm-rg350-acc7cd58a203fb0c1991c3b8b35c2f296b739f06.zip
TSAGE: Beginnings of R2R voice streaming
Diffstat (limited to 'engines/tsage/sound.h')
-rw-r--r--engines/tsage/sound.h47
1 files changed, 40 insertions, 7 deletions
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index 2f59afb49b..9779f3c03c 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -259,6 +259,7 @@ public:
class Sound: public EventHandler {
private:
void _prime(int soundResID, bool dontQueue);
+ void _primeBuffer(const byte *soundData);
void _unPrime();
public:
bool _stoppedAsynchronously;
@@ -315,6 +316,7 @@ public:
void orientAfterRestore();
void play(int soundResID);
+ bool playBuffers(const byte *soundData);
void stop();
void prime(int soundResID);
void unPrime();
@@ -414,15 +416,46 @@ public:
virtual void signal();
};
-class PlayStream {
-public:
+class PlayStream: public EventHandler {
+ class ResFileData {
+ public:
+ int _fileChunkSize;
+ int _field8;
+ uint _indexSize;
+ uint _chunkSize;
+
+ void load(Common::SeekableReadStream &stream);
+ };
+ typedef void (PlayStream::*FunctionPtr)();
+private:
+ Common::File _file;
+ ResFileData _resData;
Sound _sound;
+ uint16 *_index;
+ byte *_chunks[2];
+ const byte *_soundData;
+ int _voiceNum;
+ int _currentChunkIndex;
+ int _nextChunkIndex;
+ EventHandler *_endAction;
+ EventHandler *_field300;
+ int _field2F0, _field2FA;
+ int _streamSize;
+ FunctionPtr _streamFn;
+
+ void stream();
+ static uint32 getFileOffset(const uint16 *data, int count, int voiceNum);
+public:
+ PlayStream();
+ virtual ~PlayStream();
- void setFile(const Common::String &filename) {}
- bool play(int soundNum, EventHandler *endAction) { return false; }
- void stop() {}
- void proc1() {}
- bool isPlaying() const { return false; }
+ bool setFile(const Common::String &filename);
+ bool play(int voiceNum, EventHandler *endAction);
+ void stop();
+ bool isPlaying() const;
+
+ virtual void remove();
+ virtual void dispatch();
};
#define ADLIB_CHANNEL_COUNT 9