diff options
author | Max Horn | 2006-02-11 22:45:04 +0000 |
---|---|---|
committer | Max Horn | 2006-02-11 22:45:04 +0000 |
commit | 26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch) | |
tree | 26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /sword2/sound.h | |
parent | 2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff) | |
download | scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.gz scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.bz2 scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.zip |
Moved engines to the new engines/ directory
svn-id: r20582
Diffstat (limited to 'sword2/sound.h')
-rw-r--r-- | sword2/sound.h | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/sword2/sound.h b/sword2/sound.h deleted file mode 100644 index 7390a60bbc..0000000000 --- a/sword2/sound.h +++ /dev/null @@ -1,272 +0,0 @@ -/* Copyright (C) 1994-1998 Revolution Software Ltd. - * Copyright (C) 2003-2006 The ScummVM project - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -/***************************************************************************** - * SOUND.H Sound engine - * - * SOUND.CPP Contains the sound engine, fx & music functions - * Some very 'sound' code in here ;) - * - * (16Dec96 JEL) - * - ****************************************************************************/ - -#ifndef SOUND_H -#define SOUND_H - -#include "common/file.h" -#include "sound/audiostream.h" -#include "sound/mixer.h" - -// Max number of sound fx -#define MAXMUS 2 - -// Max number of fx in queue at once -#define FXQ_LENGTH 32 - -#define BUFFER_SIZE 4096 - -namespace Sword2 { - -enum { - kCLUMode = 1, - kMP3Mode, - kVorbisMode, - kFlacMode -}; - -enum { - // These three types correspond to types set by the scripts - FX_SPOT = 0, - FX_LOOP = 1, - FX_RANDOM = 2, - - // These are used for FX queue bookkeeping - FX_SPOT2 = 3, - FX_LOOPING = 4 -}; - -// Sound defines - -enum { - RDSE_SAMPLEFINISHED = 0, - RDSE_SAMPLEPLAYING = 1, - RDSE_FXTOCLEAR = 0, // Unused - RDSE_FXCACHED = 1, // Unused - RDSE_FXSPOT = 0, - RDSE_FXLOOP = 1, - RDSE_FXLEADIN = 2, - RDSE_FXLEADOUT = 3, - RDSE_QUIET = 1, - RDSE_SPEAKING = 0 -}; - -class CLUInputStream : public AudioStream { -private: - Common::File *_file; - bool _firstTime; - uint32 _file_pos; - uint32 _end_pos; - int16 _outbuf[BUFFER_SIZE]; - byte _inbuf[BUFFER_SIZE]; - const int16 *_bufferEnd; - const int16 *_pos; - - uint16 _prev; - - void refill(); - - inline bool eosIntern() const { - return _pos >= _bufferEnd; - } - -public: - CLUInputStream(Common::File *file, int size); - ~CLUInputStream(); - - int readBuffer(int16 *buffer, const int numSamples); - - bool endOfData() const { return eosIntern(); } - bool isStereo() const { return false; } - int getRate() const { return 22050; } -}; - -struct SoundFileHandle { - Common::File file; - uint32 *idxTab; - uint32 idxLen; - uint32 fileSize; - uint32 fileType; - volatile bool inUse; -}; - -class MusicInputStream : public AudioStream { -private: - int _cd; - SoundFileHandle *_fh; - uint32 _musicId; - AudioStream *_decoder; - int16 _buffer[BUFFER_SIZE]; - const int16 *_bufferEnd; - const int16 *_pos; - bool _remove; - uint32 _numSamples; - uint32 _samplesLeft; - bool _looping; - int32 _fading; - int32 _fadeSamples; - bool _paused; - - void refill(); - - inline bool eosIntern() const { - if (_looping) - return false; - return _remove || _pos >= _bufferEnd; - } - -public: - MusicInputStream(int cd, SoundFileHandle *fh, uint32 musicId, bool looping); - ~MusicInputStream(); - - int readBuffer(int16 *buffer, const int numSamples); - - bool endOfData() const { return eosIntern(); } - bool isStereo() const { return _decoder->isStereo(); } - int getRate() const { return _decoder->getRate(); } - - int getCD() { return _cd; } - - void fadeUp(); - void fadeDown(); - - bool isReady() { return _decoder != NULL; } - int32 isFading() { return _fading; } - - bool readyToRemove(); - int32 getTimeRemaining(); -}; - -class Sound : public AudioStream { -private: - Sword2Engine *_vm; - - Common::Mutex _mutex; - - struct FxQueueEntry { - Audio::SoundHandle handle; // sound handle - uint32 resource; // resource id of sample - byte *data; // pointer to WAV data - uint32 len; // WAV data length - uint16 delay; // cycles to wait before playing (or 'random chance' if FX_RANDOM) - uint8 volume; // sound volume - int8 pan; // sound panning - uint8 type; // FX_SPOT, FX_RANDOM, FX_LOOP - }; - - FxQueueEntry _fxQueue[FXQ_LENGTH]; - - void triggerFx(uint8 i); - - bool _reverseStereo; - - bool _speechMuted; - bool _fxMuted; - bool _musicMuted; - - bool _speechPaused; - bool _fxPaused; - bool _musicPaused; - - int32 _loopingMusicId; - - Audio::SoundHandle _soundHandleSpeech; - - MusicInputStream *_music[MAXMUS]; - SoundFileHandle _musicFile[MAXMUS]; - SoundFileHandle _speechFile[MAXMUS]; - - int16 *_mixBuffer; - int _mixBufferLen; - -public: - Sound(Sword2Engine *vm); - ~Sound(); - - // AudioStream API - - int readBuffer(int16 *buffer, const int numSamples); - bool isStereo() const { return false; } - bool endOfData() const; - int getRate() const { return 22050; } - - // End of AudioStream API - - void clearFxQueue(); - void processFxQueue(); - - void setReverseStereo(bool reverse); - bool isReverseStereo() const { return _reverseStereo; } - - void muteSpeech(bool mute); - bool isSpeechMute() const { return _speechMuted; } - - void muteFx(bool mute); - bool isFxMute() const { return _fxMuted; } - - void muteMusic(bool mute) { _musicMuted = mute; } - bool isMusicMute() const { return _musicMuted; } - - void setLoopingMusicId(int32 id) { _loopingMusicId = id; } - int32 getLoopingMusicId() const { return _loopingMusicId; } - - void pauseSpeech(); - void unpauseSpeech(); - - void pauseFx(); - void unpauseFx(); - - void pauseMusic(); - void unpauseMusic(); - - void pauseAllSound(); - void unpauseAllSound(); - - void queueFx(int32 res, int32 type, int32 delay, int32 volume, int32 pan); - int32 playFx(FxQueueEntry *fx); - int32 playFx(Audio::SoundHandle *handle, byte *data, uint32 len, uint8 vol, int8 pan, bool loop, Audio::Mixer::SoundType soundType); - int32 stopFx(int32 i); - int32 setFxIdVolumePan(int32 id, int vol, int pan = 255); - - int32 getSpeechStatus(); - int32 amISpeaking(); - int32 playCompSpeech(uint32 speechId, uint8 vol, int8 pan); - uint32 preFetchCompSpeech(uint32 speechId, uint16 **buf); - int32 stopSpeech(); - - int32 streamCompMusic(uint32 musicId, bool loop); - void stopMusic(bool immediately); - int32 musicTimeRemaining(); -}; - -} // End of namespace Sword2 - -#endif |