KsMedia.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:205k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4.     ksmedia.h
  5. Abstract:
  6.     WDM-CSA Multimedia Definitions.
  7. --*/
  8. #if !defined(_KS_)
  9. #error KS.H must be included before KSMEDIA.H
  10. #endif // !defined(_KS_)
  11. #if !defined(_KSMEDIA_)
  12. #define _KSMEDIA_
  13. typedef struct {
  14.     KSPROPERTY      Property;
  15.     KSMULTIPLE_ITEM MultipleItem;
  16. } KSMULTIPLE_DATA_PROP, *PKSMULTIPLE_DATA_PROP;
  17. #define STATIC_KSMEDIUMSETID_MidiBus 
  18.     0x05908040L, 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. #define STATIC_KSMEDIUMSETID_VPBus 
  22.     0xA18C15ECL, 0xCE43, 0x11D0, 0xAB, 0xE7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  23. DEFINE_GUIDSTRUCT("A18C15EC-CE43-11D0-ABE7-00A0C9223196", KSMEDIUMSETID_VPBus);
  24. #define KSMEDIUMSETID_VPBus DEFINE_GUIDNAMED(KSMEDIUMSETID_VPBus)
  25. #define STATIC_KSINTERFACESETID_Media 
  26.     0x3A13EB40L, 0x30A7, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  27. DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media);
  28. #define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media)
  29. typedef enum {
  30.     KSINTERFACE_MEDIA_MUSIC,
  31.     KSINTERFACE_MEDIA_WAVE_BUFFERED,
  32.     KSINTERFACE_MEDIA_WAVE_QUEUED
  33. } KSINTERFACE_MEDIA;
  34. #if !defined(INIT_USBAUDIO_MID)
  35. // {4e1cecd2-1679-463b-a72f-a5bf64c86eba}
  36. #define INIT_USBAUDIO_MID(guid, id)
  37. {
  38.     (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);
  39.     (guid)->Data2 = 0x1679;
  40.     (guid)->Data3 = 0x463b;
  41.     (guid)->Data4[0] = 0xa7;
  42.     (guid)->Data4[1] = 0x2f;
  43.     (guid)->Data4[2] = 0xa5;
  44.     (guid)->Data4[3] = 0xbf;
  45.     (guid)->Data4[4] = 0x64;
  46.     (guid)->Data4[5] = 0xc8;
  47.     (guid)->Data4[6] = 0x6e;
  48.     (guid)->Data4[7] = 0xba;
  49. }
  50. #define EXTRACT_USBAUDIO_MID(guid)
  51.     (USHORT)((guid)->Data1 - 0x4e1cecd2)
  52. #define DEFINE_USBAUDIO_MID_GUID(id)
  53.     0x4e1cecd2+(USHORT)(id), 0x1679, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
  54. #define IS_COMPATIBLE_USBAUDIO_MID(guid)
  55.     (((guid)->Data1 >= 0x4e1cecd2) &&
  56.     ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&
  57.     ((guid)->Data2 == 0x1679) &&
  58.     ((guid)->Data3 == 0x463b) &&
  59.     ((guid)->Data4[0] == 0xa7) &&
  60.     ((guid)->Data4[1] == 0x2f) &&
  61.     ((guid)->Data4[2] == 0xa5) &&
  62.     ((guid)->Data4[3] == 0xbf) &&
  63.     ((guid)->Data4[4] == 0x64) &&
  64.     ((guid)->Data4[5] == 0xc8) &&
  65.     ((guid)->Data4[6] == 0x6e) &&
  66.     ((guid)->Data4[7] == 0xba))
  67. #endif // !defined(INIT_USBAUDIO_MID)
  68. #if !defined(INIT_USBAUDIO_PID)
  69. // {abcc5a5e-c263-463b-a72f-a5bf64c86eba}
  70. #define INIT_USBAUDIO_PID(guid, id)
  71. {
  72.     (guid)->Data1 = 0xabcc5a5e + (USHORT)(id);
  73.     (guid)->Data2 = 0xc263;
  74.     (guid)->Data3 = 0x463b;
  75.     (guid)->Data4[0] = 0xa7;
  76.     (guid)->Data4[1] = 0x2f;
  77.     (guid)->Data4[2] = 0xa5;
  78.     (guid)->Data4[3] = 0xbf;
  79.     (guid)->Data4[4] = 0x64;
  80.     (guid)->Data4[5] = 0xc8;
  81.     (guid)->Data4[6] = 0x6e;
  82.     (guid)->Data4[7] = 0xba;
  83. }
  84. #define EXTRACT_USBAUDIO_PID(guid)
  85.     (USHORT)((guid)->Data1 - 0xabcc5a5e)
  86. #define DEFINE_USBAUDIO_PID_GUID(id)
  87.     0xabcc5a5e+(USHORT)(id), 0xc263, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba
  88. #define IS_COMPATIBLE_USBAUDIO_PID(guid)
  89.     (((guid)->Data1 >= 0xabcc5a5e) &&
  90.     ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&
  91.     ((guid)->Data2 == 0xc263) &&
  92.     ((guid)->Data3 == 0x463b) &&
  93.     ((guid)->Data4[0] == 0xa7) &&
  94.     ((guid)->Data4[1] == 0x2f) &&
  95.     ((guid)->Data4[2] == 0xa5) &&
  96.     ((guid)->Data4[3] == 0xbf) &&
  97.     ((guid)->Data4[4] == 0x64) &&
  98.     ((guid)->Data4[5] == 0xc8) &&
  99.     ((guid)->Data4[6] == 0x6e) &&
  100.     ((guid)->Data4[7] == 0xba))
  101. #endif // !defined(INIT_USBAUDIO_PID)
  102. #if !defined(INIT_USBAUDIO_PRODUCT_NAME)
  103. // {FC575048-2E08-463B-A72F-A5BF64C86EBA}
  104. #define INIT_USBAUDIO_PRODUCT_NAME(guid, vid, pid, strIndex)
  105. {
  106.     (guid)->Data1 = 0XFC575048 + (USHORT)(vid);
  107.     (guid)->Data2 = 0x2E08     + (USHORT)(pid);
  108.     (guid)->Data3 = 0x463B     + (USHORT)(strIndex);
  109.     (guid)->Data4[0] = 0xA7;
  110.     (guid)->Data4[1] = 0x2F;
  111.     (guid)->Data4[2] = 0xA5;
  112.     (guid)->Data4[3] = 0xBF;
  113.     (guid)->Data4[4] = 0x64;
  114.     (guid)->Data4[5] = 0xC8;
  115.     (guid)->Data4[6] = 0x6E;
  116.     (guid)->Data4[7] = 0xBA;
  117. }
  118. #define DEFINE_USBAUDIO_PRODUCT_NAME(vid, pid, strIndex)
  119.     0xFC575048+(USHORT)(vid), 0x2E08+(USHORT)(pid), 0x463B+(USHORT)(strIndex), 0xA7, 0x2F, 0xA5, 0xBF, 0x64, 0xC8, 0x6E, 0xBA
  120. #endif // !defined(INIT_USBAUDIO_PRODUCT_NAME)
  121. // USB Component ID
  122. #define STATIC_KSCOMPONENTID_USBAUDIO 
  123.     0x8F1275F0, 0x26E9, 0x4264, 0xBA, 0x4D, 0x39, 0xFF, 0xF0, 0x1D, 0x94, 0xAA
  124. DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA", KSCOMPONENTID_USBAUDIO);
  125. #define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO)
  126. // USB Terminals
  127. #define INIT_USB_TERMINAL(guid, id)
  128. {
  129.     (guid)->Data1 = 0xDFF219E0 + (USHORT)(id);
  130.     (guid)->Data2 = 0xF70F;
  131.     (guid)->Data3 = 0x11D0;
  132.     (guid)->Data4[0] = 0xb9;
  133.     (guid)->Data4[1] = 0x17;
  134.     (guid)->Data4[2] = 0x00;
  135.     (guid)->Data4[3] = 0xa0;
  136.     (guid)->Data4[4] = 0xc9;
  137.     (guid)->Data4[5] = 0x22;
  138.     (guid)->Data4[6] = 0x31;
  139.     (guid)->Data4[7] = 0x96;
  140. }
  141. #define EXTRACT_USB_TERMINAL(guid)
  142.     (USHORT)((guid)->Data1 - 0xDFF219E0)
  143. #define DEFINE_USB_TERMINAL_GUID(id)
  144.     0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  145. #define STATIC_KSNODETYPE_MICROPHONE
  146.     DEFINE_USB_TERMINAL_GUID(0x0201)
  147. DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE);
  148. #define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE)
  149. #define STATIC_KSNODETYPE_DESKTOP_MICROPHONE
  150.     DEFINE_USB_TERMINAL_GUID(0x0202)
  151. DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_MICROPHONE);
  152. #define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE)
  153. #define STATIC_KSNODETYPE_PERSONAL_MICROPHONE
  154.     DEFINE_USB_TERMINAL_GUID(0x0203)
  155. DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PERSONAL_MICROPHONE);
  156. #define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE)
  157. #define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE
  158.     DEFINE_USB_TERMINAL_GUID(0x0204)
  159. DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE);
  160. #define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE)
  161. #define STATIC_KSNODETYPE_MICROPHONE_ARRAY
  162.     DEFINE_USB_TERMINAL_GUID(0x0205)
  163. DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE_ARRAY);
  164. #define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY)
  165. #define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY
  166.     DEFINE_USB_TERMINAL_GUID(0x0206)
  167. DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PROCESSING_MICROPHONE_ARRAY);
  168. #define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY)
  169. #define STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR 
  170.     0x830a44f2, 0xa32d, 0x476b,  0xbe, 0x97, 0x42, 0x84, 0x56, 0x73, 0xb3, 0x5a
  171. DEFINE_GUIDSTRUCT("830a44f2-a32d-476b-be97-42845673b35a", KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR);
  172. #define KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR)
  173. #define STATIC_KSNODETYPE_SPEAKER
  174.     DEFINE_USB_TERMINAL_GUID(0x0301)
  175. DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER);
  176. #define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER)
  177. #define STATIC_KSNODETYPE_HEADPHONES
  178.     DEFINE_USB_TERMINAL_GUID(0x0302)
  179. DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADPHONES);
  180. #define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES)
  181. #define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO
  182.     DEFINE_USB_TERMINAL_GUID(0x0303)
  183. DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO);
  184. #define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO)
  185. #define STATIC_KSNODETYPE_DESKTOP_SPEAKER
  186.     DEFINE_USB_TERMINAL_GUID(0x0304)
  187. DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_SPEAKER);
  188. #define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER)
  189. #define STATIC_KSNODETYPE_ROOM_SPEAKER
  190.     DEFINE_USB_TERMINAL_GUID(0x0305)
  191. DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ROOM_SPEAKER);
  192. #define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER)
  193. #define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER
  194.     DEFINE_USB_TERMINAL_GUID(0x0306)
  195. DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_COMMUNICATION_SPEAKER);
  196. #define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER)
  197. #define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER
  198.     DEFINE_USB_TERMINAL_GUID(0x0307)
  199. DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER);
  200. #define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER)
  201. #define STATIC_KSNODETYPE_HANDSET
  202.     DEFINE_USB_TERMINAL_GUID(0x0401)
  203. DEFINE_GUIDSTRUCT("DFF21DE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HANDSET);
  204. #define KSNODETYPE_HANDSET DEFINE_GUIDNAMED(KSNODETYPE_HANDSET)
  205. #define STATIC_KSNODETYPE_HEADSET
  206.     DEFINE_USB_TERMINAL_GUID(0x0402)
  207. DEFINE_GUIDSTRUCT("DFF21DE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADSET);
  208. #define KSNODETYPE_HEADSET DEFINE_GUIDNAMED(KSNODETYPE_HEADSET)
  209. #define STATIC_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION
  210.     DEFINE_USB_TERMINAL_GUID(0x0403)
  211. DEFINE_GUIDSTRUCT("DFF21DE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION);
  212. #define KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION DEFINE_GUIDNAMED(KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION)
  213. #define STATIC_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE
  214.     DEFINE_USB_TERMINAL_GUID(0x0404)
  215. DEFINE_GUIDSTRUCT("DFF21DE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE);
  216. #define KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE)
  217. #define STATIC_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE
  218.     DEFINE_USB_TERMINAL_GUID(0x0405)
  219. DEFINE_GUIDSTRUCT("DFF21DE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE);
  220. #define KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE)
  221. #define STATIC_KSNODETYPE_PHONE_LINE
  222.     DEFINE_USB_TERMINAL_GUID(0x0501)
  223. DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONE_LINE);
  224. #define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE)
  225. #define STATIC_KSNODETYPE_TELEPHONE
  226.     DEFINE_USB_TERMINAL_GUID(0x0502)
  227. DEFINE_GUIDSTRUCT("DFF21EE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TELEPHONE);
  228. #define KSNODETYPE_TELEPHONE DEFINE_GUIDNAMED(KSNODETYPE_TELEPHONE)
  229. #define STATIC_KSNODETYPE_DOWN_LINE_PHONE
  230.     DEFINE_USB_TERMINAL_GUID(0x0503)
  231. DEFINE_GUIDSTRUCT("DFF21EE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DOWN_LINE_PHONE);
  232. #define KSNODETYPE_DOWN_LINE_PHONE DEFINE_GUIDNAMED(KSNODETYPE_DOWN_LINE_PHONE)
  233. #define STATIC_KSNODETYPE_ANALOG_CONNECTOR
  234.     DEFINE_USB_TERMINAL_GUID(0x601)
  235. DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR);
  236. #define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR)
  237. #define STATIC_KSNODETYPE_DIGITAL_AUDIO_INTERFACE
  238.     DEFINE_USB_TERMINAL_GUID(0x0602)
  239. DEFINE_GUIDSTRUCT("DFF21FE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DIGITAL_AUDIO_INTERFACE);
  240. #define KSNODETYPE_DIGITAL_AUDIO_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_DIGITAL_AUDIO_INTERFACE)
  241. #define STATIC_KSNODETYPE_LINE_CONNECTOR
  242.     DEFINE_USB_TERMINAL_GUID(0x0603)
  243. DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR);
  244. #define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR)
  245. #define STATIC_KSNODETYPE_LEGACY_AUDIO_CONNECTOR
  246.     DEFINE_USB_TERMINAL_GUID(0x0604)
  247. DEFINE_GUIDSTRUCT("DFF21FE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEGACY_AUDIO_CONNECTOR);
  248. #define KSNODETYPE_LEGACY_AUDIO_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LEGACY_AUDIO_CONNECTOR)
  249. #define STATIC_KSNODETYPE_SPDIF_INTERFACE
  250.     DEFINE_USB_TERMINAL_GUID(0x0605)
  251. DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE);
  252. #define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE)
  253. #define STATIC_KSNODETYPE_1394_DA_STREAM
  254.     DEFINE_USB_TERMINAL_GUID(0x0606)
  255. DEFINE_GUIDSTRUCT("DFF21FE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DA_STREAM);
  256. #define KSNODETYPE_1394_DA_STREAM DEFINE_GUIDNAMED(KSNODETYPE_1394_DA_STREAM)
  257. #define STATIC_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK
  258.     DEFINE_USB_TERMINAL_GUID(0x0607)
  259. DEFINE_GUIDSTRUCT("DFF21FE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DV_STREAM_SOUNDTRACK);
  260. #define KSNODETYPE_1394_DV_STREAM_SOUNDTRACK DEFINE_GUIDNAMED(KSNODETYPE_1394_DV_STREAM_SOUNDTRACK)
  261. #define STATIC_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE
  262.     DEFINE_USB_TERMINAL_GUID(0x0701)
  263. DEFINE_GUIDSTRUCT("DFF220E1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE);
  264. #define KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE DEFINE_GUIDNAMED(KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE)
  265. #define STATIC_KSNODETYPE_EQUALIZATION_NOISE
  266.     DEFINE_USB_TERMINAL_GUID(0x0702)
  267. DEFINE_GUIDSTRUCT("DFF220E2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_EQUALIZATION_NOISE);
  268. #define KSNODETYPE_EQUALIZATION_NOISE DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZATION_NOISE)
  269. #define STATIC_KSNODETYPE_CD_PLAYER
  270.     DEFINE_USB_TERMINAL_GUID(0x0703)
  271. DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER);
  272. #define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER)
  273. #define STATIC_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE
  274.     DEFINE_USB_TERMINAL_GUID(0x0704)
  275. DEFINE_GUIDSTRUCT("DFF220E4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE);
  276. #define KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE DEFINE_GUIDNAMED(KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE)
  277. #define STATIC_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE
  278.     DEFINE_USB_TERMINAL_GUID(0x0705)
  279. DEFINE_GUIDSTRUCT("DFF220E5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE);
  280. #define KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE DEFINE_GUIDNAMED(KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE)
  281. #define STATIC_KSNODETYPE_MINIDISK
  282.     DEFINE_USB_TERMINAL_GUID(0x0706)
  283. DEFINE_GUIDSTRUCT("DFF220E6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MINIDISK);
  284. #define KSNODETYPE_MINIDISK DEFINE_GUIDNAMED(KSNODETYPE_MINIDISK)
  285. #define STATIC_KSNODETYPE_ANALOG_TAPE
  286.     DEFINE_USB_TERMINAL_GUID(0x0707)
  287. DEFINE_GUIDSTRUCT("DFF220E7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_TAPE);
  288. #define KSNODETYPE_ANALOG_TAPE DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_TAPE)
  289. #define STATIC_KSNODETYPE_PHONOGRAPH
  290.     DEFINE_USB_TERMINAL_GUID(0x0708)
  291. DEFINE_GUIDSTRUCT("DFF220E8-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONOGRAPH);
  292. #define KSNODETYPE_PHONOGRAPH DEFINE_GUIDNAMED(KSNODETYPE_PHONOGRAPH)
  293. #define STATIC_KSNODETYPE_VCR_AUDIO
  294.     DEFINE_USB_TERMINAL_GUID(0x0708)
  295. DEFINE_GUIDSTRUCT("DFF220E9-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VCR_AUDIO);
  296. #define KSNODETYPE_VCR_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VCR_AUDIO)
  297. #define STATIC_KSNODETYPE_VIDEO_DISC_AUDIO
  298.     DEFINE_USB_TERMINAL_GUID(0x070A)
  299. DEFINE_GUIDSTRUCT("DFF220EA-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_DISC_AUDIO);
  300. #define KSNODETYPE_VIDEO_DISC_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_DISC_AUDIO)
  301. #define STATIC_KSNODETYPE_DVD_AUDIO
  302.     DEFINE_USB_TERMINAL_GUID(0x070B)
  303. DEFINE_GUIDSTRUCT("DFF220EB-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DVD_AUDIO);
  304. #define KSNODETYPE_DVD_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DVD_AUDIO)
  305. #define STATIC_KSNODETYPE_TV_TUNER_AUDIO
  306.     DEFINE_USB_TERMINAL_GUID(0x070C)
  307. DEFINE_GUIDSTRUCT("DFF220EC-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TV_TUNER_AUDIO);
  308. #define KSNODETYPE_TV_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_TV_TUNER_AUDIO)
  309. #define STATIC_KSNODETYPE_SATELLITE_RECEIVER_AUDIO
  310.     DEFINE_USB_TERMINAL_GUID(0x070D)
  311. DEFINE_GUIDSTRUCT("DFF220ED-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SATELLITE_RECEIVER_AUDIO);
  312. #define KSNODETYPE_SATELLITE_RECEIVER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_SATELLITE_RECEIVER_AUDIO)
  313. #define STATIC_KSNODETYPE_CABLE_TUNER_AUDIO
  314.     DEFINE_USB_TERMINAL_GUID(0x070E)
  315. DEFINE_GUIDSTRUCT("DFF220EE-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CABLE_TUNER_AUDIO);
  316. #define KSNODETYPE_CABLE_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_CABLE_TUNER_AUDIO)
  317. #define STATIC_KSNODETYPE_DSS_AUDIO
  318.     DEFINE_USB_TERMINAL_GUID(0x070F)
  319. DEFINE_GUIDSTRUCT("DFF220EF-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DSS_AUDIO);
  320. #define KSNODETYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DSS_AUDIO)
  321. #define STATIC_KSNODETYPE_RADIO_RECEIVER
  322.     DEFINE_USB_TERMINAL_GUID(0x0710)
  323. DEFINE_GUIDSTRUCT("DFF220F0-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_RECEIVER);
  324. #define KSNODETYPE_RADIO_RECEIVER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_RECEIVER)
  325. #define STATIC_KSNODETYPE_RADIO_TRANSMITTER
  326.     DEFINE_USB_TERMINAL_GUID(0x0711)
  327. DEFINE_GUIDSTRUCT("DFF220F1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_TRANSMITTER);
  328. #define KSNODETYPE_RADIO_TRANSMITTER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_TRANSMITTER)
  329. #define STATIC_KSNODETYPE_MULTITRACK_RECORDER
  330.     DEFINE_USB_TERMINAL_GUID(0x0712)
  331. DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MULTITRACK_RECORDER);
  332. #define KSNODETYPE_MULTITRACK_RECORDER DEFINE_GUIDNAMED(KSNODETYPE_MULTITRACK_RECORDER)
  333. #define STATIC_KSNODETYPE_SYNTHESIZER
  334.     DEFINE_USB_TERMINAL_GUID(0x0713)
  335. DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER);
  336. #define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
  337. // Microsoft's WDMAUD virtual swsynth pin name guid
  338. #define STATIC_KSNODETYPE_SWSYNTH
  339.     0x423274A0L, 0x8B81, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  340. DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788", KSNODETYPE_SWSYNTH);
  341. #define KSNODETYPE_SWSYNTH DEFINE_GUIDNAMED(KSNODETYPE_SWSYNTH)
  342. // Microsoft's SWMIDI midi pin and node name guid
  343. #define STATIC_KSNODETYPE_SWMIDI
  344.     0xCB9BEFA0L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  345. DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788", KSNODETYPE_SWMIDI);
  346. #define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI)
  347. #define STATIC_KSNODETYPE_DRM_DESCRAMBLE
  348.     0xFFBB6E3FL, 0xCCFE, 0x4D84, 0x90, 0xD9, 0x42, 0x14, 0x18, 0xB0, 0x3A, 0x8E
  349. DEFINE_GUIDSTRUCT("FFBB6E3F-CCFE-4D84-90D9-421418B03A8E", KSNODETYPE_DRM_DESCRAMBLE);
  350. #define KSNODETYPE_DRM_DESCRAMBLE DEFINE_GUIDNAMED(KSNODETYPE_DRM_DESCRAMBLE)
  351. // General categories
  352. #define STATIC_KSCATEGORY_AUDIO 
  353.     0x6994AD04L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  354. DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO);
  355. #define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO)
  356. #define STATIC_KSCATEGORY_VIDEO 
  357.     0x6994AD05L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  358. DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO);
  359. #define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO)
  360. #define STATIC_KSCATEGORY_TEXT 
  361.     0x6994AD06L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  362. DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT);
  363. #define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
  364. #define STATIC_KSCATEGORY_NETWORK 
  365.     0x67C9CC3CL, 0x69C4, 0x11D2, 0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  366. DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK);
  367. #define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK)
  368. #define STATIC_KSCATEGORY_TOPOLOGY 
  369.     0xDDA54A40L, 0x1E4C, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00
  370. DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY);
  371. #define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY)
  372. #define STATIC_KSCATEGORY_VIRTUAL 
  373.     0x3503EAC4L, 0x1F26, 0x11D1, 0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  374. DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL);
  375. #define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL)
  376. #define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL 
  377.     0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  378. DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
  379. #define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
  380. #define STATIC_KSCATEGORY_SYSAUDIO 
  381.     0xA7C7A5B1L, 0x5AF3, 0x11D1, 0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07
  382. DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO);
  383. #define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO)
  384. #define STATIC_KSCATEGORY_WDMAUD 
  385.     0x3E227E76L, 0x690D, 0x11D2, 0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1
  386. DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD);
  387. #define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD)
  388. #define STATIC_KSCATEGORY_AUDIO_GFX 
  389.     0x9BAF9572L, 0x340C, 0x11D3, 0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F
  390. DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX);
  391. #define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX)
  392. #define STATIC_KSCATEGORY_AUDIO_SPLITTER 
  393.     0x9EA331FAL, 0xB91B, 0x45F8, 0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE
  394. DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER);
  395. #define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
  396. #define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER
  397. #define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER
  398. #define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE
  399. #define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE
  400. #define STATIC_KSCATEGORY_AUDIO_DEVICE 
  401.     0xFBF6F530L, 0x07B9, 0x11D2, 0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  402. DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE);
  403. #define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE)
  404. #define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE 
  405.     0xD6C5066EL, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  406. DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE);
  407. #define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE)
  408. #define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE 
  409.     0xD6C50671L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  410. DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE);
  411. #define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE)
  412. #define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE 
  413.     0xD6C50674L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  414. DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
  415. #define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
  416. // Special pin category for wdmaud
  417. #define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME 
  418.     0x47A4FA20L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88
  419. DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME);
  420. #define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME)
  421. // Escalante Platform Interface
  422. #define STATIC_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER 
  423.     0x74f3aea8L, 0x9768, 0x11d1, 0x8e, 0x07, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e
  424. DEFINE_GUIDSTRUCT("74f3aea8-9768-11d1-8e07-00a0c95ec22e", KSCATEGORY_ESCALANTE_PLATFORM_DRIVER);
  425. #define KSCATEGORY_ESCALANTE_PLATFORM_DRIVER DEFINE_GUIDNAMED(KSCATEGORY_ESCALANTE_PLATFORM_DRIVER)
  426. // -- major types ---
  427. // 'vids' == MEDIATYPE_Video,
  428. #define STATIC_KSDATAFORMAT_TYPE_VIDEO
  429.     0x73646976L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  430. DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO);
  431. #define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO)
  432. // 'auds' == MEDIATYPE_Audio
  433. #define STATIC_KSDATAFORMAT_TYPE_AUDIO
  434.     0x73647561L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  435. DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO);
  436. #define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO)
  437. // 'txts' == MEDIATYPE_Text
  438. #define STATIC_KSDATAFORMAT_TYPE_TEXT
  439.     0x73747874L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  440. DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT);
  441. #define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT)
  442. #if !defined( DEFINE_WAVEFORMATEX_GUID )
  443. #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  444. #endif
  445. #define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX
  446.     0x00000000L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  447. DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX);
  448. #define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX)
  449. #define INIT_WAVEFORMATEX_GUID(Guid, x)
  450. {
  451.     *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;
  452.     (Guid)->Data1 = (USHORT)(x);
  453. }
  454. #define EXTRACT_WAVEFORMATEX_ID(Guid)
  455.     (USHORT)((Guid)->Data1)
  456. #define IS_VALID_WAVEFORMATEX_GUID(Guid)
  457.     (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1, sizeof(GUID) - sizeof(USHORT)))
  458. #if !defined(INIT_MMREG_MID)
  459. //{d5a47fa7-6d98-11d1-a21a-00a0c9223196}
  460. #define INIT_MMREG_MID(guid, id)
  461. {
  462.     (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);
  463.     (guid)->Data2 = 0x6d98;
  464.     (guid)->Data3 = 0x11d1;
  465.     (guid)->Data4[0] = 0xa2;
  466.     (guid)->Data4[1] = 0x1a;
  467.     (guid)->Data4[2] = 0x00;
  468.     (guid)->Data4[3] = 0xa0;
  469.     (guid)->Data4[4] = 0xc9;
  470.     (guid)->Data4[5] = 0x22;
  471.     (guid)->Data4[6] = 0x31;
  472.     (guid)->Data4[7] = 0x96;
  473. }
  474. #define EXTRACT_MMREG_MID(guid)
  475.     (USHORT)((guid)->Data1 - 0xd5a47fa7)
  476. #define DEFINE_MMREG_MID_GUID(id)
  477.     0xd5a47fa7+(USHORT)(id), 0x6d98, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  478. #define IS_COMPATIBLE_MMREG_MID(guid)
  479.     (((guid)->Data1 >= 0xd5a47fa7) &&
  480.     ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&
  481.     ((guid)->Data2 == 0x6d98) &&
  482.     ((guid)->Data3 == 0x11d1) &&
  483.     ((guid)->Data4[0] == 0xa2) &&
  484.     ((guid)->Data4[1] == 0x1a) &&
  485.     ((guid)->Data4[2] == 0x00) &&
  486.     ((guid)->Data4[3] == 0xa0) &&
  487.     ((guid)->Data4[4] == 0xc9) &&
  488.     ((guid)->Data4[5] == 0x22) &&
  489.     ((guid)->Data4[6] == 0x31) &&
  490.     ((guid)->Data4[7] == 0x96))
  491. #endif // !defined(INIT_MMREG_MID)
  492. #if !defined(INIT_MMREG_PID)
  493. //{e36dc2ac-6d9a-11d1-a21a-00a0c9223196}
  494. #define INIT_MMREG_PID(guid, id)
  495. {
  496.     (guid)->Data1 = 0xe36dc2ac + (USHORT)(id);
  497.     (guid)->Data2 = 0x6d9a;
  498.     (guid)->Data3 = 0x11d1;
  499.     (guid)->Data4[0] = 0xa2;
  500.     (guid)->Data4[1] = 0x1a;
  501.     (guid)->Data4[2] = 0x00;
  502.     (guid)->Data4[3] = 0xa0;
  503.     (guid)->Data4[4] = 0xc9;
  504.     (guid)->Data4[5] = 0x22;
  505.     (guid)->Data4[6] = 0x31;
  506.     (guid)->Data4[7] = 0x96;
  507. }
  508. #define EXTRACT_MMREG_PID(guid)
  509.     (USHORT)((guid)->Data1 - 0xe36dc2ac)
  510. #define DEFINE_MMREG_PID_GUID(id)
  511.     0xe36dc2ac+(USHORT)(id), 0x6d9a, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  512. #define IS_COMPATIBLE_MMREG_PID(guid)
  513.     (((guid)->Data1 >= 0xe36dc2ac) &&
  514.     ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&
  515.     ((guid)->Data2 == 0x6d9a) &&
  516.     ((guid)->Data3 == 0x11d1) &&
  517.     ((guid)->Data4[0] == 0xa2) &&
  518.     ((guid)->Data4[1] == 0x1a) &&
  519.     ((guid)->Data4[2] == 0x00) &&
  520.     ((guid)->Data4[3] == 0xa0) &&
  521.     ((guid)->Data4[4] == 0xc9) &&
  522.     ((guid)->Data4[5] == 0x22) &&
  523.     ((guid)->Data4[6] == 0x31) &&
  524.     ((guid)->Data4[7] == 0x96))
  525. #endif // !defined(INIT_MMREG_PID)
  526. #define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG
  527.     0x6dba3190L, 0x67bd, 0x11cf, 0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
  528. DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG);
  529. #define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG)
  530. #define STATIC_KSDATAFORMAT_SUBTYPE_PCM
  531.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM)
  532. DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM);
  533. #define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
  534. #if defined(_INC_MMREG)
  535. #define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
  536.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_IEEE_FLOAT)
  537. DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT);
  538. #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
  539. #define STATIC_KSDATAFORMAT_SUBTYPE_DRM
  540.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DRM)
  541. DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DRM);
  542. #define KSDATAFORMAT_SUBTYPE_DRM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DRM)
  543. #define STATIC_KSDATAFORMAT_SUBTYPE_ALAW
  544.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ALAW)
  545. DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ALAW);
  546. #define KSDATAFORMAT_SUBTYPE_ALAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ALAW)
  547. #define STATIC_KSDATAFORMAT_SUBTYPE_MULAW
  548.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MULAW)
  549. DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MULAW);
  550. #define KSDATAFORMAT_SUBTYPE_MULAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MULAW)
  551. #define STATIC_KSDATAFORMAT_SUBTYPE_ADPCM
  552.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ADPCM)
  553. DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ADPCM);
  554. #define KSDATAFORMAT_SUBTYPE_ADPCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ADPCM)
  555. #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG
  556.     DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MPEG)
  557. DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MPEG);
  558. #define KSDATAFORMAT_SUBTYPE_MPEG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG)
  559. #endif // defined(_INC_MMREG)
  560. #define STATIC_KSDATAFORMAT_SPECIFIER_VC_ID
  561.     0xAD98D184L, 0xAAC3, 0x11D0, 0xA4, 0x1C, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  562. DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196", KSDATAFORMAT_SPECIFIER_VC_ID);
  563. #define KSDATAFORMAT_SPECIFIER_VC_ID DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VC_ID)
  564. #define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
  565.     0x05589f81L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a
  566. DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX);
  567. #define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
  568. #define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND
  569.     0x518590a2L, 0xa184, 0x11d0, 0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
  570. DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND);
  571. #define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND)
  572. #if defined(_INC_MMSYSTEM) || defined(_INC_MMREG)
  573. #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  574. #include <pshpack1.h>
  575. #endif
  576. typedef struct {
  577.     KSDATAFORMAT    DataFormat;
  578.     WAVEFORMATEX    WaveFormatEx;
  579. } KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX;
  580. #ifndef _WAVEFORMATEXTENSIBLE_
  581. #define _WAVEFORMATEXTENSIBLE_
  582. typedef struct {
  583.     WAVEFORMATEX    Format;
  584.     union {
  585.         WORD wValidBitsPerSample;       /* bits of precision  */
  586.         WORD wSamplesPerBlock;          /* valid if wBitsPerSample==0 */
  587.         WORD wReserved;                 /* If neither applies, set to zero. */
  588.     } Samples;
  589.     DWORD           dwChannelMask;      /* which channels are */
  590.                                         /* present in stream  */
  591.     GUID            SubFormat;
  592. } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
  593. #endif // !_WAVEFORMATEXTENSIBLE_
  594. #if !defined(WAVE_FORMAT_EXTENSIBLE)
  595. #define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE
  596. #endif // !defined(WAVE_FORMAT_EXTENSIBLE)
  597. // DirectSound buffer description
  598. typedef struct {
  599.     ULONG               Flags;
  600.     ULONG               Control;
  601.     WAVEFORMATEX        WaveFormatEx;
  602. } KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC;
  603. // DirectSound format
  604. typedef struct {
  605.     KSDATAFORMAT        DataFormat;
  606.     KSDSOUND_BUFFERDESC BufferDesc;
  607. } KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND;
  608. #if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  609. #include <poppack.h>
  610. #endif
  611. #endif // defined(_INC_MMSYSTEM) || defined(_INC_MMREG)
  612. // DirectSound buffer flags
  613. #define KSDSOUND_BUFFER_PRIMARY             0x00000001
  614. #define KSDSOUND_BUFFER_STATIC              0x00000002
  615. #define KSDSOUND_BUFFER_LOCHARDWARE         0x00000004
  616. #define KSDSOUND_BUFFER_LOCSOFTWARE         0x00000008
  617. // DirectSound buffer control flags
  618. #define KSDSOUND_BUFFER_CTRL_3D             0x00000001
  619. #define KSDSOUND_BUFFER_CTRL_FREQUENCY      0x00000002
  620. #define KSDSOUND_BUFFER_CTRL_PAN            0x00000004
  621. #define KSDSOUND_BUFFER_CTRL_VOLUME         0x00000008
  622. #define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010
  623. typedef struct {
  624. #if defined(_NTDDK_)
  625.     ULONGLONG        PlayOffset;
  626.     ULONGLONG        WriteOffset;
  627. #else // !_NTDDK_
  628.     DWORDLONG        PlayOffset;
  629.     DWORDLONG        WriteOffset;
  630. #endif // !_NTDDK_
  631. } KSAUDIO_POSITION, *PKSAUDIO_POSITION;
  632. //===========================================================================
  633. // DirectSound3D HAL
  634. typedef struct _DS3DVECTOR {
  635.     union {
  636.         FLOAT x;
  637.         FLOAT dvX;
  638.     };
  639.     union {
  640.         FLOAT y;
  641.         FLOAT dvY;
  642.     };
  643.     union {
  644.         FLOAT z;
  645.         FLOAT dvZ;
  646.     };
  647. } DS3DVECTOR, *PDS3DVECTOR;
  648. //===========================================================================
  649. //===========================================================================
  650. // KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3}
  651. #define STATIC_KSPROPSETID_DirectSound3DListener
  652.     0x437b3414L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
  653. DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener);
  654. #define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener)
  655. typedef enum {
  656.     KSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
  657.     KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
  658.     KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
  659.     KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
  660.     KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
  661.     KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
  662.     KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
  663.     KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
  664.     KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
  665. } KSPROPERTY_DIRECTSOUND3DLISTENER;
  666. typedef struct {
  667.     DS3DVECTOR  Position;
  668.     DS3DVECTOR  Velocity;
  669.     DS3DVECTOR  OrientFront;
  670.     DS3DVECTOR  OrientTop;
  671.     FLOAT       DistanceFactor;
  672.     FLOAT       RolloffFactor;
  673.     FLOAT       DopplerFactor;
  674. } KSDS3D_LISTENER_ALL, *PKSDS3D_LISTENER_ALL;
  675. typedef struct {
  676.     DS3DVECTOR  Front;
  677.     DS3DVECTOR  Top;
  678. } KSDS3D_LISTENER_ORIENTATION, *PKSDS3D_LISTENER_ORIENTATION;
  679. //===========================================================================
  680. //===========================================================================
  681. // KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3}
  682. #define STATIC_KSPROPSETID_DirectSound3DBuffer
  683.     0x437b3411L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
  684. DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3", KSPROPSETID_DirectSound3DBuffer);
  685. #define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer)
  686. typedef enum {
  687.     KSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
  688.     KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
  689.     KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
  690.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
  691.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
  692.     KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
  693.     KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
  694.     KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
  695.     KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
  696. } KSPROPERTY_DIRECTSOUND3DBUFFER;
  697. typedef struct {
  698.     DS3DVECTOR  Position;
  699.     DS3DVECTOR  Velocity;
  700.     ULONG       InsideConeAngle;
  701.     ULONG       OutsideConeAngle;
  702.     DS3DVECTOR  ConeOrientation;
  703.     LONG        ConeOutsideVolume;
  704.     FLOAT       MinDistance;
  705.     FLOAT       MaxDistance;
  706.     ULONG       Mode;
  707. } KSDS3D_BUFFER_ALL, *PKSDS3D_BUFFER_ALL;
  708. typedef struct {
  709.     ULONG  InsideConeAngle;
  710.     ULONG  OutsideConeAngle;
  711. } KSDS3D_BUFFER_CONE_ANGLES, *PKSDS3D_BUFFER_CONE_ANGLES;
  712. #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE   (-1)
  713. #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN         5
  714. #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW      10
  715. #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE        20
  716. #define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX         180
  717. #define KSDSOUND_3D_MODE_NORMAL          0x00000000
  718. #define KSDSOUND_3D_MODE_HEADRELATIVE    0x00000001
  719. #define KSDSOUND_3D_MODE_DISABLE         0x00000002
  720. typedef struct {
  721.    KSDATARANGE              DataRange;
  722.    ULONG                    MaximumChannels;
  723.    ULONG                    MinimumBitsPerSample;
  724.    ULONG                    MaximumBitsPerSample;
  725.    ULONG                    MinimumSampleFrequency;
  726.    ULONG                    MaximumSampleFrequency;
  727. } KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO;
  728. //---------------------------------------------------------------------------
  729. #define STATIC_KSDATAFORMAT_SUBTYPE_RIFF
  730.     0x4995DAEEL, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  731. DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFF);
  732. #define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF)
  733. #define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE
  734.     0xe436eb8bL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70
  735. DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_RIFFWAVE);
  736. #define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE)
  737. //===========================================================================
  738. //===========================================================================
  739. #define STATIC_KSPROPSETID_Bibliographic 
  740.     0x07BA150EL, 0xE2B1, 0x11D0, 0xAC, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  741. DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196", KSPROPSETID_Bibliographic);
  742. #define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic)
  743. //Repeatable tags contain all entries within the property, each preceeded by length
  744. typedef enum {
  745.     KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ',
  746.     KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ',
  747.     KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ',
  748.     KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ',
  749.     KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ',
  750.     KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ',
  751.     KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ',
  752.     KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ',
  753.     KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ',
  754.     KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ',
  755.     KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ',
  756.     KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ',
  757.     KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ',
  758.     KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ',
  759.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ',
  760.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ',
  761.     KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ',
  762.     KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ',
  763.     KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ',
  764.     KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ',
  765.     KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ',
  766.     KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ',
  767.     KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ',
  768.     KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ',
  769.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ',
  770.     KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ',
  771.     KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ',
  772.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ',
  773.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ',
  774.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ',
  775.     KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ',
  776.     KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ',
  777.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ',
  778.     KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ',
  779.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ',
  780.     KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 '
  781. } KSPROPERTY_BIBLIOGRAPHIC;
  782. #define STATIC_KSPROPSETID_TopologyNode
  783.     0x45FFAAA1L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
  784. DEFINE_GUIDSTRUCT("45FFAAA1-6E1B-11D0-BCF2-444553540000", KSPROPSETID_TopologyNode);
  785. #define KSPROPSETID_TopologyNode DEFINE_GUIDNAMED(KSPROPSETID_TopologyNode)
  786. typedef enum {
  787.     KSPROPERTY_TOPOLOGYNODE_ENABLE = 1,
  788.     KSPROPERTY_TOPOLOGYNODE_RESET
  789. } KSPROPERTY_TOPOLOGYNODE;
  790. //===========================================================================
  791. #if defined(_NTDDK_)
  792. typedef NTSTATUS (CALLBACK *PRTAUDIOGETPOSITION)(IN PFILE_OBJECT PinFileObject,
  793.                                                  OUT PUCHAR *ppPlayPosition,
  794.                                                  OUT PLONG plOffset);
  795. #endif // defined(_NTDDK_)
  796. #define STATIC_KSPROPSETID_RtAudio
  797.     0xa855a48c, 0x2f78, 0x4729, 0x90, 0x51, 0x19, 0x68, 0x74, 0x6b, 0x9e, 0xef
  798. DEFINE_GUIDSTRUCT("A855A48C-2F78-4729-9051-1968746B9EEF", KSPROPSETID_RtAudio);
  799. #define KSPROPSETID_RtAudio DEFINE_GUIDNAMED(KSPROPSETID_RtAudio)
  800. typedef enum {
  801.     KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION
  802. } KSPROPERTY_RTAUDIO;
  803. //===========================================================================
  804. #define STATIC_KSPROPSETID_DrmAudioStream
  805.     0x2f2c8ddd, 0x4198, 0x4fac, 0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6
  806. DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream);
  807. #define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream)
  808. typedef enum {
  809.     KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
  810. } KSPROPERTY_DRMAUDIOSTREAM;
  811. //===========================================================================
  812. #define STATIC_KSPROPSETID_Audio
  813.     0x45FFAAA0L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
  814. DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio);
  815. #define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio)
  816. typedef enum {
  817.     KSPROPERTY_AUDIO_LATENCY = 1,
  818.     KSPROPERTY_AUDIO_COPY_PROTECTION,
  819.     KSPROPERTY_AUDIO_CHANNEL_CONFIG,
  820.     KSPROPERTY_AUDIO_VOLUMELEVEL,
  821.     KSPROPERTY_AUDIO_POSITION,
  822.     KSPROPERTY_AUDIO_DYNAMIC_RANGE,
  823.     KSPROPERTY_AUDIO_QUALITY,
  824.     KSPROPERTY_AUDIO_SAMPLING_RATE,
  825.     KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
  826.     KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
  827.     KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
  828.     KSPROPERTY_AUDIO_MUX_SOURCE,
  829.     KSPROPERTY_AUDIO_MUTE,
  830.     KSPROPERTY_AUDIO_BASS,
  831.     KSPROPERTY_AUDIO_MID,
  832.     KSPROPERTY_AUDIO_TREBLE,
  833.     KSPROPERTY_AUDIO_BASS_BOOST,
  834.     KSPROPERTY_AUDIO_EQ_LEVEL,
  835.     KSPROPERTY_AUDIO_NUM_EQ_BANDS,
  836.     KSPROPERTY_AUDIO_EQ_BANDS,
  837.     KSPROPERTY_AUDIO_AGC,
  838.     KSPROPERTY_AUDIO_DELAY,
  839.     KSPROPERTY_AUDIO_LOUDNESS,
  840.     KSPROPERTY_AUDIO_WIDE_MODE,
  841.     KSPROPERTY_AUDIO_WIDENESS,
  842.     KSPROPERTY_AUDIO_REVERB_LEVEL,
  843.     KSPROPERTY_AUDIO_CHORUS_LEVEL,
  844.     KSPROPERTY_AUDIO_DEV_SPECIFIC,
  845.     KSPROPERTY_AUDIO_DEMUX_DEST,
  846.     KSPROPERTY_AUDIO_STEREO_ENHANCE,
  847.     KSPROPERTY_AUDIO_MANUFACTURE_GUID,
  848.     KSPROPERTY_AUDIO_PRODUCT_GUID,
  849.     KSPROPERTY_AUDIO_CPU_RESOURCES,
  850.     KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
  851.     KSPROPERTY_AUDIO_SURROUND_ENCODE,
  852.     KSPROPERTY_AUDIO_3D_INTERFACE,
  853.     KSPROPERTY_AUDIO_PEAKMETER,
  854.     KSPROPERTY_AUDIO_ALGORITHM_INSTANCE,
  855.     KSPROPERTY_AUDIO_FILTER_STATE,
  856.     KSPROPERTY_AUDIO_PREFERRED_STATUS
  857. } KSPROPERTY_AUDIO;
  858. // Audio quality constants
  859. #define KSAUDIO_QUALITY_WORST               0x0
  860. #define KSAUDIO_QUALITY_PC                  0x1
  861. #define KSAUDIO_QUALITY_BASIC               0x2
  862. #define KSAUDIO_QUALITY_ADVANCED            0x3
  863. // Audio CPU resource constants
  864. #define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU  0x00000000
  865. #define KSAUDIO_CPU_RESOURCES_HOST_CPU      0x7FFFFFFF
  866. typedef struct {
  867.     BOOL    fCopyrighted;
  868.     BOOL    fOriginal;
  869. } KSAUDIO_COPY_PROTECTION, *PKSAUDIO_COPY_PROTECTION;
  870. typedef struct {
  871.     LONG    ActiveSpeakerPositions;
  872. } KSAUDIO_CHANNEL_CONFIG, *PKSAUDIO_CHANNEL_CONFIG;
  873. // Speaker Positions:
  874. #define SPEAKER_FRONT_LEFT              0x1
  875. #define SPEAKER_FRONT_RIGHT             0x2
  876. #define SPEAKER_FRONT_CENTER            0x4
  877. #define SPEAKER_LOW_FREQUENCY           0x8
  878. #define SPEAKER_BACK_LEFT               0x10
  879. #define SPEAKER_BACK_RIGHT              0x20
  880. #define SPEAKER_FRONT_LEFT_OF_CENTER    0x40
  881. #define SPEAKER_FRONT_RIGHT_OF_CENTER   0x80
  882. #define SPEAKER_BACK_CENTER             0x100
  883. #define SPEAKER_SIDE_LEFT               0x200
  884. #define SPEAKER_SIDE_RIGHT              0x400
  885. #define SPEAKER_TOP_CENTER              0x800
  886. #define SPEAKER_TOP_FRONT_LEFT          0x1000
  887. #define SPEAKER_TOP_FRONT_CENTER        0x2000
  888. #define SPEAKER_TOP_FRONT_RIGHT         0x4000
  889. #define SPEAKER_TOP_BACK_LEFT           0x8000
  890. #define SPEAKER_TOP_BACK_CENTER         0x10000
  891. #define SPEAKER_TOP_BACK_RIGHT          0x20000
  892. // Bit mask locations reserved for future use
  893. #define SPEAKER_RESERVED                0x7FFC0000
  894. // Used to specify that any possible permutation of speaker configurations
  895. #define SPEAKER_ALL                     0x80000000
  896. // DirectSound Speaker Config
  897. #define KSAUDIO_SPEAKER_DIRECTOUT       0
  898. #define KSAUDIO_SPEAKER_MONO            (SPEAKER_FRONT_CENTER)
  899. #define KSAUDIO_SPEAKER_STEREO          (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
  900. #define KSAUDIO_SPEAKER_QUAD            (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | 
  901.                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
  902. #define KSAUDIO_SPEAKER_SURROUND        (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | 
  903.                                          SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
  904. #define KSAUDIO_SPEAKER_5POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | 
  905.                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | 
  906.                                          SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
  907. #define KSAUDIO_SPEAKER_7POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | 
  908.                                          SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | 
  909.                                          SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | 
  910.                                          SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
  911. // DVD Speaker Positions
  912. #define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT   SPEAKER_FRONT_LEFT
  913. #define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER
  914. #define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT  SPEAKER_FRONT_RIGHT
  915. #define KSAUDIO_SPEAKER_GROUND_REAR_LEFT    SPEAKER_BACK_LEFT
  916. #define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT   SPEAKER_BACK_RIGHT
  917. #define KSAUDIO_SPEAKER_TOP_MIDDLE          SPEAKER_TOP_CENTER
  918. #define KSAUDIO_SPEAKER_SUPER_WOOFER        SPEAKER_LOW_FREQUENCY
  919. typedef struct {
  920.     ULONG   QuietCompression;
  921.     ULONG   LoudCompression;
  922. } KSAUDIO_DYNAMIC_RANGE, *PKSAUDIO_DYNAMIC_RANGE;
  923. typedef struct {
  924.     BOOL    Mute;
  925.     LONG    Level;
  926. } KSAUDIO_MIXLEVEL, *PKSAUDIO_MIXLEVEL;
  927. typedef struct {
  928.     BOOL    Mute;
  929.     LONG    Minimum;
  930.     LONG    Maximum;
  931.     LONG    Reset;
  932. } KSAUDIO_MIX_CAPS, *PKSAUDIO_MIX_CAPS;
  933. typedef struct {
  934.     ULONG               InputChannels;
  935.     ULONG               OutputChannels;
  936.     KSAUDIO_MIX_CAPS    Capabilities[1];
  937. } KSAUDIO_MIXCAP_TABLE, *PKSAUDIO_MIXCAP_TABLE;
  938. typedef enum {
  939.     SE_TECH_NONE,
  940.     SE_TECH_ANALOG_DEVICES_PHAT,
  941.     SE_TECH_CREATIVE,
  942.     SE_TECH_NATIONAL_SEMI,
  943.     SE_TECH_YAMAHA_YMERSION,
  944.     SE_TECH_BBE,
  945.     SE_TECH_CRYSTAL_SEMI,
  946.     SE_TECH_QSOUND_QXPANDER,
  947.     SE_TECH_SPATIALIZER,
  948.     SE_TECH_SRS,
  949.     SE_TECH_PLATFORM_TECH,
  950.     SE_TECH_AKM,
  951.     SE_TECH_AUREAL,
  952.     SE_TECH_AZTECH,
  953.     SE_TECH_BINAURA,
  954.     SE_TECH_ESS_TECH,
  955.     SE_TECH_HARMAN_VMAX,
  956.     SE_TECH_NVIDEA,
  957.     SE_TECH_PHILIPS_INCREDIBLE,
  958.     SE_TECH_TEXAS_INST,
  959.     SE_TECH_VLSI_TECH
  960. } SE_TECHNIQUE;
  961. typedef struct {
  962.     SE_TECHNIQUE    Technique;
  963.     ULONG   Center;
  964.     ULONG   Depth;
  965.     ULONG   Reserved;
  966. } KSAUDIO_STEREO_ENHANCE, *PKSAUDIO_STEREO_ENHANCE;
  967. typedef enum {              // preferred device index
  968.     KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0,
  969.     KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT,
  970.     KSPROPERTY_SYSAUDIO_RECORD_DEFAULT,
  971.     KSPROPERTY_SYSAUDIO_MIDI_DEFAULT,
  972.     KSPROPERTY_SYSAUDIO_MIXER_DEFAULT
  973. } KSPROPERTY_SYSAUDIO_DEFAULT_TYPE;
  974. typedef struct {
  975.     BOOL                             Enable;
  976.     KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType;
  977.     ULONG                            Flags;
  978.     ULONG                            Reserved;
  979. } KSAUDIO_PREFERRED_STATUS, *PKSAUDIO_PREFERRED_STATUS;
  980. //===========================================================================
  981. // Topology Node Type GUIDs
  982. #define STATIC_KSNODETYPE_DAC
  983.     0x507AE360L, 0xC554, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  984. DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC);
  985. #define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC)
  986. #define STATIC_KSNODETYPE_ADC
  987.     0x4D837FE0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  988. DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC);
  989. #define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC)
  990. #define STATIC_KSNODETYPE_SRC
  991.     0x9DB7B9E0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  992. DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC);
  993. #define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC)
  994. #define STATIC_KSNODETYPE_SUPERMIX
  995.     0xE573ADC0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  996. DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX);
  997. #define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX)
  998. #define STATIC_KSNODETYPE_MUX
  999.     0x2CEAF780L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1000. DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX);
  1001. #define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX)
  1002. #define STATIC_KSNODETYPE_DEMUX
  1003.     0xC0EB67D4L, 0xE807, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1004. DEFINE_GUIDSTRUCT("C0EB67D4-E807-11D0-958A-00C04FB925D3", KSNODETYPE_DEMUX);
  1005. #define KSNODETYPE_DEMUX DEFINE_GUIDNAMED(KSNODETYPE_DEMUX)
  1006. #define STATIC_KSNODETYPE_SUM
  1007.     0xDA441A60L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1008. DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM);
  1009. #define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM)
  1010. #define STATIC_KSNODETYPE_MUTE
  1011.     0x02B223C0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1012. DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE);
  1013. #define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE)
  1014. #define STATIC_KSNODETYPE_VOLUME
  1015.     0x3A5ACC00L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1016. DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME);
  1017. #define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME)
  1018. #define STATIC_KSNODETYPE_TONE
  1019.     0x7607E580L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1020. DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE);
  1021. #define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE)
  1022. #define STATIC_KSNODETYPE_EQUALIZER
  1023.     0x9D41B4A0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1024. DEFINE_GUIDSTRUCT("9D41B4A0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_EQUALIZER);
  1025. #define KSNODETYPE_EQUALIZER DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZER)
  1026. #define STATIC_KSNODETYPE_AGC
  1027.     0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1028. DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC);
  1029. #define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC)
  1030. #define STATIC_KSNODETYPE_NOISE_SUPPRESS
  1031.     0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5
  1032. DEFINE_GUIDSTRUCT("E07F903F-62FD-4e60-8CDD-DEA7236665B5", KSNODETYPE_NOISE_SUPPRESS);
  1033. #define KSNODETYPE_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSNODETYPE_NOISE_SUPPRESS)
  1034. #define STATIC_KSNODETYPE_DELAY
  1035.     0x144981E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1036. DEFINE_GUIDSTRUCT("144981E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DELAY);
  1037. #define KSNODETYPE_DELAY DEFINE_GUIDNAMED(KSNODETYPE_DELAY)
  1038. #define STATIC_KSNODETYPE_LOUDNESS
  1039.     0x41887440L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1040. DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS);
  1041. #define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS)
  1042. #define STATIC_KSNODETYPE_PROLOGIC_DECODER
  1043.     0x831C2C80L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1044. DEFINE_GUIDSTRUCT("831C2C80-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_PROLOGIC_DECODER);
  1045. #define KSNODETYPE_PROLOGIC_DECODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_DECODER)
  1046. #define STATIC_KSNODETYPE_STEREO_WIDE
  1047.     0xA9E69800L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1048. DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE);
  1049. #define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE)
  1050. #define STATIC_KSNODETYPE_STEREO_ENHANCE
  1051.     0xAF6878ACL, 0xE83F, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1052. DEFINE_GUIDSTRUCT("AF6878AC-E83F-11D0-958A-00C04FB925D3", KSNODETYPE_STEREO_ENHANCE);
  1053. #define KSNODETYPE_STEREO_ENHANCE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_ENHANCE)
  1054. #define STATIC_KSNODETYPE_REVERB
  1055.     0xEF0328E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1056. DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB);
  1057. #define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB)
  1058. #define STATIC_KSNODETYPE_CHORUS
  1059.     0x20173F20L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1060. DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS);
  1061. #define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS)
  1062. #define STATIC_KSNODETYPE_3D_EFFECTS
  1063.     0x55515860L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1064. DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS);
  1065. #define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS)
  1066. #define STATIC_KSNODETYPE_ACOUSTIC_ECHO_CANCEL STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL
  1067. #define KSNODETYPE_ACOUSTIC_ECHO_CANCEL KSCATEGORY_ACOUSTIC_ECHO_CANCEL
  1068. #define STATIC_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL
  1069.     0x1c22c56dL, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10
  1070. DEFINE_GUIDSTRUCT("1C22C56D-9879-4f5b-A389-27996DDC2810", KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL);
  1071. #define KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL)
  1072. #define STATIC_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS
  1073.     0x5ab0882eL, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0
  1074. DEFINE_GUIDSTRUCT("5AB0882E-7274-4516-877D-4EEE99BA4FD0", KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS);
  1075. #define KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS)
  1076. #define STATIC_KSALGORITHMINSTANCE_SYSTEM_AGC
  1077.     0x950e55b9L, 0x877c, 0x4c67, 0xbe, 0x8, 0xe4, 0x7b, 0x56, 0x11, 0x13, 0xa
  1078. DEFINE_GUIDSTRUCT("950E55B9-877C-4c67-BE08-E47B5611130A", KSALGORITHMINSTANCE_SYSTEM_AGC);
  1079. #define KSALGORITHMINSTANCE_SYSTEM_AGC DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_AGC)
  1080. #define STATIC_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR
  1081.     0xB6F5A0A0L, 0x9E61, 0x4F8C, 0x91, 0xE3, 0x76, 0xCF, 0xF, 0x3C, 0x47, 0x1F
  1082. DEFINE_GUIDSTRUCT("B6F5A0A0-9E61-4f8c-91E3-76CF0F3C471F", KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR);
  1083. #define KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR)
  1084. #define STATIC_KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
  1085. #define KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
  1086. #define STATIC_KSNODETYPE_DEV_SPECIFIC
  1087.     0x941C7AC0L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1
  1088. DEFINE_GUIDSTRUCT("941C7AC0-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DEV_SPECIFIC);
  1089. #define KSNODETYPE_DEV_SPECIFIC DEFINE_GUIDNAMED(KSNODETYPE_DEV_SPECIFIC)
  1090. #define STATIC_KSNODETYPE_PROLOGIC_ENCODER
  1091.     0x8074C5B2L, 0x3C66, 0x11D2, 0xB4, 0x5A, 0x30, 0x78, 0x30, 0x2C, 0x20, 0x30
  1092. DEFINE_GUIDSTRUCT("8074C5B2-3C66-11D2-B45A-3078302C2030", KSNODETYPE_PROLOGIC_ENCODER);
  1093. #define KSNODETYPE_PROLOGIC_ENCODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_ENCODER)
  1094. #define KSNODETYPE_SURROUND_ENCODER KSNODETYPE_PROLOGIC_ENCODER
  1095. #define STATIC_KSNODETYPE_PEAKMETER
  1096.     0xa085651eL, 0x5f0d, 0x4b36, 0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e
  1097. DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER);
  1098. #define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER)
  1099. //===========================================================================
  1100. // Topology Node Name GUIDs for common audio nodes
  1101. #define STATIC_KSAUDFNAME_BASS
  1102.     0x185FEDE0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1103. DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_BASS);
  1104. #define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS)
  1105. #define STATIC_KSAUDFNAME_TREBLE
  1106.     0x185FEDE1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1107. DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_TREBLE);
  1108. #define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE)
  1109. #define STATIC_KSAUDFNAME_3D_STEREO
  1110.     0x185FEDE2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1111. DEFINE_GUIDSTRUCT("185FEDE2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_3D_STEREO);
  1112. #define KSAUDFNAME_3D_STEREO DEFINE_GUIDNAMED(KSAUDFNAME_3D_STEREO)
  1113. #define STATIC_KSAUDFNAME_MASTER_VOLUME
  1114.     0x185FEDE3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1115. DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME);
  1116. #define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME)
  1117. #define STATIC_KSAUDFNAME_MASTER_MUTE
  1118.     0x185FEDE4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1119. DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE);
  1120. #define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE)
  1121. #define STATIC_KSAUDFNAME_WAVE_VOLUME
  1122.     0x185FEDE5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1123. DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME);
  1124. #define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME)
  1125. #define STATIC_KSAUDFNAME_WAVE_MUTE
  1126.     0x185FEDE6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1127. DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE);
  1128. #define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE)
  1129. #define STATIC_KSAUDFNAME_MIDI_VOLUME
  1130.     0x185FEDE7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1131. DEFINE_GUIDSTRUCT("185FEDE7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_VOLUME);
  1132. #define KSAUDFNAME_MIDI_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_VOLUME)
  1133. #define STATIC_KSAUDFNAME_MIDI_MUTE
  1134.     0x185FEDE8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1135. DEFINE_GUIDSTRUCT("185FEDE8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_MUTE);
  1136. #define KSAUDFNAME_MIDI_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_MUTE)
  1137. #define STATIC_KSAUDFNAME_CD_VOLUME
  1138.     0x185FEDE9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1139. DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME);
  1140. #define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME)
  1141. #define STATIC_KSAUDFNAME_CD_MUTE
  1142.     0x185FEDEAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1143. DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE);
  1144. #define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE)
  1145. #define STATIC_KSAUDFNAME_LINE_VOLUME
  1146.     0x185FEDEBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1147. DEFINE_GUIDSTRUCT("185FEDEB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_VOLUME);
  1148. #define KSAUDFNAME_LINE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_VOLUME)
  1149. #define STATIC_KSAUDFNAME_LINE_MUTE
  1150.     0x185FEDECL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1151. DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE);
  1152. #define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE)
  1153. #define STATIC_KSAUDFNAME_MIC_VOLUME
  1154.     0x185FEDEDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1155. DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME);
  1156. #define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME)
  1157. #define STATIC_KSAUDFNAME_MIC_MUTE
  1158.     0x185FEDEEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1159. DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE);
  1160. #define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE)
  1161. #define STATIC_KSAUDFNAME_RECORDING_SOURCE
  1162.     0x185FEDEFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1163. DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE);
  1164. #define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE)
  1165. #define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME
  1166.     0x185FEDF0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1167. DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_VOLUME);
  1168. #define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME)
  1169. #define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE
  1170.     0x185FEDF1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1171. DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_MUTE);
  1172. #define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE)
  1173. #define STATIC_KSAUDFNAME_MIDI_IN_VOLUME
  1174.     0x185FEDF2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1175. DEFINE_GUIDSTRUCT("185FEDF2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_IN_VOLUME);
  1176. #define KSAUDFNAME_MIDI_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_IN_VOLUME)
  1177. #define STATIC_KSAUDFNAME_CD_IN_VOLUME
  1178.     0x185FEDF3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1179. DEFINE_GUIDSTRUCT("185FEDF3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_IN_VOLUME);
  1180. #define KSAUDFNAME_CD_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_IN_VOLUME)
  1181. #define STATIC_KSAUDFNAME_LINE_IN_VOLUME
  1182.     0x185FEDF4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1183. DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME);
  1184. #define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME)
  1185. #define STATIC_KSAUDFNAME_MIC_IN_VOLUME
  1186.     0x185FEDF5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1187. DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME);
  1188. #define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME)
  1189. #define STATIC_KSAUDFNAME_WAVE_IN_VOLUME
  1190.     0x185FEDF6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1191. DEFINE_GUIDSTRUCT("185FEDF6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_IN_VOLUME);
  1192. #define KSAUDFNAME_WAVE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_IN_VOLUME)
  1193. #define STATIC_KSAUDFNAME_VOLUME_CONTROL
  1194.     0x185FEDF7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1195. DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL);
  1196. #define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL)
  1197. #define STATIC_KSAUDFNAME_MIDI
  1198.     0x185FEDF8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1199. DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI);
  1200. #define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI)
  1201. #define STATIC_KSAUDFNAME_LINE_IN
  1202.     0x185FEDF9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1203. DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN);
  1204. #define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN)
  1205. #define STATIC_KSAUDFNAME_RECORDING_CONTROL
  1206.     0x185FEDFAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1207. DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL);
  1208. #define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL)
  1209. #define STATIC_KSAUDFNAME_CD_AUDIO
  1210.     0x185FEDFBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1211. DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_AUDIO);
  1212. #define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO)
  1213. #define STATIC_KSAUDFNAME_AUX_VOLUME
  1214.     0x185FEDFCL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1215. DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME);
  1216. #define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME)
  1217. #define STATIC_KSAUDFNAME_AUX_MUTE
  1218.     0x185FEDFDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1219. DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE);
  1220. #define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE)
  1221. #define STATIC_KSAUDFNAME_AUX
  1222.     0x185FEDFEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1223. DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX);
  1224. #define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX)
  1225. #define STATIC_KSAUDFNAME_PC_SPEAKER
  1226.     0x185FEDFFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1227. DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER);
  1228. #define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER)
  1229. #define STATIC_KSAUDFNAME_WAVE_OUT_MIX
  1230.     0x185FEE00L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1231. DEFINE_GUIDSTRUCT("185FEE00-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_OUT_MIX);
  1232. #define KSAUDFNAME_WAVE_OUT_MIX DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_OUT_MIX)
  1233. #define STATIC_KSAUDFNAME_MONO_OUT
  1234.     0xf9b41dc3L, 0x96e2, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1235. DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT);
  1236. #define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT)
  1237. #define STATIC_KSAUDFNAME_STEREO_MIX
  1238.     0xdff077L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1239. DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX);
  1240. #define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX)
  1241. #define STATIC_KSAUDFNAME_MONO_MIX
  1242.     0xdff078L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1243. DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX);
  1244. #define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX)
  1245. #define STATIC_KSAUDFNAME_MONO_OUT_VOLUME
  1246.     0x1ad247ebL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1247. DEFINE_GUIDSTRUCT("1AD247EB-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_VOLUME);
  1248. #define KSAUDFNAME_MONO_OUT_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_VOLUME)
  1249. #define STATIC_KSAUDFNAME_MONO_OUT_MUTE
  1250.     0x1ad247ecL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1251. DEFINE_GUIDSTRUCT("1AD247EC-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_MUTE);
  1252. #define KSAUDFNAME_MONO_OUT_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_MUTE)
  1253. #define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME
  1254.     0x1ad247edL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1255. DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_VOLUME);
  1256. #define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME)
  1257. #define STATIC_KSAUDFNAME_STEREO_MIX_MUTE
  1258.     0x22b0eafdL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1259. DEFINE_GUIDSTRUCT("22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_MUTE);
  1260. #define KSAUDFNAME_STEREO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_MUTE)
  1261. #define STATIC_KSAUDFNAME_MONO_MIX_VOLUME
  1262.     0x22b0eafeL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1263. DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_VOLUME);
  1264. #define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME)
  1265. #define STATIC_KSAUDFNAME_MONO_MIX_MUTE
  1266.     0x2bc31d69L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1267. DEFINE_GUIDSTRUCT("2BC31D69-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_MUTE);
  1268. #define KSAUDFNAME_MONO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_MUTE)
  1269. #define STATIC_KSAUDFNAME_MICROPHONE_BOOST
  1270.     0x2bc31d6aL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1271. DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST);
  1272. #define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST)
  1273. #define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE
  1274.     0x2bc31d6bL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1275. DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_ALTERNATE_MICROPHONE);
  1276. #define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE)
  1277. #define STATIC_KSAUDFNAME_3D_DEPTH
  1278.     0x63ff5747L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1279. DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_DEPTH);
  1280. #define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH)
  1281. #define STATIC_KSAUDFNAME_3D_CENTER
  1282.     0x9f0670b4L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1283. DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_CENTER);
  1284. #define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER)
  1285. #define STATIC_KSAUDFNAME_VIDEO_VOLUME
  1286.     0x9b46e708L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1287. DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_VOLUME);
  1288. #define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME)
  1289. #define STATIC_KSAUDFNAME_VIDEO_MUTE
  1290.     0x9b46e709L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1291. DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_MUTE);
  1292. #define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE)
  1293. #define STATIC_KSAUDFNAME_VIDEO
  1294.     0x915daec4L, 0xa434, 0x11d2, 0xac, 0x52, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68
  1295. DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68", KSAUDFNAME_VIDEO);
  1296. #define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO)
  1297. #define STATIC_KSAUDFNAME_PEAKMETER
  1298.     0x57e24340L, 0xfc5b, 0x4612, 0xa5, 0x62, 0x72, 0xb1, 0x1a, 0x29, 0xdf, 0xae
  1299. DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE", KSAUDFNAME_PEAKMETER);
  1300. #define KSAUDFNAME_PEAKMETER DEFINE_GUIDNAMED(KSAUDFNAME_PEAKMETER)
  1301. // Internal topology node pin definitions
  1302. #define KSNODEPIN_STANDARD_IN       1
  1303. #define KSNODEPIN_STANDARD_OUT      0
  1304. #define KSNODEPIN_SUM_MUX_IN        1   // can be >= 1
  1305. #define KSNODEPIN_SUM_MUX_OUT       0
  1306. #define KSNODEPIN_DEMUX_IN          0
  1307. #define KSNODEPIN_DEMUX_OUT         1   // can be >= 1
  1308. #define KSNODEPIN_AEC_RENDER_IN     1
  1309. #define KSNODEPIN_AEC_RENDER_OUT    0
  1310. #define KSNODEPIN_AEC_CAPTURE_IN    2
  1311. #define KSNODEPIN_AEC_CAPTURE_OUT   3
  1312. //===========================================================================
  1313. //===========================================================================
  1314. #define STATIC_KSMETHODSETID_Wavetable
  1315.     0xDCEF31EBL, 0xD907, 0x11D0, 0x95, 0x83, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1316. DEFINE_GUIDSTRUCT("DCEF31EB-D907-11D0-9583-00C04FB925D3", KSMETHODSETID_Wavetable);
  1317. #define KSMETHODSETID_Wavetable DEFINE_GUIDNAMED(KSMETHODSETID_Wavetable)
  1318. typedef enum {
  1319.     KSMETHOD_WAVETABLE_WAVE_ALLOC,
  1320.     KSMETHOD_WAVETABLE_WAVE_FREE,
  1321.     KSMETHOD_WAVETABLE_WAVE_FIND,
  1322.     KSMETHOD_WAVETABLE_WAVE_WRITE
  1323. } KSMETHOD_WAVETABLE;
  1324. typedef struct {
  1325.     KSIDENTIFIER        Identifier;                     // wave identifier
  1326.     ULONG               Size;                           // wave size
  1327.     BOOL                Looped;                         // wave looped flag
  1328.     ULONG               LoopPoint;                      // wave loop point
  1329.     BOOL                InROM;                          // wave InROM flag
  1330.     KSDATAFORMAT        Format;                         // wave format
  1331. } KSWAVETABLE_WAVE_DESC, *PKSWAVETABLE_WAVE_DESC;
  1332. //===========================================================================
  1333. //===========================================================================
  1334. /*
  1335.     Property sets and items
  1336. */
  1337. //===========================================================================
  1338. //===========================================================================
  1339. #define STATIC_KSPROPSETID_Acoustic_Echo_Cancel
  1340.     0xd7a4af8bL, 0x3dc1, 0x4902, 0x91, 0xea, 0x8a, 0x15, 0xc9, 0x0e, 0x05, 0xb2
  1341. DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2", KSPROPSETID_Acoustic_Echo_Cancel);
  1342. #define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel)
  1343. typedef enum {
  1344.     KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0,
  1345.     KSPROPERTY_AEC_STATUS,
  1346.     KSPROPERTY_AEC_MODE
  1347. } KSPROPERTY_AEC;
  1348. #define AEC_STATUS_FD_HISTORY_UNINITIALIZED             0x0
  1349. #define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED    0x1
  1350. #define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED       0x2
  1351. #define AEC_STATUS_FD_CURRENTLY_CONVERGED               0x8
  1352. #define AEC_MODE_PASS_THROUGH           0x0
  1353. #define AEC_MODE_HALF_DUPLEX            0x1
  1354. #define AEC_MODE_FULL_DUPLEX            0x2
  1355. //===========================================================================
  1356. //===========================================================================
  1357. #define STATIC_KSPROPSETID_Wave_Queued
  1358.     0x16a15b10L, 0x16f0, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
  1359. DEFINE_GUIDSTRUCT("16a15b10-16f0-11d0-a195-0020afd156e4", KSPROPSETID_Wave_Queued);
  1360. #define KSPROPSETID_Wave_Queued DEFINE_GUIDNAMED(KSPROPSETID_Wave_Queued)
  1361. #define KSPROPERTY_WAVE_QUEUED_POSITION                 0x00000001
  1362. #define STATIC_KSMETHODSETID_Wave_Queued
  1363.     0x7432c160L, 0x8827, 0x11cf, 0xa1, 0x02, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
  1364. DEFINE_GUIDSTRUCT("7432c160-8827-11cf-a102-0020afd156e4", KSMETHODSETID_Wave_Queued);
  1365. #define KSMETHODSETID_Wave_Queued DEFINE_GUIDNAMED(KSMETHODSETID_Wave_Queued)
  1366. #define KSMETHOD_WAVE_QUEUED_BREAKLOOP                  0x00000001
  1367. #define STATIC_KSPROPSETID_Wave
  1368.     0x924e54b0L, 0x630f, 0x11cf, 0xad, 0xa7, 0x08, 0x00, 0x3e, 0x30, 0x49, 0x4a
  1369. DEFINE_GUIDSTRUCT("924e54b0-630f-11cf-ada7-08003e30494a", KSPROPSETID_Wave);
  1370. #define KSPROPSETID_Wave DEFINE_GUIDNAMED(KSPROPSETID_Wave)
  1371. typedef enum {
  1372.     KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES,
  1373.     KSPROPERTY_WAVE_INPUT_CAPABILITIES,
  1374.     KSPROPERTY_WAVE_OUTPUT_CAPABILITIES,
  1375.     KSPROPERTY_WAVE_BUFFER,
  1376.     KSPROPERTY_WAVE_FREQUENCY,
  1377.     KSPROPERTY_WAVE_VOLUME,
  1378.     KSPROPERTY_WAVE_PAN
  1379. } KSPROPERTY_WAVE;
  1380. typedef struct {
  1381.     ULONG        ulDeviceType;
  1382. } KSWAVE_COMPATCAPS, *PKSWAVE_COMPATCAPS;
  1383. #define KSWAVE_COMPATCAPS_INPUT                 0x00000000
  1384. #define KSWAVE_COMPATCAPS_OUTPUT                0x00000001
  1385. typedef struct {
  1386.     ULONG  MaximumChannelsPerConnection;
  1387.     ULONG  MinimumBitsPerSample;
  1388.     ULONG  MaximumBitsPerSample;
  1389.     ULONG  MinimumSampleFrequency;
  1390.     ULONG  MaximumSampleFrequency;
  1391.     ULONG  TotalConnections;
  1392.     ULONG  ActiveConnections;
  1393. } KSWAVE_INPUT_CAPABILITIES, *PKSWAVE_INPUT_CAPABILITIES;
  1394. typedef struct {
  1395.     ULONG  MaximumChannelsPerConnection;
  1396.     ULONG  MinimumBitsPerSample;
  1397.     ULONG  MaximumBitsPerSample;
  1398.     ULONG  MinimumSampleFrequency;
  1399.     ULONG  MaximumSampleFrequency;
  1400.     ULONG  TotalConnections;
  1401.     ULONG  StaticConnections;
  1402.     ULONG  StreamingConnections;
  1403.     ULONG  ActiveConnections;
  1404.     ULONG  ActiveStaticConnections;
  1405.     ULONG  ActiveStreamingConnections;
  1406.     ULONG  Total3DConnections;
  1407.     ULONG  Static3DConnections;
  1408.     ULONG  Streaming3DConnections;
  1409.     ULONG  Active3DConnections;
  1410.     ULONG  ActiveStatic3DConnections;
  1411.     ULONG  ActiveStreaming3DConnections;
  1412.     ULONG  TotalSampleMemory;
  1413.     ULONG  FreeSampleMemory;
  1414.     ULONG  LargestFreeContiguousSampleMemory;
  1415. } KSWAVE_OUTPUT_CAPABILITIES, *PKSWAVE_OUTPUT_CAPABILITIES;
  1416. typedef struct {
  1417.     LONG  LeftAttenuation;
  1418.     LONG  RightAttenuation;
  1419. } KSWAVE_VOLUME, *PKSWAVE_VOLUME;
  1420. #define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING   0x00000001
  1421. #define KSWAVE_BUFFER_ATTRIBUTEF_STATIC    0x00000002
  1422. typedef struct {
  1423.     ULONG   Attributes;
  1424.     ULONG   BufferSize;
  1425.     PVOID   BufferAddress;
  1426. } KSWAVE_BUFFER, *PKSWAVE_BUFFER;
  1427. //===========================================================================
  1428. //===========================================================================
  1429. #define STATIC_KSMUSIC_TECHNOLOGY_PORT
  1430.     0x86C92E60L, 0x62E8, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1431. DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT);
  1432. #define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT)
  1433. #define STATIC_KSMUSIC_TECHNOLOGY_SQSYNTH
  1434.     0x0ECF4380L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1435. DEFINE_GUIDSTRUCT("0ECF4380-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_SQSYNTH);
  1436. #define KSMUSIC_TECHNOLOGY_SQSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SQSYNTH)
  1437. #define STATIC_KSMUSIC_TECHNOLOGY_FMSYNTH
  1438.     0x252C5C80L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1439. DEFINE_GUIDSTRUCT("252C5C80-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_FMSYNTH);
  1440. #define KSMUSIC_TECHNOLOGY_FMSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_FMSYNTH)
  1441. #define STATIC_KSMUSIC_TECHNOLOGY_WAVETABLE
  1442.     0x394EC7C0L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1443. DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_WAVETABLE);
  1444. #define KSMUSIC_TECHNOLOGY_WAVETABLE DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_WAVETABLE)
  1445. #define STATIC_KSMUSIC_TECHNOLOGY_SWSYNTH
  1446.     0x37407736L, 0x3620, 0x11D1, 0x85, 0xD3, 0x00, 0x00, 0xF8, 0x75, 0x43, 0x80
  1447. DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380", KSMUSIC_TECHNOLOGY_SWSYNTH);
  1448. #define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH)
  1449. #define STATIC_KSPROPSETID_WaveTable
  1450.     0x8539E660L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1451. DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000", KSPROPSETID_WaveTable);
  1452. #define KSPROPSETID_WaveTable DEFINE_GUIDNAMED(KSPROPSETID_WaveTable)
  1453. typedef enum {
  1454.     KSPROPERTY_WAVETABLE_LOAD_SAMPLE,
  1455.     KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE,
  1456.     KSPROPERTY_WAVETABLE_MEMORY,
  1457.     KSPROPERTY_WAVETABLE_VERSION
  1458. } KSPROPERTY_WAVETABLE;
  1459. typedef struct {
  1460.    KSDATARANGE              DataRange;
  1461.    GUID                     Technology;
  1462.    ULONG                    Channels;
  1463.    ULONG                    Notes;
  1464.    ULONG                    ChannelMask;
  1465. } KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC;
  1466. //===========================================================================
  1467. #define STATIC_KSEVENTSETID_Cyclic
  1468.     0x142C1AC0L, 0x072A, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1469. DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000", KSEVENTSETID_Cyclic);
  1470. #define KSEVENTSETID_Cyclic DEFINE_GUIDNAMED(KSEVENTSETID_Cyclic)
  1471. typedef enum {
  1472.     KSEVENT_CYCLIC_TIME_INTERVAL,
  1473. } KSEVENT_CYCLIC_TIME;
  1474. #define STATIC_KSPROPSETID_Cyclic
  1475.     0x3FFEAEA0L, 0x2BEE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1476. DEFINE_GUIDSTRUCT("3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000", KSPROPSETID_Cyclic);
  1477. #define KSPROPSETID_Cyclic DEFINE_GUIDNAMED(KSPROPSETID_Cyclic)
  1478. typedef enum {
  1479.     KSPROPERTY_CYCLIC_POSITION,
  1480. } KSPROPERTY_CYCLIC;
  1481. //===========================================================================
  1482. #define STATIC_KSEVENTSETID_AudioControlChange
  1483.     0xE85E9698L, 0xFA2F, 0x11D1, 0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3
  1484. DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange);
  1485. #define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange)
  1486. typedef enum {
  1487.     KSEVENT_CONTROL_CHANGE,
  1488. } KSEVENT_AUDIO_CONTROL_CHANGE;
  1489. //===========================================================================
  1490. #define STATIC_KSEVENTSETID_LoopedStreaming
  1491.     0x4682B940L, 0xC6EF, 0x11D0, 0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D
  1492. DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming);
  1493. #define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming)
  1494. typedef enum {
  1495.     KSEVENT_LOOPEDSTREAMING_POSITION,
  1496. } KSEVENT_LOOPEDSTREAMING;
  1497. typedef struct {
  1498.     KSEVENTDATA KsEventData;
  1499. #if defined(_NTDDK_)
  1500.     ULONGLONG   Position;
  1501. #else // !_NTDDK_
  1502.     DWORDLONG   Position;
  1503. #endif // !_NTDDK_
  1504. } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ;
  1505. //===========================================================================
  1506. #define STATIC_KSEVENTSETID_Sysaudio 
  1507.     0x04800320L, 0x4491, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00
  1508. DEFINE_GUIDSTRUCT("04800320-4491-11D1-A050-405705C10000", KSEVENTSETID_Sysaudio);
  1509. #define KSEVENTSETID_Sysaudio DEFINE_GUIDNAMED(KSEVENTSETID_Sysaudio)
  1510. typedef enum {
  1511.     KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE,
  1512.     KSEVENT_SYSAUDIO_CHANGE_DEVICE
  1513. } KSEVENT_SYSAUDIO;
  1514. //===========================================================================
  1515. // @@BEGIN_DDKSPLIT
  1516. #define STATIC_KSPROPSETID_Sysaudio
  1517.     0xCBE3FAA0L, 0xCC75, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6
  1518. DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio);
  1519. #define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio)
  1520. typedef enum {
  1521.     KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1,
  1522.     KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME,
  1523.     KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE,
  1524.     KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME,
  1525.     KSPROPERTY_SYSAUDIO_SELECT_GRAPH,
  1526.     KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE,
  1527.     KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT,
  1528.     KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE,
  1529.     KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK,
  1530.     KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK,
  1531.     KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES,
  1532.     KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX,
  1533.     KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY,
  1534.     KSPROPERTY_SYSAUDIO_INSTANCE_INFO,
  1535.     KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE,
  1536.     KSPROPERTY_SYSAUDIO_COMPONENT_ID,
  1537.     KSPROPERTY_SYSAUDIO_ADDREMOVE_GFX
  1538. } KSPROPERTY_SYSAUDIO;
  1539. typedef struct {
  1540.     KSPROPERTY Property;
  1541.     GUID PinCategory;
  1542.     GUID PinName;
  1543. } SYSAUDIO_CREATE_VIRTUAL_SOURCE, *PSYSAUDIO_CREATE_VIRTUAL_SOURCE;
  1544. typedef struct {
  1545.     BOOL        Enable;
  1546.     HANDLE      hGfx;
  1547.     ULONG       ulOrder;                    // Order of the GFX
  1548.     ULONG       ulType;                     // Type of the GFX
  1549.     ULONG       ulFlags;
  1550.     ULONG       ulDeviceNameOffset;         // DeviceInterface on which this GFX needs to be attached
  1551.     ULONG       ulFriendlyNameOffset;       // Friendly name of the GFX
  1552. } SYSAUDIO_GFX, *PSYSAUDIO_GFX;
  1553. #define GFX_DEVICETYPE_RENDER     1
  1554. #define GFX_DEVICETYPE_CAPTURE    2
  1555. typedef struct {
  1556.     KSPROPERTY Property;
  1557.     ULONG PinId;
  1558.     ULONG NodeId;
  1559.     ULONG Flags;
  1560.     ULONG Reserved;
  1561. } SYSAUDIO_SELECT_GRAPH, *PSYSAUDIO_SELECT_GRAPH;
  1562. typedef struct {
  1563.     KSPROPERTY Property;
  1564.     ULONG Flags;
  1565.     ULONG DeviceNumber;
  1566. } SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO;
  1567. #define SYSAUDIO_FLAGS_DONT_COMBINE_PINS        0x00000001
  1568. typedef struct {
  1569.     KSPROPERTY Property;
  1570.     ULONG Flags;
  1571.     ULONG Index;            // KSPROPERTY_SYSAUDIO_DEFAULT_TYPE
  1572. } SYSAUDIO_PREFERRED_DEVICE, *PSYSAUDIO_PREFERRED_DEVICE;
  1573. #define SYSAUDIO_FLAGS_CLEAR_PREFERRED          0x00000002
  1574. #define STATIC_KSPROPSETID_Sysaudio_Pin 
  1575.     0xA3A53220L, 0xC6E4, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6
  1576. DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin);
  1577. #define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin)
  1578. typedef enum {
  1579.     KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX,
  1580.     KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE,
  1581.     KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE
  1582. } KSPROPERTY_SYSAUDIO_PIN;
  1583. typedef struct {
  1584.     KSPROPERTY  Property;
  1585.     ULONG       MixerPinId;
  1586.     ULONG       Reserved;
  1587. } SYSAUDIO_ATTACH_VIRTUAL_SOURCE, *PSYSAUDIO_ATTACH_VIRTUAL_SOURCE;
  1588. // @@END_DDKSPLIT
  1589. //===========================================================================
  1590. typedef struct {
  1591.     KSPROPERTY  Property;
  1592.     ULONG       NodeId;
  1593.     ULONG       Reserved;
  1594. } KSNODEPROPERTY, *PKSNODEPROPERTY;
  1595. typedef struct {
  1596.     KSNODEPROPERTY NodeProperty;
  1597.     LONG           Channel;                   // value to get or set
  1598.     ULONG          Reserved;
  1599. } KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL;
  1600. typedef struct {
  1601.     KSNODEPROPERTY NodeProperty;
  1602.     ULONG   DevSpecificId;
  1603.     ULONG   DeviceInfo;
  1604.     ULONG   Length;
  1605. } KSNODEPROPERTY_AUDIO_DEV_SPECIFIC, *PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
  1606. typedef struct {
  1607.     KSNODEPROPERTY   NodeProperty;
  1608.     PVOID            ListenerId;
  1609. #ifndef _WIN64
  1610.     ULONG            Reserved;
  1611. #endif // _WIN64
  1612. } KSNODEPROPERTY_AUDIO_3D_LISTENER, *PKSNODEPROPERTY_AUDIO_3D_LISTENER;
  1613. typedef struct {
  1614.     KSNODEPROPERTY   NodeProperty;
  1615.     PVOID            AppContext;
  1616.     ULONG            Length;
  1617. #ifndef _WIN64
  1618.     ULONG            Reserved;
  1619. #endif // _WIN64
  1620. } KSNODEPROPERTY_AUDIO_PROPERTY, *PKSNODEPROPERTY_AUDIO_PROPERTY;
  1621. //===========================================================================
  1622. // {79A9312E-59AE-43b0-A350-8B05284CAB24}
  1623. #define STATIC_KSPROPSETID_AudioGfx
  1624.     0x79a9312eL, 0x59ae, 0x43b0, 0xa3, 0x50, 0x8b, 0x5, 0x28, 0x4c, 0xab, 0x24
  1625. DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24", KSPROPSETID_AudioGfx);
  1626. #define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx)
  1627. typedef enum {
  1628.     KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID,
  1629.     KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
  1630. } KSPROPERTY_AUDIOGFX;
  1631. //===========================================================================
  1632. #define STATIC_KSPROPSETID_Linear
  1633.     0x5A2FFE80L, 0x16B9, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1634. DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000", KSPROPSETID_Linear);
  1635. #define KSPROPSETID_Linear DEFINE_GUIDNAMED(KSPROPSETID_Linear)
  1636. typedef enum {
  1637.     KSPROPERTY_LINEAR_POSITION,
  1638. } KSPROPERTY_LINEAR;
  1639. //===========================================================================
  1640. //
  1641. // Midi definitions
  1642. //
  1643. /*
  1644.     Formats
  1645. */
  1646. #define STATIC_KSDATAFORMAT_TYPE_MUSIC
  1647.     0xE725D360L, 0x62CC, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1648. DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC);
  1649. #define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC)
  1650. // 'mids' == MEDIATYPE_Midi
  1651. #define STATIC_KSDATAFORMAT_TYPE_MIDI
  1652.     0x7364696DL, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  1653. DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI);
  1654. #define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI)
  1655. #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI
  1656.     0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1657. DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI);
  1658. #define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI)
  1659. #define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS
  1660.     0x2CA15FA0L, 0x6CFE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
  1661. DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS);
  1662. #define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS)
  1663. #define STATIC_KSDATAFORMAT_SUBTYPE_RIFFMIDI
  1664.     0x4995DAF0L, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
  1665. DEFINE_GUIDSTRUCT("4995DAF0-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFFMIDI);
  1666. #define KSDATAFORMAT_SUBTYPE_RIFFMIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFMIDI)
  1667. /*
  1668.     KSDATAFORMAT_SUBTYPE_DIRECTMUSIC
  1669.     see DMusicKS.h
  1670. */
  1671. // WARNING! This structure MUST be dword aligned
  1672. // regardless of the number of data bytes.
  1673. typedef struct {
  1674.     ULONG   TimeDeltaMs;        // Delta Milliseconds from the previous midiformat
  1675.                                 // in the packet. The first midiformat in the packet
  1676.                                 // is a delta from the PTS in the KSSTREAM_HEADER.
  1677.     ULONG   ByteCount;          // Number of bytes of data that follow this struct.
  1678. } KSMUSICFORMAT, *PKSMUSICFORMAT;
  1679. //
  1680. // This entire set of MPEG Standard/Dialect Guids are obsolete. Do not use them.
  1681. //
  1682. //====================================================================================================
  1683. //====================================================================================================
  1684. // The following official MPEG Formats, Subtypes and Specifiers are listed as required or optional
  1685. // These official MPEG GUIDs are the preferred method of supporting MPEG/AC-3 media types in new code.
  1686. // Older MPEG GUIDs should also be supported for compatibilty, but these new modes are still required.
  1687. //====================================================================================================
  1688. //====================================================================================================
  1689. /*
  1690. This is a summary of what media types/specifiers will be required for all DVD+DSS+DVB+DTV MPEG decoders.
  1691. These media types are what the decoder driver must accept, hardware support for all of these media types
  1692. may or may not actually be provided by the decoder natively.  These media types are intended to define
  1693. the "officially" supported MPEG/AC-3 media types that all WHQL certified decoders must implement.  This
  1694. specifically includes driver and/or hardware support for all the required standards and dialects.
  1695. All MPEG video decoders must support all of the MPEG video modes shown as [required] below.
  1696. All MPEG audio decoders must support all of the MPEG audio modes shown as [required] below.
  1697. All AC-3 audio decoders must support all of the AC-3 audio modes shown as [required] below.
  1698. The line items shown as [optional] need not be implemented, but are possible formats that might be implemented.
  1699. Note that the input/output pin formats are defined by 2 or 3 GUIDs: TYPE, SUBTYPE, and maybe SPECIFIER.
  1700. The specifiers are included if the data format is a "dialect" that needs to be differentiated during decoding.
  1701. The decoder MUST be prepared to deal with ALL requests for _required_ "Standard" formats OR _required_ "Dialects".
  1702. STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM         [required]
  1703.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO            [required]
  1704.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO           [optional]
  1705.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO            [required]
  1706.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO           [optional]
  1707.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  1708.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  1709.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  1710.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [optional]
  1711.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  1712.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  1713. STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET                [required]
  1714.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO            [optional]
  1715.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO           [optional]
  1716.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO            [optional]
  1717.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO           [optional]
  1718.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  1719.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  1720.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  1721.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [required]
  1722.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  1723.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  1724. STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER               [required]
  1725.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO            [required]
  1726.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO           [required]
  1727.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO            [required]
  1728.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO           [optional]
  1729.     STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO              [required]
  1730.         STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO             [optional]
  1731. Note that the SPECIFIER GUIDs normally identify particular versions of MPEG such as DSS and DVD.
  1732. This approach was taken to minimize the number of DSS/DVB/DVD/DTV etc. media SUBTYPES.
  1733. These specifiers are currently required to disambiguate MPEG syntax _parsing_ by the decoder
  1734. using alternate parsing routines or downloadable firmware or hardware decode settings.
  1735. In the future these specifiers will be extended to cover new KS MPEG flavors such as DVB and DTV.
  1736. Thus, the optional specifiers will be subject to clarification and/or definition as they are needed.
  1737. Important note: Per the ITU MPEG specs, MPEG 2 media may contain pure MPEG 1 syntax and
  1738. any "MPEG 2" PES packets may actually contain MPEG 1 payloads and MPEG 1 syntax.  Some MPEG
  1739. broadcasts can revert from MPEG2 to MPEG1 format data at their discretion, without warning.
  1740. CAUTION: Decoders MUST attempt to process MPEG data AS SOON AS POSSIBLE after reception.
  1741. In particular, elementary MPEG or MPEG PES packet streams should not be aggregated into DVD
  1742. "pack headers" internally before submission to the codec hardware if AT ALL POSSIBLE.  The
  1743. reason is that mpeg data may need to be processed immediately but there may be no additional
  1744. MPEG data forthcoming to fill up the PES packet OR DVD "pack" in a timely fashion.  This is
  1745. particularly true of MPEG dialects that utilize "repeat field signally" to reuse the last
  1746. decoded MPEG video field.
  1747. */
  1748. /////////////////////////////////////////////////////////////////////////
  1749. // The major data type GUIDs that define the data packet encapsulation //
  1750. /////////////////////////////////////////////////////////////////////////
  1751. // STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM
  1752. #define STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM 
  1753.     0x36523b11L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1754. DEFINE_GUIDSTRUCT("36523B11-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM );
  1755. #define KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM)
  1756. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET
  1757. #define STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET 
  1758.     0x36523b12L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1759. DEFINE_GUIDSTRUCT("36523B12-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PES_PACKET );
  1760. #define KSDATAFORMAT_TYPE_STANDARD_PES_PACKET DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PES_PACKET)
  1761. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER
  1762. #define STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER 
  1763.     0x36523b13L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1764. DEFINE_GUIDSTRUCT("36523B13-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER );
  1765. #define KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER)
  1766. ///////////////////////////////////////////////////////////////////////////////
  1767. // The minor data subtype GUIDs that define the exact class of the data type.//
  1768. ///////////////////////////////////////////////////////////////////////////////
  1769. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO
  1770. #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO 
  1771.     0x36523b21L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1772. DEFINE_GUIDSTRUCT("36523B21-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO );
  1773. #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO)
  1774. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO
  1775. #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO 
  1776.     0x36523b22L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1777. DEFINE_GUIDSTRUCT("36523B22-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO );
  1778. #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO)
  1779. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO
  1780. #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO 
  1781.     0x36523b23L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1782. DEFINE_GUIDSTRUCT("36523B23-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO );
  1783. #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO)
  1784. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO
  1785. #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO 
  1786.     0x36523b24L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1787. DEFINE_GUIDSTRUCT("36523B24-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO );
  1788. #define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO)
  1789. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO
  1790. #define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO 
  1791.     0x36523b25L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1792. DEFINE_GUIDSTRUCT("36523B25-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO );
  1793. #define KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO)
  1794. ///////////////////////////////////////////////////////////////////////////////
  1795. // The low-level specifier GUIDs that define the flavor of the data subtype. //
  1796. // Some SUBTYPES, notably MPEG2_VIDEO, MPEG2_AUDIO have different dialects.  //
  1797. // These specifiers are intended to be accompanied by a specifier structure. //
  1798. ///////////////////////////////////////////////////////////////////////////////
  1799. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO
  1800. #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO 
  1801.     0x36523b31L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1802. DEFINE_GUIDSTRUCT("36523B31-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO );
  1803. #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO)
  1804. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO
  1805. #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO 
  1806.     0x36523b32L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1807. DEFINE_GUIDSTRUCT("36523B32-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO );
  1808. #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO)
  1809. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO    Associated with KS_MPEGVIDEOINFO2 defined later
  1810. #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO 
  1811.     0x36523b33L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1812. DEFINE_GUIDSTRUCT("36523B33-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO );
  1813. #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO)
  1814. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO    Associated with KS_MPEGAUDIOINFO defined later
  1815. #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO 
  1816.     0x36523b34L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1817. DEFINE_GUIDSTRUCT("36523B34-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO );
  1818. #define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO)
  1819. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO
  1820. #define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO 
  1821.     0x36523b35L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a
  1822. DEFINE_GUIDSTRUCT("36523B35-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO );
  1823. #define KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO)
  1824. //====================================================================================================
  1825. //====================================================================================================
  1826. //                              *** COMPATIBILITY WARNING ***
  1827. // The *following* older DSS, MPEG, DVD & AC-3 GUID definitions are retained for backward compability.
  1828. // These MPEG GUIDs should also be supported for compatibilty, but the above newer modes are still required.
  1829. //====================================================================================================
  1830. //====================================================================================================
  1831. //
  1832. // DSS definitions
  1833. //
  1834. #define STATIC_KSDATAFORMAT_SUBTYPE_DSS_VIDEO
  1835.     0xa0af4f81L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a
  1836. DEFINE_GUIDSTRUCT("a0af4f81-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_VIDEO);
  1837. #define KSDATAFORMAT_SUBTYPE_DSS_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_VIDEO)
  1838. #define STATIC_KSDATAFORMAT_SUBTYPE_DSS_AUDIO
  1839.     0xa0af4f82L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a
  1840. DEFINE_GUIDSTRUCT("a0af4f82-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_AUDIO);
  1841. #define KSDATAFORMAT_SUBTYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_AUDIO)
  1842. //
  1843. // End of obsolete MPEG definitions.
  1844. //
  1845. //
  1846. // mpeg 1 definitions
  1847. //
  1848. #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Packet
  1849.     0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70
  1850. DEFINE_GUIDSTRUCT("e436eb80-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Packet);
  1851. #define KSDATAFORMAT_SUBTYPE_MPEG1Packet DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Packet)
  1852. #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Payload
  1853.     0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70
  1854. DEFINE_GUIDSTRUCT("e436eb81-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Payload);
  1855. #define KSDATAFORMAT_SUBTYPE_MPEG1Payload DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Payload)
  1856. // MEDIASUBTYPE_MPEG1Video
  1857. #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Video
  1858.     0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70
  1859. DEFINE_GUIDSTRUCT("e436eb86-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Video);
  1860. #define KSDATAFORMAT_SUBTYPE_MPEG1Video DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Video)
  1861. //FORMAT_MPEGVideo
  1862. #define STATIC_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO
  1863.     0x05589f82L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a
  1864. DEFINE_GUIDSTRUCT("05589f82-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO);
  1865. #define KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO)
  1866. //
  1867. // mpeg 2 definitions
  1868. //
  1869. #define STATIC_KSDATAFORMAT_TYPE_MPEG2_PES
  1870.     0xe06d8020L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
  1871. DEFINE_GUIDSTRUCT("e06d8020-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PES);
  1872. #define KSDATAFORMAT_TYPE_MPEG2_PES DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PES)
  1873. #define STATIC_KSDATAFORMAT_TYPE_MPEG2_PROGRAM
  1874.     0xe06d8022L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
  1875. DEFINE_GUIDSTRUCT("e06d8022-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PROGRAM);
  1876. #define KSDATAFORMAT_TYPE_MPEG2_PROGRAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PROGRAM)
  1877. #define STATIC_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT
  1878.     0xe06d8023L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
  1879. DEFINE_GUIDSTRUCT("e06d8023-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_TRANSPORT);
  1880. #define KSDATAFORMAT_TYPE_MPEG2_TRANSPORT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_TRANSPORT)
  1881. #define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO
  1882.     0xe06d8026L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
  1883. DEFINE_GUIDSTRUCT("e06d8026-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO);
  1884. #define KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO)
  1885. // use MPEGVIDEOINFO2 (defined below) with KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  1886. #define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  1887.     0xe06d80e3L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea
  1888. DEFINE_GUIDSTRUCT("e06d80e3-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO);
  1889. #define KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO)
  1890. //
  1891. // Mpeg2 video properties
  1892. //
  1893. #define STATIC_KSPROPSETID_Mpeg2Vid
  1894.     0xC8E11B60L, 0x0CC9, 0x11D0, 0xBD, 0x69, 0x00, 0x35, 0x05, 0xC1, 0x03, 0xA9
  1895. DEFINE_GUIDSTRUCT("C8E11B60-0CC9-11D0-BD69-003505C103A9", KSPROPSETID_Mpeg2Vid);
  1896. #define  KSPROPSETID_Mpeg2Vid DEFINE_GUIDNAMED( KSPROPSETID_Mpeg2Vid )
  1897. typedef enum {
  1898.     KSPROPERTY_MPEG2VID_MODES,          // available output modes of decoder
  1899.     KSPROPERTY_MPEG2VID_CUR_MODE,       // current mode of the decoder
  1900.     KSPROPERTY_MPEG2VID_4_3_RECT,       // output coordinates for 4:3 source
  1901.     KSPROPERTY_MPEG2VID_16_9_RECT,      // output coordinates for 16:9 source
  1902.     KSPROPERTY_MPEG2VID_16_9_PANSCAN,   // pan and scan vectors
  1903. } KSPROPERTY_MPEG2VID;
  1904. //