亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cameracode.cpp

?? 基于WINCE的Webcam程序 基于WINCE的Webcam程序 基于WINCE的Webcam程序 基于WINCE的Webcam程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//======================================================================
// CameraCode.cpp 
//
// This file contains routines that interface with the WebCam driver.
//
// Copyright (C) 2006 Douglas Boling
//
//======================================================================
#include <windows.h>				// For all that Windows stuff
#include <winioctl.h>				// Needed for CTLCODE macro

#include <webcamsdk.h>				// WebCam IOCTLs and structures

#include "CameraCode.h"				// Defines for this file

#include <imaging.h>
#include "mjpeg2bmp.h"				// Routines for converting MJPEG frames


#define MOTION_DETECT


// Returns number of elements
#define dim(x) (sizeof(x) / sizeof(x[0])) 
/*
typedef struct {
	HANDLE h;
	PBYTE p;
} MMOBJSTRUCT, *PMMOBJSTRUCT;

int WriteJPEG (LPTSTR lpszName, PBYTE pData, int nSize);
int AllocMMObject (int nSize, PMMOBJSTRUCT obj);
int FreeMMObject (PMMOBJSTRUCT obj);
*/
DWORD WINAPI ReadFrameThread (PVOID pArg);


#define NUMBUFFS      5
#define PREBUFFSIZE  512 

typedef struct {
	BOOL fCont;
	HANDLE hCam;
	HANDLE hThread;
	BOOL fDraw;
	BOOL fDetectMotion;
	DWORD dwFrameContext;
} CAMSTATE, *PCAMSTATE;

typedef struct {
	PCAMSTATE pcs;
	WORD wFormat;
	WORD wFrame;
	DWORD dwInterval;
	RECT rect;
	HDC hdc;
} THREADSTRUCT, *PTHREADSTRUCT;


// Returns information on a given format
int GetFormatInformation (PCAMSTATE, WORD wFormat, WORD wFrame, PFORMATPROPS pFmt);


// Label for the standard features supported by the Video spec. The
// order is important.
LPTSTR szFeatureLbls[] = {
	TEXT("Unsupported"),			// 0
	TEXT("Scanning Mode"),			// 1
	TEXT("Auto-Exposure Mode"),		// 2
	TEXT("Auto-Exposure Priority"), // 3
	TEXT("Exposure Time (Abs)"),	// 4
	TEXT("Exposure Time (Rel)"),	// 5
	TEXT("Focus (Abs)"),			// 6
	TEXT("Focus (Rel)"),			// 7
	TEXT("Iris (Abs)"),				// 8
	TEXT("Iris (Rel)"),				// 9
	TEXT("Zoom (Abs)"),				// 10
	TEXT("Zoom (Rel)"),				// 11
	TEXT("PanTilt (Abs)"),			// 12
	TEXT("PanTilt (Rel)"),			// 13
	TEXT("Roll (Abs)"),				// 14
	TEXT("Roll (Rel)"),				// 15
	TEXT("Focus, Auto"),			// 16
	TEXT("Privacy"),				// 17
	TEXT("Brightness"),				// 18
	TEXT("Contrast"),				// 19
	TEXT("Hue"),					// 20
	TEXT("Saturation"),				// 21
	TEXT("Sharpness"),				// 22
	TEXT("Gamma"),					// 23
	TEXT("White Balance Temp"),		// 24
	TEXT("White Balance Component"),// 25
	TEXT("Backlight Compensation"),	// 26
	TEXT("Gain"),					// 27
	TEXT("Power Line Frequency"),	// 28
	TEXT("Hue-Auto"),				// 29
	TEXT("White Balance Temp-Auto"),	// 30
	TEXT("White Balance Component-Auto"),//31
	TEXT("Digital Multiplier"),		// 32	
	TEXT("Digital Multiplier Limit"),// 33
	TEXT("Analog Video Standard"),	// 34
	TEXT("Analog Video Lock Status"), //35
};

//----------------------------------------------------------------------
// InitCamera - Opens the driver
//
DWORD InitCamera (LPTSTR pszCamName)
{
	
	PCAMSTATE pcs = (PCAMSTATE)LocalAlloc (LPTR, sizeof (CAMSTATE));
	if (pcs == 0)
		return 0;

	pcs->fCont = TRUE;
	pcs->hCam = INVALID_HANDLE_VALUE;
	pcs->fDraw = TRUE;
	pcs->fDetectMotion = FALSE;
	pcs->hThread = 0;

	if (pcs->hCam == INVALID_HANDLE_VALUE)
	{
		// Open Driver
		pcs->hCam = CreateFile (pszCamName, GENERIC_WRITE | GENERIC_READ, 
							   0, NULL, OPEN_EXISTING, 0, NULL);
		if (pcs->hCam == INVALID_HANDLE_VALUE)
		{
			LocalFree ((PVOID)pcs);
			return 0;
		}
	}
	return (DWORD)pcs;
}
//----------------------------------------------------------------------
// ShutdownCamera - Stops streaming and closes the driver
//
int ShutdownCamera (DWORD dwContext)
{
	PCAMSTATE pcs = (PCAMSTATE)dwContext;
	if (pcs->fCont)
		StopStreaming (dwContext);

	if (pcs->hCam != INVALID_HANDLE_VALUE)
	{
		CloseHandle (pcs->hCam);
	}
	LocalFree ((PVOID)dwContext);
	return 0;
}

//----------------------------------------------------------------------
// InitConverters
//
HRESULT InitConverters (LPCWSTR pszExt)
{
	return InitDisplayFrame (pszExt);
}

//----------------------------------------------------------------------
// FreeConverters
//
HRESULT FreeConverters (void)
{
	return ReleaseDisplayFrame ();
}

//----------------------------------------------------------------------
// SetDrawState - Sets or clears drawing state flag
//
int SetDrawState (DWORD dwContext, BOOL fDraw)
{
	PCAMSTATE pcs = (PCAMSTATE)dwContext;
	pcs->fDraw = fDraw;
	return 0;
}

//----------------------------------------------------------------------
// SetMotionDetectState - Sets or clears the motion detect state flag
//
int SetMotionDetectState (DWORD dwContext, BOOL fDetectMotion)
{
	PCAMSTATE pcs = (PCAMSTATE)dwContext;
	pcs->fDetectMotion = fDetectMotion;
	return 0;
}

//----------------------------------------------------------------------
// GetFeatureList
//
int GetFeatureList (DWORD dwContext, PFEATUREPROPS pFeatures, DWORD *pdwSize)
{
	int rc = 0;
	BOOL f;
	DWORD dwBytes;

	PCAMSTATE pcs = (PCAMSTATE)dwContext;

	if (pdwSize == 0)
		return ERROR_INVALID_PARAMETER;

	// See if they're asking for the number of supported features
	if (pFeatures == 0)
	{
		//
		// Get parameter list size
		//
		f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_QUERYPARAMETERARARY, 
							 0, 0, 0, 0, pdwSize, NULL);
		if (!f)
			rc = GetLastError();
	}
	else
	{
		// Get parameter list 
		f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_QUERYPARAMETERARARY, 0, 0, 
		                     pFeatures, *pdwSize, &dwBytes, NULL);
		if (!f)
			rc = GetLastError();
	}
	return rc;
}

//----------------------------------------------------------------------
// GetFeatureText - Helper function that labels feature IDs
//
LPCTSTR GetFeatureText (DWORD dwFeatureID)
{
	LPTSTR pstr = L"";

	if (dwFeatureID < dim (szFeatureLbls))
		pstr = szFeatureLbls[dwFeatureID];

	return pstr;
}
//----------------------------------------------------------------------
// GetFeatureSetting - Queries a setting from the camera
//
int GetFeatureSetting (DWORD dwContext, DWORD dwFeature, DWORD *pVal)
{
	BOOL f;
	int rc = 0;
	DWORD dwBytes;

	PCAMSTATE pcs = (PCAMSTATE)dwContext;

	if (pVal == 0)
		return ERROR_INVALID_PARAMETER;

	f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_QUERYPARAMETER, 
		                 &dwFeature, sizeof (DWORD), 
		                 pVal, sizeof (DWORD), &dwBytes, NULL);
	if (!f)
		rc = GetLastError();

	return rc;
}
//----------------------------------------------------------------------
// SetFeatureSetting - Sets a feature on the camera
//
int SetFeatureSetting (DWORD dwContext, DWORD dwFeature, DWORD dwVal)
{
	BOOL f;
	int rc = 0;
	DWORD dwBytes;
	SETFEATURESTRUCT sfs;

	PCAMSTATE pcs = (PCAMSTATE)dwContext;

	sfs.cbSize = sizeof (SETFEATURESTRUCT);
	sfs.dwFeatureID = dwFeature;
	sfs.dwVal = dwVal;

	f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_SETPARAMETER, 
		                 &sfs, sizeof (SETFEATURESTRUCT), 0, 0,
		                 &dwBytes, NULL);
	if (!f)
		rc = GetLastError();
	return rc;
}
//----------------------------------------------------------------------
// GetVideoFormats - Returns an array with the supported streaming
// video formats
//
int GetVideoFormats (DWORD dwContext, PFORMATPROPS pFormats, int *pnCount)
{
	int i, rc, nCnt;

	PCAMSTATE pcs = (PCAMSTATE)dwContext;

	if (pnCount == 0)
		return 0;

	nCnt = *pnCount;
	*pnCount = 0;
	for (i = 0; i < nCnt; i++)
	{
		memset (&pFormats[i], 0, sizeof (FORMATPROPS));
		rc = GetFormatInformation (pcs, 1, i+1, &pFormats[i]);
		if (rc) break;
		(*pnCount)++;
	}
	return 0;
}
//----------------------------------------------------------------------
// GetStillFormats - Returns an array with the supported still
// image formats
//
int GetStillFormats (DWORD dwContext, PFORMATPROPS pFormats, int *pnCount)
{
	int rc = 0;
	DWORD dwBytes;
	BOOL f;

	PCAMSTATE pcs = (PCAMSTATE)dwContext;

	DWORD dwFormat = 1;
	DWORD dw = *pnCount * sizeof (FORMATPROPS);
	//
	// Get information about a given video format
	//
	f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_QUERYSTILLFORMATS, 
	                     (LPVOID)&dwFormat, sizeof (DWORD), 
						 pFormats, dw, &dwBytes, NULL);
	if (!f) 
		rc = GetLastError();

	*pnCount = dwBytes / sizeof (FORMATPROPS);
	return rc;
}

//----------------------------------------------------------------------
// GetFormatInformation - Returns information about a specific streaming
// video format
//
int GetFormatInformation (PCAMSTATE pcs, WORD wFormat, WORD wFrame, PFORMATPROPS pFmt)
{
	VIDFORMATSTRUCT vf;
	FORMATPROPS fmtData;
	DWORD dwBytes;
	BOOL f;
	int rc;

	memset (&vf, 0, sizeof (vf));
	vf.cbSize = sizeof (VIDFORMATSTRUCT);
	vf.wFormatIndex = wFormat;
	vf.wFrameIndex = wFrame;
	
	//
	// Get information about a given video format
	//
	f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_GETVIDEOFORMAT, 
	                     (LPVOID)&vf, sizeof (VIDFORMATSTRUCT), 
						 &fmtData, sizeof (fmtData), &dwBytes, NULL);
	rc = GetLastError();
	if (!f) 
	{
		return rc;
	}
	if (dwBytes != sizeof (FORMATPROPS))
	{
		return -1;
	}
	*pFmt = fmtData;
	return rc;
}
//----------------------------------------------------------------------
// GetFirstStreamFrame - Starts streaming video and returns the first
// video frame. 
//
int GetFirstStreamFrame (DWORD dwContext, WORD wFormat, WORD wFrame, DWORD dwInterval, 
						 PBYTE *ppFrame, DWORD *pdwFrameSize, DWORD dwTimeout)
{
	PCAMSTATE pcs = (PCAMSTATE)dwContext;
	STARTVIDSTRUCT svStruct;
	DWORD dwBytes;
	BOOL f;
	int rc = 0;

	// Parameters needed to start a stream
	dwBytes = 0;
	svStruct.cbSize = sizeof (STARTVIDSTRUCT);
	svStruct.wFormatIndex = wFormat;
	svStruct.wFrameIndex = wFrame;
	svStruct.dwInterval = dwInterval;
	svStruct.dwNumBuffs = NUMBUFFS;
	svStruct.dwPreBuffSize = PREBUFFSIZE;
	svStruct.dwPostBuffSize = 0;
	//
	// Start the video stream
	//
	f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_STARTVIDEOSTREAM, 
				         (LPVOID)&svStruct, sizeof (STARTVIDSTRUCT), 
						 0, 0, &dwBytes, NULL);
	if (f)
	{
		// Call the driver for a frame
		GETFRAMESTRUCT gfsIn;
		GETFRAMESTRUCTOUT gfsOut;

		memset (&gfsIn, 0, sizeof (GETFRAMESTRUCT));
		gfsIn.cbSize = sizeof (GETFRAMESTRUCT);
		gfsIn.dwFlags = GETFRAMEFLAG_GET_LATESTFRAME;
		gfsIn.dwFlags |= GETFRAMEFLAG_TIMEOUT_VALID;
		gfsIn.dwTimeout = dwTimeout;
		
		memset (&gfsOut, 0, sizeof (GETFRAMESTRUCTOUT));
		gfsOut.cbSize = sizeof (GETFRAMESTRUCTOUT);

		// Get the next frame of video
		f = DeviceIoControl (pcs->hCam, IOCTL_CAMERA_DEVICE_GETNEXTVIDEOFRAME, 
					         &gfsIn, sizeof (GETFRAMESTRUCT), 
							 &gfsOut, sizeof(GETFRAMESTRUCTOUT), &dwBytes, NULL);
		if (f)
		{
			*ppFrame = gfsOut.pFrameData;
			*pdwFrameSize = gfsOut.dwFrameSize;
		}
	}
	if (!f) rc = GetLastError();
	return rc;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品一区二区三区四区 | 国产伦精品一区二区三区免费迷| 日本亚洲视频在线| 亚洲麻豆国产自偷在线| 国产精品久久久久影院色老大| 五月天一区二区| 精品国免费一区二区三区| 欧美亚洲禁片免费| 6080午夜不卡| 欧美美女喷水视频| 欧美精选一区二区| 91精品国产欧美一区二区| 欧美日韩电影在线| 欧美日韩aaa| 日韩午夜电影在线观看| 日韩女优视频免费观看| 久久久一区二区| 国产精品你懂的在线欣赏| 中文字幕欧美一区| 亚洲第一综合色| 日韩av一二三| 国产91精品一区二区麻豆亚洲| 成人午夜精品一区二区三区| 色综合中文字幕国产 | 亚洲精品欧美综合四区| 99久久久精品| 91国偷自产一区二区开放时间 | 成人国产精品免费观看视频| 粉嫩一区二区三区在线看 | 国产精品国产三级国产aⅴ入口| 亚洲图片激情小说| 午夜国产精品一区| 国产精品1024| 欧美日韩免费一区二区三区| 日本vs亚洲vs韩国一区三区| 国产日韩在线不卡| 久久人人爽爽爽人久久久| 国产精品美日韩| 日韩电影在线观看网站| 国产成人自拍网| 欧美色图免费看| 久久婷婷久久一区二区三区| 一区二区三区四区高清精品免费观看| 奇米在线7777在线精品 | 日本一区二区免费在线观看视频| 国产精品久久777777| 天堂在线亚洲视频| av一本久道久久综合久久鬼色| 在线不卡欧美精品一区二区三区| 国产日韩欧美高清| 日韩av中文字幕一区二区| 波多野结衣中文一区| 51午夜精品国产| 亚洲精品视频自拍| 国产一区二区免费在线| 欧美二区在线观看| 亚洲日本va午夜在线影院| 激情综合网激情| 欧美人妖巨大在线| 自拍av一区二区三区| 国产乱码精品1区2区3区| 欧美日韩电影一区| 一区二区三区中文字幕电影| 国产电影一区在线| 日韩精品一区二区三区在线播放 | 欧美色欧美亚洲另类二区| 欧美激情一区二区| 精品一区中文字幕| 5566中文字幕一区二区电影| 一区二区三区日韩精品| 不卡视频一二三四| 久久精品视频一区二区三区| 日韩精品视频网站| 在线播放欧美女士性生活| 亚洲中国最大av网站| 97超碰欧美中文字幕| 色综合久久中文字幕| 免费成人美女在线观看.| 丝袜美腿亚洲一区二区图片| 国产尤物一区二区在线| 91精品欧美综合在线观看最新| 一区二区在线看| 99精品在线免费| 中文字幕在线一区二区三区| 国产精品12区| 国产精品拍天天在线| 不卡的电影网站| 亚洲乱码国产乱码精品精小说| 北条麻妃一区二区三区| 亚洲日本丝袜连裤袜办公室| 一本大道久久精品懂色aⅴ| 中文字幕一区日韩精品欧美| 成人av资源下载| 亚洲卡通动漫在线| 91国内精品野花午夜精品| 亚洲国产成人porn| 宅男在线国产精品| 国内精品久久久久影院薰衣草 | 欧美日韩一本到| 午夜亚洲福利老司机| 日韩欧美第一区| 国内不卡的二区三区中文字幕| 国产欧美日韩在线看| 欧美视频中文字幕| 91尤物视频在线观看| 亚洲最新在线观看| 中文字幕一区二区三区av| 91免费国产在线| 亚洲一区二区免费视频| 欧美不卡123| 成人一区二区视频| 亚洲激情图片一区| 日韩欧美久久久| 国产成人在线影院| 一区二区三区久久| 欧美电影免费观看高清完整版在| 国产精品影音先锋| 亚洲影视在线播放| 精品国产百合女同互慰| 99热99精品| 免费久久精品视频| 1024精品合集| 欧美成人精品高清在线播放| www.亚洲在线| 激情伊人五月天久久综合| 亚洲视频一区二区在线观看| 日韩三级视频中文字幕| av亚洲产国偷v产偷v自拍| 日本中文一区二区三区| 国产精品久久久久永久免费观看| 正在播放亚洲一区| 99久久精品国产一区二区三区| 日韩黄色小视频| 亚洲女同一区二区| 亚洲精品一区二区三区99| 色噜噜久久综合| 成人午夜电影小说| 久久99精品国产91久久来源| 亚洲欧美日韩精品久久久久| 欧美成人激情免费网| 欧美日韩久久久一区| 成人av网站在线| 精品一区二区三区欧美| 亚洲第一会所有码转帖| 国产精品成人免费| 欧美高清一级片在线观看| 日韩免费电影网站| 欧美日韩成人综合| 色婷婷久久久亚洲一区二区三区| 国产福利一区在线观看| 精品一区二区影视| 日日摸夜夜添夜夜添精品视频 | 国产精品成人一区二区艾草| 久久久青草青青国产亚洲免观| 91麻豆精品国产自产在线观看一区| 91黄色免费看| 91国偷自产一区二区三区成为亚洲经典 | 免费在线观看一区| 亚洲成a人v欧美综合天堂| 亚洲精品中文在线| 一区二区三区色| 亚洲一区二区三区四区不卡| 一区二区三区不卡视频在线观看 | 欧美不卡在线视频| 欧美成人官网二区| 欧美成人精品高清在线播放| 日韩欧美成人激情| 久久综合资源网| 久久网站热最新地址| 久久久久久97三级| 欧美国产精品v| 亚洲欧美自拍偷拍| 亚洲精品日产精品乱码不卡| 一区二区三区在线免费观看| 亚洲精品日日夜夜| 午夜一区二区三区视频| 日韩电影一区二区三区| 免费黄网站欧美| 国产一区二区三区黄视频| 国产成人av资源| 91视频观看视频| 欧美日韩国产区一| 日韩视频永久免费| 国产亚洲一二三区| 亚洲精品亚洲人成人网| 日韩精品亚洲一区二区三区免费| 久久激五月天综合精品| 国产经典欧美精品| 91成人国产精品| 欧美成人vr18sexvr| 国产精品高潮久久久久无| 亚洲一区二区三区四区五区中文 | 麻豆精品视频在线观看| 国产一区二区三区不卡在线观看| 成人a免费在线看| 欧美日韩国产影片| 欧美精品一区视频| 亚洲一区二区av在线| 国内精品自线一区二区三区视频| 97久久超碰国产精品电影|