aboutsummaryrefslogtreecommitdiff
path: root/engines/cryo/sound.h
diff options
context:
space:
mode:
authorRetro-Junk2016-10-22 14:15:45 +0300
committerEugene Sandulenko2017-01-25 22:42:02 +0100
commit7e92fb079021081eb28c2d284f1b81b8f5b7dab2 (patch)
treeed8ba6e87598af3f03ee28bb3ae3ba88a125bab0 /engines/cryo/sound.h
parent5616897f2a8480141b8ac2adb656a7e1ca45c95c (diff)
downloadscummvm-rg350-7e92fb079021081eb28c2d284f1b81b8f5b7dab2.tar.gz
scummvm-rg350-7e92fb079021081eb28c2d284f1b81b8f5b7dab2.tar.bz2
scummvm-rg350-7e92fb079021081eb28c2d284f1b81b8f5b7dab2.zip
CRYO: Add sound playback
Diffstat (limited to 'engines/cryo/sound.h')
-rw-r--r--engines/cryo/sound.h41
1 files changed, 41 insertions, 0 deletions
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();
+};
+
+}