Report the EAX last error as settable
[dsound-openal.git] / eax3.h
blob661ac9c4b29281c561fdbc0010d2cb274c5de30e
1 /* DirectSound
3 * Copyright 2018 Chris Robinson
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #ifndef EAX3_H
21 #define EAX3_H
23 #ifndef EAXVECTOR_DEFINED
24 #define EAXVECTOR_DEFINED
25 typedef struct _EAXVECTOR {
26 float x, y, z;
27 } EAXVECTOR;
28 #endif
30 DEFINE_GUID(DSPROPSETID_EAX30_ListenerProperties, 0xa8fa6882, 0xb476, 0x11d3, 0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
31 typedef enum {
32 DSPROPERTY_EAX30LISTENER_NONE,
33 DSPROPERTY_EAX30LISTENER_ALLPARAMETERS,
34 DSPROPERTY_EAX30LISTENER_ENVIRONMENT,
35 DSPROPERTY_EAX30LISTENER_ENVIRONMENTSIZE,
36 DSPROPERTY_EAX30LISTENER_ENVIRONMENTDIFFUSION,
37 DSPROPERTY_EAX30LISTENER_ROOM,
38 DSPROPERTY_EAX30LISTENER_ROOMHF,
39 DSPROPERTY_EAX30LISTENER_ROOMLF,
40 DSPROPERTY_EAX30LISTENER_DECAYTIME,
41 DSPROPERTY_EAX30LISTENER_DECAYHFRATIO,
42 DSPROPERTY_EAX30LISTENER_DECAYLFRATIO,
43 DSPROPERTY_EAX30LISTENER_REFLECTIONS,
44 DSPROPERTY_EAX30LISTENER_REFLECTIONSDELAY,
45 DSPROPERTY_EAX30LISTENER_REFLECTIONSPAN,
46 DSPROPERTY_EAX30LISTENER_REVERB,
47 DSPROPERTY_EAX30LISTENER_REVERBDELAY,
48 DSPROPERTY_EAX30LISTENER_REVERBPAN,
49 DSPROPERTY_EAX30LISTENER_ECHOTIME,
50 DSPROPERTY_EAX30LISTENER_ECHODEPTH,
51 DSPROPERTY_EAX30LISTENER_MODULATIONTIME,
52 DSPROPERTY_EAX30LISTENER_MODULATIONDEPTH,
53 DSPROPERTY_EAX30LISTENER_AIRABSORPTIONHF,
54 DSPROPERTY_EAX30LISTENER_HFREFERENCE,
55 DSPROPERTY_EAX30LISTENER_LFREFERENCE,
56 DSPROPERTY_EAX30LISTENER_ROOMROLLOFFFACTOR,
57 DSPROPERTY_EAX30LISTENER_FLAGS
58 } DSPROPERTY_EAX30_LISTENERPROPERTY;
60 /* Stores the value being set, but does not apply it */
61 #define DSPROPERTY_EAX30LISTENER_DEFERRED 0x80000000
62 /* The lack of the deferred flag forces a call to CommitDeferredSettings(),
63 * applying *all* deferred settings, including the EAX property being set */
64 #define DSPROPERTY_EAX30LISTENER_IMMEDIATE 0x00000000
65 /* Same as IMMEDIATE; causes a commit of deferred properties but implies no
66 * extra property being set */
67 #define DSPROPERTY_EAX30LISTENER_COMMITDEFERREDSETTINGS 0x00000000
69 /* DSPROPERTY_EAX30LISTENER_ALLPARAMETERS */
70 typedef EAXREVERBPROPERTIES EAX30LISTENERPROPERTIES, *LPEAX30LISTENERPROPERTIES;
72 /* DSPROPERTY_EAX30LISTENER_FLAGS */
73 /* These flags determine what properties are modified when the environment size
74 * is changed.
76 #define EAX30LISTENERFLAGS_DECAYTIMESCALE 0x00000001
77 #define EAX30LISTENERFLAGS_REFLECTIONSSCALE 0x00000002
78 #define EAX30LISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004
79 #define EAX30LISTENERFLAGS_REVERBSCALE 0x00000008
80 #define EAX30LISTENERFLAGS_REVERBDELAYSCALE 0x00000010
81 /* This flag limits the high frequency decay according to air absorption */
82 #define EAX30LISTENERFLAGS_DECAYHFLIMIT 0x00000020
83 #define EAX30LISTENERFLAGS_ECHOTIMESCALE 0x00000040
84 #define EAX30LISTENERFLAGS_MODTIMESCALE 0x00000080
87 DEFINE_GUID(DSPROPSETID_EAX30_BufferProperties, 0xa8fa6881, 0xb476, 0x11d3, 0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
88 typedef enum {
89 DSPROPERTY_EAX30BUFFER_NONE,
90 DSPROPERTY_EAX30BUFFER_ALLPARAMETERS,
91 DSPROPERTY_EAX30BUFFER_OBSTRUCTIONPARAMETERS,
92 DSPROPERTY_EAX30BUFFER_OCCLUSIONPARAMETERS,
93 DSPROPERTY_EAX30BUFFER_EXCLUSIONPARAMETERS,
94 DSPROPERTY_EAX30BUFFER_DIRECT,
95 DSPROPERTY_EAX30BUFFER_DIRECTHF,
96 DSPROPERTY_EAX30BUFFER_ROOM,
97 DSPROPERTY_EAX30BUFFER_ROOMHF,
98 DSPROPERTY_EAX30BUFFER_OBSTRUCTION,
99 DSPROPERTY_EAX30BUFFER_OBSTRUCTIONLFRATIO,
100 DSPROPERTY_EAX30BUFFER_OCCLUSION,
101 DSPROPERTY_EAX30BUFFER_OCCLUSIONLFRATIO,
102 DSPROPERTY_EAX30BUFFER_OCCLUSIONROOMRATIO,
103 DSPROPERTY_EAX30BUFFER_OCCLUSIONDIRECTRATIO,
104 DSPROPERTY_EAX30BUFFER_EXCLUSION,
105 DSPROPERTY_EAX30BUFFER_EXCLUSIONLFRATIO,
106 DSPROPERTY_EAX30BUFFER_OUTSIDEVOLUMEHF,
107 DSPROPERTY_EAX30BUFFER_DOPPLERFACTOR,
108 DSPROPERTY_EAX30BUFFER_ROLLOFFFACTOR,
109 DSPROPERTY_EAX30BUFFER_ROOMROLLOFFFACTOR,
110 DSPROPERTY_EAX30BUFFER_AIRABSORPTIONFACTOR,
111 DSPROPERTY_EAX30BUFFER_FLAGS
112 } DSPROPERTY_EAX30_BUFFERPROPERTY;
114 #define DSPROPERTY_EAX30BUFFER_DEFERRED 0x80000000
115 /* NOTE: This applies all deferred changes, not just the buffer's. */
116 #define DSPROPERTY_EAX30BUFFER_IMMEDIATE 0x00000000
117 #define DSPROPERTY_EAX30BUFFER_COMMITDEFERREDSETTINGS 0x00000000
119 /* DSPROPERTY_EAX30BUFFER_ALLPARAMETERS */
120 typedef EAXSOURCEPROPERTIES EAX30BUFFERPROPERTIES, *LPEAX30BUFFERPROPERTIES;
122 /* DSPROPERTY_EAX30BUFFER_OBSTRUCTION */
123 #ifndef EAX_OBSTRUCTIONPROPERTIES_DEFINED
124 #define EAX_OBSTRUCTIONPROPERTIES_DEFINED
125 typedef struct _EAXOBSTRUCTIONPROPERTIES {
126 long lObstruction;
127 float flObstructionLFRatio;
128 } EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
129 #endif
131 /* DSPROPERTY_EAX30BUFFER_OCCLUSION */
132 #ifndef EAX_OCCLUSIONPROPERTIES_DEFINED
133 #define EAX_OCCLUSIONPROPERTIES_DEFINED
134 typedef struct _EAXOCCLUSIONPROPERTIES {
135 long lOcclusion;
136 float flOcclusionLFRatio;
137 float flOcclusionRoomRatio;
138 float flOcclusionDirectRatio;
139 } EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
140 #endif
142 /* DSPROPERTY_EAX30BUFFER_EXCLUSION */
143 #ifndef EAX_EXCLUSIONPROPERTIES_DEFINED
144 #define EAX_EXCLUSIONPROPERTIES_DEFINED
145 typedef struct _EAXEXCLUSIONPROPERTIES {
146 long lExclusion;
147 float flExclusionLFRatio;
148 } EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
149 #endif
151 /* DSPROPERTY_EAX30BUFFER_FLAGS */
152 #define EAX30BUFFERFLAGS_DIRECTHFAUTO 0x00000001
153 #define EAX30BUFFERFLAGS_ROOMAUTO 0x00000002
154 #define EAX30BUFFERFLAGS_ROOMHFAUTO 0x00000004
156 #endif /* EAX3_H */