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

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

?? ibmcam.c

?? trident tm5600的linux驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
		data_w = 160;		data_h = 120;		break;		/*		 * Compressed modes (ViCE - that I don't know how to decode).		 */	case 0x0328:	/* 640x480, best quality compression */	case 0x0368:	/* 640x480, best frame rate compression */	case 0x0228:	/* 320x240, best quality compression */	case 0x0268:	/* 320x240, best frame rate compression */	case 0x02CA:	/* 160x120, best quality compression */	case 0x02EA:	/* 160x120, best frame rate compression */		/* Do nothing with this - not supported */		err("Unsupported mode $%04lx", frame->header);		return scan_NextFrame;	default:		/* Catch unknown headers, may help in learning new headers */		err("Strange frame->header=$%08lx", frame->header);		return scan_NextFrame;	}	/*	 * Make sure that our writing into output buffer	 * will not exceed the buffer. Note that we may write	 * not into current output scanline but in several after	 * it as well (if we enlarge image vertically.)	 */	if ((frame->curline + 1) >= data_h) {		if (uvd->debug >= 3)			dev_info(&uvd->dev->dev,				 "Reached line %d. (frame is done)\n",				 frame->curline);		return scan_NextFrame;	}	/* Make sure that lineBuffer can store two lines of data */	len = 3 * data_w; /* <y-data> <uyvy-data> */	assert(len <= sizeof(lineBuffer));	/* Make sure there's enough data for two lines */	if (RingQueue_GetLength(&uvd->dp) < len)		return scan_Out;	/* Suck two lines of data out of the ring queue */	RingQueue_Dequeue(&uvd->dp, lineBuffer, len);	data = lineBuffer;	color = data + data_w;		/* Point to where color planes begin */	/* Bottom-to-top scanning */	rw = (int)VIDEOSIZE_Y(frame->request) - (int)(frame->curline) - 1;	RESTRICT_TO_RANGE(rw, 0, VIDEOSIZE_Y(frame->request)-1);	/* Iterate over two lines. */	for (line = 0; line < 2; line++) {		for (i = 0; i < VIDEOSIZE_X(frame->request); i++) {			int y;			int rv, gv, bv;	/* RGB components */			if (i >= data_w) {				RGB24_PUTPIXEL(frame, i, rw, 0, 0, 0);				continue;			}			/* first line is YYY...Y; second is UYVY...UYVY */			y = data[(line == 0) ? i : (i*2 + 1)];			/* Apply static color correction */			u = color[(i/2)*4] + hue_corr;			v = color[(i/2)*4 + 2] + hue2_corr;			/* Apply color correction */			if (color_corr != 0) {				/* Magnify up to 2 times, reduce down to zero saturation */				u = 128 + ((ccm + color_corr) * (u - 128)) / ccm;				v = 128 + ((ccm + color_corr) * (v - 128)) / ccm;			}			YUV_TO_RGB_BY_THE_BOOK(y, u, v, rv, gv, bv);			RGB24_PUTPIXEL(frame, i, rw, rv, gv, bv);  /* No deinterlacing */		}		/* Check for the end of requested data */		if (rw == 0)			break;		/* Prepare for the second line */		rw--;		data = lineBuffer + data_w;	}	frame->deinterlace = Deinterlace_None;	/*	 * Account for number of bytes that we wrote into output V4L frame.	 * We do it here, after we are done with the scanline, because we	 * may fill more than one output scanline if we do vertical	 * enlargement.	 */	frame->curline += 2;	*pcopylen += 2 * v4l_linesize;	if (frame->curline >= VIDEOSIZE_Y(frame->request)) {		if (uvd->debug >= 3) {			dev_info(&uvd->dev->dev,				 "All requested lines (%ld.) done.\n",				 VIDEOSIZE_Y(frame->request));		}		return scan_NextFrame;	} else		return scan_Continue;}/* * ibmcam_model4_128x96_parse_lines() * * This decoder is for one strange data format that is produced by Model 4 * camera only in 128x96 mode. This is RGB format and here is its description. * First of all, this is non-interlaced stream, meaning that all scan lines * are present in the datastream. There are 96 consecutive blocks of data * that describe all 96 lines of the image. Each block is 5*128 bytes long * and carries R, G, B components. The format of the block is shown in the * code below. First 128*2 bytes are interleaved R and G components. Then * we have a gap (junk data) 64 bytes long. Then follow B and something * else, also interleaved (this makes another 128*2 bytes). After that * probably another 64 bytes of junk follow. * * History: * 10-Feb-2001 Created. */static enum ParseState ibmcam_model4_128x96_parse_lines(	struct uvd *uvd,	struct usbvideo_frame *frame,	long *pcopylen){	const unsigned char *data_rv, *data_gv, *data_bv;	unsigned int len;	int i, v4l_linesize; /* V4L line offset */	const int data_w=128, data_h=96;	static unsigned char lineBuffer[128*5];	v4l_linesize = VIDEOSIZE_X(frame->request) * V4L_BYTES_PER_PIXEL;	/*	 * Make sure that our writing into output buffer	 * will not exceed the buffer. Note that we may write	 * not into current output scanline but in several after	 * it as well (if we enlarge image vertically.)	 */	if ((frame->curline + 1) >= data_h) {		if (uvd->debug >= 3)			dev_info(&uvd->dev->dev,				 "Reached line %d. (frame is done)\n",				 frame->curline);		return scan_NextFrame;	}	/*	 * RGRGRG .... RGRG_____________B?B?B? ... B?B?____________	 * <---- 128*2 ---><---- 64 ---><--- 128*2 ---><--- 64 --->	 */	/* Make sure there's enough data for the entire line */	len = 5 * data_w;	assert(len <= sizeof(lineBuffer));	/* Make sure there's enough data for the entire line */	if (RingQueue_GetLength(&uvd->dp) < len)		return scan_Out;	/* Suck one line out of the ring queue */	RingQueue_Dequeue(&uvd->dp, lineBuffer, len);	data_rv = lineBuffer;	data_gv = lineBuffer + 1;	data_bv = lineBuffer + data_w*2 + data_w/2;	for (i = 0; i < VIDEOSIZE_X(frame->request); i++) {		int rv, gv, bv;	/* RGB components */		if (i < data_w) {			const int j = i * 2;			gv = data_rv[j];			rv = data_gv[j];			bv = data_bv[j];			if (flags & FLAGS_MONOCHROME) {				unsigned long y;				y = rv + gv + bv;				y /= 3;				if (y > 0xFF)					y = 0xFF;				rv = gv = bv = (unsigned char) y;			}		} else {			rv = gv = bv = 0;		}		RGB24_PUTPIXEL(frame, i, frame->curline, rv, gv, bv);	}	frame->deinterlace = Deinterlace_None;	frame->curline++;	*pcopylen += v4l_linesize;	if (frame->curline >= VIDEOSIZE_Y(frame->request)) {		if (uvd->debug >= 3) {			dev_info(&uvd->dev->dev,				 "All requested lines (%ld.) done.\n",				 VIDEOSIZE_Y(frame->request));		}		return scan_NextFrame;	} else		return scan_Continue;}/* * ibmcam_ProcessIsocData() * * Generic routine to parse the ring queue data. It employs either * ibmcam_find_header() or ibmcam_parse_lines() to do most * of work. * * History: * 1/21/00  Created. */static void ibmcam_ProcessIsocData(struct uvd *uvd,				   struct usbvideo_frame *frame){	enum ParseState newstate;	long copylen = 0;	int mod = IBMCAM_T(uvd)->camera_model;	while (1) {		newstate = scan_Out;		if (RingQueue_GetLength(&uvd->dp) > 0) {			if (frame->scanstate == ScanState_Scanning) {				newstate = ibmcam_find_header(uvd);			} else if (frame->scanstate == ScanState_Lines) {				if ((mod == IBMCAM_MODEL_2) &&				    ((uvd->videosize == VIDEOSIZE_352x288) ||				     (uvd->videosize == VIDEOSIZE_320x240) ||				     (uvd->videosize == VIDEOSIZE_352x240)))				{					newstate = ibmcam_model2_320x240_parse_lines(						uvd, frame, &copylen);				} else if (mod == IBMCAM_MODEL_4) {					/*					 * Model 4 cameras (IBM NetCamera) use Model 2 decoder (RGB)					 * for 320x240 and above; 160x120 and 176x144 uses Model 1					 * decoder (YUV), and 128x96 mode uses ???					 */					if ((uvd->videosize == VIDEOSIZE_352x288) ||					    (uvd->videosize == VIDEOSIZE_320x240) ||					    (uvd->videosize == VIDEOSIZE_352x240))					{						newstate = ibmcam_model2_320x240_parse_lines(uvd, frame, &copylen);					} else if (uvd->videosize == VIDEOSIZE_128x96) {						newstate = ibmcam_model4_128x96_parse_lines(uvd, frame, &copylen);					} else {						newstate = ibmcam_parse_lines(uvd, frame, &copylen);					}				} else if (mod == IBMCAM_MODEL_3) {					newstate = ibmcam_model3_parse_lines(uvd, frame, &copylen);				} else {					newstate = ibmcam_parse_lines(uvd, frame, &copylen);				}			}		}		if (newstate == scan_Continue)			continue;		else if ((newstate == scan_NextFrame) || (newstate == scan_Out))			break;		else			return; /* scan_EndParse */	}	if (newstate == scan_NextFrame) {		frame->frameState = FrameState_Done;		uvd->curframe = -1;		uvd->stats.frame_num++;		if ((mod == IBMCAM_MODEL_2) || (mod == IBMCAM_MODEL_4)) {			/* Need software contrast adjustment for those cameras */			frame->flags |= USBVIDEO_FRAME_FLAG_SOFTWARE_CONTRAST;		}	}	/* Update the frame's uncompressed length. */	frame->seqRead_Length += copylen;#if 0 /* keep */	{		static unsigned char j=0;		memset(frame->data, j++, uvd->max_frame_size);		frame->frameState = FrameState_Ready;	}#endif}/* * ibmcam_veio() * * History: * 1/27/00  Added check for dev == NULL; this happens if camera is unplugged. */static int ibmcam_veio(	struct uvd *uvd,	unsigned char req,	unsigned short value,	unsigned short index){	static const char proc[] = "ibmcam_veio";	unsigned char cp[8] /* = { 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef } */;	int i;	if (!CAMERA_IS_OPERATIONAL(uvd))		return 0;	if (req == 1) {		i = usb_control_msg(			uvd->dev,			usb_rcvctrlpipe(uvd->dev, 0),			req,			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_ENDPOINT,			value,			index,			cp,			sizeof(cp),			1000);#if 0 /* keep */		dev_info(&uvd->dev->dev,			 "USB => %02x%02x%02x%02x%02x%02x%02x%02x "			 "(req=$%02x val=$%04x ind=$%04x)\n",			 cp[0],cp[1],cp[2],cp[3],cp[4],cp[5],cp[6],cp[7],			 req, value, index);#endif	} else {		i = usb_control_msg(			uvd->dev,			usb_sndctrlpipe(uvd->dev, 0),			req,			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_ENDPOINT,			value,			index,			NULL,			0,			1000);	}	if (i < 0) {		err("%s: ERROR=%d. Camera stopped; Reconnect or reload driver.",		    proc, i);		uvd->last_error = i;	}	return i;}/* * ibmcam_calculate_fps() * * This procedure roughly calculates the real frame rate based * on FPS code (framerate=NNN option). Actual FPS differs * slightly depending on lighting conditions, so that actual frame * rate is determined by the camera. Since I don't know how to ask * the camera what FPS is now I have to use the FPS code instead. * * The FPS code is in range [0..6], 0 is slowest, 6 is fastest. * Corresponding real FPS should be in range [3..30] frames per second. * The conversion formula is obvious: * * real_fps = 3 + (fps_code * 4.5) * * History: * 1/18/00  Created. */static int ibmcam_calculate_fps(struct uvd *uvd){	return 3 + framerate*4 + framerate/2;}/* * ibmcam_send_FF_04_02() * * This procedure sends magic 3-command prefix to the camera. * The purpose of this prefix is not known. * * History: * 1/2/00   Created. */static void ibmcam_send_FF_04_02(struct uvd *uvd){	ibmcam_veio(uvd, 0, 0x00FF, 0x0127);	ibmcam_veio(uvd, 0, 0x0004, 0x0124);	ibmcam_veio(uvd, 0, 0x0002, 0x0124);}static void ibmcam_send_00_04_06(struct uvd *uvd){	ibmcam_veio(uvd, 0, 0x0000, 0x0127);	ibmcam_veio(uvd, 0, 0x0004, 0x0124);	ibmcam_veio(uvd, 0, 0x0006, 0x0124);}static void ibmcam_send_x_00(struct uvd *uvd, unsigned short x){	ibmcam_veio(uvd, 0, x,      0x0127);	ibmcam_veio(uvd, 0, 0x0000, 0x0124);}static void ibmcam_send_x_00_05(struct uvd *uvd, unsigned short x){	ibmcam_send_x_00(uvd, x);	ibmcam_veio(uvd, 0, 0x0005, 0x0124);}static void ibmcam_send_x_00_05_02(struct uvd *uvd, unsigned short x){	ibmcam_veio(uvd, 0, x,      0x0127);	ibmcam_veio(uvd, 0, 0x0000, 0x0124);	ibmcam_veio(uvd, 0, 0x0005, 0x0124);	ibmcam_veio(uvd, 0, 0x0002, 0x0124);}static void ibmcam_send_x_01_00_05(struct uvd *uvd, unsigned short x){	ibmcam_veio(uvd, 0, x,      0x0127);	ibmcam_veio(uvd, 0, 0x0001, 0x0124);	ibmcam_veio(uvd, 0, 0x0000, 0x0124);	ibmcam_veio(uvd, 0, 0x0005, 0x0124);}static void ibmcam_send_x_00_05_02_01(struct uvd *uvd, unsigned short x){	ibmcam_veio(uvd, 0, x,      0x0127);	ibmcam_veio(uvd, 0, 0x0000, 0x0124);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产**成人网毛片九色| 调教+趴+乳夹+国产+精品| 欧美精品日韩一本| 欧美亚洲禁片免费| 欧美亚洲禁片免费| 欧美精品自拍偷拍| 欧美日韩一区二区在线视频| 欧美中文字幕一区| 欧美三级韩国三级日本三斤| 欧美色图在线观看| 欧美日韩五月天| 欧美一区三区四区| 欧美电视剧在线观看完整版| www国产精品av| 精品国产91九色蝌蚪| 久久久高清一区二区三区| 久久精品无码一区二区三区| 久久人人爽人人爽| 国产精品福利在线播放| 亚洲精选一二三| 午夜视频在线观看一区二区| 蜜桃av一区二区三区电影| 韩国三级在线一区| 99久久99精品久久久久久| 欧洲色大大久久| 欧美一区二区美女| 欧美国产一区二区| 亚洲国产中文字幕在线视频综合 | 午夜国产精品影院在线观看| 日本特黄久久久高潮| 国产·精品毛片| 欧美午夜电影网| 久久精品综合网| 亚洲一级片在线观看| 国产主播一区二区三区| 欧美性受xxxx| 国产精品污网站| 午夜伦欧美伦电影理论片| 国产成人在线观看| 在线不卡a资源高清| 国产欧美日韩激情| 日韩成人伦理电影在线观看| 成a人片亚洲日本久久| 欧美妇女性影城| 亚洲欧洲另类国产综合| 理论电影国产精品| 欧美午夜片在线观看| 中文字幕一区日韩精品欧美| 日韩高清电影一区| 91九色02白丝porn| 国产欧美日韩在线视频| 男女男精品视频| 欧美午夜电影在线播放| 国产精品电影一区二区三区| 精品一区二区在线免费观看| 欧美人xxxx| 夜夜嗨av一区二区三区网页| 国产寡妇亲子伦一区二区| 日韩美女在线视频| 日本亚洲免费观看| 538在线一区二区精品国产| 亚洲老司机在线| 99精品桃花视频在线观看| 亚洲精品一区在线观看| 日本一区中文字幕| 欧美日本不卡视频| 亚洲一区av在线| 在线观看一区二区视频| 一区二区在线观看不卡| 不卡的av中国片| 国产精品剧情在线亚洲| 国产成人鲁色资源国产91色综 | 久久久久久久久97黄色工厂| 青青草国产精品亚洲专区无| 69堂成人精品免费视频| 亚洲一区二区综合| 欧洲一区在线电影| 亚洲va韩国va欧美va| 欧美午夜精品久久久久久孕妇| 一区二区三区av电影 | 天天影视涩香欲综合网| 在线亚洲人成电影网站色www| 亚洲色欲色欲www| 色综合天天性综合| 亚洲素人一区二区| 色av综合在线| 午夜精品福利视频网站| 日韩一区二区三区高清免费看看| 免费观看日韩av| 久久精品视频一区二区三区| 粉嫩一区二区三区性色av| 国产精品久久久久久亚洲毛片| 成人av动漫在线| 亚洲一区二区精品视频| 欧美一区三区二区| 国产精品一卡二| 亚洲欧美综合色| 欧美二区乱c少妇| 国产麻豆午夜三级精品| 国产精品福利在线播放| 欧美日韩亚洲高清一区二区| 麻豆精品视频在线观看视频| 中文字幕欧美三区| 欧美性大战久久久久久久| 精品一区二区三区欧美| 亚洲丝袜自拍清纯另类| 91精品国产麻豆| 国产成人激情av| 亚洲福中文字幕伊人影院| 久久亚洲综合色一区二区三区| 99久久精品国产一区二区三区| 香蕉久久夜色精品国产使用方法 | 青娱乐精品视频| 国产精品电影一区二区| 51久久夜色精品国产麻豆| 国产v综合v亚洲欧| 婷婷一区二区三区| 久久精品视频一区二区三区| 欧美日韩成人一区| 成人激情校园春色| 九九精品视频在线看| 一区二区三区电影在线播| 久久久青草青青国产亚洲免观| 在线国产亚洲欧美| 国产成人8x视频一区二区| 日韩—二三区免费观看av| 亚洲丝袜自拍清纯另类| 久久―日本道色综合久久| 欧美人妇做爰xxxⅹ性高电影| jiyouzz国产精品久久| 国产原创一区二区三区| 午夜精品123| 一区二区三区欧美亚洲| 国产精品久线在线观看| 在线不卡中文字幕| 欧美亚洲日本国产| 91在线视频观看| 成人午夜免费电影| 国产在线播放一区| 极品少妇一区二区| 日韩一区精品视频| 亚洲国产精品精华液网站| 一区二区中文视频| 国产欧美精品区一区二区三区 | 国产精品911| 日本亚洲最大的色成网站www| 伊人夜夜躁av伊人久久| 亚洲人成网站影音先锋播放| 国产午夜亚洲精品理论片色戒| 精品美女一区二区| 日韩你懂的电影在线观看| 51精品秘密在线观看| 欧美另类高清zo欧美| 欧美日韩夫妻久久| 欧美精品在线观看一区二区| 欧美午夜片在线看| 欧美日韩aaa| 欧美一二区视频| 日韩欧美一级二级三级久久久| 日韩一区二区在线观看视频 | 亚洲一区二三区| 亚洲一区二区三区四区在线 | 2021中文字幕一区亚洲| 日韩一区二区三区视频在线| 日韩免费观看2025年上映的电影| 欧美成人高清电影在线| 久久久久久久精| 亚洲丝袜制服诱惑| 经典三级视频一区| 免费在线看成人av| 国产麻豆视频一区二区| 成人涩涩免费视频| 在线视频国产一区| 91精品国产综合久久福利软件| 欧美va在线播放| 亚洲国产精品成人综合 | 精品视频免费看| 欧美一级片免费看| 日本一区二区三区高清不卡 | 欧美日韩一级大片网址| 欧美一级二级在线观看| 国产亚洲欧美中文| 亚洲精品高清视频在线观看| 日韩国产高清影视| 国产91露脸合集magnet| 在线观看国产一区二区| 日韩精品中午字幕| 国产精品久久777777| 丝袜美腿高跟呻吟高潮一区| 国产在线精品一区二区不卡了| 99久久综合狠狠综合久久| 欧美精品v日韩精品v韩国精品v| 久久久久久一二三区| 亚洲影院久久精品| 国产成人av资源| 欧美丰满少妇xxxxx高潮对白 | 亚洲不卡av一区二区三区| 国产麻豆视频一区| 欧美巨大另类极品videosbest | 亚洲女子a中天字幕|