📄 pindriver.h
字号:
//-----------------------------------------------------------------------------
//
// Copyright (C) 2003-2004, MOTOROLA, INC. All Rights Reserved
// THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
// BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
// MOTOROLA, INC.
//
//------------------------------------------------------------------------------
//
// Copyright (C) 2004, Freescale Semiconductor, Inc. All Rights Reserved
// THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
// BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
// Freescale Semiconductor, Inc.
//
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//
// File: PinDriver.h
//
// Header file for PinDevice class
//
//------------------------------------------------------------------------------
#include "CameraDriver.h"
#ifndef __PIN_DD
#define __PIN_DD
#ifdef __cplusplus
extern "C" {
#endif
//------------------------------------------------------------------------------
// Defines
#define PIN_TIMEOUT 250
//------------------------------------------------------------------------------
// Types
typedef MMRESULT (WINAPI *FNTIMEKILLEVENT)(UINT);
typedef MMRESULT (WINAPI *FNTIMESETEVENT)(UINT, UINT, LPTIMECALLBACK, DWORD, UINT );
typedef enum _ImageCommands
{
IMAGE_NTSC_EIA_100AMP_100SAT = 0,
IMAGE_NTSC_EIA_75AMP_100SAT,
IMAGE_BLACK,
IMAGE_WHITE,
IMAGE_GRAY_INCREASING,
IMAGE_LIST_TERMINATOR // Always keep this guy last
} IMAGECOMMAND;
typedef struct CPinInitHandle
{
PCAMERADEVICE pCamDevice;
} PININITHANDLE, * PPININITHANDLE;
typedef class CPinDevice
{
public:
CPinDevice();
~CPinDevice();
bool InitializeSubDevice(PCAMERADEVICE pCamDevice);
DWORD StreamInstantiate(
PCSPROPERTY_STREAMEX_S pCsPropStreamEx,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleConnectionRequests(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleStreamRequests(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleVPConfigRequests(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleReadStreamRequests(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleAllocateBuffers(
PUCHAR pInBuf,
DWORD InBufLen,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinSetDirectDisplayMode(BOOL bDirectDisplayMode);
DWORD PinSetDirectCaptureMode(BOOL bDirectCaptureMode);
void HandlePinIO( );
void SetState(
CSSTATE CsState,
CSSTATE * CsPrevState
);
static void TimerCallBack(
UINT uTimerID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dw1,
DWORD_PTR dw2
);
bool PauseStream( );
bool CloseSubDevice( );
CS_DATARANGE_VIDEO m_CsDataRangeVideo;
CSSTATE m_CsState;
bool m_fPrpChannelEnabled;
bool m_fJustEnablePrp;
HANDLE m_hPrPBuffFilled;
UINT8 m_BufferFilled;
ULONG m_ulCurrNumOfBuffers;
private:
bool AllocateBuffers( );
bool CreateTimer( );
inline bool IsBufferListEmpty( )
{
return (NULL == m_pHeadBuffer);
}
void BufferFill(
PCSSTREAM_HEADER pCsStreamHeader,
PCS_FRAME_INFO pCsFrameInfo,
IMAGECOMMAND Command,
bool FlipHorizontal
);
bool AddFreeBuf(
bool fDriverAllocating,
PCS_STREAM_DESCRIPTOR pCsStreamDesc
);
bool RemoveBufferFromList(PCS_STREAM_DESCRIPTOR * ppCsStreamDesc);
bool DeleteBufferList();
DWORD PinHandleConnStateSubReqs(
ULONG ulReqFlags,
PUCHAR pOutBuf,
DWORD OutBufLen,
PDWORD pdwBytesTransferred
);
DWORD PinHandleConnDataFormatSubReqs(
ULONG ulReqFlags,
PCS_DATAFORMAT_VIDEOINFOHEADER pCsDataFormatVidInfoHdr,
PDWORD pdwBytesTransferred
);
ULONG m_ulPinId;
ULONG m_ulMaxNumOfBuffers;
ULONG m_ulFrameSize;
ULONG m_ulFramesDropped;
ULONG m_ulPictureNumber;
FNTIMESETEVENT m_pfnTimeSetEvent;
FNTIMEKILLEVENT m_pfnTimeKillEvent;
PSTREAM_BUFFERNODE m_pHeadBuffer;
PSTREAM_BUFFERNODE m_pHeadBufferOri;
PCAMERADEVICE m_pCamAdapter;
MMRESULT m_TimerIdentifier;
REFERENCE_TIME m_RtAveTimePerFrame;
HANDLE m_hMsgQ;
HANDLE m_hIOThread;
HMODULE m_hTimerDll;
CRITICAL_SECTION m_csStreamBuffer;
bool m_bBuffersAllocated;
bool m_fClientAllocateBuffers;
bool m_fClientInitialized;
bool m_fDiscontinuity;
} PINDEVICE, * PPINDEVICE;
//------------------------------------------------------------------------------
// Functions
#ifdef __cplusplus
}
#endif
#endif //__PIN_DD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -