?? ov511cam.h
字號:
//USB常量定義
#define DRIVER_NAME TEXT("Ov511.dll")
#define DEVICE_PREFIX TEXT("CAM")
#define CLASS_NAME_SZ TEXT("Video_Class")
#define CLIENT_REGKEY_SZ TEXT("Drivers\\USB\\ClientDrivers\\Video_Class")
//USB視頻設備接口定義(類號碼為14)
#define USB_DEVICE_CLASS_VIDEO 0x0E
//USB驅動設置(設定設備特定特定的信息)
//USB_DRIVER_SETTINGS
#define DRIVER_SETTINGS \
sizeof(USB_DRIVER_SETTINGS), \
USB_NO_INFO, \
USB_NO_INFO, \
USB_NO_INFO, \
USB_NO_INFO, \
USB_NO_INFO, \
USB_NO_INFO, \
USB_DEVICE_CLASS_VIDEO, \
USB_NO_INFO, \
USB_NO_INFO
//計算csCameras所含型號個數的函數
#define dim(a) (sizeof(a)/sizeof(a[0]))
//
// Declare the driver entry points here.
//
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
DWORD CAM_Init (DWORD dwContext);
BOOL CAM_Deinit (DWORD dwContext);
DWORD CAM_Open (DWORD dwContext, DWORD dwAccess, DWORD dwShare);
BOOL CAM_Close (DWORD dwOpen);
DWORD CAM_Read (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount);
DWORD CAM_Write (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount);
DWORD CAM_Seek (DWORD dwOpen, long lDelta, WORD wType);
DWORD CAM_IOControl (DWORD dwOpen, DWORD dwCode,
PBYTE pIn, DWORD dwIn,
PBYTE pOut, DWORD dwOut,
DWORD *pdwBytesWritten);
void CAM_PowerDown (DWORD dwContext);
void CAM_PowerUp (DWORD dwContext);
#ifdef __cplusplus
} // extern "C"
#endif //__cplusplus
//接口和端點結構體
typedef struct {
USB_INTERFACE_DESCRIPTOR ifDesc;
BOOL fEndpoint;
USB_ENDPOINT_DESCRIPTOR epDesc;
} USBIF, *PUSBIF;
//管道結構體
typedef struct {
USB_PIPE hPipe;
UCHAR ucAddr;
WORD wPacketSize;
HANDLE hEvent;
} PIPE, *LPPIPE;
//設備上下文結構體
typedef struct {
HANDLE hVendorEvent;
int nInterfaces;
//視頻接口
PUSBIF usbVideoIF;
//視頻管道
PIPE pipeVideo;
} DEVICECONTEXT, *PDEVICECONTEXT;
//驅動程序上下文結構體
typedef struct {
DWORD dwSize;
int nNumOpens; //打開次數
CRITICAL_SECTION csDCall; //應用程序操作臨界區
HANDLE hStreamDevice; //存儲ActivateDevice返回值
BOOL bStopped; //是否停止
int nPacketSize; //包大小
// USB support
USB_HANDLE hDevice;
LPCUSB_FUNCS lpUsbFuncs;
//設備上下文指針
DWORD dwDeviceContext;
} DRVCONTEXT, *PDRVCONTEXT;
//取得配置數據,CAM_Init函數中調用這個函數,從注冊表找到設備上下文
PDRVCONTEXT GetConfigData (DWORD dwContext);
struct ov511_frame {
int framenum; /* Index of this frame */
unsigned char *data; /* Frame buffer */
unsigned char *tempdata; /* Temp buffer for multi-stage conversions */
unsigned char *rawdata; /* Raw camera data buffer */
unsigned char *compbuf; /* Temp buffer for decompressor */
int depth; /* Bytes per pixel */
int width; /* Width application is expecting */
int height; /* Height application is expecting */
int rawwidth; /* Actual width of frame sent from camera */
int rawheight; /* Actual height of frame sent from camera */
int sub_flag; /* Sub-capture mode for this frame? */
unsigned int format; /* Format for this frame */
int compressed; /* Is frame compressed? */
//volatile int grabstate; /* State of grabbing */
int scanstate; /* State of scanning */
int bytes_recvd; /* Number of image bytes received from camera */
long bytes_read; /* Amount that has been read() */
//wait_queue_head_t wq; /* Processes waiting */
int snapshot; /* True if frame was a snapshot */
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -