dungeon_crawler
annotate prototype/src/audio/stream.h @ 54:995191474cc0
writting the stream audio player
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 19 Sep 2012 05:22:43 +0300 |
parents | 1ea56011c1ff |
children | 4c427e28ca00 |
rev | line source |
---|---|
nuclear@53 | 1 #ifndef AUDIO_STREAM_H_ |
nuclear@53 | 2 #define AUDIO_STREAM_H_ |
nuclear@53 | 3 |
nuclear@53 | 4 #include <thread> |
nuclear@53 | 5 |
nuclear@54 | 6 struct AudioStreamBuffer { |
nuclear@54 | 7 void *samples; |
nuclear@54 | 8 int num_samples; |
nuclear@54 | 9 int channels; |
nuclear@54 | 10 int sample_rate; |
nuclear@54 | 11 }; |
nuclear@54 | 12 |
nuclear@53 | 13 class AudioStream { |
nuclear@53 | 14 private: |
nuclear@53 | 15 std::thread play_thread; |
nuclear@54 | 16 bool done, loop; |
nuclear@54 | 17 unsigned int poll_interval; |
nuclear@54 | 18 unsigned int alsrc; |
nuclear@53 | 19 |
nuclear@54 | 20 virtual bool more_samples(AudioStreamBuffer *buf) = 0; |
nuclear@54 | 21 |
nuclear@54 | 22 void poll_loop(); |
nuclear@53 | 23 |
nuclear@53 | 24 public: |
nuclear@54 | 25 AudioStream(); |
nuclear@53 | 26 virtual ~AudioStream(); |
nuclear@53 | 27 |
nuclear@54 | 28 void play(bool loop = false); |
nuclear@53 | 29 void stop(); |
nuclear@54 | 30 |
nuclear@54 | 31 virtual void rewind() = 0; |
nuclear@53 | 32 }; |
nuclear@53 | 33 |
nuclear@53 | 34 #endif // AUDIO_STREAM_H_ |