00001 #ifndef OUTPUT_OSS_HPP 00002 #define OUTPUT_OSS_HPP 00003 00004 00005 #include <memory> 00006 #include "output.hpp" 00007 #include "mixer.hpp" 00008 00009 00010 class OSSOutputContext : public IOutputContext 00011 { 00012 public: 00013 OSSOutputContext(); 00014 ~OSSOutputContext(); 00015 00016 bool Initialize(const char* parameters); 00017 void Update(); 00018 IOutputStream* OpenStream(ISampleSource* source); 00019 00020 private: 00021 int m_output_device; 00022 00023 Mixer m_mixer; 00024 }; 00025 00026 00027 class OSSOutputStream : public IOutputStream 00028 { 00029 private: 00030 OSSOutputStream(Mixer* mixer, ISampleSource* source); 00031 ~OSSOutputStream(); 00032 00033 public: 00034 // IOutputStream 00035 void Play(); 00036 void Stop(); 00037 void Reset(); 00038 bool IsPlaying(); 00039 void SetVolume(int volume); 00040 int GetVolume(); 00041 00042 private: 00043 Mixer* m_mixer; 00044 ISampleSource* m_source; 00045 int m_volume; 00046 00047 friend class OSSOutputContext; 00048 }; 00049 00050 00051 #endif