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

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

?? pwc-v4l.c

?? webcam device driver
?? C
?? 第 1 頁 / 共 3 頁
字號:
						return -EINVAL;					c->value >>= 8;					return 0;				case V4L2_CID_AUTOGAIN:					ret = pwc_get_agc(pdev, &c->value);					if (ret<0)						return -EINVAL;					c->value = (c->value < 0)?1:0;					return 0;				case V4L2_CID_EXPOSURE:					ret = pwc_get_shutter_speed(pdev, &c->value);					if (ret<0)						return -EINVAL;					return 0;			        case V4L2_CID_PRIVATE_COLOUR_MODE:					ret = pwc_get_colour_mode(pdev, &c->value);					if (ret < 0)						return -EINVAL;					return 0;			        case V4L2_CID_PRIVATE_AUTOCONTOUR:					ret = pwc_get_contour(pdev, &c->value);					if (ret < 0)						return -EINVAL;					c->value=(c->value == -1?1:0);					return 0;				case V4L2_CID_PRIVATE_CONTOUR:					ret = pwc_get_contour(pdev, &c->value);					if (ret < 0)						return -EINVAL;					c->value >>= 10;					return 0;				case V4L2_CID_PRIVATE_BACKLIGHT:					ret = pwc_get_backlight(pdev, &c->value);					if (ret < 0)						return -EINVAL;					return 0;				case V4L2_CID_PRIVATE_FLICKERLESS:					ret = pwc_get_flicker(pdev, &c->value);					if (ret < 0)						return -EINVAL;					c->value=(c->value?1:0);					return 0;				case V4L2_CID_PRIVATE_NOISE_REDUCTION:					ret = pwc_get_dynamic_noise(pdev, &c->value);					if (ret < 0)						return -EINVAL;					return 0;				case V4L2_CID_PRIVATE_SAVE_USER:				case V4L2_CID_PRIVATE_RESTORE_USER:				case V4L2_CID_PRIVATE_RESTORE_FACTORY:					return -EINVAL;			}			return -EINVAL;		}		case VIDIOC_S_CTRL:		{			struct v4l2_control *c = arg;			int ret;			switch (c->id)			{				case V4L2_CID_BRIGHTNESS:					c->value <<= 9;					ret = pwc_set_brightness(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_CONTRAST:					c->value <<= 10;					ret = pwc_set_contrast(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;			        case V4L2_CID_SATURATION:					ret = pwc_set_saturation(pdev, c->value);					if (ret<0)					  return -EINVAL;					return 0;				case V4L2_CID_GAMMA:					c->value <<= 11;					ret = pwc_set_gamma(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_RED_BALANCE:					c->value <<= 8;					ret = pwc_set_red_gain(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_BLUE_BALANCE:					c->value <<= 8;					ret = pwc_set_blue_gain(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_AUTO_WHITE_BALANCE:					c->value = (c->value == 0)?PWC_WB_MANUAL:PWC_WB_AUTO;					ret = pwc_set_awb(pdev, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_EXPOSURE:					c->value <<= 8;					ret = pwc_set_shutter_speed(pdev, c->value?0:1, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_AUTOGAIN:					/* autogain off means nothing without a gain */					if (c->value == 0)						return 0;					ret = pwc_set_agc(pdev, c->value, 0);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_GAIN:					c->value <<= 8;					ret = pwc_set_agc(pdev, 0, c->value);					if (ret<0)						return -EINVAL;					return 0;				case V4L2_CID_PRIVATE_SAVE_USER:					if (pwc_save_user(pdev))						return -EINVAL;					return 0;				case V4L2_CID_PRIVATE_RESTORE_USER:					if (pwc_restore_user(pdev))						return -EINVAL;					return 0;				case V4L2_CID_PRIVATE_RESTORE_FACTORY:					if (pwc_restore_factory(pdev))						return -EINVAL;					return 0;			        case V4L2_CID_PRIVATE_COLOUR_MODE:				        ret = pwc_set_colour_mode(pdev, c->value);					if (ret < 0)					  return -EINVAL;					return 0;			        case V4L2_CID_PRIVATE_AUTOCONTOUR:				  c->value=(c->value == 1)?-1:0;				  ret = pwc_set_contour(pdev, c->value);				  if (ret < 0)				    return -EINVAL;				  return 0;			        case V4L2_CID_PRIVATE_CONTOUR:				  c->value <<= 10;				  ret = pwc_set_contour(pdev, c->value);				  if (ret < 0)				    return -EINVAL;				  return 0;			        case V4L2_CID_PRIVATE_BACKLIGHT:				  ret = pwc_set_backlight(pdev, c->value);				  if (ret < 0)				    return -EINVAL;				  return 0;			        case V4L2_CID_PRIVATE_FLICKERLESS:				  ret = pwc_set_flicker(pdev, c->value);				  if (ret < 0)				    return -EINVAL;			        case V4L2_CID_PRIVATE_NOISE_REDUCTION:				  ret = pwc_set_dynamic_noise(pdev, c->value);				  if (ret < 0)				    return -EINVAL;				  return 0;			}			return -EINVAL;		}		case VIDIOC_ENUM_FMT:		{		    	struct v4l2_fmtdesc *f = arg;			int index; 			if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)			      return -EINVAL;		    	/* We only support two format: the raw format, and YUV */			index = f->index;			memset(f,0,sizeof(struct v4l2_fmtdesc));			f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;			f->index = index;			switch(index)			{				case 0:					/* RAW format */			    		f->pixelformat = pdev->type<=646?V4L2_PIX_FMT_PWC1:V4L2_PIX_FMT_PWC2;					f->flags = V4L2_FMT_FLAG_COMPRESSED;			    		strlcpy(f->description,"Raw Philips Webcam",sizeof(f->description));					break;				case 1:			    		f->pixelformat = V4L2_PIX_FMT_YUV420;			    		strlcpy(f->description,"4:2:0, planar, Y-Cb-Cr",sizeof(f->description));					break;			    	default:			      		return -EINVAL;			}			return 0;		}	    	case VIDIOC_G_FMT:		{		    	struct v4l2_format *f = arg;			PWC_DEBUG_IOCTL("ioctl(VIDIOC_G_FMT) return size %dx%d\n",pdev->image.x,pdev->image.y);			if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)			      return -EINVAL;			pwc_vidioc_fill_fmt(pdev, f);			return 0;		}		case VIDIOC_TRY_FMT:			return pwc_vidioc_try_fmt(pdev, arg);	    	case VIDIOC_S_FMT:			return pwc_vidioc_set_fmt(pdev, arg);		case VIDIOC_G_STD:		{			v4l2_std_id *std = arg;			*std = V4L2_STD_UNKNOWN;			return 0;		}		case VIDIOC_S_STD:		{			v4l2_std_id *std = arg;			if (*std != V4L2_STD_UNKNOWN)				return -EINVAL;			return 0;		}		case VIDIOC_ENUMSTD:		{			struct v4l2_standard *std = arg;			if (std->index != 0)				return -EINVAL;			std->id = V4L2_STD_UNKNOWN;			strncpy(std->name, "webcam", sizeof(std->name));			return 0;		}		case VIDIOC_REQBUFS:		{			struct v4l2_requestbuffers *rb = arg;			int nbuffers;			PWC_DEBUG_IOCTL("ioctl(VIDIOC_REQBUFS) count=%d\n",rb->count);			if (rb->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)				return -EINVAL;			if (rb->memory != V4L2_MEMORY_MMAP)				return -EINVAL;			nbuffers = rb->count;			if (nbuffers < 2)				nbuffers = 2;			else if (nbuffers > pwc_mbufs)				nbuffers = pwc_mbufs;			/* Force to use our # of buffers */			rb->count = pwc_mbufs;			return 0;		}		case VIDIOC_QUERYBUF:		{			struct v4l2_buffer *buf = arg;			int index;			PWC_DEBUG_IOCTL("ioctl(VIDIOC_QUERYBUF) index=%d\n",buf->index);			if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) {				PWC_DEBUG_IOCTL("ioctl(VIDIOC_QUERYBUF) Bad type\n");				return -EINVAL;			}			if (buf->memory != V4L2_MEMORY_MMAP) {				PWC_DEBUG_IOCTL("ioctl(VIDIOC_QUERYBUF) Bad memory type\n");				return -EINVAL;			}			index = buf->index;			if (index < 0 || index >= pwc_mbufs) {				PWC_DEBUG_IOCTL("ioctl(VIDIOC_QUERYBUF) Bad index %d\n", buf->index);				return -EINVAL;			}			memset(buf, 0, sizeof(struct v4l2_buffer));			buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;			buf->index = index;			buf->m.offset = index * pdev->len_per_image;			if (pdev->vpalette == VIDEO_PALETTE_RAW)				buf->bytesused = pdev->frame_size + sizeof(struct pwc_raw_frame);			else				buf->bytesused = pdev->view.size;			buf->field = V4L2_FIELD_NONE;			buf->memory = V4L2_MEMORY_MMAP;			//buf->flags = V4L2_BUF_FLAG_MAPPED;			buf->length = pdev->len_per_image;			PWC_DEBUG_READ("VIDIOC_QUERYBUF: index=%d\n",buf->index);			PWC_DEBUG_READ("VIDIOC_QUERYBUF: m.offset=%d\n",buf->m.offset);			PWC_DEBUG_READ("VIDIOC_QUERYBUF: bytesused=%d\n",buf->bytesused);			return 0;		}		case VIDIOC_QBUF:		{			struct v4l2_buffer *buf = arg;			PWC_DEBUG_IOCTL("ioctl(VIDIOC_QBUF) index=%d\n",buf->index);			if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)				return -EINVAL;			if (buf->memory != V4L2_MEMORY_MMAP)				return -EINVAL;			if (buf->index < 0 || buf->index >= pwc_mbufs)				return -EINVAL;			buf->flags |= V4L2_BUF_FLAG_QUEUED;			buf->flags &= ~V4L2_BUF_FLAG_DONE;			return 0;		}		case VIDIOC_DQBUF:		{			struct v4l2_buffer *buf = arg;			int ret;			PWC_DEBUG_IOCTL("ioctl(VIDIOC_DQBUF)\n");			if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)				return -EINVAL;			/* Add ourselves to the frame wait-queue.						   FIXME: needs auditing for safety.			   QUESTION: In what respect? I think that using the			             frameq is safe now.			 */			add_wait_queue(&pdev->frameq, &wait);			while (pdev->full_frames == NULL) {				if (pdev->error_status) {					remove_wait_queue(&pdev->frameq, &wait);					set_current_state(TASK_RUNNING);					return -pdev->error_status;				}				                	if (signal_pending(current)) {	                		remove_wait_queue(&pdev->frameq, &wait);		                	set_current_state(TASK_RUNNING);		                	return -ERESTARTSYS;	        	        }	                	schedule();		                set_current_state(TASK_INTERRUPTIBLE);			}			remove_wait_queue(&pdev->frameq, &wait);			set_current_state(TASK_RUNNING);							PWC_DEBUG_IOCTL("VIDIOC_DQBUF: frame ready.\n");			/* Decompress data in pdev->images[pdev->fill_image] */			ret = pwc_handle_frame(pdev);			if (ret)				return -EFAULT;			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: after pwc_handle_frame\n");			buf->index = pdev->fill_image;			if (pdev->vpalette == VIDEO_PALETTE_RAW)				buf->bytesused = pdev->frame_size + sizeof(struct pwc_raw_frame);			else				buf->bytesused = pdev->view.size;			buf->flags = V4L2_BUF_FLAG_MAPPED;			buf->field = V4L2_FIELD_NONE;			do_gettimeofday(&buf->timestamp);			buf->sequence = 0;			buf->memory = V4L2_MEMORY_MMAP;			buf->m.offset = pdev->fill_image * pdev->len_per_image;			buf->length = buf->bytesused;			pwc_next_image(pdev);			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: buf->index=%d\n",buf->index);			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: buf->length=%d\n",buf->length);			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: m.offset=%d\n",buf->m.offset);			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: bytesused=%d\n",buf->bytesused);			PWC_DEBUG_IOCTL("VIDIOC_DQBUF: leaving\n");			return 0;		}		case VIDIOC_STREAMON:	       	{			/* WARNING: pwc_try_video_mode() called pwc_isoc_init */			pwc_isoc_init(pdev);			return 0;		}		case VIDIOC_STREAMOFF:	       	{			pwc_isoc_cleanup(pdev);			return 0;		}			default:			return pwc_ioctl(pdev, cmd, arg);	} /* ..switch */	return 0;}	/* vim: set cino= formatoptions=croql cindent shiftwidth=8 tabstop=8: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天天摸av网| 国产精品伦一区二区三级视频| 不卡免费追剧大全电视剧网站| 午夜精品福利一区二区蜜股av| 亚洲欧美一区二区久久| 日本一区二区三级电影在线观看 | 亚洲一区在线观看免费| 国产女人18毛片水真多成人如厕 | 中文字幕制服丝袜一区二区三区 | 亚洲一区免费观看| 亚洲香肠在线观看| 亚洲午夜激情网站| 日韩不卡一二三区| 久久精品久久综合| 粉嫩嫩av羞羞动漫久久久| av成人动漫在线观看| 一本到高清视频免费精品| 欧美亚洲尤物久久| 欧美v亚洲v综合ⅴ国产v| 国产色爱av资源综合区| 国产精品三级视频| 亚洲男人电影天堂| 日本伊人色综合网| 国产伦理精品不卡| 99re成人在线| 欧美一区二区三区四区在线观看| 日韩欧美在线1卡| 国产天堂亚洲国产碰碰| 亚洲免费看黄网站| 久久国产精品99精品国产| 国产99久久精品| 欧美日韩国产高清一区二区| 精品国产91久久久久久久妲己| 久久综合九色综合97婷婷女人| 1000精品久久久久久久久| 午夜视频一区二区三区| 韩国欧美国产1区| 在线免费av一区| 欧美精品一区二区三区久久久| 一区二区中文视频| 蜜乳av一区二区| 97se亚洲国产综合自在线| 欧美日韩午夜影院| 国产精品国产三级国产aⅴ入口| 舔着乳尖日韩一区| 成人午夜视频免费看| 91精品国产综合久久久蜜臀粉嫩 | 国产高清亚洲一区| 欧美三级日本三级少妇99| 久久久99久久| 美女在线视频一区| 欧美日韩三级在线| 亚洲欧美精品午睡沙发| 国产福利视频一区二区三区| 9191久久久久久久久久久| 日韩毛片精品高清免费| 国产高清成人在线| 日韩午夜三级在线| 亚洲一区二区三区中文字幕 | 欧美日本精品一区二区三区| 中文成人综合网| 国产乱码精品一品二品| 欧美成人猛片aaaaaaa| 香蕉久久一区二区不卡无毒影院 | 日本久久一区二区| 欧美激情一区不卡| 国产精品夜夜爽| 337p粉嫩大胆色噜噜噜噜亚洲| 水蜜桃久久夜色精品一区的特点| 一本大道久久a久久精品综合| 国产午夜精品理论片a级大结局| 蜜桃一区二区三区在线| 在线电影院国产精品| 亚洲国产cao| 欧美嫩在线观看| 亚欧色一区w666天堂| 欧美日韩黄色一区二区| 亚洲国产精品一区二区久久| 91免费观看在线| 中文字幕一区二区三区精华液 | 成人午夜视频免费看| 国产亚洲制服色| 国产成人夜色高潮福利影视| 欧美激情中文不卡| 成人激情免费网站| 亚洲色图欧洲色图婷婷| 色哟哟亚洲精品| 一区二区三区欧美视频| 欧美这里有精品| 亚洲电影第三页| 欧美一区二区三区免费在线看| 日本成人中文字幕在线视频| 91麻豆精品国产91久久久资源速度 | proumb性欧美在线观看| 亚洲视频免费看| 欧美少妇性性性| 久久成人羞羞网站| 国产精品久久久久久妇女6080 | 亚洲国产成人porn| 欧美不卡123| 国产超碰在线一区| 亚洲小少妇裸体bbw| 日韩女优视频免费观看| 成人爱爱电影网址| 亚洲成av人影院| 久久综合999| 在线看不卡av| 国内久久婷婷综合| 亚洲精品国产品国语在线app| 欧美日韩国产另类不卡| 精品一区二区国语对白| 亚洲人成精品久久久久久| 欧美二区乱c少妇| 国产成人a级片| 午夜影院久久久| 国产欧美一区二区精品忘忧草| 色素色在线综合| 美女视频免费一区| 亚洲码国产岛国毛片在线| 日韩一区二区三区视频| 99久久99久久精品免费观看| 奇米精品一区二区三区四区| 国产精品久久久久久户外露出 | 亚洲国产人成综合网站| 色婷婷久久综合| 久久不见久久见中文字幕免费| 国产精品大尺度| 欧美精品一区在线观看| 国产成人高清在线| 免费人成网站在线观看欧美高清| 欧美午夜影院一区| 日韩一二三四区| 久久亚洲欧美国产精品乐播 | 精品一二三四区| 国产露脸91国语对白| 99久久国产综合精品色伊| 色先锋资源久久综合| 欧美日韩色一区| 欧美精品一区二区三区蜜桃| 国产精品美女久久久久aⅴ| 中文字幕在线观看一区二区| 亚洲一级电影视频| 九九精品视频在线看| 成人激情免费电影网址| 99精品在线观看视频| 欧美日韩在线观看一区二区| 日韩精品一区二区三区视频在线观看 | 国产精品伦一区| 亚洲乱码国产乱码精品精的特点 | av中文字幕不卡| 在线观看日韩精品| 精品国产乱码久久久久久1区2区| 国产精品人成在线观看免费| 亚洲图片欧美一区| 国产精品一区二区在线看| 欧美在线观看18| 精品国产乱码91久久久久久网站| 国产精品久久久久精k8 | 欧美一区二区日韩一区二区| 日本一区二区三区国色天香 | 亚洲精品写真福利| 久久电影网站中文字幕| 91一区一区三区| 日韩午夜精品电影| 亚洲精选免费视频| 韩国三级电影一区二区| 欧美亚洲国产一区在线观看网站| 久久九九全国免费| 青青草国产精品97视觉盛宴| 99国产精品久久久久久久久久久| 欧美一激情一区二区三区| 亚洲四区在线观看| 国产成人精品免费| 精品福利一区二区三区 | 亚洲三级理论片| 国产精品影视网| 欧美一区二区日韩| 丝袜国产日韩另类美女| 91麻豆视频网站| 国产无人区一区二区三区| 天堂av在线一区| 欧美视频在线一区二区三区| 日本一区二区三区久久久久久久久不 | 亚洲欧美影音先锋| 国产精品一区二区男女羞羞无遮挡| 欧美裸体一区二区三区| 亚洲日本丝袜连裤袜办公室| 国产成人精品三级麻豆| 久久久午夜精品| 国产精选一区二区三区| 精品卡一卡二卡三卡四在线| 天天操天天综合网| 欧洲一区在线电影| 亚洲精品视频免费看| 色综合天天综合在线视频| 亚洲欧美欧美一区二区三区| av不卡在线播放| 综合在线观看色| 在线观看日韩高清av| 亚洲成av人综合在线观看|