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

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

?? ibmcam.c

?? 是關于linux2.5.1的完全源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
{	ibmcam_send_x_01_00_05	(uvd, unknown_88);	ibmcam_send_x_00_05	(uvd, fkey);	ibmcam_send_x_00_05_02	(uvd, val);}static void ibmcam_model2_Packet2(uvd_t *uvd){	ibmcam_veio(uvd, 0, 0x00ff, 0x012d);	ibmcam_veio(uvd, 0, 0xfea3, 0x0124);}static void ibmcam_model2_Packet1(uvd_t *uvd, unsigned short v1, unsigned short v2){	ibmcam_veio(uvd, 0, 0x00aa, 0x012d);	ibmcam_veio(uvd, 0, 0x00ff, 0x012e);	ibmcam_veio(uvd, 0, v1,     0x012f);	ibmcam_veio(uvd, 0, 0x00ff, 0x0130);	ibmcam_veio(uvd, 0, 0xc719, 0x0124);	ibmcam_veio(uvd, 0, v2,     0x0127);	ibmcam_model2_Packet2(uvd);}/* * ibmcam_model3_Packet1() * * 00_0078_012d	 * 00_0097_012f * 00_d141_0124	 * 00_0096_0127 * 00_fea8_0124	*/static void ibmcam_model3_Packet1(uvd_t *uvd, unsigned short v1, unsigned short v2){	ibmcam_veio(uvd, 0, 0x0078, 0x012d);	ibmcam_veio(uvd, 0, v1,     0x012f);	ibmcam_veio(uvd, 0, 0xd141, 0x0124);	ibmcam_veio(uvd, 0, v2,     0x0127);	ibmcam_veio(uvd, 0, 0xfea8, 0x0124);}static void ibmcam_model4_BrightnessPacket(uvd_t *uvd, int i){	ibmcam_veio(uvd, 0, 0x00aa, 0x012d);	ibmcam_veio(uvd, 0, 0x0026, 0x012f);	ibmcam_veio(uvd, 0, 0xd141, 0x0124);	ibmcam_veio(uvd, 0, i,      0x0127);	ibmcam_veio(uvd, 0, 0x00aa, 0x0130);	ibmcam_veio(uvd, 0, 0x82a8, 0x0124);	ibmcam_veio(uvd, 0, 0x0038, 0x012d);	ibmcam_veio(uvd, 0, 0x0004, 0x012f);	ibmcam_veio(uvd, 0, 0xd145, 0x0124);	ibmcam_veio(uvd, 0, 0xfffa, 0x0124);}/* * ibmcam_adjust_contrast() * * The contrast value changes from 0 (high contrast) to 15 (low contrast). * This is in reverse to usual order of things (such as TV controls), so * we reverse it again here. * * TODO: we probably don't need to send the setup 5 times... * * History: * 1/2/00   Created. */static void ibmcam_adjust_contrast(uvd_t *uvd){	unsigned char a_contrast = uvd->vpic.contrast >> 12;	unsigned char new_contrast;	if (a_contrast >= 16)		a_contrast = 15;	new_contrast = 15 - a_contrast;	if (new_contrast == uvd->vpic_old.contrast)		return;	uvd->vpic_old.contrast = new_contrast;	switch (IBMCAM_T(uvd)->camera_model) {	case IBMCAM_MODEL_1:	{		const int ntries = 5;		int i;		for (i=0; i < ntries; i++) {			ibmcam_Packet_Format1(uvd, contrast_14, new_contrast);			ibmcam_send_FF_04_02(uvd);		}		break;	}	case IBMCAM_MODEL_2:	case IBMCAM_MODEL_4:		/* Models 2, 4 do not have this control; implemented in software. */		break;	case IBMCAM_MODEL_3:	{	/* Preset hardware values */		static const struct {			unsigned short cv1;			unsigned short cv2;			unsigned short cv3;		} cv[7] = {			{ 0x05, 0x05, 0x0f },	/* Minimum */			{ 0x04, 0x04, 0x16 },			{ 0x02, 0x03, 0x16 },			{ 0x02, 0x08, 0x16 },			{ 0x01, 0x0c, 0x16 },			{ 0x01, 0x0e, 0x16 },			{ 0x01, 0x10, 0x16 }	/* Maximum */		};		int i = a_contrast / 2;		RESTRICT_TO_RANGE(i, 0, 6);		ibmcam_veio(uvd, 0, 0x0000, 0x010c);	/* Stop */		ibmcam_model3_Packet1(uvd, 0x0067, cv[i].cv1);		ibmcam_model3_Packet1(uvd, 0x005b, cv[i].cv2);		ibmcam_model3_Packet1(uvd, 0x005c, cv[i].cv3);		ibmcam_veio(uvd, 0, 0x0001, 0x0114);		ibmcam_veio(uvd, 0, 0x00c0, 0x010c);	/* Go! */		usb_clear_halt(uvd->dev, usb_rcvisocpipe(uvd->dev, uvd->video_endp));		break;	}	default:		break;	}}/* * ibmcam_change_lighting_conditions() * * Camera model 1: * We have 3 levels of lighting conditions: 0=Bright, 1=Medium, 2=Low. * * Camera model 2: * We have 16 levels of lighting, 0 for bright light and up to 15 for * low light. But values above 5 or so are useless because camera is * not really capable to produce anything worth viewing at such light. * This setting may be altered only in certain camera state. * * Low lighting forces slower FPS. Lighting is set as a module parameter. * * History: * 1/5/00   Created. * 2/20/00  Added support for Model 2 cameras. */static void ibmcam_change_lighting_conditions(uvd_t *uvd){	static const char proc[] = "ibmcam_change_lighting_conditions";	if (debug > 0)		info("%s: Set lighting to %hu.", proc, lighting);	switch (IBMCAM_T(uvd)->camera_model) {	case IBMCAM_MODEL_1:	{		const int ntries = 5;		int i;		for (i=0; i < ntries; i++)			ibmcam_Packet_Format1(uvd, light_27, (unsigned short) lighting);		break;	}	case IBMCAM_MODEL_2:#if 0		/*		 * This command apparently requires camera to be stopped. My		 * experiments showed that it -is- possible to alter the lighting		 * conditions setting "on the fly", but why bother? This setting does		 * not work reliably in all cases, so I decided simply to leave the		 * setting where Xirlink put it - in the camera setup phase. This code		 * is commented out because it does not work at -any- moment, so its		 * presence makes no sense. You may use it for experiments.		 */		ibmcam_veio(uvd, 0, 0x0000, 0x010c);	/* Stop camera */		ibmcam_model2_Packet1(uvd, mod2_sensitivity, lighting);		ibmcam_veio(uvd, 0, 0x00c0, 0x010c);	/* Start camera */#endif		break;	case IBMCAM_MODEL_3:	case IBMCAM_MODEL_4:	default:		break;	}}/* * ibmcam_set_sharpness() * * Cameras model 1 have internal smoothing feature. It is controlled by value in * range [0..6], where 0 is most smooth and 6 is most sharp (raw image, I guess). * Recommended value is 4. Cameras model 2 do not have this feature at all. */static void ibmcam_set_sharpness(uvd_t *uvd){	static const char proc[] = "ibmcam_set_sharpness";	switch (IBMCAM_T(uvd)->camera_model) {	case IBMCAM_MODEL_1:	{		static const unsigned short sa[] = { 0x11, 0x13, 0x16, 0x18, 0x1a, 0x8, 0x0a };		unsigned short i, sv;		RESTRICT_TO_RANGE(sharpness, SHARPNESS_MIN, SHARPNESS_MAX);		if (debug > 0)			info("%s: Set sharpness to %hu.", proc, sharpness);		sv = sa[sharpness - SHARPNESS_MIN];		for (i=0; i < 2; i++) {			ibmcam_send_x_01_00_05	(uvd, unknown_88);			ibmcam_send_x_00_05		(uvd, sharp_13);			ibmcam_send_x_00_05_02	(uvd, sv);		}		break;	}	case IBMCAM_MODEL_2:	case IBMCAM_MODEL_4:		/* Models 2, 4 do not have this control */		break;	case IBMCAM_MODEL_3:	{	/*		 * "Use a table of magic numbers.		 *  This setting doesn't really change much.		 *  But that's how Windows does it."		 */		static const struct {			unsigned short sv1;			unsigned short sv2;			unsigned short sv3;			unsigned short sv4;		} sv[7] = {			{ 0x00, 0x00, 0x05, 0x14 },	/* Smoothest */			{ 0x01, 0x04, 0x05, 0x14 },			{ 0x02, 0x04, 0x05, 0x14 },			{ 0x03, 0x04, 0x05, 0x14 },			{ 0x03, 0x05, 0x05, 0x14 },			{ 0x03, 0x06, 0x05, 0x14 },			{ 0x03, 0x07, 0x05, 0x14 }	/* Sharpest */		};		RESTRICT_TO_RANGE(sharpness, SHARPNESS_MIN, SHARPNESS_MAX);		RESTRICT_TO_RANGE(sharpness, 0, 6);		ibmcam_veio(uvd, 0, 0x0000, 0x010c);	/* Stop */		ibmcam_model3_Packet1(uvd, 0x0060, sv[sharpness].sv1);		ibmcam_model3_Packet1(uvd, 0x0061, sv[sharpness].sv2);		ibmcam_model3_Packet1(uvd, 0x0062, sv[sharpness].sv3);		ibmcam_model3_Packet1(uvd, 0x0063, sv[sharpness].sv4);		ibmcam_veio(uvd, 0, 0x0001, 0x0114);		ibmcam_veio(uvd, 0, 0x00c0, 0x010c);	/* Go! */		usb_clear_halt(uvd->dev, usb_rcvisocpipe(uvd->dev, uvd->video_endp));		ibmcam_veio(uvd, 0, 0x0001, 0x0113);		break;	}	default:		break;	}}/* * ibmcam_set_brightness() * * This procedure changes brightness of the picture. */static void ibmcam_set_brightness(uvd_t *uvd){	static const char proc[] = "ibmcam_set_brightness";	static const unsigned short n = 1;	if (debug > 0)		info("%s: Set brightness to %hu.", proc, uvd->vpic.brightness);	switch (IBMCAM_T(uvd)->camera_model) {	case IBMCAM_MODEL_1:	{		unsigned short i, j, bv[3];		bv[0] = bv[1] = bv[2] = uvd->vpic.brightness >> 10;		if (bv[0] == (uvd->vpic_old.brightness >> 10))			return;		uvd->vpic_old.brightness = bv[0];		for (j=0; j < 3; j++)			for (i=0; i < n; i++)				ibmcam_Packet_Format1(uvd, bright_3x[j], bv[j]);		break;	}	case IBMCAM_MODEL_2:	{		unsigned short i, j;		i = uvd->vpic.brightness >> 12;	/* 0 .. 15 */		j = 0x60 + i * ((0xee - 0x60) / 16);	/* 0x60 .. 0xee or so */		if (uvd->vpic_old.brightness == j)			break;		uvd->vpic_old.brightness = j;		ibmcam_model2_Packet1(uvd, mod2_brightness, j);		break;	}	case IBMCAM_MODEL_3:	{		/* Model 3: Brightness range 'i' in [0x0C..0x3F] */		unsigned short i =			0x0C + (uvd->vpic.brightness / (0xFFFF / (0x3F - 0x0C + 1)));		RESTRICT_TO_RANGE(i, 0x0C, 0x3F);		if (uvd->vpic_old.brightness == i)			break;		uvd->vpic_old.brightness = i;		ibmcam_veio(uvd, 0, 0x0000, 0x010c);	/* Stop */		ibmcam_model3_Packet1(uvd, 0x0036, i);		ibmcam_veio(uvd, 0, 0x0001, 0x0114);		ibmcam_veio(uvd, 0, 0x00c0, 0x010c);	/* Go! */		usb_clear_halt(uvd->dev, usb_rcvisocpipe(uvd->dev, uvd->video_endp));		ibmcam_veio(uvd, 0, 0x0001, 0x0113);		break;	}	case IBMCAM_MODEL_4:	{		/* Model 4: Brightness range 'i' in [0x04..0xb4] */		unsigned short i = 0x04 + (uvd->vpic.brightness / (0xFFFF / (0xb4 - 0x04 + 1)));		RESTRICT_TO_RANGE(i, 0x04, 0xb4);		if (uvd->vpic_old.brightness == i)			break;		uvd->vpic_old.brightness = i;		ibmcam_model4_BrightnessPacket(uvd, i);		break;	}	default:		break;	}}static void ibmcam_set_hue(uvd_t *uvd){	switch (IBMCAM_T(uvd)->camera_model) {	case IBMCAM_MODEL_2:	{		unsigned short hue = uvd->vpic.hue >> 9; /* 0 .. 7F */		if (uvd->vpic_old.hue == hue)			return;		uvd->vpic_old.hue = hue;		ibmcam_model2_Packet1(uvd, mod2_hue, hue);		/* ibmcam_model2_Packet1(uvd, mod2_saturation, sat); */		break;	}	case IBMCAM_MODEL_3:	{#if 0 /* This seems not to work. No problem, will fix programmatically */		unsigned short hue = 0x05 + (uvd->vpic.hue / (0xFFFF / (0x37 - 0x05 + 1)));		RESTRICT_TO_RANGE(hue, 0x05, 0x37);		if (uvd->vpic_old.hue == hue)			return;		uvd->vpic_old.hue = hue;		ibmcam_veio(uvd, 0, 0x0000, 0x010c);	/* Stop */		ibmcam_model3_Packet1(uvd, 0x007e, hue);		ibmcam_veio(uvd, 0, 0x0001, 0x0114);		ibmcam_veio(uvd, 0, 0x00c0, 0x010c);	/* Go! */		usb_clear_halt(uvd->dev, usb_rcvisocpipe(uvd->dev, uvd->video_endp));		ibmcam_veio(uvd, 0, 0x0001, 0x0113);#endif		break;	}	case IBMCAM_MODEL_4:	{		unsigned short r_gain, g_gain, b_gain, hue;		/*		 * I am not sure r/g/b_gain variables exactly control gain		 * of those channels. Most likely they subtly change some		 * very internal image processing settings in the camera.		 * In any case, here is what they do, and feel free to tweak:		 *		 * r_gain: seriously affects red gain		 * g_gain: seriously affects green gain		 * b_gain: seriously affects blue gain		 * hue: changes average color from violet (0) to red (0xFF)		 *		 * These settings are preset for a decent white balance in		 * 320x240, 352x288 modes. Low-res modes exhibit higher contrast		 * and therefore may need different values here.		 */		hue = 20 + (uvd->vpic.hue >> 9);		switch (uvd->videosize) {		case VIDEOSIZE_128x96:			r_gain = 90;			g_gain = 166;			b_gain = 175;			break;		case VIDEOSIZE_160x120:			r_gain = 70;			g_gain = 166;			b_gain = 185;			break;		case VIDEOSIZE_176x144:			r_gain = 160;			g_gain = 175;			b_gain = 185;			break;		default:			r_gain = 120;			g_gain = 166;			b_gain = 175;			break;		}		RESTRICT_TO_RANGE(hue, 1, 0x7f);		ibmcam_veio(uvd, 0, 0x00aa, 0x012d);		ibmcam_veio(uvd, 0, 0x001e, 0x012f);		ibmcam_veio(uvd, 0, 0xd141, 0x0124);		ibmcam_veio(uvd, 0, g_gain, 0x0127);	/* Green gain */		ibmcam_veio(uvd, 0, r_gain, 0x012e);	/* Red gain */		ibmcam_veio(uvd, 0, b_gain, 0x0130);	/* Blue gain */		ibmcam_veio(uvd, 0, 0x8a28, 0x0124);		ibmcam_veio(uvd, 0, hue,    0x012d);	/* Hue */		ibmcam_veio(uvd, 0, 0xf545, 0x0124);		break;	}	default:		break;	}}/* * ibmcam_adjust_picture() * * This procedure gets called from V4L interface to update picture settings. * Here we change brightness and contrast. */static void ibmcam_adjust_picture(uvd_t *uvd){	ibmcam_adjust_contrast(uvd);	ibmcam_set_brightness(uvd);	ibmcam_set_hue(uvd);}static int ibmcam_model1_setup(uvd_t *uvd){	const int ntries = 5;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成在线不卡| 日韩久久久精品| 中文字幕高清一区| 激情文学综合丁香| 久久夜色精品国产噜噜av | 亚洲一区在线观看网站| 欧美自拍偷拍一区| 午夜视频一区二区| 精品国产成人在线影院 | 欧美久久一区二区| 视频在线观看91| 欧美成人福利视频| 岛国精品一区二区| 亚洲综合色婷婷| 日韩精品专区在线影院重磅| 国产乱人伦偷精品视频免下载| 国产精品午夜在线| 欧美私模裸体表演在线观看| 久久精品国产精品亚洲红杏 | 国产精品免费久久| 欧美三级一区二区| 久久综合综合久久综合| 国产精品国产精品国产专区不蜜| 在线免费观看日本欧美| 老司机午夜精品| 亚洲欧美经典视频| 日韩亚洲国产中文字幕欧美| av在线免费不卡| 免费观看一级欧美片| 中文字幕在线不卡一区| 欧美精品粉嫩高潮一区二区| 国产精品亚洲一区二区三区妖精| 亚洲黄色免费电影| 国产亚洲自拍一区| 欧美日韩国产高清一区二区三区 | 亚洲另类在线制服丝袜| 91麻豆精品国产综合久久久久久 | 麻豆成人综合网| 日本午夜精品视频在线观看| 国产精品久久久久四虎| 日韩一区二区影院| 色综合久久天天| 国产一区在线视频| 亚洲va韩国va欧美va| 国产日韩欧美精品电影三级在线 | 国产精品一区不卡| 日韩激情视频在线观看| 亚洲特级片在线| 久久久久久电影| 91精品视频网| 欧美性感一区二区三区| 国产99久久久精品| 九九九久久久精品| 亚洲午夜羞羞片| 亚洲三级电影全部在线观看高清| 久久久综合精品| 欧美一级电影网站| 欧美三级午夜理伦三级中视频| 成人avav影音| 国产福利一区在线观看| 精品亚洲国内自在自线福利| 日韩高清不卡一区二区| 亚洲成a人片综合在线| 成人欧美一区二区三区小说| 国产农村妇女精品| xvideos.蜜桃一区二区| 69精品人人人人| 欧美中文字幕一区| 91极品美女在线| 91视视频在线观看入口直接观看www | 91麻豆精品国产91久久久久久久久| 99久久久免费精品国产一区二区 | 美女网站在线免费欧美精品| 午夜精品久久久久久久99樱桃| 麻豆精品新av中文字幕| 日韩和欧美的一区| 天堂在线亚洲视频| 石原莉奈在线亚洲二区| 日韩国产成人精品| 免费国产亚洲视频| 激情久久五月天| 久久国产剧场电影| 国产精品资源在线观看| 成人午夜视频免费看| 成a人片亚洲日本久久| 91在线视频观看| 欧美网站一区二区| 91精品在线麻豆| 欧美精品一区二区三区久久久| 26uuu色噜噜精品一区二区| 精品国产一区二区精华| 久久久激情视频| 中文字幕一区二区三区不卡在线| 亚洲女与黑人做爰| 五月婷婷综合网| 麻豆精品久久精品色综合| 国产一区二区日韩精品| 不卡的看片网站| 色婷婷av一区二区三区软件 | 国产精品免费视频一区| 亚洲欧美另类在线| 日韩黄色片在线观看| 精品综合久久久久久8888| 国产乱国产乱300精品| 91麻豆高清视频| 欧美一级生活片| 欧美国产一区二区在线观看| 久久国产视频网| 成人自拍视频在线| 91在线精品秘密一区二区| 欧美视频精品在线观看| 精品国产伦一区二区三区免费| 中文子幕无线码一区tr| 亚洲国产成人av好男人在线观看| 久久国产三级精品| 一本到不卡精品视频在线观看| 51精品久久久久久久蜜臀| 国产性色一区二区| 亚洲电影视频在线| 国产成人99久久亚洲综合精品| 在线观看国产91| 精品福利一二区| 亚洲综合视频在线| 国产成人av一区二区三区在线 | gogo大胆日本视频一区| 91麻豆精品国产无毒不卡在线观看 | 午夜视频在线观看一区二区三区| 国产在线精品不卡| 欧美日韩国产大片| 中文字幕国产一区| 美女网站色91| 欧洲精品视频在线观看| 国产日韩欧美在线一区| 日韩黄色小视频| 91成人国产精品| 国产人久久人人人人爽| 美腿丝袜亚洲综合| 欧美日韩一区二区在线观看视频| 国产日韩欧美综合在线| 久久精品久久久精品美女| 日本道在线观看一区二区| 国产欧美日韩另类一区| 九九精品一区二区| 91精品国产免费| 精品午夜一区二区三区在线观看| 91福利精品视频| 国产色婷婷亚洲99精品小说| 蜜臀av一区二区在线观看 | 亚洲电影第三页| 色综合久久久久| 中文字幕成人网| 国产精品一区二区视频| 精品免费日韩av| 美洲天堂一区二卡三卡四卡视频| 欧美午夜理伦三级在线观看| 18欧美乱大交hd1984| 成人一区二区三区视频| 国产日韩影视精品| 国产成人在线看| 国产欧美精品一区| 国产成人亚洲精品狼色在线 | 欧美一级二级三级乱码| 午夜精品国产更新| 欧美色网一区二区| 一片黄亚洲嫩模| 在线视频国产一区| 洋洋成人永久网站入口| 欧美亚洲一区三区| 一区二区三区欧美日| 在线视频中文字幕一区二区| 亚洲丝袜自拍清纯另类| 色激情天天射综合网| 亚洲国产日日夜夜| 欧美另类变人与禽xxxxx| 亚洲成年人影院| 日韩一区二区免费在线电影| 理论电影国产精品| 国产亚洲午夜高清国产拍精品| 国产精品99久| 亚洲国产精品高清| 日本乱码高清不卡字幕| 亚洲高清视频在线| 91精品国产品国语在线不卡| 精品一区二区综合| 国产精品久久久久桃色tv| 一道本成人在线| 日韩电影免费一区| 久久一夜天堂av一区二区三区| 国产传媒日韩欧美成人| 综合久久久久综合| 精品视频资源站| 久久99国产精品成人| 国产精品久久久久影院亚瑟| 欧美视频一区二区三区在线观看| 日日夜夜精品视频天天综合网| 欧美成人精品3d动漫h| 丁香桃色午夜亚洲一区二区三区| 亚洲啪啪综合av一区二区三区| 欧美日韩中文国产| 国产一区二区三区视频在线播放|