a1b1c0c314e9dce8f81b04b34f30df22852d3d81
[reactos.git] / reactos / include / psdk / ksmedia.h
1 /*
2 KS Media
3 (c) Andrew Greenwood, 2007.
4
5 Please see COPYING in the top level directory for license information.
6 */
7
8 #ifndef KSMEDIA_H
9 #define KSMEDIA_H
10
11 #include <ks.h>
12
13 /*
14 KS CATEGORIES
15 */
16
17 typedef LONGLONG REFERENCE_TIME;
18
19 #define EXTRACT_WAVEFORMATEX_ID(Guid)\
20 (USHORT)((Guid)->Data1)
21
22 /* Audio device (as presented by sysaudio) */
23
24 #define STATIC_KSCATEGORY_AUDIO_DEVICE \
25 0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
26 DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE);
27 #define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE)
28
29 /* video */
30 #define STATIC_PINNAME_VIDEO_CAPTURE \
31 0xfb6c4281, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba
32 #define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE
33 DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CAPTURE);
34 #define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE)
35 #define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE
36
37 /* Preferred devices */
38
39 #define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \
40 0xD6C5066EL, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
41 DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE);
42 #define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE)
43
44 #define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \
45 0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
46 DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE);
47 #define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE)
48
49 #define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \
50 0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
51 DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
52 #define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
53
54
55 /* Media type categories */
56
57 #define STATIC_KSCATEGORY_AUDIO \
58 0x6994AD04L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
59 DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO);
60 #define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO)
61
62 #define STATIC_KSCATEGORY_VIDEO \
63 0x6994AD05L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
64 DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO);
65 #define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO)
66
67 #define STATIC_KSCATEGORY_TEXT \
68 0x6994AD06L, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
69 DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT);
70 #define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
71
72 #define STATIC_KSCATEGORY_NETWORK \
73 0x67C9CC3CL, 0x69C4, 0x11D2, {0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
74 DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK);
75 #define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK)
76
77 #define STATIC_KSINTERFACESETID_Media \
78 0x3A13EB40L, 0x30A7, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
79 DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media);
80 #define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media)
81
82 /* ... */
83
84 #define STATIC_KSCATEGORY_TOPOLOGY \
85 0xDDA54A40L, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}
86 DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY);
87 #define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY)
88
89 #define STATIC_KSCATEGORY_VIRTUAL \
90 0x3503EAC4L, 0x1F26, 0x11D1, {0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
91 DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL);
92 #define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL)
93
94 #define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \
95 0xBF963D80L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}
96 DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
97 #define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
98
99
100 /* Component-specific */
101
102 #define STATIC_KSCATEGORY_SYSAUDIO \
103 0xA7C7A5B1L, 0x5AF3, 0x11D1, {0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07}
104 DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO);
105 #define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO)
106
107 #define STATIC_KSCATEGORY_WDMAUD \
108 0x3E227E76L, 0x690D, 0x11D2, {0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1}
109 DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD);
110 #define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD)
111
112 #define STATIC_KSCATEGORY_AUDIO_GFX \
113 0x9BAF9572L, 0x340C, 0x11D3, {0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F}
114 DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX);
115 #define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX)
116
117 #define STATIC_KSCATEGORY_AUDIO_SPLITTER \
118 0x9EA331FAL, 0xB91B, 0x45F8, {0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE}
119 DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER);
120 #define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
121
122 #define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER
123 #define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER
124
125 #define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE
126 #define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE
127
128 /*
129 Nodes
130 */
131
132 #define STATIC_KSNODETYPE_ADC\
133 0x4D837FE0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
134 DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC);
135 #define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC)
136
137 #define STATIC_KSNODETYPE_AGC\
138 0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
139 DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC);
140 #define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC)
141
142 #define STATIC_KSNODETYPE_3D_EFFECTS\
143 0x55515860L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
144 DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS);
145 #define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS)
146
147 #define STATIC_KSNODETYPE_SUPERMIX\
148 0xE573ADC0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
149 DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX);
150 #define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX)
151
152 #define STATIC_KSNODETYPE_SRC\
153 0x9DB7B9E0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
154 DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC);
155 #define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC)
156
157 #define STATIC_KSNODETYPE_DAC\
158 0x507AE360L, 0xC554, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
159 DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC);
160 #define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC)
161
162 #define STATIC_KSNODETYPE_SPDIF_INTERFACE\
163 DEFINE_USB_TERMINAL_GUID(0x0605)
164 DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE);
165 #define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE)
166
167 #define STATIC_KSNODETYPE_MICROPHONE\
168 DEFINE_USB_TERMINAL_GUID(0x0201)
169 DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE);
170 #define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE)
171
172 #define STATIC_KSNODETYPE_CD_PLAYER\
173 DEFINE_USB_TERMINAL_GUID(0x0703)
174 DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER);
175 #define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER)
176
177 #define STATIC_KSNODETYPE_CHORUS\
178 0x20173F20L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
179 DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS);
180 #define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS)
181
182 #define STATIC_KSNODETYPE_REVERB\
183 0xEF0328E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
184 DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB);
185 #define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB)
186
187
188 #define STATIC_KSNODETYPE_LINE_CONNECTOR\
189 DEFINE_USB_TERMINAL_GUID(0x0603)
190 DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR);
191 #define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR)
192
193 #define STATIC_KSNODETYPE_ANALOG_CONNECTOR\
194 DEFINE_USB_TERMINAL_GUID(0x601)
195 DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR);
196 #define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR)
197
198 #define STATIC_KSNODETYPE_SPEAKER\
199 DEFINE_USB_TERMINAL_GUID(0x0301)
200 DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER);
201 #define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER)
202
203 #define STATIC_KSAUDFNAME_RECORDING_CONTROL\
204 0x185FEDFAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
205 DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL);
206 #define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL)
207
208 #define STATIC_KSNODETYPE_VOLUME\
209 0x3A5ACC00L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
210 DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME);
211 #define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME)
212
213 #define STATIC_KSAUDFNAME_WAVE_VOLUME\
214 0x185FEDE5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
215 DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME);
216 #define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME)
217
218 #define STATIC_KSNODETYPE_MUTE\
219 0x02B223C0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
220 DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE);
221 #define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE)
222
223 #define STATIC_KSAUDFNAME_WAVE_MUTE\
224 0x185FEDE6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
225 DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE);
226 #define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE)
227
228 #define STATIC_KSAUDFNAME_MIC_VOLUME\
229 0x185FEDEDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
230 DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME);
231 #define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME)
232
233 #define STATIC_KSNODETYPE_SUM\
234 0xDA441A60L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
235 DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM);
236 #define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM)
237
238 #define STATIC_KSAUDFNAME_MASTER_VOLUME\
239 0x185FEDE3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
240 DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME);
241 #define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME)
242
243 #define STATIC_KSAUDFNAME_CD_VOLUME\
244 0x185FEDE9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
245 DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME);
246 #define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME)
247
248 #define STATIC_KSAUDFNAME_RECORDING_SOURCE\
249 0x185FEDEFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
250 DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE);
251 #define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE)
252
253 #define STATIC_KSAUDFNAME_LINE_IN_VOLUME\
254 0x185FEDF4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
255 DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME);
256 #define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME)
257
258 #define STATIC_KSAUDFNAME_AUX_VOLUME\
259 0x185FEDFCL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
260 DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME);
261 #define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME)
262
263 #define STATIC_KSAUDFNAME_MIC_IN_VOLUME\
264 0x185FEDF5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
265 DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME);
266 #define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME)
267
268 #define STATIC_KSNODETYPE_LOUDNESS\
269 0x41887440L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
270 DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS);
271 #define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS)
272
273 #define STATIC_KSAUDFNAME_MICROPHONE_BOOST\
274 0x2bc31d6aL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
275 DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST);
276 #define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST)
277
278 #define STATIC_KSAUDFNAME_CD_MUTE\
279 0x185FEDEAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
280 DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE);
281 #define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE)
282
283 #define STATIC_KSAUDFNAME_LINE_MUTE\
284 0x185FEDECL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
285 DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE);
286 #define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE)
287
288 #define STATIC_KSAUDFNAME_MIC_MUTE\
289 0x185FEDEEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
290 DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE);
291 #define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE)
292
293 #define STATIC_KSAUDFNAME_AUX_MUTE\
294 0x185FEDFDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
295 DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE);
296 #define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE)
297
298 #define STATIC_KSAUDFNAME_VOLUME_CONTROL\
299 0x185FEDF7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
300 DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL);
301 #define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL)
302
303 #define STATIC_KSNODETYPE_MUX\
304 0x2CEAF780L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
305 DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX);
306 #define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX)
307
308 #define STATIC_KSAUDFNAME_MASTER_MUTE\
309 0x185FEDE4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
310 DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE);
311 #define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE)
312
313 #define STATIC_KSNODETYPE_PEAKMETER\
314 0xa085651eL, 0x5f0d, 0x4b36, 0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e
315 DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER);
316 #define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER)
317
318 #define STATIC_KSNODETYPE_STEREO_WIDE\
319 0xA9E69800L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
320 DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE);
321 #define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE)
322
323 #define STATIC_KSNODETYPE_TONE\
324 0x7607E580L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
325 DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE);
326 #define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE)
327
328 /*
329 Pins
330 */
331
332 #define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \
333 0x47A4FA20L, 0xA251, 0x11D1, {0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
334 DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME);
335 #define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME)
336
337
338 /*
339 Formats
340 */
341
342 //#if defined(_INC_MMREG)
343 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
344 #include <pshpack1.h>
345 #endif
346 typedef struct {
347 KSDATAFORMAT DataFormat;
348 WAVEFORMATEX WaveFormatEx;
349 } KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX;
350
351 typedef struct {
352 ULONG Flags;
353 ULONG Control;
354 WAVEFORMATEX WaveFormatEx;
355 } KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC;
356
357 typedef struct {
358 KSDATAFORMAT DataFormat;
359 KSDSOUND_BUFFERDESC BufferDesc;
360 } KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND;
361
362 #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
363 #include <poppack.h>
364 #endif
365
366 //#endif
367
368 typedef struct {
369 KSDATARANGE DataRange;
370 ULONG MaximumChannels;
371 ULONG MinimumBitsPerSample;
372 ULONG MaximumBitsPerSample;
373 ULONG MinimumSampleFrequency;
374 ULONG MaximumSampleFrequency;
375 } KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO;
376
377 #if !defined( DEFINE_WAVEFORMATEX_GUID )
378 #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
379 #endif
380
381 #define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX\
382 0x00000000L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
383 DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX);
384 #define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX)
385
386
387 #define INIT_WAVEFORMATEX_GUID(Guid, x) \
388 { \
389 *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX; \
390 (Guid)->Data1 = (USHORT)(x); \
391 }
392
393 // 'vids'
394 #define STATIC_KSDATAFORMAT_TYPE_VIDEO \
395 0x73646976L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
396 DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO);
397 #define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO)
398
399 // 'auds'
400 #define STATIC_KSDATAFORMAT_TYPE_AUDIO \
401 0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
402 DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO);
403 #define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO)
404
405 #define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND\
406 0x518590a2L, 0xa184, 0x11d0, 0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
407 DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND);
408 #define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND)
409
410 #define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG\
411 0x6dba3190L, 0x67bd, 0x11cf, 0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
412 DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG);
413 #define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG)
414
415
416 // 'txts'
417 #define STATIC_KSDATAFORMAT_TYPE_TEXT \
418 0x73747874L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
419 DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT);
420 #define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT)
421
422 #define STATIC_KSDATAFORMAT_TYPE_MUSIC \
423 0xE725D360L, 0x62CC, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
424 DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC);
425 #define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC)
426
427 // 'mids'
428 #define STATIC_KSDATAFORMAT_TYPE_MIDI \
429 0x7364696DL, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
430 DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI);
431 #define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI)
432
433 #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI \
434 0x1D262760L, 0xE957, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
435 DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI);
436 #define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI)
437
438 #define STATIC_KSDATAFORMAT_SUBTYPE_PCM\
439 0x00000001L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
440 DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM);
441 #define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
442
443 #define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\
444 0x00000003L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
445 DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT);
446 #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
447
448 #define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX\
449 0x05589f81L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a
450 DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX);
451 #define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
452
453 #define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO\
454 0xe06d802cL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
455 DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_AC3_AUDIO);
456 #define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO)
457
458 #define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO\
459 0xe06d80e4L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
460 DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_AC3_AUDIO);
461 #define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO)
462
463 #define STATIC_KSPROPSETID_AC3\
464 0xBFABE720L, 0x6E1F, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
465 DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000", KSPROPSETID_AC3);
466 #define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3)
467
468 #define STATIC_KSPROPSETID_Audio\
469 0x45FFAAA0L, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
470 DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio);
471 #define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio)
472
473 typedef enum {
474 KSPROPERTY_AUDIO_LATENCY = 1,
475 KSPROPERTY_AUDIO_COPY_PROTECTION,
476 KSPROPERTY_AUDIO_CHANNEL_CONFIG,
477 KSPROPERTY_AUDIO_VOLUMELEVEL,
478 KSPROPERTY_AUDIO_POSITION,
479 KSPROPERTY_AUDIO_DYNAMIC_RANGE,
480 KSPROPERTY_AUDIO_QUALITY,
481 KSPROPERTY_AUDIO_SAMPLING_RATE,
482 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
483 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
484 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
485 KSPROPERTY_AUDIO_MUX_SOURCE,
486 KSPROPERTY_AUDIO_MUTE,
487 KSPROPERTY_AUDIO_BASS,
488 KSPROPERTY_AUDIO_MID,
489 KSPROPERTY_AUDIO_TREBLE,
490 KSPROPERTY_AUDIO_BASS_BOOST,
491 KSPROPERTY_AUDIO_EQ_LEVEL,
492 KSPROPERTY_AUDIO_NUM_EQ_BANDS,
493 KSPROPERTY_AUDIO_EQ_BANDS,
494 KSPROPERTY_AUDIO_AGC,
495 KSPROPERTY_AUDIO_DELAY,
496 KSPROPERTY_AUDIO_LOUDNESS,
497 KSPROPERTY_AUDIO_WIDE_MODE,
498 KSPROPERTY_AUDIO_WIDENESS,
499 KSPROPERTY_AUDIO_REVERB_LEVEL,
500 KSPROPERTY_AUDIO_CHORUS_LEVEL,
501 KSPROPERTY_AUDIO_DEV_SPECIFIC,
502 KSPROPERTY_AUDIO_DEMUX_DEST,
503 KSPROPERTY_AUDIO_STEREO_ENHANCE,
504 KSPROPERTY_AUDIO_MANUFACTURE_GUID,
505 KSPROPERTY_AUDIO_PRODUCT_GUID,
506 KSPROPERTY_AUDIO_CPU_RESOURCES,
507 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
508 KSPROPERTY_AUDIO_SURROUND_ENCODE,
509 KSPROPERTY_AUDIO_3D_INTERFACE
510
511 #if (NTDDI_VERSION >= NTDDI_WINXP)
512 , KSPROPERTY_AUDIO_PEAKMETER
513 , KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
514 , KSPROPERTY_AUDIO_FILTER_STATE
515 , KSPROPERTY_AUDIO_PREFERRED_STATUS
516
517 #endif
518 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
519 , KSPROPERTY_AUDIO_PEQ_MAX_BANDS
520 , KSPROPERTY_AUDIO_PEQ_NUM_BANDS
521 , KSPROPERTY_AUDIO_PEQ_BAND_CENTER_FREQ
522 , KSPROPERTY_AUDIO_PEQ_BAND_Q_FACTOR
523 , KSPROPERTY_AUDIO_PEQ_BAND_LEVEL
524 , KSPROPERTY_AUDIO_CHORUS_MODULATION_RATE
525 , KSPROPERTY_AUDIO_CHORUS_MODULATION_DEPTH
526 , KSPROPERTY_AUDIO_REVERB_TIME
527 , KSPROPERTY_AUDIO_REVERB_DELAY_FEEDBACK
528 , KSPROPERTY_AUDIO_POSITIONEX
529 , KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY
530 #endif
531
532 } KSPROPERTY_AUDIO;
533
534 #define STATIC_KSEVENTSETID_AudioControlChange\
535 0xE85E9698L, 0xFA2F, 0x11D1, 0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
536 DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange);
537 #define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange)
538
539 typedef enum {
540 KSEVENT_CONTROL_CHANGE,
541 } KSEVENT_AUDIO_CONTROL_CHANGE;
542
543
544 #define STATIC_KSEVENTSETID_LoopedStreaming\
545 0x4682B940L, 0xC6EF, 0x11D0, 0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D
546 DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming);
547 #define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming)
548
549 typedef enum {
550 KSEVENT_LOOPEDSTREAMING_POSITION,
551 } KSEVENT_LOOPEDSTREAMING;
552
553 #define STATIC_KSEVENTSETID_Connection\
554 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
555 DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection);
556 #define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection)
557
558
559 typedef struct {
560 KSEVENTDATA KsEventData;
561 #if defined(_NTDDK_)
562 ULONGLONG Position;
563 #else // !_NTDDK_
564 DWORDLONG Position;
565 #endif // !_NTDDK_
566 } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ;
567
568
569 /*
570 SysAudio Properties
571 */
572
573 #define STATIC_KSPROPSETID_Sysaudio \
574 0xCBE3FAA0L, 0xCC75, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
575 DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio);
576 #define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio)
577
578 typedef enum {
579 KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1,
580 KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2,
581 KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3,
582 KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4,
583 KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5,
584 KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6,
585 KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7,
586 KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14,
587 KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16
588 } KSPROPERTY_SYSAUDIO;
589
590 typedef struct {
591 KSPROPERTY Property;
592 ULONG Flags;
593 ULONG DeviceNumber;
594 } SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO;
595
596 #define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001
597
598
599 #define STATIC_KSPROPSETID_Sysaudio_Pin \
600 0xA3A53220L, 0xC6E4, 0x11D0, {0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6}
601 DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin);
602 #define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin)
603
604 typedef enum {
605 KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1,
606 } KSPROPERTY_SYSAUDIO_PIN;
607
608
609 #define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000
610 #define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFF
611
612 #if (NTDDI_VERSION >= NTDDI_WINXP)
613 #define KSAUDIO_SPEAKER_DIRECTOUT 0
614 #endif
615 #define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER)
616 #define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
617 #define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
618 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
619 #define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
620 SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
621 #define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
622 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
623 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
624 #define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
625 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
626 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
627 SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
628
629 #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
630
631 #define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
632 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
633 SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
634 #define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
635 SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
636 SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
637 SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
638 #define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1
639 #define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1
640 #endif
641
642 typedef struct
643 {
644 KSPROPERTY Property;
645 ULONG NodeId;
646 ULONG Reserved;
647 } KSNODEPROPERTY, *PKSNODEPROPERTY;
648
649 typedef struct
650 {
651 KSNODEPROPERTY NodeProperty;
652 LONG Channel;
653 ULONG Reserved;
654 } KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL;
655
656 typedef struct {
657 #if defined(_NTDDK_)
658 ULONGLONG PlayOffset;
659 ULONGLONG WriteOffset;
660 #else
661 DWORDLONG PlayOffset;
662 DWORDLONG WriteOffset;
663 #endif
664 } KSAUDIO_POSITION, *PKSAUDIO_POSITION;
665
666 typedef struct {
667 ULONG FifoSize;
668 ULONG ChipsetDelay;
669 ULONG CodecDelay;
670 } KSRTAUDIO_HWLATENCY, *PKSRTAUDIO_HWLATENCY;
671
672 typedef struct {
673 PVOID Register;
674 ULONG Width;
675 ULONGLONG Numerator;
676 ULONGLONG Denominator;
677 ULONG Accuracy;
678 } KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;
679
680 #endif