b3d0b86db5cbd6462020f4d96b9091db73cf9965
[reactos.git] / reactos / sdk / include / psdk / ksmedia.h
1 /*
2 KS Media
3 (c) Andrew Greenwood, 2007.
4
5 Please see COPYING in the top level directory for license information.
6 */
7
8 #ifndef KSMEDIA_H
9 #define KSMEDIA_H
10
11 #include <ks.h>
12
13 /*
14 KS CATEGORIES
15 */
16
17 typedef LONGLONG REFERENCE_TIME;
18
19
20 #if (NTDDI_VERSION >= NTDDI_WINXP)
21
22 #if !defined(INIT_USBAUDIO_MID)
23 #define INIT_USBAUDIO_MID(guid, id)\
24 {\
25 (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);\
26 (guid)->Data2 = 0x1679;\
27 (guid)->Data3 = 0x463b;\
28 (guid)->Data4[0] = 0xa7;\
29 (guid)->Data4[1] = 0x2f;\
30 (guid)->Data4[2] = 0xa5;\
31 (guid)->Data4[3] = 0xbf;\
32 (guid)->Data4[4] = 0x64;\
33 (guid)->Data4[5] = 0xc8;\
34 (guid)->Data4[6] = 0x6e;\
35 (guid)->Data4[7] = 0xba;\
36 }
37 #define EXTRACT_USBAUDIO_MID(guid)\
38 (USHORT)((guid)->Data1 - 0x4e1cecd2)
39 #define DEFINE_USBAUDIO_MID_GUID(id)\
40 0x4e1cecd2+(USHORT)(id), 0x1679, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
41
42 #define INIT_EXBUS_MANUFACTURER_ID INIT_USBAUDIO_MID
43
44 #define IS_COMPATIBLE_USBAUDIO_MID(guid)\
45 (((guid)->Data1 >= 0x4e1cecd2) &&\
46 ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&\
47 ((guid)->Data2 == 0x1679) &&\
48 ((guid)->Data3 == 0x463b) &&\
49 ((guid)->Data4[0] == 0xa7) &&\
50 ((guid)->Data4[1] == 0x2f) &&\
51 ((guid)->Data4[2] == 0xa5) &&\
52 ((guid)->Data4[3] == 0xbf) &&\
53 ((guid)->Data4[4] == 0x64) &&\
54 ((guid)->Data4[5] == 0xc8) &&\
55 ((guid)->Data4[6] == 0x6e) &&\
56 ((guid)->Data4[7] == 0xba))
57 #endif // !defined(INIT_USBAUDIO_MID)
58
59 #if !defined(INIT_USBAUDIO_PID)
60 #define INIT_USBAUDIO_PID(guid, id)\
61 {\
62 (guid)->Data1 = 0xabcc5a5e + (USHORT)(id);\
63 (guid)->Data2 = 0xc263;\
64 (guid)->Data3 = 0x463b;\
65 (guid)->Data4[0] = 0xa7;\
66 (guid)->Data4[1] = 0x2f;\
67 (guid)->Data4[2] = 0xa5;\
68 (guid)->Data4[3] = 0xbf;\
69 (guid)->Data4[4] = 0x64;\
70 (guid)->Data4[5] = 0xc8;\
71 (guid)->Data4[6] = 0x6e;\
72 (guid)->Data4[7] = 0xba;\
73 }
74 #define EXTRACT_USBAUDIO_PID(guid)\
75 (USHORT)((guid)->Data1 - 0xabcc5a5e)
76 #define DEFINE_USBAUDIO_PID_GUID(id)\
77 0xabcc5a5e+(USHORT)(id), 0xc263, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
78
79 #define INIT_EXBUS_PRODUCT_ID INIT_USBAUDIO_PID
80
81 #define IS_COMPATIBLE_USBAUDIO_PID(guid)\
82 (((guid)->Data1 >= 0xabcc5a5e) &&\
83 ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&\
84 ((guid)->Data2 == 0xc263) &&\
85 ((guid)->Data3 == 0x463b) &&\
86 ((guid)->Data4[0] == 0xa7) &&\
87 ((guid)->Data4[1] == 0x2f) &&\
88 ((guid)->Data4[2] == 0xa5) &&\
89 ((guid)->Data4[3] == 0xbf) &&\
90 ((guid)->Data4[4] == 0x64) &&\
91 ((guid)->Data4[5] == 0xc8) &&\
92 ((guid)->Data4[6] == 0x6e) &&\
93 ((guid)->Data4[7] == 0xba))
94 #endif // !defined(INIT_USBAUDIO_PID)
95
96 #if !defined(INIT_USBAUDIO_PRODUCT_NAME)
97 #define INIT_USBAUDIO_PRODUCT_NAME(guid, vid, pid, strIndex)\
98 {\
99 (guid)->Data1 = 0XFC575048 + (USHORT)(vid);\
100 (guid)->Data2 = 0x2E08 + (USHORT)(pid);\
101 (guid)->Data3 = 0x463B + (USHORT)(strIndex);\
102 (guid)->Data4[0] = 0xA7;\
103 (guid)->Data4[1] = 0x2F;\
104 (guid)->Data4[2] = 0xA5;\
105 (guid)->Data4[3] = 0xBF;\
106 (guid)->Data4[4] = 0x64;\
107 (guid)->Data4[5] = 0xC8;\
108 (guid)->Data4[6] = 0x6E;\
109 (guid)->Data4[7] = 0xBA;\
110 }
111 #define DEFINE_USBAUDIO_PRODUCT_NAME(vid, pid, strIndex)\
112 0xFC575048+(USHORT)(vid), 0x2E08+(USHORT)(pid), 0x463B+(USHORT)(strIndex), 0xA7, 0x2F, 0xA5, 0xBF, 0x64, 0xC8, 0x6E, 0xBA
113 #endif
114
115 #define INIT_EXBUS_PRODUCT_NAME INIT_USBAUDIO_PRODUCT_NAME
116
117 // USB Component ID
118 #define STATIC_KSCOMPONENTID_USBAUDIO \
119 0x8F1275F0, 0x26E9, 0x4264, {0xBA, 0x4D, 0x39, 0xFF, 0xF0, 0x1D, 0x94, 0xAA}
120 DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA", KSCOMPONENTID_USBAUDIO);
121 #define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO)
122
123 #endif // (NTDDI_VERSION >= NTDDI_WINXP)
124
125 #define EXTRACT_WAVEFORMATEX_ID(Guid)\
126 (USHORT)((Guid)->Data1)
127
128 #define DEFINE_USB_TERMINAL_GUID(id)\
129 0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
130
131
132 /* Audio device (as presented by sysaudio) */
133
134 #define STATIC_KSCATEGORY_AUDIO_DEVICE \
135 0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
136 DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE);
137 #define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE)
138
139 /* video */
140 #define STATIC_PINNAME_VIDEO_CAPTURE \
141 0xfb6c4281, 0x353, 0x11d1, {0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba}
142 #define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE
143 DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CAPTURE);
144 #define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE)
145 #define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE
146
147 /* Preferred devices */
148
149 #define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \
150 0xD6C5066EL, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
151 DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE);
152 #define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE)
153
154 #define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \
155 0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
156 DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE);
157 #define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE)
158
159 #define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \
160 0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
161 DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
162 #define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
163
164
165 /* Media type categories */
166
167 #define STATIC_KSCATEGORY_AUDIO \
168 0x6994AD04L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
169 DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO);
170 #define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO)
171
172 #define STATIC_KSCATEGORY_VIDEO \
173 0x6994AD05L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
174 DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO);
175 #define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO)
176
177 #define STATIC_KSCATEGORY_TEXT \
178 0x6994AD06L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
179 DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT);
180 #define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
181
182 #define STATIC_KSCATEGORY_NETWORK \
183 0x67C9CC3CL, 0x69C4, 0x11D2, {0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
184 DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK);
185 #define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK)
186
187 #define STATIC_KSINTERFACESETID_Media \
188 0x3A13EB40L, 0x30A7, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
189 DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media);
190 #define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media)
191
192 /* ... */
193
194 #define STATIC_KSCATEGORY_TOPOLOGY \
195 0xDDA54A40L, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}
196 DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY);
197 #define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY)
198
199 #define STATIC_KSCATEGORY_VIRTUAL \
200 0x3503EAC4L, 0x1F26, 0x11D1, {0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
201 DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL);
202 #define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL)
203
204 #define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \
205 0xBF963D80L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
206 DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
207 #define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
208
209
210 /* Component-specific */
211
212 #define STATIC_KSCATEGORY_SYSAUDIO \
213 0xA7C7A5B1L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}
214 DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO);
215 #define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO)
216
217 #define STATIC_KSCATEGORY_WDMAUD \
218 0x3E227E76L, 0x690D, 0x11D2, {0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1}
219 DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD);
220 #define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD)
221
222 #define STATIC_KSCATEGORY_AUDIO_GFX \
223 0x9BAF9572L, 0x340C, 0x11D3, {0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F}
224 DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX);
225 #define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX)
226
227 #define STATIC_KSCATEGORY_AUDIO_SPLITTER \
228 0x9EA331FAL, 0xB91B, 0x45F8, {0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE}
229 DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER);
230 #define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
231
232 #define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER
233 #define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER
234
235 #define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE
236 #define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE
237
238 /*
239 Nodes
240 */
241
242 #define STATIC_KSNODETYPE_ADC\
243 0x4D837FE0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
244 DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC);
245 #define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC)
246
247 #define STATIC_KSNODETYPE_AGC\
248 0xE88C9BA0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
249 DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC);
250 #define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC)
251
252 #define STATIC_KSNODETYPE_3D_EFFECTS\
253 0x55515860L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
254 DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS);
255 #define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS)
256
257 #define STATIC_KSNODETYPE_SUPERMIX\
258 0xE573ADC0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
259 DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX);
260 #define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX)
261
262 #define STATIC_KSNODETYPE_SRC\
263 0x9DB7B9E0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
264 DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC);
265 #define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC)
266
267 #define STATIC_KSNODETYPE_DAC\
268 0x507AE360L, 0xC554, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
269 DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC);
270 #define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC)
271
272 #define STATIC_KSNODETYPE_SPDIF_INTERFACE\
273 DEFINE_USB_TERMINAL_GUID(0x0605)
274 DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE);
275 #define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE)
276
277 #define STATIC_KSNODETYPE_MICROPHONE\
278 DEFINE_USB_TERMINAL_GUID(0x0201)
279 DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE);
280 #define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE)
281
282 #define STATIC_KSNODETYPE_CD_PLAYER\
283 DEFINE_USB_TERMINAL_GUID(0x0703)
284 DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER);
285 #define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER)
286
287 #define STATIC_KSNODETYPE_CHORUS\
288 0x20173F20L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
289 DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS);
290 #define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS)
291
292 #define STATIC_KSNODETYPE_REVERB\
293 0xEF0328E0L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
294 DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB);
295 #define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB)
296
297
298 #define STATIC_KSNODETYPE_LINE_CONNECTOR\
299 DEFINE_USB_TERMINAL_GUID(0x0603)
300 DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR);
301 #define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR)
302
303 #define STATIC_KSNODETYPE_ANALOG_CONNECTOR\
304 DEFINE_USB_TERMINAL_GUID(0x601)
305 DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR);
306 #define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR)
307
308 #define STATIC_KSNODETYPE_SPEAKER\
309 DEFINE_USB_TERMINAL_GUID(0x0301)
310 DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER);
311 #define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER)
312
313 #define STATIC_KSAUDFNAME_RECORDING_CONTROL\
314 0x185FEDFAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
315 DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL);
316 #define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL)
317
318 #define STATIC_KSNODETYPE_VOLUME\
319 0x3A5ACC00L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
320 DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME);
321 #define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME)
322
323 #define STATIC_KSAUDFNAME_WAVE_VOLUME\
324 0x185FEDE5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
325 DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME);
326 #define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME)
327
328 #define STATIC_KSNODETYPE_MUTE\
329 0x02B223C0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
330 DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE);
331 #define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE)
332
333 #define STATIC_KSAUDFNAME_WAVE_MUTE\
334 0x185FEDE6L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
335 DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE);
336 #define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE)
337
338 #define STATIC_KSAUDFNAME_MIC_VOLUME\
339 0x185FEDEDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
340 DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME);
341 #define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME)
342
343 #define STATIC_KSNODETYPE_SUM\
344 0xDA441A60L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
345 DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM);
346 #define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM)
347
348 #define STATIC_KSAUDFNAME_MASTER_VOLUME\
349 0x185FEDE3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
350 DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME);
351 #define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME)
352
353 #define STATIC_KSAUDFNAME_CD_VOLUME\
354 0x185FEDE9L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
355 DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME);
356 #define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME)
357
358 #define STATIC_KSAUDFNAME_RECORDING_SOURCE\
359 0x185FEDEFL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
360 DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE);
361 #define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE)
362
363 #define STATIC_KSAUDFNAME_LINE_IN_VOLUME\
364 0x185FEDF4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
365 DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME);
366 #define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME)
367
368 #define STATIC_KSAUDFNAME_AUX_VOLUME\
369 0x185FEDFCL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
370 DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME);
371 #define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME)
372
373 #define STATIC_KSAUDFNAME_MIC_IN_VOLUME\
374 0x185FEDF5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
375 DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME);
376 #define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME)
377
378 #define STATIC_KSNODETYPE_LOUDNESS\
379 0x41887440L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
380 DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS);
381 #define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS)
382
383 #define STATIC_KSAUDFNAME_MICROPHONE_BOOST\
384 0x2bc31d6aL, 0x96e3, 0x11d2, {0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68}
385 DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST);
386 #define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST)
387
388 #define STATIC_KSAUDFNAME_CD_MUTE\
389 0x185FEDEAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
390 DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE);
391 #define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE)
392
393 #define STATIC_KSAUDFNAME_LINE_MUTE\
394 0x185FEDECL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
395 DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE);
396 #define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE)
397
398 #define STATIC_KSAUDFNAME_MIC_MUTE\
399 0x185FEDEEL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
400 DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE);
401 #define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE)
402
403 #define STATIC_KSAUDFNAME_AUX_MUTE\
404 0x185FEDFDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
405 DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE);
406 #define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE)
407
408 #define STATIC_KSAUDFNAME_VOLUME_CONTROL\
409 0x185FEDF7L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
410 DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL);
411 #define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL)
412
413 #define STATIC_KSNODETYPE_MUX\
414 0x2CEAF780L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
415 DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX);
416 #define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX)
417
418 #define STATIC_KSAUDFNAME_MASTER_MUTE\
419 0x185FEDE4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
420 DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE);
421 #define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE)
422
423 #define STATIC_KSNODETYPE_PEAKMETER\
424 0xa085651eL, 0x5f0d, 0x4b36, {0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e}
425 DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER);
426 #define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER)
427
428 #define STATIC_KSNODETYPE_STEREO_WIDE\
429 0xA9E69800L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
430 DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE);
431 #define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE)
432
433 #define STATIC_KSNODETYPE_TONE\
434 0x7607E580L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
435 DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE);
436 #define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE)
437
438
439 #define STATIC_KSNODETYPE_DESKTOP_MICROPHONE\
440 DEFINE_USB_TERMINAL_GUID(0x0202)
441 DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_MICROPHONE);
442 #define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE)
443
444 #define STATIC_KSNODETYPE_PERSONAL_MICROPHONE\
445 DEFINE_USB_TERMINAL_GUID(0x0203)
446 DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PERSONAL_MICROPHONE);
447 #define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE)
448
449 #define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE\
450 DEFINE_USB_TERMINAL_GUID(0x0204)
451 DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE);
452 #define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE)
453
454 #define STATIC_KSNODETYPE_MICROPHONE_ARRAY\
455 DEFINE_USB_TERMINAL_GUID(0x0205)
456 DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE_ARRAY);
457 #define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY)
458
459 #define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY\
460 DEFINE_USB_TERMINAL_GUID(0x0206)
461 DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PROCESSING_MICROPHONE_ARRAY);
462 #define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY)
463
464 #define STATIC_KSNODETYPE_HEADPHONES\
465 DEFINE_USB_TERMINAL_GUID(0x0302)
466 DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADPHONES);
467 #define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES)
468
469 #define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO\
470 DEFINE_USB_TERMINAL_GUID(0x0303)
471 DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO);
472 #define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO)
473
474 #define STATIC_KSNODETYPE_DESKTOP_SPEAKER\
475 DEFINE_USB_TERMINAL_GUID(0x0304)
476 DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_SPEAKER);
477 #define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER)
478
479 #define STATIC_KSNODETYPE_ROOM_SPEAKER\
480 DEFINE_USB_TERMINAL_GUID(0x0305)
481 DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ROOM_SPEAKER);
482 #define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER)
483
484 #define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER\
485 DEFINE_USB_TERMINAL_GUID(0x0306)
486 DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_COMMUNICATION_SPEAKER);
487 #define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER)
488
489 #define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER\
490 DEFINE_USB_TERMINAL_GUID(0x0307)
491 DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER);
492 #define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER)
493
494
495 /*
496 Pins
497 */
498
499 #define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \
500 0x47A4FA20L, 0xA251, 0x11D1, {0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
501 DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME);
502 #define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME)
503
504
505 /*
506 Formats
507 */
508
509 //#if defined(_INC_MMREG)
510 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
511 #include <pshpack1.h>
512 #endif
513 typedef struct {
514 KSDATAFORMAT DataFormat;
515 WAVEFORMATEX WaveFormatEx;
516 } KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX;
517
518 #ifndef _WAVEFORMATEXTENSIBLE_
519 #define _WAVEFORMATEXTENSIBLE_
520 typedef struct {
521 WAVEFORMATEX Format;
522 union
523 {
524 WORD wValidBitsPerSample;
525 WORD wSamplesPerBlock;
526 WORD wReserved;
527 }Samples;
528 DWORD dwChannelMask;
529 GUID SubFormat;
530 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
531 #endif
532
533 #if !defined(WAVE_FORMAT_EXTENSIBLE)
534 #define WAVE_FORMAT_EXTENSIBLE 0xFFFE
535 #endif
536
537 typedef struct {
538 ULONG Flags;
539 ULONG Control;
540 WAVEFORMATEX WaveFormatEx;
541 } KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC;
542
543 typedef struct {
544 KSDATAFORMAT DataFormat;
545 KSDSOUND_BUFFERDESC BufferDesc;
546 } KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND;
547
548 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
549 #include <poppack.h>
550 #endif
551
552 //#endif
553
554 typedef struct {
555 KSDATARANGE DataRange;
556 ULONG MaximumChannels;
557 ULONG MinimumBitsPerSample;
558 ULONG MaximumBitsPerSample;
559 ULONG MinimumSampleFrequency;
560 ULONG MaximumSampleFrequency;
561 } KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO;
562
563 #if !defined( DEFINE_WAVEFORMATEX_GUID )
564 #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
565 #endif
566
567 #define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX\
568 0x00000000L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
569 DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX);
570 #define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX)
571
572
573 #define INIT_WAVEFORMATEX_GUID(Guid, x) \
574 { \
575 *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX; \
576 (Guid)->Data1 = (USHORT)(x); \
577 }
578
579 // 'vids'
580 #define STATIC_KSDATAFORMAT_TYPE_VIDEO \
581 0x73646976L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
582 DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO);
583 #define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO)
584
585 // 'auds'
586 #define STATIC_KSDATAFORMAT_TYPE_AUDIO \
587 0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
588 DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO);
589 #define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO)
590
591 #define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND\
592 0x518590a2L, 0xa184, 0x11d0, {0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3}
593 DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND);
594 #define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND)
595
596 #define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG\
597 0x6dba3190L, 0x67bd, 0x11cf, {0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
598 DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG);
599 #define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG)
600
601
602 // 'txts'
603 #define STATIC_KSDATAFORMAT_TYPE_TEXT \
604 0x73747874L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
605 DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT);
606 #define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT)
607
608 #define STATIC_KSDATAFORMAT_TYPE_MUSIC \
609 0xE725D360L, 0x62CC, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
610 DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC);
611 #define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC)
612
613 // 'mids'
614 #define STATIC_KSDATAFORMAT_TYPE_MIDI \
615 0x7364696DL, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
616 DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI);
617 #define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI)
618
619 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI \
620 0x1D262760L, 0xE957, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
621 DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI);
622 #define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI)
623
624 #define STATIC_KSDATAFORMAT_SUBTYPE_PCM\
625 0x00000001L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
626 DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM);
627 #define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
628
629 #define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\
630 0x00000003L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
631 DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT);
632 #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
633
634 #define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX\
635 0x05589f81L, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}
636 DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX);
637 #define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
638
639 #define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO\
640 0xe06d802cL, 0xdb46, 0x11cf, {0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea}
641 DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_AC3_AUDIO);
642 #define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO)
643
644 #define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO\
645 0xe06d80e4L, 0xdb46, 0x11cf, {0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea}
646 DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_AC3_AUDIO);
647 #define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO)
648
649 #define STATIC_KSPROPSETID_AC3\
650 0xBFABE720L, 0x6E1F, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
651 DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000", KSPROPSETID_AC3);
652 #define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3)
653
654 #define STATIC_KSPROPSETID_Audio\
655 0x45FFAAA0L, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
656 DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio);
657 #define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio)
658
659 typedef enum {
660 KSPROPERTY_AUDIO_LATENCY = 1,
661 KSPROPERTY_AUDIO_COPY_PROTECTION,
662 KSPROPERTY_AUDIO_CHANNEL_CONFIG,
663 KSPROPERTY_AUDIO_VOLUMELEVEL,
664 KSPROPERTY_AUDIO_POSITION,
665 KSPROPERTY_AUDIO_DYNAMIC_RANGE,
666 KSPROPERTY_AUDIO_QUALITY,
667 KSPROPERTY_AUDIO_SAMPLING_RATE,
668 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
669 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
670 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
671 KSPROPERTY_AUDIO_MUX_SOURCE,
672 KSPROPERTY_AUDIO_MUTE,
673 KSPROPERTY_AUDIO_BASS,
674 KSPROPERTY_AUDIO_MID,
675 KSPROPERTY_AUDIO_TREBLE,
676 KSPROPERTY_AUDIO_BASS_BOOST,
677 KSPROPERTY_AUDIO_EQ_LEVEL,
678 KSPROPERTY_AUDIO_NUM_EQ_BANDS,
679 KSPROPERTY_AUDIO_EQ_BANDS,
680 KSPROPERTY_AUDIO_AGC,
681 KSPROPERTY_AUDIO_DELAY,
682 KSPROPERTY_AUDIO_LOUDNESS,
683 KSPROPERTY_AUDIO_WIDE_MODE,
684 KSPROPERTY_AUDIO_WIDENESS,
685 KSPROPERTY_AUDIO_REVERB_LEVEL,
686 KSPROPERTY_AUDIO_CHORUS_LEVEL,
687 KSPROPERTY_AUDIO_DEV_SPECIFIC,
688 KSPROPERTY_AUDIO_DEMUX_DEST,
689 KSPROPERTY_AUDIO_STEREO_ENHANCE,
690 KSPROPERTY_AUDIO_MANUFACTURE_GUID,
691 KSPROPERTY_AUDIO_PRODUCT_GUID,
692 KSPROPERTY_AUDIO_CPU_RESOURCES,
693 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
694 KSPROPERTY_AUDIO_SURROUND_ENCODE,
695 KSPROPERTY_AUDIO_3D_INTERFACE
696
697 #if (NTDDI_VERSION >= NTDDI_WINXP)
698 , KSPROPERTY_AUDIO_PEAKMETER
699 , KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
700 , KSPROPERTY_AUDIO_FILTER_STATE
701 , KSPROPERTY_AUDIO_PREFERRED_STATUS
702
703 #endif
704 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
705 , KSPROPERTY_AUDIO_PEQ_MAX_BANDS
706 , KSPROPERTY_AUDIO_PEQ_NUM_BANDS
707 , KSPROPERTY_AUDIO_PEQ_BAND_CENTER_FREQ
708 , KSPROPERTY_AUDIO_PEQ_BAND_Q_FACTOR
709 , KSPROPERTY_AUDIO_PEQ_BAND_LEVEL
710 , KSPROPERTY_AUDIO_CHORUS_MODULATION_RATE
711 , KSPROPERTY_AUDIO_CHORUS_MODULATION_DEPTH
712 , KSPROPERTY_AUDIO_REVERB_TIME
713 , KSPROPERTY_AUDIO_REVERB_DELAY_FEEDBACK
714 , KSPROPERTY_AUDIO_POSITIONEX
715 , KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY
716 #endif
717
718 } KSPROPERTY_AUDIO;
719
720 #define STATIC_KSEVENTSETID_AudioControlChange\
721 0xE85E9698L, 0xFA2F, 0x11D1, {0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
722 DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange);
723 #define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange)
724
725 typedef enum {
726 KSEVENT_CONTROL_CHANGE,
727 } KSEVENT_AUDIO_CONTROL_CHANGE;
728
729
730 #define STATIC_KSEVENTSETID_LoopedStreaming\
731 0x4682B940L, 0xC6EF, 0x11D0, {0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D}
732 DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming);
733 #define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming)
734
735 typedef enum {
736 KSEVENT_LOOPEDSTREAMING_POSITION,
737 } KSEVENT_LOOPEDSTREAMING;
738
739 #define STATIC_KSEVENTSETID_Connection\
740 0x7f4bcbe0L, 0x9ea5, 0x11cf, {0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00}
741 DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection);
742 #define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection)
743
744
745 typedef struct {
746 KSEVENTDATA KsEventData;
747 #if defined(_NTDDK_)
748 ULONGLONG Position;
749 #else // !_NTDDK_
750 DWORDLONG Position;
751 #endif // !_NTDDK_
752 } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ;
753
754 #define STATIC_KSPROPSETID_DrmAudioStream\
755 0x2f2c8ddd, 0x4198, 0x4fac, {0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6}
756 DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream);
757 #define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream)
758
759 typedef enum {
760 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
761 } KSPROPERTY_DRMAUDIOSTREAM;
762
763
764 /*
765 SysAudio Properties
766 */
767
768 #define STATIC_KSPROPSETID_Sysaudio \
769 0xCBE3FAA0L, 0xCC75, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
770 DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio);
771 #define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio)
772
773 typedef enum {
774 KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1,
775 KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2,
776 KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3,
777 KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4,
778 KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5,
779 KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6,
780 KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7,
781 KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14,
782 KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16
783 } KSPROPERTY_SYSAUDIO;
784
785 typedef struct {
786 KSPROPERTY Property;
787 ULONG Flags;
788 ULONG DeviceNumber;
789 } SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO;
790
791 #define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001
792
793
794 #define STATIC_KSPROPSETID_Sysaudio_Pin \
795 0xA3A53220L, 0xC6E4, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
796 DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin);
797 #define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin)
798
799 typedef enum {
800 KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1,
801 } KSPROPERTY_SYSAUDIO_PIN;
802
803
804 #define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000
805 #define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFF
806
807 #if (NTDDI_VERSION >= NTDDI_WINXP)
808 #define KSAUDIO_SPEAKER_DIRECTOUT 0
809 #endif
810 #define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER)
811 #define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
812 #define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
813 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
814 #define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
815 SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
816 #define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
817 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
818 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
819 #define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
820 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
821 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
822 SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
823
824 #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
825
826 #define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
827 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
828 SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
829 #define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
830 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
831 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
832 SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
833 #define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1
834 #define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1
835 #endif
836
837 typedef struct
838 {
839 KSPROPERTY Property;
840 ULONG NodeId;
841 ULONG Reserved;
842 } KSNODEPROPERTY, *PKSNODEPROPERTY;
843
844 typedef struct
845 {
846 KSNODEPROPERTY NodeProperty;
847 LONG Channel;
848 ULONG Reserved;
849 } KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL;
850
851 typedef struct {
852 #if defined(_NTDDK_)
853 ULONGLONG PlayOffset;
854 ULONGLONG WriteOffset;
855 #else
856 DWORDLONG PlayOffset;
857 DWORDLONG WriteOffset;
858 #endif
859 } KSAUDIO_POSITION, *PKSAUDIO_POSITION;
860
861 typedef struct {
862 ULONG FifoSize;
863 ULONG ChipsetDelay;
864 ULONG CodecDelay;
865 } KSRTAUDIO_HWLATENCY, *PKSRTAUDIO_HWLATENCY;
866
867 typedef struct {
868 PVOID Register;
869 ULONG Width;
870 ULONGLONG Numerator;
871 ULONGLONG Denominator;
872 ULONG Accuracy;
873 } KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;
874
875 #define KSNODEPIN_STANDARD_IN 1
876 #define KSNODEPIN_STANDARD_OUT 0
877
878 #define KSNODEPIN_SUM_MUX_IN 1
879 #define KSNODEPIN_SUM_MUX_OUT 0
880
881 #define KSNODEPIN_DEMUX_IN 0
882 #define KSNODEPIN_DEMUX_OUT 1
883
884 #if (NTDDI_VERSION < NTDDI_VISTA)
885
886 #define KSNODEPIN_AEC_RENDER_IN 1
887 #define KSNODEPIN_AEC_RENDER_OUT 0
888 #define KSNODEPIN_AEC_CAPTURE_IN 2
889 #define KSNODEPIN_AEC_CAPTURE_OUT 3
890
891 #endif
892
893
894 #define STATIC_KSMUSIC_TECHNOLOGY_PORT\
895 0x86C92E60L, 0x62E8, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
896 DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT);
897 #define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT)
898
899 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS\
900 0x2CA15FA0L, 0x6CFE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
901 DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS);
902 #define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS)
903
904 #define STATIC_KSAUDFNAME_MIDI\
905 0x185FEDF8L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
906 DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI);
907 #define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI)
908
909 #define STATIC_KSNODETYPE_SYNTHESIZER\
910 DEFINE_USB_TERMINAL_GUID(0x0713)
911 DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER);
912 #define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
913
914 typedef struct
915 {
916 KSDATARANGE DataRange;
917 GUID Technology;
918 ULONG Channels;
919 ULONG Notes;
920 ULONG ChannelMask;
921 } KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC;
922
923 #if (NTDDI_VERSION >= NTDDI_WINXPSP1)
924
925 #define STATIC_KSPROPSETID_Jack\
926 0x4509f757, 0x2d46, 0x4637, {0x8e, 0x62, 0xce, 0x7d, 0xb9, 0x44, 0xf5, 0x7b}
927 DEFINE_GUIDSTRUCT("4509F757-2D46-4637-8E62-CE7DB944F57B", KSPROPSETID_Jack);
928 #define KSPROPSETID_Jack DEFINE_GUIDNAMED(KSPROPSETID_Jack)
929
930 typedef enum {
931 KSPROPERTY_JACK_DESCRIPTION = 1,
932 KSPROPERTY_JACK_DESCRIPTION2,
933 KSPROPERTY_JACK_SINK_INFO,
934 KSPROPERTY_JACK_CONTAINERID
935 } KSPROPERTY_JACK;
936
937 typedef enum {
938 eConnTypeUnknown,
939 eConnType3Point5mm,
940 eConnTypeQuarter,
941 eConnTypeAtapiInternal,
942 eConnTypeRCA,
943 eConnTypeOptical,
944 eConnTypeOtherDigital,
945 eConnTypeOtherAnalog,
946 eConnTypeMultichannelAnalogDIN,
947 eConnTypeXlrProfessional,
948 eConnTypeRJ11Modem,
949 eConnTypeCombination
950 } EPcxConnectionType;
951
952 #define eGeoLocReserved5 eGeoLocNotApplicable
953
954 typedef enum {
955 eGeoLocRear = 0x1,
956 eGeoLocFront,
957 eGeoLocLeft,
958 eGeoLocRight,
959 eGeoLocTop,
960 eGeoLocBottom,
961 eGeoLocRearPanel,
962 eGeoLocRiser,
963 eGeoLocInsideMobileLid,
964 eGeoLocDrivebay,
965 eGeoLocHDMI,
966 eGeoLocOutsideMobileLid,
967 eGeoLocATAPI,
968 eGeoLocNotApplicable,
969 eGeoLocReserved6,
970 EPcxGeoLocation_enum_count
971 } EPcxGeoLocation;
972
973 typedef enum {
974 eGenLocPrimaryBox = 0,
975 eGenLocInternal,
976 eGenLocSeparate,
977 eGenLocOther,
978 EPcxGenLocation_enum_count
979 } EPcxGenLocation;
980
981 typedef enum {
982 ePortConnJack = 0,
983 ePortConnIntegratedDevice,
984 ePortConnBothIntegratedAndJack,
985 ePortConnUnknown
986 } EPxcPortConnection;
987
988 typedef struct {
989 DWORD ChannelMapping;
990 DWORD Color;
991 EPcxConnectionType ConnectionType;
992 EPcxGeoLocation GeoLocation;
993 EPcxGenLocation GenLocation;
994 EPxcPortConnection PortConnection;
995 BOOL IsConnected;
996 } KSJACK_DESCRIPTION, *PKSJACK_DESCRIPTION;
997
998 typedef enum {
999 KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
1000 KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT
1001 } KSJACK_SINK_CONNECTIONTYPE;
1002
1003 #define MAX_SINK_DESCRIPTION_NAME_LENGTH 32
1004
1005 typedef struct _tagKSJACK_SINK_INFORMATION {
1006 KSJACK_SINK_CONNECTIONTYPE ConnType;
1007 WORD ManufacturerId;
1008 WORD ProductId;
1009 WORD AudioLatency;
1010 BOOL HDCPCapable;
1011 BOOL AICapable;
1012 UCHAR SinkDescriptionLength;
1013 WCHAR SinkDescription[MAX_SINK_DESCRIPTION_NAME_LENGTH];
1014 LUID PortId;
1015 } KSJACK_SINK_INFORMATION, *PKSJACK_SINK_INFORMATION;
1016
1017 #define JACKDESC2_PRESENCE_DETECT_CAPABILITY 0x1
1018 #define JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY 0x2
1019
1020 typedef struct _tagKSJACK_DESCRIPTION2 {
1021 DWORD DeviceStateInfo;
1022 DWORD JackCapabilities;
1023 } KSJACK_DESCRIPTION2, *PKSJACK_DESCRIPTION2;
1024
1025 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */
1026
1027 #ifndef _SPEAKER_POSITIONS_
1028 #define _SPEAKER_POSITIONS_
1029
1030
1031 #define SPEAKER_FRONT_LEFT 0x1
1032 #define SPEAKER_FRONT_RIGHT 0x2
1033 #define SPEAKER_FRONT_CENTER 0x4
1034 #define SPEAKER_LOW_FREQUENCY 0x8
1035 #define SPEAKER_BACK_LEFT 0x10
1036 #define SPEAKER_BACK_RIGHT 0x20
1037 #define SPEAKER_FRONT_LEFT_OF_CENTER 0x40
1038 #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
1039 #define SPEAKER_BACK_CENTER 0x100
1040 #define SPEAKER_SIDE_LEFT 0x200
1041 #define SPEAKER_SIDE_RIGHT 0x400
1042 #define SPEAKER_TOP_CENTER 0x800
1043 #define SPEAKER_TOP_FRONT_LEFT 0x1000
1044 #define SPEAKER_TOP_FRONT_CENTER 0x2000
1045 #define SPEAKER_TOP_FRONT_RIGHT 0x4000
1046 #define SPEAKER_TOP_BACK_LEFT 0x8000
1047 #define SPEAKER_TOP_BACK_CENTER 0x10000
1048 #define SPEAKER_TOP_BACK_RIGHT 0x20000
1049
1050 #define SPEAKER_RESERVED 0x7FFC0000
1051 #define SPEAKER_ALL 0x80000000
1052
1053 #endif
1054
1055 #if (NTDDI_VERSION >= NTDDI_WINXP)
1056 #define KSAUDIO_SPEAKER_DIRECTOUT 0
1057 #endif
1058
1059 #define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER)
1060 #define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
1061 #define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1062 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
1063 #define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1064 SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
1065 #define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1066 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1067 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
1068 #define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1069 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1070 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
1071 SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
1072
1073 #endif