nuclear@53: #ifndef AUDIO_STREAM_H_ nuclear@53: #define AUDIO_STREAM_H_ nuclear@53: nuclear@53: #include nuclear@53: nuclear@54: struct AudioStreamBuffer { nuclear@54: void *samples; nuclear@54: int num_samples; nuclear@54: int channels; nuclear@54: int sample_rate; nuclear@54: }; nuclear@54: nuclear@53: class AudioStream { nuclear@53: private: nuclear@53: std::thread play_thread; nuclear@54: bool done, loop; nuclear@54: unsigned int poll_interval; nuclear@54: unsigned int alsrc; nuclear@53: nuclear@54: virtual bool more_samples(AudioStreamBuffer *buf) = 0; nuclear@54: nuclear@54: void poll_loop(); nuclear@53: nuclear@53: public: nuclear@54: AudioStream(); nuclear@53: virtual ~AudioStream(); nuclear@53: nuclear@54: void play(bool loop = false); nuclear@53: void stop(); nuclear@54: nuclear@54: virtual void rewind() = 0; nuclear@53: }; nuclear@53: nuclear@53: #endif // AUDIO_STREAM_H_