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

  1. //==========================================================================;
  2. //
  3. // Decoder specific initialization routines
  4. //
  5. // $Date: 21 Aug 1998 21:46:10 $
  6. // $Revision: 1.1 $
  7. // $Author: Tashjian $
  8. //
  9. // $Copyright: (c) 1997 - 1998 ATI Technologies Inc. All Rights Reserved. $
  10. //
  11. //==========================================================================;
  12. extern "C"
  13. {
  14. #include "strmini.h"
  15. #include "ksmedia.h"
  16. }
  17. #include "wdmvdec.h"
  18. #include "capmain.h"
  19. #include "wdmdrv.h"
  20. #include "Device.h"
  21. #include "capdebug.h"
  22. CVideoDecoderDevice * InitializeDevice(PPORT_CONFIGURATION_INFORMATION pConfigInfo,
  23. PBYTE pWorkspace)
  24. {
  25. UINT nErrorCode = 0;
  26. Device * pDevice = NULL;
  27. PDEVICE_DATA_EXTENSION pDevExt = (PDEVICE_DATA_EXTENSION) pWorkspace;
  28. DBGTRACE(("InitializeDevice()\n"));
  29. ENSURE
  30. {
  31. CI2CScript *pI2cScript = (CI2CScript *) new ((PVOID)&pDevExt->CScript)
  32. CI2CScript(pConfigInfo, &nErrorCode);
  33. if (nErrorCode != WDMMINI_NOERROR)
  34. {
  35. DBGERROR(("CI2CScript creation failure = %lx\n", nErrorCode));
  36. TRAP();
  37. FAIL;
  38. }
  39. if (!pI2cScript->LockI2CProviderEx())
  40. {
  41. DBGERROR(("Couldn't get I2CProvider.\n"));
  42. TRAP();
  43. FAIL;
  44. }
  45. {
  46. CATIHwConfiguration CATIHwConfig(pConfigInfo, pI2cScript, &nErrorCode);
  47. pI2cScript->ReleaseI2CProvider();
  48. if(nErrorCode != WDMMINI_NOERROR)
  49. {
  50. DBGERROR(("CATIHwConfig constructor failure = %lx\n", nErrorCode));
  51. TRAP();
  52. FAIL;
  53. }
  54. UINT uiDecoderId;
  55. UCHAR chipAddr;
  56. CATIHwConfig.GetDecoderConfiguration(&uiDecoderId, &chipAddr);
  57. // check the device installed before enabling any access to it
  58. if((uiDecoderId != VIDEODECODER_TYPE_BT829) &&
  59. (uiDecoderId != VIDEODECODER_TYPE_BT829A)) {
  60. TRAP();
  61. FAIL;
  62. }
  63. CATIHwConfig.EnableDecoderI2CAccess(pI2cScript, TRUE);
  64. int outputEnablePolarity = CATIHwConfig.GetDecoderOutputEnableLevel();
  65. if(outputEnablePolarity == UINT(-1))
  66. {
  67. DBGERROR(("Unexpected outputEnablePolarity"));
  68. TRAP();
  69. FAIL;
  70. }
  71. pDevExt->deviceParms.pI2cScript = pI2cScript;
  72. pDevExt->deviceParms.chipAddr = chipAddr;
  73. pDevExt->deviceParms.outputEnablePolarity = outputEnablePolarity;
  74. pDevExt->deviceParms.ulVideoInStandardsSupportedByCrystal = CATIHwConfig.GetVideoInStandardsSupportedByCrystal(); //Paul
  75. pDevExt->deviceParms.ulVideoInStandardsSupportedByTuner = CATIHwConfig.GetVideoInStandardsSupportedByTuner(); //Paul
  76. }
  77. pDevice = (Device*) new ((PVOID)&pDevExt->CDevice)
  78. Device(pConfigInfo, &pDevExt->deviceParms, &nErrorCode);
  79. if (nErrorCode)
  80. {
  81. pDevice = NULL;
  82. TRAP();
  83. FAIL;
  84. }
  85. } END_ENSURE;
  86. DBGTRACE(("Exit : InitializeDevice()\n"));
  87. return pDevice;
  88. }
  89. size_t DeivceExtensionSize()
  90. {
  91. return (sizeof(DEVICE_DATA_EXTENSION));
  92. }