[MMIXER]
[reactos.git] / reactos / lib / drivers / sound / mmixer / priv.h
1 #ifndef PRIV_H__
2 #define PRIV_H__
3
4 #include <pseh/pseh2.h>
5 #include <ntddk.h>
6
7 #include <windef.h>
8 #define NOBITMAP
9 #include <mmreg.h>
10 #include <ks.h>
11 #include <ksmedia.h>
12 #include <mmreg.h>
13 #include <mmsystem.h>
14
15 #include "mmixer.h"
16
17 #include <debug.h>
18
19 typedef struct
20 {
21 MIXERCAPSW MixCaps;
22 HANDLE hMixer;
23 LIST_ENTRY LineList;
24 ULONG ControlId;
25 }MIXER_INFO, *LPMIXER_INFO;
26
27 typedef struct
28 {
29 LIST_ENTRY Entry;
30 ULONG PinId;
31 HANDLE hDevice;
32 MIXERLINEW Line;
33 LPMIXERCONTROLW LineControls;
34 PULONG NodeIds;
35 LIST_ENTRY LineControlsExtraData;
36 }MIXERLINE_EXT, *LPMIXERLINE_EXT;
37
38 typedef struct
39 {
40 LIST_ENTRY Entry;
41 ULONG dwControlID;
42 }MIXERCONTROL_DATA, *LPMIXERCONTROL_DATA;
43
44 typedef struct
45 {
46 MIXERCONTROL_DATA Header;
47 LONG SignedMinimum;
48 LONG SignedMaximum;
49 LONG SteppingDelta;
50 ULONG InputSteppingDelta;
51 ULONG ValuesCount;
52 PLONG Values;
53 }MIXERVOLUME_DATA, *LPMIXERVOLUME_DATA;
54
55
56 #define DESTINATION_LINE 0xFFFF0000
57
58 ULONG
59 MMixerGetFilterPinCount(
60 IN PMIXER_CONTEXT MixerContext,
61 IN HANDLE hMixer);
62
63 LPGUID
64 MMixerGetNodeType(
65 IN PKSMULTIPLE_ITEM MultipleItem,
66 IN ULONG Index);
67
68 MIXER_STATUS
69 MMixerGetNodeIndexes(
70 IN PMIXER_CONTEXT MixerContext,
71 IN PKSMULTIPLE_ITEM MultipleItem,
72 IN ULONG NodeIndex,
73 IN ULONG bNode,
74 IN ULONG bFrom,
75 OUT PULONG NodeReferenceCount,
76 OUT PULONG *NodeReference);
77
78 PKSTOPOLOGY_CONNECTION
79 MMixerGetConnectionByIndex(
80 IN PKSMULTIPLE_ITEM MultipleItem,
81 IN ULONG Index);
82
83 ULONG
84 MMixerGetControlTypeFromTopologyNode(
85 IN LPGUID NodeType);
86
87 LPMIXERLINE_EXT
88 MMixerGetSourceMixerLineByLineId(
89 LPMIXER_INFO MixerInfo,
90 DWORD dwLineID);
91
92 MIXER_STATUS
93 MMixerGetFilterTopologyProperty(
94 IN PMIXER_CONTEXT MixerContext,
95 IN HANDLE hMixer,
96 IN ULONG PropertyId,
97 OUT PKSMULTIPLE_ITEM * OutMultipleItem);
98
99 VOID
100 MMixerFreeMixerInfo(
101 IN PMIXER_CONTEXT MixerContext,
102 IN LPMIXER_INFO MixerInfo);
103
104 MIXER_STATUS
105 MMixerGetTargetPins(
106 IN PMIXER_CONTEXT MixerContext,
107 IN PKSMULTIPLE_ITEM NodeTypes,
108 IN PKSMULTIPLE_ITEM NodeConnections,
109 IN ULONG NodeIndex,
110 IN ULONG bUpDirection,
111 OUT PULONG Pins,
112 IN ULONG PinCount);
113
114 MIXER_STATUS
115 MMixerGetPhysicalConnection(
116 IN PMIXER_CONTEXT MixerContext,
117 IN HANDLE hMixer,
118 IN ULONG PinId,
119 OUT PKSPIN_PHYSICALCONNECTION *OutConnection);
120
121 ULONG
122 MMixerGetIndexOfGuid(
123 PKSMULTIPLE_ITEM MultipleItem,
124 LPCGUID NodeType);
125
126 MIXER_STATUS
127 MMixerSetupFilter(
128 IN PMIXER_CONTEXT MixerContext,
129 IN HANDLE hMixer,
130 IN PULONG DeviceCount,
131 IN LPWSTR DeviceName);
132
133 MIXER_STATUS
134 MMixerGetTargetPinsByNodeConnectionIndex(
135 IN PMIXER_CONTEXT MixerContext,
136 IN PKSMULTIPLE_ITEM NodeConnections,
137 IN PKSMULTIPLE_ITEM NodeTypes,
138 IN ULONG bUpDirection,
139 IN ULONG NodeConnectionIndex,
140 OUT PULONG Pins);
141
142 MIXER_STATUS
143 MMixerGetControlsFromPin(
144 IN PMIXER_CONTEXT MixerContext,
145 IN PKSMULTIPLE_ITEM NodeConnections,
146 IN PKSMULTIPLE_ITEM NodeTypes,
147 IN ULONG PinId,
148 IN ULONG bUpDirection,
149 OUT PULONG Nodes);
150
151 #endif