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;