Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpriv.h
Go to the documentation of this file.
00001 #include <pseh/pseh2.h> 00002 #include <ntddk.h> 00003 00004 #include <windef.h> 00005 #define NOBITMAP 00006 #include <mmreg.h> 00007 #include <ks.h> 00008 #include <ksmedia.h> 00009 #include <mmreg.h> 00010 #include <mmsystem.h> 00011 00012 #include "mmixer.h" 00013 00014 #include <stdio.h> 00015 #define YDEBUG 00016 #include <debug.h> 00017 00018 typedef struct __TOPOLOGY_NODE__ 00019 { 00020 GUID NodeType; 00021 ULONG NodeIndex; 00022 00023 ULONG NodeConnectedToCount; 00024 struct __TOPOLOGY_NODE__ ** NodeConnectedTo; 00025 00026 ULONG NodeConnectedFromCount; 00027 struct __TOPOLOGY_NODE__ ** NodeConnectedFrom; 00028 PULONG LogicalPinNodeConnectedFrom; 00029 00030 ULONG PinConnectedFromCount; 00031 PULONG PinConnectedFrom; 00032 00033 ULONG PinConnectedToCount; 00034 PULONG PinConnectedTo; 00035 00036 ULONG Visited; 00037 ULONG Reserved; 00038 }TOPOLOGY_NODE, *PTOPOLOGY_NODE; 00039 00040 typedef struct 00041 { 00042 ULONG PinId; 00043 00044 ULONG NodesConnectedToCount; 00045 PTOPOLOGY_NODE * NodesConnectedTo; 00046 00047 ULONG NodesConnectedFromCount; 00048 PTOPOLOGY_NODE * NodesConnectedFrom; 00049 00050 ULONG PinConnectedFromCount; 00051 PULONG PinConnectedFrom; 00052 00053 ULONG PinConnectedToCount; 00054 PULONG PinConnectedTo; 00055 00056 ULONG Visited; 00057 ULONG Reserved; 00058 }PIN, *PPIN; 00059 00060 00061 typedef struct 00062 { 00063 ULONG TopologyPinsCount; 00064 PPIN TopologyPins; 00065 00066 ULONG TopologyNodesCount; 00067 PTOPOLOGY_NODE TopologyNodes; 00068 00069 }TOPOLOGY, *PTOPOLOGY; 00070 00071 typedef struct 00072 { 00073 LIST_ENTRY Entry; 00074 MIXERCAPSW MixCaps; 00075 LIST_ENTRY LineList; 00076 ULONG ControlId; 00077 LIST_ENTRY EventList; 00078 }MIXER_INFO, *LPMIXER_INFO; 00079 00080 typedef struct 00081 { 00082 LIST_ENTRY Entry; 00083 MIXERCONTROLW Control; 00084 ULONG NodeID; 00085 HANDLE hDevice; 00086 PVOID ExtraData; 00087 }MIXERCONTROL_EXT, *LPMIXERCONTROL_EXT; 00088 00089 typedef struct 00090 { 00091 LIST_ENTRY Entry; 00092 ULONG PinId; 00093 MIXERLINEW Line; 00094 LIST_ENTRY ControlsList; 00095 00096 }MIXERLINE_EXT, *LPMIXERLINE_EXT; 00097 00098 typedef struct 00099 { 00100 LIST_ENTRY Entry; 00101 ULONG dwControlID; 00102 }MIXERCONTROL_DATA, *LPMIXERCONTROL_DATA; 00103 00104 typedef struct 00105 { 00106 MIXERCONTROL_DATA Header; 00107 LONG SignedMinimum; 00108 LONG SignedMaximum; 00109 LONG SteppingDelta; 00110 ULONG InputSteppingDelta; 00111 ULONG ValuesCount; 00112 PLONG Values; 00113 }MIXERVOLUME_DATA, *LPMIXERVOLUME_DATA; 00114 00115 typedef struct 00116 { 00117 LIST_ENTRY Entry; 00118 ULONG DeviceId; 00119 HANDLE hDevice; 00120 HANDLE hDeviceInterfaceKey; 00121 LPWSTR DeviceName; 00122 PTOPOLOGY Topology; 00123 LPMIXER_INFO MixerInfo; 00124 }MIXER_DATA, *LPMIXER_DATA; 00125 00126 typedef struct 00127 { 00128 LIST_ENTRY Entry; 00129 ULONG DeviceId; 00130 ULONG PinId; 00131 union 00132 { 00133 WAVEOUTCAPSW OutCaps; 00134 WAVEINCAPSW InCaps; 00135 }u; 00136 }WAVE_INFO, *LPWAVE_INFO; 00137 00138 typedef struct 00139 { 00140 LIST_ENTRY Entry; 00141 ULONG DeviceId; 00142 ULONG PinId; 00143 union 00144 { 00145 MIDIOUTCAPSW OutCaps; 00146 MIDIINCAPSW InCaps; 00147 }u; 00148 00149 }MIDI_INFO, *LPMIDI_INFO; 00150 00151 typedef struct 00152 { 00153 ULONG MixerListCount; 00154 LIST_ENTRY MixerList; 00155 00156 ULONG MixerDataCount; 00157 LIST_ENTRY MixerData; 00158 00159 ULONG WaveInListCount; 00160 LIST_ENTRY WaveInList; 00161 00162 ULONG WaveOutListCount; 00163 LIST_ENTRY WaveOutList; 00164 00165 ULONG MidiInListCount; 00166 LIST_ENTRY MidiInList; 00167 00168 ULONG MidiOutListCount; 00169 LIST_ENTRY MidiOutList; 00170 }MIXER_LIST, *PMIXER_LIST; 00171 00172 typedef struct 00173 { 00174 LIST_ENTRY Entry; 00175 PVOID MixerEventContext; 00176 PMIXER_EVENT MixerEventRoutine; 00177 00178 }EVENT_NOTIFICATION_ENTRY, *PEVENT_NOTIFICATION_ENTRY; 00179 00180 #define DESTINATION_LINE (0xFFFF0000) 00181 #define SOURCE_LINE (0x10000) 00182 ULONG 00183 MMixerGetFilterPinCount( 00184 IN PMIXER_CONTEXT MixerContext, 00185 IN HANDLE hMixer); 00186 00187 LPGUID 00188 MMixerGetNodeType( 00189 IN PKSMULTIPLE_ITEM MultipleItem, 00190 IN ULONG Index); 00191 00192 MIXER_STATUS 00193 MMixerGetNodeIndexes( 00194 IN PMIXER_CONTEXT MixerContext, 00195 IN PKSMULTIPLE_ITEM MultipleItem, 00196 IN ULONG NodeIndex, 00197 IN ULONG bNode, 00198 IN ULONG bFrom, 00199 OUT PULONG NodeReferenceCount, 00200 OUT PULONG *NodeReference); 00201 00202 PKSTOPOLOGY_CONNECTION 00203 MMixerGetConnectionByIndex( 00204 IN PKSMULTIPLE_ITEM MultipleItem, 00205 IN ULONG Index); 00206 00207 ULONG 00208 MMixerGetControlTypeFromTopologyNode( 00209 IN LPGUID NodeType); 00210 00211 LPMIXERLINE_EXT 00212 MMixerGetSourceMixerLineByLineId( 00213 LPMIXER_INFO MixerInfo, 00214 DWORD dwLineID); 00215 00216 MIXER_STATUS 00217 MMixerGetFilterTopologyProperty( 00218 IN PMIXER_CONTEXT MixerContext, 00219 IN HANDLE hMixer, 00220 IN ULONG PropertyId, 00221 OUT PKSMULTIPLE_ITEM * OutMultipleItem); 00222 00223 VOID 00224 MMixerFreeMixerInfo( 00225 IN PMIXER_CONTEXT MixerContext, 00226 IN LPMIXER_INFO MixerInfo); 00227 00228 MIXER_STATUS 00229 MMixerGetPhysicalConnection( 00230 IN PMIXER_CONTEXT MixerContext, 00231 IN HANDLE hMixer, 00232 IN ULONG PinId, 00233 OUT PKSPIN_PHYSICALCONNECTION *OutConnection); 00234 00235 MIXER_STATUS 00236 MMixerSetupFilter( 00237 IN PMIXER_CONTEXT MixerContext, 00238 IN PMIXER_LIST MixerList, 00239 IN LPMIXER_DATA MixerData, 00240 IN PULONG DeviceCount); 00241 00242 PKSPIN_CONNECT 00243 MMixerAllocatePinConnect( 00244 IN PMIXER_CONTEXT MixerContext, 00245 ULONG DataFormatSize); 00246 00247 MIXER_STATUS 00248 MMixerGetAudioPinDataRanges( 00249 IN PMIXER_CONTEXT MixerContext, 00250 IN HANDLE hDevice, 00251 IN ULONG PinId, 00252 IN OUT PKSMULTIPLE_ITEM * OutMultipleItem); 00253 00254 VOID 00255 MMixerInitializeMidiForFilter( 00256 IN PMIXER_CONTEXT MixerContext, 00257 IN PMIXER_LIST MixerList, 00258 IN LPMIXER_DATA MixerData, 00259 IN PTOPOLOGY Topology); 00260 00261 MIXER_STATUS 00262 MMixerVerifyContext( 00263 IN PMIXER_CONTEXT MixerContext); 00264 00265 LPMIXER_INFO 00266 MMixerGetMixerInfoByIndex( 00267 IN PMIXER_CONTEXT MixerContext, 00268 IN ULONG MixerIndex); 00269 00270 LPMIXERLINE_EXT 00271 MMixerGetSourceMixerLineByComponentType( 00272 LPMIXER_INFO MixerInfo, 00273 DWORD dwComponentType); 00274 00275 MIXER_STATUS 00276 MMixerGetMixerControlById( 00277 LPMIXER_INFO MixerInfo, 00278 DWORD dwControlID, 00279 LPMIXERLINE_EXT *MixerLine, 00280 LPMIXERCONTROL_EXT *MixerControl, 00281 PULONG NodeId); 00282 00283 MIXER_STATUS 00284 MMixerSetGetMuteControlDetails( 00285 IN PMIXER_CONTEXT MixerContext, 00286 IN LPMIXER_INFO MixerInfo, 00287 IN LPMIXERCONTROL_EXT MixerControl, 00288 IN ULONG dwLineID, 00289 IN LPMIXERCONTROLDETAILS MixerControlDetails, 00290 IN ULONG bSet); 00291 00292 MIXER_STATUS 00293 MMixerSetGetVolumeControlDetails( 00294 IN PMIXER_CONTEXT MixerContext, 00295 IN LPMIXER_INFO MixerInfo, 00296 IN ULONG NodeId, 00297 IN ULONG bSet, 00298 LPMIXERCONTROL_EXT MixerControl, 00299 IN LPMIXERCONTROLDETAILS MixerControlDetails, 00300 LPMIXERLINE_EXT MixerLine); 00301 00302 MIXER_STATUS 00303 MMixerSetGetMuxControlDetails( 00304 IN PMIXER_CONTEXT MixerContext, 00305 IN LPMIXER_INFO MixerInfo, 00306 IN ULONG NodeId, 00307 IN ULONG bSet, 00308 IN ULONG Flags, 00309 LPMIXERCONTROL_EXT MixerControl, 00310 IN LPMIXERCONTROLDETAILS MixerControlDetails, 00311 LPMIXERLINE_EXT MixerLine); 00312 00313 00314 MIXER_STATUS 00315 MMixerSetGetControlDetails( 00316 IN PMIXER_CONTEXT MixerContext, 00317 IN HANDLE hMixer, 00318 IN ULONG NodeId, 00319 IN ULONG bSet, 00320 IN ULONG PropertyId, 00321 IN ULONG Channel, 00322 IN PLONG InputValue); 00323 00324 LPMIXER_DATA 00325 MMixerGetDataByDeviceId( 00326 IN PMIXER_LIST MixerList, 00327 IN ULONG DeviceId); 00328 00329 LPMIXER_DATA 00330 MMixerGetDataByDeviceName( 00331 IN PMIXER_LIST MixerList, 00332 IN LPWSTR DeviceName); 00333 00334 MIXER_STATUS 00335 MMixerCreateMixerData( 00336 IN PMIXER_CONTEXT MixerContext, 00337 IN PMIXER_LIST MixerList, 00338 IN ULONG DeviceId, 00339 IN LPWSTR DeviceName, 00340 IN HANDLE hDevice, 00341 IN HANDLE hKey); 00342 00343 MIXER_STATUS 00344 MMixerInitializeWaveInfo( 00345 IN PMIXER_CONTEXT MixerContext, 00346 IN PMIXER_LIST MixerList, 00347 IN LPMIXER_DATA MixerData, 00348 IN LPWSTR DeviceName, 00349 IN ULONG bWaveIn, 00350 IN ULONG PinCount, 00351 IN PULONG Pins); 00352 00353 MIXER_STATUS 00354 MMixerAddEvent( 00355 IN PMIXER_CONTEXT MixerContext, 00356 IN OUT LPMIXER_INFO MixerInfo, 00357 IN PVOID MixerEvent, 00358 IN PMIXER_EVENT MixerEventRoutine); 00359 00360 MIXER_STATUS 00361 MMixerGetDeviceName( 00362 IN PMIXER_CONTEXT MixerContext, 00363 OUT LPWSTR DeviceName, 00364 IN HANDLE hKey); 00365 00366 VOID 00367 MMixerInitializePinConnect( 00368 IN OUT PKSPIN_CONNECT PinConnect, 00369 IN ULONG PinId); 00370 00371 MIXER_STATUS 00372 MMixerGetPinDataFlowAndCommunication( 00373 IN PMIXER_CONTEXT MixerContext, 00374 IN HANDLE hDevice, 00375 IN ULONG PinId, 00376 OUT PKSPIN_DATAFLOW DataFlow, 00377 OUT PKSPIN_COMMUNICATION Communication); 00378 00379 VOID 00380 MMixerHandleAlternativeMixers( 00381 IN PMIXER_CONTEXT MixerContext, 00382 IN PMIXER_LIST MixerList, 00383 IN LPMIXER_DATA MixerData, 00384 IN PTOPOLOGY Topology); 00385 00386 MIXER_STATUS 00387 MMixerGetMixerByName( 00388 IN PMIXER_LIST MixerList, 00389 IN LPWSTR MixerName, 00390 OUT LPMIXER_INFO *MixerInfo); 00391 00392 /* topology.c */ 00393 00394 MIXER_STATUS 00395 MMixerCreateTopology( 00396 IN PMIXER_CONTEXT MixerContext, 00397 IN ULONG PinCount, 00398 IN PKSMULTIPLE_ITEM NodeConnections, 00399 IN PKSMULTIPLE_ITEM NodeTypes, 00400 OUT PTOPOLOGY *OutTopology); 00401 00402 VOID 00403 MMixerGetAllUpOrDownstreamPinsFromNodeIndex( 00404 IN PMIXER_CONTEXT MixerContext, 00405 IN PTOPOLOGY Topology, 00406 IN ULONG NodeIndex, 00407 IN ULONG bUpStream, 00408 OUT PULONG OutPinsCount, 00409 OUT PULONG OutPins); 00410 00411 MIXER_STATUS 00412 MMixerGetAllUpOrDownstreamPinsFromPinIndex( 00413 IN PMIXER_CONTEXT MixerContext, 00414 IN PTOPOLOGY Topology, 00415 IN ULONG PinIndex, 00416 IN ULONG bUpStream, 00417 OUT PULONG OutPinsCount, 00418 OUT PULONG OutPins); 00419 00420 VOID 00421 MMixerGetNextNodesFromPinIndex( 00422 IN PMIXER_CONTEXT MixerContext, 00423 IN PTOPOLOGY Topology, 00424 IN ULONG PinIndex, 00425 IN ULONG bUpStream, 00426 OUT PULONG OutNodesCount, 00427 OUT PULONG OutNodes); 00428 00429 MIXER_STATUS 00430 MMixerAllocateTopologyPinArray( 00431 IN PMIXER_CONTEXT MixerContext, 00432 IN PTOPOLOGY Topology, 00433 OUT PULONG * OutPins); 00434 00435 MIXER_STATUS 00436 MMixerAllocateTopologyNodeArray( 00437 IN PMIXER_CONTEXT MixerContext, 00438 IN PTOPOLOGY Topology, 00439 OUT PULONG * OutPins); 00440 00441 VOID 00442 MMixerGetAllUpOrDownstreamNodesFromPinIndex( 00443 IN PMIXER_CONTEXT MixerContext, 00444 IN PTOPOLOGY Topology, 00445 IN ULONG PinIndex, 00446 IN ULONG bUpStream, 00447 OUT PULONG OutNodesCount, 00448 OUT PULONG OutNodes); 00449 00450 VOID 00451 MMixerIsNodeTerminator( 00452 IN PTOPOLOGY Topology, 00453 IN ULONG NodeIndex, 00454 OUT ULONG * bTerminator); 00455 00456 VOID 00457 MMixerGetNextNodesFromNodeIndex( 00458 IN PMIXER_CONTEXT MixerContext, 00459 IN PTOPOLOGY Topology, 00460 IN ULONG NodeIndex, 00461 IN ULONG bUpStream, 00462 OUT PULONG OutNodesCount, 00463 OUT PULONG OutNodes); 00464 00465 LPGUID 00466 MMixerGetNodeTypeFromTopology( 00467 IN PTOPOLOGY Topology, 00468 IN ULONG NodeIndex); 00469 00470 MIXER_STATUS 00471 MMixerGetAllUpOrDownstreamNodesFromNodeIndex( 00472 IN PMIXER_CONTEXT MixerContext, 00473 IN PTOPOLOGY Topology, 00474 IN ULONG NodeIndex, 00475 IN ULONG bUpStream, 00476 OUT PULONG OutNodesCount, 00477 OUT PULONG OutNodes); 00478 00479 MIXER_STATUS 00480 MMixerIsNodeConnectedToPin( 00481 IN PMIXER_CONTEXT MixerContext, 00482 IN PTOPOLOGY Topology, 00483 IN ULONG NodeIndex, 00484 IN ULONG PinId, 00485 IN ULONG bUpStream, 00486 OUT PULONG bConnected); 00487 00488 ULONG 00489 MMixerGetNodeIndexFromGuid( 00490 IN PTOPOLOGY Topology, 00491 IN const GUID *NodeType); 00492 00493 VOID 00494 MMixerSetTopologyNodeReserved( 00495 IN PTOPOLOGY Topology, 00496 IN ULONG NodeIndex); 00497 00498 VOID 00499 MMixerIsTopologyNodeReserved( 00500 IN PTOPOLOGY Topology, 00501 IN ULONG NodeIndex, 00502 OUT PULONG bReserved); 00503 00504 VOID 00505 MMixerSetTopologyPinReserved( 00506 IN PTOPOLOGY Topology, 00507 IN ULONG PinId); 00508 00509 VOID 00510 MMixerIsTopologyPinReserved( 00511 IN PTOPOLOGY Topology, 00512 IN ULONG PinId, 00513 OUT PULONG bReserved); 00514 00515 VOID 00516 MMixerGetTopologyPinCount( 00517 IN PTOPOLOGY Topology, 00518 OUT PULONG PinCount); 00519 00520 VOID 00521 MMixerGetConnectedFromLogicalTopologyPins( 00522 IN PTOPOLOGY Topology, 00523 IN ULONG NodeIndex, 00524 OUT PULONG OutPinCount, 00525 OUT PULONG OutPins); 00526 00527 VOID 00528 MMixerPrintTopology(); Generated on Sun May 27 2012 04:27:53 for ReactOS by
1.7.6.1
|