diff options
author | Paul Gilbert | 2013-10-14 22:58:29 -0400 |
---|---|---|
committer | Paul Gilbert | 2013-10-14 22:58:29 -0400 |
commit | acc7cd58a203fb0c1991c3b8b35c2f296b739f06 (patch) | |
tree | 5a1d7b1ffe37b0c77977b015ff4b650d8f9a66dc /engines/tsage/sound.h | |
parent | c9aa875c8de12a9851a66433654f00c60a14ca14 (diff) | |
download | scummvm-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.h | 47 |
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 |