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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ibmcam.c

?? 是關(guān)于linux2.5.1的完全源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	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)			info("Reached line %d. (frame is done)", frame->curline);		return scan_NextFrame;	}	/* Make sure there's enough data for the entire line */	len = 3 * data_w; /* <y-data> <uv-data> */	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 = 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);	for (i = 0; i < VIDEOSIZE_X(frame->request); i++) {		int y, rv, gv, bv;	/* RGB components */		if (i < data_w) {			y = data[i];	/* Luminosity is the first line */			/* Apply static color correction */			u = color[i*2] + hue_corr;			v = color[i*2 + 1] + 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;			}		} else			y = 0, u = v = 128;		YUV_TO_RGB_BY_THE_BOOK(y, u, v, rv, gv, bv);		RGB24_PUTPIXEL(frame, i, rw, rv, gv, bv); /* Done by deinterlacing now */	}	frame->deinterlace = Deinterlace_FillEvenLines;	/*	 * 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) {			info("All requested lines (%ld.) done.",			     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 ParseState_t ibmcam_model4_128x96_parse_lines(	uvd_t *uvd,	usbvideo_frame_t *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)			info("Reached line %d. (frame is done)", 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) {			info("All requested lines (%ld.) done.",			     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. */void ibmcam_ProcessIsocData(uvd_t *uvd, usbvideo_frame_t *frame){	ParseState_t 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	{		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(	uvd_t *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),			HZ);#if 0		info("USB => %02x%02x%02x%02x%02x%02x%02x%02x "		       "(req=$%02x val=$%04x ind=$%04x)",		       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,			HZ);	}	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(uvd_t *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(uvd_t *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(uvd_t *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(uvd_t *uvd, unsigned short x){	ibmcam_veio(uvd, 0, x,      0x0127);	ibmcam_veio(uvd, 0, 0x0000, 0x0124);}static void ibmcam_send_x_00_05(uvd_t *uvd, unsigned short x){	ibmcam_send_x_00(uvd, x);	ibmcam_veio(uvd, 0, 0x0005, 0x0124);}static void ibmcam_send_x_00_05_02(uvd_t *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(uvd_t *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(uvd_t *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);	ibmcam_veio(uvd, 0, 0x0001, 0x0124);}static void ibmcam_send_x_00_05_02_08_01(uvd_t *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);	ibmcam_veio(uvd, 0, 0x0008, 0x0124);	ibmcam_veio(uvd, 0, 0x0001, 0x0124);}static void ibmcam_Packet_Format1(uvd_t *uvd, unsigned char fkey, unsigned char val){	ibmcam_send_x_01_00_05(uvd, unknown_88);	ibmcam_send_x_00_05(uvd, fkey);	ibmcam_send_x_00_05_02_08_01(uvd, val);	ibmcam_send_x_00_05(uvd, unknown_88);	ibmcam_send_x_00_05_02_01(uvd, fkey);	ibmcam_send_x_00_05(uvd, unknown_89);	ibmcam_send_x_00(uvd, fkey);	ibmcam_send_00_04_06(uvd);	ibmcam_veio(uvd, 1, 0x0000, 0x0126);	ibmcam_send_FF_04_02(uvd);}static void ibmcam_PacketFormat2(uvd_t *uvd, unsigned char fkey, unsigned char val)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱淫av一区二区三区| 成人综合在线观看| 亚洲桃色在线一区| 日韩欧美一区二区在线视频| 懂色中文一区二区在线播放| 丝袜美腿亚洲一区二区图片| 国产精品大尺度| 精品国产电影一区二区| 欧美日韩国产成人在线91| 9i在线看片成人免费| 久久精品国产第一区二区三区| 一区二区三区毛片| 中文字幕高清一区| 精品国产成人在线影院| 欧美日韩专区在线| 一本大道久久a久久精二百| 国产高清不卡一区二区| 青青草伊人久久| 亚洲国产日韩精品| 亚洲欧美另类小说| 国产精品伦理在线| 久久精品男人的天堂| 欧美tk丨vk视频| 7777精品久久久大香线蕉 | 欧美一区二区三区四区久久| www.欧美亚洲| 成人性生交大合| 大尺度一区二区| 国产美女在线观看一区| 日韩不卡手机在线v区| 亚洲国产欧美在线人成| 一区二区激情小说| 综合久久久久综合| 亚洲免费观看高清完整版在线观看熊| 中文在线一区二区| 欧美激情一区二区三区蜜桃视频| 日本一区二区免费在线| 亚洲国产高清在线观看视频| 国产欧美日韩在线| 中文字幕av不卡| 亚洲视频一区二区在线观看| 亚洲视频免费看| 亚洲欧美日韩在线播放| 亚洲精品亚洲人成人网| 一区二区三区四区国产精品| 亚洲在线观看免费视频| 亚洲大片一区二区三区| 日韩福利电影在线| 久久爱www久久做| 国产又黄又大久久| 懂色av噜噜一区二区三区av| 99视频一区二区三区| 99re热这里只有精品免费视频| jlzzjlzz亚洲女人18| 色久综合一二码| 欧美在线视频不卡| 欧美老年两性高潮| 精品国产一区二区三区av性色| 欧美国产日本韩| 一区二区三区在线视频免费| 午夜影视日本亚洲欧洲精品| 91麻豆精品国产自产在线观看一区| 欧美一卡2卡三卡4卡5免费| 亚洲精品在线免费观看视频| 国产精品麻豆视频| 午夜视频一区二区三区| 精品一区二区三区蜜桃| 成人av片在线观看| 欧美日韩五月天| 精品对白一区国产伦| 国产欧美一区二区精品仙草咪| 亚洲猫色日本管| 男女男精品视频| 丁香啪啪综合成人亚洲小说| 欧美日韩一区不卡| 2020国产精品| 亚洲男同性恋视频| 久久91精品久久久久久秒播| 91最新地址在线播放| 欧美精品久久久久久久久老牛影院| 精品久久久久一区二区国产| 欧美国产精品一区二区三区| 五月天一区二区三区| 粉嫩av一区二区三区| 欧美群妇大交群中文字幕| 国产日韩欧美电影| 午夜精品久久久久久久久久久| 国产成人精品免费在线| 欧美狂野另类xxxxoooo| 国产校园另类小说区| 日产欧产美韩系列久久99| 99精品1区2区| www久久久久| 亚洲国产精品一区二区久久恐怖片| 国产精品888| 欧美一级夜夜爽| 亚洲精品免费看| 国产一区二区三区不卡在线观看| 欧美日韩欧美一区二区| 国产精品国产三级国产普通话99| 日韩av一区二区三区| 一本大道综合伊人精品热热| 国产欧美日韩另类一区| 男人的天堂亚洲一区| 欧美三级午夜理伦三级中视频| 中文一区二区完整视频在线观看| 奇米色777欧美一区二区| 在线观看国产一区二区| 中文av字幕一区| 国产精品一区二区视频| 日韩一级片网址| 亚洲一区国产视频| 色天使久久综合网天天| 亚洲色图欧美偷拍| 福利一区二区在线| 久久久精品综合| 寂寞少妇一区二区三区| 欧美一区中文字幕| 亚洲第一精品在线| 欧美中文字幕一区二区三区| 亚洲免费看黄网站| 91视视频在线观看入口直接观看www| 欧美精彩视频一区二区三区| 黄网站免费久久| 欧美一级日韩免费不卡| 午夜激情一区二区三区| 欧美性色黄大片| 亚洲第一成年网| 欧美剧在线免费观看网站| 亚洲国产三级在线| 欧美日韩国产精选| 亚洲高清免费在线| 69av一区二区三区| 日本成人超碰在线观看| 日韩一区二区三区视频| 69堂国产成人免费视频| 日韩电影网1区2区| 欧美一区二区免费| 久久99国产精品麻豆| 久久综合九色综合97_久久久| 国产在线精品视频| 国产欧美日韩综合| 99re热视频这里只精品| 亚洲夂夂婷婷色拍ww47| 欧美日韩一区二区三区不卡| 日韩av网站免费在线| 日韩午夜在线影院| 国产一区二区三区| 中文字幕一区二区三区在线不卡| av综合在线播放| 亚洲一区二区三区四区中文字幕| 91精品国产综合久久久蜜臀粉嫩 | 日韩高清不卡一区| 日韩精品一区二区三区老鸭窝| 久久精品999| 国产欧美日韩亚州综合| 一本到高清视频免费精品| 亚洲一区中文在线| 日韩亚洲欧美一区二区三区| 国产一区二区三区精品视频| 亚洲欧美在线高清| 欧美日韩精品福利| 国产一区二区三区在线观看免费| 国产精品入口麻豆原神| 在线观看免费视频综合| 毛片一区二区三区| 亚洲国产精品精华液ab| 欧美亚洲尤物久久| 久久99最新地址| 自拍av一区二区三区| 91精品国产美女浴室洗澡无遮挡| 国内精品第一页| 亚洲蜜桃精久久久久久久| 欧美一级理论片| www.日韩精品| 老司机精品视频线观看86| 亚洲视频一区二区在线| 91麻豆精品国产无毒不卡在线观看| 国产一区二区0| 亚洲午夜在线视频| 欧美精品一区视频| 在线观看亚洲精品视频| 国产福利一区在线| 婷婷综合五月天| 国产精品毛片a∨一区二区三区| 7777女厕盗摄久久久| 97se亚洲国产综合自在线不卡| 日本不卡在线视频| 综合电影一区二区三区 | 丝袜美腿一区二区三区| 欧美国产精品久久| 日韩无一区二区| 色噜噜狠狠一区二区三区果冻| 激情国产一区二区| 亚洲午夜电影在线观看| 国产精品无遮挡| 日韩精品综合一本久道在线视频| 在线免费观看不卡av| 丁香亚洲综合激情啪啪综合| 男人的天堂久久精品|