| #ifndef __WINE_DSOUND_H |
| #define __WINE_DSOUND_H |
| |
| #include "mmsystem.h" |
| |
| /* Direct Sound Component GUID {47D4D946-62E8-11cf-93BC-444553540000} */ |
| DEFINE_GUID(CLSID_DirectSound,0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); |
| |
| /* DirectSound 279afa83-4981-11ce-a521-0020af0be560 */ |
| DEFINE_GUID(IID_IDirectSound,0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); |
| /* DirectSoundBuffer 279afa85-4981-11ce-a521-0020af0be560 */ |
| DEFINE_GUID(IID_IDirectSoundBuffer,0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); |
| |
| typedef struct IDirectSound IDirectSound,*LPDIRECTSOUND; |
| typedef struct IDirectSoundBuffer IDirectSoundBuffer,*LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER; |
| |
| #define DSCAPS_PRIMARYMONO 0x00000001 |
| #define DSCAPS_PRIMARYSTEREO 0x00000002 |
| #define DSCAPS_PRIMARY8BIT 0x00000004 |
| #define DSCAPS_PRIMARY16BIT 0x00000008 |
| #define DSCAPS_CONTINUOUSRATE 0x00000010 |
| #define DSCAPS_EMULDRIVER 0x00000020 |
| #define DSCAPS_CERTIFIED 0x00000040 |
| #define DSCAPS_SECONDARYMONO 0x00000100 |
| #define DSCAPS_SECONDARYSTEREO 0x00000200 |
| #define DSCAPS_SECONDARY8BIT 0x00000400 |
| #define DSCAPS_SECONDARY16BIT 0x00000800 |
| |
| typedef struct _DSCAPS |
| { |
| DWORD dwSize; |
| DWORD dwFlags; |
| DWORD dwMinSecondarySampleRate; |
| DWORD dwMaxSecondarySampleRate; |
| DWORD dwPrimaryBuffers; |
| DWORD dwMaxHwMixingAllBuffers; |
| DWORD dwMaxHwMixingStaticBuffers; |
| DWORD dwMaxHwMixingStreamingBuffers; |
| DWORD dwFreeHwMixingAllBuffers; |
| DWORD dwFreeHwMixingStaticBuffers; |
| DWORD dwFreeHwMixingStreamingBuffers; |
| DWORD dwMaxHw3DAllBuffers; |
| DWORD dwMaxHw3DStaticBuffers; |
| DWORD dwMaxHw3DStreamingBuffers; |
| DWORD dwFreeHw3DAllBuffers; |
| DWORD dwFreeHw3DStaticBuffers; |
| DWORD dwFreeHw3DStreamingBuffers; |
| DWORD dwTotalHwMemBytes; |
| DWORD dwFreeHwMemBytes; |
| DWORD dwMaxContigFreeHwMemBytes; |
| DWORD dwUnlockTransferRateHwBuffers; |
| DWORD dwPlayCpuOverheadSwBuffers; |
| DWORD dwReserved1; |
| DWORD dwReserved2; |
| } DSCAPS,*LPDSCAPS; |
| |
| #define DSBPLAY_LOOPING 0x00000001 |
| |
| #define DSBSTATUS_PLAYING 0x00000001 |
| #define DSBSTATUS_BUFFERLOST 0x00000002 |
| #define DSBSTATUS_LOOPING 0x00000004 |
| |
| |
| #define DSBLOCK_FROMWRITECURSOR 0x00000001 |
| |
| #define DSBCAPS_PRIMARYBUFFER 0x00000001 |
| #define DSBCAPS_STATIC 0x00000002 |
| #define DSBCAPS_LOCHARDWARE 0x00000004 |
| #define DSBCAPS_LOCSOFTWARE 0x00000008 |
| #define DSBCAPS_CTRLFREQUENCY 0x00000020 |
| #define DSBCAPS_CTRLPAN 0x00000040 |
| #define DSBCAPS_CTRLVOLUME 0x00000080 |
| #define DSBCAPS_CTRLDEFAULT 0x000000E0 /* Pan + volume + frequency. */ |
| #define DSBCAPS_CTRLALL 0x000000E0 /* All control capabilities */ |
| #define DSBCAPS_STICKYFOCUS 0x00004000 |
| #define DSBCAPS_GETCURRENTPOSITION2 0x00010000 /* More accurate play cursor under emulation*/ |
| |
| typedef struct _DSBCAPS |
| { |
| DWORD dwSize; |
| DWORD dwFlags; |
| DWORD dwBufferBytes; |
| DWORD dwUnlockTransferRate; |
| DWORD dwPlayCpuOverhead; |
| } DSBCAPS,*LPDSBCAPS; |
| |
| #define DSSCL_NORMAL 1 |
| #define DSSCL_PRIORITY 2 |
| #define DSSCL_EXCLUSIVE 3 |
| #define DSSCL_WRITEPRIMARY 4 |
| |
| typedef struct _DSBUFFERDESC |
| { |
| DWORD dwSize; |
| DWORD dwFlags; |
| DWORD dwBufferBytes; |
| DWORD dwReserved; |
| LPWAVEFORMATEX lpwfxFormat; |
| } DSBUFFERDESC,*LPDSBUFFERDESC; |
| |
| |
| |
| #define DSSPEAKER_HEADPHONE 1 |
| #define DSSPEAKER_MONO 2 |
| #define DSSPEAKER_QUAD 3 |
| #define DSSPEAKER_STEREO 4 |
| #define DSSPEAKER_SURROUND 5 |
| |
| |
| |
| typedef LPVOID* LPLPVOID; |
| |
| typedef BOOL32 (CALLBACK *LPDSENUMCALLBACK32W)(LPGUID,LPWSTR,LPWSTR,LPVOID); |
| typedef BOOL32 (CALLBACK *LPDSENUMCALLBACK32A)(LPGUID,LPSTR,LPSTR,LPVOID); |
| |
| extern HRESULT WINAPI DirectSoundCreate(LPGUID lpGUID,LPDIRECTSOUND * ppDS,IUnknown *pUnkOuter ); |
| |
| #define STDMETHOD(xfn) HRESULT (CALLBACK *fn##xfn) |
| #define STDMETHOD_(ret,xfn) ret (CALLBACK *fn##xfn) |
| #define PURE |
| #define FAR |
| #define ULONG DWORD |
| |
| #define THIS LPDIRECTSOUND this |
| #define THIS_ LPDIRECTSOUND this, |
| |
| typedef struct tagLPDIRECTSOUND_VTABLE |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; |
| STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
| STDMETHOD_(ULONG,Release) (THIS) PURE; |
| /*** IDirectSound methods ***/ |
| |
| STDMETHOD( CreateSoundBuffer)(THIS_ LPDSBUFFERDESC, LPLPDIRECTSOUNDBUFFER, IUnknown FAR *) PURE; |
| STDMETHOD( GetCaps)(THIS_ LPDSCAPS ) PURE; |
| STDMETHOD( DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER, LPLPDIRECTSOUNDBUFFER ) PURE; |
| STDMETHOD( SetCooperativeLevel)(THIS_ HWND32, DWORD ) PURE; |
| STDMETHOD( Compact)(THIS ) PURE; |
| STDMETHOD( GetSpeakerConfig)(THIS_ LPDWORD ) PURE; |
| STDMETHOD( SetSpeakerConfig)(THIS_ DWORD ) PURE; |
| STDMETHOD( Initialize)(THIS_ GUID FAR * ) PURE; |
| } *LPDIRECTSOUND_VTABLE; |
| |
| struct IDirectSound { |
| LPDIRECTSOUND_VTABLE lpvtbl; |
| DWORD ref; |
| }; |
| |
| #undef THIS |
| #undef THIS_ |
| #define THIS LPDIRECTSOUNDBUFFER this |
| #define THIS_ LPDIRECTSOUNDBUFFER this, |
| typedef struct tagLPDIRECTSOUNDBUFFER_VTABLE |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; |
| STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
| STDMETHOD_(ULONG,Release) (THIS) PURE; |
| /*** IDirectSoundBuffer methods ***/ |
| |
| STDMETHOD( GetCaps)(THIS_ LPDSBCAPS ) PURE; |
| STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD,LPDWORD ) PURE; |
| STDMETHOD( GetFormat)(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) PURE; |
| STDMETHOD( GetVolume)(THIS_ LPLONG ) PURE; |
| STDMETHOD( GetPan)(THIS_ LPLONG ) PURE; |
| STDMETHOD( GetFrequency)(THIS_ LPDWORD ) PURE; |
| STDMETHOD( GetStatus)(THIS_ LPDWORD ) PURE; |
| STDMETHOD( Initialize)(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) PURE; |
| STDMETHOD( Lock)(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) PURE; |
| STDMETHOD( Play)(THIS_ DWORD,DWORD,DWORD ) PURE; |
| STDMETHOD(SetCurrentPosition)(THIS_ DWORD ) PURE; |
| STDMETHOD( SetFormat)(THIS_ LPWAVEFORMATEX ) PURE; |
| STDMETHOD( SetVolume)(THIS_ LONG ) PURE; |
| STDMETHOD( SetPan)(THIS_ LONG ) PURE; |
| STDMETHOD( SetFrequency)(THIS_ DWORD ) PURE; |
| STDMETHOD( Stop)(THIS ) PURE; |
| STDMETHOD( Unlock)(THIS_ LPVOID,DWORD,LPVOID,DWORD ) PURE; |
| STDMETHOD( Restore)(THIS ) PURE; |
| } *LPDIRECTSOUNDBUFFER_VTABLE; |
| |
| struct IDirectSoundBuffer { |
| LPDIRECTSOUNDBUFFER_VTABLE lpvtbl; |
| DWORD ref; |
| }; |
| |
| #endif |