00001 #ifndef OUTPUT_HPP 00002 #define OUTPUT_HPP 00003 00004 00005 // disable 'identifier too long' warning 00006 #ifdef _MSC_VER 00007 #pragma warning(disable : 4786) 00008 #endif 00009 00010 00011 #include <utility> 00012 #include <list> 00013 #include <string> 00014 #include "audiere.h" 00015 00016 00017 // types 00018 00019 class IOutputStream; 00020 class ISampleSource; 00021 00022 class IOutputContext 00023 { 00024 public: 00025 virtual ~IOutputContext() { }; 00026 virtual void Update() = 0; 00027 virtual IOutputStream* OpenStream(ISampleSource* source) = 0; 00028 }; 00029 00030 class IOutputStream 00031 { 00032 public: 00033 virtual ~IOutputStream() { } 00034 virtual void Play() = 0; 00035 virtual void Stop() = 0; 00036 virtual void Reset() = 0; 00037 virtual bool IsPlaying() = 0; 00038 virtual void SetVolume(int volume) = 0; 00039 virtual int GetVolume() = 0; 00040 }; 00041 00042 00043 // functions 00044 00045 extern IOutputContext* OpenContext( 00046 const char* output_device, 00047 const char* parameters); 00048 00049 // helper function to parse parameters 00050 typedef std::pair<std::string, std::string> Parameter; 00051 typedef std::list<Parameter> ParameterList; 00052 00053 extern void ParseParameters( 00054 const char* parameter_string, 00055 ParameterList& parameters); 00056 00057 00058 #endif