From 7e92fb079021081eb28c2d284f1b81b8f5b7dab2 Mon Sep 17 00:00:00 2001 From: Retro-Junk Date: Sat, 22 Oct 2016 14:15:45 +0300 Subject: CRYO: Add sound playback --- engines/cryo/sound.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 engines/cryo/sound.h (limited to 'engines/cryo/sound.h') diff --git a/engines/cryo/sound.h b/engines/cryo/sound.h new file mode 100644 index 0000000000..74300adcb8 --- /dev/null +++ b/engines/cryo/sound.h @@ -0,0 +1,41 @@ +#pragma once + +#include "audio/audiostream.h" +#include "audio/mixer.h" +#include "audio/decoders/raw.h" + +namespace Cryo { + +class CSoundChannel { +private: + Audio::Mixer *_mixer; + Audio::QueuingAudioStream *_audioStream; + Audio::SoundHandle _soundHandle; + unsigned int _sampleRate; + bool _stereo; + +public: + CSoundChannel(Audio::Mixer *mixer, unsigned int sampleRate, bool stereo); + ~CSoundChannel(); + + // Queue a new buffer, cancel any previously queued buffers if playNow is set + void queueBuffer(byte *buffer, unsigned int size, bool playNow = false); + + // Stop playing and purge play queue + void stop(); + + // How many buffers in queue (including currently playing one) + unsigned int numQueued(); + + // Volume control + int _volumeLeft, _volumeRight; + unsigned int getVolume(); + void setVolume(unsigned int volumeLeft, unsigned int volumeRight); + void setVolumeLeft(unsigned int volume); + void setVolumeRight(unsigned int volume); + +private: + void applyVolumeChange(); +}; + +} -- cgit v1.2.3