1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 
7 #if !defined(_KSMEDIA_)
8 #define _KSMEDIA_
9 
10 #include <ks.h>
11 
12 typedef struct {
13   KSPROPERTY Property;
14   KSMULTIPLE_ITEM MultipleItem;
15 } KSMULTIPLE_DATA_PROP,*PKSMULTIPLE_DATA_PROP;
16 
17 #define STATIC_KSMEDIUMSETID_MidiBus					\
18 	0x05908040,0x3246,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
19 DEFINE_GUIDSTRUCT("05908040-3246-11D0-A5D6-28DB04C10000",KSMEDIUMSETID_MidiBus);
20 #define KSMEDIUMSETID_MidiBus DEFINE_GUIDNAMED(KSMEDIUMSETID_MidiBus)
21 
22 #define STATIC_KSMEDIUMSETID_VPBus					\
23 	0xA18C15EC,0xCE43,0x11D0,0xAB,0xE7,0x00,0xA0,0xC9,0x22,0x31,0x96
24 DEFINE_GUIDSTRUCT("A18C15EC-CE43-11D0-ABE7-00A0C9223196",KSMEDIUMSETID_VPBus);
25 #define KSMEDIUMSETID_VPBus DEFINE_GUIDNAMED(KSMEDIUMSETID_VPBus)
26 
27 #define STATIC_KSINTERFACESETID_Media					\
28 	0x3A13EB40,0x30A7,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
29 DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000",KSINTERFACESETID_Media);
30 #define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media)
31 
32 typedef enum {
33   KSINTERFACE_MEDIA_MUSIC,
34   KSINTERFACE_MEDIA_WAVE_BUFFERED,
35   KSINTERFACE_MEDIA_WAVE_QUEUED
36 } KSINTERFACE_MEDIA;
37 
38 #ifndef INIT_USBAUDIO_MID
39 #define INIT_USBAUDIO_MID(guid,id)					\
40 {									\
41 	(guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);			\
42 	(guid)->Data2 = 0x1679;						\
43 	(guid)->Data3 = 0x463b;						\
44 	(guid)->Data4[0] = 0xa7;					\
45 	(guid)->Data4[1] = 0x2f;					\
46 	(guid)->Data4[2] = 0xa5;					\
47 	(guid)->Data4[3] = 0xbf;					\
48 	(guid)->Data4[4] = 0x64;					\
49 	(guid)->Data4[5] = 0xc8;					\
50 	(guid)->Data4[6] = 0x6e;					\
51 	(guid)->Data4[7] = 0xba;					\
52 }
53 #define EXTRACT_USBAUDIO_MID(guid)					\
54 	(USHORT)((guid)->Data1 - 0x4e1cecd2)
55 #define DEFINE_USBAUDIO_MID_GUID(id)					\
56 	0x4e1cecd2+(USHORT)(id),0x1679,0x463b,0xa7,0x2f,0xa5,0xbf,0x64,0xc8,0x6e,0xba
57 #define IS_COMPATIBLE_USBAUDIO_MID(guid)				\
58 	(((guid)->Data1 >= 0x4e1cecd2) &&				\
59 	 ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&			\
60 	 ((guid)->Data2 == 0x1679) &&					\
61 	 ((guid)->Data3 == 0x463b) &&					\
62 	 ((guid)->Data4[0] == 0xa7) &&					\
63 	 ((guid)->Data4[1] == 0x2f) &&					\
64 	 ((guid)->Data4[2] == 0xa5) &&					\
65 	 ((guid)->Data4[3] == 0xbf) &&					\
66 	 ((guid)->Data4[4] == 0x64) &&					\
67 	 ((guid)->Data4[5] == 0xc8) &&					\
68 	 ((guid)->Data4[6] == 0x6e) &&					\
69 	 ((guid)->Data4[7] == 0xba) )
70 #endif /* INIT_USBAUDIO_MID */
71 
72 #ifndef INIT_USBAUDIO_PID
73 #define INIT_USBAUDIO_PID(guid,id)					\
74 {									\
75 	(guid)->Data1 = 0xabcc5a5e + (USHORT)(id);			\
76 	(guid)->Data2 = 0xc263;						\
77 	(guid)->Data3 = 0x463b;						\
78 	(guid)->Data4[0] = 0xa7;					\
79 	(guid)->Data4[1] = 0x2f;					\
80 	(guid)->Data4[2] = 0xa5;					\
81 	(guid)->Data4[3] = 0xbf;					\
82 	(guid)->Data4[4] = 0x64;					\
83 	(guid)->Data4[5] = 0xc8;					\
84 	(guid)->Data4[6] = 0x6e;					\
85 	(guid)->Data4[7] = 0xba;					\
86 }
87 #define EXTRACT_USBAUDIO_PID(guid)					\
88 	(USHORT)((guid)->Data1 - 0xabcc5a5e)
89 #define DEFINE_USBAUDIO_PID_GUID(id)					\
90 	0xabcc5a5e+(USHORT)(id),0xc263,0x463b,0xa7,0x2f,0xa5,0xbf,0x64,0xc8,0x6e,0xba
91 #define IS_COMPATIBLE_USBAUDIO_PID(guid)				\
92 	(((guid)->Data1 >= 0xabcc5a5e) &&				\
93 	 ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&			\
94 	 ((guid)->Data2 == 0xc263) &&					\
95 	 ((guid)->Data3 == 0x463b) &&					\
96 	 ((guid)->Data4[0] == 0xa7) &&					\
97 	 ((guid)->Data4[1] == 0x2f) &&					\
98 	 ((guid)->Data4[2] == 0xa5) &&					\
99 	 ((guid)->Data4[3] == 0xbf) &&					\
100 	 ((guid)->Data4[4] == 0x64) &&					\
101 	 ((guid)->Data4[5] == 0xc8) &&					\
102 	 ((guid)->Data4[6] == 0x6e) &&					\
103 	 ((guid)->Data4[7] == 0xba) )
104 #endif /* INIT_USBAUDIO_PID */
105 
106 #ifndef INIT_USBAUDIO_PRODUCT_NAME
107 #define INIT_USBAUDIO_PRODUCT_NAME(guid,vid,pid,strIndex)		\
108 {									\
109 	(guid)->Data1 = 0XFC575048 + (USHORT)(vid);			\
110 	(guid)->Data2 = 0x2E08 + (USHORT)(pid);				\
111 	(guid)->Data3 = 0x463B + (USHORT)(strIndex);			\
112 	(guid)->Data4[0] = 0xA7;					\
113 	(guid)->Data4[1] = 0x2F;					\
114 	(guid)->Data4[2] = 0xA5;					\
115 	(guid)->Data4[3] = 0xBF;					\
116 	(guid)->Data4[4] = 0x64;					\
117 	(guid)->Data4[5] = 0xC8;					\
118 	(guid)->Data4[6] = 0x6E;					\
119 	(guid)->Data4[7] = 0xBA;					\
120 }
121 #define DEFINE_USBAUDIO_PRODUCT_NAME(vid,pid,strIndex)			\
122 	0xFC575048+(USHORT)(vid),0x2E08+(USHORT)(pid),0x463B+(USHORT)(strIndex),0xA7,0x2F,0xA5,0xBF,0x64,0xC8,0x6E,0xBA
123 #endif /* INIT_USBAUDIO_PRODUCT_NAME */
124 
125 #define STATIC_KSCOMPONENTID_USBAUDIO					\
126 	0x8F1275F0,0x26E9,0x4264,0xBA,0x4D,0x39,0xFF,0xF0,0x1D,0x94,0xAA
127 DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA",KSCOMPONENTID_USBAUDIO);
128 #define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO)
129 
130 #define INIT_USB_TERMINAL(guid,id)					\
131 {									\
132 	(guid)->Data1 = 0xDFF219E0 + (USHORT)(id);			\
133 	(guid)->Data2 = 0xF70F;						\
134 	(guid)->Data3 = 0x11D0;						\
135 	(guid)->Data4[0] = 0xb9;					\
136 	(guid)->Data4[1] = 0x17;					\
137 	(guid)->Data4[2] = 0x00;					\
138 	(guid)->Data4[3] = 0xa0;					\
139 	(guid)->Data4[4] = 0xc9;					\
140 	(guid)->Data4[5] = 0x22;					\
141 	(guid)->Data4[6] = 0x31;					\
142 	(guid)->Data4[7] = 0x96;					\
143 }
144 #define EXTRACT_USB_TERMINAL(guid)					\
145 	(USHORT)((guid)->Data1 - 0xDFF219E0)
146 #define DEFINE_USB_TERMINAL_GUID(id)					\
147 	0xDFF219E0+(USHORT)(id),0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
148 
149 #define STATIC_KSNODETYPE_MICROPHONE					\
150 	DEFINE_USB_TERMINAL_GUID(0x0201)
151 DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MICROPHONE);
152 #define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE)
153 
154 #define STATIC_KSNODETYPE_DESKTOP_MICROPHONE				\
155 	DEFINE_USB_TERMINAL_GUID(0x0202)
156 DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DESKTOP_MICROPHONE);
157 #define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE)
158 
159 #define STATIC_KSNODETYPE_PERSONAL_MICROPHONE				\
160 	DEFINE_USB_TERMINAL_GUID(0x0203)
161 DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PERSONAL_MICROPHONE);
162 #define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE)
163 
164 #define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE			\
165 	DEFINE_USB_TERMINAL_GUID(0x0204)
166 DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE);
167 #define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE)
168 
169 #define STATIC_KSNODETYPE_MICROPHONE_ARRAY				\
170 	DEFINE_USB_TERMINAL_GUID(0x0205)
171 DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MICROPHONE_ARRAY);
172 #define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY)
173 
174 #define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY			\
175 	DEFINE_USB_TERMINAL_GUID(0x0206)
176 DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PROCESSING_MICROPHONE_ARRAY);
177 #define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY)
178 
179 #define STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR			\
180 	0x830a44f2,0xa32d,0x476b,0xbe,0x97,0x42,0x84,0x56,0x73,0xb3,0x5a
181 DEFINE_GUIDSTRUCT("830a44f2-a32d-476b-be97-42845673b35a",KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR);
182 #define KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR)
183 
184 #define STATIC_KSNODETYPE_SPEAKER					\
185 	DEFINE_USB_TERMINAL_GUID(0x0301)
186 DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPEAKER);
187 #define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER)
188 
189 #define STATIC_KSNODETYPE_HEADPHONES					\
190 	DEFINE_USB_TERMINAL_GUID(0x0302)
191 DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEADPHONES);
192 #define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES)
193 
194 #define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO			\
195 	DEFINE_USB_TERMINAL_GUID(0x0303)
196 DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO);
197 #define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO)
198 
199 #define STATIC_KSNODETYPE_DESKTOP_SPEAKER				\
200 	DEFINE_USB_TERMINAL_GUID(0x0304)
201 DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DESKTOP_SPEAKER);
202 #define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER)
203 
204 #define STATIC_KSNODETYPE_ROOM_SPEAKER					\
205 	DEFINE_USB_TERMINAL_GUID(0x0305)
206 DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ROOM_SPEAKER);
207 #define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER)
208 
209 #define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER				\
210 	DEFINE_USB_TERMINAL_GUID(0x0306)
211 DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_COMMUNICATION_SPEAKER);
212 #define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER)
213 
214 #define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER			\
215 	DEFINE_USB_TERMINAL_GUID(0x0307)
216 DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER);
217 #define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER)
218 
219 #define STATIC_KSNODETYPE_HANDSET					\
220 	DEFINE_USB_TERMINAL_GUID(0x0401)
221 DEFINE_GUIDSTRUCT("DFF21DE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HANDSET);
222 #define KSNODETYPE_HANDSET DEFINE_GUIDNAMED(KSNODETYPE_HANDSET)
223 
224 #define STATIC_KSNODETYPE_HEADSET					\
225 	DEFINE_USB_TERMINAL_GUID(0x0402)
226 DEFINE_GUIDSTRUCT("DFF21DE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_HEADSET);
227 #define KSNODETYPE_HEADSET DEFINE_GUIDNAMED(KSNODETYPE_HEADSET)
228 
229 #define STATIC_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION		\
230 	DEFINE_USB_TERMINAL_GUID(0x0403)
231 DEFINE_GUIDSTRUCT("DFF21DE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION);
232 #define KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION DEFINE_GUIDNAMED(KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION)
233 
234 #define STATIC_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE			\
235 	DEFINE_USB_TERMINAL_GUID(0x0404)
236 DEFINE_GUIDSTRUCT("DFF21DE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE);
237 #define KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE)
238 
239 #define STATIC_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE			\
240 	DEFINE_USB_TERMINAL_GUID(0x0405)
241 DEFINE_GUIDSTRUCT("DFF21DE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE);
242 #define KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE)
243 
244 #define STATIC_KSNODETYPE_PHONE_LINE					\
245 	DEFINE_USB_TERMINAL_GUID(0x0501)
246 DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PHONE_LINE);
247 #define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE)
248 
249 #define STATIC_KSNODETYPE_TELEPHONE					\
250 	DEFINE_USB_TERMINAL_GUID(0x0502)
251 DEFINE_GUIDSTRUCT("DFF21EE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_TELEPHONE);
252 #define KSNODETYPE_TELEPHONE DEFINE_GUIDNAMED(KSNODETYPE_TELEPHONE)
253 
254 #define STATIC_KSNODETYPE_DOWN_LINE_PHONE				\
255 	DEFINE_USB_TERMINAL_GUID(0x0503)
256 DEFINE_GUIDSTRUCT("DFF21EE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DOWN_LINE_PHONE);
257 #define KSNODETYPE_DOWN_LINE_PHONE DEFINE_GUIDNAMED(KSNODETYPE_DOWN_LINE_PHONE)
258 
259 #define STATIC_KSNODETYPE_ANALOG_CONNECTOR				\
260 	DEFINE_USB_TERMINAL_GUID(0x601)
261 DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ANALOG_CONNECTOR);
262 #define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR)
263 
264 #define STATIC_KSNODETYPE_DIGITAL_AUDIO_INTERFACE			\
265 	DEFINE_USB_TERMINAL_GUID(0x0602)
266 DEFINE_GUIDSTRUCT("DFF21FE2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DIGITAL_AUDIO_INTERFACE);
267 #define KSNODETYPE_DIGITAL_AUDIO_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_DIGITAL_AUDIO_INTERFACE)
268 
269 #define STATIC_KSNODETYPE_LINE_CONNECTOR				\
270 	DEFINE_USB_TERMINAL_GUID(0x0603)
271 DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LINE_CONNECTOR);
272 #define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR)
273 
274 #define STATIC_KSNODETYPE_LEGACY_AUDIO_CONNECTOR			\
275 	DEFINE_USB_TERMINAL_GUID(0x0604)
276 DEFINE_GUIDSTRUCT("DFF21FE4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LEGACY_AUDIO_CONNECTOR);
277 #define KSNODETYPE_LEGACY_AUDIO_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LEGACY_AUDIO_CONNECTOR)
278 
279 #define STATIC_KSNODETYPE_SPDIF_INTERFACE				\
280 	DEFINE_USB_TERMINAL_GUID(0x0605)
281 DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SPDIF_INTERFACE);
282 #define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE)
283 
284 #define STATIC_KSNODETYPE_1394_DA_STREAM				\
285 	DEFINE_USB_TERMINAL_GUID(0x0606)
286 DEFINE_GUIDSTRUCT("DFF21FE6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_1394_DA_STREAM);
287 #define KSNODETYPE_1394_DA_STREAM DEFINE_GUIDNAMED(KSNODETYPE_1394_DA_STREAM)
288 
289 #define STATIC_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK			\
290 	DEFINE_USB_TERMINAL_GUID(0x0607)
291 DEFINE_GUIDSTRUCT("DFF21FE7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_1394_DV_STREAM_SOUNDTRACK);
292 #define KSNODETYPE_1394_DV_STREAM_SOUNDTRACK DEFINE_GUIDNAMED(KSNODETYPE_1394_DV_STREAM_SOUNDTRACK)
293 
294 #define STATIC_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE		\
295 	DEFINE_USB_TERMINAL_GUID(0x0701)
296 DEFINE_GUIDSTRUCT("DFF220E1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE);
297 #define KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE DEFINE_GUIDNAMED(KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE)
298 
299 #define STATIC_KSNODETYPE_EQUALIZATION_NOISE				\
300 	DEFINE_USB_TERMINAL_GUID(0x0702)
301 DEFINE_GUIDSTRUCT("DFF220E2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_EQUALIZATION_NOISE);
302 #define KSNODETYPE_EQUALIZATION_NOISE DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZATION_NOISE)
303 
304 #define STATIC_KSNODETYPE_CD_PLAYER					\
305 	DEFINE_USB_TERMINAL_GUID(0x0703)
306 DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_CD_PLAYER);
307 #define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER)
308 
309 #define STATIC_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE			\
310 	DEFINE_USB_TERMINAL_GUID(0x0704)
311 DEFINE_GUIDSTRUCT("DFF220E4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE);
312 #define KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE DEFINE_GUIDNAMED(KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE)
313 
314 #define STATIC_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE		\
315 	DEFINE_USB_TERMINAL_GUID(0x0705)
316 DEFINE_GUIDSTRUCT("DFF220E5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE);
317 #define KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE DEFINE_GUIDNAMED(KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE)
318 
319 #define STATIC_KSNODETYPE_MINIDISK					\
320 	DEFINE_USB_TERMINAL_GUID(0x0706)
321 DEFINE_GUIDSTRUCT("DFF220E6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MINIDISK);
322 #define KSNODETYPE_MINIDISK DEFINE_GUIDNAMED(KSNODETYPE_MINIDISK)
323 
324 #define STATIC_KSNODETYPE_ANALOG_TAPE					\
325 	DEFINE_USB_TERMINAL_GUID(0x0707)
326 DEFINE_GUIDSTRUCT("DFF220E7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_ANALOG_TAPE);
327 #define KSNODETYPE_ANALOG_TAPE DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_TAPE)
328 
329 #define STATIC_KSNODETYPE_PHONOGRAPH					\
330 	DEFINE_USB_TERMINAL_GUID(0x0708)
331 DEFINE_GUIDSTRUCT("DFF220E8-F70F-11D0-B917-00A0C9223196",KSNODETYPE_PHONOGRAPH);
332 #define KSNODETYPE_PHONOGRAPH DEFINE_GUIDNAMED(KSNODETYPE_PHONOGRAPH)
333 
334 #define STATIC_KSNODETYPE_VCR_AUDIO					\
335 	DEFINE_USB_TERMINAL_GUID(0x0708)
336 DEFINE_GUIDSTRUCT("DFF220E9-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VCR_AUDIO);
337 #define KSNODETYPE_VCR_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VCR_AUDIO)
338 
339 #define STATIC_KSNODETYPE_VIDEO_DISC_AUDIO				\
340 	DEFINE_USB_TERMINAL_GUID(0x070A)
341 DEFINE_GUIDSTRUCT("DFF220EA-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_DISC_AUDIO);
342 #define KSNODETYPE_VIDEO_DISC_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_DISC_AUDIO)
343 
344 #define STATIC_KSNODETYPE_DVD_AUDIO					\
345 	DEFINE_USB_TERMINAL_GUID(0x070B)
346 DEFINE_GUIDSTRUCT("DFF220EB-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DVD_AUDIO);
347 #define KSNODETYPE_DVD_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DVD_AUDIO)
348 
349 #define STATIC_KSNODETYPE_TV_TUNER_AUDIO				\
350 	DEFINE_USB_TERMINAL_GUID(0x070C)
351 DEFINE_GUIDSTRUCT("DFF220EC-F70F-11D0-B917-00A0C9223196",KSNODETYPE_TV_TUNER_AUDIO);
352 #define KSNODETYPE_TV_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_TV_TUNER_AUDIO)
353 
354 #define STATIC_KSNODETYPE_SATELLITE_RECEIVER_AUDIO			\
355 	DEFINE_USB_TERMINAL_GUID(0x070D)
356 DEFINE_GUIDSTRUCT("DFF220ED-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SATELLITE_RECEIVER_AUDIO);
357 #define KSNODETYPE_SATELLITE_RECEIVER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_SATELLITE_RECEIVER_AUDIO)
358 
359 #define STATIC_KSNODETYPE_CABLE_TUNER_AUDIO				\
360 	DEFINE_USB_TERMINAL_GUID(0x070E)
361 DEFINE_GUIDSTRUCT("DFF220EE-F70F-11D0-B917-00A0C9223196",KSNODETYPE_CABLE_TUNER_AUDIO);
362 #define KSNODETYPE_CABLE_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_CABLE_TUNER_AUDIO)
363 
364 #define STATIC_KSNODETYPE_DSS_AUDIO					\
365 	DEFINE_USB_TERMINAL_GUID(0x070F)
366 DEFINE_GUIDSTRUCT("DFF220EF-F70F-11D0-B917-00A0C9223196",KSNODETYPE_DSS_AUDIO);
367 #define KSNODETYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DSS_AUDIO)
368 
369 #define STATIC_KSNODETYPE_RADIO_RECEIVER				\
370 	DEFINE_USB_TERMINAL_GUID(0x0710)
371 DEFINE_GUIDSTRUCT("DFF220F0-F70F-11D0-B917-00A0C9223196",KSNODETYPE_RADIO_RECEIVER);
372 #define KSNODETYPE_RADIO_RECEIVER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_RECEIVER)
373 
374 #define STATIC_KSNODETYPE_RADIO_TRANSMITTER				\
375 	DEFINE_USB_TERMINAL_GUID(0x0711)
376 DEFINE_GUIDSTRUCT("DFF220F1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_RADIO_TRANSMITTER);
377 #define KSNODETYPE_RADIO_TRANSMITTER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_TRANSMITTER)
378 
379 #define STATIC_KSNODETYPE_MULTITRACK_RECORDER				\
380 	DEFINE_USB_TERMINAL_GUID(0x0712)
381 DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MULTITRACK_RECORDER);
382 #define KSNODETYPE_MULTITRACK_RECORDER DEFINE_GUIDNAMED(KSNODETYPE_MULTITRACK_RECORDER)
383 
384 #define STATIC_KSNODETYPE_SYNTHESIZER					\
385 	DEFINE_USB_TERMINAL_GUID(0x0713)
386 DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SYNTHESIZER);
387 #define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
388 
389 #define STATIC_KSNODETYPE_SWSYNTH					\
390 	0x423274A0,0x8B81,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
391 DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788",KSNODETYPE_SWSYNTH);
392 #define KSNODETYPE_SWSYNTH DEFINE_GUIDNAMED(KSNODETYPE_SWSYNTH)
393 
394 #define STATIC_KSNODETYPE_SWMIDI					\
395 	0xCB9BEFA0,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
396 DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788",KSNODETYPE_SWMIDI);
397 #define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI)
398 
399 #define STATIC_KSNODETYPE_DRM_DESCRAMBLE				\
400 	0xFFBB6E3F,0xCCFE,0x4D84,0x90,0xD9,0x42,0x14,0x18,0xB0,0x3A,0x8E
401 DEFINE_GUIDSTRUCT("FFBB6E3F-CCFE-4D84-90D9-421418B03A8E",KSNODETYPE_DRM_DESCRAMBLE);
402 #define KSNODETYPE_DRM_DESCRAMBLE DEFINE_GUIDNAMED(KSNODETYPE_DRM_DESCRAMBLE)
403 
404 #define STATIC_KSCATEGORY_AUDIO						\
405 	0x6994AD04,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96
406 DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_AUDIO);
407 #define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO)
408 
409 #define STATIC_KSCATEGORY_VIDEO						\
410 	0x6994AD05,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96
411 DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_VIDEO);
412 #define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO)
413 
414 #define STATIC_KSCATEGORY_TEXT						\
415 	0x6994AD06,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96
416 DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_TEXT);
417 #define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
418 
419 #define STATIC_KSCATEGORY_NETWORK					\
420 	0x67C9CC3C,0x69C4,0x11D2,0x87,0x59,0x00,0xA0,0xC9,0x22,0x31,0x96
421 DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196",KSCATEGORY_NETWORK);
422 #define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK)
423 
424 #define STATIC_KSCATEGORY_TOPOLOGY					\
425 	0xDDA54A40,0x1E4C,0x11D1,0xA0,0x50,0x40,0x57,0x05,0xC1,0x00,0x00
426 DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000",KSCATEGORY_TOPOLOGY);
427 #define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY)
428 
429 #define STATIC_KSCATEGORY_VIRTUAL					\
430 	0x3503EAC4,0x1F26,0x11D1,0x8A,0xB0,0x00,0xA0,0xC9,0x22,0x31,0x96
431 DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196",KSCATEGORY_VIRTUAL);
432 #define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL)
433 
434 #define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL				\
435 	0xBF963D80,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
436 DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1",KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
437 #define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
438 
439 #define STATIC_KSCATEGORY_SYSAUDIO					\
440 	0xA7C7A5B1,0x5AF3,0x11D1,0x9C,0xED,0x00,0xA0,0x24,0xBF,0x04,0x07
441 DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407",KSCATEGORY_SYSAUDIO);
442 #define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO)
443 
444 #define STATIC_KSCATEGORY_WDMAUD					\
445 	0x3E227E76,0x690D,0x11D2,0x81,0x61,0x00,0x00,0xF8,0x77,0x5B,0xF1
446 DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1",KSCATEGORY_WDMAUD);
447 #define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD)
448 
449 #define STATIC_KSCATEGORY_AUDIO_GFX					\
450 	0x9BAF9572,0x340C,0x11D3,0xAB,0xDC,0x00,0xA0,0xC9,0x0A,0xB1,0x6F
451 DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F",KSCATEGORY_AUDIO_GFX);
452 #define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX)
453 
454 #define STATIC_KSCATEGORY_AUDIO_SPLITTER				\
455 	0x9EA331FA,0xB91B,0x45F8,0x92,0x85,0xBD,0x2B,0xC7,0x7A,0xFC,0xDE
456 DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE",KSCATEGORY_AUDIO_SPLITTER);
457 #define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
458 
459 #define STATIC_KSCATEGORY_SYNTHESIZER		STATIC_KSNODETYPE_SYNTHESIZER
460 #define KSCATEGORY_SYNTHESIZER			KSNODETYPE_SYNTHESIZER
461 
462 #define STATIC_KSCATEGORY_DRM_DESCRAMBLE	STATIC_KSNODETYPE_DRM_DESCRAMBLE
463 #define KSCATEGORY_DRM_DESCRAMBLE		KSNODETYPE_DRM_DESCRAMBLE
464 
465 #define STATIC_KSCATEGORY_AUDIO_DEVICE					\
466 	0xFBF6F530,0x07B9,0x11D2,0xA7,0x1E,0x00,0x00,0xF8,0x00,0x47,0x88
467 DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788",KSCATEGORY_AUDIO_DEVICE);
468 #define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE)
469 
470 #define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE			\
471 	0xD6C5066E,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88
472 DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_WAVEOUT_DEVICE);
473 #define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE)
474 
475 #define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE			\
476 	0xD6C50671,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88
477 DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_WAVEIN_DEVICE);
478 #define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE)
479 
480 #define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE			\
481 	0xD6C50674,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88
482 DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
483 #define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
484 
485 #define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME				\
486 	0x47A4FA20,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
487 DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788",KSCATEGORY_WDMAUD_USE_PIN_NAME);
488 #define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME)
489 
490 #define STATIC_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER			\
491 	0x74f3aea8,0x9768,0x11d1,0x8e,0x07,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
492 DEFINE_GUIDSTRUCT("74f3aea8-9768-11d1-8e07-00a0c95ec22e",KSCATEGORY_ESCALANTE_PLATFORM_DRIVER);
493 #define KSCATEGORY_ESCALANTE_PLATFORM_DRIVER DEFINE_GUIDNAMED(KSCATEGORY_ESCALANTE_PLATFORM_DRIVER)
494 
495 #define STATIC_KSDATAFORMAT_TYPE_VIDEO					\
496 	0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
497 DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_VIDEO);
498 #define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO)
499 
500 #define STATIC_KSDATAFORMAT_TYPE_AUDIO					\
501 	0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
502 DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_AUDIO);
503 #define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO)
504 
505 #define STATIC_KSDATAFORMAT_TYPE_TEXT					\
506 	0x73747874,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
507 DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_TEXT);
508 #define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT)
509 
510 #if !defined(DEFINE_WAVEFORMATEX_GUID)
511 #define DEFINE_WAVEFORMATEX_GUID(x)					\
512 	(USHORT)(x),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
513 #endif
514 
515 #define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX			\
516 	0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
517 DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_WAVEFORMATEX);
518 #define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX)
519 
520 #define INIT_WAVEFORMATEX_GUID(Guid,x)					\
521 {									\
522 	*(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;			\
523 	(Guid)->Data1 = (USHORT)(x);					\
524 }
525 
526 #define EXTRACT_WAVEFORMATEX_ID(Guid)					\
527 	(USHORT)((Guid)->Data1)
528 
529 #define IS_VALID_WAVEFORMATEX_GUID(Guid)				\
530 	(!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1,sizeof(GUID) - sizeof(USHORT)))
531 
532 #ifndef INIT_MMREG_MID
533 #define INIT_MMREG_MID(guid,id)						\
534 {									\
535 	(guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);			\
536 	(guid)->Data2 = 0x6d98;						\
537 	(guid)->Data3 = 0x11d1;						\
538 	(guid)->Data4[0] = 0xa2;					\
539 	(guid)->Data4[1] = 0x1a;					\
540 	(guid)->Data4[2] = 0x00;					\
541 	(guid)->Data4[3] = 0xa0;					\
542 	(guid)->Data4[4] = 0xc9;					\
543 	(guid)->Data4[5] = 0x22;					\
544 	(guid)->Data4[6] = 0x31;					\
545 	(guid)->Data4[7] = 0x96;					\
546 }
547 #define EXTRACT_MMREG_MID(guid)						\
548 	(USHORT)((guid)->Data1 - 0xd5a47fa7)
549 #define DEFINE_MMREG_MID_GUID(id)					\
550 	0xd5a47fa7+(USHORT)(id),0x6d98,0x11d1,0xa2,0x1a,0x00,0xa0,0xc9,0x22,0x31,0x96
551 
552 #define IS_COMPATIBLE_MMREG_MID(guid)					\
553 	(((guid)->Data1 >= 0xd5a47fa7) &&				\
554 	 ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&			\
555 	 ((guid)->Data2 == 0x6d98) &&					\
556 	 ((guid)->Data3 == 0x11d1) &&					\
557 	 ((guid)->Data4[0] == 0xa2) &&					\
558 	 ((guid)->Data4[1] == 0x1a) &&					\
559 	 ((guid)->Data4[2] == 0x00) &&					\
560 	 ((guid)->Data4[3] == 0xa0) &&					\
561 	 ((guid)->Data4[4] == 0xc9) &&					\
562 	 ((guid)->Data4[5] == 0x22) &&					\
563 	 ((guid)->Data4[6] == 0x31) &&					\
564 	 ((guid)->Data4[7] == 0x96) )
565 #endif /* INIT_MMREG_MID */
566 
567 #ifndef INIT_MMREG_PID
568 #define INIT_MMREG_PID(guid,id)						\
569 {									\
570 	(guid)->Data1 = 0xe36dc2ac + (USHORT)(id);			\
571 	(guid)->Data2 = 0x6d9a;						\
572 	(guid)->Data3 = 0x11d1;						\
573 	(guid)->Data4[0] = 0xa2;					\
574 	(guid)->Data4[1] = 0x1a;					\
575 	(guid)->Data4[2] = 0x00;					\
576 	(guid)->Data4[3] = 0xa0;					\
577 	(guid)->Data4[4] = 0xc9;					\
578 	(guid)->Data4[5] = 0x22;					\
579 	(guid)->Data4[6] = 0x31;					\
580 	(guid)->Data4[7] = 0x96;					\
581 }
582 #define EXTRACT_MMREG_PID(guid)						\
583 	(USHORT)((guid)->Data1 - 0xe36dc2ac)
584 #define DEFINE_MMREG_PID_GUID(id)					\
585 	0xe36dc2ac+(USHORT)(id),0x6d9a,0x11d1,0xa2,0x1a,0x00,0xa0,0xc9,0x22,0x31,0x96
586 
587 #define IS_COMPATIBLE_MMREG_PID(guid)					\
588 	(((guid)->Data1 >= 0xe36dc2ac) &&				\
589 	 ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&			\
590 	 ((guid)->Data2 == 0x6d9a) &&					\
591 	 ((guid)->Data3 == 0x11d1) &&					\
592 	 ((guid)->Data4[0] == 0xa2) &&					\
593 	 ((guid)->Data4[1] == 0x1a) &&					\
594 	 ((guid)->Data4[2] == 0x00) &&					\
595 	 ((guid)->Data4[3] == 0xa0) &&					\
596 	 ((guid)->Data4[4] == 0xc9) &&					\
597 	 ((guid)->Data4[5] == 0x22) &&					\
598 	 ((guid)->Data4[6] == 0x31) &&					\
599 	 ((guid)->Data4[7] == 0x96) )
600 #endif /* INIT_MMREG_PID */
601 
602 #define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG				\
603 	0x6dba3190,0x67bd,0x11cf,0xa0,0xf7,0x00,0x20,0xaf,0xd1,0x56,0xe4
604 DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4",KSDATAFORMAT_SUBTYPE_ANALOG);
605 #define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG)
606 
607 #define STATIC_KSDATAFORMAT_SUBTYPE_PCM					\
608 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM)
609 DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_PCM);
610 #define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
611 
612 #ifdef _INC_MMREG
613 #define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT				\
614 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_IEEE_FLOAT)
615 DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_IEEE_FLOAT);
616 #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
617 
618 #define STATIC_KSDATAFORMAT_SUBTYPE_DRM					\
619 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DRM)
620 DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_DRM);
621 #define KSDATAFORMAT_SUBTYPE_DRM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DRM)
622 
623 #define STATIC_KSDATAFORMAT_SUBTYPE_ALAW				\
624 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ALAW)
625 DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_ALAW);
626 #define KSDATAFORMAT_SUBTYPE_ALAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ALAW)
627 
628 #define STATIC_KSDATAFORMAT_SUBTYPE_MULAW				\
629 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MULAW)
630 DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_MULAW);
631 #define KSDATAFORMAT_SUBTYPE_MULAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MULAW)
632 
633 #define STATIC_KSDATAFORMAT_SUBTYPE_ADPCM				\
634 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ADPCM)
635 DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_ADPCM);
636 #define KSDATAFORMAT_SUBTYPE_ADPCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ADPCM)
637 
638 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG				\
639 	DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MPEG)
640 DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71",KSDATAFORMAT_SUBTYPE_MPEG);
641 #define KSDATAFORMAT_SUBTYPE_MPEG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG)
642 #endif /* _INC_MMREG */
643 
644 #define STATIC_KSDATAFORMAT_SPECIFIER_VC_ID				\
645 	0xAD98D184,0xAAC3,0x11D0,0xA4,0x1C,0x00,0xA0,0xC9,0x22,0x31,0x96
646 DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196",KSDATAFORMAT_SPECIFIER_VC_ID);
647 #define KSDATAFORMAT_SPECIFIER_VC_ID DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VC_ID)
648 
649 #define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX			\
650 	0x05589f81,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a
651 DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_WAVEFORMATEX);
652 #define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
653 
654 #define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND				\
655 	0x518590a2,0xa184,0x11d0,0x85,0x22,0x00,0xc0,0x4f,0xd9,0xba,0xf3
656 DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3",KSDATAFORMAT_SPECIFIER_DSOUND);
657 #define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND)
658 
659 #if defined(_INC_MMSYSTEM) || defined(_INC_MMREG)
660 #if !defined(PACK_PRAGMAS_NOT_SUPPORTED)
661 #include <pshpack1.h>
662 #endif
663 typedef struct {
664   KSDATAFORMAT DataFormat;
665   WAVEFORMATEX WaveFormatEx;
666 } KSDATAFORMAT_WAVEFORMATEX,*PKSDATAFORMAT_WAVEFORMATEX;
667 
668 #ifndef _WAVEFORMATEXTENSIBLE_
669 #define _WAVEFORMATEXTENSIBLE_
670 typedef struct {
671   WAVEFORMATEX Format;
672   union {
673     WORD wValidBitsPerSample;
674     WORD wSamplesPerBlock;
675     WORD wReserved;
676   } Samples;
677   DWORD dwChannelMask;
678 
679   GUID SubFormat;
680 } WAVEFORMATEXTENSIBLE,*PWAVEFORMATEXTENSIBLE;
681 #endif /* _WAVEFORMATEXTENSIBLE_ */
682 
683 #if !defined(WAVE_FORMAT_EXTENSIBLE)
684 #define WAVE_FORMAT_EXTENSIBLE			0xFFFE
685 #endif
686 
687 typedef struct {
688   ULONG Flags;
689   ULONG Control;
690   WAVEFORMATEX WaveFormatEx;
691 } KSDSOUND_BUFFERDESC,*PKSDSOUND_BUFFERDESC;
692 
693 typedef struct {
694   KSDATAFORMAT DataFormat;
695   KSDSOUND_BUFFERDESC BufferDesc;
696 } KSDATAFORMAT_DSOUND,*PKSDATAFORMAT_DSOUND;
697 
698 #if !defined(PACK_PRAGMAS_NOT_SUPPORTED)
699 #include <poppack.h>
700 #endif
701 #endif /* defined(_INC_MMSYSTEM) || defined(_INC_MMREG) */
702 
703 #define KSDSOUND_BUFFER_PRIMARY			0x00000001
704 #define KSDSOUND_BUFFER_STATIC			0x00000002
705 #define KSDSOUND_BUFFER_LOCHARDWARE		0x00000004
706 #define KSDSOUND_BUFFER_LOCSOFTWARE		0x00000008
707 
708 #define KSDSOUND_BUFFER_CTRL_3D			0x00000001
709 #define KSDSOUND_BUFFER_CTRL_FREQUENCY		0x00000002
710 #define KSDSOUND_BUFFER_CTRL_PAN		0x00000004
711 #define KSDSOUND_BUFFER_CTRL_VOLUME		0x00000008
712 #define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY	0x00000010
713 
714 typedef struct {
715   DWORDLONG PlayOffset;
716   DWORDLONG WriteOffset;
717 } KSAUDIO_POSITION,*PKSAUDIO_POSITION;
718 
719 typedef struct _DS3DVECTOR {
720   __C89_NAMELESS union {
721     FLOAT x;
722     FLOAT dvX;
723   };
724   __C89_NAMELESS union {
725     FLOAT y;
726     FLOAT dvY;
727   };
728   __C89_NAMELESS union {
729     FLOAT z;
730     FLOAT dvZ;
731   };
732 } DS3DVECTOR,*PDS3DVECTOR;
733 
734 #define STATIC_KSPROPSETID_DirectSound3DListener			\
735 	0x437b3414,0xd060,0x11d0,0x85,0x83,0x00,0xc0,0x4f,0xd9,0xba,0xf3
736 DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener);
737 #define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener)
738 
739 typedef enum {
740   KSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
741   KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
742   KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
743   KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
744   KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
745   KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
746   KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
747   KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
748   KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
749 } KSPROPERTY_DIRECTSOUND3DLISTENER;
750 
751 typedef struct {
752   DS3DVECTOR Position;
753   DS3DVECTOR Velocity;
754   DS3DVECTOR OrientFront;
755   DS3DVECTOR OrientTop;
756   FLOAT DistanceFactor;
757   FLOAT RolloffFactor;
758   FLOAT DopplerFactor;
759 } KSDS3D_LISTENER_ALL,*PKSDS3D_LISTENER_ALL;
760 
761 typedef struct {
762   DS3DVECTOR Front;
763   DS3DVECTOR Top;
764 } KSDS3D_LISTENER_ORIENTATION,*PKSDS3D_LISTENER_ORIENTATION;
765 
766 #define STATIC_KSPROPSETID_DirectSound3DBuffer				\
767 	0x437b3411,0xd060,0x11d0,0x85,0x83,0x00,0xc0,0x4f,0xd9,0xba,0xf3
768 DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DBuffer);
769 #define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer)
770 
771 typedef enum {
772   KSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
773   KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
774   KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
775   KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
776   KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
777   KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
778   KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
779   KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
780   KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
781 } KSPROPERTY_DIRECTSOUND3DBUFFER;
782 
783 typedef struct {
784   DS3DVECTOR Position;
785   DS3DVECTOR Velocity;
786   ULONG InsideConeAngle;
787   ULONG OutsideConeAngle;
788   DS3DVECTOR ConeOrientation;
789   LONG ConeOutsideVolume;
790   FLOAT MinDistance;
791   FLOAT MaxDistance;
792   ULONG Mode;
793 } KSDS3D_BUFFER_ALL,*PKSDS3D_BUFFER_ALL;
794 
795 typedef struct {
796   ULONG InsideConeAngle;
797   ULONG OutsideConeAngle;
798 } KSDS3D_BUFFER_CONE_ANGLES,*PKSDS3D_BUFFER_CONE_ANGLES;
799 
800 #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE	(-1)
801 #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN		5
802 #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW		10
803 #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE		20
804 #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX		180
805 
806 #define KSDSOUND_3D_MODE_NORMAL			0x00000000
807 #define KSDSOUND_3D_MODE_HEADRELATIVE		0x00000001
808 #define KSDSOUND_3D_MODE_DISABLE		0x00000002
809 
810 #define KSDSOUND_BUFFER_CTRL_HRTF_3D		0x40000000
811 
812 typedef struct {
813   ULONG Size;
814   ULONG Enabled;
815   WINBOOL SwapChannels;
816   WINBOOL ZeroAzimuth;
817   WINBOOL CrossFadeOutput;
818   ULONG FilterSize;
819 } KSDS3D_HRTF_PARAMS_MSG,*PKSDS3D_HRTF_PARAMS_MSG;
820 
821 typedef enum {
822   FULL_FILTER,
823   LIGHT_FILTER,
824   KSDS3D_FILTER_QUALITY_COUNT
825 } KSDS3D_HRTF_FILTER_QUALITY;
826 
827 typedef struct {
828   ULONG Size;
829   KSDS3D_HRTF_FILTER_QUALITY Quality;
830   FLOAT SampleRate;
831   ULONG MaxFilterSize;
832   ULONG FilterTransientMuteLength;
833   ULONG FilterOverlapBufferLength;
834   ULONG OutputOverlapBufferLength;
835   ULONG Reserved;
836 } KSDS3D_HRTF_INIT_MSG,*PKSDS3D_HRTF_INIT_MSG;
837 
838 typedef enum {
839   FLOAT_COEFF,
840   SHORT_COEFF,
841   KSDS3D_COEFF_COUNT
842 } KSDS3D_HRTF_COEFF_FORMAT;
843 
844 typedef enum {
845   DIRECT_FORM,
846   CASCADE_FORM,
847   KSDS3D_FILTER_METHOD_COUNT
848 } KSDS3D_HRTF_FILTER_METHOD;
849 
850 typedef enum {
851   DS3D_HRTF_VERSION_1
852 } KSDS3D_HRTF_FILTER_VERSION;
853 
854 typedef struct {
855   KSDS3D_HRTF_FILTER_METHOD FilterMethod;
856   KSDS3D_HRTF_COEFF_FORMAT CoeffFormat;
857   KSDS3D_HRTF_FILTER_VERSION Version;
858   ULONG Reserved;
859 } KSDS3D_HRTF_FILTER_FORMAT_MSG,*PKSDS3D_HRTF_FILTER_FORMAT_MSG;
860 
861 #define STATIC_KSPROPSETID_Hrtf3d					\
862 	0xb66decb0,0xa083,0x11d0,0x85,0x1e,0x00,0xc0,0x4f,0xd9,0xba,0xf3
863 DEFINE_GUIDSTRUCT("b66decb0-a083-11d0-851e-00c04fd9baf3",KSPROPSETID_Hrtf3d);
864 #define KSPROPSETID_Hrtf3d DEFINE_GUIDNAMED(KSPROPSETID_Hrtf3d)
865 
866 typedef enum {
867   KSPROPERTY_HRTF3D_PARAMS = 0,
868   KSPROPERTY_HRTF3D_INITIALIZE,
869   KSPROPERTY_HRTF3D_FILTER_FORMAT
870 } KSPROPERTY_HRTF3D;
871 
872 typedef struct {
873   LONG Channel;
874   FLOAT VolSmoothScale;
875   FLOAT TotalDryAttenuation;
876   FLOAT TotalWetAttenuation;
877   LONG SmoothFrequency;
878   LONG Delay;
879 } KSDS3D_ITD_PARAMS,*PKSDS3D_ITD_PARAMS;
880 
881 typedef struct {
882   ULONG Enabled;
883   KSDS3D_ITD_PARAMS LeftParams;
884   KSDS3D_ITD_PARAMS RightParams;
885   ULONG Reserved;
886 } KSDS3D_ITD_PARAMS_MSG,*PKSDS3D_ITD_PARAMS_MSG;
887 
888 #define STATIC_KSPROPSETID_Itd3d					\
889 	0x6429f090,0x9fd9,0x11d0,0xa7,0x5b,0x00,0xa0,0xc9,0x03,0x65,0xe3
890 DEFINE_GUIDSTRUCT("6429f090-9fd9-11d0-a75b-00a0c90365e3",KSPROPSETID_Itd3d);
891 #define KSPROPSETID_Itd3d DEFINE_GUIDNAMED(KSPROPSETID_Itd3d)
892 
893 typedef enum {
894   KSPROPERTY_ITD3D_PARAMS = 0
895 } KSPROPERTY_ITD3D;
896 
897 typedef struct {
898   KSDATARANGE DataRange;
899   ULONG MaximumChannels;
900   ULONG MinimumBitsPerSample;
901   ULONG MaximumBitsPerSample;
902   ULONG MinimumSampleFrequency;
903   ULONG MaximumSampleFrequency;
904 } KSDATARANGE_AUDIO,*PKSDATARANGE_AUDIO;
905 
906 #define STATIC_KSDATAFORMAT_SUBTYPE_RIFF				\
907 	0x4995DAEE,0x9EE6,0x11D0,0xA4,0x0E,0x00,0xA0,0xC9,0x22,0x31,0x96
908 DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196",KSDATAFORMAT_SUBTYPE_RIFF);
909 #define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF)
910 
911 #define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE				\
912 	0xe436eb8b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70
913 DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_RIFFWAVE);
914 #define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE)
915 
916 #define STATIC_KSPROPSETID_Bibliographic				\
917 	0x07BA150E,0xE2B1,0x11D0,0xAC,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
918 DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196",KSPROPSETID_Bibliographic);
919 #define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic)
920 
921 typedef enum {
922   KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ',
923   KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ',
924   KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ',
925   KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ',
926   KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ',
927   KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ',
928   KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ',
929   KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ',
930   KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ',
931   KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ',
932   KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ',
933   KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ',
934   KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ',
935   KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ',
936   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ',
937   KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ',
938   KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ',
939   KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ',
940   KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ',
941   KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ',
942   KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ',
943   KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ',
944   KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ',
945   KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ',
946   KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ',
947   KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ',
948   KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ',
949   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ',
950   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ',
951   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ',
952   KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ',
953   KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ',
954   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ',
955   KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ',
956   KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ',
957   KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 '
958 } KSPROPERTY_BIBLIOGRAPHIC;
959 
960 #define STATIC_KSPROPSETID_TopologyNode					\
961 	0x45FFAAA1,0x6E1B,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00
962 DEFINE_GUIDSTRUCT("45FFAAA1-6E1B-11D0-BCF2-444553540000",KSPROPSETID_TopologyNode);
963 #define KSPROPSETID_TopologyNode DEFINE_GUIDNAMED(KSPROPSETID_TopologyNode)
964 
965 typedef enum {
966   KSPROPERTY_TOPOLOGYNODE_ENABLE = 1,
967   KSPROPERTY_TOPOLOGYNODE_RESET
968 } KSPROPERTY_TOPOLOGYNODE;
969 
970 #define STATIC_KSPROPSETID_RtAudio					\
971 	0xa855a48c,0x2f78,0x4729,0x90,0x51,0x19,0x68,0x74,0x6b,0x9e,0xef
972 DEFINE_GUIDSTRUCT("A855A48C-2F78-4729-9051-1968746B9EEF",KSPROPSETID_RtAudio);
973 #define KSPROPSETID_RtAudio DEFINE_GUIDNAMED(KSPROPSETID_RtAudio)
974 
975 typedef enum {
976   KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION
977 } KSPROPERTY_RTAUDIO;
978 
979 #define STATIC_KSPROPSETID_DrmAudioStream				\
980 	0x2f2c8ddd,0x4198,0x4fac,0xba,0x29,0x61,0xbb,0x5,0xb7,0xde,0x6
981 DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06",KSPROPSETID_DrmAudioStream);
982 #define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream)
983 
984 typedef enum {
985   KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
986 } KSPROPERTY_DRMAUDIOSTREAM;
987 
988 #define STATIC_KSPROPSETID_Audio					\
989 	0x45FFAAA0,0x6E1B,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00
990 DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000",KSPROPSETID_Audio);
991 #define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio)
992 
993 typedef enum {
994   KSPROPERTY_AUDIO_LATENCY = 1,
995   KSPROPERTY_AUDIO_COPY_PROTECTION,
996   KSPROPERTY_AUDIO_CHANNEL_CONFIG,
997   KSPROPERTY_AUDIO_VOLUMELEVEL,
998   KSPROPERTY_AUDIO_POSITION,
999   KSPROPERTY_AUDIO_DYNAMIC_RANGE,
1000   KSPROPERTY_AUDIO_QUALITY,
1001   KSPROPERTY_AUDIO_SAMPLING_RATE,
1002   KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
1003   KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
1004   KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
1005   KSPROPERTY_AUDIO_MUX_SOURCE,
1006   KSPROPERTY_AUDIO_MUTE,
1007   KSPROPERTY_AUDIO_BASS,
1008   KSPROPERTY_AUDIO_MID,
1009   KSPROPERTY_AUDIO_TREBLE,
1010   KSPROPERTY_AUDIO_BASS_BOOST,
1011   KSPROPERTY_AUDIO_EQ_LEVEL,
1012   KSPROPERTY_AUDIO_NUM_EQ_BANDS,
1013   KSPROPERTY_AUDIO_EQ_BANDS,
1014   KSPROPERTY_AUDIO_AGC,
1015   KSPROPERTY_AUDIO_DELAY,
1016   KSPROPERTY_AUDIO_LOUDNESS,
1017   KSPROPERTY_AUDIO_WIDE_MODE,
1018   KSPROPERTY_AUDIO_WIDENESS,
1019   KSPROPERTY_AUDIO_REVERB_LEVEL,
1020   KSPROPERTY_AUDIO_CHORUS_LEVEL,
1021   KSPROPERTY_AUDIO_DEV_SPECIFIC,
1022   KSPROPERTY_AUDIO_DEMUX_DEST,
1023   KSPROPERTY_AUDIO_STEREO_ENHANCE,
1024   KSPROPERTY_AUDIO_MANUFACTURE_GUID,
1025   KSPROPERTY_AUDIO_PRODUCT_GUID,
1026   KSPROPERTY_AUDIO_CPU_RESOURCES,
1027   KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
1028   KSPROPERTY_AUDIO_SURROUND_ENCODE,
1029   KSPROPERTY_AUDIO_3D_INTERFACE,
1030   KSPROPERTY_AUDIO_PEAKMETER,
1031   KSPROPERTY_AUDIO_ALGORITHM_INSTANCE,
1032   KSPROPERTY_AUDIO_FILTER_STATE,
1033   KSPROPERTY_AUDIO_PREFERRED_STATUS
1034 } KSPROPERTY_AUDIO;
1035 
1036 #define KSAUDIO_QUALITY_WORST			0x0
1037 #define KSAUDIO_QUALITY_PC			0x1
1038 #define KSAUDIO_QUALITY_BASIC			0x2
1039 #define KSAUDIO_QUALITY_ADVANCED		0x3
1040 
1041 #define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU	0x00000000
1042 #define KSAUDIO_CPU_RESOURCES_HOST_CPU		0x7FFFFFFF
1043 
1044 typedef struct {
1045   WINBOOL fCopyrighted;
1046   WINBOOL fOriginal;
1047 } KSAUDIO_COPY_PROTECTION,*PKSAUDIO_COPY_PROTECTION;
1048 
1049 typedef struct {
1050   LONG ActiveSpeakerPositions;
1051 } KSAUDIO_CHANNEL_CONFIG,*PKSAUDIO_CHANNEL_CONFIG;
1052 
1053 #ifndef _SPEAKER_POSITIONS_
1054 #define _SPEAKER_POSITIONS_
1055 #define SPEAKER_FRONT_LEFT		0x1
1056 #define SPEAKER_FRONT_RIGHT		0x2
1057 #define SPEAKER_FRONT_CENTER		0x4
1058 #define SPEAKER_LOW_FREQUENCY		0x8
1059 #define SPEAKER_BACK_LEFT		0x10
1060 #define SPEAKER_BACK_RIGHT		0x20
1061 #define SPEAKER_FRONT_LEFT_OF_CENTER	0x40
1062 #define SPEAKER_FRONT_RIGHT_OF_CENTER	0x80
1063 #define SPEAKER_BACK_CENTER		0x100
1064 #define SPEAKER_SIDE_LEFT		0x200
1065 #define SPEAKER_SIDE_RIGHT		0x400
1066 #define SPEAKER_TOP_CENTER		0x800
1067 #define SPEAKER_TOP_FRONT_LEFT		0x1000
1068 #define SPEAKER_TOP_FRONT_CENTER	0x2000
1069 #define SPEAKER_TOP_FRONT_RIGHT		0x4000
1070 #define SPEAKER_TOP_BACK_LEFT		0x8000
1071 #define SPEAKER_TOP_BACK_CENTER		0x10000
1072 #define SPEAKER_TOP_BACK_RIGHT		0x20000
1073 
1074 #define SPEAKER_RESERVED		0x7FFC0000
1075 
1076 #define SPEAKER_ALL			0x80000000
1077 #endif  /* _SPEAKER_POSITIONS_ */
1078 
1079 #define KSAUDIO_SPEAKER_DIRECTOUT	0
1080 #define KSAUDIO_SPEAKER_MONO		(SPEAKER_FRONT_CENTER)
1081 #define KSAUDIO_SPEAKER_STEREO		(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
1082 #define KSAUDIO_SPEAKER_QUAD		(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1083 					 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
1084 #define KSAUDIO_SPEAKER_SURROUND	(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1085 					 SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
1086 #define KSAUDIO_SPEAKER_5POINT1		(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1087 					 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |		\
1088 					 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
1089 #define KSAUDIO_SPEAKER_7POINT1		(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1090 					 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |		\
1091 					 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT |		\
1092 					 SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
1093 #define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1094 					  SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |	\
1095 					  SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
1096 #define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |		\
1097 					  SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |	\
1098 					  SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT |		\
1099 					  SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
1100 
1101 #define KSAUDIO_SPEAKER_5POINT1_BACK	KSAUDIO_SPEAKER_5POINT1
1102 #define KSAUDIO_SPEAKER_7POINT1_WIDE	KSAUDIO_SPEAKER_7POINT1
1103 
1104 #define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT	SPEAKER_FRONT_LEFT
1105 #define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER	SPEAKER_FRONT_CENTER
1106 #define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT	SPEAKER_FRONT_RIGHT
1107 #define KSAUDIO_SPEAKER_GROUND_REAR_LEFT	SPEAKER_BACK_LEFT
1108 #define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT	SPEAKER_BACK_RIGHT
1109 #define KSAUDIO_SPEAKER_TOP_MIDDLE		SPEAKER_TOP_CENTER
1110 #define KSAUDIO_SPEAKER_SUPER_WOOFER		SPEAKER_LOW_FREQUENCY
1111 
1112 typedef struct {
1113   ULONG QuietCompression;
1114   ULONG LoudCompression;
1115 } KSAUDIO_DYNAMIC_RANGE,*PKSAUDIO_DYNAMIC_RANGE;
1116 
1117 typedef struct {
1118   WINBOOL Mute;
1119   LONG Level;
1120 } KSAUDIO_MIXLEVEL,*PKSAUDIO_MIXLEVEL;
1121 
1122 typedef struct {
1123   WINBOOL Mute;
1124   LONG Minimum;
1125   LONG Maximum;
1126   LONG Reset;
1127 } KSAUDIO_MIX_CAPS,*PKSAUDIO_MIX_CAPS;
1128 
1129 typedef struct {
1130   ULONG InputChannels;
1131   ULONG OutputChannels;
1132   KSAUDIO_MIX_CAPS Capabilities[1];
1133 } KSAUDIO_MIXCAP_TABLE,*PKSAUDIO_MIXCAP_TABLE;
1134 
1135 typedef enum {
1136   SE_TECH_NONE,
1137   SE_TECH_ANALOG_DEVICES_PHAT,
1138   SE_TECH_CREATIVE,
1139   SE_TECH_NATIONAL_SEMI,
1140   SE_TECH_YAMAHA_YMERSION,
1141   SE_TECH_BBE,
1142   SE_TECH_CRYSTAL_SEMI,
1143   SE_TECH_QSOUND_QXPANDER,
1144   SE_TECH_SPATIALIZER,
1145   SE_TECH_SRS,
1146   SE_TECH_PLATFORM_TECH,
1147   SE_TECH_AKM,
1148   SE_TECH_AUREAL,
1149   SE_TECH_AZTECH,
1150   SE_TECH_BINAURA,
1151   SE_TECH_ESS_TECH,
1152   SE_TECH_HARMAN_VMAX,
1153   SE_TECH_NVIDEA,
1154   SE_TECH_PHILIPS_INCREDIBLE,
1155   SE_TECH_TEXAS_INST,
1156   SE_TECH_VLSI_TECH
1157 } SE_TECHNIQUE;
1158 
1159 typedef struct {
1160   SE_TECHNIQUE Technique;
1161   ULONG Center;
1162   ULONG Depth;
1163   ULONG Reserved;
1164 } KSAUDIO_STEREO_ENHANCE,*PKSAUDIO_STEREO_ENHANCE;
1165 
1166 typedef enum {
1167   KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0,
1168   KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT,
1169   KSPROPERTY_SYSAUDIO_RECORD_DEFAULT,
1170   KSPROPERTY_SYSAUDIO_MIDI_DEFAULT,
1171   KSPROPERTY_SYSAUDIO_MIXER_DEFAULT
1172 } KSPROPERTY_SYSAUDIO_DEFAULT_TYPE;
1173 
1174 typedef struct {
1175   WINBOOL Enable;
1176   KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType;
1177   ULONG Flags;
1178   ULONG Reserved;
1179 } KSAUDIO_PREFERRED_STATUS,*PKSAUDIO_PREFERRED_STATUS;
1180 
1181 #define STATIC_KSNODETYPE_DAC						\
1182 	0x507AE360,0xC554,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1183 DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DAC);
1184 #define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC)
1185 
1186 #define STATIC_KSNODETYPE_ADC						\
1187 	0x4D837FE0,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1188 DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_ADC);
1189 #define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC)
1190 
1191 #define STATIC_KSNODETYPE_SRC						\
1192 	0x9DB7B9E0,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1193 DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SRC);
1194 #define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC)
1195 
1196 #define STATIC_KSNODETYPE_SUPERMIX					\
1197 	0xE573ADC0,0xC555,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1198 DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SUPERMIX);
1199 #define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX)
1200 
1201 #define STATIC_KSNODETYPE_MUX						\
1202 	0x2CEAF780,0xC556,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1203 DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1",KSNODETYPE_MUX);
1204 #define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX)
1205 
1206 #define STATIC_KSNODETYPE_DEMUX						\
1207 	0xC0EB67D4,0xE807,0x11D0,0x95,0x8A,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1208 DEFINE_GUIDSTRUCT("C0EB67D4-E807-11D0-958A-00C04FB925D3",KSNODETYPE_DEMUX);
1209 #define KSNODETYPE_DEMUX DEFINE_GUIDNAMED(KSNODETYPE_DEMUX)
1210 
1211 #define STATIC_KSNODETYPE_SUM						\
1212 	0xDA441A60,0xC556,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1213 DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1",KSNODETYPE_SUM);
1214 #define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM)
1215 
1216 #define STATIC_KSNODETYPE_MUTE						\
1217 	0x02B223C0,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1218 DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_MUTE);
1219 #define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE)
1220 
1221 #define STATIC_KSNODETYPE_VOLUME					\
1222 	0x3A5ACC00,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1223 DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_VOLUME);
1224 #define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME)
1225 
1226 #define STATIC_KSNODETYPE_TONE						\
1227 	0x7607E580,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1228 DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_TONE);
1229 #define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE)
1230 
1231 #define STATIC_KSNODETYPE_EQUALIZER					\
1232 	0x9D41B4A0,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1233 DEFINE_GUIDSTRUCT("9D41B4A0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_EQUALIZER);
1234 #define KSNODETYPE_EQUALIZER DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZER)
1235 
1236 #define STATIC_KSNODETYPE_AGC						\
1237 	0xE88C9BA0,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1238 DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1",KSNODETYPE_AGC);
1239 #define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC)
1240 
1241 #define STATIC_KSNODETYPE_NOISE_SUPPRESS				\
1242 	0xe07f903f,0x62fd,0x4e60,0x8c,0xdd,0xde,0xa7,0x23,0x66,0x65,0xb5
1243 DEFINE_GUIDSTRUCT("E07F903F-62FD-4e60-8CDD-DEA7236665B5",KSNODETYPE_NOISE_SUPPRESS);
1244 #define KSNODETYPE_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSNODETYPE_NOISE_SUPPRESS)
1245 
1246 #define STATIC_KSNODETYPE_DELAY						\
1247 	0x144981E0,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1248 DEFINE_GUIDSTRUCT("144981E0-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DELAY);
1249 #define KSNODETYPE_DELAY DEFINE_GUIDNAMED(KSNODETYPE_DELAY)
1250 
1251 #define STATIC_KSNODETYPE_LOUDNESS					\
1252 	0x41887440,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1253 DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_LOUDNESS);
1254 #define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS)
1255 
1256 #define STATIC_KSNODETYPE_PROLOGIC_DECODER				\
1257 	0x831C2C80,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1258 DEFINE_GUIDSTRUCT("831C2C80-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_PROLOGIC_DECODER);
1259 #define KSNODETYPE_PROLOGIC_DECODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_DECODER)
1260 
1261 #define STATIC_KSNODETYPE_STEREO_WIDE					\
1262 	0xA9E69800,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1263 DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_STEREO_WIDE);
1264 #define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE)
1265 
1266 #define STATIC_KSNODETYPE_STEREO_ENHANCE				\
1267 	0xAF6878AC,0xE83F,0x11D0,0x95,0x8A,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1268 DEFINE_GUIDSTRUCT("AF6878AC-E83F-11D0-958A-00C04FB925D3",KSNODETYPE_STEREO_ENHANCE);
1269 #define KSNODETYPE_STEREO_ENHANCE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_ENHANCE)
1270 
1271 #define STATIC_KSNODETYPE_REVERB					\
1272 	0xEF0328E0,0xC558,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1273 DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1",KSNODETYPE_REVERB);
1274 #define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB)
1275 
1276 #define STATIC_KSNODETYPE_CHORUS					\
1277 	0x20173F20,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1278 DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_CHORUS);
1279 #define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS)
1280 
1281 #define STATIC_KSNODETYPE_3D_EFFECTS					\
1282 	0x55515860,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1283 DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_3D_EFFECTS);
1284 #define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS)
1285 
1286 #define STATIC_KSNODETYPE_ACOUSTIC_ECHO_CANCEL STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL
1287 #define KSNODETYPE_ACOUSTIC_ECHO_CANCEL KSCATEGORY_ACOUSTIC_ECHO_CANCEL
1288 
1289 #define STATIC_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL		\
1290 	0x1c22c56d,0x9879,0x4f5b,0xa3,0x89,0x27,0x99,0x6d,0xdc,0x28,0x10
1291 DEFINE_GUIDSTRUCT("1C22C56D-9879-4f5b-A389-27996DDC2810",KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL);
1292 #define KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL)
1293 
1294 #define STATIC_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS		\
1295 	0x5ab0882e,0x7274,0x4516,0x87,0x7d,0x4e,0xee,0x99,0xba,0x4f,0xd0
1296 DEFINE_GUIDSTRUCT("5AB0882E-7274-4516-877D-4EEE99BA4FD0",KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS);
1297 #define KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS)
1298 
1299 #define STATIC_KSALGORITHMINSTANCE_SYSTEM_AGC				\
1300 	0x950e55b9,0x877c,0x4c67,0xbe,0x8,0xe4,0x7b,0x56,0x11,0x13,0xa
1301 DEFINE_GUIDSTRUCT("950E55B9-877C-4c67-BE08-E47B5611130A",KSALGORITHMINSTANCE_SYSTEM_AGC);
1302 #define KSALGORITHMINSTANCE_SYSTEM_AGC DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_AGC)
1303 
1304 #define STATIC_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR	\
1305 	0xB6F5A0A0,0x9E61,0x4F8C,0x91,0xE3,0x76,0xCF,0xF,0x3C,0x47,0x1F
1306 DEFINE_GUIDSTRUCT("B6F5A0A0-9E61-4f8c-91E3-76CF0F3C471F",KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR);
1307 #define KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR)
1308 
1309 #define STATIC_KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
1310 #define KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
1311 
1312 #define STATIC_KSNODETYPE_DEV_SPECIFIC					\
1313 	0x941C7AC0,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
1314 DEFINE_GUIDSTRUCT("941C7AC0-C559-11D0-8A2B-00A0C9255AC1",KSNODETYPE_DEV_SPECIFIC);
1315 #define KSNODETYPE_DEV_SPECIFIC DEFINE_GUIDNAMED(KSNODETYPE_DEV_SPECIFIC)
1316 
1317 #define STATIC_KSNODETYPE_PROLOGIC_ENCODER				\
1318 	0x8074C5B2,0x3C66,0x11D2,0xB4,0x5A,0x30,0x78,0x30,0x2C,0x20,0x30
1319 DEFINE_GUIDSTRUCT("8074C5B2-3C66-11D2-B45A-3078302C2030",KSNODETYPE_PROLOGIC_ENCODER);
1320 #define KSNODETYPE_PROLOGIC_ENCODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_ENCODER)
1321 #define KSNODETYPE_SURROUND_ENCODER KSNODETYPE_PROLOGIC_ENCODER
1322 
1323 #define STATIC_KSNODETYPE_PEAKMETER					\
1324 	0xa085651e,0x5f0d,0x4b36,0xa8,0x69,0xd1,0x95,0xd6,0xab,0x4b,0x9e
1325 DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E",KSNODETYPE_PEAKMETER);
1326 #define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER)
1327 
1328 #define STATIC_KSAUDFNAME_BASS						\
1329 	0x185FEDE0,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1330 DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_BASS);
1331 #define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS)
1332 
1333 #define STATIC_KSAUDFNAME_TREBLE					\
1334 	0x185FEDE1,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1335 DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_TREBLE);
1336 #define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE)
1337 
1338 #define STATIC_KSAUDFNAME_3D_STEREO					\
1339 	0x185FEDE2,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1340 DEFINE_GUIDSTRUCT("185FEDE2-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_3D_STEREO);
1341 #define KSAUDFNAME_3D_STEREO DEFINE_GUIDNAMED(KSAUDFNAME_3D_STEREO)
1342 
1343 #define STATIC_KSAUDFNAME_MASTER_VOLUME					\
1344 	0x185FEDE3,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1345 DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MASTER_VOLUME);
1346 #define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME)
1347 
1348 #define STATIC_KSAUDFNAME_MASTER_MUTE					\
1349 	0x185FEDE4,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1350 DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MASTER_MUTE);
1351 #define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE)
1352 
1353 #define STATIC_KSAUDFNAME_WAVE_VOLUME					\
1354 	0x185FEDE5,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1355 DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_VOLUME);
1356 #define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME)
1357 
1358 #define STATIC_KSAUDFNAME_WAVE_MUTE					\
1359 	0x185FEDE6,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1360 DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_MUTE);
1361 #define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE)
1362 
1363 #define STATIC_KSAUDFNAME_MIDI_VOLUME					\
1364 	0x185FEDE7,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1365 DEFINE_GUIDSTRUCT("185FEDE7-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_VOLUME);
1366 #define KSAUDFNAME_MIDI_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_VOLUME)
1367 
1368 #define STATIC_KSAUDFNAME_MIDI_MUTE					\
1369 	0x185FEDE8,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1370 DEFINE_GUIDSTRUCT("185FEDE8-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_MUTE);
1371 #define KSAUDFNAME_MIDI_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_MUTE)
1372 
1373 #define STATIC_KSAUDFNAME_CD_VOLUME					\
1374 	0x185FEDE9,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1375 DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_VOLUME);
1376 #define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME)
1377 
1378 #define STATIC_KSAUDFNAME_CD_MUTE					\
1379 	0x185FEDEA,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1380 DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_MUTE);
1381 #define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE)
1382 
1383 #define STATIC_KSAUDFNAME_LINE_VOLUME					\
1384 	0x185FEDEB,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1385 DEFINE_GUIDSTRUCT("185FEDEB-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_VOLUME);
1386 #define KSAUDFNAME_LINE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_VOLUME)
1387 
1388 #define STATIC_KSAUDFNAME_LINE_MUTE					\
1389 	0x185FEDEC,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1390 DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_MUTE);
1391 #define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE)
1392 
1393 #define STATIC_KSAUDFNAME_MIC_VOLUME					\
1394 	0x185FEDED,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1395 DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_VOLUME);
1396 #define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME)
1397 
1398 #define STATIC_KSAUDFNAME_MIC_MUTE					\
1399 	0x185FEDEE,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1400 DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_MUTE);
1401 #define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE)
1402 
1403 #define STATIC_KSAUDFNAME_RECORDING_SOURCE				\
1404 	0x185FEDEF,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1405 DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_RECORDING_SOURCE);
1406 #define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE)
1407 
1408 #define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME				\
1409 	0x185FEDF0,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1410 DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER_VOLUME);
1411 #define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME)
1412 
1413 #define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE				\
1414 	0x185FEDF1,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1415 DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER_MUTE);
1416 #define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE)
1417 
1418 #define STATIC_KSAUDFNAME_MIDI_IN_VOLUME				\
1419 	0x185FEDF2,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1420 DEFINE_GUIDSTRUCT("185FEDF2-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI_IN_VOLUME);
1421 #define KSAUDFNAME_MIDI_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_IN_VOLUME)
1422 
1423 #define STATIC_KSAUDFNAME_CD_IN_VOLUME					\
1424 	0x185FEDF3,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1425 DEFINE_GUIDSTRUCT("185FEDF3-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_IN_VOLUME);
1426 #define KSAUDFNAME_CD_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_IN_VOLUME)
1427 
1428 #define STATIC_KSAUDFNAME_LINE_IN_VOLUME				\
1429 	0x185FEDF4,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1430 DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_IN_VOLUME);
1431 #define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME)
1432 
1433 #define STATIC_KSAUDFNAME_MIC_IN_VOLUME					\
1434 	0x185FEDF5,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1435 DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIC_IN_VOLUME);
1436 #define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME)
1437 
1438 #define STATIC_KSAUDFNAME_WAVE_IN_VOLUME				\
1439 	0x185FEDF6,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1440 DEFINE_GUIDSTRUCT("185FEDF6-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_IN_VOLUME);
1441 #define KSAUDFNAME_WAVE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_IN_VOLUME)
1442 
1443 #define STATIC_KSAUDFNAME_VOLUME_CONTROL				\
1444 	0x185FEDF7,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1445 DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_VOLUME_CONTROL);
1446 #define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL)
1447 
1448 #define STATIC_KSAUDFNAME_MIDI						\
1449 	0x185FEDF8,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1450 DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_MIDI);
1451 #define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI)
1452 
1453 #define STATIC_KSAUDFNAME_LINE_IN					\
1454 	0x185FEDF9,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1455 DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_LINE_IN);
1456 #define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN)
1457 
1458 #define STATIC_KSAUDFNAME_RECORDING_CONTROL				\
1459 	0x185FEDFA,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1460 DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_RECORDING_CONTROL);
1461 #define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL)
1462 
1463 #define STATIC_KSAUDFNAME_CD_AUDIO					\
1464 	0x185FEDFB,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1465 DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_CD_AUDIO);
1466 #define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO)
1467 
1468 #define STATIC_KSAUDFNAME_AUX_VOLUME					\
1469 	0x185FEDFC,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1470 DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX_VOLUME);
1471 #define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME)
1472 
1473 #define STATIC_KSAUDFNAME_AUX_MUTE					\
1474 	0x185FEDFD,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1475 DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX_MUTE);
1476 #define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE)
1477 
1478 #define STATIC_KSAUDFNAME_AUX						\
1479 	0x185FEDFE,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1480 DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_AUX);
1481 #define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX)
1482 
1483 #define STATIC_KSAUDFNAME_PC_SPEAKER					\
1484 	0x185FEDFF,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1485 DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_PC_SPEAKER);
1486 #define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER)
1487 
1488 #define STATIC_KSAUDFNAME_WAVE_OUT_MIX					\
1489 	0x185FEE00,0x9905,0x11D1,0x95,0xA9,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1490 DEFINE_GUIDSTRUCT("185FEE00-9905-11D1-95A9-00C04FB925D3",KSAUDFNAME_WAVE_OUT_MIX);
1491 #define KSAUDFNAME_WAVE_OUT_MIX DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_OUT_MIX)
1492 
1493 #define STATIC_KSAUDFNAME_MONO_OUT					\
1494 	0xf9b41dc3,0x96e2,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1495 DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT);
1496 #define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT)
1497 
1498 #define STATIC_KSAUDFNAME_STEREO_MIX					\
1499 	0xdff077,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1500 DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX);
1501 #define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX)
1502 
1503 #define STATIC_KSAUDFNAME_MONO_MIX					\
1504 	0xdff078,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1505 DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX);
1506 #define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX)
1507 
1508 #define STATIC_KSAUDFNAME_MONO_OUT_VOLUME				\
1509 	0x1ad247eb,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1510 DEFINE_GUIDSTRUCT("1AD247EB-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT_VOLUME);
1511 #define KSAUDFNAME_MONO_OUT_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_VOLUME)
1512 
1513 #define STATIC_KSAUDFNAME_MONO_OUT_MUTE					\
1514 	0x1ad247ec,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1515 DEFINE_GUIDSTRUCT("1AD247EC-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_OUT_MUTE);
1516 #define KSAUDFNAME_MONO_OUT_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_MUTE)
1517 
1518 #define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME				\
1519 	0x1ad247ed,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1520 DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX_VOLUME);
1521 #define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME)
1522 
1523 #define STATIC_KSAUDFNAME_STEREO_MIX_MUTE				\
1524 	0x22b0eafd,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1525 DEFINE_GUIDSTRUCT("22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_STEREO_MIX_MUTE);
1526 #define KSAUDFNAME_STEREO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_MUTE)
1527 
1528 #define STATIC_KSAUDFNAME_MONO_MIX_VOLUME				\
1529 	0x22b0eafe,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1530 DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX_VOLUME);
1531 #define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME)
1532 
1533 #define STATIC_KSAUDFNAME_MONO_MIX_MUTE					\
1534 	0x2bc31d69,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1535 DEFINE_GUIDSTRUCT("2BC31D69-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MONO_MIX_MUTE);
1536 #define KSAUDFNAME_MONO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_MUTE)
1537 
1538 #define STATIC_KSAUDFNAME_MICROPHONE_BOOST				\
1539 	0x2bc31d6a,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1540 DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_MICROPHONE_BOOST);
1541 #define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST)
1542 
1543 #define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE				\
1544 	0x2bc31d6b,0x96e3,0x11d2,0xac,0x4c,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1545 DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68",KSAUDFNAME_ALTERNATE_MICROPHONE);
1546 #define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE)
1547 
1548 #define STATIC_KSAUDFNAME_3D_DEPTH					\
1549 	0x63ff5747,0x991f,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1550 DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_3D_DEPTH);
1551 #define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH)
1552 
1553 #define STATIC_KSAUDFNAME_3D_CENTER					\
1554 	0x9f0670b4,0x991f,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1555 DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_3D_CENTER);
1556 #define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER)
1557 
1558 #define STATIC_KSAUDFNAME_VIDEO_VOLUME					\
1559 	0x9b46e708,0x992a,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1560 DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_VIDEO_VOLUME);
1561 #define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME)
1562 
1563 #define STATIC_KSAUDFNAME_VIDEO_MUTE					\
1564 	0x9b46e709,0x992a,0x11d2,0xac,0x4d,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1565 DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68",KSAUDFNAME_VIDEO_MUTE);
1566 #define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE)
1567 
1568 #define STATIC_KSAUDFNAME_VIDEO						\
1569 	0x915daec4,0xa434,0x11d2,0xac,0x52,0x0,0xc0,0x4f,0x8e,0xfb,0x68
1570 DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68",KSAUDFNAME_VIDEO);
1571 #define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO)
1572 
1573 #define STATIC_KSAUDFNAME_PEAKMETER					\
1574 	0x57e24340,0xfc5b,0x4612,0xa5,0x62,0x72,0xb1,0x1a,0x29,0xdf,0xae
1575 DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE",KSAUDFNAME_PEAKMETER);
1576 #define KSAUDFNAME_PEAKMETER DEFINE_GUIDNAMED(KSAUDFNAME_PEAKMETER)
1577 
1578 #define KSNODEPIN_STANDARD_IN		1
1579 #define KSNODEPIN_STANDARD_OUT		0
1580 
1581 #define KSNODEPIN_SUM_MUX_IN		1
1582 #define KSNODEPIN_SUM_MUX_OUT		0
1583 
1584 #define KSNODEPIN_DEMUX_IN		0
1585 #define KSNODEPIN_DEMUX_OUT		1
1586 
1587 #define KSNODEPIN_AEC_RENDER_IN		1
1588 #define KSNODEPIN_AEC_RENDER_OUT	0
1589 #define KSNODEPIN_AEC_CAPTURE_IN	2
1590 #define KSNODEPIN_AEC_CAPTURE_OUT	3
1591 
1592 #define STATIC_KSMETHODSETID_Wavetable					\
1593 	0xDCEF31EB,0xD907,0x11D0,0x95,0x83,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1594 DEFINE_GUIDSTRUCT("DCEF31EB-D907-11D0-9583-00C04FB925D3",KSMETHODSETID_Wavetable);
1595 #define KSMETHODSETID_Wavetable DEFINE_GUIDNAMED(KSMETHODSETID_Wavetable)
1596 
1597 typedef enum {
1598   KSMETHOD_WAVETABLE_WAVE_ALLOC,
1599   KSMETHOD_WAVETABLE_WAVE_FREE,
1600   KSMETHOD_WAVETABLE_WAVE_FIND,
1601   KSMETHOD_WAVETABLE_WAVE_WRITE
1602 } KSMETHOD_WAVETABLE;
1603 
1604 typedef struct {
1605   KSIDENTIFIER Identifier;
1606   ULONG Size;
1607   WINBOOL Looped;
1608   ULONG LoopPoint;
1609   WINBOOL InROM;
1610   KSDATAFORMAT Format;
1611 } KSWAVETABLE_WAVE_DESC,*PKSWAVETABLE_WAVE_DESC;
1612 
1613 #define STATIC_KSPROPSETID_Acoustic_Echo_Cancel				\
1614 	0xd7a4af8b,0x3dc1,0x4902,0x91,0xea,0x8a,0x15,0xc9,0x0e,0x05,0xb2
1615 DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2",KSPROPSETID_Acoustic_Echo_Cancel);
1616 #define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel)
1617 
1618 typedef enum {
1619   KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0,
1620   KSPROPERTY_AEC_STATUS,
1621   KSPROPERTY_AEC_MODE
1622 } KSPROPERTY_AEC;
1623 
1624 #define AEC_STATUS_FD_HISTORY_UNINITIALIZED		0x0
1625 #define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED	0x1
1626 #define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED	0x2
1627 #define AEC_STATUS_FD_CURRENTLY_CONVERGED		0x8
1628 
1629 #define AEC_MODE_PASS_THROUGH				0x0
1630 #define AEC_MODE_HALF_DUPLEX				0x1
1631 #define AEC_MODE_FULL_DUPLEX				0x2
1632 
1633 #if (NTDDI_VERSION < NTDDI_WS03)
1634 #define STATIC_KSPROPSETID_Wave_Queued					\
1635 	0x16a15b10,0x16f0,0x11d0,0xa1,0x95,0x00,0x20,0xaf,0xd1,0x56,0xe4
1636 DEFINE_GUIDSTRUCT("16a15b10-16f0-11d0-a195-0020afd156e4", KSPROPSETID_Wave_Queued);
1637 #define KSPROPSETID_Wave_Queued DEFINE_GUIDNAMED(KSPROPSETID_Wave_Queued)
1638 #endif /* NTDDI_VERSION < NTDDI_WS03 */
1639 
1640 #define STATIC_KSPROPSETID_Wave						\
1641 	0x924e54b0,0x630f,0x11cf,0xad,0xa7,0x08,0x00,0x3e,0x30,0x49,0x4a
1642 DEFINE_GUIDSTRUCT("924e54b0-630f-11cf-ada7-08003e30494a",KSPROPSETID_Wave);
1643 #define KSPROPSETID_Wave DEFINE_GUIDNAMED(KSPROPSETID_Wave)
1644 
1645 typedef enum {
1646   KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES,
1647   KSPROPERTY_WAVE_INPUT_CAPABILITIES,
1648   KSPROPERTY_WAVE_OUTPUT_CAPABILITIES,
1649   KSPROPERTY_WAVE_BUFFER,
1650   KSPROPERTY_WAVE_FREQUENCY,
1651   KSPROPERTY_WAVE_VOLUME,
1652   KSPROPERTY_WAVE_PAN
1653 } KSPROPERTY_WAVE;
1654 
1655 typedef struct {
1656   ULONG ulDeviceType;
1657 } KSWAVE_COMPATCAPS,*PKSWAVE_COMPATCAPS;
1658 
1659 #define KSWAVE_COMPATCAPS_INPUT		0x00000000
1660 #define KSWAVE_COMPATCAPS_OUTPUT	0x00000001
1661 
1662 typedef struct {
1663   ULONG MaximumChannelsPerConnection;
1664   ULONG MinimumBitsPerSample;
1665   ULONG MaximumBitsPerSample;
1666   ULONG MinimumSampleFrequency;
1667   ULONG MaximumSampleFrequency;
1668   ULONG TotalConnections;
1669   ULONG ActiveConnections;
1670 } KSWAVE_INPUT_CAPABILITIES,*PKSWAVE_INPUT_CAPABILITIES;
1671 
1672 typedef struct {
1673   ULONG MaximumChannelsPerConnection;
1674   ULONG MinimumBitsPerSample;
1675   ULONG MaximumBitsPerSample;
1676   ULONG MinimumSampleFrequency;
1677   ULONG MaximumSampleFrequency;
1678   ULONG TotalConnections;
1679   ULONG StaticConnections;
1680   ULONG StreamingConnections;
1681   ULONG ActiveConnections;
1682   ULONG ActiveStaticConnections;
1683   ULONG ActiveStreamingConnections;
1684   ULONG Total3DConnections;
1685   ULONG Static3DConnections;
1686   ULONG Streaming3DConnections;
1687   ULONG Active3DConnections;
1688   ULONG ActiveStatic3DConnections;
1689   ULONG ActiveStreaming3DConnections;
1690   ULONG TotalSampleMemory;
1691   ULONG FreeSampleMemory;
1692   ULONG LargestFreeContiguousSampleMemory;
1693 } KSWAVE_OUTPUT_CAPABILITIES,*PKSWAVE_OUTPUT_CAPABILITIES;
1694 
1695 typedef struct {
1696   LONG LeftAttenuation;
1697   LONG RightAttenuation;
1698 } KSWAVE_VOLUME,*PKSWAVE_VOLUME;
1699 
1700 #define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING	0x00000001
1701 #define KSWAVE_BUFFER_ATTRIBUTEF_STATIC		0x00000002
1702 
1703 typedef struct {
1704   ULONG Attributes;
1705   ULONG BufferSize;
1706   PVOID BufferAddress;
1707 } KSWAVE_BUFFER,*PKSWAVE_BUFFER;
1708 
1709 #define STATIC_KSMUSIC_TECHNOLOGY_PORT					\
1710 	0x86C92E60,0x62E8,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1711 DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_PORT);
1712 #define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT)
1713 
1714 #define STATIC_KSMUSIC_TECHNOLOGY_SQSYNTH				\
1715 	0x0ECF4380,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1716 DEFINE_GUIDSTRUCT("0ECF4380-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_SQSYNTH);
1717 #define KSMUSIC_TECHNOLOGY_SQSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SQSYNTH)
1718 
1719 #define STATIC_KSMUSIC_TECHNOLOGY_FMSYNTH				\
1720 	0x252C5C80,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1721 DEFINE_GUIDSTRUCT("252C5C80-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_FMSYNTH);
1722 #define KSMUSIC_TECHNOLOGY_FMSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_FMSYNTH)
1723 
1724 #define STATIC_KSMUSIC_TECHNOLOGY_WAVETABLE				\
1725 	0x394EC7C0,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1726 DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_WAVETABLE);
1727 #define KSMUSIC_TECHNOLOGY_WAVETABLE DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_WAVETABLE)
1728 
1729 #define STATIC_KSMUSIC_TECHNOLOGY_SWSYNTH				\
1730 	0x37407736,0x3620,0x11D1,0x85,0xD3,0x00,0x00,0xF8,0x75,0x43,0x80
1731 DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380",KSMUSIC_TECHNOLOGY_SWSYNTH);
1732 #define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH)
1733 
1734 #define STATIC_KSPROPSETID_WaveTable					\
1735 	0x8539E660,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1736 DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000",KSPROPSETID_WaveTable);
1737 #define KSPROPSETID_WaveTable DEFINE_GUIDNAMED(KSPROPSETID_WaveTable)
1738 
1739 typedef enum {
1740   KSPROPERTY_WAVETABLE_LOAD_SAMPLE,
1741   KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE,
1742   KSPROPERTY_WAVETABLE_MEMORY,
1743   KSPROPERTY_WAVETABLE_VERSION
1744 } KSPROPERTY_WAVETABLE;
1745 
1746 typedef struct {
1747   KSDATARANGE DataRange;
1748   GUID Technology;
1749   ULONG Channels;
1750   ULONG Notes;
1751   ULONG ChannelMask;
1752 } KSDATARANGE_MUSIC,*PKSDATARANGE_MUSIC;
1753 
1754 #define STATIC_KSEVENTSETID_Cyclic					\
1755 	0x142C1AC0,0x072A,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1756 DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000",KSEVENTSETID_Cyclic);
1757 #define KSEVENTSETID_Cyclic DEFINE_GUIDNAMED(KSEVENTSETID_Cyclic)
1758 
1759 typedef enum {
1760   KSEVENT_CYCLIC_TIME_INTERVAL
1761 } KSEVENT_CYCLIC_TIME;
1762 
1763 #define STATIC_KSPROPSETID_Cyclic					\
1764 	0x3FFEAEA0,0x2BEE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1765 DEFINE_GUIDSTRUCT("3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000",KSPROPSETID_Cyclic);
1766 #define KSPROPSETID_Cyclic DEFINE_GUIDNAMED(KSPROPSETID_Cyclic)
1767 
1768 typedef enum {
1769   KSPROPERTY_CYCLIC_POSITION
1770 } KSPROPERTY_CYCLIC;
1771 
1772 #define STATIC_KSEVENTSETID_AudioControlChange				\
1773 	0xE85E9698,0xFA2F,0x11D1,0x95,0xBD,0x00,0xC0,0x4F,0xB9,0x25,0xD3
1774 DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3",KSEVENTSETID_AudioControlChange);
1775 #define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange)
1776 
1777 typedef enum {
1778   KSEVENT_CONTROL_CHANGE
1779 } KSEVENT_AUDIO_CONTROL_CHANGE;
1780 
1781 #define STATIC_KSEVENTSETID_LoopedStreaming				\
1782 	0x4682B940,0xC6EF,0x11D0,0x96,0xD8,0x00,0xAA,0x00,0x51,0xE5,0x1D
1783 DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D",KSEVENTSETID_LoopedStreaming);
1784 #define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming)
1785 
1786 typedef enum {
1787   KSEVENT_LOOPEDSTREAMING_POSITION
1788 } KSEVENT_LOOPEDSTREAMING;
1789 
1790 typedef struct {
1791   KSEVENTDATA KsEventData;
1792   DWORDLONG Position;
1793 } LOOPEDSTREAMING_POSITION_EVENT_DATA,*PLOOPEDSTREAMING_POSITION_EVENT_DATA;
1794 
1795 #define STATIC_KSPROPSETID_Sysaudio					\
1796 	0xCBE3FAA0,0xCC75,0x11D0,0xB4,0x65,0x00,0x00,0x1A,0x18,0x18,0xE6
1797 DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6",KSPROPSETID_Sysaudio);
1798 #define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio)
1799 
1800 typedef enum {
1801   KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1,
1802   KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2,
1803   KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3,
1804   KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4,
1805   KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5,
1806   KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6,
1807   KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7,
1808   KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14,
1809   KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16
1810 } KSPROPERTY_SYSAUDIO;
1811 
1812 typedef struct {
1813   KSPROPERTY Property;
1814   GUID PinCategory;
1815   GUID PinName;
1816 } SYSAUDIO_CREATE_VIRTUAL_SOURCE,*PSYSAUDIO_CREATE_VIRTUAL_SOURCE;
1817 
1818 typedef struct {
1819   KSPROPERTY Property;
1820   ULONG PinId;
1821   ULONG NodeId;
1822   ULONG Flags;
1823   ULONG Reserved;
1824 } SYSAUDIO_SELECT_GRAPH,*PSYSAUDIO_SELECT_GRAPH;
1825 
1826 typedef struct {
1827   KSPROPERTY Property;
1828   ULONG Flags;
1829   ULONG DeviceNumber;
1830 } SYSAUDIO_INSTANCE_INFO,*PSYSAUDIO_INSTANCE_INFO;
1831 
1832 #define SYSAUDIO_FLAGS_DONT_COMBINE_PINS	0x00000001
1833 
1834 #define STATIC_KSPROPSETID_Sysaudio_Pin					\
1835 	0xA3A53220,0xC6E4,0x11D0,0xB4,0x65,0x00,0x00,0x1A,0x18,0x18,0xE6
1836 DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6",KSPROPSETID_Sysaudio_Pin);
1837 #define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin)
1838 
1839 typedef enum {
1840   KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1
1841 } KSPROPERTY_SYSAUDIO_PIN;
1842 
1843 typedef struct {
1844   KSPROPERTY Property;
1845   ULONG MixerPinId;
1846   ULONG Reserved;
1847 } SYSAUDIO_ATTACH_VIRTUAL_SOURCE,*PSYSAUDIO_ATTACH_VIRTUAL_SOURCE;
1848 
1849 typedef struct {
1850   KSPROPERTY Property;
1851   ULONG NodeId;
1852   ULONG Reserved;
1853 } KSNODEPROPERTY,*PKSNODEPROPERTY;
1854 
1855 typedef struct {
1856   KSNODEPROPERTY NodeProperty;
1857   LONG Channel;
1858   ULONG Reserved;
1859 } KSNODEPROPERTY_AUDIO_CHANNEL,*PKSNODEPROPERTY_AUDIO_CHANNEL;
1860 
1861 typedef struct {
1862   KSNODEPROPERTY NodeProperty;
1863   ULONG DevSpecificId;
1864   ULONG DeviceInfo;
1865   ULONG Length;
1866 } KSNODEPROPERTY_AUDIO_DEV_SPECIFIC,*PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
1867 
1868 typedef struct {
1869   KSNODEPROPERTY NodeProperty;
1870   PVOID ListenerId;
1871 #ifndef _WIN64
1872   ULONG Reserved;
1873 #endif
1874 } KSNODEPROPERTY_AUDIO_3D_LISTENER,*PKSNODEPROPERTY_AUDIO_3D_LISTENER;
1875 
1876 typedef struct {
1877   KSNODEPROPERTY NodeProperty;
1878   PVOID AppContext;
1879   ULONG Length;
1880 #ifndef _WIN64
1881   ULONG Reserved;
1882 #endif
1883 } KSNODEPROPERTY_AUDIO_PROPERTY,*PKSNODEPROPERTY_AUDIO_PROPERTY;
1884 
1885 #define STATIC_KSPROPSETID_AudioGfx					\
1886 	0x79a9312e,0x59ae,0x43b0,0xa3,0x50,0x8b,0x5,0x28,0x4c,0xab,0x24
1887 DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24",KSPROPSETID_AudioGfx);
1888 #define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx)
1889 
1890 typedef enum {
1891   KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID,
1892   KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
1893 } KSPROPERTY_AUDIOGFX;
1894 
1895 #define STATIC_KSPROPSETID_Linear					\
1896 	0x5A2FFE80,0x16B9,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1897 DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000",KSPROPSETID_Linear);
1898 #define KSPROPSETID_Linear DEFINE_GUIDNAMED(KSPROPSETID_Linear)
1899 
1900 typedef enum {
1901   KSPROPERTY_LINEAR_POSITION
1902 } KSPROPERTY_LINEAR;
1903 
1904 #define STATIC_KSDATAFORMAT_TYPE_MUSIC					\
1905 	0xE725D360,0x62CC,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1906 DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000",KSDATAFORMAT_TYPE_MUSIC);
1907 #define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC)
1908 
1909 #define STATIC_KSDATAFORMAT_TYPE_MIDI					\
1910 	0x7364696D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
1911 DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71",KSDATAFORMAT_TYPE_MIDI);
1912 #define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI)
1913 
1914 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI				\
1915 	0x1D262760,0xE957,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1916 DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SUBTYPE_MIDI);
1917 #define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI)
1918 
1919 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS				\
1920 	0x2CA15FA0,0x6CFE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
1921 DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SUBTYPE_MIDI_BUS);
1922 #define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS)
1923 
1924 #define STATIC_KSDATAFORMAT_SUBTYPE_RIFFMIDI				\
1925 	0x4995DAF0,0x9EE6,0x11D0,0xA4,0x0E,0x00,0xA0,0xC9,0x22,0x31,0x96
1926 DEFINE_GUIDSTRUCT("4995DAF0-9EE6-11D0-A40E-00A0C9223196",KSDATAFORMAT_SUBTYPE_RIFFMIDI);
1927 #define KSDATAFORMAT_SUBTYPE_RIFFMIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFMIDI)
1928 
1929 typedef struct {
1930   ULONG TimeDeltaMs;
1931 
1932   ULONG ByteCount;
1933 } KSMUSICFORMAT,*PKSMUSICFORMAT;
1934 
1935 #define STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM		\
1936 	0x36523b11,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1937 DEFINE_GUIDSTRUCT("36523B11-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM);
1938 #define KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM)
1939 
1940 #define STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET			\
1941 	0x36523b12,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1942 DEFINE_GUIDSTRUCT("36523B12-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_PES_PACKET);
1943 #define KSDATAFORMAT_TYPE_STANDARD_PES_PACKET DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PES_PACKET)
1944 
1945 #define STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER			\
1946 	0x36523b13,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1947 DEFINE_GUIDSTRUCT("36523B13-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER);
1948 #define KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER)
1949 
1950 #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO		\
1951 	0x36523b21,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1952 DEFINE_GUIDSTRUCT("36523B21-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO);
1953 #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO)
1954 
1955 #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO		\
1956 	0x36523b22,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1957 DEFINE_GUIDSTRUCT("36523B22-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO);
1958 #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO)
1959 
1960 #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO		\
1961 	0x36523b23,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1962 DEFINE_GUIDSTRUCT("36523B23-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO);
1963 #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO)
1964 
1965 #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO		\
1966 	0x36523b24,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1967 DEFINE_GUIDSTRUCT("36523B24-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO);
1968 #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO)
1969 
1970 #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO			\
1971 	0x36523b25,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1972 DEFINE_GUIDSTRUCT("36523B25-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO);
1973 #define KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO)
1974 
1975 #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO		\
1976 	0x36523b31,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1977 DEFINE_GUIDSTRUCT("36523B31-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO);
1978 #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO)
1979 
1980 #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO		\
1981 	0x36523b32,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1982 DEFINE_GUIDSTRUCT("36523B32-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO);
1983 #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO)
1984 
1985 #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO		\
1986 	0x36523b33,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1987 DEFINE_GUIDSTRUCT("36523B33-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO);
1988 #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO)
1989 
1990 #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO		\
1991 	0x36523b34,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1992 DEFINE_GUIDSTRUCT("36523B34-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO);
1993 #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO)
1994 
1995 #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO			\
1996 	0x36523b35,0x8ee5,0x11d1,0x8c,0xa3,0x00,0x60,0xb0,0x57,0x66,0x4a
1997 DEFINE_GUIDSTRUCT("36523B35-8EE5-11d1-8CA3-0060B057664A",KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO);
1998 #define KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO)
1999 
2000 #define STATIC_KSDATAFORMAT_SUBTYPE_DSS_VIDEO				\
2001 	0xa0af4f81,0xe163,0x11d0,0xba,0xd9,0x00,0x60,0x97,0x44,0x11,0x1a
2002 DEFINE_GUIDSTRUCT("a0af4f81-e163-11d0-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_DSS_VIDEO);
2003 #define KSDATAFORMAT_SUBTYPE_DSS_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_VIDEO)
2004 
2005 #define STATIC_KSDATAFORMAT_SUBTYPE_DSS_AUDIO				\
2006 		0xa0af4f82,0xe163,0x11d0,0xba,0xd9,0x00,0x60,0x97,0x44,0x11,0x1a
2007 DEFINE_GUIDSTRUCT("a0af4f82-e163-11d0-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_DSS_AUDIO);
2008 #define KSDATAFORMAT_SUBTYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_AUDIO)
2009 
2010 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Packet				\
2011 	0xe436eb80,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70
2012 DEFINE_GUIDSTRUCT("e436eb80-524f-11ce-9F53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Packet);
2013 #define KSDATAFORMAT_SUBTYPE_MPEG1Packet DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Packet)
2014 
2015 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Payload			\
2016 	0xe436eb81,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70
2017 DEFINE_GUIDSTRUCT("e436eb81-524f-11ce-9F53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Payload);
2018 #define KSDATAFORMAT_SUBTYPE_MPEG1Payload DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Payload)
2019 
2020 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Video				\
2021 	0xe436eb86,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70
2022 DEFINE_GUIDSTRUCT("e436eb86-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_MPEG1Video);
2023 #define KSDATAFORMAT_SUBTYPE_MPEG1Video DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Video)
2024 
2025 #define STATIC_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO			\
2026 	0x05589f82,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a
2027 DEFINE_GUIDSTRUCT("05589f82-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO);
2028 #define KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO)
2029 
2030 #define STATIC_KSDATAFORMAT_TYPE_MPEG2_PES				\
2031 	0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2032 DEFINE_GUIDSTRUCT("e06d8020-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_PES);
2033 #define KSDATAFORMAT_TYPE_MPEG2_PES DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PES)
2034 
2035 #define STATIC_KSDATAFORMAT_TYPE_MPEG2_PROGRAM				\
2036 	0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2037 DEFINE_GUIDSTRUCT("e06d8022-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_PROGRAM);
2038 #define KSDATAFORMAT_TYPE_MPEG2_PROGRAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PROGRAM)
2039 
2040 #define STATIC_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT			\
2041 	0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2042 DEFINE_GUIDSTRUCT("e06d8023-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_TYPE_MPEG2_TRANSPORT);
2043 #define KSDATAFORMAT_TYPE_MPEG2_TRANSPORT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_TRANSPORT)
2044 
2045 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO				\
2046 	0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2047 DEFINE_GUIDSTRUCT("e06d8026-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO);
2048 #define KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO)
2049 
2050 #define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO			\
2051 	0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2052 DEFINE_GUIDSTRUCT("e06d80e3-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO);
2053 #define KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO)
2054 
2055 #define STATIC_KSPROPSETID_Mpeg2Vid					\
2056 	0xC8E11B60,0x0CC9,0x11D0,0xBD,0x69,0x00,0x35,0x05,0xC1,0x03,0xA9
2057 DEFINE_GUIDSTRUCT("C8E11B60-0CC9-11D0-BD69-003505C103A9",KSPROPSETID_Mpeg2Vid);
2058 #define KSPROPSETID_Mpeg2Vid DEFINE_GUIDNAMED(KSPROPSETID_Mpeg2Vid)
2059 
2060 typedef enum {
2061   KSPROPERTY_MPEG2VID_MODES,
2062   KSPROPERTY_MPEG2VID_CUR_MODE,
2063   KSPROPERTY_MPEG2VID_4_3_RECT,
2064   KSPROPERTY_MPEG2VID_16_9_RECT,
2065   KSPROPERTY_MPEG2VID_16_9_PANSCAN
2066 } KSPROPERTY_MPEG2VID;
2067 
2068 #define KSMPEGVIDMODE_PANSCAN	0x0001
2069 #define KSMPEGVIDMODE_LTRBOX	0x0002
2070 #define KSMPEGVIDMODE_SCALE	0x0004
2071 
2072 typedef struct _KSMPEGVID_RECT {
2073   ULONG StartX;
2074   ULONG StartY;
2075   ULONG EndX;
2076   ULONG EndY;
2077 } KSMPEGVID_RECT,*PKSMPEGVID_RECT;
2078 
2079 #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO				\
2080 	0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2081 DEFINE_GUIDSTRUCT("e06d802b-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO);
2082 #define KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO)
2083 
2084 #define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO			\
2085 	0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2086 DEFINE_GUIDSTRUCT("e06d80e5-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO);
2087 #define KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO)
2088 
2089 #define STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO				\
2090 	0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2091 DEFINE_GUIDSTRUCT("e06d8032-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_LPCM_AUDIO);
2092 #define KSDATAFORMAT_SUBTYPE_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_LPCM_AUDIO)
2093 
2094 #define STATIC_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO			\
2095 	0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2096 DEFINE_GUIDSTRUCT("e06d80e6-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_LPCM_AUDIO);
2097 #define KSDATAFORMAT_SPECIFIER_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_LPCM_AUDIO)
2098 
2099 #define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO				\
2100 	0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2101 DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_AC3_AUDIO);
2102 #define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO)
2103 
2104 #define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO				\
2105 	0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2106 DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SPECIFIER_AC3_AUDIO);
2107 #define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO)
2108 
2109 #define STATIC_KSPROPSETID_AC3						\
2110 	0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00
2111 DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000",KSPROPSETID_AC3);
2112 #define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3)
2113 
2114 typedef enum {
2115   KSPROPERTY_AC3_ERROR_CONCEALMENT = 1,
2116   KSPROPERTY_AC3_ALTERNATE_AUDIO,
2117   KSPROPERTY_AC3_DOWNMIX,
2118   KSPROPERTY_AC3_BIT_STREAM_MODE,
2119   KSPROPERTY_AC3_DIALOGUE_LEVEL,
2120   KSPROPERTY_AC3_LANGUAGE_CODE,
2121   KSPROPERTY_AC3_ROOM_TYPE
2122 } KSPROPERTY_AC3;
2123 
2124 typedef struct {
2125   WINBOOL fRepeatPreviousBlock;
2126   WINBOOL fErrorInCurrentBlock;
2127 } KSAC3_ERROR_CONCEALMENT,*PKSAC3_ERROR_CONCEALMENT;
2128 
2129 typedef struct {
2130   WINBOOL fStereo;
2131   ULONG DualMode;
2132 } KSAC3_ALTERNATE_AUDIO,*PKSAC3_ALTERNATE_AUDIO;
2133 
2134 #define KSAC3_ALTERNATE_AUDIO_1		1
2135 #define KSAC3_ALTERNATE_AUDIO_2		2
2136 #define KSAC3_ALTERNATE_AUDIO_BOTH	3
2137 
2138 typedef struct {
2139   WINBOOL fDownMix;
2140   WINBOOL fDolbySurround;
2141 } KSAC3_DOWNMIX,*PKSAC3_DOWNMIX;
2142 
2143 typedef struct {
2144   LONG BitStreamMode;
2145 } KSAC3_BIT_STREAM_MODE,*PKSAC3_BIT_STREAM_MODE;
2146 
2147 #define KSAC3_SERVICE_MAIN_AUDIO	0
2148 #define KSAC3_SERVICE_NO_DIALOG		1
2149 #define KSAC3_SERVICE_VISUALLY_IMPAIRED	2
2150 #define KSAC3_SERVICE_HEARING_IMPAIRED	3
2151 #define KSAC3_SERVICE_DIALOG_ONLY	4
2152 #define KSAC3_SERVICE_COMMENTARY	5
2153 #define KSAC3_SERVICE_EMERGENCY_FLASH	6
2154 #define KSAC3_SERVICE_VOICE_OVER	7
2155 
2156 typedef struct {
2157   ULONG DialogueLevel;
2158 } KSAC3_DIALOGUE_LEVEL,*PKSAC3_DIALOGUE_LEVEL;
2159 
2160 typedef struct {
2161   WINBOOL fLargeRoom;
2162 } KSAC3_ROOM_TYPE,*PKSAC3_ROOM_TYPE;
2163 
2164 #define STATIC_KSDATAFORMAT_SUBTYPE_DTS_AUDIO				\
2165 	0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2166 DEFINE_GUIDSTRUCT("e06d8033-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_DTS_AUDIO);
2167 #define KSDATAFORMAT_SUBTYPE_DTS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DTS_AUDIO)
2168 
2169 #define STATIC_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO				\
2170 	0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2171 DEFINE_GUIDSTRUCT("e06d8034-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_SDDS_AUDIO);
2172 #define KSDATAFORMAT_SUBTYPE_SDDS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SDDS_AUDIO)
2173 
2174 #define STATIC_KSPROPSETID_AudioDecoderOut				\
2175 	0x6ca6e020,0x43bd,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9
2176 DEFINE_GUIDSTRUCT("6ca6e020-43bd-11d0-bd6a-003505c103a9",KSPROPSETID_AudioDecoderOut);
2177 #define KSPROPSETID_AudioDecoderOut DEFINE_GUIDNAMED(KSPROPSETID_AudioDecoderOut)
2178 
2179 typedef enum {
2180   KSPROPERTY_AUDDECOUT_MODES,
2181   KSPROPERTY_AUDDECOUT_CUR_MODE
2182 } KSPROPERTY_AUDDECOUT;
2183 
2184 #define KSAUDDECOUTMODE_STEREO_ANALOG	0x0001
2185 #define KSAUDDECOUTMODE_PCM_51		0x0002
2186 #define KSAUDDECOUTMODE_SPDIFF		0x0004
2187 
2188 #define STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE				\
2189 	0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea
2190 DEFINE_GUIDSTRUCT("e06d802d-db46-11cf-b4d1-00805f6cbbea",KSDATAFORMAT_SUBTYPE_SUBPICTURE);
2191 #define KSDATAFORMAT_SUBTYPE_SUBPICTURE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SUBPICTURE)
2192 
2193 #define STATIC_KSPROPSETID_DvdSubPic					\
2194 	0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9
2195 DEFINE_GUIDSTRUCT("ac390460-43af-11d0-bd6a-003505c103a9",KSPROPSETID_DvdSubPic);
2196 #define KSPROPSETID_DvdSubPic DEFINE_GUIDNAMED(KSPROPSETID_DvdSubPic)
2197 
2198 typedef enum {
2199   KSPROPERTY_DVDSUBPIC_PALETTE,
2200   KSPROPERTY_DVDSUBPIC_HLI,
2201   KSPROPERTY_DVDSUBPIC_COMPOSIT_ON
2202 } KSPROPERTY_DVDSUBPIC;
2203 
2204 typedef struct _KS_DVD_YCrCb {
2205   UCHAR Reserved;
2206   UCHAR Y;
2207   UCHAR Cr;
2208   UCHAR Cb;
2209 } KS_DVD_YCrCb,*PKS_DVD_YCrCb;
2210 
2211 typedef struct _KS_DVD_YUV {
2212   UCHAR Reserved;
2213   UCHAR Y;
2214   UCHAR V;
2215   UCHAR U;
2216 } KS_DVD_YUV,*PKS_DVD_YUV;
2217 
2218 typedef struct _KSPROPERTY_SPPAL {
2219   KS_DVD_YUV sppal[16];
2220 } KSPROPERTY_SPPAL,*PKSPROPERTY_SPPAL;
2221 
2222 typedef struct _KS_COLCON {
2223   UCHAR emph1col:4;
2224   UCHAR emph2col:4;
2225   UCHAR backcol:4;
2226   UCHAR patcol:4;
2227   UCHAR emph1con:4;
2228   UCHAR emph2con:4;
2229   UCHAR backcon:4;
2230   UCHAR patcon:4;
2231 } KS_COLCON,*PKS_COLCON;
2232 
2233 typedef struct _KSPROPERTY_SPHLI {
2234   USHORT HLISS;
2235   USHORT Reserved;
2236   ULONG StartPTM;
2237   ULONG EndPTM;
2238   USHORT StartX;
2239   USHORT StartY;
2240   USHORT StopX;
2241   USHORT StopY;
2242   KS_COLCON ColCon;
2243 } KSPROPERTY_SPHLI,*PKSPROPERTY_SPHLI;
2244 
2245 typedef WINBOOL KSPROPERTY_COMPOSIT_ON,*PKSPROPERTY_COMPOSIT_ON;
2246 
2247 #define STATIC_KSPROPSETID_CopyProt					\
2248 	0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3
2249 DEFINE_GUIDSTRUCT("0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3",KSPROPSETID_CopyProt);
2250 #define KSPROPSETID_CopyProt DEFINE_GUIDNAMED(KSPROPSETID_CopyProt)
2251 
2252 typedef enum {
2253   KSPROPERTY_DVDCOPY_CHLG_KEY = 0x01,
2254   KSPROPERTY_DVDCOPY_DVD_KEY1,
2255   KSPROPERTY_DVDCOPY_DEC_KEY2,
2256   KSPROPERTY_DVDCOPY_TITLE_KEY,
2257   KSPROPERTY_COPY_MACROVISION,
2258   KSPROPERTY_DVDCOPY_REGION,
2259   KSPROPERTY_DVDCOPY_SET_COPY_STATE,
2260   KSPROPERTY_DVDCOPY_DISC_KEY = 0x80
2261 } KSPROPERTY_COPYPROT;
2262 
2263 typedef struct _KS_DVDCOPY_CHLGKEY {
2264   BYTE ChlgKey[10];
2265   BYTE Reserved[2];
2266 } KS_DVDCOPY_CHLGKEY,*PKS_DVDCOPY_CHLGKEY;
2267 
2268 typedef struct _KS_DVDCOPY_BUSKEY {
2269   BYTE BusKey[5];
2270   BYTE Reserved[1];
2271 } KS_DVDCOPY_BUSKEY,*PKS_DVDCOPY_BUSKEY;
2272 
2273 typedef struct _KS_DVDCOPY_DISCKEY {
2274   BYTE DiscKey[2048];
2275 } KS_DVDCOPY_DISCKEY,*PKS_DVDCOPY_DISCKEY;
2276 
2277 typedef struct _KS_DVDCOPY_REGION {
2278   UCHAR Reserved;
2279   UCHAR RegionData;
2280   UCHAR Reserved2[2];
2281 } KS_DVDCOPY_REGION,*PKS_DVDCOPY_REGION;
2282 
2283 typedef struct _KS_DVDCOPY_TITLEKEY {
2284   ULONG KeyFlags;
2285   ULONG ReservedNT[2];
2286   UCHAR TitleKey[6];
2287   UCHAR Reserved[2];
2288 } KS_DVDCOPY_TITLEKEY,*PKS_DVDCOPY_TITLEKEY;
2289 
2290 typedef struct _KS_COPY_MACROVISION {
2291   ULONG MACROVISIONLevel;
2292 } KS_COPY_MACROVISION,*PKS_COPY_MACROVISION;
2293 
2294 typedef struct _KS_DVDCOPY_SET_COPY_STATE {
2295   ULONG DVDCopyState;
2296 } KS_DVDCOPY_SET_COPY_STATE,*PKS_DVDCOPY_SET_COPY_STATE;
2297 
2298 typedef enum {
2299   KS_DVDCOPYSTATE_INITIALIZE,
2300   KS_DVDCOPYSTATE_INITIALIZE_TITLE,
2301   KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED,
2302   KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED,
2303   KS_DVDCOPYSTATE_DONE
2304 } KS_DVDCOPYSTATE;
2305 
2306 typedef enum {
2307   KS_MACROVISION_DISABLED,
2308   KS_MACROVISION_LEVEL1,
2309   KS_MACROVISION_LEVEL2,
2310   KS_MACROVISION_LEVEL3
2311 } KS_COPY_MACROVISION_LEVEL,*PKS_COPY_MACROVISION_LEVEL;
2312 
2313 #define KS_DVD_CGMS_RESERVED_MASK	0x00000078
2314 
2315 #define KS_DVD_CGMS_COPY_PROTECT_MASK	0x00000018
2316 #define KS_DVD_CGMS_COPY_PERMITTED	0x00000000
2317 #define KS_DVD_CGMS_COPY_ONCE		0x00000010
2318 #define KS_DVD_CGMS_NO_COPY		0x00000018
2319 
2320 #define KS_DVD_COPYRIGHT_MASK		0x00000040
2321 #define KS_DVD_NOT_COPYRIGHTED		0x00000000
2322 #define KS_DVD_COPYRIGHTED		0x00000040
2323 
2324 #define KS_DVD_SECTOR_PROTECT_MASK	0x00000020
2325 #define KS_DVD_SECTOR_NOT_PROTECTED	0x00000000
2326 #define KS_DVD_SECTOR_PROTECTED		0x00000020
2327 
2328 #define STATIC_KSCATEGORY_TVTUNER					\
2329 	0xa799a800,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4
2330 DEFINE_GUIDSTRUCT("a799a800-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_TVTUNER);
2331 #define KSCATEGORY_TVTUNER DEFINE_GUIDNAMED(KSCATEGORY_TVTUNER)
2332 
2333 #define STATIC_KSCATEGORY_CROSSBAR					\
2334 	0xa799a801,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4
2335 DEFINE_GUIDSTRUCT("a799a801-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_CROSSBAR);
2336 #define KSCATEGORY_CROSSBAR DEFINE_GUIDNAMED(KSCATEGORY_CROSSBAR)
2337 
2338 #define STATIC_KSCATEGORY_TVAUDIO					\
2339 	0xa799a802,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4
2340 DEFINE_GUIDSTRUCT("a799a802-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_TVAUDIO);
2341 #define KSCATEGORY_TVAUDIO DEFINE_GUIDNAMED(KSCATEGORY_TVAUDIO)
2342 
2343 #define STATIC_KSCATEGORY_VPMUX						\
2344 	0xa799a803,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4
2345 DEFINE_GUIDSTRUCT("a799a803-a46d-11d0-a18c-00a02401dcd4",KSCATEGORY_VPMUX);
2346 #define KSCATEGORY_VPMUX DEFINE_GUIDNAMED(KSCATEGORY_VPMUX)
2347 
2348 #define STATIC_KSCATEGORY_VBICODEC					\
2349 	0x07dad660,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f
2350 DEFINE_GUIDSTRUCT("07dad660-22f1-11d1-a9f4-00c04fbbde8f",KSCATEGORY_VBICODEC);
2351 #define KSCATEGORY_VBICODEC DEFINE_GUIDNAMED(KSCATEGORY_VBICODEC)
2352 
2353 #define STATIC_KSDATAFORMAT_SUBTYPE_VPVideo				\
2354 	0x5a9b6a40,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a
2355 DEFINE_GUIDSTRUCT("5a9b6a40-1a22-11d1-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_VPVideo);
2356 #define KSDATAFORMAT_SUBTYPE_VPVideo DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVideo)
2357 
2358 #define STATIC_KSDATAFORMAT_SUBTYPE_VPVBI				\
2359 	0x5a9b6a41,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a
2360 DEFINE_GUIDSTRUCT("5a9b6a41-1a22-11d1-bad9-00609744111a",KSDATAFORMAT_SUBTYPE_VPVBI);
2361 #define KSDATAFORMAT_SUBTYPE_VPVBI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVBI)
2362 
2363 #define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO				\
2364 	0x05589f80,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a
2365 DEFINE_GUIDSTRUCT("05589f80-c356-11ce-bf01-00aa0055595a",KSDATAFORMAT_SPECIFIER_VIDEOINFO);
2366 #define KSDATAFORMAT_SPECIFIER_VIDEOINFO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO)
2367 
2368 #define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2			\
2369 	0xf72a76A0,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba
2370 DEFINE_GUIDSTRUCT("f72a76A0-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SPECIFIER_VIDEOINFO2);
2371 #define KSDATAFORMAT_SPECIFIER_VIDEOINFO2 DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO2)
2372 
2373 #define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO				\
2374 	0x0482dde1,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65
2375 DEFINE_GUIDSTRUCT("0482dde1-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_TYPE_ANALOGVIDEO);
2376 #define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO)
2377 
2378 #define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO			\
2379 	0x0482dde0,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65
2380 DEFINE_GUIDSTRUCT("0482dde0-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_SPECIFIER_ANALOGVIDEO);
2381 #define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO)
2382 
2383 #define STATIC_KSDATAFORMAT_TYPE_ANALOGAUDIO				\
2384 	0x0482dee1,0x7817,0x11cf,0x8a,0x03,0x00,0xaa,0x00,0x6e,0xcb,0x65
2385 DEFINE_GUIDSTRUCT("0482DEE1-7817-11cf-8a03-00aa006ecb65",KSDATAFORMAT_TYPE_ANALOGAUDIO);
2386 #define KSDATAFORMAT_TYPE_ANALOGAUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGAUDIO)
2387 
2388 #define STATIC_KSDATAFORMAT_SPECIFIER_VBI				\
2389 	0xf72a76e0,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba
2390 DEFINE_GUIDSTRUCT("f72a76e0-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SPECIFIER_VBI);
2391 #define KSDATAFORMAT_SPECIFIER_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VBI)
2392 
2393 #define STATIC_KSDATAFORMAT_TYPE_VBI					\
2394 	0xf72a76e1,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba
2395 DEFINE_GUIDSTRUCT("f72a76e1-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_TYPE_VBI);
2396 #define KSDATAFORMAT_TYPE_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VBI)
2397 
2398 #define STATIC_KSDATAFORMAT_SUBTYPE_RAW8				\
2399 	0xca20d9a0,0x3e3e,0x11d1,0x9b,0xf9,0x0,0xc0,0x4f,0xbb,0xde,0xbf
2400 DEFINE_GUIDSTRUCT("ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf",KSDATAFORMAT_SUBTYPE_RAW8);
2401 #define KSDATAFORMAT_SUBTYPE_RAW8 DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RAW8)
2402 
2403 #define STATIC_KSDATAFORMAT_SUBTYPE_CC					\
2404 	0x33214cc1,0x11f,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe
2405 DEFINE_GUIDSTRUCT("33214CC1-011F-11D2-B4B1-00A0D102CFBE",KSDATAFORMAT_SUBTYPE_CC);
2406 #define KSDATAFORMAT_SUBTYPE_CC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_CC)
2407 
2408 #define STATIC_KSDATAFORMAT_SUBTYPE_NABTS				\
2409 	0xf72a76e2,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba
2410 DEFINE_GUIDSTRUCT("f72a76e2-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SUBTYPE_NABTS);
2411 #define KSDATAFORMAT_SUBTYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS)
2412 
2413 #define STATIC_KSDATAFORMAT_SUBTYPE_TELETEXT				\
2414 	0xf72a76e3,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba
2415 DEFINE_GUIDSTRUCT("f72a76e3-eb0a-11d0-ace4-0000c0cc16ba",KSDATAFORMAT_SUBTYPE_TELETEXT);
2416 #define KSDATAFORMAT_SUBTYPE_TELETEXT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_TELETEXT)
2417 
2418 #define KS_BI_RGB		__MSABI_LONG(0)
2419 #define KS_BI_RLE8		__MSABI_LONG(1)
2420 #define KS_BI_RLE4		__MSABI_LONG(2)
2421 #define KS_BI_BITFIELDS		__MSABI_LONG(3)
2422 
2423 typedef struct tagKS_RGBQUAD {
2424   BYTE rgbBlue;
2425   BYTE rgbGreen;
2426   BYTE rgbRed;
2427   BYTE rgbReserved;
2428 } KS_RGBQUAD,*PKS_RGBQUAD;
2429 
2430 #define KS_iPALETTE_COLORS	256
2431 #define KS_iEGA_COLORS		16
2432 #define KS_iMASK_COLORS		3
2433 #define KS_iTRUECOLOR		16
2434 #define KS_iRED			0
2435 #define KS_iGREEN		1
2436 #define KS_iBLUE		2
2437 #define KS_iPALETTE		8
2438 #define KS_iMAXBITS		8
2439 #define KS_SIZE_EGA_PALETTE	(KS_iEGA_COLORS *sizeof(KS_RGBQUAD))
2440 #define KS_SIZE_PALETTE		(KS_iPALETTE_COLORS *sizeof(KS_RGBQUAD))
2441 
2442 typedef struct tagKS_BITMAPINFOHEADER {
2443   DWORD biSize;
2444   LONG biWidth;
2445   LONG biHeight;
2446   WORD biPlanes;
2447   WORD biBitCount;
2448   DWORD biCompression;
2449   DWORD biSizeImage;
2450   LONG biXPelsPerMeter;
2451   LONG biYPelsPerMeter;
2452   DWORD biClrUsed;
2453   DWORD biClrImportant;
2454 } KS_BITMAPINFOHEADER,*PKS_BITMAPINFOHEADER;
2455 
2456 typedef struct tag_KS_TRUECOLORINFO {
2457   DWORD dwBitMasks[KS_iMASK_COLORS];
2458   KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS];
2459 } KS_TRUECOLORINFO,*PKS_TRUECOLORINFO;
2460 
2461 #define KS_WIDTHBYTES(bits)	((DWORD)(((bits)+31) & (~31)) / 8)
2462 #define KS_DIBWIDTHBYTES(bi)	(DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth *(DWORD)(bi).biBitCount)
2463 #define KS__DIBSIZE(bi)		(KS_DIBWIDTHBYTES(bi) *(DWORD)(bi).biHeight)
2464 #define KS_DIBSIZE(bi)		((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi))
2465 
2466 #ifndef __REFERENCE_TIME_DEFINED
2467 #define __REFERENCE_TIME_DEFINED
2468 typedef LONGLONG REFERENCE_TIME;
2469 #endif /*__REFERENCE_TIME_DEFINED*/
2470 
2471 typedef struct tagKS_VIDEOINFOHEADER {
2472   RECT rcSource;
2473   RECT rcTarget;
2474   DWORD dwBitRate;
2475   DWORD dwBitErrorRate;
2476   REFERENCE_TIME AvgTimePerFrame;
2477   KS_BITMAPINFOHEADER bmiHeader;
2478 } KS_VIDEOINFOHEADER,*PKS_VIDEOINFOHEADER;
2479 
2480 typedef struct tagKS_VIDEOINFO {
2481   RECT rcSource;
2482   RECT rcTarget;
2483   DWORD dwBitRate;
2484   DWORD dwBitErrorRate;
2485   REFERENCE_TIME AvgTimePerFrame;
2486   KS_BITMAPINFOHEADER bmiHeader;
2487   __C89_NAMELESS union {
2488     KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS];
2489     DWORD dwBitMasks[KS_iMASK_COLORS];
2490     KS_TRUECOLORINFO TrueColorInfo;
2491   };
2492 } KS_VIDEOINFO,*PKS_VIDEOINFO;
2493 
2494 #define KS_SIZE_MASKS			(KS_iMASK_COLORS *sizeof(DWORD))
2495 #define KS_SIZE_PREHEADER		(FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader))
2496 
2497 #define KS_SIZE_VIDEOHEADER(pbmi)	((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER)
2498 
2499 typedef struct tagKS_VBIINFOHEADER {
2500   ULONG StartLine;
2501   ULONG EndLine;
2502   ULONG SamplingFrequency;
2503   ULONG MinLineStartTime;
2504   ULONG MaxLineStartTime;
2505   ULONG ActualLineStartTime;
2506   ULONG ActualLineEndTime;
2507   ULONG VideoStandard;
2508   ULONG SamplesPerLine;
2509   ULONG StrideInBytes;
2510   ULONG BufferSize;
2511 } KS_VBIINFOHEADER,*PKS_VBIINFOHEADER;
2512 
2513 #define KS_VBIDATARATE_NABTS		(__MSABI_LONG(5727272))
2514 #define KS_VBIDATARATE_CC		(__MSABI_LONG(503493))
2515 #define KS_VBISAMPLINGRATE_4X_NABTS	((__LONG32)(4*KS_VBIDATARATE_NABTS))
2516 #define KS_VBISAMPLINGRATE_47X_NABTS	(__MSABI_LONG(27000000))
2517 #define KS_VBISAMPLINGRATE_5X_NABTS	((__LONG32)(5*KS_VBIDATARATE_NABTS))
2518 
2519 #define KS_47NABTS_SCALER		(KS_VBISAMPLINGRATE_47X_NABTS/(double)KS_VBIDATARATE_NABTS)
2520 
2521 typedef struct tagKS_AnalogVideoInfo {
2522   RECT rcSource;
2523   RECT rcTarget;
2524   DWORD dwActiveWidth;
2525   DWORD dwActiveHeight;
2526   REFERENCE_TIME AvgTimePerFrame;
2527 } KS_ANALOGVIDEOINFO,*PKS_ANALOGVIDEOINFO;
2528 
2529 #define KS_TVTUNER_CHANGE_BEGIN_TUNE	__MSABI_LONG(0x0001)
2530 #define KS_TVTUNER_CHANGE_END_TUNE	__MSABI_LONG(0x0002)
2531 
2532 typedef struct tagKS_TVTUNER_CHANGE_INFO {
2533   DWORD dwFlags;
2534   DWORD dwCountryCode;
2535   DWORD dwAnalogVideoStandard;
2536   DWORD dwChannel;
2537 } KS_TVTUNER_CHANGE_INFO,*PKS_TVTUNER_CHANGE_INFO;
2538 
2539 typedef enum {
2540   KS_MPEG2Level_Low,
2541   KS_MPEG2Level_Main,
2542   KS_MPEG2Level_High1440,
2543   KS_MPEG2Level_High
2544 } KS_MPEG2Level;
2545 
2546 typedef enum {
2547   KS_MPEG2Profile_Simple,
2548   KS_MPEG2Profile_Main,
2549   KS_MPEG2Profile_SNRScalable,
2550   KS_MPEG2Profile_SpatiallyScalable,
2551   KS_MPEG2Profile_High
2552 } KS_MPEG2Profile;
2553 
2554 #define KS_INTERLACE_IsInterlaced		0x00000001
2555 #define KS_INTERLACE_1FieldPerSample		0x00000002
2556 #define KS_INTERLACE_Field1First		0x00000004
2557 #define KS_INTERLACE_UNUSED			0x00000008
2558 #define KS_INTERLACE_FieldPatternMask		0x00000030
2559 #define KS_INTERLACE_FieldPatField1Only		0x00000000
2560 #define KS_INTERLACE_FieldPatField2Only		0x00000010
2561 #define KS_INTERLACE_FieldPatBothRegular	0x00000020
2562 #define KS_INTERLACE_FieldPatBothIrregular	0x00000030
2563 #define KS_INTERLACE_DisplayModeMask		0x000000c0
2564 #define KS_INTERLACE_DisplayModeBobOnly		0x00000000
2565 #define KS_INTERLACE_DisplayModeWeaveOnly	0x00000040
2566 #define KS_INTERLACE_DisplayModeBobOrWeave	0x00000080
2567 
2568 #define KS_MPEG2_DoPanScan			0x00000001
2569 #define KS_MPEG2_DVDLine21Field1		0x00000002
2570 #define KS_MPEG2_DVDLine21Field2		0x00000004
2571 #define KS_MPEG2_SourceIsLetterboxed		0x00000008
2572 #define KS_MPEG2_FilmCameraMode			0x00000010
2573 #define KS_MPEG2_LetterboxAnalogOut		0x00000020
2574 #define KS_MPEG2_DSS_UserData			0x00000040
2575 #define KS_MPEG2_DVB_UserData			0x00000080
2576 #define KS_MPEG2_27MhzTimebase			0x00000100
2577 
2578 typedef struct tagKS_VIDEOINFOHEADER2 {
2579   RECT rcSource;
2580   RECT rcTarget;
2581   DWORD dwBitRate;
2582   DWORD dwBitErrorRate;
2583   REFERENCE_TIME AvgTimePerFrame;
2584   DWORD dwInterlaceFlags;
2585   DWORD dwCopyProtectFlags;
2586   DWORD dwPictAspectRatioX;
2587   DWORD dwPictAspectRatioY;
2588   DWORD dwReserved1;
2589   DWORD dwReserved2;
2590   KS_BITMAPINFOHEADER bmiHeader;
2591 } KS_VIDEOINFOHEADER2,*PKS_VIDEOINFOHEADER2;
2592 
2593 typedef struct tagKS_MPEG1VIDEOINFO {
2594   KS_VIDEOINFOHEADER hdr;
2595   DWORD dwStartTimeCode;
2596   DWORD cbSequenceHeader;
2597   BYTE bSequenceHeader[1];
2598 } KS_MPEG1VIDEOINFO,*PKS_MPEG1VIDEOINFO;
2599 
2600 #define KS_MAX_SIZE_MPEG1_SEQUENCE_INFO	140
2601 #define KS_SIZE_MPEG1VIDEOINFO(pv)	(FIELD_OFFSET(KS_MPEG1VIDEOINFO,bSequenceHeader[0]) + (pv)->cbSequenceHeader)
2602 #define KS_MPEG1_SEQUENCE_INFO(pv)	((const BYTE *)(pv)->bSequenceHeader)
2603 
2604 typedef struct tagKS_MPEGVIDEOINFO2 {
2605   KS_VIDEOINFOHEADER2 hdr;
2606   DWORD dwStartTimeCode;
2607   DWORD cbSequenceHeader;
2608   DWORD dwProfile;
2609   DWORD dwLevel;
2610   DWORD dwFlags;
2611   DWORD bSequenceHeader[1];
2612 } KS_MPEGVIDEOINFO2,*PKS_MPEGVIDEOINFO2;
2613 
2614 #define KS_SIZE_MPEGVIDEOINFO2(pv)	(FIELD_OFFSET(KS_MPEGVIDEOINFO2,bSequenceHeader[0]) + (pv)->cbSequenceHeader)
2615 #define KS_MPEG1_SEQUENCE_INFO(pv)	((const BYTE *)(pv)->bSequenceHeader)
2616 
2617 #define KS_MPEGAUDIOINFO_27MhzTimebase	0x00000001
2618 
2619 typedef struct tagKS_MPEAUDIOINFO {
2620   DWORD dwFlags;
2621   DWORD dwReserved1;
2622   DWORD dwReserved2;
2623   DWORD dwReserved3;
2624 } KS_MPEGAUDIOINFO,*PKS_MPEGAUDIOINFO;
2625 
2626 typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER {
2627   KSDATAFORMAT DataFormat;
2628   KS_VIDEOINFOHEADER VideoInfoHeader;
2629 } KS_DATAFORMAT_VIDEOINFOHEADER,*PKS_DATAFORMAT_VIDEOINFOHEADER;
2630 
2631 typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER2 {
2632   KSDATAFORMAT DataFormat;
2633   KS_VIDEOINFOHEADER2 VideoInfoHeader2;
2634 } KS_DATAFORMAT_VIDEOINFOHEADER2,*PKS_DATAFORMAT_VIDEOINFOHEADER2;
2635 
2636 typedef struct tagKS_DATAFORMAT_VIDEOINFO_PALETTE {
2637   KSDATAFORMAT DataFormat;
2638   KS_VIDEOINFO VideoInfo;
2639 } KS_DATAFORMAT_VIDEOINFO_PALETTE,*PKS_DATAFORMAT_VIDEOINFO_PALETTE;
2640 
2641 typedef struct tagKS_DATAFORMAT_VBIINFOHEADER {
2642   KSDATAFORMAT DataFormat;
2643   KS_VBIINFOHEADER VBIInfoHeader;
2644 } KS_DATAFORMAT_VBIINFOHEADER,*PKS_DATAFORMAT_VBIINFOHEADER;
2645 
2646 typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS {
2647   GUID guid;
2648   ULONG VideoStandard;
2649   SIZE InputSize;
2650   SIZE MinCroppingSize;
2651   SIZE MaxCroppingSize;
2652   int CropGranularityX;
2653   int CropGranularityY;
2654   int CropAlignX;
2655   int CropAlignY;
2656   SIZE MinOutputSize;
2657   SIZE MaxOutputSize;
2658   int OutputGranularityX;
2659   int OutputGranularityY;
2660   int StretchTapsX;
2661   int StretchTapsY;
2662   int ShrinkTapsX;
2663   int ShrinkTapsY;
2664   LONGLONG MinFrameInterval;
2665   LONGLONG MaxFrameInterval;
2666   LONG MinBitsPerSecond;
2667   LONG MaxBitsPerSecond;
2668 } KS_VIDEO_STREAM_CONFIG_CAPS,*PKS_VIDEO_STREAM_CONFIG_CAPS;
2669 
2670 typedef struct tagKS_DATARANGE_VIDEO {
2671   KSDATARANGE DataRange;
2672   WINBOOL bFixedSizeSamples;
2673   WINBOOL bTemporalCompression;
2674   DWORD StreamDescriptionFlags;
2675   DWORD MemoryAllocationFlags;
2676   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2677   KS_VIDEOINFOHEADER VideoInfoHeader;
2678 } KS_DATARANGE_VIDEO,*PKS_DATARANGE_VIDEO;
2679 
2680 typedef struct tagKS_DATARANGE_VIDEO2 {
2681   KSDATARANGE DataRange;
2682   WINBOOL bFixedSizeSamples;
2683   WINBOOL bTemporalCompression;
2684   DWORD StreamDescriptionFlags;
2685   DWORD MemoryAllocationFlags;
2686   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2687   KS_VIDEOINFOHEADER2 VideoInfoHeader;
2688 } KS_DATARANGE_VIDEO2,*PKS_DATARANGE_VIDEO2;
2689 
2690 typedef struct tagKS_DATARANGE_MPEG1_VIDEO {
2691   KSDATARANGE DataRange;
2692   WINBOOL bFixedSizeSamples;
2693   WINBOOL bTemporalCompression;
2694   DWORD StreamDescriptionFlags;
2695   DWORD MemoryAllocationFlags;
2696   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2697   KS_MPEG1VIDEOINFO VideoInfoHeader;
2698 } KS_DATARANGE_MPEG1_VIDEO,*PKS_DATARANGE_MPEG1_VIDEO;
2699 
2700 typedef struct tagKS_DATARANGE_MPEG2_VIDEO {
2701   KSDATARANGE DataRange;
2702   WINBOOL bFixedSizeSamples;
2703   WINBOOL bTemporalCompression;
2704   DWORD StreamDescriptionFlags;
2705   DWORD MemoryAllocationFlags;
2706   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2707   KS_MPEGVIDEOINFO2 VideoInfoHeader;
2708 } KS_DATARANGE_MPEG2_VIDEO,*PKS_DATARANGE_MPEG2_VIDEO;
2709 
2710 typedef struct tagKS_DATARANGE_VIDEO_PALETTE {
2711   KSDATARANGE DataRange;
2712   WINBOOL bFixedSizeSamples;
2713   WINBOOL bTemporalCompression;
2714   DWORD StreamDescriptionFlags;
2715   DWORD MemoryAllocationFlags;
2716   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2717   KS_VIDEOINFO VideoInfo;
2718 } KS_DATARANGE_VIDEO_PALETTE,*PKS_DATARANGE_VIDEO_PALETTE;
2719 
2720 typedef struct tagKS_DATARANGE_VIDEO_VBI {
2721   KSDATARANGE DataRange;
2722   WINBOOL bFixedSizeSamples;
2723   WINBOOL bTemporalCompression;
2724   DWORD StreamDescriptionFlags;
2725   DWORD MemoryAllocationFlags;
2726   KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
2727   KS_VBIINFOHEADER VBIInfoHeader;
2728 } KS_DATARANGE_VIDEO_VBI,*PKS_DATARANGE_VIDEO_VBI;
2729 
2730 typedef struct tagKS_DATARANGE_ANALOGVIDEO {
2731   KSDATARANGE DataRange;
2732   KS_ANALOGVIDEOINFO AnalogVideoInfo;
2733 } KS_DATARANGE_ANALOGVIDEO,*PKS_DATARANGE_ANALOGVIDEO;
2734 
2735 #define KS_VIDEOSTREAM_PREVIEW		0x0001
2736 #define KS_VIDEOSTREAM_CAPTURE		0x0002
2737 #define KS_VIDEOSTREAM_VBI		0x0010
2738 #define KS_VIDEOSTREAM_NABTS		0x0020
2739 #define KS_VIDEOSTREAM_CC		0x0100
2740 #define KS_VIDEOSTREAM_EDS		0x0200
2741 #define KS_VIDEOSTREAM_TELETEXT		0x0400
2742 #define KS_VIDEOSTREAM_STILL		0x1000
2743 #define KS_VIDEOSTREAM_IS_VPE		0x8000
2744 
2745 #define KS_VIDEO_ALLOC_VPE_SYSTEM	0x0001
2746 #define KS_VIDEO_ALLOC_VPE_DISPLAY	0x0002
2747 #define KS_VIDEO_ALLOC_VPE_AGP		0x0004
2748 
2749 #define STATIC_KSPROPSETID_VBICAP_PROPERTIES				\
2750 	0xf162c607,0x7b35,0x496f,0xad,0x7f,0x2d,0xca,0x3b,0x46,0xb7,0x18
2751 DEFINE_GUIDSTRUCT("F162C607-7B35-496f-AD7F-2DCA3B46B718",KSPROPSETID_VBICAP_PROPERTIES);
2752 #define KSPROPSETID_VBICAP_PROPERTIES DEFINE_GUIDNAMED(KSPROPSETID_VBICAP_PROPERTIES)
2753 
2754 typedef enum {
2755   KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 0x01
2756 } KSPROPERTY_VBICAP;
2757 
2758 typedef struct _VBICAP_PROPERTIES_PROTECTION_S {
2759   KSPROPERTY Property;
2760   ULONG StreamIndex;
2761   ULONG Status;
2762 } VBICAP_PROPERTIES_PROTECTION_S,*PVBICAP_PROPERTIES_PROTECTION_S;
2763 
2764 #define KS_VBICAP_PROTECTION_MV_PRESENT				__MSABI_LONG(0x0001)
2765 #define KS_VBICAP_PROTECTION_MV_HARDWARE			__MSABI_LONG(0x0002)
2766 #define KS_VBICAP_PROTECTION_MV_DETECTED			__MSABI_LONG(0x0004)
2767 
2768 #define KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE			0x800
2769 #define KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE	0x810
2770 
2771 #define KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE	0x820
2772 #define KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE	0x830
2773 
2774 #define KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE		0x840
2775 #define KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE	0x850
2776 
2777 #define KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE		0x860
2778 #define KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE		0x870
2779 
2780 #define KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE	0x880
2781 #define KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE	0x890
2782 
2783 #define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE	0x8A0
2784 #define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE	0x8B0
2785 
2786 #define KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE	0x8F0
2787 
2788 #define STATIC_KSDATAFORMAT_TYPE_NABTS					\
2789 	0xe757bca0,0x39ac,0x11d1,0xa9,0xf5,0x0,0xc0,0x4f,0xbb,0xde,0x8f
2790 DEFINE_GUIDSTRUCT("E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F",KSDATAFORMAT_TYPE_NABTS);
2791 #define KSDATAFORMAT_TYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_NABTS)
2792 
2793 #define STATIC_KSDATAFORMAT_SUBTYPE_NABTS_FEC				\
2794 	0xe757bca1,0x39ac,0x11d1,0xa9,0xf5,0x0,0xc0,0x4f,0xbb,0xde,0x8f
2795 DEFINE_GUIDSTRUCT("E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F",KSDATAFORMAT_SUBTYPE_NABTS_FEC);
2796 #define KSDATAFORMAT_SUBTYPE_NABTS_FEC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS_FEC)
2797 
2798 #define MAX_NABTS_VBI_LINES_PER_FIELD	11
2799 #define NABTS_LINES_PER_BUNDLE		16
2800 #define NABTS_PAYLOAD_PER_LINE		28
2801 #define NABTS_BYTES_PER_LINE		36
2802 
2803 typedef struct _NABTSFEC_BUFFER {
2804   ULONG dataSize;
2805   USHORT groupID;
2806   USHORT Reserved;
2807   UCHAR data[NABTS_LINES_PER_BUNDLE *NABTS_PAYLOAD_PER_LINE];
2808 } NABTSFEC_BUFFER,*PNABTSFEC_BUFFER;
2809 
2810 #define STATIC_KSPROPSETID_VBICodecFiltering				\
2811 	0xcafeb0ca,0x8715,0x11d0,0xbd,0x6a,0x00,0x35,0xc0,0xed,0xba,0xbe
2812 DEFINE_GUIDSTRUCT("cafeb0ca-8715-11d0-bd6a-0035c0edbabe",KSPROPSETID_VBICodecFiltering);
2813 #define KSPROPSETID_VBICodecFiltering DEFINE_GUIDNAMED(KSPROPSETID_VBICodecFiltering)
2814 
2815 typedef enum {
2816   KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 0x01,
2817   KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY,
2818   KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
2819   KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
2820   KSPROPERTY_VBICODECFILTERING_STATISTICS
2821 } KSPROPERTY_VBICODECFILTERING;
2822 
2823 typedef struct _VBICODECFILTERING_SCANLINES {
2824   DWORD DwordBitArray[32];
2825 } VBICODECFILTERING_SCANLINES,*PVBICODECFILTERING_SCANLINES;
2826 
2827 typedef struct _VBICODECFILTERING_NABTS_SUBSTREAMS {
2828   DWORD SubstreamMask[128];
2829 } VBICODECFILTERING_NABTS_SUBSTREAMS,*PVBICODECFILTERING_NABTS_SUBSTREAMS;
2830 
2831 typedef struct _VBICODECFILTERING_CC_SUBSTREAMS {
2832   DWORD SubstreamMask;
2833 } VBICODECFILTERING_CC_SUBSTREAMS,*PVBICODECFILTERING_CC_SUBSTREAMS;
2834 
2835 #define KS_CC_SUBSTREAM_ODD		__MSABI_LONG(0x0001)
2836 #define KS_CC_SUBSTREAM_EVEN		__MSABI_LONG(0x0002)
2837 
2838 #define KS_CC_SUBSTREAM_FIELD1_MASK	__MSABI_LONG(0x00F0)
2839 #define KS_CC_SUBSTREAM_SERVICE_CC1	__MSABI_LONG(0x0010)
2840 #define KS_CC_SUBSTREAM_SERVICE_CC2	__MSABI_LONG(0x0020)
2841 #define KS_CC_SUBSTREAM_SERVICE_T1	__MSABI_LONG(0x0040)
2842 #define KS_CC_SUBSTREAM_SERVICE_T2	__MSABI_LONG(0x0080)
2843 
2844 #define KS_CC_SUBSTREAM_FIELD2_MASK	__MSABI_LONG(0x1F00)
2845 #define KS_CC_SUBSTREAM_SERVICE_CC3	__MSABI_LONG(0x0100)
2846 #define KS_CC_SUBSTREAM_SERVICE_CC4	__MSABI_LONG(0x0200)
2847 #define KS_CC_SUBSTREAM_SERVICE_T3	__MSABI_LONG(0x0400)
2848 #define KS_CC_SUBSTREAM_SERVICE_T4	__MSABI_LONG(0x0800)
2849 #define KS_CC_SUBSTREAM_SERVICE_XDS	__MSABI_LONG(0x1000)
2850 
2851 #define CC_MAX_HW_DECODE_LINES		12
2852 typedef struct _CC_BYTE_PAIR {
2853   BYTE Decoded[2];
2854   USHORT Reserved;
2855 } CC_BYTE_PAIR,*PCC_BYTE_PAIR;
2856 
2857 typedef struct _CC_HW_FIELD {
2858   VBICODECFILTERING_SCANLINES ScanlinesRequested;
2859   ULONG fieldFlags;
2860   LONGLONG PictureNumber;
2861   CC_BYTE_PAIR Lines[CC_MAX_HW_DECODE_LINES];
2862 } CC_HW_FIELD,*PCC_HW_FIELD;
2863 
2864 #ifndef PACK_PRAGMAS_NOT_SUPPORTED
2865 #include <pshpack1.h>
2866 #endif
2867 typedef struct _NABTS_BUFFER_LINE {
2868   BYTE Confidence;
2869   BYTE Bytes[NABTS_BYTES_PER_LINE];
2870 } NABTS_BUFFER_LINE,*PNABTS_BUFFER_LINE;
2871 
2872 #define NABTS_BUFFER_PICTURENUMBER_SUPPORT	1
2873 typedef struct _NABTS_BUFFER {
2874   VBICODECFILTERING_SCANLINES ScanlinesRequested;
2875   LONGLONG PictureNumber;
2876   NABTS_BUFFER_LINE NabtsLines[MAX_NABTS_VBI_LINES_PER_FIELD];
2877 } NABTS_BUFFER,*PNABTS_BUFFER;
2878 #ifndef PACK_PRAGMAS_NOT_SUPPORTED
2879 #include <poppack.h>
2880 #endif
2881 
2882 #define WST_TVTUNER_CHANGE_BEGIN_TUNE	__MSABI_LONG(0x1000)
2883 #define WST_TVTUNER_CHANGE_END_TUNE	__MSABI_LONG(0x2000)
2884 
2885 #define MAX_WST_VBI_LINES_PER_FIELD	17
2886 #define WST_BYTES_PER_LINE		42
2887 
2888 typedef struct _WST_BUFFER_LINE {
2889   BYTE Confidence;
2890   BYTE Bytes[WST_BYTES_PER_LINE];
2891 } WST_BUFFER_LINE,*PWST_BUFFER_LINE;
2892 
2893 typedef struct _WST_BUFFER {
2894   VBICODECFILTERING_SCANLINES ScanlinesRequested;
2895   WST_BUFFER_LINE WstLines[MAX_WST_VBI_LINES_PER_FIELD];
2896 } WST_BUFFER,*PWST_BUFFER;
2897 
2898 typedef struct _VBICODECFILTERING_STATISTICS_COMMON {
2899   DWORD InputSRBsProcessed;
2900   DWORD OutputSRBsProcessed;
2901   DWORD SRBsIgnored;
2902   DWORD InputSRBsMissing;
2903   DWORD OutputSRBsMissing;
2904   DWORD OutputFailures;
2905   DWORD InternalErrors;
2906   DWORD ExternalErrors;
2907   DWORD InputDiscontinuities;
2908   DWORD DSPFailures;
2909   DWORD TvTunerChanges;
2910   DWORD VBIHeaderChanges;
2911   DWORD LineConfidenceAvg;
2912   DWORD BytesOutput;
2913 } VBICODECFILTERING_STATISTICS_COMMON,*PVBICODECFILTERING_STATISTICS_COMMON;
2914 
2915 typedef struct _VBICODECFILTERING_STATISTICS_COMMON_PIN {
2916   DWORD SRBsProcessed;
2917   DWORD SRBsIgnored;
2918   DWORD SRBsMissing;
2919   DWORD InternalErrors;
2920   DWORD ExternalErrors;
2921   DWORD Discontinuities;
2922   DWORD LineConfidenceAvg;
2923   DWORD BytesOutput;
2924 } VBICODECFILTERING_STATISTICS_COMMON_PIN,*PVBICODECFILTERING_STATISTICS_COMMON_PIN;
2925 
2926 typedef struct _VBICODECFILTERING_STATISTICS_NABTS {
2927   VBICODECFILTERING_STATISTICS_COMMON Common;
2928   DWORD FECBundleBadLines;
2929   DWORD FECQueueOverflows;
2930   DWORD FECCorrectedLines;
2931   DWORD FECUncorrectableLines;
2932   DWORD BundlesProcessed;
2933   DWORD BundlesSent2IP;
2934   DWORD FilteredLines;
2935 } VBICODECFILTERING_STATISTICS_NABTS,*PVBICODECFILTERING_STATISTICS_NABTS;
2936 
2937 typedef struct _VBICODECFILTERING_STATISTICS_NABTS_PIN {
2938   VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
2939 } VBICODECFILTERING_STATISTICS_NABTS_PIN,*PVBICODECFILTERING_STATISTICS_NABTS_PIN;
2940 
2941 typedef struct _VBICODECFILTERING_STATISTICS_CC {
2942   VBICODECFILTERING_STATISTICS_COMMON Common;
2943 } VBICODECFILTERING_STATISTICS_CC,*PVBICODECFILTERING_STATISTICS_CC;
2944 
2945 typedef struct _VBICODECFILTERING_STATISTICS_CC_PIN {
2946   VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
2947 } VBICODECFILTERING_STATISTICS_CC_PIN,*PVBICODECFILTERING_STATISTICS_CC_PIN;
2948 
2949 typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT {
2950   VBICODECFILTERING_STATISTICS_COMMON Common;
2951 } VBICODECFILTERING_STATISTICS_TELETEXT,*PVBICODECFILTERING_STATISTICS_TELETEXT;
2952 
2953 typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT_PIN {
2954   VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
2955 } VBICODECFILTERING_STATISTICS_TELETEXT_PIN,*PVBICODECFILTERING_STATISTICS_TELETEXT_PIN;
2956 
2957 typedef struct {
2958   KSPROPERTY Property;
2959   VBICODECFILTERING_SCANLINES Scanlines;
2960 } KSPROPERTY_VBICODECFILTERING_SCANLINES_S,*PKSPROPERTY_VBICODECFILTERING_SCANLINES_S;
2961 
2962 typedef struct {
2963   KSPROPERTY Property;
2964   VBICODECFILTERING_NABTS_SUBSTREAMS Substreams;
2965 } KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S,*PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
2966 
2967 typedef struct {
2968   KSPROPERTY Property;
2969   VBICODECFILTERING_CC_SUBSTREAMS Substreams;
2970 } KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S,*PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
2971 
2972 typedef struct {
2973   KSPROPERTY Property;
2974   VBICODECFILTERING_STATISTICS_COMMON Statistics;
2975 } KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
2976 
2977 typedef struct {
2978   KSPROPERTY Property;
2979   VBICODECFILTERING_STATISTICS_COMMON_PIN Statistics;
2980 } KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
2981 
2982 typedef struct {
2983   KSPROPERTY Property;
2984   VBICODECFILTERING_STATISTICS_NABTS Statistics;
2985 } KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
2986 
2987 typedef struct {
2988   KSPROPERTY Property;
2989   VBICODECFILTERING_STATISTICS_NABTS_PIN Statistics;
2990 } KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
2991 
2992 typedef struct {
2993   KSPROPERTY Property;
2994   VBICODECFILTERING_STATISTICS_CC Statistics;
2995 } KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
2996 
2997 typedef struct {
2998   KSPROPERTY Property;
2999   VBICODECFILTERING_STATISTICS_CC_PIN Statistics;
3000 } KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S,*PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
3001 
3002 #define STATIC_PINNAME_VIDEO_CAPTURE					\
3003 	0xfb6c4281,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3004 #define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE
3005 DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_CAPTURE);
3006 #define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE)
3007 #define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE
3008 
3009 #define STATIC_PINNAME_VIDEO_CC_CAPTURE					\
3010 	0x1aad8061,0x12d,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe
3011 #define STATIC_PINNAME_CC_CAPTURE STATIC_PINNAME_VIDEO_CC_CAPTURE
3012 DEFINE_GUIDSTRUCT("1AAD8061-012D-11d2-B4B1-00A0D102CFBE",PINNAME_VIDEO_CC_CAPTURE);
3013 #define PINNAME_VIDEO_CC_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CC_CAPTURE)
3014 
3015 #define STATIC_PINNAME_VIDEO_NABTS_CAPTURE				\
3016 	0x29703660,0x498a,0x11d2,0xb4,0xb1,0x0,0xa0,0xd1,0x2,0xcf,0xbe
3017 #define STATIC_PINNAME_NABTS_CAPTURE STATIC_PINNAME_VIDEO_NABTS_CAPTURE
3018 DEFINE_GUIDSTRUCT("29703660-498A-11d2-B4B1-00A0D102CFBE",PINNAME_VIDEO_NABTS_CAPTURE);
3019 #define PINNAME_VIDEO_NABTS_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS_CAPTURE)
3020 
3021 #define STATIC_PINNAME_VIDEO_PREVIEW					\
3022 	0xfb6c4282,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3023 #define STATIC_PINNAME_PREVIEW STATIC_PINNAME_VIDEO_PREVIEW
3024 DEFINE_GUIDSTRUCT("FB6C4282-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_PREVIEW);
3025 #define PINNAME_VIDEO_PREVIEW DEFINE_GUIDNAMED(PINNAME_VIDEO_PREVIEW)
3026 #define PINNAME_PREVIEW PINNAME_VIDEO_PREVIEW
3027 
3028 #define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN				\
3029 	0xfb6c4283,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3030 DEFINE_GUIDSTRUCT("FB6C4283-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_ANALOGVIDEOIN);
3031 #define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN)
3032 
3033 #define STATIC_PINNAME_VIDEO_VBI					\
3034 	0xfb6c4284,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3035 DEFINE_GUIDSTRUCT("FB6C4284-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VBI);
3036 #define PINNAME_VIDEO_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VBI)
3037 
3038 #define STATIC_PINNAME_VIDEO_VIDEOPORT					\
3039 	0xfb6c4285,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3040 DEFINE_GUIDSTRUCT("FB6C4285-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VIDEOPORT);
3041 #define PINNAME_VIDEO_VIDEOPORT DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT)
3042 
3043 #define STATIC_PINNAME_VIDEO_NABTS					\
3044 	0xfb6c4286,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3045 DEFINE_GUIDSTRUCT("FB6C4286-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_NABTS);
3046 #define PINNAME_VIDEO_NABTS DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS)
3047 
3048 #define STATIC_PINNAME_VIDEO_EDS					\
3049 	0xfb6c4287,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3050 DEFINE_GUIDSTRUCT("FB6C4287-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_EDS);
3051 #define PINNAME_VIDEO_EDS DEFINE_GUIDNAMED(PINNAME_VIDEO_EDS)
3052 
3053 #define STATIC_PINNAME_VIDEO_TELETEXT					\
3054 	0xfb6c4288,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3055 DEFINE_GUIDSTRUCT("FB6C4288-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_TELETEXT);
3056 #define PINNAME_VIDEO_TELETEXT DEFINE_GUIDNAMED(PINNAME_VIDEO_TELETEXT)
3057 
3058 #define STATIC_PINNAME_VIDEO_CC						\
3059 	0xfb6c4289,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3060 DEFINE_GUIDSTRUCT("FB6C4289-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_CC);
3061 #define PINNAME_VIDEO_CC DEFINE_GUIDNAMED(PINNAME_VIDEO_CC)
3062 
3063 #define STATIC_PINNAME_VIDEO_STILL					\
3064 	0xfb6c428A,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3065 DEFINE_GUIDSTRUCT("FB6C428A-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_STILL);
3066 #define PINNAME_VIDEO_STILL DEFINE_GUIDNAMED(PINNAME_VIDEO_STILL)
3067 
3068 #define STATIC_PINNAME_VIDEO_TIMECODE					\
3069 	0xfb6c428B,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3070 DEFINE_GUIDSTRUCT("FB6C428B-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_TIMECODE);
3071 #define PINNAME_VIDEO_TIMECODE DEFINE_GUIDNAMED(PINNAME_VIDEO_TIMECODE)
3072 
3073 #define STATIC_PINNAME_VIDEO_VIDEOPORT_VBI				\
3074 	0xfb6c428C,0x353,0x11d1,0x90,0x5f,0x0,0x0,0xc0,0xcc,0x16,0xba
3075 DEFINE_GUIDSTRUCT("FB6C428C-0353-11d1-905F-0000C0CC16BA",PINNAME_VIDEO_VIDEOPORT_VBI);
3076 #define PINNAME_VIDEO_VIDEOPORT_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT_VBI)
3077 
3078 
3079 typedef enum {
3080   KS_CAPTURE_ALLOC_INVALID	= 0,
3081   KS_CAPTURE_ALLOC_SYSTEM	= 0x0001,
3082   KS_CAPTURE_ALLOC_VRAM		= 0x0002,
3083   KS_CAPTURE_ALLOC_SYSTEM_AGP	= 0x0004,
3084   KS_CAPTURE_ALLOC_VRAM_MAPPED	= 0x0008
3085 } CAPTURE_MEMORY_ALLOCATION_FLAGS,*PCAPTURE_MEMORY_ALLOCATION_FLAGS;
3086 
3087 #define STATIC_KSPROPSETID_VramCapture					\
3088 	0xe73face3,0x2880,0x4902,0xb7,0x99,0x88,0xd0,0xcd,0x63,0x4e,0xf
3089 DEFINE_GUIDSTRUCT("E73FACE3-2880-4902-B799-88D0CD634E0F", KSPROPSETID_VramCapture);
3090 #define KSPROPSETID_VramCapture DEFINE_GUIDNAMED(KSPROPSETID_VramCapture)
3091 
3092 typedef enum {
3093   KSPROPERTY_DISPLAY_ADAPTER_GUID = 1,
3094   KSPROPERTY_PREFERRED_CAPTURE_SURFACE,
3095   KSPROPERTY_CURRENT_CAPTURE_SURFACE,
3096   KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS
3097 } KSPROPERTY_VIDMEM_TRANSPORT;
3098 
3099 #define DEFINE_KSPROPERTY_ITEM_DISPLAY_ADAPTER_GUID(GetHandler)		\
3100 	DEFINE_KSPROPERTY_ITEM(						\
3101 				KSPROPERTY_DISPLAY_ADAPTER_GUID,	\
3102 				(GetHandler),				\
3103 				sizeof(KSPROPERTY),			\
3104 				sizeof(GUID),				\
3105 				NULL,NULL,0,NULL,NULL,0)
3106 #define DEFINE_KSPROPERTY_PREFERRED_CAPTURE_SURFACE(GetHandler)		\
3107 	DEFINE_KSPROPERTY_ITEM(						\
3108 				KSPROPERTY_PREFERRED_CAPTURE_SURFACE,	\
3109 				(GetHandler),				\
3110 				sizeof(KSPROPERTY),			\
3111 				sizeof(CAPTURE_MEMORY_ALLOCATION_FLAGS),\
3112 				NULL,NULL,0,NULL,NULL,0)
3113 #define DEFINE_KSPROPERTY_CURRENT_CAPTURE_SURFACE(GetHandler,SetHandler)\
3114 	DEFINE_KSPROPERTY_ITEM(						\
3115 				KSPROPERTY_CURRENT_CAPTURE_SURFACE,	\
3116 				(GetHandler),				\
3117 				sizeof(KSPROPERTY),			\
3118 				sizeof(CAPTURE_MEMORY_ALLOCATION_FLAGS),\
3119 				(SetHandler),NULL,0,NULL,NULL,0)
3120 #define DEFINE_KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS(GetHandler)\
3121 	DEFINE_KSPROPERTY_ITEM(						\
3122 				KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS,\
3123 				(GetHandler),				\
3124 				sizeof(VRAM_SURFACE_INFO_PROPERTY_S),	\
3125 				sizeof(DWORD),				\
3126 				NULL,NULL,0,NULL,NULL,0)
3127 
3128 typedef struct {
3129   UINT_PTR hSurface;
3130   LONGLONG VramPhysicalAddress;
3131   DWORD cbCaptured;
3132   DWORD dwWidth;
3133   DWORD dwHeight;
3134   DWORD dwLinearSize;
3135   LONG lPitch;
3136   ULONGLONG ullReserved[16];
3137 } VRAM_SURFACE_INFO,*PVRAM_SURFACE_INFO;
3138 
3139 typedef struct {
3140   KSPROPERTY Property;
3141   PVRAM_SURFACE_INFO pVramSurfaceInfo;
3142 } VRAM_SURFACE_INFO_PROPERTY_S,*PVRAM_SURFACE_INFO_PROPERTY_S;
3143 
3144 
3145 #define KS_VIDEO_FLAG_FRAME		__MSABI_LONG(0x0000)
3146 #define KS_VIDEO_FLAG_FIELD1		__MSABI_LONG(0x0001)
3147 #define KS_VIDEO_FLAG_FIELD2		__MSABI_LONG(0x0002)
3148 
3149 #define KS_VIDEO_FLAG_I_FRAME		__MSABI_LONG(0x0000)
3150 #define KS_VIDEO_FLAG_P_FRAME		__MSABI_LONG(0x0010)
3151 #define KS_VIDEO_FLAG_B_FRAME		__MSABI_LONG(0x0020)
3152 
3153 typedef struct tagKS_FRAME_INFO {
3154   ULONG ExtendedHeaderSize;
3155   DWORD dwFrameFlags;
3156   LONGLONG PictureNumber;
3157   LONGLONG DropCount;
3158   HANDLE hDirectDraw;
3159   HANDLE hSurfaceHandle;
3160   RECT DirectDrawRect;
3161 
3162   DWORD Reserved1;
3163   DWORD Reserved2;
3164   DWORD Reserved3;
3165   DWORD Reserved4;
3166 } KS_FRAME_INFO,*PKS_FRAME_INFO;
3167 
3168 #define KS_VBI_FLAG_FIELD1		__MSABI_LONG(0x0001)
3169 #define KS_VBI_FLAG_FIELD2		__MSABI_LONG(0x0002)
3170 
3171 #define KS_VBI_FLAG_MV_PRESENT		__MSABI_LONG(0x0100)
3172 #define KS_VBI_FLAG_MV_HARDWARE		__MSABI_LONG(0x0200)
3173 #define KS_VBI_FLAG_MV_DETECTED		__MSABI_LONG(0x0400)
3174 
3175 #define KS_VBI_FLAG_TVTUNER_CHANGE	__MSABI_LONG(0x0010)
3176 #define KS_VBI_FLAG_VBIINFOHEADER_CHANGE __MSABI_LONG(0x0020)
3177 
3178 typedef struct tagKS_VBI_FRAME_INFO {
3179   ULONG ExtendedHeaderSize;
3180   DWORD dwFrameFlags;
3181   LONGLONG PictureNumber;
3182   LONGLONG DropCount;
3183   DWORD dwSamplingFrequency;
3184   KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo;
3185   KS_VBIINFOHEADER VBIInfoHeader;
3186 } KS_VBI_FRAME_INFO,*PKS_VBI_FRAME_INFO;
3187 
3188 typedef enum
3189 {
3190   KS_AnalogVideo_None = 0x00000000,
3191   KS_AnalogVideo_NTSC_M = 0x00000001,
3192   KS_AnalogVideo_NTSC_M_J = 0x00000002,
3193   KS_AnalogVideo_NTSC_433 = 0x00000004,
3194   KS_AnalogVideo_PAL_B = 0x00000010,
3195   KS_AnalogVideo_PAL_D = 0x00000020,
3196   KS_AnalogVideo_PAL_G = 0x00000040,
3197   KS_AnalogVideo_PAL_H = 0x00000080,
3198   KS_AnalogVideo_PAL_I = 0x00000100,
3199   KS_AnalogVideo_PAL_M = 0x00000200,
3200   KS_AnalogVideo_PAL_N = 0x00000400,
3201   KS_AnalogVideo_PAL_60 = 0x00000800,
3202   KS_AnalogVideo_SECAM_B = 0x00001000,
3203   KS_AnalogVideo_SECAM_D = 0x00002000,
3204   KS_AnalogVideo_SECAM_G = 0x00004000,
3205   KS_AnalogVideo_SECAM_H = 0x00008000,
3206   KS_AnalogVideo_SECAM_K = 0x00010000,
3207   KS_AnalogVideo_SECAM_K1 = 0x00020000,
3208   KS_AnalogVideo_SECAM_L = 0x00040000,
3209   KS_AnalogVideo_SECAM_L1 = 0x00080000,
3210   KS_AnalogVideo_PAL_N_COMBO = 0x00100000
3211 } KS_AnalogVideoStandard;
3212 
3213 #define KS_AnalogVideo_NTSC_Mask	0x00000007
3214 #define KS_AnalogVideo_PAL_Mask		0x00100FF0
3215 #define KS_AnalogVideo_SECAM_Mask	0x000FF000
3216 
3217 #define STATIC_PROPSETID_ALLOCATOR_CONTROL				\
3218 	0x53171960,0x148e,0x11d2,0x99,0x79,0x0,0x0,0xc0,0xcc,0x16,0xba
3219 DEFINE_GUIDSTRUCT("53171960-148E-11d2-9979-0000C0CC16BA",PROPSETID_ALLOCATOR_CONTROL);
3220 #define PROPSETID_ALLOCATOR_CONTROL DEFINE_GUIDNAMED(PROPSETID_ALLOCATOR_CONTROL)
3221 
3222 typedef enum {
3223   KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT,
3224   KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE,
3225   KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS,
3226   KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE
3227 } KSPROPERTY_ALLOCATOR_CONTROL;
3228 
3229 typedef struct {
3230   ULONG CX;
3231   ULONG CY;
3232 } KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S,*PKSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S;
3233 
3234 typedef struct {
3235   ULONG InterleavedCapSupported;
3236 } KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S,*PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S;
3237 
3238 typedef struct {
3239   ULONG InterleavedCapPossible;
3240 } KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S,*PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S;
3241 
3242 #define STATIC_PROPSETID_VIDCAP_VIDEOPROCAMP				\
3243 	0xC6E13360,0x30AC,0x11d0,0xa1,0x8c,0x00,0xA0,0xC9,0x11,0x89,0x56
3244 DEFINE_GUIDSTRUCT("C6E13360-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEOPROCAMP);
3245 #define PROPSETID_VIDCAP_VIDEOPROCAMP DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOPROCAMP)
3246 
3247 typedef enum {
3248   KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS,
3249   KSPROPERTY_VIDEOPROCAMP_CONTRAST,
3250   KSPROPERTY_VIDEOPROCAMP_HUE,
3251   KSPROPERTY_VIDEOPROCAMP_SATURATION,
3252   KSPROPERTY_VIDEOPROCAMP_SHARPNESS,
3253   KSPROPERTY_VIDEOPROCAMP_GAMMA,
3254   KSPROPERTY_VIDEOPROCAMP_COLORENABLE,
3255   KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE,
3256   KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION,
3257   KSPROPERTY_VIDEOPROCAMP_GAIN,
3258   KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER,
3259   KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT,
3260   KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT,
3261   KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY
3262 } KSPROPERTY_VIDCAP_VIDEOPROCAMP;
3263 
3264 typedef struct {
3265   KSPROPERTY Property;
3266   LONG Value;
3267   ULONG Flags;
3268   ULONG Capabilities;
3269 } KSPROPERTY_VIDEOPROCAMP_S,*PKSPROPERTY_VIDEOPROCAMP_S;
3270 
3271 typedef struct {
3272   KSP_NODE NodeProperty;
3273   LONG Value;
3274   ULONG Flags;
3275   ULONG Capabilities;
3276 } KSPROPERTY_VIDEOPROCAMP_NODE_S,*PKSPROPERTY_VIDEOPROCAMP_NODE_S;
3277 
3278 typedef struct {
3279   KSPROPERTY Property;
3280   LONG Value1;
3281   ULONG Flags;
3282   ULONG Capabilities;
3283   LONG Value2;
3284 } KSPROPERTY_VIDEOPROCAMP_S2,*PKSPROPERTY_VIDEOPROCAMP_S2;
3285 
3286 typedef struct {
3287   KSP_NODE NodeProperty;
3288   LONG Value1;
3289   ULONG Flags;
3290   ULONG Capabilities;
3291   LONG Value2;
3292 } KSPROPERTY_VIDEOPROCAMP_NODE_S2,*PKSPROPERTY_VIDEOPROCAMP_NODE_S2;
3293 
3294 #define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO	0X0001L
3295 #define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL	0X0002L
3296 
3297 #define STATIC_PROPSETID_VIDCAP_SELECTOR				\
3298 	0x1ABDAECA,0x68B6,0x4F83,0x93,0x71,0xB4,0x13,0x90,0x7C,0x7B,0x9F
3299 DEFINE_GUIDSTRUCT("1ABDAECA-68B6-4F83-9371-B413907C7B9F",PROPSETID_VIDCAP_SELECTOR);
3300 #define PROPSETID_VIDCAP_SELECTOR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_SELECTOR)
3301 
3302 typedef enum {
3303   KSPROPERTY_SELECTOR_SOURCE_NODE_ID,
3304   KSPROPERTY_SELECTOR_NUM_SOURCES
3305 } KSPROPERTY_VIDCAP_SELECTOR,*PKSPROPERTY_VIDCAP_SELECTOR;
3306 
3307 typedef struct {
3308   KSPROPERTY Property;
3309   LONG Value;
3310   ULONG Flags;
3311   ULONG Capabilities;
3312 } KSPROPERTY_SELECTOR_S,*PKSPROPERTY_SELECTOR_S;
3313 
3314 typedef struct {
3315   KSP_NODE NodeProperty;
3316   LONG Value;
3317   ULONG Flags;
3318   ULONG Capabilities;
3319 } KSPROPERTY_SELECTOR_NODE_S,*PKSPROPERTY_SELECTOR_NODE_S;
3320 
3321 #define STATIC_PROPSETID_TUNER						\
3322 	0x6a2e0605,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3323 DEFINE_GUIDSTRUCT("6a2e0605-28e4-11d0-a18c-00a0c9118956",PROPSETID_TUNER);
3324 #define PROPSETID_TUNER DEFINE_GUIDNAMED(PROPSETID_TUNER)
3325 
3326 typedef enum {
3327   KSPROPERTY_TUNER_CAPS,
3328   KSPROPERTY_TUNER_MODE_CAPS,
3329   KSPROPERTY_TUNER_MODE,
3330   KSPROPERTY_TUNER_STANDARD,
3331   KSPROPERTY_TUNER_FREQUENCY,
3332   KSPROPERTY_TUNER_INPUT,
3333   KSPROPERTY_TUNER_STATUS,
3334   KSPROPERTY_TUNER_IF_MEDIUM
3335 } KSPROPERTY_TUNER;
3336 
3337 typedef enum {
3338   KSPROPERTY_TUNER_MODE_TV = 0X0001,
3339   KSPROPERTY_TUNER_MODE_FM_RADIO = 0X0002,
3340   KSPROPERTY_TUNER_MODE_AM_RADIO = 0X0004,
3341   KSPROPERTY_TUNER_MODE_DSS = 0X0008,
3342   KSPROPERTY_TUNER_MODE_ATSC = 0X0010
3343 } KSPROPERTY_TUNER_MODES;
3344 
3345 typedef enum {
3346   KS_TUNER_TUNING_EXACT = 1,
3347   KS_TUNER_TUNING_FINE,
3348   KS_TUNER_TUNING_COARSE
3349 } KS_TUNER_TUNING_FLAGS;
3350 
3351 typedef enum {
3352   KS_TUNER_STRATEGY_PLL = 0X01,
3353   KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0X02,
3354   KS_TUNER_STRATEGY_DRIVER_TUNES = 0X04
3355 } KS_TUNER_STRATEGY;
3356 
3357 typedef struct {
3358   KSPROPERTY Property;
3359   ULONG ModesSupported;
3360   KSPIN_MEDIUM VideoMedium;
3361   KSPIN_MEDIUM TVAudioMedium;
3362   KSPIN_MEDIUM RadioAudioMedium;
3363 } KSPROPERTY_TUNER_CAPS_S,*PKSPROPERTY_TUNER_CAPS_S;
3364 
3365 typedef struct {
3366   KSPROPERTY Property;
3367   KSPIN_MEDIUM IFMedium;
3368 } KSPROPERTY_TUNER_IF_MEDIUM_S,*PKSPROPERTY_TUNER_IF_MEDIUM_S;
3369 
3370 typedef struct {
3371   KSPROPERTY Property;
3372   ULONG Mode;
3373   ULONG StandardsSupported;
3374   ULONG MinFrequency;
3375   ULONG MaxFrequency;
3376   ULONG TuningGranularity;
3377   ULONG NumberOfInputs;
3378   ULONG SettlingTime;
3379   ULONG Strategy;
3380 } KSPROPERTY_TUNER_MODE_CAPS_S,*PKSPROPERTY_TUNER_MODE_CAPS_S;
3381 
3382 typedef struct {
3383   KSPROPERTY Property;
3384   ULONG Mode;
3385 } KSPROPERTY_TUNER_MODE_S,*PKSPROPERTY_TUNER_MODE_S;
3386 
3387 typedef struct {
3388   KSPROPERTY Property;
3389   ULONG Frequency;
3390   ULONG LastFrequency;
3391   ULONG TuningFlags;
3392   ULONG VideoSubChannel;
3393   ULONG AudioSubChannel;
3394   ULONG Channel;
3395   ULONG Country;
3396 } KSPROPERTY_TUNER_FREQUENCY_S,*PKSPROPERTY_TUNER_FREQUENCY_S;
3397 
3398 typedef struct {
3399   KSPROPERTY Property;
3400   ULONG Standard;
3401 } KSPROPERTY_TUNER_STANDARD_S,*PKSPROPERTY_TUNER_STANDARD_S;
3402 
3403 typedef struct {
3404   KSPROPERTY Property;
3405   ULONG InputIndex;
3406 } KSPROPERTY_TUNER_INPUT_S,*PKSPROPERTY_TUNER_INPUT_S;
3407 
3408 typedef struct {
3409   KSPROPERTY Property;
3410   ULONG CurrentFrequency;
3411   ULONG PLLOffset;
3412   ULONG SignalStrength;
3413   ULONG Busy;
3414 } KSPROPERTY_TUNER_STATUS_S,*PKSPROPERTY_TUNER_STATUS_S;
3415 
3416 #define STATIC_EVENTSETID_TUNER						\
3417 	0x6a2e0606,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3418 DEFINE_GUIDSTRUCT("6a2e0606-28e4-11d0-a18c-00a0c9118956",EVENTSETID_TUNER);
3419 #define EVENTSETID_TUNER DEFINE_GUIDNAMED(EVENTSETID_TUNER)
3420 
3421 typedef enum {
3422   KSEVENT_TUNER_CHANGED
3423 } KSEVENT_TUNER;
3424 
3425 #define STATIC_KSNODETYPE_VIDEO_STREAMING				\
3426 	0xDFF229E1,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3427 DEFINE_GUIDSTRUCT("DFF229E1-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_STREAMING);
3428 #define KSNODETYPE_VIDEO_STREAMING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_STREAMING)
3429 
3430 #define STATIC_KSNODETYPE_VIDEO_INPUT_TERMINAL				\
3431 	0xDFF229E2,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3432 DEFINE_GUIDSTRUCT("DFF229E2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_INPUT_TERMINAL);
3433 #define KSNODETYPE_VIDEO_INPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_TERMINAL)
3434 
3435 #define STATIC_KSNODETYPE_VIDEO_OUTPUT_TERMINAL				\
3436 	0xDFF229E3,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3437 DEFINE_GUIDSTRUCT("DFF229E3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_OUTPUT_TERMINAL);
3438 #define KSNODETYPE_VIDEO_OUTPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_TERMINAL)
3439 
3440 #define STATIC_KSNODETYPE_VIDEO_SELECTOR				\
3441 	0xDFF229E4,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3442 DEFINE_GUIDSTRUCT("DFF229E4-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_SELECTOR);
3443 #define KSNODETYPE_VIDEO_SELECTOR DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_SELECTOR)
3444 
3445 #define STATIC_KSNODETYPE_VIDEO_PROCESSING				\
3446 	0xDFF229E5,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3447 DEFINE_GUIDSTRUCT("DFF229E5-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_PROCESSING);
3448 #define KSNODETYPE_VIDEO_PROCESSING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_PROCESSING)
3449 
3450 #define STATIC_KSNODETYPE_VIDEO_CAMERA_TERMINAL				\
3451 	0xDFF229E6,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3452 DEFINE_GUIDSTRUCT("DFF229E6-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_CAMERA_TERMINAL);
3453 #define KSNODETYPE_VIDEO_CAMERA_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_CAMERA_TERMINAL)
3454 
3455 #define STATIC_KSNODETYPE_VIDEO_INPUT_MTT				\
3456 	0xDFF229E7,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3457 DEFINE_GUIDSTRUCT("DFF229E7-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_INPUT_MTT);
3458 #define KSNODETYPE_VIDEO_INPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_MTT)
3459 
3460 #define STATIC_KSNODETYPE_VIDEO_OUTPUT_MTT				\
3461 	0xDFF229E8,0xF70F,0x11D0,0xB9,0x17,0x00,0xA0,0xC9,0x22,0x31,0x96
3462 DEFINE_GUIDSTRUCT("DFF229E8-F70F-11D0-B917-00A0C9223196",KSNODETYPE_VIDEO_OUTPUT_MTT);
3463 #define KSNODETYPE_VIDEO_OUTPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_MTT)
3464 
3465 #define STATIC_PROPSETID_VIDCAP_VIDEOENCODER				\
3466 	0x6a2e0610,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3467 DEFINE_GUIDSTRUCT("6a2e0610-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_VIDEOENCODER);
3468 #define PROPSETID_VIDCAP_VIDEOENCODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOENCODER)
3469 
3470 typedef enum {
3471   KSPROPERTY_VIDEOENCODER_CAPS,
3472   KSPROPERTY_VIDEOENCODER_STANDARD,
3473   KSPROPERTY_VIDEOENCODER_COPYPROTECTION,
3474   KSPROPERTY_VIDEOENCODER_CC_ENABLE
3475 } KSPROPERTY_VIDCAP_VIDEOENCODER;
3476 
3477 typedef struct {
3478   KSPROPERTY Property;
3479   LONG Value;
3480   ULONG Flags;
3481   ULONG Capabilities;
3482 } KSPROPERTY_VIDEOENCODER_S,*PKSPROPERTY_VIDEOENCODER_S;
3483 
3484 #define STATIC_PROPSETID_VIDCAP_VIDEODECODER				\
3485 	0xC6E13350,0x30AC,0x11d0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56
3486 DEFINE_GUIDSTRUCT("C6E13350-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEODECODER);
3487 #define PROPSETID_VIDCAP_VIDEODECODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEODECODER)
3488 
3489 typedef enum {
3490   KSPROPERTY_VIDEODECODER_CAPS,
3491   KSPROPERTY_VIDEODECODER_STANDARD,
3492   KSPROPERTY_VIDEODECODER_STATUS,
3493   KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE,
3494   KSPROPERTY_VIDEODECODER_VCR_TIMING
3495 } KSPROPERTY_VIDCAP_VIDEODECODER;
3496 
3497 typedef enum {
3498   KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = 0X0001,
3499   KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = 0X0002,
3500   KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = 0X0004
3501 } KS_VIDEODECODER_FLAGS;
3502 
3503 typedef struct {
3504   KSPROPERTY Property;
3505   ULONG StandardsSupported;
3506   ULONG Capabilities;
3507   ULONG SettlingTime;
3508   ULONG HSyncPerVSync;
3509 } KSPROPERTY_VIDEODECODER_CAPS_S,*PKSPROPERTY_VIDEODECODER_CAPS_S;
3510 
3511 typedef struct {
3512   KSPROPERTY Property;
3513   ULONG NumberOfLines;
3514   ULONG SignalLocked;
3515 } KSPROPERTY_VIDEODECODER_STATUS_S,*PKSPROPERTY_VIDEODECODER_STATUS_S;
3516 
3517 typedef struct {
3518   KSPROPERTY Property;
3519   ULONG Value;
3520 } KSPROPERTY_VIDEODECODER_S,*PKSPROPERTY_VIDEODECODER_S;
3521 
3522 #define STATIC_EVENTSETID_VIDEODECODER					\
3523 	0x6a2e0621,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3524 DEFINE_GUIDSTRUCT("6a2e0621-28e4-11d0-a18c-00a0c9118956",EVENTSETID_VIDEODECODER);
3525 #define EVENTSETID_VIDEODECODER DEFINE_GUIDNAMED(EVENTSETID_VIDEODECODER)
3526 
3527 typedef enum {
3528   KSEVENT_VIDEODECODER_CHANGED
3529 } KSEVENT_VIDEODECODER;
3530 
3531 #define STATIC_PROPSETID_VIDCAP_CAMERACONTROL				\
3532 	0xC6E13370,0x30AC,0x11d0,0xa1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56
3533 DEFINE_GUIDSTRUCT("C6E13370-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_CAMERACONTROL);
3534 #define PROPSETID_VIDCAP_CAMERACONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CAMERACONTROL)
3535 
3536 typedef enum {
3537   KSPROPERTY_CAMERACONTROL_PAN,
3538   KSPROPERTY_CAMERACONTROL_TILT,
3539   KSPROPERTY_CAMERACONTROL_ROLL,
3540   KSPROPERTY_CAMERACONTROL_ZOOM,
3541   KSPROPERTY_CAMERACONTROL_EXPOSURE,
3542   KSPROPERTY_CAMERACONTROL_IRIS,
3543   KSPROPERTY_CAMERACONTROL_FOCUS,
3544   KSPROPERTY_CAMERACONTROL_SCANMODE,
3545   KSPROPERTY_CAMERACONTROL_PRIVACY,
3546   KSPROPERTY_CAMERACONTROL_PANTILT,
3547   KSPROPERTY_CAMERACONTROL_PAN_RELATIVE,
3548   KSPROPERTY_CAMERACONTROL_TILT_RELATIVE,
3549   KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE,
3550   KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE,
3551   KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE,
3552   KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE,
3553   KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE,
3554   KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE,
3555   KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH
3556 } KSPROPERTY_VIDCAP_CAMERACONTROL;
3557 
3558 typedef struct {
3559   KSPROPERTY Property;
3560   LONG Value;
3561   ULONG Flags;
3562   ULONG Capabilities;
3563 } KSPROPERTY_CAMERACONTROL_S,*PKSPROPERTY_CAMERACONTROL_S;
3564 
3565 typedef struct {
3566   KSP_NODE NodeProperty;
3567   LONG Value;
3568   ULONG Flags;
3569   ULONG Capabilities;
3570 } KSPROPERTY_CAMERACONTROL_NODE_S,PKSPROPERTY_CAMERACONTROL_NODE_S;
3571 
3572 typedef struct {
3573   KSPROPERTY Property;
3574   LONG Value1;
3575   ULONG Flags;
3576   ULONG Capabilities;
3577   LONG Value2;
3578 } KSPROPERTY_CAMERACONTROL_S2,*PKSPROPERTY_CAMERACONTROL_S2;
3579 
3580 typedef struct {
3581   KSP_NODE NodeProperty;
3582   LONG Value1;
3583   ULONG Flags;
3584   ULONG Capabilities;
3585   LONG Value2;
3586 } KSPROPERTY_CAMERACONTROL_NODE_S2,*PKSPROPERTY_CAMERACONTROL_NODE_S2;
3587 
3588 typedef struct {
3589   KSPROPERTY Property;
3590   LONG lOcularFocalLength;
3591   LONG lObjectiveFocalLengthMin;
3592   LONG lObjectiveFocalLengthMax;
3593 } KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S,*PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S;
3594 
3595 typedef struct {
3596   KSNODEPROPERTY NodeProperty;
3597   LONG lOcularFocalLength;
3598   LONG lObjectiveFocalLengthMin;
3599   LONG lObjectiveFocalLengthMax;
3600 } KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S,*PKSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S;
3601 
3602 #define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO	0X0001L
3603 #define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL	0X0002L
3604 
3605 #define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE	0X0000L
3606 #define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE	0X0010L
3607 
3608 #ifndef __EDevCtrl__
3609 #define __EDevCtrl__
3610 
3611 #define STATIC_PROPSETID_EXT_DEVICE					\
3612 	0xB5730A90,0x1A2C,0x11cf,0x8c,0x23,0x00,0xAA,0x00,0x6B,0x68,0x14
3613 DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814",PROPSETID_EXT_DEVICE);
3614 #define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE)
3615 
3616 typedef enum {
3617   KSPROPERTY_EXTDEVICE_ID,
3618   KSPROPERTY_EXTDEVICE_VERSION,
3619   KSPROPERTY_EXTDEVICE_POWER_STATE,
3620   KSPROPERTY_EXTDEVICE_PORT,
3621   KSPROPERTY_EXTDEVICE_CAPABILITIES
3622 } KSPROPERTY_EXTDEVICE;
3623 
3624 typedef struct tagDEVCAPS{
3625   LONG CanRecord;
3626   LONG CanRecordStrobe;
3627   LONG HasAudio;
3628   LONG HasVideo;
3629   LONG UsesFiles;
3630   LONG CanSave;
3631   LONG DeviceType;
3632   LONG TCRead;
3633   LONG TCWrite;
3634   LONG CTLRead;
3635   LONG IndexRead;
3636   LONG Preroll;
3637   LONG Postroll;
3638   LONG SyncAcc;
3639   LONG NormRate;
3640   LONG CanPreview;
3641   LONG CanMonitorSrc;
3642   LONG CanTest;
3643   LONG VideoIn;
3644   LONG AudioIn;
3645   LONG Calibrate;
3646   LONG SeekType;
3647   LONG SimulatedHardware;
3648 } DEVCAPS,*PDEVCAPS;
3649 
3650 typedef struct {
3651   KSPROPERTY Property;
3652   union {
3653     DEVCAPS Capabilities;
3654     ULONG DevPort;
3655     ULONG PowerState;
3656     WCHAR pawchString[MAX_PATH];
3657     DWORD NodeUniqueID[2];
3658   } u;
3659 } KSPROPERTY_EXTDEVICE_S,*PKSPROPERTY_EXTDEVICE_S;
3660 
3661 #define STATIC_PROPSETID_EXT_TRANSPORT					\
3662 	0xA03CD5F0,0x3045,0x11cf,0x8c,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14
3663 DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814",PROPSETID_EXT_TRANSPORT);
3664 #define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT)
3665 
3666 typedef enum {
3667   KSPROPERTY_EXTXPORT_CAPABILITIES,
3668   KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE,
3669   KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE,
3670   KSPROPERTY_EXTXPORT_LOAD_MEDIUM,
3671   KSPROPERTY_EXTXPORT_MEDIUM_INFO,
3672   KSPROPERTY_EXTXPORT_STATE,
3673   KSPROPERTY_EXTXPORT_STATE_NOTIFY,
3674   KSPROPERTY_EXTXPORT_TIMECODE_SEARCH,
3675   KSPROPERTY_EXTXPORT_ATN_SEARCH,
3676   KSPROPERTY_EXTXPORT_RTC_SEARCH,
3677   KSPROPERTY_RAW_AVC_CMD
3678 } KSPROPERTY_EXTXPORT;
3679 
3680 typedef struct tagTRANSPORTSTATUS {
3681   LONG Mode;
3682   LONG LastError;
3683   LONG RecordInhibit;
3684   LONG ServoLock;
3685   LONG MediaPresent;
3686   LONG MediaLength;
3687   LONG MediaSize;
3688   LONG MediaTrackCount;
3689   LONG MediaTrackLength;
3690   LONG MediaTrackSide;
3691   LONG MediaType;
3692   LONG LinkMode;
3693   LONG NotifyOn;
3694 } TRANSPORTSTATUS,*PTRANSPORTSTATUS;
3695 
3696 typedef struct tagTRANSPORTBASICPARMS {
3697   LONG TimeFormat;
3698   LONG TimeReference;
3699   LONG Superimpose;
3700   LONG EndStopAction;
3701   LONG RecordFormat;
3702   LONG StepFrames;
3703   LONG SetpField;
3704   LONG Preroll;
3705   LONG RecPreroll;
3706   LONG Postroll;
3707   LONG EditDelay;
3708   LONG PlayTCDelay;
3709   LONG RecTCDelay;
3710   LONG EditField;
3711   LONG FrameServo;
3712   LONG ColorFrameServo;
3713   LONG ServoRef;
3714   LONG WarnGenlock;
3715   LONG SetTracking;
3716   TCHAR VolumeName[40];
3717   LONG Ballistic[20];
3718   LONG Speed;
3719   LONG CounterFormat;
3720   LONG TunerChannel;
3721   LONG TunerNumber;
3722   LONG TimerEvent;
3723   LONG TimerStartDay;
3724   LONG TimerStartTime;
3725   LONG TimerStopDay;
3726   LONG TimerStopTime;
3727 } TRANSPORTBASICPARMS,*PTRANSPORTBASICPARMS;
3728 
3729 typedef struct tagTRANSPORTVIDEOPARMS {
3730   LONG OutputMode;
3731   LONG Input;
3732 } TRANSPORTVIDEOPARMS,*PTRANSPORTVIDEOPARMS;
3733 
3734 typedef struct tagTRANSPORTAUDIOPARMS {
3735   LONG EnableOutput;
3736   LONG EnableRecord;
3737   LONG EnableSelsync;
3738   LONG Input;
3739   LONG MonitorSource;
3740 } TRANSPORTAUDIOPARMS,*PTRANSPORTAUDIOPARMS;
3741 
3742 typedef struct {
3743   WINBOOL MediaPresent;
3744   ULONG MediaType;
3745   WINBOOL RecordInhibit;
3746 } MEDIUM_INFO,*PMEDIUM_INFO;
3747 
3748 typedef struct {
3749   ULONG Mode;
3750   ULONG State;
3751 } TRANSPORT_STATE,*PTRANSPORT_STATE;
3752 
3753 typedef struct {
3754   KSPROPERTY Property;
3755   union {
3756     ULONG Capabilities;
3757     ULONG SignalMode;
3758     ULONG LoadMedium;
3759     MEDIUM_INFO MediumInfo;
3760     TRANSPORT_STATE XPrtState;
3761     struct {
3762       BYTE frame;
3763       BYTE second;
3764       BYTE minute;
3765       BYTE hour;
3766     } Timecode;
3767     DWORD dwTimecode;
3768     DWORD dwAbsTrackNumber;
3769     struct {
3770       ULONG PayloadSize;
3771       BYTE Payload[512];
3772     } RawAVC;
3773   } u;
3774 } KSPROPERTY_EXTXPORT_S,*PKSPROPERTY_EXTXPORT_S;
3775 
3776 typedef struct {
3777   KSP_NODE NodeProperty;
3778   union {
3779     ULONG Capabilities;
3780     ULONG SignalMode;
3781     ULONG LoadMedium;
3782     MEDIUM_INFO MediumInfo;
3783     TRANSPORT_STATE XPrtState;
3784     struct {
3785       BYTE frame;
3786       BYTE second;
3787       BYTE minute;
3788       BYTE hour;
3789     } Timecode;
3790     DWORD dwTimecode;
3791     DWORD dwAbsTrackNumber;
3792     struct {
3793       ULONG PayloadSize;
3794       BYTE Payload[512];
3795     } RawAVC;
3796   } u;
3797 } KSPROPERTY_EXTXPORT_NODE_S,*PKSPROPERTY_EXTXPORT_NODE_S;
3798 
3799 #define STATIC_PROPSETID_TIMECODE_READER				\
3800 	0x9B496CE1,0x811B,0x11cf,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14
3801 DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814",PROPSETID_TIMECODE_READER);
3802 #define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER)
3803 
3804 typedef enum {
3805   KSPROPERTY_TIMECODE_READER,
3806   KSPROPERTY_ATN_READER,
3807   KSPROPERTY_RTC_READER
3808 } KSPROPERTY_TIMECODE;
3809 
3810 #ifndef TIMECODE_DEFINED
3811 #define TIMECODE_DEFINED
3812 typedef union _timecode {
3813   struct {
3814     WORD wFrameRate;
3815     WORD wFrameFract;
3816     DWORD dwFrames;
3817   };
3818   DWORDLONG qw;
3819 } TIMECODE;
3820 typedef TIMECODE *PTIMECODE;
3821 
3822 typedef struct tagTIMECODE_SAMPLE {
3823   LONGLONG qwTick;
3824   TIMECODE timecode;
3825   DWORD dwUser;
3826   DWORD dwFlags;
3827 } TIMECODE_SAMPLE;
3828 
3829 typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE;
3830 #endif /* TIMECODE_DEFINED */
3831 
3832 typedef struct {
3833   KSPROPERTY Property;
3834   TIMECODE_SAMPLE TimecodeSamp;
3835 } KSPROPERTY_TIMECODE_S,*PKSPROPERTY_TIMECODE_S;
3836 
3837 typedef struct {
3838   KSP_NODE NodeProperty;
3839   TIMECODE_SAMPLE TimecodeSamp;
3840 } KSPROPERTY_TIMECODE_NODE_S,*PKSPROPERTY_TIMECODE_NODE_S;
3841 
3842 #define STATIC_KSEVENTSETID_EXTDEV_Command				\
3843 	0x109c7988,0xb3cb,0x11d2,0xb4,0x8e,0x00,0x60,0x97,0xb3,0x39,0x1b
3844 DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b",KSEVENTSETID_EXTDEV_Command);
3845 #define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command)
3846 
3847 typedef enum {
3848   KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY,
3849   KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY,
3850   KSEVENT_EXTDEV_COMMAND_BUSRESET,
3851   KSEVENT_EXTDEV_TIMECODE_UPDATE,
3852   KSEVENT_EXTDEV_OPERATION_MODE_UPDATE,
3853   KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE,
3854   KSEVENT_EXTDEV_NOTIFY_REMOVAL,
3855   KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE
3856 } KSEVENT_DEVCMD;
3857 #endif /* __EDevCtrl__ */
3858 
3859 #define STATIC_PROPSETID_VIDCAP_CROSSBAR				\
3860 	0x6a2e0640,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3861 DEFINE_GUIDSTRUCT("6a2e0640-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_CROSSBAR);
3862 #define PROPSETID_VIDCAP_CROSSBAR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CROSSBAR)
3863 
3864 typedef enum {
3865   KSPROPERTY_CROSSBAR_CAPS,
3866   KSPROPERTY_CROSSBAR_PININFO,
3867   KSPROPERTY_CROSSBAR_CAN_ROUTE,
3868   KSPROPERTY_CROSSBAR_ROUTE
3869 } KSPROPERTY_VIDCAP_CROSSBAR;
3870 
3871 typedef struct {
3872   KSPROPERTY Property;
3873   ULONG NumberOfInputs;
3874   ULONG NumberOfOutputs;
3875 } KSPROPERTY_CROSSBAR_CAPS_S,*PKSPROPERTY_CROSSBAR_CAPS_S;
3876 
3877 typedef struct {
3878   KSPROPERTY Property;
3879   KSPIN_DATAFLOW Direction;
3880   ULONG Index;
3881   ULONG PinType;
3882   ULONG RelatedPinIndex;
3883   KSPIN_MEDIUM Medium;
3884 } KSPROPERTY_CROSSBAR_PININFO_S,*PKSPROPERTY_CROSSBAR_PININFO_S;
3885 
3886 typedef struct {
3887   KSPROPERTY Property;
3888   ULONG IndexInputPin;
3889   ULONG IndexOutputPin;
3890   ULONG CanRoute;
3891 } KSPROPERTY_CROSSBAR_ROUTE_S,*PKSPROPERTY_CROSSBAR_ROUTE_S;
3892 
3893 #define STATIC_EVENTSETID_CROSSBAR					\
3894 	0x6a2e0641,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3895 DEFINE_GUIDSTRUCT("6a2e0641-28e4-11d0-a18c-00a0c9118956",EVENTSETID_CROSSBAR);
3896 #define EVENTSETID_CROSSBAR DEFINE_GUIDNAMED(EVENTSETID_CROSSBAR)
3897 
3898 typedef enum {
3899   KSEVENT_CROSSBAR_CHANGED
3900 } KSEVENT_CROSSBAR;
3901 
3902 typedef enum {
3903   KS_PhysConn_Video_Tuner = 1,
3904   KS_PhysConn_Video_Composite,
3905   KS_PhysConn_Video_SVideo,
3906   KS_PhysConn_Video_RGB,
3907   KS_PhysConn_Video_YRYBY,
3908   KS_PhysConn_Video_SerialDigital,
3909   KS_PhysConn_Video_ParallelDigital,
3910   KS_PhysConn_Video_SCSI,
3911   KS_PhysConn_Video_AUX,
3912   KS_PhysConn_Video_1394,
3913   KS_PhysConn_Video_USB,
3914   KS_PhysConn_Video_VideoDecoder,
3915   KS_PhysConn_Video_VideoEncoder,
3916   KS_PhysConn_Video_SCART,
3917   KS_PhysConn_Audio_Tuner = 4096,
3918   KS_PhysConn_Audio_Line,
3919   KS_PhysConn_Audio_Mic,
3920   KS_PhysConn_Audio_AESDigital,
3921   KS_PhysConn_Audio_SPDIFDigital,
3922   KS_PhysConn_Audio_SCSI,
3923   KS_PhysConn_Audio_AUX,
3924   KS_PhysConn_Audio_1394,
3925   KS_PhysConn_Audio_USB,
3926   KS_PhysConn_Audio_AudioDecoder
3927 } KS_PhysicalConnectorType;
3928 
3929 #define STATIC_PROPSETID_VIDCAP_TVAUDIO					\
3930 	0x6a2e0650,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3931 DEFINE_GUIDSTRUCT("6a2e0650-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_TVAUDIO);
3932 #define PROPSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(PROPSETID_VIDCAP_TVAUDIO)
3933 
3934 typedef enum {
3935   KSPROPERTY_TVAUDIO_CAPS,
3936   KSPROPERTY_TVAUDIO_MODE,
3937   KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES
3938 } KSPROPERTY_VIDCAP_TVAUDIO;
3939 
3940 #define KS_TVAUDIO_MODE_MONO	0x0001
3941 #define KS_TVAUDIO_MODE_STEREO	0x0002
3942 #define KS_TVAUDIO_MODE_LANG_A	0x0010
3943 #define KS_TVAUDIO_MODE_LANG_B	0x0020
3944 #define KS_TVAUDIO_MODE_LANG_C	0x0040
3945 
3946 typedef struct {
3947   KSPROPERTY Property;
3948   ULONG Capabilities;
3949   KSPIN_MEDIUM InputMedium;
3950   KSPIN_MEDIUM OutputMedium;
3951 } KSPROPERTY_TVAUDIO_CAPS_S,*PKSPROPERTY_TVAUDIO_CAPS_S;
3952 
3953 typedef struct {
3954   KSPROPERTY Property;
3955   ULONG Mode;
3956 } KSPROPERTY_TVAUDIO_S,*PKSPROPERTY_TVAUDIO_S;
3957 
3958 #define STATIC_KSEVENTSETID_VIDCAP_TVAUDIO				\
3959 	0x6a2e0651,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
3960 DEFINE_GUIDSTRUCT("6a2e0651-28e4-11d0-a18c-00a0c9118956",KSEVENTSETID_VIDCAP_TVAUDIO);
3961 #define KSEVENTSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAP_TVAUDIO)
3962 
3963 typedef enum {
3964   KSEVENT_TVAUDIO_CHANGED
3965 } KSEVENT_TVAUDIO;
3966 
3967 #define STATIC_PROPSETID_VIDCAP_VIDEOCOMPRESSION			\
3968 	0xC6E13343,0x30AC,0x11d0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56
3969 DEFINE_GUIDSTRUCT("C6E13343-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_VIDEOCOMPRESSION);
3970 #define PROPSETID_VIDCAP_VIDEOCOMPRESSION DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCOMPRESSION)
3971 
3972 typedef enum {
3973   KSPROPERTY_VIDEOCOMPRESSION_GETINFO,
3974   KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE,
3975   KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME,
3976   KSPROPERTY_VIDEOCOMPRESSION_QUALITY,
3977   KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME,
3978   KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE,
3979   KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE
3980 } KSPROPERTY_VIDCAP_VIDEOCOMPRESSION;
3981 
3982 typedef enum {
3983   KS_CompressionCaps_CanQuality = 1,
3984   KS_CompressionCaps_CanCrunch = 2,
3985   KS_CompressionCaps_CanKeyFrame = 4,
3986   KS_CompressionCaps_CanBFrame = 8,
3987   KS_CompressionCaps_CanWindow = 0x10
3988 } KS_CompressionCaps;
3989 
3990 typedef enum {
3991   KS_StreamingHint_FrameInterval = 0x0100,
3992   KS_StreamingHint_KeyFrameRate = 0x0200,
3993   KS_StreamingHint_PFrameRate = 0x0400,
3994   KS_StreamingHint_CompQuality = 0x0800,
3995   KS_StreamingHint_CompWindowSize = 0x1000
3996 } KS_VideoStreamingHints;
3997 
3998 typedef struct {
3999   KSPROPERTY Property;
4000   ULONG StreamIndex;
4001   LONG DefaultKeyFrameRate;
4002   LONG DefaultPFrameRate;
4003   LONG DefaultQuality;
4004   LONG NumberOfQualitySettings;
4005   LONG Capabilities;
4006 } KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S,*PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S;
4007 
4008 typedef struct {
4009   KSPROPERTY Property;
4010   ULONG StreamIndex;
4011   LONG Value;
4012 } KSPROPERTY_VIDEOCOMPRESSION_S,*PKSPROPERTY_VIDEOCOMPRESSION_S;
4013 
4014 typedef struct {
4015   KSPROPERTY Property;
4016   ULONG StreamIndex;
4017   LONG Value;
4018   ULONG Flags;
4019 } KSPROPERTY_VIDEOCOMPRESSION_S1,*PKSPROPERTY_VIDEOCOMPRESSION_S1;
4020 
4021 #define STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY				\
4022 	0xe436eb7f,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70
4023 DEFINE_GUIDSTRUCT("e436eb7f-524f-11ce-9f53-0020af0ba770",KSDATAFORMAT_SUBTYPE_OVERLAY);
4024 #define KSDATAFORMAT_SUBTYPE_OVERLAY DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_OVERLAY)
4025 
4026 #define STATIC_KSPROPSETID_OverlayUpdate				\
4027 	0x490EA5CF,0x7681,0x11D1,0xA2,0x1C,0x00,0xA0,0xC9,0x22,0x31,0x96
4028 DEFINE_GUIDSTRUCT("490EA5CF-7681-11D1-A21C-00A0C9223196",KSPROPSETID_OverlayUpdate);
4029 #define KSPROPSETID_OverlayUpdate DEFINE_GUIDNAMED(KSPROPSETID_OverlayUpdate)
4030 
4031 typedef enum {
4032   KSPROPERTY_OVERLAYUPDATE_INTERESTS,
4033   KSPROPERTY_OVERLAYUPDATE_CLIPLIST = 0x1,
4034   KSPROPERTY_OVERLAYUPDATE_PALETTE = 0x2,
4035   KSPROPERTY_OVERLAYUPDATE_COLORKEY = 0x4,
4036   KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = 0x8,
4037   KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = 0x10,
4038   KSPROPERTY_OVERLAYUPDATE_COLORREF = 0x10000000
4039 } KSPROPERTY_OVERLAYUPDATE;
4040 
4041 typedef struct {
4042   ULONG PelsWidth;
4043   ULONG PelsHeight;
4044   ULONG BitsPerPel;
4045   WCHAR DeviceID[1];
4046 } KSDISPLAYCHANGE,*PKSDISPLAYCHANGE;
4047 
4048 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS(Handler)		\
4049 	DEFINE_KSPROPERTY_ITEM(						\
4050 				KSPROPERTY_OVERLAYUPDATE_INTERESTS,	\
4051 				(Handler),				\
4052 				sizeof(KSPROPERTY),			\
4053 				sizeof(ULONG),				\
4054 				NULL, NULL, 0, NULL, NULL, 0)
4055 
4056 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_PALETTE(Handler)		\
4057 	DEFINE_KSPROPERTY_ITEM(						\
4058 				KSPROPERTY_OVERLAYUPDATE_PALETTE,	\
4059 				NULL,					\
4060 				sizeof(KSPROPERTY),			\
4061 				0,					\
4062 				(Handler),				\
4063 				NULL, 0, NULL, NULL, 0)
4064 
4065 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORKEY(Handler)		\
4066 	DEFINE_KSPROPERTY_ITEM(						\
4067 				KSPROPERTY_OVERLAYUPDATE_COLORKEY,	\
4068 				NULL,					\
4069 				sizeof(KSPROPERTY),			\
4070 				sizeof(COLORKEY),			\
4071 				(Handler),				\
4072 				NULL, 0, NULL, NULL, 0)
4073 
4074 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_CLIPLIST(Handler)		\
4075 	DEFINE_KSPROPERTY_ITEM(						\
4076 				KSPROPERTY_OVERLAYUPDATE_CLIPLIST,	\
4077 				NULL,					\
4078 				sizeof(KSPROPERTY),			\
4079 				2 *sizeof(RECT) + sizeof(RGNDATAHEADER),\
4080 				(Handler),				\
4081 				NULL, 0, NULL, NULL, 0)
4082 
4083 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION(Handler)	\
4084 	DEFINE_KSPROPERTY_ITEM(						\
4085 				KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION,	\
4086 				NULL,					\
4087 				sizeof(KSPROPERTY),			\
4088 				2 *sizeof(RECT),			\
4089 				(Handler),				\
4090 				NULL, 0, NULL, NULL, 0)
4091 
4092 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE(Handler)	\
4093 	DEFINE_KSPROPERTY_ITEM(						\
4094 				KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE,	\
4095 				NULL,					\
4096 				sizeof(KSPROPERTY),			\
4097 				sizeof(KSDISPLAYCHANGE),		\
4098 				(Handler),				\
4099 				NULL, 0, NULL, NULL, 0)
4100 
4101 #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF(Handler)		\
4102 	DEFINE_KSPROPERTY_ITEM(						\
4103 				KSPROPERTY_OVERLAYUPDATE_COLORREF,	\
4104 				(Handler),				\
4105 				sizeof(KSPROPERTY),			\
4106 				sizeof(COLORREF),			\
4107 				NULL,					\
4108 				NULL, 0, NULL, NULL, 0)
4109 
4110 #define STATIC_PROPSETID_VIDCAP_VIDEOCONTROL				\
4111 	0x6a2e0670,0x28e4,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
4112 DEFINE_GUIDSTRUCT("6a2e0670-28e4-11d0-a18c-00a0c9118956",PROPSETID_VIDCAP_VIDEOCONTROL);
4113 #define PROPSETID_VIDCAP_VIDEOCONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCONTROL)
4114 
4115 typedef enum {
4116   KSPROPERTY_VIDEOCONTROL_CAPS,
4117   KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE,
4118   KSPROPERTY_VIDEOCONTROL_FRAME_RATES,
4119   KSPROPERTY_VIDEOCONTROL_MODE
4120 } KSPROPERTY_VIDCAP_VIDEOCONTROL;
4121 
4122 typedef enum {
4123   KS_VideoControlFlag_FlipHorizontal = 0x0001,
4124   KS_VideoControlFlag_FlipVertical = 0x0002,
4125   KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = 0x0010,
4126   KS_Obsolete_VideoControlFlag_Trigger = 0x0020,
4127   KS_VideoControlFlag_ExternalTriggerEnable = 0x0004,
4128   KS_VideoControlFlag_Trigger = 0x0008
4129 } KS_VideoControlFlags;
4130 
4131 typedef struct {
4132   KSPROPERTY Property;
4133   ULONG StreamIndex;
4134   ULONG VideoControlCaps;
4135 } KSPROPERTY_VIDEOCONTROL_CAPS_S,*PKSPROPERTY_VIDEOCONTROL_CAPS_S;
4136 
4137 typedef struct {
4138   KSPROPERTY Property;
4139   ULONG StreamIndex;
4140   LONG Mode;
4141 } KSPROPERTY_VIDEOCONTROL_MODE_S,*PKSPROPERTY_VIDEOCONTROL_MODE_S;
4142 
4143 typedef struct {
4144   KSPROPERTY Property;
4145   ULONG StreamIndex;
4146   ULONG RangeIndex;
4147   SIZE Dimensions;
4148   LONGLONG CurrentActualFrameRate;
4149   LONGLONG CurrentMaxAvailableFrameRate;
4150 } KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S,*PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S;
4151 
4152 typedef struct {
4153   KSPROPERTY Property;
4154   ULONG StreamIndex;
4155   ULONG RangeIndex;
4156   SIZE Dimensions;
4157 } KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S,*PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S;
4158 
4159 #define STATIC_PROPSETID_VIDCAP_DROPPEDFRAMES				\
4160 	0xC6E13344,0x30AC,0x11d0,0xa1,0x8c,0x00,0xa0,0xc9,0x11,0x89,0x56
4161 DEFINE_GUIDSTRUCT("C6E13344-30AC-11d0-A18C-00A0C9118956",PROPSETID_VIDCAP_DROPPEDFRAMES);
4162 #define PROPSETID_VIDCAP_DROPPEDFRAMES DEFINE_GUIDNAMED(PROPSETID_VIDCAP_DROPPEDFRAMES)
4163 
4164 typedef enum {
4165   KSPROPERTY_DROPPEDFRAMES_CURRENT
4166 } KSPROPERTY_VIDCAP_DROPPEDFRAMES;
4167 
4168 typedef struct {
4169   KSPROPERTY Property;
4170   LONGLONG PictureNumber;
4171   LONGLONG DropCount;
4172   ULONG AverageFrameSize;
4173 } KSPROPERTY_DROPPEDFRAMES_CURRENT_S,*PKSPROPERTY_DROPPEDFRAMES_CURRENT_S;
4174 
4175 #define STATIC_KSPROPSETID_VPConfig					\
4176 	0xbc29a660,0x30e3,0x11d0,0x9e,0x69,0x00,0xc0,0x4f,0xd7,0xc1,0x5b
4177 DEFINE_GUIDSTRUCT("bc29a660-30e3-11d0-9e69-00c04fd7c15b",KSPROPSETID_VPConfig);
4178 #define KSPROPSETID_VPConfig DEFINE_GUIDNAMED(KSPROPSETID_VPConfig)
4179 
4180 #define STATIC_KSPROPSETID_VPVBIConfig					\
4181 	0xec529b00,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a
4182 DEFINE_GUIDSTRUCT("ec529b00-1a1f-11d1-bad9-00609744111a",KSPROPSETID_VPVBIConfig);
4183 #define KSPROPSETID_VPVBIConfig DEFINE_GUIDNAMED(KSPROPSETID_VPVBIConfig)
4184 
4185 typedef enum {
4186   KSPROPERTY_VPCONFIG_NUMCONNECTINFO,
4187   KSPROPERTY_VPCONFIG_GETCONNECTINFO,
4188   KSPROPERTY_VPCONFIG_SETCONNECTINFO,
4189   KSPROPERTY_VPCONFIG_VPDATAINFO,
4190   KSPROPERTY_VPCONFIG_MAXPIXELRATE,
4191   KSPROPERTY_VPCONFIG_INFORMVPINPUT,
4192   KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT,
4193   KSPROPERTY_VPCONFIG_GETVIDEOFORMAT,
4194   KSPROPERTY_VPCONFIG_SETVIDEOFORMAT,
4195   KSPROPERTY_VPCONFIG_INVERTPOLARITY,
4196   KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY,
4197   KSPROPERTY_VPCONFIG_SCALEFACTOR,
4198   KSPROPERTY_VPCONFIG_DDRAWHANDLE,
4199   KSPROPERTY_VPCONFIG_VIDEOPORTID,
4200   KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE,
4201   KSPROPERTY_VPCONFIG_SURFACEPARAMS
4202 } KSPROPERTY_VPCONFIG;
4203 
4204 #define STATIC_CLSID_KsIBasicAudioInterfaceHandler			\
4205 	0xb9f8ac3e,0x0f71,0x11d2,0xb7,0x2c,0x00,0xc0,0x4f,0xb6,0xbd,0x3d
4206 DEFINE_GUIDSTRUCT("b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d",CLSID_KsIBasicAudioInterfaceHandler);
4207 #define CLSID_KsIBasicAudioInterfaceHandler DEFINE_GUIDNAMED(CLSID_KsIBasicAudioInterfaceHandler)
4208 
4209 #ifdef __IVPType__
4210 typedef struct {
4211   AMVPSIZE Size;
4212   DWORD MaxPixelsPerSecond;
4213   DWORD Reserved;
4214 } KSVPMAXPIXELRATE,*PKSVPMAXPIXELRATE;
4215 
4216 typedef struct {
4217   KSPROPERTY Property;
4218   AMVPSIZE Size;
4219 } KSVPSIZE_PROP,*PKSVPSIZE_PROP;
4220 
4221 typedef struct {
4222   DWORD dwPitch;
4223   DWORD dwXOrigin;
4224   DWORD dwYOrigin;
4225 } KSVPSURFACEPARAMS,*PKSVPSURFACEPARAMS;
4226 #else /* __IVPType__ */
4227 
4228 #ifndef __DDRAW_INCLUDED__
4229 #define DDPF_FOURCC __MSABI_LONG(0x00000004)
4230 
4231 typedef struct _DDPIXELFORMAT
4232 {
4233   DWORD dwSize;
4234   DWORD dwFlags;
4235   DWORD dwFourCC;
4236   __C89_NAMELESS union
4237   {
4238     DWORD dwRGBBitCount;
4239     DWORD dwYUVBitCount;
4240     DWORD dwZBufferBitDepth;
4241     DWORD dwAlphaBitDepth;
4242   };
4243   __C89_NAMELESS union
4244   {
4245     DWORD dwRBitMask;
4246     DWORD dwYBitMask;
4247   };
4248   __C89_NAMELESS union
4249   {
4250     DWORD dwGBitMask;
4251     DWORD dwUBitMask;
4252   };
4253   __C89_NAMELESS union
4254   {
4255     DWORD dwBBitMask;
4256     DWORD dwVBitMask;
4257   };
4258   __C89_NAMELESS union
4259   {
4260     DWORD dwRGBAlphaBitMask;
4261     DWORD dwYUVAlphaBitMask;
4262     DWORD dwRGBZBitMask;
4263     DWORD dwYUVZBitMask;
4264   };
4265 } DDPIXELFORMAT,*LPDDPIXELFORMAT;
4266 #endif /* __DDRAW_INCLUDED__ */
4267 
4268 #ifndef __DVP_INCLUDED__
4269 typedef struct _DDVIDEOPORTCONNECT {
4270   DWORD dwSize;
4271   DWORD dwPortWidth;
4272   GUID guidTypeID;
4273   DWORD dwFlags;
4274   ULONG_PTR dwReserved1;
4275 } DDVIDEOPORTCONNECT,*LPDDVIDEOPORTCONNECT;
4276 
4277 #define DDVPTYPE_E_HREFH_VREFH						\
4278 	0x54F39980,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8
4279 
4280 #define DDVPTYPE_E_HREFL_VREFL						\
4281 	0xE09C77E0,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8
4282 #endif /* __DVP_INCLUDED__ */
4283 
4284 typedef enum
4285 {
4286   KS_PixAspectRatio_NTSC4x3,
4287   KS_PixAspectRatio_NTSC16x9,
4288   KS_PixAspectRatio_PAL4x3,
4289   KS_PixAspectRatio_PAL16x9
4290 } KS_AMPixAspectRatio;
4291 
4292 typedef enum
4293 {
4294   KS_AMVP_DO_NOT_CARE,
4295   KS_AMVP_BEST_BANDWIDTH,
4296   KS_AMVP_INPUT_SAME_AS_OUTPUT
4297 } KS_AMVP_SELECTFORMATBY;
4298 
4299 typedef enum
4300 {
4301   KS_AMVP_MODE_WEAVE,
4302   KS_AMVP_MODE_BOBINTERLEAVED,
4303   KS_AMVP_MODE_BOBNONINTERLEAVED,
4304   KS_AMVP_MODE_SKIPEVEN,
4305   KS_AMVP_MODE_SKIPODD
4306 } KS_AMVP_MODE;
4307 
4308 typedef struct tagKS_AMVPDIMINFO
4309 {
4310   DWORD dwFieldWidth;
4311   DWORD dwFieldHeight;
4312   DWORD dwVBIWidth;
4313   DWORD dwVBIHeight;
4314   RECT rcValidRegion;
4315 } KS_AMVPDIMINFO,*PKS_AMVPDIMINFO;
4316 
4317 typedef struct tagKS_AMVPDATAINFO
4318 {
4319   DWORD dwSize;
4320   DWORD dwMicrosecondsPerField;
4321   KS_AMVPDIMINFO amvpDimInfo;
4322   DWORD dwPictAspectRatioX;
4323   DWORD dwPictAspectRatioY;
4324   WINBOOL bEnableDoubleClock;
4325   WINBOOL bEnableVACT;
4326   WINBOOL bDataIsInterlaced;
4327   LONG lHalfLinesOdd;
4328   WINBOOL bFieldPolarityInverted;
4329   DWORD dwNumLinesInVREF;
4330   LONG lHalfLinesEven;
4331   DWORD dwReserved1;
4332 } KS_AMVPDATAINFO,*PKS_AMVPDATAINFO;
4333 
4334 typedef struct tagKS_AMVPSIZE
4335 {
4336   DWORD dwWidth;
4337   DWORD dwHeight;
4338 } KS_AMVPSIZE,*PKS_AMVPSIZE;
4339 
4340 typedef struct {
4341   KS_AMVPSIZE Size;
4342   DWORD MaxPixelsPerSecond;
4343   DWORD Reserved;
4344 } KSVPMAXPIXELRATE,*PKSVPMAXPIXELRATE;
4345 
4346 typedef struct {
4347   KSPROPERTY Property;
4348   KS_AMVPSIZE Size;
4349 } KSVPSIZE_PROP,*PKSVPSIZE_PROP;
4350 
4351 typedef struct {
4352   DWORD dwPitch;
4353   DWORD dwXOrigin;
4354   DWORD dwYOrigin;
4355 } KSVPSURFACEPARAMS,*PKSVPSURFACEPARAMS;
4356 #endif /* __IVPType__ */
4357 
4358 #define STATIC_KSEVENTSETID_VPNotify					\
4359 	0x20c5598e,0xd3c8,0x11d0,0x8d,0xfc,0x00,0xc0,0x4f,0xd7,0xc0,0x8b
4360 DEFINE_GUIDSTRUCT("20c5598e-d3c8-11d0-8dfc-00c04fd7c08b",KSEVENTSETID_VPNotify);
4361 #define KSEVENTSETID_VPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VPNotify)
4362 
4363 typedef enum {
4364   KSEVENT_VPNOTIFY_FORMATCHANGE
4365 } KSEVENT_VPNOTIFY;
4366 
4367 #define STATIC_KSEVENTSETID_VIDCAPTOSTI					\
4368 	0xdb47de20,0xf628,0x11d1,0xba,0x41,0x0,0xa0,0xc9,0xd,0x2b,0x5
4369 DEFINE_GUIDSTRUCT("DB47DE20-F628-11d1-BA41-00A0C90D2B05",KSEVENTSETID_VIDCAPTOSTI);
4370 #define KSEVENTSETID_VIDCAPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAPTOSTI)
4371 
4372 typedef enum {
4373   KSEVENT_VIDCAPTOSTI_EXT_TRIGGER,
4374   KSEVENT_VIDCAP_AUTO_UPDATE,
4375   KSEVENT_VIDCAP_SEARCH
4376 } KSEVENT_VIDCAPTOSTI;
4377 
4378 typedef enum {
4379   KSPROPERTY_EXTENSION_UNIT_INFO,
4380   KSPROPERTY_EXTENSION_UNIT_CONTROL,
4381   KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = 0xffff
4382 } KSPROPERTY_EXTENSION_UNIT,*PKSPROPERTY_EXTENSION_UNIT;
4383 
4384 #define STATIC_KSEVENTSETID_VPVBINotify					\
4385 	0xec529b01,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a
4386 DEFINE_GUIDSTRUCT("ec529b01-1a1f-11d1-bad9-00609744111a",KSEVENTSETID_VPVBINotify);
4387 #define KSEVENTSETID_VPVBINotify DEFINE_GUIDNAMED(KSEVENTSETID_VPVBINotify)
4388 
4389 typedef enum {
4390   KSEVENT_VPVBINOTIFY_FORMATCHANGE
4391 } KSEVENT_VPVBINOTIFY;
4392 
4393 #define STATIC_KSDATAFORMAT_TYPE_AUXLine21Data				\
4394 	0x670aea80,0x3a82,0x11d0,0xb7,0x9b,0x00,0xaa,0x00,0x37,0x67,0xa7
4395 DEFINE_GUIDSTRUCT("670aea80-3a82-11d0-b79b-00aa003767a7",KSDATAFORMAT_TYPE_AUXLine21Data);
4396 #define KSDATAFORMAT_TYPE_AUXLine21Data DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUXLine21Data)
4397 
4398 #define STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair			\
4399 	0x6e8d4a22,0x310c,0x11d0,0xb7,0x9a,0x00,0xaa,0x00,0x37,0x67,0xa7
4400 DEFINE_GUIDSTRUCT("6e8d4a22-310c-11d0-b79a-00aa003767a7",KSDATAFORMAT_SUBTYPE_Line21_BytePair);
4401 #define KSDATAFORMAT_SUBTYPE_Line21_BytePair DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_BytePair)
4402 
4403 #define STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket			\
4404 	0x6e8d4a23,0x310c,0x11d0,0xb7,0x9a,0x00,0xaa,0x00,0x37,0x67,0xa7
4405 DEFINE_GUIDSTRUCT("6e8d4a23-310c-11d0-b79a-00aa003767a7",KSDATAFORMAT_SUBTYPE_Line21_GOPPacket);
4406 #define KSDATAFORMAT_SUBTYPE_Line21_GOPPacket DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_GOPPacket)
4407 
4408 typedef struct _KSGOP_USERDATA {
4409   ULONG sc;
4410   ULONG reserved1;
4411   BYTE cFields;
4412   CHAR l21Data[3];
4413 } KSGOP_USERDATA,*PKSGOP_USERDATA;
4414 
4415 #define STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK			\
4416 	0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x4f,0xc3,0x1d,0x60
4417 DEFINE_GUIDSTRUCT("ed0b916a-044d-11d1-aa78-00c04fc31d60",KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK);
4418 #define KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK)
4419 
4420 #define KS_AM_UseNewCSSKey			0x1
4421 
4422 #define STATIC_KSPROPSETID_TSRateChange					\
4423 	0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0
4424 DEFINE_GUIDSTRUCT("A503C5C0-1D1D-11D1-AD80-444553540000",KSPROPSETID_TSRateChange);
4425 #define KSPROPSETID_TSRateChange DEFINE_GUIDNAMED(KSPROPSETID_TSRateChange)
4426 
4427 typedef enum {
4428   KS_AM_RATE_SimpleRateChange = 1,
4429   KS_AM_RATE_ExactRateChange = 2,
4430   KS_AM_RATE_MaxFullDataRate = 3,
4431   KS_AM_RATE_Step = 4
4432 } KS_AM_PROPERTY_TS_RATE_CHANGE;
4433 
4434 typedef struct {
4435   REFERENCE_TIME StartTime;
4436   LONG Rate;
4437 } KS_AM_SimpleRateChange,*PKS_AM_SimpleRateChange;
4438 
4439 typedef struct {
4440   REFERENCE_TIME OutputZeroTime;
4441   LONG Rate;
4442 } KS_AM_ExactRateChange,*PKS_AM_ExactRateChange;
4443 
4444 typedef LONG KS_AM_MaxFullDataRate;
4445 typedef DWORD KS_AM_Step;
4446 
4447 #define STATIC_KSCATEGORY_ENCODER					\
4448 	0x19689bf6,0xc384,0x48fd,0xad,0x51,0x90,0xe5,0x8c,0x79,0xf7,0xb
4449 DEFINE_GUIDSTRUCT("19689BF6-C384-48fd-AD51-90E58C79F70B",KSCATEGORY_ENCODER);
4450 #define KSCATEGORY_ENCODER DEFINE_GUIDNAMED(KSCATEGORY_ENCODER)
4451 
4452 #define STATIC_KSCATEGORY_MULTIPLEXER					\
4453 	0x7a5de1d3,0x1a1,0x452c,0xb4,0x81,0x4f,0xa2,0xb9,0x62,0x71,0xe8
4454 DEFINE_GUIDSTRUCT("7A5DE1D3-01A1-452c-B481-4FA2B96271E8",KSCATEGORY_MULTIPLEXER);
4455 #define KSCATEGORY_MULTIPLEXER DEFINE_GUIDNAMED(KSCATEGORY_MULTIPLEXER)
4456 
4457 #ifndef __ENCODER_API_GUIDS__
4458 #define __ENCODER_API_GUIDS__
4459 
4460 #define STATIC_ENCAPIPARAM_BITRATE					\
4461 	0x49cc4c43,0xca83,0x4ad4,0xa9,0xaf,0xf3,0x69,0x6a,0xf6,0x66,0xdf
4462 DEFINE_GUIDSTRUCT("49CC4C43-CA83-4ad4-A9AF-F3696AF666DF",ENCAPIPARAM_BITRATE);
4463 #define ENCAPIPARAM_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE)
4464 
4465 #define STATIC_ENCAPIPARAM_PEAK_BITRATE					\
4466 	0x703f16a9,0x3d48,0x44a1,0xb0,0x77,0x1,0x8d,0xff,0x91,0x5d,0x19
4467 DEFINE_GUIDSTRUCT("703F16A9-3D48-44a1-B077-018DFF915D19",ENCAPIPARAM_PEAK_BITRATE);
4468 #define ENCAPIPARAM_PEAK_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_PEAK_BITRATE)
4469 
4470 #define STATIC_ENCAPIPARAM_BITRATE_MODE					\
4471 	0xee5fb25c,0xc713,0x40d1,0x9d,0x58,0xc0,0xd7,0x24,0x1e,0x25,0xf
4472 DEFINE_GUIDSTRUCT("EE5FB25C-C713-40d1-9D58-C0D7241E250F",ENCAPIPARAM_BITRATE_MODE);
4473 #define ENCAPIPARAM_BITRATE_MODE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE_MODE)
4474 
4475 #define STATIC_CODECAPI_CHANGELISTS					\
4476 	0x62b12acf,0xf6b0,0x47d9,0x94,0x56,0x96,0xf2,0x2c,0x4e,0x0b,0x9d
4477 DEFINE_GUIDSTRUCT("62B12ACF-F6B0-47D9-9456-96F22C4E0B9D",CODECAPI_CHANGELISTS);
4478 #define CODECAPI_CHANGELISTS DEFINE_GUIDNAMED(CODECAPI_CHANGELISTS)
4479 
4480 #define STATIC_CODECAPI_VIDEO_ENCODER					\
4481 	0x7112e8e1,0x3d03,0x47ef,0x8e,0x60,0x03,0xf1,0xcf,0x53,0x73,0x01
4482 DEFINE_GUIDSTRUCT("7112E8E1-3D03-47EF-8E60-03F1CF537301",CODECAPI_VIDEO_ENCODER);
4483 #define CODECAPI_VIDEO_ENCODER DEFINE_GUIDNAMED(CODECAPI_VIDEO_ENCODER)
4484 
4485 #define STATIC_CODECAPI_AUDIO_ENCODER					\
4486 	0xb9d19a3e,0xf897,0x429c,0xbc,0x46,0x81,0x38,0xb7,0x27,0x2b,0x2d
4487 DEFINE_GUIDSTRUCT("B9D19A3E-F897-429C-BC46-8138B7272B2D",CODECAPI_AUDIO_ENCODER);
4488 #define CODECAPI_AUDIO_ENCODER DEFINE_GUIDNAMED(CODECAPI_AUDIO_ENCODER)
4489 
4490 #define STATIC_CODECAPI_SETALLDEFAULTS					\
4491 	0x6c5e6a7c,0xacf8,0x4f55,0xa9,0x99,0x1a,0x62,0x81,0x09,0x05,0x1b
4492 DEFINE_GUIDSTRUCT("6C5E6A7C-ACF8-4F55-A999-1A628109051B",CODECAPI_SETALLDEFAULTS);
4493 #define CODECAPI_SETALLDEFAULTS DEFINE_GUIDNAMED(CODECAPI_SETALLDEFAULTS)
4494 
4495 #define STATIC_CODECAPI_ALLSETTINGS					\
4496 	0x6a577e92,0x83e1,0x4113,0xad,0xc2,0x4f,0xce,0xc3,0x2f,0x83,0xa1
4497 DEFINE_GUIDSTRUCT("6A577E92-83E1-4113-ADC2-4FCEC32F83A1",CODECAPI_ALLSETTINGS);
4498 #define CODECAPI_ALLSETTINGS DEFINE_GUIDNAMED(CODECAPI_ALLSETTINGS)
4499 
4500 #define STATIC_CODECAPI_SUPPORTSEVENTS					\
4501 	0x0581af97,0x7693,0x4dbd,0x9d,0xca,0x3f,0x9e,0xbd,0x65,0x85,0xa1
4502 DEFINE_GUIDSTRUCT("0581AF97-7693-4DBD-9DCA-3F9EBD6585A1",CODECAPI_SUPPORTSEVENTS);
4503 #define CODECAPI_SUPPORTSEVENTS DEFINE_GUIDNAMED(CODECAPI_SUPPORTSEVENTS)
4504 
4505 #define STATIC_CODECAPI_CURRENTCHANGELIST				\
4506 	0x1cb14e83,0x7d72,0x4657,0x83,0xfd,0x47,0xa2,0xc5,0xb9,0xd1,0x3d
4507 DEFINE_GUIDSTRUCT("1CB14E83-7D72-4657-83FD-47A2C5B9D13D",CODECAPI_CURRENTCHANGELIST);
4508 #define CODECAPI_CURRENTCHANGELIST DEFINE_GUIDNAMED(CODECAPI_CURRENTCHANGELIST)
4509 #endif /* __ENCODER_API_GUIDS__ */
4510 
4511 #ifndef __ENCODER_API_DEFINES__
4512 #define __ENCODER_API_DEFINES__
4513 typedef enum {
4514   ConstantBitRate = 0,
4515   VariableBitRateAverage,
4516   VariableBitRatePeak
4517 } VIDEOENCODER_BITRATE_MODE;
4518 #endif /* __ENCODER_API_DEFINES__ */
4519 
4520 #if (_WIN32_WINNT >= 0x0601)
4521 typedef enum _TunerDecoderLockType {
4522   Tuner_LockType_None                        = 0x00,
4523   Tuner_LockType_Within_Scan_Sensing_Range   = 0x01,
4524   Tuner_LockType_Locked                      = 0x02
4525 } TunerLockType;
4526 #endif /*(_WIN32_WINNT >= 0x0601)*/
4527 
4528 /* From devicetopology.h */
4529 typedef enum __WIDL_devicetopology_generated_name_00000002 {
4530     eConnTypeUnknown = 0,
4531     eConnType3Point5mm = 1,
4532     eConnTypeQuarter = 2,
4533     eConnTypeAtapiInternal = 3,
4534     eConnTypeRCA = 4,
4535     eConnTypeOptical = 5,
4536     eConnTypeOtherDigital = 6,
4537     eConnTypeOtherAnalog = 7,
4538     eConnTypeMultichannelAnalogDIN = 8,
4539     eConnTypeXlrProfessional = 9,
4540     eConnTypeRj11Modem = 10,
4541     eConnTypeRJ11Modem = eConnTypeRj11Modem,
4542     eConnTypeCombination = 11
4543 } EPcxConnectionType;
4544 
4545 typedef enum __WIDL_devicetopology_generated_name_00000003 {
4546     eGeoLocRear = 1,
4547     eGeoLocFront = 2,
4548     eGeoLocLeft = 3,
4549     eGeoLocRight = 4,
4550     eGeoLocTop = 5,
4551     eGeoLocBottom = 6,
4552     eGeoLocRearPanel = 7,
4553     eGeoLocRiser = 8,
4554     eGeoLocInsideMobileLid = 9,
4555     eGeoLocDrivebay = 10,
4556     eGeoLocHDMI = 11,
4557     eGeoLocOutsideMobileLid = 12,
4558     eGeoLocATAPI = 13,
4559     eGeoLocReserved5 = 14,
4560     eGeoLocReserved6 = 15
4561 } EPcxGeoLocation;
4562 
4563 typedef enum __WIDL_devicetopology_generated_name_00000004 {
4564     eGenLocPrimaryBox = 0,
4565     eGenLocInternal = 1,
4566     eGenLocSeparate = 2,
4567     eGenLocOther = 3
4568 } EPcxGenLocation;
4569 
4570 typedef enum __WIDL_devicetopology_generated_name_00000005 {
4571     ePortConnJack = 0,
4572     ePortConnIntegratedDevice = 1,
4573     ePortConnBothIntegratedAndJack = 2,
4574     ePortConnUnknown = 3
4575 } EPxcPortConnection;
4576 
4577 typedef struct __WIDL_devicetopology_generated_name_00000006 {
4578     DWORD ChannelMapping;
4579     COLORREF Color;
4580     EPcxConnectionType ConnectionType;
4581     EPcxGeoLocation GeoLocation;
4582     EPcxGenLocation GenLocation;
4583     EPxcPortConnection PortConnection;
4584     WINBOOL IsConnected;
4585 } KSJACK_DESCRIPTION;
4586 
4587 typedef KSJACK_DESCRIPTION *PKSJACK_DESCRIPTION;
4588 
4589 typedef enum __WIDL_devicetopology_generated_name_00000007 {
4590     KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
4591     KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1
4592 } KSJACK_SINK_CONNECTIONTYPE;
4593 
4594 typedef struct _tagKSJACK_SINK_INFORMATION {
4595     KSJACK_SINK_CONNECTIONTYPE ConnType;
4596     WORD ManufacturerId;
4597     WORD ProductId;
4598     WORD AudioLatency;
4599     WINBOOL HDCPCapable;
4600     WINBOOL AICapable;
4601     UCHAR SinkDescriptionLength;
4602     WCHAR SinkDescription[32];
4603     LUID PortId;
4604 } KSJACK_SINK_INFORMATION;
4605 
4606 typedef struct _tagKSJACK_DESCRIPTION2 {
4607     DWORD DeviceStateInfo;
4608     DWORD JackCapabilities;
4609 } KSJACK_DESCRIPTION2;
4610 
4611 typedef struct _tagKSJACK_DESCRIPTION2 *PKSJACK_DESCRIPTION2;
4612 
4613 #endif /* _KSMEDIA_ */
4614 
4615