33 #define WAVEFILE_READ 1 34 #define WAVEFILE_WRITE 2 36 #define DSUtil_StopSound(s) { if(s) s->Stop(); } 37 #define DSUtil_PlaySound(s) { if(s) s->Play( 0, 0 ); } 38 #define DSUtil_PlaySoundLooping(s) { if(s) s->Play( 0, DSBPLAY_LOOPING ); } 56 HRESULT Initialize( HWND hWnd, DWORD dwCoopLevel );
57 inline LPDIRECTSOUND8 GetDirectSound() {
return m_pDS; }
58 HRESULT SetPrimaryBufferFormat( DWORD dwPrimaryChannels, DWORD dwPrimaryFreq, DWORD dwPrimaryBitRate );
59 HRESULT Get3DListenerInterface( LPDIRECTSOUND3DLISTENER* ppDSListener );
61 HRESULT Create(
CSound** ppSound, LPTSTR strWaveFileName, DWORD dwCreationFlags = 0, GUID guid3DAlgorithm = GUID_NULL, DWORD dwNumBuffers = 1 );
62 HRESULT CreateFromMemory(
CSound** ppSound, BYTE* pbData, ULONG ulDataSize, LPWAVEFORMATEX pwfx, DWORD dwCreationFlags = 0, GUID guid3DAlgorithm = GUID_NULL, DWORD dwNumBuffers = 1 );
63 HRESULT CreateStreaming(
CStreamingSound** ppStreamingSound, LPTSTR strWaveFileName, DWORD dwCreationFlags, GUID guid3DAlgorithm, DWORD dwNotifyCount, DWORD dwNotifySize, HANDLE hNotifyEvent );
76 LPDIRECTSOUNDBUFFER* m_apDSBuffer;
77 DWORD m_dwDSBufferSize;
80 DWORD m_dwCreationFlags;
82 HRESULT RestoreBuffer( LPDIRECTSOUNDBUFFER pDSB, BOOL* pbWasRestored );
85 CSound( LPDIRECTSOUNDBUFFER* apDSBuffer, DWORD dwDSBufferSize, DWORD dwNumBuffers,
CWaveFile* pWaveFile, DWORD dwCreationFlags );
88 HRESULT Get3DBufferInterface( DWORD dwIndex, LPDIRECTSOUND3DBUFFER* ppDS3DBuffer );
89 HRESULT FillBufferWithSound( LPDIRECTSOUNDBUFFER pDSB, BOOL bRepeatWavIfBufferLarger );
90 LPDIRECTSOUNDBUFFER GetFreeBuffer();
91 LPDIRECTSOUNDBUFFER GetBuffer( DWORD dwIndex );
93 HRESULT Play( DWORD dwPriority = 0, DWORD dwFlags = 0, LONG lVolume = 0, LONG lFrequency = -1, LONG lPan = 0 );
94 HRESULT Play3D( LPDS3DBUFFER p3DBuffer, DWORD dwPriority = 0, DWORD dwFlags = 0, LONG lFrequency = 0 );
97 BOOL IsSoundPlaying();
113 DWORD m_dwLastPlayPos;
114 DWORD m_dwPlayProgress;
115 DWORD m_dwNotifySize;
116 DWORD m_dwNextWriteOffset;
117 BOOL m_bFillNextNotificationWithSilence;
123 HRESULT HandleWaveStreamNotification( BOOL bLoopedPlay );
137 WAVEFORMATEX* m_pwfx;
142 MMIOINFO m_mmioinfoOut;
144 BOOL m_bIsReadingFromMemory;
148 CHAR* m_pResourceBuffer;
152 HRESULT WriteMMIO( WAVEFORMATEX *pwfxDest );
158 HRESULT Open( LPTSTR strFileName, WAVEFORMATEX* pwfx, DWORD dwFlags );
159 HRESULT OpenFromMemory( BYTE* pbData, ULONG ulDataSize, WAVEFORMATEX* pwfx, DWORD dwFlags );
162 HRESULT Read( BYTE* pBuffer, DWORD dwSizeToRead, DWORD* pdwSizeRead );
163 HRESULT Write( UINT nSizeToWrite, BYTE* pbData, UINT* pnSizeWrote );
167 WAVEFORMATEX* GetFormat() {
return m_pwfx; };