1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
/*++
Copyright (c) Microsoft Corporation All Rights Reserved
Module Name:
minipairs.h
Abstract:
Local audio endpoint filter definitions.
--*/
#ifndef _SIMPLEAUDIOSAMPLE_MINIPAIRS_H_
#define _SIMPLEAUDIOSAMPLE_MINIPAIRS_H_
#include "speakertopo.h"
#include "speakertoptable.h"
#include "speakerwavtable.h"
#include "micarraytopo.h"
#include "micarray1toptable.h"
#include "micarraywavtable.h"
NTSTATUS
CreateMiniportWaveRTSimpleAudioSample
(
_Out_ PUNKNOWN *,
_In_ REFCLSID,
_In_opt_ PUNKNOWN,
_In_ POOL_FLAGS,
_In_ PUNKNOWN,
_In_opt_ PVOID,
_In_ PENDPOINT_MINIPAIR
);
NTSTATUS
CreateMiniportTopologySimpleAudioSample
(
_Out_ PUNKNOWN *,
_In_ REFCLSID,
_In_opt_ PUNKNOWN,
_In_ POOL_FLAGS,
_In_ PUNKNOWN,
_In_opt_ PVOID,
_In_ PENDPOINT_MINIPAIR
);
//
// Render miniports.
//
/*********************************************************************
* Topology/Wave bridge connection for speaker (internal) *
* *
* +------+ +------+ *
* | Wave | | Topo | *
* | | | | *
* System --->|0 1|--------------->|0 1|---> Line Out *
* | | | | *
* +------+ +------+ *
*********************************************************************/
static
PHYSICALCONNECTIONTABLE SpeakerTopologyPhysicalConnections[] =
{
{
KSPIN_TOPO_WAVEOUT_SOURCE, // TopologyIn
KSPIN_WAVE_RENDER3_SOURCE, // WaveOut
CONNECTIONTYPE_WAVE_OUTPUT
}
};
static
ENDPOINT_MINIPAIR SpeakerMiniports =
{
eSpeakerDevice,
L"TopologySpeaker", // make sure this or the template name matches with KSNAME_TopologySpeaker in the inf's [Strings] section
NULL, // optional template name
CreateMiniportTopologySimpleAudioSample,
&SpeakerTopoMiniportFilterDescriptor,
0, NULL, // Interface properties
L"WaveSpeaker", // make sure this or the template name matches with KSNAME_WaveSpeaker in the inf's [Strings] section
NULL, // optional template name
CreateMiniportWaveRTSimpleAudioSample,
&SpeakerWaveMiniportFilterDescriptor,
0, // Interface properties
NULL,
SPEAKER_DEVICE_MAX_CHANNELS,
SpeakerPinDeviceFormatsAndModes,
SIZEOF_ARRAY(SpeakerPinDeviceFormatsAndModes),
SpeakerTopologyPhysicalConnections,
SIZEOF_ARRAY(SpeakerTopologyPhysicalConnections),
ENDPOINT_NO_FLAGS,
};
//
// Capture miniports.
//
/*********************************************************************
* Topology/Wave bridge connection for mic array 1 (front) *
* *
* +------+ +------+ *
* | Topo | | Wave | *
* | | | | *
* Mic in --->|0 1|===>|0 1|---> Capture Host Pin *
* | | | | *
* +------+ +------+ *
*********************************************************************/
static
PHYSICALCONNECTIONTABLE MicArray1TopologyPhysicalConnections[] =
{
{
KSPIN_TOPO_BRIDGE, // TopologyOut
KSPIN_WAVE_BRIDGE, // WaveIn
CONNECTIONTYPE_TOPOLOGY_OUTPUT
}
};
static
ENDPOINT_MINIPAIR MicArray1Miniports =
{
eMicArrayDevice1,
L"TopologyMicArray1", // make sure this or the template name matches with KSNAME_TopologyMicArray1 in the inf's [Strings] section
NULL, // optional template name
CreateMicArrayMiniportTopology,
&MicArray1TopoMiniportFilterDescriptor,
0, NULL, // Interface properties
L"WaveMicArray1", // make sure this or the tempalte name matches with KSNAME_WaveMicArray1 in the inf's [Strings] section
NULL, // optional template name
CreateMiniportWaveRTSimpleAudioSample,
&MicArrayWaveMiniportFilterDescriptor,
0, // Interface properties
NULL,
MICARRAY_DEVICE_MAX_CHANNELS,
MicArrayPinDeviceFormatsAndModes,
SIZEOF_ARRAY(MicArrayPinDeviceFormatsAndModes),
MicArray1TopologyPhysicalConnections,
SIZEOF_ARRAY(MicArray1TopologyPhysicalConnections),
ENDPOINT_NO_FLAGS,
};
//=============================================================================
//
// Render miniport pairs. NOTE: the split of render and capture is arbitrary and
// unnessary, this array could contain capture endpoints.
//
static
PENDPOINT_MINIPAIR g_RenderEndpoints[] =
{
&SpeakerMiniports,
};
#define g_cRenderEndpoints (SIZEOF_ARRAY(g_RenderEndpoints))
//=============================================================================
//
// Capture miniport pairs. NOTE: the split of render and capture is arbitrary and
// unnessary, this array could contain render endpoints.
//
static
PENDPOINT_MINIPAIR g_CaptureEndpoints[] =
{
&MicArray1Miniports,
};
#define g_cCaptureEndpoints (SIZEOF_ARRAY(g_CaptureEndpoints))
//=============================================================================
//
// Total miniports = # endpoints * 2 (topology + wave).
//
#define g_MaxMiniports ((g_cRenderEndpoints + g_cCaptureEndpoints) * 2)
#endif // _SIMPLEAUDIOSAMPLE_MINIPAIRS_H_
|