From ec1dc725aab198efdaa6edcc31e68a3311f31a48 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 12 Jan 2012 05:27:17 -0800 Subject: [PATCH] Add EAX 2.0 buffer properties --- dsound_main.c | 4 ++++ eax.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/dsound_main.c b/dsound_main.c index 40c9bac..4b593de 100644 --- a/dsound_main.c +++ b/dsound_main.c @@ -88,6 +88,10 @@ const IID DSPROPSETID_EAX20_ListenerProperties = { 0x0306a6a8, 0xb224, 0x11d2, { 0x99, 0xe5, 0x00, 0x00, 0xe8, 0xd8, 0xc7, 0x22 } }; +const IID DSPROPSETID_EAX20_BufferProperties = { + 0x0306a6a7, 0xb224, 0x11d2, { 0x99, 0xe5, 0x00, 0x00, 0xe8, 0xd8, 0xc7, 0x22 } +}; + const EAXLISTENERPROPERTIES EnvironmentDefaults[EAX_ENVIRONMENT_COUNT] = { REVERB_PRESET_GENERIC, diff --git a/eax.h b/eax.h index 00138e5..3af94c4 100644 --- a/eax.h +++ b/eax.h @@ -164,3 +164,53 @@ enum { }; extern const EAXLISTENERPROPERTIES EnvironmentDefaults[EAX_ENVIRONMENT_COUNT]; + + +extern const IID DSPROPSETID_EAX20_BufferProperties; +typedef enum { + DSPROPERTY_EAXBUFFER_NONE, + DSPROPERTY_EAXBUFFER_ALLPARAMETERS, + DSPROPERTY_EAXBUFFER_DIRECT, + DSPROPERTY_EAXBUFFER_DIRECTHF, + DSPROPERTY_EAXBUFFER_ROOM, + DSPROPERTY_EAXBUFFER_ROOMHF, + DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR, + DSPROPERTY_EAXBUFFER_OBSTRUCTION, + DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO, + DSPROPERTY_EAXBUFFER_OCCLUSION, + DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO, + DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO, + DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF, + DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR, + DSPROPERTY_EAXBUFFER_FLAGS +} DSPROPERTY_EAX_BUFFERPROPERTY; + +/* Stores the value being set, but does not apply it */ +#define DSPROPERTY_EAXBUFFER_IMMEDIATE 0x00000000 +/* The lack of the deferred flag forces a call to CommitDeferredSettings(), + * applying *all* deferred settings, including the EAX property being set */ +#define DSPROPERTY_EAXBUFFER_DEFERRED 0x80000000 +/* Same as IMMEDIATE; causes a commit of deferred properties but implies no + * extra property being set */ +#define DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS 0x00000000 + +typedef struct _EAX20BUFFERPROPERTIES { + LONG lDirect; + LONG lDirectHF; + LONG lRoom; + LONG lRoomHF; + FLOAT flRoomRolloffFactor; + LONG lObstruction; + FLOAT flObstructionLFRatio; + LONG lOcclusion; + FLOAT flOcclusionLFRatio; + FLOAT flOcclusionRoomRatio; + LONG lOutsideVolumeHF; + FLOAT flAirAbsorptionFactor; + DWORD dwFlags; +} EAX20BUFFERPROPERTIES, *LPEAX20BUFFERPROPERTIES; + +/* Flags that affect lDirectHF, lRoom, and lRoomHF */ +#define EAXBUFFERFLAGS_DIRECTHFAUTO 0x00000001 +#define EAXBUFFERFLAGS_ROOMAUTO 0x00000002 +#define EAXBUFFERFLAGS_ROOMHFAUTO 0x00000004 -- 2.11.4.GIT