亚洲欧美第一页_禁久久精品乱码_粉嫩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 "mjpeg2bmp.h"				// Routines for converting MJPEG frames

//#include "camtest2.h"				// THis is only needed for debug zones

// 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;
} 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->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;
}

//----------------------------------------------------------------------
// SetDrawState - Sets or clears drawing state flag
//
int SetDrawState (DWORD dwContext, BOOL fDraw)
{
	PCAMSTATE pcs = (PCAMSTATE)dwContext;
	pcs->fDraw = fDraw;
	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;
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩三级| 99re视频精品| 精品欧美一区二区三区精品久久| 亚洲国产视频直播| 欧美在线观看18| 久久一区二区三区四区| 亚洲三级免费电影| 91日韩一区二区三区| 一区二区免费视频| 欧美精品久久一区二区三区| 免费精品99久久国产综合精品| 制服丝袜在线91| 国内精品嫩模私拍在线| 国产亲近乱来精品视频| 色综合久久九月婷婷色综合| 亚洲一区欧美一区| 日韩一二三四区| 国产乱码字幕精品高清av | 日韩一区二区三区在线| 国产在线精品免费av| 中文子幕无线码一区tr| 在线看一区二区| 久久精品国产99国产精品| 国产欧美日韩综合| 欧美伊人久久久久久久久影院 | 蜜臀av一区二区在线免费观看| 日韩精品影音先锋| 99久久99精品久久久久久| 午夜久久电影网| 久久久久久久久久久黄色| av电影一区二区| 奇米四色…亚洲| 中文一区二区在线观看| 欧美日韩国产不卡| 国产99久久久国产精品| 亚洲国产精品久久久男人的天堂 | 色综合天天做天天爱| 亚洲一区在线观看视频| 久久久.com| 欧美精品xxxxbbbb| 国产suv精品一区二区三区| 亚洲中国最大av网站| 国产清纯美女被跳蛋高潮一区二区久久w| 91老师片黄在线观看| 国内成人精品2018免费看| 亚洲女同一区二区| 久久综合九色综合97婷婷女人 | 欧美激情综合在线| 欧美一区二区在线视频| 一本一道久久a久久精品| 激情都市一区二区| 日韩和的一区二区| 亚洲男人的天堂网| 中文一区二区在线观看| 日韩欧美国产综合在线一区二区三区| 99久久国产综合精品色伊| 国产自产v一区二区三区c| 亚洲午夜激情网站| 亚洲精品视频自拍| 国产精品网曝门| 久久久久久久久久久久电影| 欧美一区二区三区免费观看视频| 91黄色在线观看| 成人午夜精品在线| 国产大陆精品国产| 九九国产精品视频| 久久精品国产亚洲a| 日韩成人免费看| 亚洲高清视频在线| 一区二区成人在线| 伊人色综合久久天天| 国产精品每日更新| 中文av一区特黄| 国产欧美一区视频| 欧美国产激情二区三区| 欧美精品一区二区不卡 | 久久精品人人做| 欧美成人r级一区二区三区| 欧美一区二区视频在线观看| 欧美日韩久久一区二区| 欧美日韩国产影片| 欧美日韩国产一区二区三区地区| 欧美调教femdomvk| 欧美日韩精品三区| 欧美男人的天堂一二区| 欧美喷潮久久久xxxxx| 欧美精品免费视频| 偷窥少妇高潮呻吟av久久免费| 亚洲一区中文日韩| 午夜伦欧美伦电影理论片| 午夜精品爽啪视频| 免费成人av资源网| 午夜电影网一区| 亚洲一区二区三区精品在线| 亚洲女厕所小便bbb| 亚洲久本草在线中文字幕| 亚洲精品老司机| 亚洲va在线va天堂| 蜜桃传媒麻豆第一区在线观看| 麻豆精品视频在线观看免费| 国产在线观看一区二区| 国产精品一级片在线观看| 99国产精品视频免费观看| 色婷婷久久综合| 欧美精品乱码久久久久久按摩| 精品国产乱码久久久久久夜甘婷婷| 337p日本欧洲亚洲大胆色噜噜| 国产精品久久夜| 亚洲一区二区中文在线| 裸体在线国模精品偷拍| 成人精品视频一区二区三区尤物| 91尤物视频在线观看| 亚洲精品久久久蜜桃| 日本不卡高清视频| 国产69精品久久久久777| 色综合欧美在线| 日韩一级在线观看| 国产精品福利av| 亚洲6080在线| 成人一区二区三区视频在线观看 | 欧美激情在线观看视频免费| 亚洲综合图片区| 国模一区二区三区白浆| 在线观看免费成人| 久久久久亚洲蜜桃| 亚洲777理论| 成人一级片在线观看| 777xxx欧美| 日韩美女久久久| 久久精品国内一区二区三区| 日本道免费精品一区二区三区| 欧美xxxxxxxx| 香蕉久久夜色精品国产使用方法| 国产精品亚洲成人| 制服丝袜亚洲播放| 亚洲人亚洲人成电影网站色| 免费不卡在线观看| 在线免费观看日韩欧美| 久久精品夜色噜噜亚洲aⅴ| 午夜一区二区三区视频| 成人av网站在线观看免费| 欧美一区二区免费视频| 日韩美女久久久| 国产成人综合在线| 欧美大白屁股肥臀xxxxxx| 亚洲一区二区三区四区在线| 成人免费看的视频| 精品福利在线导航| 日韩中文字幕区一区有砖一区| 国产精品女同一区二区三区| 美国av一区二区| 欧美日本国产一区| 亚洲一区二区av在线| 91天堂素人约啪| 中文乱码免费一区二区| 国产精品综合一区二区三区| 欧美一区二区三区免费观看视频| 亚洲电影你懂得| 欧美丝袜第三区| 亚洲激情在线播放| caoporen国产精品视频| 国产亚洲一区二区三区在线观看| 蜜桃久久久久久久| 日韩亚洲欧美中文三级| 日韩精品午夜视频| 69堂成人精品免费视频| 日韩精品色哟哟| 欧美理论片在线| 日韩综合在线视频| 欧美一区二区三区免费| 免费人成在线不卡| 欧美tickle裸体挠脚心vk| 九色综合国产一区二区三区| 欧美成人精品福利| 国产精品自在在线| 国产视频一区在线观看 | 国产精品毛片高清在线完整版| 国产精品自产自拍| 欧美国产日韩a欧美在线观看| 成人综合婷婷国产精品久久免费| 国产日韩欧美精品电影三级在线 | 国产亚洲女人久久久久毛片| 久久精品国产精品亚洲红杏 | 2023国产精品视频| 国产精品系列在线播放| 亚洲国产精品av| av福利精品导航| 亚洲一区在线观看网站| 欧美一区二区三区性视频| 麻豆国产一区二区| 精品少妇一区二区三区免费观看 | 午夜激情久久久| 日韩视频免费直播| 国产91精品免费| 亚洲美女电影在线| 欧美精品久久99久久在免费线 | 午夜精品久久久久久久久久 | 色哟哟精品一区| 日本欧美一区二区在线观看| 26uuu国产一区二区三区|