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

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

?? ci-capture.c

?? Intel PXA270 cpu下攝像頭驅(qū)動程序源碼
?? C
字號:
/* * stillyuv.c * *  Copyright (C) 2003, Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * *  This is a sample code of camera application. * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <linux/fb.h>#include <sys/mman.h>#include <errno.h>#include <linux/videodev.h>#include <linux/pxa_camera.h>#include <getopt.h>#include <sys/ioctl.h>#include <fcntl.h>#include <unistd.h>#include <linux/types.h>#include <sys/time.h>/* * [in]   dev, bpp, format, xpos, ypos, xres, yres * [out]  map, yoff, ylen, cboff, cblen, croff, crlen , pitch * * format:  0x2 = YCbCr 444 Planar, 0x3 = YCbCr 422 Planar, 0x4 = YCbCr 420 Planar * pitch :  Actual pixels per line. * * if successed, file descriptor returned, * otherwise, -1 returned. */int overlay2_open(char *dev, int  bpp, int  format, int  xpos, int  ypos, int  xres,	int  yres, unsigned char  **map, int  *yoff, int  *ylen, int  *cboff, int  *cblen,	int  *croff, int  *crlen, int  *pitch){	struct fb_var_screeninfo var;	struct fb_fix_screeninfo fix;	int fd,err;	if ( (!map) || (!yoff) || (!ylen) || (!cboff) || (!cblen) || (!croff) || (!crlen) )		return -1;	fd = open(dev, O_RDWR);	if (fd < 0) return -1;	var.xres = xres;	var.yres = yres;	var.bits_per_pixel = bpp;	/* nonstd for FOR/XPOS/YPOS */	var.nonstd = (format <<20) | (ypos << 10) | xpos;	/* set "var" screeninfo */	err = ioctl(fd, FBIOPUT_VSCREENINFO, &var);	if (err) {		close(fd);		return -1;	}	/* get updated "fix" screeninfo */    	err = ioctl(fd, FBIOGET_FSCREENINFO, &fix);	if (err) {		close(fd);		return -1;	}	/* get updated "var" screeninfo */	err = ioctl(fd, FBIOGET_VSCREENINFO, &var);	if (err) {		close(fd);		return -1;	}	*map = (unsigned char*)mmap(0, fix.smem_len,			PROT_READ | PROT_WRITE	, MAP_SHARED, fd, 0);	if(*map == MAP_FAILED) return -1;	*yoff   = var.red.offset;	*ylen   = var.red.length;	*cboff  = var.green.offset;	*cblen  = var.green.length;	*croff  = var.blue.offset;	*crlen  = var.blue.length;	*pitch = fix.line_length;	return fd;}/* * release overlay fd */int overlay2_close(int fd){	if (fd >= 0) close(fd);	/* FIXME : we need mumap */	return 0;}#define DEFAULT_FB_DEVICE "/dev/fb2"void udelay(int usec){	fd_set rfds;	struct timeval tv;	FD_ZERO(&rfds);	FD_SET(0, &rfds);	tv.tv_sec = 0;	tv.tv_usec = usec;	select(1, &rfds, NULL,  NULL, &tv);}#define FRAME_NUM	100int main(int argc, char *argv[]){	int fd;	int frame;	unsigned char *map;	int ylen, yoff, cblen, cboff, crlen, croff, pitch;	int dev;	unsigned char* buff = NULL;	struct video_window vw;	struct video_mbuf vm;	int frame_size;	int arg;        struct timeval start, end;        struct  timezone        tz;        struct ioctl_data {                int val1;                int val2;        };        struct ioctl_data io_data;#ifdef DUMP_VIDEO	FILE* ff;	ff=fopen("cap.yuv422","wb");#endif        /* ------------------- argument process ----------------------- */        if (argc < 2) {                printf("Usage: %s win_width win_height \n", argv[0]);                return -1;        }        vw.width = atoi(argv[1]);        vw.height = atoi(argv[2]);        /* ------------------- end of argument process ---------------- */		dev = open("/dev/video0", O_RDONLY);        if (dev < 0) {                printf("Error: cannot open /dev/video0.\n");                exit(1);        }        if (ioctl(dev, VIDIOCSWIN, &vw)) {                printf("Error setting camera information.\n");                exit(2);        } else {                printf("Set size. width = %d, height = %d.\n",vw.width, vw.height);        }        if (ioctl(dev, VIDIOCGWIN, &vw)) {                printf("Error reading camera information.\n");		exit(2);        } else {        	printf("Get size. width = %d, height = %d.\n",vw.width, vw.height);        }        io_data.val1 = CAMERA_IMAGE_FORMAT_YCBCR422_PLANAR;        io_data.val2 = CAMERA_IMAGE_FORMAT_YCBCR422_PLANAR;        if (ioctl(dev, WCAM_VIDIOCSINFOR, &io_data)) {                printf("Error setting camera format.\n");                exit(2);        }	fd = overlay2_open(DEFAULT_FB_DEVICE, 24, 0x3, 50, 100, vw.width, vw.height,			&map, &yoff, &ylen, &cboff, &cblen, &croff, &crlen, &pitch);	if ( fd < 0) {		printf("Failed to open:%s\n", DEFAULT_FB_DEVICE);		exit(-1);	}        if (ioctl (dev, VIDIOCGMBUF, &vm) == -1)        {		printf ("ioctl (VIDIOCGMBUF) failed\n");		exit(-1);        }        buff = (unsigned char*)malloc(vw.width * vw.height * 2);        if (!buff) {        	printf("Cann't allocate buffer.\n");        	exit(3);        }        memset(buff,0,vw.width*vw.height*2);        memcpy(map+yoff, buff, vw.width*vw.height);	memcpy(map+cboff, buff+vw.width*vw.height, vw.width*vw.height/2);	memcpy(map+croff, buff+vw.width*vw.height+vw.width*vw.height/2, vw.width*vw.height/2);/* preview */        arg = VIDEO_START;        ioctl(dev, VIDIOCCAPTURE, arg);        frame_size = vw.width * vw.height * 2;        frame = 0;        while(1) {                int len;                len = read (dev, buff, frame_size);                if (len <= 0 ) {                        printf("Capture error.\n");                        exit(6);                } else {                //        printf("Capture successfully.\n");                }                                                                                                                                                                             memcpy(map+yoff, buff, vw.width*vw.height);                memcpy(map+cboff, buff + vw.width*vw.height, vw.width*vw.height/2);                memcpy(map+croff, buff + vw.width*vw.height+vw.width*vw.height/2, vw.width*vw.height/2);                                                                                                                                                                             frame ++;                if (frame == 100)                        break;        }        gettimeofday(&end, &tz);        arg = VIDEO_STOP;        ioctl(dev, VIDIOCCAPTURE, arg);/* Stop preview */	printf ("preview stop \n");	udelay (1000000);	printf ("begin to capture \n");		arg = STILL_IMAGE;	ioctl(dev, VIDIOCCAPTURE, arg);	frame_size = vw.width * vw.height * 2;	frame = 0;        gettimeofday(&start, &tz);	int len;	len = read (dev, buff, frame_size);{/* pass the first few frames for just power on of the sensor */	int i;	for (i = 0; i < 3; i ++) {	ioctl(dev, VIDIOCCAPTURE, arg);	len = read (dev, buff, frame_size);//	printf ("capture one frame \n");	}}	if (len <= 0 ) {                printf("Capture error.\n");		exit(6);        } else {        	printf("Capture successfully.\n");                frame++;        }	memcpy(map+yoff, buff, vw.width*vw.height);	memcpy(map+cboff, buff + vw.width*vw.height, vw.width*vw.height/2);	memcpy(map+croff, buff + vw.width*vw.height+vw.width*vw.height/2, vw.width*vw.height/2); #ifdef DUMP_VIDEO	if(ff) {		fwrite(buff,1,vw.width*vw.height*2,ff);	}#endif		#ifdef DUMP_VIDEO	if(ff) fclose(ff);#endif	free(buff);	printf ("---------- Still Image Capture Completed, pls press any key to terminate this demo -------- \n");	getchar();        close(dev);	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本福利一区二区| 久久99精品一区二区三区| 久久女同精品一区二区| 欧美日韩精品专区| 久久精品国产99久久6| 一区二区在线观看免费视频播放| 欧美v亚洲v综合ⅴ国产v| 欧美丝袜丝nylons| 99re热这里只有精品视频| 国产老妇另类xxxxx| 久久国产三级精品| 久久电影网电视剧免费观看| 亚洲国产成人av| 亚洲永久精品国产| 亚洲人亚洲人成电影网站色| 国产精品国产a| 亚洲国产高清aⅴ视频| 欧美tickling网站挠脚心| 日韩欧美在线网站| 欧美一区二区三区四区五区| 欧美高清www午色夜在线视频| 色老汉av一区二区三区| 欧美视频在线播放| 在线观看91av| 久久婷婷国产综合精品青草| 精品福利一区二区三区| 国产亚洲一二三区| 国产精品看片你懂得| ...中文天堂在线一区| 一区二区三区在线免费| 日韩成人精品在线| 国产成人精品亚洲午夜麻豆| 99精品久久免费看蜜臀剧情介绍| av电影一区二区| 91福利精品第一导航| 日韩一区二区中文字幕| 欧美韩日一区二区三区四区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲五月六月丁香激情| 麻豆91在线播放免费| 国产精品一区二区久久精品爱涩| 欧日韩精品视频| 精品91自产拍在线观看一区| 亚洲视频在线一区| 久久成人综合网| 欧美色视频一区| 国产精品激情偷乱一区二区∴| 亚洲精品免费在线播放| 国产福利精品导航| 日韩一二在线观看| 午夜精品一区在线观看| 懂色av中文一区二区三区| 日韩欧美一二区| 亚洲大型综合色站| 成人免费高清视频在线观看| 日韩免费电影一区| 日韩av中文字幕一区二区三区| av亚洲精华国产精华| 欧美激情一区二区三区四区| 久久99最新地址| 欧美精品xxxxbbbb| 一区二区高清视频在线观看| 国产高清在线精品| 欧美tk丨vk视频| 久久精品国产第一区二区三区| 欧美三级韩国三级日本三斤| 亚洲夂夂婷婷色拍ww47| 91豆麻精品91久久久久久| 综合电影一区二区三区| 成人理论电影网| 亚洲欧美自拍偷拍| 色综合久久中文综合久久97| 亚洲啪啪综合av一区二区三区| 91在线视频播放地址| 亚洲人精品午夜| 欧美老肥妇做.爰bbww视频| 亚洲国产精品天堂| 日韩免费高清视频| 国产成人精品免费视频网站| 亚洲欧洲另类国产综合| 在线中文字幕不卡| 日本 国产 欧美色综合| 精品久久久久久无| 91免费版在线| 日韩和欧美一区二区三区| 日韩免费一区二区三区在线播放| 国产麻豆视频一区| 《视频一区视频二区| 91精品国产色综合久久不卡电影| 久久99日本精品| 亚洲日本欧美天堂| 日韩欧美国产综合| 99久久婷婷国产精品综合| 全部av―极品视觉盛宴亚洲| 欧美国产欧美综合| 欧美三级一区二区| 成人激情综合网站| 蜜桃一区二区三区在线| 亚洲人成小说网站色在线 | 国产一区二区三区精品视频| 亚洲六月丁香色婷婷综合久久| 日韩精品中文字幕在线一区| www.欧美.com| 国产一区二区三区美女| 日韩精品一级二级 | 久久久国产一区二区三区四区小说| 一本到三区不卡视频| 国产一级精品在线| 日韩极品在线观看| 亚洲成在人线免费| 亚洲香肠在线观看| 亚洲欧美一区二区久久| 欧美高清在线一区二区| 久久欧美一区二区| 久久久久9999亚洲精品| 日韩欧美一区中文| 日韩一区二区三区精品视频| 欧美日韩国产小视频在线观看| 日本黄色一区二区| 91视频观看视频| 91黄色免费网站| 欧美日韩免费不卡视频一区二区三区| 91在线视频免费91| 91官网在线免费观看| 欧美日韩国产一区| 91麻豆精品国产自产在线| 制服丝袜亚洲网站| 欧美变态tickle挠乳网站| 久久久久综合网| 中文字幕一区二区三区精华液| 日韩理论片在线| 亚洲午夜激情av| 日韩国产欧美视频| 国产麻豆精品theporn| 成人性生交大片免费看中文| 97精品国产露脸对白| 欧美午夜一区二区三区| 制服视频三区第一页精品| 精品动漫一区二区三区在线观看| 久久精品亚洲精品国产欧美kt∨ | 欧美精品一区在线观看| 国产精品美女久久久久久久久| 一区二区三区四区精品在线视频| 三级不卡在线观看| 成人伦理片在线| 欧美日本一道本在线视频| 国产日韩欧美综合一区| 香蕉乱码成人久久天堂爱免费| 国产一区二区三区| 欧美日韩一二三| 国产精品国产三级国产有无不卡 | 国产精品成人免费| 麻豆精品一区二区av白丝在线| 成人小视频在线观看| 欧美三级三级三级爽爽爽| 国产亚洲制服色| 日本不卡123| 欧美在线观看视频在线| 久久这里只有精品首页| 亚洲成av人片一区二区梦乃| 99热在这里有精品免费| 日韩精品一区二区三区四区| 国产精品毛片a∨一区二区三区| 日韩成人午夜电影| 色悠悠亚洲一区二区| 国产精品免费免费| 国产原创一区二区| 日韩欧美中文字幕公布| 亚洲在线一区二区三区| 色吊一区二区三区| 国产日韩欧美电影| 国产毛片精品视频| 欧美成人r级一区二区三区| 爽爽淫人综合网网站| 欧美在线你懂的| 亚洲乱码国产乱码精品精可以看| 高清av一区二区| 亚洲欧洲日韩av| 91麻豆国产香蕉久久精品| 欧美国产一区二区在线观看| 国产91综合一区在线观看| 欧美国产精品专区| 91亚洲精品久久久蜜桃网站| 欧美亚洲禁片免费| 亚洲国产精品综合小说图片区| 欧美日韩免费一区二区三区 | 欧美日韩三级一区二区| 天堂资源在线中文精品| 久久综合色婷婷| 99r精品视频| 午夜在线电影亚洲一区| 久久久久国产精品麻豆ai换脸| 色综合久久天天| 麻豆91小视频| 一区二区久久久| 欧美精品一区二| 欧美午夜不卡视频| 国产乱一区二区| 免费在线成人网| 亚洲欧美偷拍另类a∨色屁股|