Author: janderwald Date: Thu Dec 9 11:33:58 2010 New Revision: 49993
URL: http://svn.reactos.org/svn/reactos?rev=49993&view=rev Log: [AUDIO-BRINGUP] - Respect channel count which defines if the control acts uniform or per channel - Fix bug in MMixerSetGetMuxControlDetails
Added: branches/audio-bringup/lib/drivers/sound/mmixer/TODO Modified: branches/audio-bringup/lib/drivers/sound/mmixer/controls.c branches/audio-bringup/lib/drivers/sound/mmixer/sup.c
Added: branches/audio-bringup/lib/drivers/sound/mmixer/TODO URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/TODO (added) +++ branches/audio-bringup/lib/drivers/sound/mmixer/TODO [iso-8859-1] Thu Dec 9 11:33:58 2010 @@ -1,0 +1,6 @@ +=== MMIXER TASKS === + +- Add hacks for source lines, such that Wave Mixer line always has a volume control +- Support custom mixer controls +- Assign mixer controls after all controls have been assigned (starting on the destination lines) +- TESTING & BUGFIXING
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/controls.c URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/controls.c [iso-8859-1] (original) +++ branches/audio-bringup/lib/drivers/sound/mmixer/controls.c [iso-8859-1] Thu Dec 9 11:33:58 2010 @@ -35,7 +35,8 @@ IN HANDLE hMixer, IN PTOPOLOGY Topology, IN ULONG NodeIndex, - IN LPMIXERLINE_EXT MixerLine) + IN LPMIXERLINE_EXT MixerLine, + IN ULONG MaxChannels) { LPGUID NodeType; KSP_NODE Node; @@ -66,7 +67,7 @@ /* store control type */ MixerControl->Control.dwControlType = MMixerGetControlTypeFromTopologyNode(NodeType);
- MixerControl->Control.fdwControl = MIXERCONTROL_CONTROLF_UNIFORM; /* FIXME */ + MixerControl->Control.fdwControl = (MaxChannels > 1 ? 0 : MIXERCONTROL_CONTROLF_UNIFORM); MixerControl->Control.cMultipleItems = 0;
/* setup request to retrieve name */ @@ -136,7 +137,7 @@ MixerControl->Control.Bounds.dwMaximum = NodesCount - 1; MixerControl->Control.Metrics.dwReserved[0] = NodesCount; MixerControl->Control.cMultipleItems = NodesCount; - MixerControl->Control.fdwControl |= MIXERCONTROL_CONTROLF_MULTIPLE; + MixerControl->Control.fdwControl |= MIXERCONTROL_CONTROLF_UNIFORM | MIXERCONTROL_CONTROLF_MULTIPLE; } else if (MixerControl->Control.dwControlType == MIXERCONTROL_CONTROLTYPE_MUTE) { @@ -695,9 +696,14 @@ /* calculate maximum channels */ DstLine->Line.cChannels = min(DstLine->Line.cChannels, MaxChannels); } + else + { + /* use default of one channel */ + MaxChannels = 1; + }
/* now add the mixer control */ - Status = MMixerAddMixerControl(MixerContext, MixerInfo, hMixer, Topology, Nodes[Index], DstLine); + Status = MMixerAddMixerControl(MixerContext, MixerInfo, hMixer, Topology, Nodes[Index], DstLine, MaxChannels);
if (Status == MM_STATUS_SUCCESS) {
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/sup.c URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/sup.c [iso-8859-1] (original) +++ branches/audio-bringup/lib/drivers/sound/mmixer/sup.c [iso-8859-1] Thu Dec 9 11:33:58 2010 @@ -536,6 +536,14 @@ return Status; }
+ /* gets the corresponding mixer data */ + MixerData = MMixerGetMixerDataByDeviceHandle(MixerContext, MixerControl->hDevice); + + /* sanity check */ + ASSERT(MixerData); + ASSERT(MixerData->Topology); + ASSERT(MixerData->MixerInfo == MixerInfo); + /* get logical pin nodes */ MMixerGetConnectedFromLogicalTopologyPins(MixerData->Topology, MixerControl->NodeID, &LogicalNodesCount, LogicalNodes);