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

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

?? ibmcam.c

?? linux內核源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
}static void ibmcam_model2_Packet1(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *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(struct uvd *uvd){	ibmcam_adjust_contrast(uvd);	ibmcam_set_brightness(uvd);	ibmcam_set_hue(uvd);}static int ibmcam_model1_setup(struct uvd *uvd){	const int ntries = 5;	int i;	ibmcam_veio(uvd, 1, 0x00, 0x0128);	ibmcam_veio(uvd, 1, 0x00, 0x0100);	ibmcam_veio(uvd, 0, 0x01, 0x0100);	/* LED On  */	ibmcam_veio(uvd, 1, 0x00, 0x0100);	ibmcam_veio(uvd, 0, 0x81, 0x0100);	/* LED Off */	ibmcam_veio(uvd, 1, 0x00, 0x0100);	ibmcam_veio(uvd, 0, 0x01, 0x0100);	/* LED On  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区免费在线观看| 欧美mv日韩mv亚洲| 中文字幕一区二区三区在线观看| 国内精品久久久久影院薰衣草| 日韩免费福利电影在线观看| 麻豆视频一区二区| 久久亚区不卡日本| 成人毛片视频在线观看| 中文字幕亚洲电影| 欧美在线看片a免费观看| 天使萌一区二区三区免费观看| 91精品婷婷国产综合久久 | 成人精品视频网站| 亚洲特黄一级片| 欧美日韩国产乱码电影| 精品伊人久久久久7777人| 国产精品污网站| 91国内精品野花午夜精品| 日日欢夜夜爽一区| 久久精品人人做人人爽人人| 91欧美激情一区二区三区成人| 亚洲国产中文字幕| 久久久精品免费观看| 色婷婷久久综合| 蜜桃av噜噜一区二区三区小说| 国产精品麻豆视频| 欧美高清你懂得| 成人午夜在线播放| 亚洲v中文字幕| 国产亚洲综合性久久久影院| 在线观看亚洲精品视频| 久久电影网站中文字幕| 亚洲美女视频在线观看| 欧美大片在线观看一区二区| 色综合久久中文字幕| 美女尤物国产一区| 一区二区三区四区在线免费观看| 欧美电影免费观看高清完整版在| 日本黄色一区二区| 国产一区二区影院| 亚洲成人黄色小说| 国产精品动漫网站| 精品久久久久一区| 欧美日本高清视频在线观看| 成人免费黄色大片| 久久国产精品色| 香蕉av福利精品导航| 国产三级欧美三级日产三级99| 欧亚洲嫩模精品一区三区| 国产.欧美.日韩| 免费在线观看精品| 亚洲www啪成人一区二区麻豆| 国产精品成人免费精品自在线观看| 欧美大片一区二区三区| 777久久久精品| 91国偷自产一区二区开放时间| yourporn久久国产精品| 国产一区视频网站| 免费看日韩a级影片| 亚洲成人你懂的| 亚洲三级视频在线观看| 国产欧美一区二区三区网站| 日韩欧美一级二级三级久久久| 欧美日本乱大交xxxxx| 欧美唯美清纯偷拍| 色综合欧美在线视频区| 91麻豆国产自产在线观看| 成人av午夜影院| 国产成人无遮挡在线视频| 久久国产精品99精品国产| 热久久久久久久| 三级精品在线观看| 天天综合天天做天天综合| 亚洲444eee在线观看| 午夜久久久久久电影| 性做久久久久久免费观看欧美| 亚洲一区二区成人在线观看| 一区二区三区在线影院| 亚洲情趣在线观看| 亚洲精品中文字幕乱码三区| 亚洲欧美一区二区三区极速播放| 中文字幕一区二区日韩精品绯色| 国产精品网站导航| 最新国产成人在线观看| 亚洲视频中文字幕| 亚洲精品乱码久久久久久黑人| 亚洲日穴在线视频| 一区二区三区**美女毛片| 亚洲二区视频在线| 蜜臀av在线播放一区二区三区| 日韩高清不卡一区| 国产资源在线一区| 国产精品一级在线| 不卡电影免费在线播放一区| 色婷婷综合久久久中文一区二区| 欧美影片第一页| 日韩免费观看高清完整版在线观看| 日韩精品一区二区三区视频在线观看| 精品成人私密视频| 国产精品美女一区二区在线观看| 亚洲视频免费看| 三级不卡在线观看| 国产精华液一区二区三区| 99久久亚洲一区二区三区青草| 在线欧美小视频| 日韩欧美在线网站| 国产精品毛片a∨一区二区三区| 一区二区在线观看免费| 麻豆久久久久久| 91在线高清观看| 欧美日韩精品欧美日韩精品一 | 99re成人精品视频| 欧美乱熟臀69xxxxxx| 日韩三级在线观看| 国产精品午夜在线观看| 亚洲成人黄色影院| 成熟亚洲日本毛茸茸凸凹| 欧美性xxxxxxxx| 久久一区二区三区国产精品| 亚洲激情中文1区| 美女一区二区在线观看| 99热99精品| 欧美一级日韩一级| 综合激情成人伊人| 久久精品国产澳门| 日本高清不卡在线观看| 久久综合一区二区| 亚洲成人1区2区| av综合在线播放| 久久综合九色综合久久久精品综合 | 国产高清精品在线| 欧美区视频在线观看| 国产精品无遮挡| 久久国产尿小便嘘嘘尿| 在线观看国产日韩| 最新成人av在线| 国产一区二区不卡| 欧美一区二区免费| 亚洲国产精品尤物yw在线观看| 国产成人一级电影| 欧美一区二区视频免费观看| 一区二区三区在线影院| 东方欧美亚洲色图在线| 欧美tickle裸体挠脚心vk| 亚洲444eee在线观看| 91蜜桃视频在线| 国产精品美女久久久久久久网站| 久久精品久久久精品美女| 欧美日韩国产a| 夜夜精品浪潮av一区二区三区| 成人福利视频在线| 国产精选一区二区三区| 欧美国产精品中文字幕| 亚洲综合丁香婷婷六月香| 成人理论电影网| 久久精品亚洲乱码伦伦中文| 美女在线视频一区| 日韩视频一区在线观看| 无吗不卡中文字幕| 欧美男人的天堂一二区| 亚洲专区一二三| 日本乱码高清不卡字幕| 玉米视频成人免费看| av在线不卡电影| 国产精品成人一区二区艾草| www.欧美色图| 综合欧美亚洲日本| 白白色 亚洲乱淫| 最新不卡av在线| 91久久久免费一区二区| 一区二区三区四区国产精品| 91成人网在线| 亚洲成人综合网站| 欧美久久婷婷综合色| 奇米影视一区二区三区| 日韩免费高清视频| 国产成人综合在线播放| 国产精品午夜久久| 色综合久久久网| 婷婷中文字幕一区三区| 欧美一区二区视频在线观看2020| 精品影视av免费| 国产精品网站导航| 在线观看国产一区二区| 日韩国产在线一| 久久综合久久综合亚洲| 不卡av在线网| 亚洲v日本v欧美v久久精品| 日韩一卡二卡三卡国产欧美| 紧缚奴在线一区二区三区| 国产婷婷精品av在线| 99re亚洲国产精品| 奇米精品一区二区三区在线观看一 | 日韩精品一区二区三区四区视频| 国产一区二区三区四区五区入口 | 国产成人av电影在线播放| 亚洲日本中文字幕区| 日韩欧美在线1卡| 成人av网址在线| 午夜精品久久一牛影视|