xref: /reactos/sdk/include/psdk/ksmedia.h (revision 3d9ef5c7)
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 _KS_
9 #error ks.h needs to be included before ksmedia.h
10 #endif /* _KS_ */
11 
12 #ifndef KSMEDIA_H
13 #define KSMEDIA_H
14 
15 /*
16     KS CATEGORIES
17 */
18 
19 typedef LONGLONG REFERENCE_TIME;
20 
21 
22 #if (NTDDI_VERSION >= NTDDI_WINXP)
23 
24 #if !defined(INIT_USBAUDIO_MID)
25 #define INIT_USBAUDIO_MID(guid, id)\
26 {\
27     (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);\
28     (guid)->Data2 = 0x1679;\
29     (guid)->Data3 = 0x463b;\
30     (guid)->Data4[0] = 0xa7;\
31     (guid)->Data4[1] = 0x2f;\
32     (guid)->Data4[2] = 0xa5;\
33     (guid)->Data4[3] = 0xbf;\
34     (guid)->Data4[4] = 0x64;\
35     (guid)->Data4[5] = 0xc8;\
36     (guid)->Data4[6] = 0x6e;\
37     (guid)->Data4[7] = 0xba;\
38 }
39 #define EXTRACT_USBAUDIO_MID(guid)\
40     (USHORT)((guid)->Data1 - 0x4e1cecd2)
41 #define DEFINE_USBAUDIO_MID_GUID(id)\
42     0x4e1cecd2+(USHORT)(id), 0x1679, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
43 
44 #define INIT_EXBUS_MANUFACTURER_ID INIT_USBAUDIO_MID
45 
46 #define IS_COMPATIBLE_USBAUDIO_MID(guid)\
47     (((guid)->Data1 >= 0x4e1cecd2) &&\
48     ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&\
49     ((guid)->Data2 == 0x1679) &&\
50     ((guid)->Data3 == 0x463b) &&\
51     ((guid)->Data4[0] == 0xa7) &&\
52     ((guid)->Data4[1] == 0x2f) &&\
53     ((guid)->Data4[2] == 0xa5) &&\
54     ((guid)->Data4[3] == 0xbf) &&\
55     ((guid)->Data4[4] == 0x64) &&\
56     ((guid)->Data4[5] == 0xc8) &&\
57     ((guid)->Data4[6] == 0x6e) &&\
58     ((guid)->Data4[7] == 0xba))
59 #endif // !defined(INIT_USBAUDIO_MID)
60 
61 #if !defined(INIT_USBAUDIO_PID)
62 #define INIT_USBAUDIO_PID(guid, id)\
63 {\
64     (guid)->Data1 = 0xabcc5a5e + (USHORT)(id);\
65     (guid)->Data2 = 0xc263;\
66     (guid)->Data3 = 0x463b;\
67     (guid)->Data4[0] = 0xa7;\
68     (guid)->Data4[1] = 0x2f;\
69     (guid)->Data4[2] = 0xa5;\
70     (guid)->Data4[3] = 0xbf;\
71     (guid)->Data4[4] = 0x64;\
72     (guid)->Data4[5] = 0xc8;\
73     (guid)->Data4[6] = 0x6e;\
74     (guid)->Data4[7] = 0xba;\
75 }
76 #define EXTRACT_USBAUDIO_PID(guid)\
77     (USHORT)((guid)->Data1 - 0xabcc5a5e)
78 #define DEFINE_USBAUDIO_PID_GUID(id)\
79     0xabcc5a5e+(USHORT)(id), 0xc263, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
80 
81 #define INIT_EXBUS_PRODUCT_ID INIT_USBAUDIO_PID
82 
83 #define IS_COMPATIBLE_USBAUDIO_PID(guid)\
84     (((guid)->Data1 >= 0xabcc5a5e) &&\
85     ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&\
86     ((guid)->Data2 == 0xc263) &&\
87     ((guid)->Data3 == 0x463b) &&\
88     ((guid)->Data4[0] == 0xa7) &&\
89     ((guid)->Data4[1] == 0x2f) &&\
90     ((guid)->Data4[2] == 0xa5) &&\
91     ((guid)->Data4[3] == 0xbf) &&\
92     ((guid)->Data4[4] == 0x64) &&\
93     ((guid)->Data4[5] == 0xc8) &&\
94     ((guid)->Data4[6] == 0x6e) &&\
95     ((guid)->Data4[7] == 0xba))
96 #endif // !defined(INIT_USBAUDIO_PID)
97 
98 #if !defined(INIT_USBAUDIO_PRODUCT_NAME)
99 #define INIT_USBAUDIO_PRODUCT_NAME(guid, vid, pid, strIndex)\
100 {\
101     (guid)->Data1 = 0XFC575048 + (USHORT)(vid);\
102     (guid)->Data2 = 0x2E08     + (USHORT)(pid);\
103     (guid)->Data3 = 0x463B     + (USHORT)(strIndex);\
104     (guid)->Data4[0] = 0xA7;\
105     (guid)->Data4[1] = 0x2F;\
106     (guid)->Data4[2] = 0xA5;\
107     (guid)->Data4[3] = 0xBF;\
108     (guid)->Data4[4] = 0x64;\
109     (guid)->Data4[5] = 0xC8;\
110     (guid)->Data4[6] = 0x6E;\
111     (guid)->Data4[7] = 0xBA;\
112 }
113 #define DEFINE_USBAUDIO_PRODUCT_NAME(vid, pid, strIndex)\
114     0xFC575048+(USHORT)(vid), 0x2E08+(USHORT)(pid), 0x463B+(USHORT)(strIndex), 0xA7, 0x2F, 0xA5, 0xBF, 0x64, 0xC8, 0x6E, 0xBA
115 #endif
116 
117 #define INIT_EXBUS_PRODUCT_NAME INIT_USBAUDIO_PRODUCT_NAME
118 
119 // USB Component ID
120 #define STATIC_KSCOMPONENTID_USBAUDIO \
121     0x8F1275F0, 0x26E9, 0x4264, {0xBA, 0x4D, 0x39, 0xFF, 0xF0, 0x1D, 0x94, 0xAA}
122 DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA", KSCOMPONENTID_USBAUDIO);
123 #define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO)
124 
125 #endif // (NTDDI_VERSION >= NTDDI_WINXP)
126 
127 #define EXTRACT_WAVEFORMATEX_ID(Guid)\
128     (USHORT)((Guid)->Data1)
129 
130 #define DEFINE_USB_TERMINAL_GUID(id)\
131 	0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
132 
133 
134 /* Audio device (as presented by sysaudio) */
135 
136 #define STATIC_KSCATEGORY_AUDIO_DEVICE \
137     0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
138 DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE);
139 #define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE)
140 
141 /* video */
142 #define STATIC_PINNAME_VIDEO_CAPTURE \
143     0xfb6c4281, 0x353, 0x11d1, {0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba}
144 #define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE
145 DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CAPTURE);
146 #define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE)
147 #define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE
148 
149 /* Preferred devices */
150 
151 #define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \
152     0xD6C5066EL, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
153 DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE);
154 #define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE)
155 
156 #define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \
157     0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
158 DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE);
159 #define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE)
160 
161 #define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \
162     0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
163 DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
164 #define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
165 
166 
167 /* Media type categories */
168 
169 #define STATIC_KSCATEGORY_AUDIO \
170     0x6994AD04L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
171 DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO);
172 #define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO)
173 
174 #define STATIC_KSCATEGORY_VIDEO \
175     0x6994AD05L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
176 DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO);
177 #define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO)
178 
179 #define STATIC_KSCATEGORY_TEXT \
180     0x6994AD06L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
181 DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT);
182 #define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
183 
184 #define STATIC_KSCATEGORY_NETWORK \
185     0x67C9CC3CL, 0x69C4, 0x11D2, {0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
186 DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK);
187 #define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK)
188 
189 #define STATIC_KSINTERFACESETID_Media \
190     0x3A13EB40L, 0x30A7, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
191 DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media);
192 #define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media)
193 
194 /* ... */
195 
196 #define STATIC_KSCATEGORY_TOPOLOGY \
197     0xDDA54A40L, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}
198 DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY);
199 #define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY)
200 
201 #define STATIC_KSCATEGORY_VIRTUAL \
202     0x3503EAC4L, 0x1F26, 0x11D1, {0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
203 DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL);
204 #define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL)
205 
206 #define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \
207     0xBF963D80L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
208 DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
209 #define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
210 
211 
212 /* Component-specific */
213 
214 #define STATIC_KSCATEGORY_SYSAUDIO \
215     0xA7C7A5B1L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}
216 DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO);
217 #define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO)
218 
219 #define STATIC_KSCATEGORY_WDMAUD \
220     0x3E227E76L, 0x690D, 0x11D2, {0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1}
221 DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD);
222 #define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD)
223 
224 #define STATIC_KSCATEGORY_AUDIO_GFX \
225     0x9BAF9572L, 0x340C, 0x11D3, {0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F}
226 DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX);
227 #define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX)
228 
229 #define STATIC_KSCATEGORY_AUDIO_SPLITTER \
230     0x9EA331FAL, 0xB91B, 0x45F8, {0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE}
231 DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER);
232 #define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
233 
234 #define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER
235 #define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER
236 
237 #define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE
238 #define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE
239 
240 #define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO \
241     0x0482DDE0L, 0x7817, 0x11CF, {0x8A, 0x03, 0x00, 0xAA, 0x00, 0x6E, 0xCB, 0x65}
242 DEFINE_GUIDSTRUCT("0482DDE0-7817-11CF-8A03-00AA006ECB65", KSDATAFORMAT_SPECIFIER_ANALOGVIDEO);
243 #define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO)
244 
245 #define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO \
246     0x0482DDE1L, 0x7817, 0x11CF, {0x8A, 0x03, 0x00, 0xAA, 0x00, 0x6E, 0xCB, 0x65}
247 DEFINE_GUIDSTRUCT("0482DDE1-7817-11CF-8A03-00AA006ECB65", KSDATAFORMAT_TYPE_ANALOGVIDEO);
248 #define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO)
249 
250 #define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN \
251     0xFB6C4283L, 0x0353, 0x11D1, {0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA}
252 DEFINE_GUIDSTRUCT("FB6C4283-0353-11D1-905F-0000C0CC16BA", PINNAME_VIDEO_ANALOGVIDEOIN);
253 #define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN)
254 
255 /*
256     Nodes
257 */
258 
259 #define STATIC_KSNODETYPE_ADC\
260     0x4D837FE0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
261 DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC);
262 #define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC)
263 
264 #define STATIC_KSNODETYPE_AGC\
265     0xE88C9BA0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
266 DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC);
267 #define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC)
268 
269 #define STATIC_KSNODETYPE_3D_EFFECTS\
270     0x55515860L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
271 DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS);
272 #define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS)
273 
274 #define STATIC_KSNODETYPE_SUPERMIX\
275     0xE573ADC0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
276 DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX);
277 #define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX)
278 
279 #define STATIC_KSNODETYPE_SRC\
280     0x9DB7B9E0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
281 DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC);
282 #define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC)
283 
284 #define STATIC_KSNODETYPE_DAC\
285     0x507AE360L, 0xC554, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
286 DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC);
287 #define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC)
288 
289 #define STATIC_KSNODETYPE_SPDIF_INTERFACE\
290     DEFINE_USB_TERMINAL_GUID(0x0605)
291 DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE);
292 #define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE)
293 
294 #define STATIC_KSNODETYPE_MICROPHONE\
295     DEFINE_USB_TERMINAL_GUID(0x0201)
296 DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE);
297 #define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE)
298 
299 #define STATIC_KSNODETYPE_CD_PLAYER\
300     DEFINE_USB_TERMINAL_GUID(0x0703)
301 DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER);
302 #define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER)
303 
304 #define STATIC_KSNODETYPE_CHORUS\
305     0x20173F20L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
306 DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS);
307 #define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS)
308 
309 #define STATIC_KSNODETYPE_REVERB\
310     0xEF0328E0L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
311 DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB);
312 #define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB)
313 
314 
315 #define STATIC_KSNODETYPE_LINE_CONNECTOR\
316     DEFINE_USB_TERMINAL_GUID(0x0603)
317 DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR);
318 #define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR)
319 
320 #define STATIC_KSNODETYPE_ANALOG_CONNECTOR\
321     DEFINE_USB_TERMINAL_GUID(0x601)
322 DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR);
323 #define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR)
324 
325 #define STATIC_KSNODETYPE_SPEAKER\
326     DEFINE_USB_TERMINAL_GUID(0x0301)
327 DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER);
328 #define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER)
329 
330 #define STATIC_KSAUDFNAME_RECORDING_CONTROL\
331     0x185FEDFAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
332 DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL);
333 #define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL)
334 
335 #define STATIC_KSNODETYPE_VOLUME\
336     0x3A5ACC00L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
337 DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME);
338 #define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME)
339 
340 #define STATIC_KSAUDFNAME_WAVE_VOLUME\
341     0x185FEDE5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
342 DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME);
343 #define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME)
344 
345 #define STATIC_KSNODETYPE_MUTE\
346     0x02B223C0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
347 DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE);
348 #define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE)
349 
350 #define STATIC_KSAUDFNAME_WAVE_MUTE\
351     0x185FEDE6L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
352 DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE);
353 #define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE)
354 
355 #define STATIC_KSAUDFNAME_MIC_VOLUME\
356     0x185FEDEDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
357 DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME);
358 #define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME)
359 
360 #define STATIC_KSNODETYPE_SUM\
361     0xDA441A60L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
362 DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM);
363 #define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM)
364 
365 #define STATIC_KSAUDFNAME_MASTER_VOLUME\
366     0x185FEDE3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
367 DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME);
368 #define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME)
369 
370 #define STATIC_KSAUDFNAME_CD_VOLUME\
371     0x185FEDE9L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
372 DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME);
373 #define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME)
374 
375 #define STATIC_KSAUDFNAME_RECORDING_SOURCE\
376     0x185FEDEFL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
377 DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE);
378 #define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE)
379 
380 #define STATIC_KSAUDFNAME_LINE_IN_VOLUME\
381     0x185FEDF4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
382 DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME);
383 #define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME)
384 
385 #define STATIC_KSAUDFNAME_AUX_VOLUME\
386     0x185FEDFCL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
387 DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME);
388 #define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME)
389 
390 #define STATIC_KSAUDFNAME_MIC_IN_VOLUME\
391     0x185FEDF5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
392 DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME);
393 #define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME)
394 
395 #define STATIC_KSNODETYPE_LOUDNESS\
396     0x41887440L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
397 DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS);
398 #define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS)
399 
400 #define STATIC_KSAUDFNAME_MICROPHONE_BOOST\
401     0x2bc31d6aL, 0x96e3, 0x11d2, {0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68}
402 DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST);
403 #define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST)
404 
405 #define STATIC_KSAUDFNAME_CD_MUTE\
406     0x185FEDEAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
407 DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE);
408 #define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE)
409 
410 #define STATIC_KSAUDFNAME_LINE_MUTE\
411     0x185FEDECL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
412 DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE);
413 #define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE)
414 
415 #define STATIC_KSAUDFNAME_MIC_MUTE\
416     0x185FEDEEL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
417 DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE);
418 #define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE)
419 
420 #define STATIC_KSAUDFNAME_AUX_MUTE\
421     0x185FEDFDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
422 DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE);
423 #define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE)
424 
425 #define STATIC_KSAUDFNAME_VOLUME_CONTROL\
426     0x185FEDF7L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
427 DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL);
428 #define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL)
429 
430 #define STATIC_KSNODETYPE_MUX\
431     0x2CEAF780L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
432 DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX);
433 #define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX)
434 
435 #define STATIC_KSAUDFNAME_MASTER_MUTE\
436     0x185FEDE4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
437 DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE);
438 #define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE)
439 
440 #define STATIC_KSNODETYPE_PEAKMETER\
441     0xa085651eL, 0x5f0d, 0x4b36, {0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e}
442 DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER);
443 #define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER)
444 
445 #define STATIC_KSNODETYPE_STEREO_WIDE\
446     0xA9E69800L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
447 DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE);
448 #define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE)
449 
450 #define STATIC_KSNODETYPE_TONE\
451     0x7607E580L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
452 DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE);
453 #define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE)
454 
455 
456 #define STATIC_KSNODETYPE_DESKTOP_MICROPHONE\
457     DEFINE_USB_TERMINAL_GUID(0x0202)
458 DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_MICROPHONE);
459 #define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE)
460 
461 #define STATIC_KSNODETYPE_PERSONAL_MICROPHONE\
462     DEFINE_USB_TERMINAL_GUID(0x0203)
463 DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PERSONAL_MICROPHONE);
464 #define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE)
465 
466 #define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE\
467     DEFINE_USB_TERMINAL_GUID(0x0204)
468 DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE);
469 #define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE)
470 
471 #define STATIC_KSNODETYPE_MICROPHONE_ARRAY\
472     DEFINE_USB_TERMINAL_GUID(0x0205)
473 DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE_ARRAY);
474 #define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY)
475 
476 #define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY\
477     DEFINE_USB_TERMINAL_GUID(0x0206)
478 DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PROCESSING_MICROPHONE_ARRAY);
479 #define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY)
480 
481 #define STATIC_KSNODETYPE_HEADPHONES\
482     DEFINE_USB_TERMINAL_GUID(0x0302)
483 DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADPHONES);
484 #define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES)
485 
486 #define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO\
487     DEFINE_USB_TERMINAL_GUID(0x0303)
488 DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO);
489 #define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO)
490 
491 #define STATIC_KSNODETYPE_DESKTOP_SPEAKER\
492     DEFINE_USB_TERMINAL_GUID(0x0304)
493 DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_SPEAKER);
494 #define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER)
495 
496 #define STATIC_KSNODETYPE_ROOM_SPEAKER\
497     DEFINE_USB_TERMINAL_GUID(0x0305)
498 DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ROOM_SPEAKER);
499 #define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER)
500 
501 #define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER\
502     DEFINE_USB_TERMINAL_GUID(0x0306)
503 DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_COMMUNICATION_SPEAKER);
504 #define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER)
505 
506 #define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER\
507     DEFINE_USB_TERMINAL_GUID(0x0307)
508 DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER);
509 #define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER)
510 
511 #define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME\
512     0x185FEDF0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
513 DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_VOLUME);
514 #define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME)
515 
516 #define STATIC_KSNODETYPE_PHONE_LINE\
517     DEFINE_USB_TERMINAL_GUID(0x0501)
518 DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONE_LINE);
519 #define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE)
520 
521 #define STATIC_KSAUDFNAME_CD_AUDIO\
522     0x185FEDFBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
523 DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_AUDIO);
524 #define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO)
525 
526 #define STATIC_KSAUDFNAME_PC_SPEAKER\
527     0x185FEDFFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
528 DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER);
529 #define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER)
530 
531 #define STATIC_KSAUDFNAME_LINE_IN\
532     0x185FEDF9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
533 DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN);
534 #define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN)
535 
536 #define STATIC_KSAUDFNAME_VIDEO\
537     0x915daec4L, 0xa434, 0x11d2, 0xac, 0x52, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
538 DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68", KSAUDFNAME_VIDEO);
539 #define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO)
540 
541 #define STATIC_KSAUDFNAME_AUX\
542     0x185FEDFEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
543 DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX);
544 #define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX)
545 
546 #define STATIC_KSAUDFNAME_STEREO_MIX\
547     0xdff077L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
548 DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX);
549 #define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX)
550 
551 #define STATIC_KSAUDFNAME_MONO_MIX\
552     0xdff078L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
553 DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX);
554 #define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX)
555 
556 #define STATIC_KSAUDFNAME_3D_CENTER\
557     0x9f0670b4L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
558 DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_CENTER);
559 #define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER)
560 
561 #define STATIC_KSAUDFNAME_MONO_MIX_VOLUME\
562     0x22b0eafeL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
563 DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_VOLUME);
564 #define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME)
565 
566 #define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME\
567     0x1ad247edL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
568 DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_VOLUME);
569 #define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME)
570 
571 #define STATIC_KSAUDFNAME_VIDEO_VOLUME\
572     0x9b46e708L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
573 DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_VOLUME);
574 #define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME)
575 
576 #define STATIC_KSAUDFNAME_TREBLE\
577     0x185FEDE1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
578 DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_TREBLE);
579 #define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE)
580 
581 #define STATIC_KSAUDFNAME_BASS\
582     0x185FEDE0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
583 DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_BASS);
584 #define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS)
585 
586 #define STATIC_KSAUDFNAME_3D_DEPTH\
587     0x63ff5747L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
588 DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_DEPTH);
589 #define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH)
590 
591 #define STATIC_KSAUDFNAME_MONO_OUT\
592     0xf9b41dc3L, 0x96e2, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
593 DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT);
594 #define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT)
595 
596 #define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE\
597     0x185FEDF1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
598 DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_MUTE);
599 #define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE)
600 
601 #define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE\
602     0x2bc31d6bL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
603 DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_ALTERNATE_MICROPHONE);
604 #define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE)
605 
606 #define STATIC_KSAUDFNAME_VIDEO_MUTE\
607     0x9b46e709L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
608 DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_MUTE);
609 #define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE)
610 
611 
612 /*
613     Pins
614 */
615 
616 #define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \
617     0x47A4FA20L, 0xA251, 0x11D1, {0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
618 DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME);
619 #define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME)
620 
621 
622 /*
623     Formats
624 */
625 
626 //#if defined(_INC_MMREG)
627 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
628 #include <pshpack1.h>
629 #endif
630 typedef struct {
631     KSDATAFORMAT    DataFormat;
632     WAVEFORMATEX    WaveFormatEx;
633 } KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX;
634 
635 #ifndef _WAVEFORMATEXTENSIBLE_
636 #define _WAVEFORMATEXTENSIBLE_
637 typedef struct {
638     WAVEFORMATEX    Format;
639     union
640     {
641         WORD wValidBitsPerSample;
642         WORD wSamplesPerBlock;
643         WORD wReserved;
644     }Samples;
645     DWORD dwChannelMask;
646     GUID SubFormat;
647 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
648 #endif
649 
650 #if !defined(WAVE_FORMAT_EXTENSIBLE)
651 #define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE
652 #endif
653 
654 typedef struct {
655     ULONG               Flags;
656     ULONG               Control;
657     WAVEFORMATEX        WaveFormatEx;
658 } KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC;
659 
660 typedef struct {
661     KSDATAFORMAT        DataFormat;
662     KSDSOUND_BUFFERDESC BufferDesc;
663 } KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND;
664 
665 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
666 #include <poppack.h>
667 #endif
668 
669 //#endif
670 
671 typedef enum {
672     KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT,
673     KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE,
674     KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS,
675     KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE
676 } KSPROPERTY_ALLOCATOR_CONTROL;
677 
678 typedef struct {
679    KSDATARANGE              DataRange;
680    ULONG                    MaximumChannels;
681    ULONG                    MinimumBitsPerSample;
682    ULONG                    MaximumBitsPerSample;
683    ULONG                    MinimumSampleFrequency;
684    ULONG                    MaximumSampleFrequency;
685 } KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO;
686 
687 typedef struct tagKS_AnalogVideoInfo {
688     RECT rcSource;
689     RECT rcTarget;
690     DWORD dwActiveWidth;
691     DWORD dwActiveHeight;
692     REFERENCE_TIME AvgTimePerFrame;
693 } KS_ANALOGVIDEOINFO, *PKS_ANALOGVIDEOINFO;
694 
695 typedef struct tagKS_DATARANGE_ANALOGVIDEO {
696     KSDATARANGE DataRange;
697     KS_ANALOGVIDEOINFO AnalogVideoInfo;
698 } KS_DATARANGE_ANALOGVIDEO, *PKS_DATARANGE_ANALOGVIDEO;
699 
700 typedef enum {
701     KS_TUNER_TUNING_EXACT = 1,
702     KS_TUNER_TUNING_FINE,
703     KS_TUNER_TUNING_COARSE,
704 } KS_TUNER_TUNING_FLAGS;
705 
706 typedef enum {
707     KS_TUNER_STRATEGY_PLL = 0x01,
708     KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0x02,
709     KS_TUNER_STRATEGY_DRIVER_TUNES = 0x04,
710 } KS_TUNER_STRATEGY;
711 
712 typedef struct {
713     KSPROPERTY Property;
714     ULONG ModesSupported;
715     KSPIN_MEDIUM VideoMedium;
716     KSPIN_MEDIUM TVAudioMedium;
717     KSPIN_MEDIUM RadioAudioMedium;
718 } KSPROPERTY_TUNER_CAPS_S, *PKSPROPERTY_TUNER_CAPS_S;
719 
720 typedef struct {
721     KSPROPERTY Property;
722     KSPIN_MEDIUM IFMedium;
723 } KSPROPERTY_TUNER_IF_MEDIUM_S, *PKSPROPERTY_TUNER_IF_MEDIUM_S;
724 
725 typedef struct {
726     KSPROPERTY Property;
727     ULONG Mode;
728 } KSPROPERTY_TUNER_MODE_S, *PKSPROPERTY_TUNER_MODE_S;
729 
730 typedef struct {
731     KSPROPERTY Property;
732     ULONG Frequency;
733     ULONG LastFrequency;
734     ULONG TuningFlags;
735     ULONG VideoSubChannel;
736     ULONG AudioSubChannel;
737     ULONG Channel;
738     ULONG Country;
739 } KSPROPERTY_TUNER_FREQUENCY_S, *PKSPROPERTY_TUNER_FREQUENCY_S;
740 
741 typedef struct {
742     KSPROPERTY Property;
743     ULONG Standard;
744 } KSPROPERTY_TUNER_STANDARD_S, *PKSPROPERTY_TUNER_STANDARD_S;
745 
746 typedef struct {
747     KSPROPERTY Property;
748     ULONG InputIndex;
749 } KSPROPERTY_TUNER_INPUT_S, *PKSPROPERTY_TUNER_INPUT_S;
750 
751 typedef struct {
752     KSPROPERTY Property;
753     ULONG CurrentFrequency;
754     ULONG PLLOffset;
755     ULONG SignalStrength;
756     ULONG Busy;
757 } KSPROPERTY_TUNER_STATUS_S, *PKSPROPERTY_TUNER_STATUS_S;
758 
759 typedef enum {
760     KSEVENT_TUNER_CHANGED,
761     KSEVENT_TUNER_INITIATE_SCAN
762 } KSEVENT_TUNER;
763 
764 typedef enum {
765     KS_AnalogVideo_None        = 0x00000000,
766     KS_AnalogVideo_NTSC_M      = 0x00000001,
767     KS_AnalogVideo_NTSC_M_J    = 0x00000002,
768     KS_AnalogVideo_NTSC_433    = 0x00000004,
769     KS_AnalogVideo_PAL_B       = 0x00000010,
770     KS_AnalogVideo_PAL_D       = 0x00000020,
771     KS_AnalogVideo_PAL_G       = 0x00000040,
772     KS_AnalogVideo_PAL_H       = 0x00000080,
773     KS_AnalogVideo_PAL_I       = 0x00000100,
774     KS_AnalogVideo_PAL_M       = 0x00000200,
775     KS_AnalogVideo_PAL_N       = 0x00000400,
776     KS_AnalogVideo_PAL_60      = 0x00000800,
777     KS_AnalogVideo_SECAM_B     = 0x00001000,
778     KS_AnalogVideo_SECAM_D     = 0x00002000,
779     KS_AnalogVideo_SECAM_G     = 0x00004000,
780     KS_AnalogVideo_SECAM_H     = 0x00008000,
781     KS_AnalogVideo_SECAM_K     = 0x00010000,
782     KS_AnalogVideo_SECAM_K1    = 0x00020000,
783     KS_AnalogVideo_SECAM_L     = 0x00040000,
784     KS_AnalogVideo_SECAM_L1    = 0x00080000,
785     KS_AnalogVideo_PAL_N_COMBO = 0x00100000
786 } KS_AnalogVideoStandard;
787 
788 typedef struct {
789     KSPROPERTY Property;
790     ULONG Mode;
791     ULONG StandardsSupported;
792     ULONG MinFrequency;
793     ULONG MaxFrequency;
794     ULONG TuningGranularity;
795     ULONG NumberOfInputs;
796     ULONG SettlingTime;
797     ULONG Strategy;
798 } KSPROPERTY_TUNER_MODE_CAPS_S, *PKSPROPERTY_TUNER_MODE_CAPS_S;
799 
800 typedef struct tagKS_BITMAPINFOHEADER {
801     DWORD biSize;
802     LONG biWidth;
803     LONG biHeight;
804     WORD biPlanes;
805     WORD biBitCount;
806     DWORD biCompression;
807     DWORD biSizeImage;
808     LONG biXPelsPerMeter;
809     LONG biYPelsPerMeter;
810     DWORD biClrUsed;
811     DWORD biClrImportant;
812 } KS_BITMAPINFOHEADER, *PKS_BITMAPINFOHEADER;
813 
814 typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS {
815     GUID guid;
816     ULONG VideoStandard;
817     SIZE InputSize;
818     SIZE MinCroppingSize;
819     SIZE MaxCroppingSize;
820     int CropGranularityX;
821     int CropGranularityY;
822     int CropAlignX;
823     int CropAlignY;
824     SIZE MinOutputSize;
825     SIZE MaxOutputSize;
826     int OutputGranularityX;
827     int OutputGranularityY;
828     int StretchTapsX;
829     int StretchTapsY;
830     int ShrinkTapsX;
831     int ShrinkTapsY;
832     LONGLONG MinFrameInterval;
833     LONGLONG MaxFrameInterval;
834     LONG MinBitsPerSecond;
835     LONG MaxBitsPerSecond;
836 } KS_VIDEO_STREAM_CONFIG_CAPS, *PKS_VIDEO_STREAM_CONFIG_CAPS;
837 
838 typedef struct tagKS_FRAME_INFO {
839     ULONG ExtendedHeaderSize;
840     DWORD dwFrameFlags;
841     LONGLONG PictureNumber;
842     LONGLONG DropCount;
843     HANDLE hDirectDraw;
844     HANDLE hSurfaceHandle;
845     RECT DirectDrawRect;
846     union {
847         LONG lSurfacePitch;
848         DWORD Reserved1;
849     };
850     DWORD Reserved2;
851     union {
852         struct {
853             DWORD Reserved3;
854             DWORD Reserved4;
855         };
856         ULONGLONG FrameCompletionNumber;
857     };
858 } KS_FRAME_INFO, *PKS_FRAME_INFO;
859 
860 typedef struct tagKS_VIDEOINFOHEADER {
861     RECT rcSource;
862     RECT rcTarget;
863     DWORD dwBitRate;
864     DWORD dwBitErrorRate;
865     REFERENCE_TIME AvgTimePerFrame;
866     KS_BITMAPINFOHEADER bmiHeader;
867 } KS_VIDEOINFOHEADER, *PKS_VIDEOINFOHEADER;
868 
869 typedef struct tagKS_VIDEOINFOHEADER2 {
870     RECT rcSource;
871     RECT rcTarget;
872     DWORD dwBitRate;
873     DWORD dwBitErrorRate;
874     REFERENCE_TIME AvgTimePerFrame;
875     DWORD dwInterlaceFlags;
876     DWORD dwCopyProtectFlags;
877     DWORD dwPictAspectRatioX;
878     DWORD dwPictAspectRatioY;
879     union {
880         DWORD dwControlFlags;
881         DWORD dwReserved1;
882     };
883     DWORD dwReserved2;
884     KS_BITMAPINFOHEADER bmiHeader;
885 } KS_VIDEOINFOHEADER2, *PKS_VIDEOINFOHEADER2;
886 
887 typedef struct tagKS_DATARANGE_VIDEO {
888     KSDATARANGE DataRange;
889     BOOL bFixedSizeSamples;
890     BOOL bTemporalCompression;
891     DWORD StreamDescriptionFlags;
892     DWORD MemoryAllocationFlags;
893     KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
894     KS_VIDEOINFOHEADER VideoInfoHeader;
895 } KS_DATARANGE_VIDEO, *PKS_DATARANGE_VIDEO;
896 
897 typedef struct tagKS_DATARANGE_VIDEO2 {
898     KSDATARANGE DataRange;
899     BOOL bFixedSizeSamples;
900     BOOL bTemporalCompression;
901     DWORD StreamDescriptionFlags;
902     DWORD MemoryAllocationFlags;
903     KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
904     KS_VIDEOINFOHEADER2 VideoInfoHeader;
905 } KS_DATARANGE_VIDEO2, *PKS_DATARANGE_VIDEO2;
906 
907 typedef struct tagKS_VBIINFOHEADER {
908     ULONG StartLine;
909     ULONG EndLine;
910     ULONG SamplingFrequency;
911     ULONG MinLineStartTime;
912     ULONG MaxLineStartTime;
913     ULONG ActualLineStartTime;
914     ULONG ActualLineEndTime;
915     ULONG VideoStandard;
916     ULONG SamplesPerLine;
917     ULONG StrideInBytes;
918     ULONG BufferSize;
919 } KS_VBIINFOHEADER, *PKS_VBIINFOHEADER;
920 
921 typedef struct tagKS_DATARANGE_VIDEO_VBI {
922     KSDATARANGE DataRange;
923     BOOL bFixedSizeSamples;
924     BOOL bTemporalCompression;
925     DWORD StreamDescriptionFlags;
926     DWORD MemoryAllocationFlags;
927     KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
928     KS_VBIINFOHEADER VBIInfoHeader;
929 } KS_DATARANGE_VIDEO_VBI, *PKS_DATARANGE_VIDEO_VBI;
930 
931 typedef struct tagKS_TVTUNER_CHANGE_INFO {
932     DWORD dwFlags;
933     DWORD dwCountryCode;
934     DWORD dwAnalogVideoStandard;
935     DWORD dwChannel;
936 } KS_TVTUNER_CHANGE_INFO, *PKS_TVTUNER_CHANGE_INFO;
937 
938 typedef struct {
939     KSPROPERTY Property;
940     ULONG IndexInputPin;
941     ULONG IndexOutputPin;
942     ULONG CanRoute;
943 } KSPROPERTY_CROSSBAR_ROUTE_S, *PKSPROPERTY_CROSSBAR_ROUTE_S;
944 
945 typedef struct tagKS_VBI_FRAME_INFO {
946     ULONG ExtendedHeaderSize;
947     DWORD dwFrameFlags;
948     LONGLONG PictureNumber;
949     LONGLONG DropCount;
950     DWORD dwSamplingFrequency;
951     KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo;
952     KS_VBIINFOHEADER VBIInfoHeader;
953 } KS_VBI_FRAME_INFO, *PKS_VBI_FRAME_INFO;
954 
955 #define KS_SIZE_PREHEADER (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader))
956 
957 #if !defined( DEFINE_WAVEFORMATEX_GUID )
958 #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
959 #endif
960 
961 #define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX\
962     0x00000000L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
963 DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX);
964 #define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX)
965 
966 
967 #define INIT_WAVEFORMATEX_GUID(Guid, x)            \
968 {                                                  \
969     *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;   \
970     (Guid)->Data1 = (USHORT)(x);                   \
971 }
972 
973 // 'vids'
974 #define STATIC_KSDATAFORMAT_TYPE_VIDEO \
975     0x73646976L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
976 DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO);
977 #define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO)
978 
979 // 'auds'
980 #define STATIC_KSDATAFORMAT_TYPE_AUDIO \
981     0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
982 DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO);
983 #define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO)
984 
985 #define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND\
986     0x518590a2L, 0xa184, 0x11d0, {0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3}
987 DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND);
988 #define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND)
989 
990 #define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG\
991     0x6dba3190L, 0x67bd, 0x11cf, {0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
992 DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG);
993 #define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG)
994 
995 
996 // 'txts'
997 #define STATIC_KSDATAFORMAT_TYPE_TEXT \
998     0x73747874L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
999 DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT);
1000 #define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT)
1001 
1002 #define STATIC_KSDATAFORMAT_TYPE_MUSIC \
1003     0xE725D360L, 0x62CC, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
1004 DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC);
1005 #define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC)
1006 
1007 // 'mids'
1008 #define STATIC_KSDATAFORMAT_TYPE_MIDI \
1009     0x7364696DL, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
1010 DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI);
1011 #define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI)
1012 
1013 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI \
1014     0x1D262760L, 0xE957, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
1015 DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI);
1016 #define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI)
1017 
1018 #define STATIC_KSDATAFORMAT_SUBTYPE_PCM\
1019     0x00000001L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
1020 DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM);
1021 #define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
1022 
1023 #define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\
1024     0x00000003L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
1025 DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT);
1026 #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
1027 
1028 #define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX\
1029     0x05589f81L, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}
1030 DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX);
1031 #define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
1032 
1033 #define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO\
1034     0xe06d802cL, 0xdb46, 0x11cf, {0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea}
1035 DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_AC3_AUDIO);
1036 #define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO)
1037 
1038 #define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO\
1039     0xe06d80e4L, 0xdb46, 0x11cf, {0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea}
1040 DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_AC3_AUDIO);
1041 #define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO)
1042 
1043 #define STATIC_KSPROPSETID_AC3\
1044     0xBFABE720L, 0x6E1F, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
1045 DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000", KSPROPSETID_AC3);
1046 #define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3)
1047 
1048 #define STATIC_KSPROPSETID_Audio\
1049     0x45FFAAA0L, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
1050 DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio);
1051 #define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio)
1052 
1053 typedef enum {
1054     KSPROPERTY_AUDIO_LATENCY = 1,
1055     KSPROPERTY_AUDIO_COPY_PROTECTION,
1056     KSPROPERTY_AUDIO_CHANNEL_CONFIG,
1057     KSPROPERTY_AUDIO_VOLUMELEVEL,
1058     KSPROPERTY_AUDIO_POSITION,
1059     KSPROPERTY_AUDIO_DYNAMIC_RANGE,
1060     KSPROPERTY_AUDIO_QUALITY,
1061     KSPROPERTY_AUDIO_SAMPLING_RATE,
1062     KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
1063     KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
1064     KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
1065     KSPROPERTY_AUDIO_MUX_SOURCE,
1066     KSPROPERTY_AUDIO_MUTE,
1067     KSPROPERTY_AUDIO_BASS,
1068     KSPROPERTY_AUDIO_MID,
1069     KSPROPERTY_AUDIO_TREBLE,
1070     KSPROPERTY_AUDIO_BASS_BOOST,
1071     KSPROPERTY_AUDIO_EQ_LEVEL,
1072     KSPROPERTY_AUDIO_NUM_EQ_BANDS,
1073     KSPROPERTY_AUDIO_EQ_BANDS,
1074     KSPROPERTY_AUDIO_AGC,
1075     KSPROPERTY_AUDIO_DELAY,
1076     KSPROPERTY_AUDIO_LOUDNESS,
1077     KSPROPERTY_AUDIO_WIDE_MODE,
1078     KSPROPERTY_AUDIO_WIDENESS,
1079     KSPROPERTY_AUDIO_REVERB_LEVEL,
1080     KSPROPERTY_AUDIO_CHORUS_LEVEL,
1081     KSPROPERTY_AUDIO_DEV_SPECIFIC,
1082     KSPROPERTY_AUDIO_DEMUX_DEST,
1083     KSPROPERTY_AUDIO_STEREO_ENHANCE,
1084     KSPROPERTY_AUDIO_MANUFACTURE_GUID,
1085     KSPROPERTY_AUDIO_PRODUCT_GUID,
1086     KSPROPERTY_AUDIO_CPU_RESOURCES,
1087     KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
1088     KSPROPERTY_AUDIO_SURROUND_ENCODE,
1089     KSPROPERTY_AUDIO_3D_INTERFACE
1090 
1091 #if (NTDDI_VERSION >= NTDDI_WINXP)
1092     , KSPROPERTY_AUDIO_PEAKMETER
1093     , KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
1094     , KSPROPERTY_AUDIO_FILTER_STATE
1095     , KSPROPERTY_AUDIO_PREFERRED_STATUS
1096 
1097 #endif
1098 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1099     , KSPROPERTY_AUDIO_PEQ_MAX_BANDS
1100     , KSPROPERTY_AUDIO_PEQ_NUM_BANDS
1101     , KSPROPERTY_AUDIO_PEQ_BAND_CENTER_FREQ
1102     , KSPROPERTY_AUDIO_PEQ_BAND_Q_FACTOR
1103     , KSPROPERTY_AUDIO_PEQ_BAND_LEVEL
1104     , KSPROPERTY_AUDIO_CHORUS_MODULATION_RATE
1105     , KSPROPERTY_AUDIO_CHORUS_MODULATION_DEPTH
1106     , KSPROPERTY_AUDIO_REVERB_TIME
1107     , KSPROPERTY_AUDIO_REVERB_DELAY_FEEDBACK
1108     , KSPROPERTY_AUDIO_POSITIONEX
1109     , KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY
1110 #endif
1111 
1112 } KSPROPERTY_AUDIO;
1113 
1114 #define STATIC_KSEVENTSETID_AudioControlChange\
1115     0xE85E9698L, 0xFA2F, 0x11D1, {0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
1116 DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange);
1117 #define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange)
1118 
1119 typedef enum {
1120     KSEVENT_CONTROL_CHANGE,
1121 } KSEVENT_AUDIO_CONTROL_CHANGE;
1122 
1123 
1124 #define STATIC_KSEVENTSETID_LoopedStreaming\
1125     0x4682B940L, 0xC6EF, 0x11D0, {0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D}
1126 DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming);
1127 #define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming)
1128 
1129 typedef enum {
1130     KSEVENT_LOOPEDSTREAMING_POSITION,
1131 } KSEVENT_LOOPEDSTREAMING;
1132 
1133 #define STATIC_KSEVENTSETID_Connection\
1134     0x7f4bcbe0L, 0x9ea5, 0x11cf, {0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00}
1135 DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection);
1136 #define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection)
1137 
1138 
1139 typedef struct {
1140     KSEVENTDATA KsEventData;
1141 #if defined(_NTDDK_)
1142     ULONGLONG   Position;
1143 #else // !_NTDDK_
1144     DWORDLONG   Position;
1145 #endif // !_NTDDK_
1146 } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ;
1147 
1148 #define STATIC_KSPROPSETID_DrmAudioStream\
1149     0x2f2c8ddd, 0x4198, 0x4fac, {0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6}
1150 DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream);
1151 #define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream)
1152 
1153 typedef enum {
1154     KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
1155 } KSPROPERTY_DRMAUDIOSTREAM;
1156 
1157 
1158 /*
1159     SysAudio Properties
1160 */
1161 
1162 #define STATIC_KSPROPSETID_Sysaudio \
1163     0xCBE3FAA0L, 0xCC75, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
1164 DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio);
1165 #define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio)
1166 
1167 typedef enum {
1168     KSPROPERTY_SYSAUDIO_DEVICE_COUNT            = 1,
1169     KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME    = 2,
1170     KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE         = 3,
1171     KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME   = 4,
1172     KSPROPERTY_SYSAUDIO_SELECT_GRAPH            = 5,
1173     KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE   = 6,
1174     KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT          = 7,
1175     KSPROPERTY_SYSAUDIO_INSTANCE_INFO           = 14,
1176     KSPROPERTY_SYSAUDIO_COMPONENT_ID            = 16
1177 } KSPROPERTY_SYSAUDIO;
1178 
1179 typedef struct {
1180     KSPROPERTY Property;
1181     ULONG Flags;
1182     ULONG DeviceNumber;
1183 } SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO;
1184 
1185 #define SYSAUDIO_FLAGS_DONT_COMBINE_PINS        0x00000001
1186 
1187 
1188 #define STATIC_KSPROPSETID_Sysaudio_Pin \
1189     0xA3A53220L, 0xC6E4, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
1190 DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin);
1191 #define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin)
1192 
1193 typedef enum {
1194     KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1,
1195 } KSPROPERTY_SYSAUDIO_PIN;
1196 
1197 
1198 #define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU  0x00000000
1199 #define KSAUDIO_CPU_RESOURCES_HOST_CPU      0x7FFFFFFF
1200 
1201 #if (NTDDI_VERSION >= NTDDI_WINXP)
1202 #define KSAUDIO_SPEAKER_DIRECTOUT       0
1203 #endif
1204 #define KSAUDIO_SPEAKER_MONO            (SPEAKER_FRONT_CENTER)
1205 #define KSAUDIO_SPEAKER_STEREO          (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
1206 #define KSAUDIO_SPEAKER_QUAD            (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1207                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
1208 #define KSAUDIO_SPEAKER_SURROUND        (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1209                                          SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
1210 #define KSAUDIO_SPEAKER_5POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1211                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1212                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
1213 #define KSAUDIO_SPEAKER_7POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1214                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1215                                          SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
1216                                          SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
1217 
1218 #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
1219 
1220 #define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1221                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1222                                          SPEAKER_SIDE_LEFT  | SPEAKER_SIDE_RIGHT)
1223 #define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1224                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1225                                          SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
1226                                          SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
1227 #define KSAUDIO_SPEAKER_5POINT1_BACK     KSAUDIO_SPEAKER_5POINT1
1228 #define KSAUDIO_SPEAKER_7POINT1_WIDE     KSAUDIO_SPEAKER_7POINT1
1229 #endif
1230 
1231 typedef struct
1232 {
1233     KSPROPERTY  Property;
1234     ULONG  NodeId;
1235     ULONG  Reserved;
1236 } KSNODEPROPERTY, *PKSNODEPROPERTY;
1237 
1238 typedef struct
1239 {
1240     KSNODEPROPERTY  NodeProperty;
1241     LONG  Channel;
1242     ULONG  Reserved;
1243 } KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL;
1244 
1245 typedef struct {
1246 #if defined(_NTDDK_)
1247     ULONGLONG        PlayOffset;
1248     ULONGLONG        WriteOffset;
1249 #else
1250     DWORDLONG        PlayOffset;
1251     DWORDLONG        WriteOffset;
1252 #endif
1253 } KSAUDIO_POSITION, *PKSAUDIO_POSITION;
1254 
1255 typedef struct {
1256     ULONG   FifoSize;
1257     ULONG   ChipsetDelay;
1258     ULONG   CodecDelay;
1259 } KSRTAUDIO_HWLATENCY, *PKSRTAUDIO_HWLATENCY;
1260 
1261 typedef struct {
1262     PVOID       Register;
1263     ULONG       Width;
1264     ULONGLONG   Numerator;
1265     ULONGLONG   Denominator;
1266     ULONG       Accuracy;
1267 } KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;
1268 
1269 #define KSNODEPIN_STANDARD_IN       1
1270 #define KSNODEPIN_STANDARD_OUT      0
1271 
1272 #define KSNODEPIN_SUM_MUX_IN        1
1273 #define KSNODEPIN_SUM_MUX_OUT       0
1274 
1275 #define KSNODEPIN_DEMUX_IN          0
1276 #define KSNODEPIN_DEMUX_OUT         1
1277 
1278 #if (NTDDI_VERSION < NTDDI_VISTA)
1279 
1280 #define KSNODEPIN_AEC_RENDER_IN     1
1281 #define KSNODEPIN_AEC_RENDER_OUT    0
1282 #define KSNODEPIN_AEC_CAPTURE_IN    2
1283 #define KSNODEPIN_AEC_CAPTURE_OUT   3
1284 
1285 #endif
1286 
1287 
1288 #define STATIC_KSMUSIC_TECHNOLOGY_PORT\
1289     0x86C92E60L, 0x62E8, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
1290 DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT);
1291 #define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT)
1292 
1293 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS\
1294     0x2CA15FA0L, 0x6CFE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
1295 DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS);
1296 #define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS)
1297 
1298 #define STATIC_KSAUDFNAME_MIDI\
1299     0x185FEDF8L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}
1300 DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI);
1301 #define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI)
1302 
1303 #define STATIC_KSNODETYPE_SYNTHESIZER\
1304     DEFINE_USB_TERMINAL_GUID(0x0713)
1305 DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER);
1306 #define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
1307 
1308 typedef struct
1309 {
1310    KSDATARANGE              DataRange;
1311    GUID                     Technology;
1312    ULONG                    Channels;
1313    ULONG                    Notes;
1314    ULONG                    ChannelMask;
1315 } KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC;
1316 
1317 #if (NTDDI_VERSION >= NTDDI_WINXPSP1)
1318 
1319 #define STATIC_KSPROPSETID_Jack\
1320     0x4509f757, 0x2d46, 0x4637, {0x8e, 0x62, 0xce, 0x7d, 0xb9, 0x44, 0xf5, 0x7b}
1321 DEFINE_GUIDSTRUCT("4509F757-2D46-4637-8E62-CE7DB944F57B", KSPROPSETID_Jack);
1322 #define KSPROPSETID_Jack DEFINE_GUIDNAMED(KSPROPSETID_Jack)
1323 
1324 typedef enum {
1325   KSPROPERTY_JACK_DESCRIPTION = 1,
1326   KSPROPERTY_JACK_DESCRIPTION2,
1327   KSPROPERTY_JACK_SINK_INFO,
1328   KSPROPERTY_JACK_CONTAINERID
1329 } KSPROPERTY_JACK;
1330 
1331 typedef enum {
1332   eConnTypeUnknown,
1333   eConnType3Point5mm,
1334   eConnTypeQuarter,
1335   eConnTypeAtapiInternal,
1336   eConnTypeRCA,
1337   eConnTypeOptical,
1338   eConnTypeOtherDigital,
1339   eConnTypeOtherAnalog,
1340   eConnTypeMultichannelAnalogDIN,
1341   eConnTypeXlrProfessional,
1342   eConnTypeRJ11Modem,
1343   eConnTypeCombination
1344 } EPcxConnectionType;
1345 
1346 #define eGeoLocReserved5 eGeoLocNotApplicable
1347 
1348 typedef enum {
1349   eGeoLocRear = 0x1,
1350   eGeoLocFront,
1351   eGeoLocLeft,
1352   eGeoLocRight,
1353   eGeoLocTop,
1354   eGeoLocBottom,
1355   eGeoLocRearPanel,
1356   eGeoLocRiser,
1357   eGeoLocInsideMobileLid,
1358   eGeoLocDrivebay,
1359   eGeoLocHDMI,
1360   eGeoLocOutsideMobileLid,
1361   eGeoLocATAPI,
1362   eGeoLocNotApplicable,
1363   eGeoLocReserved6,
1364   EPcxGeoLocation_enum_count
1365 } EPcxGeoLocation;
1366 
1367 typedef enum {
1368   eGenLocPrimaryBox = 0,
1369   eGenLocInternal,
1370   eGenLocSeparate,
1371   eGenLocOther,
1372   EPcxGenLocation_enum_count
1373 } EPcxGenLocation;
1374 
1375 typedef enum {
1376   ePortConnJack = 0,
1377   ePortConnIntegratedDevice,
1378   ePortConnBothIntegratedAndJack,
1379   ePortConnUnknown
1380 } EPxcPortConnection;
1381 
1382 typedef struct {
1383   DWORD ChannelMapping;
1384   DWORD Color;
1385   EPcxConnectionType ConnectionType;
1386   EPcxGeoLocation GeoLocation;
1387   EPcxGenLocation GenLocation;
1388   EPxcPortConnection PortConnection;
1389   BOOL IsConnected;
1390 } KSJACK_DESCRIPTION, *PKSJACK_DESCRIPTION;
1391 
1392 typedef enum {
1393   KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
1394   KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT
1395 } KSJACK_SINK_CONNECTIONTYPE;
1396 
1397 #define MAX_SINK_DESCRIPTION_NAME_LENGTH 32
1398 
1399 typedef struct _tagKSJACK_SINK_INFORMATION {
1400   KSJACK_SINK_CONNECTIONTYPE ConnType;
1401   WORD ManufacturerId;
1402   WORD ProductId;
1403   WORD AudioLatency;
1404   BOOL HDCPCapable;
1405   BOOL AICapable;
1406   UCHAR SinkDescriptionLength;
1407   WCHAR SinkDescription[MAX_SINK_DESCRIPTION_NAME_LENGTH];
1408   LUID PortId;
1409 } KSJACK_SINK_INFORMATION, *PKSJACK_SINK_INFORMATION;
1410 
1411 #define JACKDESC2_PRESENCE_DETECT_CAPABILITY       0x1
1412 #define JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY 0x2
1413 
1414 typedef struct _tagKSJACK_DESCRIPTION2 {
1415   DWORD DeviceStateInfo;
1416   DWORD JackCapabilities;
1417 } KSJACK_DESCRIPTION2, *PKSJACK_DESCRIPTION2;
1418 
1419 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */
1420 
1421 #ifndef _SPEAKER_POSITIONS_
1422 #define _SPEAKER_POSITIONS_
1423 
1424 
1425 #define SPEAKER_FRONT_LEFT              0x1
1426 #define SPEAKER_FRONT_RIGHT             0x2
1427 #define SPEAKER_FRONT_CENTER            0x4
1428 #define SPEAKER_LOW_FREQUENCY           0x8
1429 #define SPEAKER_BACK_LEFT               0x10
1430 #define SPEAKER_BACK_RIGHT              0x20
1431 #define SPEAKER_FRONT_LEFT_OF_CENTER    0x40
1432 #define SPEAKER_FRONT_RIGHT_OF_CENTER   0x80
1433 #define SPEAKER_BACK_CENTER             0x100
1434 #define SPEAKER_SIDE_LEFT               0x200
1435 #define SPEAKER_SIDE_RIGHT              0x400
1436 #define SPEAKER_TOP_CENTER              0x800
1437 #define SPEAKER_TOP_FRONT_LEFT          0x1000
1438 #define SPEAKER_TOP_FRONT_CENTER        0x2000
1439 #define SPEAKER_TOP_FRONT_RIGHT         0x4000
1440 #define SPEAKER_TOP_BACK_LEFT           0x8000
1441 #define SPEAKER_TOP_BACK_CENTER         0x10000
1442 #define SPEAKER_TOP_BACK_RIGHT          0x20000
1443 
1444 #define SPEAKER_RESERVED                0x7FFC0000
1445 #define SPEAKER_ALL                     0x80000000
1446 
1447 #endif
1448 
1449 #if (NTDDI_VERSION >= NTDDI_WINXP)
1450 #define KSAUDIO_SPEAKER_DIRECTOUT       0
1451 #endif
1452 
1453 #define KSAUDIO_SPEAKER_MONO            (SPEAKER_FRONT_CENTER)
1454 #define KSAUDIO_SPEAKER_STEREO          (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
1455 #define KSAUDIO_SPEAKER_QUAD            (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1456                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
1457 #define KSAUDIO_SPEAKER_SURROUND        (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1458                                          SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
1459 #define KSAUDIO_SPEAKER_5POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1460                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1461                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
1462 #define KSAUDIO_SPEAKER_7POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
1463                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
1464                                          SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
1465                                          SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
1466 
1467 #endif
1468