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

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

?? ibmcam.c

?? 底層驅動開發
?? 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  */	ibmcam_veio(uvd, 0, 0x01, 0x0108);	ibmcam_veio(uvd, 0, 0x03, 0x0112);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色偷偷大香| 久久精品视频在线免费观看 | 日韩视频一区二区在线观看| 亚洲精品日韩一| 日本高清不卡aⅴ免费网站| 一二三四区精品视频| 欧美日韩亚洲综合一区| 免费三级欧美电影| 久久久久久久久免费| 99re亚洲国产精品| 亚洲午夜久久久久中文字幕久| 欧美浪妇xxxx高跟鞋交| 久久精品72免费观看| 日本一区二区三区视频视频| 色拍拍在线精品视频8848| 午夜欧美视频在线观看| 国产日韩欧美在线一区| 91久久久免费一区二区| 麻豆91在线播放免费| 国产精品人成在线观看免费| 日本高清不卡在线观看| 国产在线不卡视频| 亚洲免费观看视频| 日韩限制级电影在线观看| 国产成人aaa| 亚洲制服丝袜av| 久久久美女毛片| 欧美日韩日日骚| 福利电影一区二区| 天天综合天天做天天综合| 久久综合久久久久88| 欧洲精品视频在线观看| 精品午夜久久福利影院| 亚洲免费观看高清完整版在线观看| 欧美一区二区三区四区高清| 成人午夜激情影院| 男女性色大片免费观看一区二区 | 水野朝阳av一区二区三区| 久久久久久久精| 在线综合+亚洲+欧美中文字幕| 成人app在线观看| 老司机精品视频在线| 亚洲黄色性网站| 日本一区二区在线不卡| 欧美精品一二三| 色综合久久九月婷婷色综合| 久久成人久久爱| 午夜视频在线观看一区二区三区| 国产精品美女久久久久aⅴ| 日韩欧美国产一区二区三区| 91久久国产最好的精华液| 国产成人夜色高潮福利影视| 日本伊人精品一区二区三区观看方式| 亚洲欧洲日韩女同| 国产日韩三级在线| 亚洲精品在线免费播放| 制服视频三区第一页精品| 欧美少妇bbb| 99国内精品久久| 成人精品亚洲人成在线| 国产麻豆91精品| 久久成人18免费观看| 日韩av电影一区| 午夜天堂影视香蕉久久| 亚洲综合久久久| 亚洲欧美日韩国产成人精品影院| 国产欧美一区二区精品性色超碰| 精品精品国产高清a毛片牛牛| 69堂成人精品免费视频| 欧美另类videos死尸| 欧美日韩免费高清一区色橹橹| 99久久免费视频.com| 99热99精品| 99精品黄色片免费大全| 色哟哟欧美精品| 欧美性三三影院| 欧美日韩久久久一区| 欧美日韩国产123区| 欧美人与z0zoxxxx视频| 欧美高清精品3d| 精品国产乱码久久久久久图片 | 福利一区二区在线| 成人视屏免费看| 成人国产在线观看| 91麻豆自制传媒国产之光| 色综合天天性综合| 欧美日韩mp4| 欧美视频在线观看一区| 欧美日韩精品一区二区三区蜜桃 | 亚洲人精品午夜| 亚洲成人www| 日韩在线观看一区二区| 日韩国产欧美一区二区三区| 久久99热这里只有精品| 成人在线综合网| 在线影视一区二区三区| 欧洲精品一区二区| 日韩欧美国产电影| 国产午夜亚洲精品羞羞网站| 亚洲你懂的在线视频| 日韩成人一级片| 国产河南妇女毛片精品久久久 | 国产成人精品免费视频网站| 成人性生交大片免费看中文网站| 99免费精品视频| 在线综合+亚洲+欧美中文字幕| 精品国一区二区三区| 国产精品福利影院| 日一区二区三区| 国产乱码精品一区二区三区av| 99精品视频一区二区三区| 欧美三级日韩三级| 久久免费看少妇高潮| 亚洲乱码国产乱码精品精的特点| 亚洲va国产天堂va久久en| 国产成人精品亚洲777人妖| 在线亚洲人成电影网站色www| 日韩一级成人av| 亚洲蜜桃精久久久久久久| 蜜臀va亚洲va欧美va天堂 | 国产免费久久精品| 一区二区三区免费网站| 国产在线播精品第三| 欧美三级蜜桃2在线观看| 久久久久九九视频| 亚洲sss视频在线视频| av在线不卡电影| 日韩三级中文字幕| 亚洲综合丁香婷婷六月香| 国产又黄又大久久| 欧美日韩免费一区二区三区| 国产精品伦一区| 狠狠色狠狠色综合系列| 欧洲精品视频在线观看| 国产精品天美传媒| 久久99精品国产麻豆婷婷| 欧美在线你懂得| 中文字幕一区二区不卡 | 不卡一区二区三区四区| 欧美成人精品3d动漫h| 一区二区视频在线看| 国产精品白丝jk黑袜喷水| 欧美一级片在线看| 亚洲图片有声小说| 91捆绑美女网站| 国产精品护士白丝一区av| 国产精品亚洲午夜一区二区三区| 日韩欧美一二区| 免费不卡在线视频| 欧美精品v日韩精品v韩国精品v| 亚洲精品国久久99热| 成人精品视频一区二区三区| 久久天天做天天爱综合色| 青青草原综合久久大伊人精品优势| 91九色最新地址| 亚洲伦理在线免费看| 成人久久久精品乱码一区二区三区| 久久精品一区四区| 激情偷乱视频一区二区三区| 欧美电影精品一区二区| 久久精品国产秦先生| 欧美精品色一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 91丝袜国产在线播放| 日本一区二区不卡视频| 成人免费观看av| 成人欧美一区二区三区| 99九九99九九九视频精品| 国产精品久久久久精k8| 97精品电影院| 亚洲线精品一区二区三区八戒| 欧美色综合网站| 强制捆绑调教一区二区| 日韩欧美国产精品| 国产一区二区伦理片| 国产欧美视频一区二区| 成人性生交大片免费看视频在线| 国产亚洲人成网站| 播五月开心婷婷综合| 亚洲免费色视频| 在线成人午夜影院| 国产乱色国产精品免费视频| 国产精品毛片久久久久久| 在线一区二区视频| 奇米在线7777在线精品| 久久久久国产精品麻豆| 91无套直看片红桃| 亚洲h在线观看| 精品国产髙清在线看国产毛片| 国产乱码精品一区二区三区忘忧草| 国产精品毛片无遮挡高清| 91成人在线免费观看| 日本视频免费一区| 国产日本亚洲高清| 欧美亚洲禁片免费| 久久超碰97人人做人人爱| 亚洲欧洲日产国产综合网| 欧美夫妻性生活| 粗大黑人巨茎大战欧美成人| 亚洲电影激情视频网站|