1 /*
2 Copyright (c) 2006-2008 dogbert <dogber1@gmail.com>
3 All rights reserved.
4
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
7 are met:
8 1. Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13 3. The name of the author may not be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28 #ifndef _INTERFACES_HPP_
29 #define _INTERFACES_HPP_
30
31 #include <portcls.h>
32 #include <stdunk.h>
33
34 #define MAXLEN_DMA_BUFFER 0x18000
35 #define MAX_OUTPUT_STREAMS 1
36 #define MAX_INPUT_STREAMS 1
37 #define MAX_AC3_INPUT_STREAMS 1
38
39 // PCM Info
40 #define MIN_CHANNELS 2
41 #define MAX_CHANNELS_PCM 8
42 #define MIN_BITS_PER_SAMPLE_PCM 16
43 #define MAX_BITS_PER_SAMPLE_PCM 32
44 #define MIN_SAMPLE_RATE 44100
45 #define MAX_SAMPLE_RATE 96000
46 #define MAX_SAMPLE_RATE_MULTI 48000
47
48 // AC3 Info
49 #define MAX_CHANNELS_AC3 2
50 #define MIN_BITS_PER_SAMPLE_AC3 16
51 #define MAX_BITS_PER_SAMPLE_AC3 16
52 #define MIN_SAMPLE_RATE_AC3 48000
53 #define MAX_SAMPLE_RATE_AC3 48000
54
55 // WMA-Pro Info
56 #define MAX_CHANNELS_WMA 2
57 #define MIN_BITS_PER_SAMPLE_WMA 16
58 #define MAX_BITS_PER_SAMPLE_WMA 16
59 #define MIN_SAMPLE_RATE_WMA 44100
60 #define MAX_SAMPLE_RATE_WMA 48000
61
62 #define PCM_OUT_STREAM 0
63 #define PCM_IN_STREAM 1
64 #define AC3_OUT_STREAM 2
65
66 #define CHAN_LEFT 0
67 #define CHAN_RIGHT 1
68 #define CHAN_MASTER (-1)
69
70 #define IN_CHANNEL 0
71 #define OUT_CHANNEL 1
72
73 #define UInt32 ULONG
74 #define UInt16 USHORT
75 #define UInt8 BYTE
76 #define Int32 LONG
77
78 #define KSSTATE_STOP_AC3 (KSSTATE)5
79 #define KSSTATE_RUN_AC3 (KSSTATE)6
80
81 // Interface ICMITopology
DECLARE_INTERFACE_(ICMITopology,IMiniportTopology)82 DECLARE_INTERFACE_(ICMITopology,IMiniportTopology)
83 {
84 STDMETHOD_(NTSTATUS,GetDescription)
85 ( THIS_
86 PPCFILTER_DESCRIPTOR* OutFilterDescriptor
87 ) PURE;
88 STDMETHOD_(NTSTATUS,DataRangeIntersection)
89 ( THIS_
90 ULONG PinId,
91 PKSDATARANGE DataRange,
92 PKSDATARANGE MatchingDataRange,
93 ULONG OutputBufferLength,
94 PVOID ResultantFormat,
95 PULONG ResultantFormatLength
96 ) PURE;
97 STDMETHOD_(NTSTATUS,Init)
98 ( THIS_
99 PUNKNOWN UnknownAdapter,
100 PRESOURCELIST ResourceList,
101 PPORTTOPOLOGY Port
102 ) PURE;
103 STDMETHOD_(NTSTATUS,loadMixerSettingsFromMemory)
104 ( THIS_
105 void
106 ) PURE;
107 STDMETHOD_(NTSTATUS,storeMixerSettingsToMemory)
108 ( THIS_
109 void
110 ) PURE;
111 };
112 typedef ICMITopology *PCMITOPOLOGY;
113
114 // Interface IMiniportWaveCMI
DECLARE_INTERFACE_(IMiniportWaveCMI,IUnknown)115 DECLARE_INTERFACE_(IMiniportWaveCMI,IUnknown)
116 {
117 STDMETHOD_(void,ServiceWaveISR)
118 ( THIS_
119 ULONG channel
120 ) PURE;
121
122 STDMETHOD_(void,powerUp)
123 ( THIS_
124 void
125 ) PURE;
126 STDMETHOD_(void,powerDown)
127 ( THIS_
128 void
129 ) PURE;
130 };
131 typedef IMiniportWaveCMI *PCMIWAVE;
132
133 // structure to avoid the fucking COM crapola
134 typedef struct CMI8738Info {
135 int chipVersion;
136 UInt32 maxChannels;
137 bool canAC3HW, canAC3SW;
138 bool canMultiChannel;
139 bool doAC3SW;
140 bool hasDualDAC;
141 UInt32* IOBase;
142 UInt32* MPUBase;
143 PCMIWAVE WaveMiniport;
144 PCMITOPOLOGY TopoMiniport;
145 bool enableSPDIFOut;
146 bool enableSPDIFIn;
147 bool enableSPDIFInMonitor;
148 UInt32 formatMask;
149 UInt32 regFUNCTRL0;
150 } CMI8738Info;
151 typedef CMI8738Info* PCMI8738Info;
152
153 typedef struct VolumeTable {
154 UInt32 node;
155 UInt8 reg;
156 UInt8 mask;
157 UInt8 shift;
158 Int32 max;
159 Int32 min;
160 Int32 step;
161 Int32 dbshift;
162 } VolumeTable;
163
164 // Interface ICMIAdapter
DECLARE_INTERFACE_(ICMIAdapter,IUnknown)165 DECLARE_INTERFACE_(ICMIAdapter,IUnknown)
166 {
167 STDMETHOD_(NTSTATUS,init)
168 ( THIS_
169 PRESOURCELIST ResourceList,
170 PDEVICE_OBJECT DeviceObject
171 ) PURE;
172 STDMETHOD_(PINTERRUPTSYNC,getInterruptSync)
173 ( THIS_
174 void
175 ) PURE;
176 STDMETHOD_(PDEVICE_OBJECT,getDeviceObject)
177 ( THIS_
178 void
179 ) PURE;
180 STDMETHOD_(PCMI8738Info,getCMI8738Info)
181 ( THIS_
182 void
183 ) PURE;
184 STDMETHOD_(UInt8, readUInt8)
185 ( THIS_
186 UInt8 reg
187 ) PURE;
188 STDMETHOD_(void, writeUInt8)
189 ( THIS_
190 UInt8 reg,
191 UInt8 value
192 ) PURE;
193 STDMETHOD_(void, setUInt8Bit)
194 ( THIS_
195 UInt8 reg,
196 UInt8 flag
197 ) PURE;
198 STDMETHOD_(void, clearUInt8Bit)
199 ( THIS_
200 UInt8 reg,
201 UInt8 flag
202 ) PURE;
203 STDMETHOD_(UInt16, readUInt16)
204 ( THIS_
205 UInt8 reg
206 ) PURE;
207 STDMETHOD_(void, writeUInt16)
208 ( THIS_
209 UInt8 reg,
210 UInt16 value
211 ) PURE;
212 STDMETHOD_(UInt32, readUInt32)
213 ( THIS_
214 UInt8 reg
215 ) PURE;
216 STDMETHOD_(void, writeUInt32)
217 ( THIS_
218 UInt8 reg,
219 UInt32 value
220 ) PURE;
221 STDMETHOD_(void, setUInt32Bit)
222 ( THIS_
223 UInt8 reg,
224 UInt32 flag
225 ) PURE;
226 STDMETHOD_(void, clearUInt32Bit)
227 ( THIS_
228 UInt8 reg,
229 UInt32 flag
230 ) PURE;
231 STDMETHOD_(UInt8, readMixer)
232 ( THIS_
233 UInt8 index
234 ) PURE;
235 STDMETHOD_(void, writeMixer)
236 ( THIS_
237 UInt8 index,
238 UInt8 value
239 ) PURE;
240 STDMETHOD_(void, setMixerBit)
241 ( THIS_
242 UInt8 index,
243 UInt8 flag
244 ) PURE;
245 STDMETHOD_(void, clearMixerBit)
246 ( THIS_
247 UInt8 index,
248 UInt8 flag
249 ) PURE;
250 STDMETHOD_(void,resetMixer)
251 ( THIS_
252 ) PURE;
253 STDMETHOD_(NTSTATUS,activateMPU)
254 ( THIS_
255 ULONG* MPUBase
256 ) PURE;
257 STDMETHOD_(NTSTATUS,loadSBMixerFromMemory)
258 ( THIS_
259 ) PURE;
260 };
261 typedef ICMIAdapter *PCMIADAPTER;
262
263 // GUIDs
264
265 // {34B338A2-BB40-4ecd-B97A-AEB03F325825}
266 DEFINE_GUID(IID_ICMIAdapter, 0x34b338a2, 0xbb40, 0x4ecd, 0xb9, 0x7a, 0xae, 0xb0, 0x3f, 0x32, 0x58, 0x25);
267 // {60BB55CF-C960-4ddf-B7A4-243978B2FE7B}
268 DEFINE_GUID(IID_ICMITopolgy, 0x60bb55cf, 0xc960, 0x4ddf, 0xb7, 0xa4, 0x24, 0x39, 0x78, 0xb2, 0xfe, 0x7b);
269 // {E8698236-D854-4da7-BF31-8332C614CE91}
270 DEFINE_GUID(IID_IMiniportWaveCMI, 0xe8698236, 0xd854, 0x4da7, 0xbf, 0x31, 0x83, 0x32, 0xc6, 0x14, 0xce, 0x91);
271
272
273 // {9DB14E9A-7BE7-480d-A2FA-32932489DE9C}
274 #define STATIC_PRODUCT_CM8738 \
275 0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9c}
276 DEFINE_GUIDSTRUCT("9DB14E9A-7BE7-480d-A2FA-32932489DE9C", PRODUCT_CM8738);
277 #define PRODUCT_CM8738 DEFINE_GUIDNAMED(PRODUCT_CM8738)
278
279 // {9DB14E9A-7BE7-480d-A2FA-32932489DE9D}
280 #define STATIC_COMPONENT_CM8738 \
281 0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9d}
282 DEFINE_GUIDSTRUCT("9DB14E9A-7BE7-480d-A2FA-32932489DE9D", COMPONENT_CM8738);
283 #define COMPONENT_CM8738 DEFINE_GUIDNAMED(COMPONENT_CM8738)
284
285 // {9DB14E9A-7BE7-480d-A2FA-32932489DE9E}
286 #define STATIC_MANUFACTURER_CM8738 \
287 0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9e}
288 DEFINE_GUIDSTRUCT("9DB14E9A-7BE7-480d-A2FA-32932489DE9E", MANUFACTURER_CM8738);
289 #define MANUFACTURER_CM8738 DEFINE_GUIDNAMED(MANUFACTURER_CM8738)
290
291
292 #define CMIPCI_VERSION 0x00
293
294 // topology node names (refer to .inf file)
295 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF0}
296 #define STATIC_CMINAME_IEC_5V \
297 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF0}
298 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF0", CMINAME_IEC_5V);
299 #define CMINAME_IEC_5V DEFINE_GUIDNAMED(CMINAME_IEC_5V)
300
301 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF1}
302 #define STATIC_CMINAME_IEC_OUT \
303 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF1}
304 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF1", CMINAME_IEC_OUT);
305 #define CMINAME_IEC_OUT DEFINE_GUIDNAMED(CMINAME_IEC_OUT)
306
307 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF2}
308 #define STATIC_CMINAME_IEC_INVERSE \
309 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF2}
310 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF2", CMINAME_IEC_INVERSE);
311 #define CMINAME_IEC_INVERSE DEFINE_GUIDNAMED(CMINAME_IEC_INVERSE)
312
313 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF3}
314 #define STATIC_CMINAME_IEC_MONITOR \
315 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF3}
316 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF3", CMINAME_IEC_MONITOR);
317 #define CMINAME_IEC_MONITOR DEFINE_GUIDNAMED(CMINAME_IEC_MONITOR)
318
319 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF4}
320 #define STATIC_CMINAME_DAC \
321 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF4}
322 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF4", CMINAME_DAC);
323 #define CMINAME_DAC DEFINE_GUIDNAMED(CMINAME_DAC)
324
325 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF5}
326 #define STATIC_CMINAME_IEC_SELECT \
327 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF5}
328 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF5", CMINAME_IEC_SELECT);
329 #define CMINAME_IEC_SELECT DEFINE_GUIDNAMED(CMINAME_IEC_SELECT)
330
331 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF6}
332 #define STATIC_CMINAME_XCHG_FB \
333 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF6}
334 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF6", CMINAME_XCHG_FB);
335 #define CMINAME_XCHG_FB DEFINE_GUIDNAMED(CMINAME_XCHG_FB)
336
337 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF7}
338 #define STATIC_CMINAME_BASS2LINE \
339 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF7}
340 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF7", CMINAME_BASS2LINE);
341 #define CMINAME_BASS2LINE DEFINE_GUIDNAMED(CMINAME_BASS2LINE)
342
343 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF8}
344 #define STATIC_CMINAME_CENTER2LINE \
345 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF8}
346 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF8", CMINAME_CENTER2LINE);
347 #define CMINAME_CENTER2LINE DEFINE_GUIDNAMED(CMINAME_CENTER2LINE)
348
349 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF9}
350 #define STATIC_CMINAME_IEC_COPYRIGHT \
351 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF9}
352 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DF9", CMINAME_IEC_COPYRIGHT);
353 #define CMINAME_IEC_COPYRIGHT DEFINE_GUIDNAMED(CMINAME_IEC_COPYRIGHT)
354
355 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFA}
356 #define STATIC_CMINAME_IEC_POLVALID \
357 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFA}
358 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFA", CMINAME_IEC_POLVALID);
359 #define CMINAME_IEC_POLVALID DEFINE_GUIDNAMED(CMINAME_IEC_POLVALID)
360
361 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFB}
362 #define STATIC_CMINAME_IEC_LOOP \
363 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFB}
364 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFB", CMINAME_IEC_LOOP);
365 #define CMINAME_IEC_LOOP DEFINE_GUIDNAMED(CMINAME_IEC_LOOP)
366
367 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFC}
368 #define STATIC_CMINAME_REAR2LINE \
369 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFC}
370 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFC", CMINAME_REAR2LINE);
371 #define CMINAME_REAR2LINE DEFINE_GUIDNAMED(CMINAME_REAR2LINE)
372
373 // {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFD}
374 #define STATIC_CMINAME_CENTER2MIC \
375 0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFD}
376 DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFD", CMINAME_CENTER2MIC);
377 #define CMINAME_CENTER2MIC DEFINE_GUIDNAMED(CMINAME_CENTER2MIC)
378
379 //topology pins
380 enum
381 {
382 PIN_WAVEOUT_SOURCE = 0,
383 PIN_SPDIFIN_SOURCE,
384 PIN_MIC_SOURCE,
385 PIN_CD_SOURCE,
386 PIN_LINEIN_SOURCE,
387 PIN_AUX_SOURCE,
388 PIN_DAC_SOURCE,
389 PIN_LINEOUT_DEST,
390 PIN_WAVEIN_DEST,
391 PIN_SPDIF_AC3_SOURCE,
392 PIN_SPDIF_AC3_DEST,
393
394 PIN_INVALID
395 };
396
397 //topology nodes
398 enum
399 {
400 KSNODE_TOPO_WAVEOUT_VOLUME = 0,
401 KSNODE_TOPO_WAVEOUT_MUTE,
402 KSNODE_TOPO_MICOUT_VOLUME,
403 KSNODE_TOPO_LINEOUT_MIX,
404 KSNODE_TOPO_LINEOUT_VOLUME,
405 KSNODE_TOPO_WAVEIN_SUM,
406 KSNODE_TOPO_CD_VOLUME,
407 KSNODE_TOPO_LINEIN_VOLUME,
408 KSNODE_TOPO_AUX_VOLUME,
409 KSNODE_TOPO_MICIN_VOLUME,
410 KSNODE_TOPO_MICIN_LOUDNESS,
411 KSNODE_TOPO_MICOUT_LOUDNESS,
412 KSNODE_TOPO_CD_MUTE,
413 KSNODE_TOPO_LINEIN_MUTE,
414 KSNODE_TOPO_MICOUT_MUTE,
415 KSNODE_TOPO_AUX_MUTE,
416 KSNODE_TOPO_LINEIN_MUTE_IN,
417 KSNODE_TOPO_MIC_MUTE_IN,
418 KSNODE_TOPO_AUX_MUTE_IN,
419 KSNODE_TOPO_CD_MUTE_IN,
420 KSNODE_TOPO_WAVEOUT_MUTE_IN,
421 KSNODE_TOPO_IEC_5V,
422 KSNODE_TOPO_IEC_OUT,
423 KSNODE_TOPO_IEC_INVERSE,
424 KSNODE_TOPO_IEC_MONITOR,
425 KSNODE_TOPO_IEC_SELECT,
426 KSNODE_TOPO_SPDIF_AC3_MUTE,
427 KSNODE_TOPO_SPDIF_AC3_MUX,
428 KSNODE_TOPO_XCHG_FB,
429 KSNODE_TOPO_BASS2LINE,
430 KSNODE_TOPO_CENTER2LINE,
431 KSNODE_TOPO_IEC_COPYRIGHT,
432 KSNODE_TOPO_IEC_POLVALID,
433 KSNODE_TOPO_IEC_LOOP,
434 KSNODE_TOPO_REAR2LINE,
435 KSNODE_TOPO_CENTER2MIC,
436 KSNODE_TOPO_MASTER_MUTE_DUMMY,
437
438 KSNODE_TOPO_INVALID
439 };
440
441 //wave miniport pins
442 enum
443 {
444 PIN_WAVE_CAPTURE_SINK = 0,
445 PIN_WAVE_CAPTURE_SOURCE,
446 PIN_WAVE_RENDER_SINK,
447 PIN_WAVE_RENDER_SOURCE,
448 PIN_WAVE_AC3_RENDER_SINK,
449 PIN_WAVE_AC3_RENDER_SOURCE,
450
451 PIN_WAVE_INVALID
452 };
453
454 //wave miniport nodes
455 enum
456 {
457 KSNODE_WAVE_ADC = 0,
458 KSNODE_WAVE_VOLUME1,
459 KSNODE_WAVE_3D_EFFECTS,
460 KSNODE_WAVE_SUPERMIX,
461 KSNODE_WAVE_VOLUME2,
462 KSNODE_WAVE_SRC,
463 KSNODE_WAVE_SUM,
464 KSNODE_WAVE_DAC,
465 KSNODE_WAVE_SPDIF,
466
467 KSNODE_WAVE_INVALID
468 };
469
470 #endif //_INTERFACES_HPP_
471