Leaked source code of windows server 2003
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

//==========================================================================;
//
// 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));
}