⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capmain.cpp

📁 winddk src目录下的WDM源码压缩!
💻 CPP
字号:
//==========================================================================;
//
//  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));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -