// $Id: DirectXSoundDriver.hh 5924 2006-12-14 20:50:54Z m9710797 $ #ifndef DIRECTXSOUNDDRIVER_HH #define DIRECTXSOUNDDRIVER_HH #ifdef _WIN32 #include "SoundDriver.hh" #include "noncopyable.hh" #define DIRECTSOUND_VERSION 0x0500 #include #include namespace openmsx { class DirectXSoundDriver : public SoundDriver, private noncopyable { public: DirectXSoundDriver(unsigned sampleRate, unsigned bufferSize); virtual ~DirectXSoundDriver(); virtual void mute(); virtual void unmute(); virtual unsigned getFrequency() const; virtual unsigned getSamples() const; virtual double uploadBuffer(short* buffer, unsigned len); private: void dxClear(); int dxCanWrite(unsigned start, unsigned size); void dxWriteOne(short* buffer, unsigned lockSize); enum DxState { DX_SOUND_DISABLED, DX_SOUND_ENABLED, DX_SOUND_RUNNING }; DxState state; unsigned bufferOffset; unsigned bufferSize; unsigned fragmentSize; int skipCount; LPDIRECTSOUNDBUFFER primaryBuffer; LPDIRECTSOUNDBUFFER secondaryBuffer; LPDIRECTSOUND directSound; unsigned frequency; short* mixBuffer; }; } // namespace openmsx #endif // _WIN32 #endif // DIRECTXSOUNDDRIVER_HH