ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

priv.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.