248 lines
3.8 KiB
C++
248 lines
3.8 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1997-2000 Microsoft Corporation All Rights Reserved
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
hw.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Implementation of MSVAD HW class.
|
||
|
MSVAD HW has an array for storing mixer and volume settings
|
||
|
for the topology.
|
||
|
|
||
|
|
||
|
--*/
|
||
|
#include <msvad.h>
|
||
|
#include "hw.h"
|
||
|
|
||
|
//=============================================================================
|
||
|
// CMSVADHW
|
||
|
//=============================================================================
|
||
|
|
||
|
//=============================================================================
|
||
|
#pragma code_seg("PAGE")
|
||
|
CMSVADHW::CMSVADHW()
|
||
|
: m_ulMux(0)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Constructor for MSVADHW.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
void
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
PAGED_CODE();
|
||
|
|
||
|
MixerReset();
|
||
|
} // CMSVADHW
|
||
|
#pragma code_seg()
|
||
|
|
||
|
//=============================================================================
|
||
|
BOOL
|
||
|
CMSVADHW::GetMixerMute
|
||
|
(
|
||
|
IN ULONG ulNode
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Gets the HW (!) mute levels for MSVAD
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ulNode - topology node id
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
mute setting
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
if (ulNode < MAX_TOPOLOGY_NODES)
|
||
|
{
|
||
|
return m_MuteControls[ulNode];
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
} // GetMixerMute
|
||
|
|
||
|
//=============================================================================
|
||
|
ULONG
|
||
|
CMSVADHW::GetMixerMux()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Return the current mux selection
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
ULONG
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
return m_ulMux;
|
||
|
} // GetMixerMux
|
||
|
|
||
|
//=============================================================================
|
||
|
LONG
|
||
|
CMSVADHW::GetMixerVolume
|
||
|
(
|
||
|
IN ULONG ulNode,
|
||
|
IN LONG lChannel
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Gets the HW (!) volume for MSVAD.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ulNode - topology node id
|
||
|
|
||
|
lChannel - which channel are we setting?
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
LONG - volume level
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
if (ulNode < MAX_TOPOLOGY_NODES)
|
||
|
{
|
||
|
return m_VolumeControls[ulNode];
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
} // GetMixerVolume
|
||
|
|
||
|
//=============================================================================
|
||
|
#pragma code_seg("PAGE")
|
||
|
void
|
||
|
CMSVADHW::MixerReset()
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Resets the mixer registers.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
void
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
PAGED_CODE();
|
||
|
|
||
|
RtlFillMemory(m_VolumeControls, sizeof(LONG) * MAX_TOPOLOGY_NODES, 0xFF);
|
||
|
RtlFillMemory(m_MuteControls, sizeof(BOOL) * MAX_TOPOLOGY_NODES, TRUE);
|
||
|
|
||
|
// BUGBUG change this depending on the topology
|
||
|
m_ulMux = 2;
|
||
|
} // MixerReset
|
||
|
#pragma code_seg()
|
||
|
|
||
|
//=============================================================================
|
||
|
void
|
||
|
CMSVADHW::SetMixerMute
|
||
|
(
|
||
|
IN ULONG ulNode,
|
||
|
IN BOOL fMute
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Sets the HW (!) mute levels for MSVAD
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ulNode - topology node id
|
||
|
|
||
|
fMute - mute flag
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
void
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
if (ulNode < MAX_TOPOLOGY_NODES)
|
||
|
{
|
||
|
m_MuteControls[ulNode] = fMute;
|
||
|
}
|
||
|
} // SetMixerMute
|
||
|
|
||
|
//=============================================================================
|
||
|
void
|
||
|
CMSVADHW::SetMixerMux
|
||
|
(
|
||
|
IN ULONG ulNode
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Sets the HW (!) mux selection
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ulNode - topology node id
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
void
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
m_ulMux = ulNode;
|
||
|
} // SetMixMux
|
||
|
|
||
|
//=============================================================================
|
||
|
void
|
||
|
CMSVADHW::SetMixerVolume
|
||
|
(
|
||
|
IN ULONG ulNode,
|
||
|
IN LONG lChannel,
|
||
|
IN LONG lVolume
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Sets the HW (!) volume for MSVAD.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ulNode - topology node id
|
||
|
|
||
|
lChannel - which channel are we setting?
|
||
|
|
||
|
lVolume - volume level
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
void
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
if (ulNode < MAX_TOPOLOGY_NODES)
|
||
|
{
|
||
|
m_VolumeControls[ulNode] = lVolume;
|
||
|
}
|
||
|
} // SetMixerVolume
|