Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367/* * 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 __cplusplusextern "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 IDsDriverDECLARE_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 IDsDriverBufferDECLARE_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 IDsDriverPropertySetDECLARE_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 IDsDriverNotifyDECLARE_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 IDsCaptureDriverDECLARE_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 IDsCaptureDriverBufferDECLARE_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 */