00001 #ifndef REPEATABLE_HPP 00002 #define REPEATABLE_HPP 00003 00004 00005 #include "input.hpp" 00006 00007 00008 class RepeatableStream : public ISampleSource 00009 { 00010 public: 00011 RepeatableStream(ISampleSource* source, bool initial_state); 00012 ~RepeatableStream(); 00013 00014 void SetRepeat(bool repeat); 00015 bool GetRepeat(); 00016 00017 // ISampleSource implementation 00018 void GetFormat( 00019 int& channel_count, 00020 int& sample_rate, 00021 int& bits_per_sample); 00022 00023 int Read(int sample_count, void* samples); 00024 bool Reset(); 00025 00026 private: 00027 bool m_repeat; 00028 ISampleSource* m_source; 00029 int m_sample_size; // convenience 00030 }; 00031 00032 00033 #endif