#ifndef NULLSOFT_AUDIOLAYERH #define NULLSOFT_AUDIOLAYERH #include "WMHandler.h" #include #include "AudioThread.h" #include "AudioFormat.h" class AudioLayer : public WMHandler, public AudioFormat { public: AudioLayer(IWMReader *_reader); ~AudioLayer(); bool IsOpen() { return opened; } void Kill(); bool OpenAudio(); void StartAudioThread(); private: // WMHandler events void Opened(); void SampleReceived(QWORD &timeStamp, QWORD &duration, unsigned long &outputNum, unsigned long &flags, INSSBuffer *&sample); void VideoCatchup(QWORD time); void Closed(); void EndOfFile(); void Started(); void Stopped(); // other people's data IWMReader *reader; // our data QWORD startPosition; int audioOutputNum; IWMReaderAdvanced2 *reader2; QWORD offset; DWORD new_offset; QWORD videoCatchup; bool opened; HANDLE killSwitch; int latency; AudioThread audioThread; }; #endif