dungeon_crawler
diff prototype/src/audio/stream.h @ 55:4c427e28ca00
music playback bugfixing
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 19 Sep 2012 08:19:10 +0300 |
parents | 995191474cc0 |
children | f9b8bbebc9b3 |
line diff
1.1 --- a/prototype/src/audio/stream.h Wed Sep 19 05:22:43 2012 +0300 1.2 +++ b/prototype/src/audio/stream.h Wed Sep 19 08:19:10 2012 +0300 1.3 @@ -2,17 +2,26 @@ 1.4 #define AUDIO_STREAM_H_ 1.5 1.6 #include <thread> 1.7 +#include <mutex> 1.8 + 1.9 +#define AUDIO_BUFFER_MSEC 1000 1.10 +#define AUDIO_BUFFER_SAMPLES (AUDIO_BUFFER_MSEC * 44100 / 1000) 1.11 +#define AUDIO_BUFFER_BYTES (AUDIO_BUFFER_SAMPLES * 2 * 2) 1.12 1.13 struct AudioStreamBuffer { 1.14 - void *samples; 1.15 + char samples[AUDIO_BUFFER_BYTES]; 1.16 int num_samples; 1.17 int channels; 1.18 int sample_rate; 1.19 }; 1.20 1.21 +enum class PlayMode { once, loop }; 1.22 + 1.23 class AudioStream { 1.24 private: 1.25 std::thread play_thread; 1.26 + std::mutex mutex; 1.27 + 1.28 bool done, loop; 1.29 unsigned int poll_interval; 1.30 unsigned int alsrc; 1.31 @@ -25,7 +34,7 @@ 1.32 AudioStream(); 1.33 virtual ~AudioStream(); 1.34 1.35 - void play(bool loop = false); 1.36 + void play(enum PlayMode mode); 1.37 void stop(); 1.38 1.39 virtual void rewind() = 0;