📄 camerapdd.h
字号:
//
// 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.
//
//
/******************************************************************************
** Copyright 2000-2003 Intel Corporation All Rights Reserved.
**
** Portions of the source code contained or described herein and all documents
** related to such source code (Material) are owned by Intel Corporation
** or its suppliers or licensors and is licensed by Microsoft Corporation for distribution.
** Title to the Material remains with Intel Corporation or its suppliers and licensors.
** Use of the Materials is subject to the terms of the Microsoft license agreement which accompanied the Materials.
** No other license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise
** Some portion of the Materials may be copyrighted by Microsoft Corporation.
**
********************************************************************************/
#ifndef __CAMERA_PDD_H__
#define __CAMERA_PDD_H__
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_HW_FRAMES 3
typedef class CCameraPdd
{
public:
CCameraPdd();
~CCameraPdd();
DWORD PDDInit(
PVOID MDDContext,
PPDDFUNCTBL pPDDFuncTbl
);
void PDD_DeInit();
DWORD GetAdapterInfo(
PADAPTERINFO pAdapterInfo
);
DWORD HandleVidProcAmpChanges(
DWORD dwPropId,
LONG lFlags,
LONG lValue
);
DWORD HandleCamControlChanges(
DWORD dwPropId,
LONG lFlags,
LONG lValue
);
DWORD HandleVideoControlCapsChanges(
LONG lModeType ,
ULONG ulCaps
);
DWORD SetPowerState(
CEDEVICE_POWER_STATE PowerState
);
DWORD HandleAdapterCustomProperties(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD InitSensorMode(
ULONG ulModeType,
LPVOID ModeContext
);
DWORD DeInitSensorMode(
ULONG ulModeType
);
DWORD SetSensorState(
ULONG lPinId,
CSSTATE csState
);
DWORD TakeStillPicture(
LPVOID pBurstModeInfo );
DWORD GetSensorModeInfo(
ULONG ulModeType,
PSENSORMODEINFO pSensorModeInfo
);
DWORD SetSensorModeFormat(
ULONG ulModeType,
PCS_DATARANGE_VIDEO pCsDataRangeVideo
);
PVOID AllocateBuffer(
ULONG ulModeType
);
DWORD DeAllocateBuffer(
ULONG ulModeType,
PVOID pBuffer
);
DWORD RegisterClientBuffer(
ULONG ulModeType,
PVOID pBuffer
);
DWORD UnRegisterClientBuffer(
ULONG ulModeType,
PVOID pBuffer
);
DWORD FillBuffer(
ULONG ulModeType,
PUCHAR pImage );
DWORD HandleSensorModeCustomProperties(
ULONG ulModeType,
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
bool PauseCapture( void );
bool AllocateHWBuffers(
ULONG ucBufferType
);
bool DeAllocateHWBuffers(
ULONG ucBufferType
);
bool GetCurrentHWBuffer(
ULONG ulPinId,
P_CAMERA_DMA_BUFFER_INFO pCamDmaBuffer
);
bool StartHWCapture( );
bool StopHWCapture( );
bool CaptureHWStillImage( );
bool RevertCaptureState( void );
void CameraHandleVideoFrame ( );
void CameraHandleStillFrame ( );
void SuspendCamera( );
void ResumeCamera( );
DWORD CUYVYToYV12Convertor(BYTE *pInput, BYTE *pOutput);
private:
HANDLE m_hContext;
CSSTATE m_CsState[MAX_SUPPORTED_PINS];
CSSTATE m_CsPrevState[MAX_SUPPORTED_PINS];
SENSORMODEINFO m_SensorModeInfo[MAX_SUPPORTED_PINS];
// Total number of pins implemented by this camera
ULONG m_ulCTypes;
// Power Capabilities
POWER_CAPABILITIES PowerCaps;
CEDEVICE_POWER_STATE m_PowerState;
// All ProcAmp and CameraControl props
SENSOR_PROPERTY m_SensorProps[NUM_PROPERTY_ITEMS];
// Array of All the Video Formats supported by all the pins
PPINVIDEOFORMAT m_pModeVideoFormat;
// VideoControl Caps corresponding to all the pins
VIDCONTROLCAPS *m_pModeVideoCaps;
// Pointer to the MDD Pin Object corresponding to all the pins.
// HandlePinIO() method of this object is then called whenever
// an image is ready. HandlePinIO() internally calls
// FillPinBuffer() of PDD interface.
LPVOID *m_ppModeContext;
// Currently selected video format for each pin
CS_DATARANGE_VIDEO m_CurrentFormat[MAX_SUPPORTED_PINS];
CAMERA_DMA_BUFFER_INFO m_CameraHWVideoBuffers[MAX_HW_FRAMES];
CAMERA_DMA_BUFFER_INFO m_CameraHWStillBuffer;
ULONG m_ulCurrentFrame;
bool m_bCameraHWRunning;
bool m_bStillInProgress;
bool m_bCameraWasRunning;
} CAMERAPDD, * PCAMERAPDD;
#ifdef __cplusplus
}
#endif
#endif // __CAMERA_PDD_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -