You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.4 KiB
117 lines
3.4 KiB
//==========================================================================;
|
|
//
|
|
// Decoder specific initialization routines
|
|
//
|
|
// $Date: 21 Aug 1998 21:46:10 $
|
|
// $Revision: 1.1 $
|
|
// $Author: Tashjian $
|
|
//
|
|
// $Copyright: (c) 1997 - 1998 ATI Technologies Inc. All Rights Reserved. $
|
|
//
|
|
//==========================================================================;
|
|
|
|
extern "C"
|
|
{
|
|
#include "strmini.h"
|
|
#include "ksmedia.h"
|
|
|
|
}
|
|
|
|
#include "wdmvdec.h"
|
|
#include "capmain.h"
|
|
#include "wdmdrv.h"
|
|
#include "Device.h"
|
|
#include "capdebug.h"
|
|
|
|
|
|
CVideoDecoderDevice * InitializeDevice(PPORT_CONFIGURATION_INFORMATION pConfigInfo,
|
|
PBYTE pWorkspace)
|
|
{
|
|
UINT nErrorCode = 0;
|
|
Device * pDevice = NULL;
|
|
|
|
PDEVICE_DATA_EXTENSION pDevExt = (PDEVICE_DATA_EXTENSION) pWorkspace;
|
|
|
|
DBGTRACE(("InitializeDevice()\n"));
|
|
|
|
|
|
ENSURE
|
|
{
|
|
CI2CScript *pI2cScript = (CI2CScript *) new ((PVOID)&pDevExt->CScript)
|
|
CI2CScript(pConfigInfo, &nErrorCode);
|
|
|
|
if (nErrorCode != WDMMINI_NOERROR)
|
|
{
|
|
DBGERROR(("CI2CScript creation failure = %lx\n", nErrorCode));
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
if (!pI2cScript->LockI2CProviderEx())
|
|
{
|
|
DBGERROR(("Couldn't get I2CProvider.\n"));
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
{
|
|
CATIHwConfiguration CATIHwConfig(pConfigInfo, pI2cScript, &nErrorCode);
|
|
|
|
pI2cScript->ReleaseI2CProvider();
|
|
|
|
if(nErrorCode != WDMMINI_NOERROR)
|
|
{
|
|
DBGERROR(("CATIHwConfig constructor failure = %lx\n", nErrorCode));
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
UINT uiDecoderId;
|
|
UCHAR chipAddr;
|
|
CATIHwConfig.GetDecoderConfiguration(&uiDecoderId, &chipAddr);
|
|
// check the device installed before enabling any access to it
|
|
if((uiDecoderId != VIDEODECODER_TYPE_BT829) &&
|
|
(uiDecoderId != VIDEODECODER_TYPE_BT829A)) {
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
CATIHwConfig.EnableDecoderI2CAccess(pI2cScript, TRUE);
|
|
|
|
int outputEnablePolarity = CATIHwConfig.GetDecoderOutputEnableLevel();
|
|
if(outputEnablePolarity == UINT(-1))
|
|
{
|
|
DBGERROR(("Unexpected outputEnablePolarity"));
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
pDevExt->deviceParms.pI2cScript = pI2cScript;
|
|
pDevExt->deviceParms.chipAddr = chipAddr;
|
|
pDevExt->deviceParms.outputEnablePolarity = outputEnablePolarity;
|
|
pDevExt->deviceParms.ulVideoInStandardsSupportedByCrystal = CATIHwConfig.GetVideoInStandardsSupportedByCrystal(); //Paul
|
|
pDevExt->deviceParms.ulVideoInStandardsSupportedByTuner = CATIHwConfig.GetVideoInStandardsSupportedByTuner(); //Paul
|
|
}
|
|
|
|
pDevice = (Device*) new ((PVOID)&pDevExt->CDevice)
|
|
Device(pConfigInfo, &pDevExt->deviceParms, &nErrorCode);
|
|
|
|
if (nErrorCode)
|
|
{
|
|
pDevice = NULL;
|
|
TRAP();
|
|
FAIL;
|
|
}
|
|
|
|
} END_ENSURE;
|
|
|
|
DBGTRACE(("Exit : InitializeDevice()\n"));
|
|
|
|
return pDevice;
|
|
}
|
|
|
|
|
|
size_t DeivceExtensionSize()
|
|
{
|
|
return (sizeof(DEVICE_DATA_EXTENSION));
|
|
}
|