diff options
author | Max Horn | 2003-06-15 00:54:14 +0000 |
---|---|---|
committer | Max Horn | 2003-06-15 00:54:14 +0000 |
commit | f1fc68773d32783eea28d9ae711a26dd461cea1a (patch) | |
tree | 839ac04e53b6fd1a03285d858c22b291542a906b /scumm/sound.h | |
parent | 6ece4cfbdaca67440b24bb387e66402d5d638ae1 (diff) | |
download | scummvm-rg350-f1fc68773d32783eea28d9ae711a26dd461cea1a.tar.gz scummvm-rg350-f1fc68773d32783eea28d9ae711a26dd461cea1a.tar.bz2 scummvm-rg350-f1fc68773d32783eea28d9ae711a26dd461cea1a.zip |
made stuff in class Sound protected where possible; moved readCreativeVocFile to imuse_digi.cpp and turned it into a static function; put the DigitalTrackInfo stuff into sound.cpp (keeping it private); removed #includes from sound.h (this cuts down interdependencies a little)
svn-id: r8493
Diffstat (limited to 'scumm/sound.h')
-rw-r--r-- | scumm/sound.h | 78 |
1 files changed, 18 insertions, 60 deletions
diff --git a/scumm/sound.h b/scumm/sound.h index 468422e554..32fa39c183 100644 --- a/scumm/sound.h +++ b/scumm/sound.h @@ -22,21 +22,14 @@ #define SOUND_H #include "scummsys.h" -#include "sound/mixer.h" -#include "common/timer.h" -class Scumm; +class DigitalTrackInfo; class File; +class Scumm; +struct MP3OffsetTable; class Sound { - -private: - -enum { - SOUND_HEADER_SIZE = 26, - SOUND_HEADER_BIG_SIZE = 26 + 8 -}; - +protected: int16 _soundQuePos, _soundQue[0x100]; int16 _soundQue2Pos, _soundQue2[10]; bool _soundsPaused2; @@ -85,50 +78,11 @@ enum { int _dig_cd_num_loops; bool _dig_cd_playing; - class DigitalTrackInfo { - public: - virtual bool error() = 0; - virtual int play(SoundMixer *mixer, int start, int delay) = 0; - virtual ~DigitalTrackInfo() { } - }; - DigitalTrackInfo *_track_info[CACHE_TRACKS]; -#ifdef USE_MAD - class MP3TrackInfo : public DigitalTrackInfo { - private: - struct mad_header _mad_header; - long _size; - File *_file; - bool _error_flag; - - public: - MP3TrackInfo(File *file); - ~MP3TrackInfo(); - bool error() { return _error_flag; } - int play(SoundMixer *mixer, int start, int delay); - }; -#endif - -#ifdef USE_VORBIS - class VorbisTrackInfo : public DigitalTrackInfo { - private: - File *_file; - OggVorbis_File _ov_file; - bool _error_flag; - - public: - VorbisTrackInfo(File *file); - ~VorbisTrackInfo(); - bool error() { return _error_flag; } - int play(SoundMixer *mixer, int start, int delay); - }; -#endif - Scumm *_scumm; public: - int _current_cache; int32 _bundleMusicPosition; @@ -137,6 +91,7 @@ public: int16 _sound_volume_master, _sound_volume_music, _sound_volume_sfx; byte _sfxMode; +public: Sound(Scumm *parent); ~Sound(); void addSoundToQueue(int sound); @@ -152,25 +107,18 @@ public: bool isSoundInQueue(int sound); void stopSound(int a); void stopAllSounds(); - void clearSoundQue(); void soundKludge(int *list, int num); void talkSound(uint32 a, uint32 b, int mode, int frame); void setupSound(); void pauseSounds(bool pause); - int startSfxSound(File *file, int file_size); - File *openSfxFile(); - void stopSfxSound(); - bool isSfxFinished(); - uint32 decode12BitsSample(byte *src, byte **dst, uint32 size, bool stereo); + void playBundleMusic(const char *song); void pauseBundleMusic(bool state); void bundleMusicHandler(Scumm *scumm); void stopBundleMusic(); int playBundleSound(char *sound); - byte *readCreativeVocFile(byte *ptr, uint32 &size, uint32 &rate, uint32 &loops); - int playSfxSound(void *sound, uint32 size, uint rate, bool isUnsigned); - int playSfxSound_MP3(void *sound, uint32 size); - int playSfxSound_Vorbis(void *sound, uint32 size); + + uint32 decode12BitsSample(byte *src, byte **dst, uint32 size, bool stereo); void startCDTimer(); void stopCDTimer(); @@ -181,6 +129,16 @@ public: void updateCD(); protected: + void clearSoundQue(); + + File *openSfxFile(); + int startSfxSound(File *file, int file_size); + void stopSfxSound(); + bool isSfxFinished(); + int playSfxSound(void *sound, uint32 size, uint rate, bool isUnsigned); + int playSfxSound_MP3(void *sound, uint32 size); + int playSfxSound_Vorbis(void *sound, uint32 size); + int getCachedTrack(int track); int playMP3CDTrack(int track, int num_loops, int start, int delay); int stopMP3CD(); |