123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- #undef INTERFACE
- /*
- * DirectSound driver
- * (DirectX 5 version)
- *
- * Copyright (C) 2000 Ove Kaaven
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
- #ifndef __WINE_DSDRIVER_H
- #define __WINE_DSDRIVER_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*****************************************************************************
- * Predeclare the interfaces
- */
- DEFINE_GUID(IID_IDsDriver, 0x8C4233C0l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
- typedef struct IDsDriver *PIDSDRIVER;
- DEFINE_GUID(IID_IDsDriverBuffer, 0x8C4233C1l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
- typedef struct IDsDriverBuffer *PIDSDRIVERBUFFER;
- DEFINE_GUID(IID_IDsDriverPropertySet, 0x0F6F2E8E0, 0xD842, 0x11D0, 0x8F, 0x75, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA);
- typedef struct IDsDriverPropertySet *PIDSDRIVERPROPERTYSET;
- DEFINE_GUID(IID_IDsDriverNotify, 0x00363EF44, 0x3B57, 0x11D3, 0xAC, 0x79, 0x00, 0x10, 0x5A, 0x01, 0x7f, 0xe1);
- typedef struct IDsDriverNotify *PIDSDRIVERNOTIFY;
- DEFINE_GUID(IID_IDsCaptureDriver, 0x03DD10C47, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
- typedef struct IDsCaptureDriver *PIDSCDRIVER;
- DEFINE_GUID(IID_IDsCaptureDriverBuffer, 0x03DD10C48, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
- typedef struct IDsCaptureDriverBuffer *PIDSCDRIVERBUFFER;
- #define DSDDESC_DOMMSYSTEMOPEN 0x00000001
- #define DSDDESC_DOMMSYSTEMSETFORMAT 0x00000002
- #define DSDDESC_USESYSTEMMEMORY 0x00000004
- #define DSDDESC_DONTNEEDPRIMARYLOCK 0x00000008
- #define DSDDESC_DONTNEEDSECONDARYLOCK 0x00000010
- #define DSDDESC_DONTNEEDWRITELEAD 0x00000020
- #define DSDHEAP_NOHEAP 0
- #define DSDHEAP_CREATEHEAP 1
- #define DSDHEAP_USEDIRECTDRAWHEAP 2
- #define DSDHEAP_PRIVATEHEAP 3
- typedef struct _DSDRIVERDESC
- {
- DWORD dwFlags;
- CHAR szDesc[256];
- CHAR szDrvname[256];
- DWORD dnDevNode;
- WORD wVxdId;
- WORD wReserved;
- ULONG ulDeviceNum;
- DWORD dwHeapType;
- LPVOID pvDirectDrawHeap;
- DWORD dwMemStartAddress;
- DWORD dwMemEndAddress;
- DWORD dwMemAllocExtra;
- LPVOID pvReserved1;
- LPVOID pvReserved2;
- } DSDRIVERDESC,*PDSDRIVERDESC;
- typedef struct _DSDRIVERCAPS
- {
- 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;
- } DSDRIVERCAPS,*PDSDRIVERCAPS;
- typedef struct _DSVOLUMEPAN
- {
- DWORD dwTotalLeftAmpFactor;
- DWORD dwTotalRightAmpFactor;
- LONG lVolume;
- DWORD dwVolAmpFactor;
- LONG lPan;
- DWORD dwPanLeftAmpFactor;
- DWORD dwPanRightAmpFactor;
- } DSVOLUMEPAN,*PDSVOLUMEPAN;
- typedef union _DSPROPERTY
- {
- struct {
- GUID Set;
- ULONG Id;
- ULONG Flags;
- ULONG InstanceId;
- } DUMMYSTRUCTNAME;
- ULONGLONG Alignment;
- } DSPROPERTY,*PDSPROPERTY;
- typedef struct _DSCDRIVERCAPS
- {
- DWORD dwSize;
- DWORD dwFlags;
- DWORD dwFormats;
- DWORD dwChannels;
- } DSCDRIVERCAPS,*PDSCDRIVERCAPS;
- /*****************************************************************************
- * IDsDriver interface
- */
- #define INTERFACE IDsDriver
- DECLARE_INTERFACE_(IDsDriver,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsDriver methods ***/
- STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
- STDMETHOD(Open)(THIS) PURE;
- STDMETHOD(Close)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ PDSDRIVERCAPS pDsDrvCaps) PURE;
- STDMETHOD(CreateSoundBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
- STDMETHOD(DuplicateSoundBuffer)(THIS_ PIDSDRIVERBUFFER pIDsDriverBuffer,LPVOID *ppvObj) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsDriver_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsDriver_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsDriver methods ***/
- #define IDsDriver_GetDriverDesc(p,a) (p)->lpVtbl->GetDriverDesc(p,a)
- #define IDsDriver_Open(p) (p)->lpVtbl->Open(p)
- #define IDsDriver_Close(p) (p)->lpVtbl->Close(p)
- #define IDsDriver_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
- #define IDsDriver_CreateSoundBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c,d,e,f)
- #define IDsDriver_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
- #endif
- /*****************************************************************************
- * IDsDriverBuffer interface
- */
- #define INTERFACE IDsDriverBuffer
- DECLARE_INTERFACE_(IDsDriverBuffer,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsDriverBuffer methods ***/
- STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *pdwAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
- STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
- STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
- STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
- STDMETHOD(SetVolumePan)(THIS_ PDSVOLUMEPAN pDsVolumePan) PURE;
- STDMETHOD(SetPosition)(THIS_ DWORD dwNewPosition) PURE;
- STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
- STDMETHOD(Play)(THIS_ DWORD dwReserved1,DWORD dwReserved2,DWORD dwFlags) PURE;
- STDMETHOD(Stop)(THIS) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsDriverBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsDriverBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsDriverBuffer_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsDriverBuffer methods ***/
- #define IDsDriverBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
- #define IDsDriverBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d)
- #define IDsDriverBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a)
- #define IDsDriverBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a)
- #define IDsDriverBuffer_SetVolumePan(p,a) (p)->lpVtbl->SetVolumePan(p,a)
- #define IDsDriverBuffer_SetPosition(p,a) (p)->lpVtbl->SetPosition(p,a)
- #define IDsDriverBuffer_GetPosition(p,a,b) (p)->lpVtbl->GetPosition(p,a,b)
- #define IDsDriverBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c)
- #define IDsDriverBuffer_Stop(p) (p)->lpVtbl->Stop(p)
- #endif
- /*****************************************************************************
- * IDsDriverPropertySet interface
- */
- #define INTERFACE IDsDriverPropertySet
- DECLARE_INTERFACE_(IDsDriverPropertySet,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsDriverPropertySet methods ***/
- STDMETHOD(Get)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData,PULONG pcbReturnedData) PURE;
- STDMETHOD(Set)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData) PURE;
- STDMETHOD(QuerySupport)(THIS_ REFGUID PropertySetId,ULONG PropertyId,PULONG pSupport) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsDriverPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsDriverPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsDriverPropertySet_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsDriverPropertySet methods ***/
- #define IDsDriverPropertySet_Get(p,a,b,c,d,e,f) (p)->lpVtbl->Get(p,a,b,c,d,e,f)
- #define IDsDriverPropertySet_Set(p,a,b,c,d,e) (p)->lpVtbl->Set(p,a,b,c,d,e)
- #define IDsDriverPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c)
- #endif
- /* Defined property sets */
- DEFINE_GUID(DSPROPSETID_DirectSound3DListener, 0x6D047B40, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
- typedef enum
- {
- DSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
- DSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
- DSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
- DSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
- DSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
- DSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
- DSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
- DSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
- DSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
- } DSPROPERTY_DIRECTSOUND3DLISTENER;
- DEFINE_GUID(DSPROPSETID_DirectSound3DBuffer, 0x6D047B41, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
- typedef enum
- {
- DSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
- DSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
- DSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
- DSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
- DSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
- DSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
- DSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
- DSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
- DSPROPERTY_DIRECTSOUND3DBUFFER_MODE
- } DSPROPERTY_DIRECTSOUND3DBUFFER;
- DEFINE_GUID(DSPROPSETID_DirectSoundSpeakerConfig, 0x6D047B42, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
- typedef enum
- {
- DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG_SPEAKERCONFIG
- } DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG;
- /*****************************************************************************
- * IDsDriverNotify interface
- */
- #define INTERFACE IDsDriverNotify
- DECLARE_INTERFACE_(IDsDriverNotify,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsDriverNotify methods ***/
- STDMETHOD(SetNotificationPositions)(THIS_ DWORD dwPositionNotifies,LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsDriverNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsDriverNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsDriverNotify_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsDriverNotify methods ***/
- #define IDsDriverNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
- #endif
- /*****************************************************************************
- * IDsCaptureDriver interface
- */
- #define INTERFACE IDsCaptureDriver
- DECLARE_INTERFACE_(IDsCaptureDriver,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsCaptureDriver methods ***/
- STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
- STDMETHOD(Open)(THIS) PURE;
- STDMETHOD(Close)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ PDSCDRIVERCAPS pDsDrvCaps) PURE;
- STDMETHOD(CreateCaptureBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsCaptureDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsCaptureDriver_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsCaptureDriver_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsCaptureDriver methods ***/
- #define IDsCaptureDriver_GetDriverDesc(p,a) (p)->lpVtbl->GetDriverDesc(p,a)
- #define IDsCaptureDriver_Open(p) (p)->lpVtbl->Open(p)
- #define IDsCaptureDriver_Close(p) (p)->lpVtbl->Close(p)
- #define IDsCaptureDriver_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
- #define IDsCaptureDriver_CreateCaptureBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c,d,e,f)
- #endif
- /*****************************************************************************
- * IDsCaptureDriverBuffer interface
- */
- #define INTERFACE IDsCaptureDriverBuffer
- DECLARE_INTERFACE_(IDsCaptureDriverBuffer,IUnknown)
- {
- /*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- /*** IDsCaptureDriverBuffer methods ***/
- STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *ppvAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
- STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
- STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
- STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
- STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
- STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(Stop)(THIS) PURE;
- };
- #undef INTERFACE
- #if !defined (__cplusplus) || defined(CINTERFACE)
- /*** IUnknown methods ***/
- #define IDsCaptureDriverBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDsCaptureDriverBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDsCaptureDriverBuffer_Release(p) (p)->lpVtbl->Release(p)
- /*** IDsCaptureDriverBuffer methods ***/
- #define IDsCaptureDriverBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
- #define IDsCaptureDriverBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d)
- #define IDsCaptureDriverBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a)
- #define IDsCaptureDriverBuffer_GetPosition(p,a,b) (p)->lpVtbl->GetPosition(p,a,b)
- #define IDsCaptureDriverBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a)
- #define IDsCaptureDriverBuffer_Start(p,a) (p)->lpVtbl->Start(p,a)
- #define IDsCaptureDriverBuffer_Stop(p) (p)->lpVtbl->Stop(p)
- #endif
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif /* __WINE_DSDRIVER_H */
|