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