📄 camera_pdd.cpp
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include <windows.h>
#include <pm.h>
#include "Cs.h"
#include "Csmedia.h"
#include "CameraPDDProps.h"
#include "dstruct.h"
#include "dbgsettings.h"
#include "s3c6400_camera.h"
#include <camera.h>
#include "CameraDriver.h"
#include "SensorFormats.h"
#include "SensorProperties.h"
#include "PinDriver.h"
#include "CameraPDD.h"
#include "camera_pdd.h"
#include "wchar.h"
#define MSG_ERROR 1
#define MSG_INFO 0
#define MSG_INOUT 0
#define MSG_ON 0
// Pointer to camera driver instance which we will send back with callback functions
extern DWORD dwCameraDriverContext;
// Signals the application that the video or still image frame is available
extern PFNCAMHANDLEFRAME pfnCameraHandleVideoFrame;
extern PFNCAMHANDLEFRAME pfnCameraHandleStillFrame;
extern PFNCAMHANDLEFRAME pfnCameraHandlePreviewFrame;
PDDFUNCTBL FuncTbl = {
sizeof(PDDFUNCTBL),
PDD_Init,
PDD_DeInit,
PDD_GetAdapterInfo,
PDD_HandleVidProcAmpChanges,
PDD_HandleCamControlChanges,
PDD_HandleVideoControlCapsChanges,
PDD_SetPowerState,
PDD_HandleAdapterCustomProperties,
PDD_InitSensorMode,
PDD_DeInitSensorMode,
PDD_SetSensorState,
PDD_TakeStillPicture,
PDD_GetSensorModeInfo,
PDD_SetSensorModeFormat,
PDD_AllocateBuffer,
PDD_DeAllocateBuffer,
PDD_RegisterClientBuffer,
PDD_UnRegisterClientBuffer,
PDD_FillBuffer,
PDD_HandleModeCustomProperties
};
const POWER_CAPABILITIES s_PowerCaps =
{
// DeviceDx: Supported power states
DX_MASK(D0 ) | DX_MASK(D4),
0, // WakeFromDx:
0, // InrushDx: No inrush of power
{ // Power: Maximum milliwatts in each state
0x00000001, // D0 = 0
0x00000001, // D1 = 0
0x00000001, // D2 = 0
0x00000001, // D3 = 0
0x00000001 // D4 = 0 (off)
},
{ // Latency
0x00000000, // D0 = 0
0x00000000, // D1 = 0
0x00000000, // D2 = 0
0x00000000, // D3 = 0
0x00000000 // D4 = 0
},
0, // Flags: None
};
CCameraPdd::CCameraPdd()
{
m_ulCTypes = 2;
m_bStillCapInProgress = false;
m_hContext = NULL;
m_pModeVideoFormat = NULL;
m_pModeVideoCaps = NULL;
m_ppModeContext = NULL;
m_pCurrentFormat = NULL;
m_iPinUseCount = 0;
m_PowerState = D0;
m_bCameraPreviewRunning = FALSE;
m_bCameraVideoRunning = FALSE;
m_bCameraPreviewWasRunning = FALSE;
m_bCameraVideoWasRunning = FALSE;
InitializeCriticalSection( &m_csPddDevice );
memset( &m_CsState, 0x0, sizeof(m_CsState));
memset( &m_SensorModeInfo, 0x0, sizeof(m_SensorModeInfo));
memset( &m_SensorProps, 0x0, sizeof(m_SensorProps));
memset( &PowerCaps, 0x0, sizeof(PowerCaps));
}
CCameraPdd::~CCameraPdd()
{
DeleteCriticalSection( &m_csPddDevice );
if( NULL != m_pModeVideoCaps )
{
delete [] m_pModeVideoCaps;
m_pModeVideoCaps = NULL;
}
if( NULL != m_pCurrentFormat )
{
delete [] m_pCurrentFormat;
m_pCurrentFormat = NULL;
}
if( NULL != m_pModeVideoFormat )
{
delete [] m_pModeVideoFormat;
m_pModeVideoFormat = NULL;
}
if( NULL != m_ppModeContext )
{
delete [] m_ppModeContext;
m_ppModeContext = NULL;
}
}
DWORD CCameraPdd::PDDInit( PVOID MDDContext, PPDDFUNCTBL pPDDFuncTbl )
{
m_hContext = (HANDLE)MDDContext;
// Real drivers may want to create their context
RETAILMSG(MSG_INOUT,(TEXT("++++++++++++++++++++PDDInit\n")));
if (!CameraInit(MDDContext))
{
DEBUGMSG( ZONE_ERROR, ( _T("PddInit:FAILED to Initialize camera\r\n") ) );
return ERROR_GEN_FAILURE;
}
dwCameraDriverContext = reinterpret_cast<DWORD>( this );
// This callback function is used to signal the application that the video frame is now available.
pfnCameraHandleVideoFrame = CameraVideoFrameCallback;
// This callback function is used to signal the application that the still image is now available.
pfnCameraHandleStillFrame = CameraStillFrameCallback;
// This callback function is used to signal the application that the Preview image is now available.
pfnCameraHandlePreviewFrame = CameraPreviewFrameCallback;
m_ulCTypes = 3; // Default number of Sensor Modes is 2
// Read registry to override the default number of Sensor Modes.
ReadMemoryModelFromRegistry();
if( pPDDFuncTbl->dwSize > sizeof( PDDFUNCTBL ) )
{
return ERROR_INSUFFICIENT_BUFFER;
}
memcpy( pPDDFuncTbl, &FuncTbl, sizeof( PDDFUNCTBL ) );
memset( m_SensorProps, 0x0, sizeof(m_SensorProps) );
memcpy( &PowerCaps, &s_PowerCaps, sizeof( POWER_CAPABILITIES ) );
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set all VideoProcAmp and CameraControl properties.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//VideoProcAmp
m_SensorProps[ENUM_BRIGHTNESS].ulCurrentValue = BrightnessDefault;
m_SensorProps[ENUM_BRIGHTNESS].ulDefaultValue = BrightnessDefault;
m_SensorProps[ENUM_BRIGHTNESS].pRangeNStep = &BrightnessRangeAndStep[0];
m_SensorProps[ENUM_BRIGHTNESS].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL;
m_SensorProps[ENUM_BRIGHTNESS].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL|CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_BRIGHTNESS].fSetSupported = VideoProcAmpProperties[ENUM_BRIGHTNESS].SetSupported;
m_SensorProps[ENUM_BRIGHTNESS].fGetSupported = VideoProcAmpProperties[ENUM_BRIGHTNESS].GetSupported;
m_SensorProps[ENUM_BRIGHTNESS].pCsPropValues = &BrightnessValues;
m_SensorProps[ENUM_CONTRAST].ulCurrentValue = ContrastDefault;
m_SensorProps[ENUM_CONTRAST].ulDefaultValue = ContrastDefault;
m_SensorProps[ENUM_CONTRAST].pRangeNStep = &ContrastRangeAndStep[0];
m_SensorProps[ENUM_CONTRAST].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL;
m_SensorProps[ENUM_CONTRAST].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL|CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_CONTRAST].fSetSupported = VideoProcAmpProperties[ENUM_CONTRAST].SetSupported;
m_SensorProps[ENUM_CONTRAST].fGetSupported = VideoProcAmpProperties[ENUM_CONTRAST].GetSupported;
m_SensorProps[ENUM_CONTRAST].pCsPropValues = &ContrastValues;
m_SensorProps[ENUM_HUE].ulCurrentValue = HueDefault;
m_SensorProps[ENUM_HUE].ulDefaultValue = HueDefault;
m_SensorProps[ENUM_HUE].pRangeNStep = &HueRangeAndStep[0];
m_SensorProps[ENUM_HUE].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_HUE].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_HUE].fSetSupported = VideoProcAmpProperties[ENUM_HUE].SetSupported;
m_SensorProps[ENUM_HUE].fGetSupported = VideoProcAmpProperties[ENUM_HUE].GetSupported;
m_SensorProps[ENUM_HUE].pCsPropValues = &HueValues;
m_SensorProps[ENUM_SATURATION].ulCurrentValue = SaturationDefault;
m_SensorProps[ENUM_SATURATION].ulDefaultValue = SaturationDefault;
m_SensorProps[ENUM_SATURATION].pRangeNStep = &SaturationRangeAndStep[0];
m_SensorProps[ENUM_SATURATION].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_SATURATION].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL|CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_SATURATION].fSetSupported = VideoProcAmpProperties[ENUM_SATURATION].SetSupported;
m_SensorProps[ENUM_SATURATION].fGetSupported = VideoProcAmpProperties[ENUM_SATURATION].GetSupported;
m_SensorProps[ENUM_SATURATION].pCsPropValues = &SaturationValues;
m_SensorProps[ENUM_SHARPNESS].ulCurrentValue = SharpnessDefault;
m_SensorProps[ENUM_SHARPNESS].ulDefaultValue = SharpnessDefault;
m_SensorProps[ENUM_SHARPNESS].pRangeNStep = &SharpnessRangeAndStep[0];
m_SensorProps[ENUM_SHARPNESS].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_SHARPNESS].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_SHARPNESS].fSetSupported = VideoProcAmpProperties[ENUM_SHARPNESS].SetSupported;
m_SensorProps[ENUM_SHARPNESS].fGetSupported = VideoProcAmpProperties[ENUM_SHARPNESS].GetSupported;
m_SensorProps[ENUM_SHARPNESS].pCsPropValues = &SharpnessValues;
m_SensorProps[ENUM_GAMMA].ulCurrentValue = GammaDefault;
m_SensorProps[ENUM_GAMMA].ulDefaultValue = GammaDefault;
m_SensorProps[ENUM_GAMMA].pRangeNStep = &GammaRangeAndStep[0];
m_SensorProps[ENUM_GAMMA].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_GAMMA].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_GAMMA].fSetSupported = VideoProcAmpProperties[ENUM_GAMMA].SetSupported;
m_SensorProps[ENUM_GAMMA].fGetSupported = VideoProcAmpProperties[ENUM_GAMMA].GetSupported;
m_SensorProps[ENUM_GAMMA].pCsPropValues = &GammaValues;
m_SensorProps[ENUM_COLORENABLE].ulCurrentValue = ColorEnableDefault;
m_SensorProps[ENUM_COLORENABLE].ulDefaultValue = ColorEnableDefault;
m_SensorProps[ENUM_COLORENABLE].pRangeNStep = &ColorEnableRangeAndStep[0];
m_SensorProps[ENUM_COLORENABLE].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_COLORENABLE].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL|CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_COLORENABLE].fSetSupported = VideoProcAmpProperties[ENUM_COLORENABLE].SetSupported;
m_SensorProps[ENUM_COLORENABLE].fGetSupported = VideoProcAmpProperties[ENUM_COLORENABLE].GetSupported;
m_SensorProps[ENUM_COLORENABLE].pCsPropValues = &ColorEnableValues;
m_SensorProps[ENUM_WHITEBALANCE].ulCurrentValue = WhiteBalanceDefault;
m_SensorProps[ENUM_WHITEBALANCE].ulDefaultValue = WhiteBalanceDefault;
m_SensorProps[ENUM_WHITEBALANCE].pRangeNStep = &WhiteBalanceRangeAndStep[0];
m_SensorProps[ENUM_WHITEBALANCE].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_WHITEBALANCE].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL|CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_WHITEBALANCE].fSetSupported = VideoProcAmpProperties[ENUM_WHITEBALANCE].SetSupported;
m_SensorProps[ENUM_WHITEBALANCE].fGetSupported = VideoProcAmpProperties[ENUM_WHITEBALANCE].GetSupported;
m_SensorProps[ENUM_WHITEBALANCE].pCsPropValues = &WhiteBalanceValues;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].ulCurrentValue = BackLightCompensationDefault;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].ulDefaultValue = BackLightCompensationDefault;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].pRangeNStep = &BackLightCompensationRangeAndStep[0];
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].fSetSupported = VideoProcAmpProperties[ENUM_BACKLIGHT_COMPENSATION].SetSupported;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].fGetSupported = VideoProcAmpProperties[ENUM_BACKLIGHT_COMPENSATION].GetSupported;
m_SensorProps[ENUM_BACKLIGHT_COMPENSATION].pCsPropValues = &BackLightCompensationValues;
m_SensorProps[ENUM_GAIN].ulCurrentValue = GainDefault;
m_SensorProps[ENUM_GAIN].ulDefaultValue = GainDefault;
m_SensorProps[ENUM_GAIN].pRangeNStep = &GainRangeAndStep[0];
m_SensorProps[ENUM_GAIN].ulFlags = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_GAIN].ulCapabilities = CSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO;
m_SensorProps[ENUM_GAIN].fSetSupported = VideoProcAmpProperties[ENUM_GAIN].SetSupported;
m_SensorProps[ENUM_GAIN].fGetSupported = VideoProcAmpProperties[ENUM_GAIN].GetSupported;
m_SensorProps[ENUM_GAIN].pCsPropValues = &GainValues;
//CameraControl
m_SensorProps[ENUM_PAN].ulCurrentValue = PanDefault;
m_SensorProps[ENUM_PAN].ulDefaultValue = PanDefault;
m_SensorProps[ENUM_PAN].pRangeNStep = &PanRangeAndStep[0];
m_SensorProps[ENUM_PAN].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_PAN].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_PAN].fSetSupported = VideoProcAmpProperties[ENUM_PAN-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_PAN].fGetSupported = VideoProcAmpProperties[ENUM_PAN-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_PAN].pCsPropValues = &PanValues;
m_SensorProps[ENUM_TILT].ulCurrentValue = TiltDefault;
m_SensorProps[ENUM_TILT].ulDefaultValue = TiltDefault;
m_SensorProps[ENUM_TILT].pRangeNStep = &TiltRangeAndStep[0];
m_SensorProps[ENUM_TILT].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_TILT].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_TILT].fSetSupported = VideoProcAmpProperties[ENUM_TILT-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_TILT].fGetSupported = VideoProcAmpProperties[ENUM_TILT-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_TILT].pCsPropValues = &TiltValues;
m_SensorProps[ENUM_ROLL].ulCurrentValue = RollDefault;
m_SensorProps[ENUM_ROLL].ulDefaultValue = RollDefault;
m_SensorProps[ENUM_ROLL].pRangeNStep = &RollRangeAndStep[0];
m_SensorProps[ENUM_ROLL].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_ROLL].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_ROLL].fSetSupported = VideoProcAmpProperties[ENUM_ROLL-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_ROLL].fGetSupported = VideoProcAmpProperties[ENUM_ROLL-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_ROLL].pCsPropValues = &RollValues;
m_SensorProps[ENUM_ZOOM].ulCurrentValue = ZoomDefault;
m_SensorProps[ENUM_ZOOM].ulDefaultValue = ZoomDefault;
m_SensorProps[ENUM_ZOOM].pRangeNStep = &ZoomRangeAndStep[0];
m_SensorProps[ENUM_ZOOM].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_ZOOM].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_ZOOM].fSetSupported = VideoProcAmpProperties[ENUM_ZOOM-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_ZOOM].fGetSupported = VideoProcAmpProperties[ENUM_ZOOM-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_ZOOM].pCsPropValues = &ZoomValues;
m_SensorProps[ENUM_IRIS].ulCurrentValue = IrisDefault;
m_SensorProps[ENUM_IRIS].ulDefaultValue = IrisDefault;
m_SensorProps[ENUM_IRIS].pRangeNStep = &IrisRangeAndStep[0];
m_SensorProps[ENUM_IRIS].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_IRIS].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_IRIS].fSetSupported = VideoProcAmpProperties[ENUM_IRIS-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_IRIS].fGetSupported = VideoProcAmpProperties[ENUM_IRIS-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_IRIS].pCsPropValues = &IrisValues;
m_SensorProps[ENUM_EXPOSURE].ulCurrentValue = ExposureDefault;
m_SensorProps[ENUM_EXPOSURE].ulDefaultValue = ExposureDefault;
m_SensorProps[ENUM_EXPOSURE].pRangeNStep = &ExposureRangeAndStep[0];
m_SensorProps[ENUM_EXPOSURE].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_EXPOSURE].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL|CSPROPERTY_CAMERACONTROL_FLAGS_AUTO;
m_SensorProps[ENUM_EXPOSURE].fSetSupported = VideoProcAmpProperties[ENUM_EXPOSURE-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_EXPOSURE].fGetSupported = VideoProcAmpProperties[ENUM_EXPOSURE-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_EXPOSURE].pCsPropValues = &ExposureValues;
m_SensorProps[ENUM_FOCUS].ulCurrentValue = FocusDefault;
m_SensorProps[ENUM_FOCUS].ulDefaultValue = FocusDefault;
m_SensorProps[ENUM_FOCUS].pRangeNStep = &FocusRangeAndStep[0];
m_SensorProps[ENUM_FOCUS].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL;
m_SensorProps[ENUM_FOCUS].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL;
m_SensorProps[ENUM_FOCUS].fSetSupported = VideoProcAmpProperties[ENUM_FOCUS-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_FOCUS].fGetSupported = VideoProcAmpProperties[ENUM_FOCUS-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_FOCUS].pCsPropValues = &FocusValues;
m_SensorProps[ENUM_FLASH].ulCurrentValue = FlashDefault;
m_SensorProps[ENUM_FLASH].ulDefaultValue = FlashDefault;
m_SensorProps[ENUM_FLASH].pRangeNStep = &FlashRangeAndStep[0];
m_SensorProps[ENUM_FLASH].ulFlags = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL;
m_SensorProps[ENUM_FLASH].ulCapabilities = CSPROPERTY_CAMERACONTROL_FLAGS_MANUAL;
m_SensorProps[ENUM_FLASH].fSetSupported = VideoProcAmpProperties[ENUM_FLASH-NUM_VIDEOPROCAMP_ITEMS].SetSupported;
m_SensorProps[ENUM_FLASH].fGetSupported = VideoProcAmpProperties[ENUM_FLASH-NUM_VIDEOPROCAMP_ITEMS].GetSupported;
m_SensorProps[ENUM_FLASH].pCsPropValues = &FlashValues;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
m_pModeVideoFormat = NULL;
// Allocate Video Format specific array.
m_pModeVideoFormat = new PINVIDEOFORMAT[m_ulCTypes];
if( NULL == m_pModeVideoFormat )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -