#include "CEchoGals.h"
CEchoGals informational methods
****************************************************************************/
ECHOSTATUS CEchoGals::GetBaseCapabilities
(
PECHOGALS_CAPS pCapabilities
)
{
CChannelMask DigMask, ChMask, AdatMask;
WORD i;
if ( NULL == GetDspCommObject() )
return ECHOSTATUS_DSP_DEAD;
memset( pCapabilities, 0, sizeof(ECHOGALS_CAPS) );
strcpy( pCapabilities->szName, m_szCardInstallName );
pCapabilities->wCardType = GetDspCommObject()->GetCardType();
pCapabilities->wNumPipesOut = GetNumPipesOut();
pCapabilities->wNumPipesIn = GetNumPipesIn();
pCapabilities->wNumBussesOut = GetNumBussesOut();
pCapabilities->wNumBussesIn = GetNumBussesIn();
pCapabilities->wFirstDigitalBusOut = GetFirstDigitalBusOut();
pCapabilities->wFirstDigitalBusIn = GetFirstDigitalBusIn();
pCapabilities->wNumMidiOut = GetDspCommObject()->GetNumMidiOutChannels();
pCapabilities->wNumMidiIn = GetDspCommObject()->GetNumMidiInChannels();
pCapabilities->dwOutClockTypes = 0;
pCapabilities->dwInClockTypes = ECHO_CLOCK_BIT_INTERNAL;
for (i = 0; i < GetNumPipesOut(); i++)
{
pCapabilities->dwPipeOutCaps[i] = ECHOCAPS_GAIN |
ECHOCAPS_MUTE;
}
WORD wFirstDigitalBusIn = GetFirstDigitalBusIn();
for (i = 0; i < GetNumBussesIn(); i++)
{
pCapabilities->dwBusInCaps[i] = ECHOCAPS_PEAK_METER |
ECHOCAPS_VU_METER;
if (i >= wFirstDigitalBusIn)
pCapabilities->dwBusInCaps[i] |= ECHOCAPS_DIGITAL;
}
WORD wFirstDigitalBusOut = GetFirstDigitalBusOut();
for (i = 0; i < GetNumBussesOut(); i++)
{
pCapabilities->dwBusOutCaps[i] = ECHOCAPS_PEAK_METER |
ECHOCAPS_VU_METER |
ECHOCAPS_GAIN |
ECHOCAPS_MUTE;
if (i >= wFirstDigitalBusOut)
pCapabilities->dwBusOutCaps[i] |= ECHOCAPS_DIGITAL;
}
pCapabilities->dwDigitalModes = GetDspCommObject()->GetDigitalModes();
pCapabilities->fHasVmixer = GetDspCommObject()->HasVmixer();
if (GetDspCommObject()->HasVmixer())
{
pCapabilities->wFirstDigitalPipeOut = pCapabilities->wNumPipesOut;
}
else
{
pCapabilities->wFirstDigitalPipeOut = pCapabilities->wFirstDigitalBusOut;
for ( i = pCapabilities->wFirstDigitalPipeOut;
i < GetNumPipesOut();
i++)
{
pCapabilities->dwPipeOutCaps[i] |= ECHOCAPS_DIGITAL;
}
}
pCapabilities->wFirstDigitalPipeIn = pCapabilities->wFirstDigitalBusIn;
for ( i = pCapabilities->wFirstDigitalPipeIn;
i < GetNumPipesIn();
i++)
{
pCapabilities->dwPipeInCaps[i] |= ECHOCAPS_DIGITAL;
}
return ECHOSTATUS_OK;
}
WORD CEchoGals::MakePipeIndex(WORD wPipe,BOOL fInput)
{
if (fInput)
return wPipe + GetNumPipesOut();
return wPipe;
}
CONST PCHAR CEchoGals::GetDeviceName()
{
return m_szCardInstallName;
}
WORD CEchoGals::GetNumPipesOut()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumPipesOut();
}
WORD CEchoGals::GetNumPipesIn()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumPipesIn();
}
WORD CEchoGals::GetNumBussesOut()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumBussesOut();
}
WORD CEchoGals::GetNumBussesIn()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumBussesIn();
}
WORD CEchoGals::GetNumBusses()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumBusses();
}
WORD CEchoGals::GetNumPipes()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetNumPipes();
}
WORD CEchoGals::GetFirstDigitalBusOut()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetFirstDigitalBusOut();
}
WORD CEchoGals::GetFirstDigitalBusIn()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->GetFirstDigitalBusIn();
}
BOOL CEchoGals::HasVmixer()
{
if (NULL == GetDspCommObject())
return 0;
return GetDspCommObject()->HasVmixer();
}
PCDspCommObject CEchoGals::GetDspCommObject()
{
return m_pDspCommObject;
}