Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

294 lines
7.5 KiB

  1. /*++
  2. Copyright (c) 1997-2000 Microsoft Corporation All Rights Reserved
  3. Module Name:
  4. wavtable.h
  5. Abstract:
  6. Declaration of wave miniport tables.
  7. --*/
  8. #ifndef _MSVAD_WAVTABLE_H_
  9. #define _MSVAD_WAVTABLE_H_
  10. //=============================================================================
  11. // Defines
  12. //=============================================================================
  13. #define STATIC_KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF\
  14. DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DOLBY_AC3_SPDIF)
  15. DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF);
  16. #define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF)
  17. //=============================================================================
  18. static
  19. KSDATARANGE_AUDIO PinDataRangesStream[] =
  20. {
  21. {
  22. {
  23. sizeof(KSDATARANGE_AUDIO),
  24. 0,
  25. 0,
  26. 0,
  27. STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
  28. STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
  29. STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
  30. },
  31. MAX_CHANNELS_PCM,
  32. MIN_BITS_PER_SAMPLE_PCM,
  33. MAX_BITS_PER_SAMPLE_PCM,
  34. MIN_SAMPLE_RATE,
  35. MAX_SAMPLE_RATE
  36. },
  37. // For AC3 support, add a new datarange.
  38. //
  39. {
  40. {
  41. sizeof(KSDATARANGE_AUDIO),
  42. 0,
  43. 0,
  44. 0,
  45. STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
  46. STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF),
  47. STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
  48. },
  49. MAX_CHANNELS_AC3,
  50. MIN_BITS_PER_SAMPLE_AC3,
  51. MAX_BITS_PER_SAMPLE_AC3,
  52. MIN_SAMPLE_RATE_AC3,
  53. MAX_SAMPLE_RATE_AC3
  54. }
  55. };
  56. static
  57. PKSDATARANGE PinDataRangePointersStream[] =
  58. {
  59. PKSDATARANGE(&PinDataRangesStream[0])
  60. };
  61. static
  62. PKSDATARANGE PinDataRangePointersAC3Stream[] =
  63. {
  64. PKSDATARANGE(&PinDataRangesStream[1])
  65. };
  66. //=============================================================================
  67. static
  68. KSDATARANGE PinDataRangesBridge[] =
  69. {
  70. {
  71. sizeof(KSDATARANGE),
  72. 0,
  73. 0,
  74. 0,
  75. STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
  76. STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG),
  77. STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE)
  78. },
  79. {
  80. sizeof(KSDATARANGE),
  81. 0,
  82. 0,
  83. 0,
  84. STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
  85. STATICGUIDOF(KSDATAFORMAT_SUBTYPE_AC3_AUDIO),
  86. STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE)
  87. }
  88. };
  89. static
  90. PKSDATARANGE PinDataRangePointersBridge[] =
  91. {
  92. &PinDataRangesBridge[0]
  93. };
  94. //=============================================================================
  95. static
  96. PCPIN_DESCRIPTOR MiniportPins[] =
  97. {
  98. // Wave In Streaming Pin (Capture) KSPIN_WAVE_CAPTURE_SINK
  99. {
  100. MAX_OUTPUT_STREAMS,
  101. MAX_OUTPUT_STREAMS,
  102. 0,
  103. NULL,
  104. {
  105. 0,
  106. NULL,
  107. 0,
  108. NULL,
  109. SIZEOF_ARRAY(PinDataRangePointersStream),
  110. PinDataRangePointersStream,
  111. KSPIN_DATAFLOW_OUT,
  112. KSPIN_COMMUNICATION_SINK,
  113. &KSCATEGORY_AUDIO,
  114. &KSAUDFNAME_RECORDING_CONTROL,
  115. 0
  116. }
  117. },
  118. // Wave In Bridge Pin (Capture - From Topology) KSPIN_WAVE_CAPTURE_SOURCE
  119. {
  120. 0,
  121. 0,
  122. 0,
  123. NULL,
  124. {
  125. 0,
  126. NULL,
  127. 0,
  128. NULL,
  129. SIZEOF_ARRAY(PinDataRangePointersBridge),
  130. PinDataRangePointersBridge,
  131. KSPIN_DATAFLOW_IN,
  132. KSPIN_COMMUNICATION_NONE,
  133. &KSCATEGORY_AUDIO,
  134. NULL,
  135. 0
  136. }
  137. },
  138. // Wave Out Streaming Pin (Renderer) KSPIN_WAVE_RENDER_SINK
  139. {
  140. MAX_INPUT_STREAMS,
  141. MAX_INPUT_STREAMS,
  142. 0,
  143. NULL,
  144. {
  145. 0,
  146. NULL,
  147. 0,
  148. NULL,
  149. SIZEOF_ARRAY(PinDataRangePointersStream),
  150. PinDataRangePointersStream,
  151. KSPIN_DATAFLOW_IN,
  152. KSPIN_COMMUNICATION_SINK,
  153. &KSCATEGORY_AUDIO,
  154. &KSAUDFNAME_VOLUME_CONTROL,
  155. 0
  156. }
  157. },
  158. // Wave Out Bridge Pin (Renderer) KSPIN_WAVE_RENDER_SOURCE
  159. {
  160. 0,
  161. 0,
  162. 0,
  163. NULL,
  164. {
  165. 0,
  166. NULL,
  167. 0,
  168. NULL,
  169. SIZEOF_ARRAY(PinDataRangePointersBridge),
  170. PinDataRangePointersBridge,
  171. KSPIN_DATAFLOW_OUT,
  172. KSPIN_COMMUNICATION_NONE,
  173. &KSCATEGORY_AUDIO,
  174. NULL,
  175. 0
  176. }
  177. },
  178. // Wave Out AC3 Bridge Pin (Renderer) KSPIN_WAVE_AC3_RENDER_SINK
  179. {
  180. MAX_AC3_INPUT_STREAMS,
  181. MAX_AC3_INPUT_STREAMS,
  182. 0,
  183. NULL,
  184. {
  185. 0,
  186. NULL,
  187. 0,
  188. NULL,
  189. SIZEOF_ARRAY(PinDataRangePointersAC3Stream),
  190. PinDataRangePointersAC3Stream,
  191. KSPIN_DATAFLOW_IN,
  192. KSPIN_COMMUNICATION_SINK,
  193. &KSCATEGORY_AUDIO,
  194. NULL,
  195. 0
  196. }
  197. },
  198. // Wave Out AC3 Bridge Pin (Renderer) KSPIN_WAVE_AC3_RENDER_SOURCE
  199. {
  200. 0,
  201. 0,
  202. 0,
  203. NULL,
  204. {
  205. 0,
  206. NULL,
  207. 0,
  208. NULL,
  209. SIZEOF_ARRAY(PinDataRangePointersBridge),
  210. PinDataRangePointersBridge,
  211. KSPIN_DATAFLOW_OUT,
  212. KSPIN_COMMUNICATION_NONE,
  213. &KSCATEGORY_AUDIO,
  214. NULL,
  215. 0
  216. }
  217. },
  218. };
  219. //=============================================================================
  220. static
  221. PCNODE_DESCRIPTOR MiniportNodes[] =
  222. {
  223. // KSNODE_WAVE_ADC
  224. {
  225. 0, // Flags
  226. NULL, // AutomationTable
  227. &KSNODETYPE_ADC, // Type
  228. NULL // Name
  229. },
  230. // KSNODE_WAVE_DAC
  231. {
  232. 0, // Flags
  233. NULL, // AutomationTable
  234. &KSNODETYPE_DAC, // Type
  235. NULL // Name
  236. }
  237. };
  238. //=============================================================================
  239. static
  240. PCCONNECTION_DESCRIPTOR MiniportConnections[] =
  241. {
  242. { PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SOURCE, KSNODE_WAVE_ADC, 1 },
  243. { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, KSPIN_WAVE_CAPTURE_SINK },
  244. { PCFILTER_NODE, KSPIN_WAVE_RENDER_SINK, KSNODE_WAVE_DAC, 1 },
  245. { KSNODE_WAVE_DAC, 0, PCFILTER_NODE, KSPIN_WAVE_RENDER_SOURCE },
  246. { PCFILTER_NODE, KSPIN_WAVE_AC3_RENDER_SINK, PCFILTER_NODE, KSPIN_WAVE_AC3_RENDER_SOURCE}
  247. };
  248. //=============================================================================
  249. static
  250. PCFILTER_DESCRIPTOR MiniportFilterDescriptor =
  251. {
  252. 0, // Version
  253. NULL, // AutomationTable
  254. sizeof(PCPIN_DESCRIPTOR), // PinSize
  255. SIZEOF_ARRAY(MiniportPins), // PinCount
  256. MiniportPins, // Pins
  257. sizeof(PCNODE_DESCRIPTOR), // NodeSize
  258. SIZEOF_ARRAY(MiniportNodes), // NodeCount
  259. MiniportNodes, // Nodes
  260. SIZEOF_ARRAY(MiniportConnections), // ConnectionCount
  261. MiniportConnections, // Connections
  262. 0, // CategoryCount
  263. NULL // Categories - NULL->use defaults (AUDIO RENDER CAPTURE)
  264. };
  265. #endif