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

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

?? cam2fb.c

?? 本源代碼為USB攝像頭的驅動程序
?? C
字號:
/* * CAMIF test * * bushi@mizi.com * * $Id: cam2fb.c,v 1.1.1.1 2004/01/20 10:29:10 laputa Exp $ * */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>#include <ctype.h>#include <errno.h>#include <sys/mman.h>#include <sys/time.h>#include <sys/ioctl.h>/* * must be  *   CAM_WIDTH  == FB_WIDTH *   CAM_HEIGHT <= FB_HEIGHT */#define CAM_WIDTH 240#define CAM_HEIGHT 180#define FB_WIDTH 240#define FB_HEIGHT 320/* kernel stuff */#define CAMIF_TYPE_RGB16 0#define CAMIF_TYPE_RGB32 1#define CAMIF_TYPE_YUV420 2/*static struct s3c2440_camif_cfg_param {	int img;	//source image type into the camera interface			// 0 for SXGA, 1 for VGA, 2 for QVGA	int dst_x;	int dst_y;} camif_cfg;*/typedef unsigned short __u16;struct video_picture{        __u16   brightness;        __u16   hue;        __u16   colour;        __u16   contrast;        __u16   whiteness;      /* Black and white only */        __u16   depth;          /* Capture depth */        __u16   palette;        /* Palette in use */#define VIDEO_PALETTE_GREY      1       /* Linear greyscale */#define VIDEO_PALETTE_HI240     2       /* High 240 cube (BT848) */#define VIDEO_PALETTE_RGB565    3       /* 565 16 bit RGB */#define VIDEO_PALETTE_RGB24     4       /* 24bit RGB */#define VIDEO_PALETTE_RGB32     5       /* 32bit RGB */#define VIDEO_PALETTE_RGB555    6       /* 555 15bit RGB */#define VIDEO_PALETTE_YUV422    7       /* YUV422 capture */#define VIDEO_PALETTE_YUYV      8#define VIDEO_PALETTE_UYVY      9       /* The great thing about standards is*/#define VIDEO_PALETTE_YUV420    10#define VIDEO_PALETTE_YUV411    11      /* YUV411 capture */#define VIDEO_PALETTE_RAW       12      /* RAW capture (BT848) */#define VIDEO_PALETTE_YUV422P   13      /* YUV 4:2:2 Planar */#define VIDEO_PALETTE_YUV411P   14      /* YUV 4:1:1 Planar */#define VIDEO_PALETTE_YUV420P   15      /* YUV 4:2:0 Planar */#define VIDEO_PALETTE_YUV410P   16      /* YUV 4:1:0 Planar */#define VIDEO_PALETTE_PLANAR    13      /* start of planar entries */#define VIDEO_PALETTE_COMPONENT 7       /* start of component entries */}camif_cfg;/****************/static int cam_fp = -1;static int fb_fp = -1;static char *fb = NULL;static inline int cam_init(void){	int dev_fp = -1;	//dev_fp = open("/dev/misc/cam", O_RDWR);	dev_fp  = open("/dev/video0",O_RDWR);	if (dev_fp < 0) {		perror("/dev/video0");		return -1;	}	printf("cam_fp111111=====  %d\n\r",dev_fp);	return dev_fp;}static inline int fb_init(void){	int dev_fp = -1;	dev_fp = open("/dev/fb/0", O_RDWR);	if (dev_fp < 0) {		perror("/dev/fb/0");		return -1;	}	if ((fb = (char*)mmap(0, FB_WIDTH*FB_HEIGHT*2, 			PROT_READ | PROT_WRITE, MAP_SHARED, dev_fp, 0)) < 0) {		perror("mmap()");		return -1;	}	return dev_fp;}static inline void start_capture(int fp){	char c;	write(fp, &c, 1);}static inline int read_data(int fp, char *buf, int width, int height, int bpp){	int ret;	if ((ret = read(fp, buf, width*height*bpp/8)) != width*height*bpp/8)	{		return 0;	}	return ret;}static inline void clear(char *dest){#ifdef FB_IMG_BPP	memcpy(dest, &img_data[0], FB_WIDTH*FB_HEIGHT*2);#else	memset(dest, 0, FB_WIDTH*FB_HEIGHT*2);#endif}#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))static inline void draw(char *dest, char *src, int width, int height, int bpp		,int src_offset_x, int src_offset_y){	int x,y;	unsigned short *rgb16; 	unsigned long *rgb32;	unsigned long offset_x = 0;	unsigned long offset_y = 0;	int end_y = MIN(FB_HEIGHT, height - src_offset_y);	int end_x = MIN(FB_WIDTH, width - src_offset_x);	offset_x = src_offset_x * bpp/8;	offset_y = src_offset_y * width * bpp/8;	src += offset_y;	if (bpp==16) {		for (y=0;y<end_y;y++)			memcpy(dest+y*FB_WIDTH*2, src+y*width*2+offset_x, end_x*2);	} else {		for (y=0; y<end_y;y++) {			rgb32 = (unsigned long*)(src + y * width * 4 + offset_x);			rgb16 = (unsigned short*)(dest + y * FB_WIDTH * 2);			for (x=0;x<end_x;x++) {				*rgb16 = ((((*(rgb32)>>16)&0xff) >> 3) << 11) // red						| ((((*(rgb32)>>8)&0xff) >> 2) << 5)  // green						| ((((*(rgb32)>>0)&0xff) >> 3) << 0) ; // blue				rgb32 ++;				rgb16 ++;			}		}	}}static inline void print_fps(struct timeval *s, struct timeval *e){	unsigned long time;	unsigned long sec;	unsigned long usec;	int fps = 0;	sec = e->tv_sec - s->tv_sec;	if (e->tv_usec > s->tv_usec)		usec = e->tv_usec - s->tv_usec;	else {		usec = e->tv_usec + 1000000 - s->tv_usec;			sec--;	}	time = sec * 1000 + (usec+1) / 1000;	fps = 1000 / (time / 30);	printf("%d fps\n", fps);}int main(int argc, char *argv[]){	char rgb[640*480*4]; // MAX	unsigned int frames = 0;	struct timeval start_tv, end_tv;	struct timezone tz;	int width, height, bpp;	int src_img;	int i;	if (argc != 5) {		printf("%s <width> <height> <bpp> <src_image> \n", argv[0]);		return 0;	}//	camif_cfg.dst_y = width = atoi(argv[1]);//	camif_cfg.dst_x = height = atoi(argv[2]);	width = atoi(argv[1]);	height = atoi(argv[2]);	bpp = atoi(argv[3]);	if ((bpp!=16) && (bpp!=32)) {		printf("BPP must be 16 or 32\n");		return 0;	}#if 0							//only support RGB16	if (bpp==16)		camif_cfg.dst_type = CAMIF_TYPE_RGB16;	else		camif_cfg.dst_type = CAMIF_TYPE_RGB32;	//not support yet#endif	src_img = atoi(argv[4]);//	camif_cfg.img = src_img;	if(cam_fp) close(cam_fp);	if(fb_fp) close(fb_fp);	if ((cam_fp = cam_init()) < 0)		goto err;#if 1	if ((fb_fp = fb_init()) < 0)		goto err;#endif	printf("cam2fb: %dx%d %dbpp, use %s\n", 			width, height, bpp);/*	printf("displayed window: left-top (%d,%d), width(%d), height(%d)\n", 			x_offset, y_offset, 			MIN(FB_WIDTH, width-x_offset),			MIN(FB_HEIGHT, height-y_offset));*/	fflush(stdout);	fflush(stdout);	sleep(1);//	while(1);#if 0	printf("camera cam_fp    %d\n\r",cam_fp);	printf("%0x\n\r",(('v')<<8)|1);	if (ioctl(cam_fp, ((('v')<<8)|7), &camif_cfg)) 	{		perror("ioctl");		goto err;	}	printf("%s\n\r",&camif_cfg);#endif#if 0	clear(fb);#endif#if 1	//gettimeofday(&start_tv, &tz);#if 0	start_capture(cam_fp);#endif	while (1) {//		if (!read_data(cam_fp, &rgb[0], width, height, bpp))		//memset(rgb, 0, width*height*2);		i=read_data(cam_fp, rgb, width, height, bpp);		//	break;#if 0		start_capture(cam_fp);#endif	#if 1	//	for(i=0;i<240*320*2;i++)	//	rgb[i]=0xFF;		draw(fb, &rgb[0], width, height, bpp, 0, 0);#endif		frames ++;				/*if ((frames % 30) == 0) {			gettimeofday(&end_tv, &tz);			print_fps(&start_tv, &end_tv);			gettimeofday(&start_tv, &tz);		}*/	}#endiferr:	if (cam_fp)		close(cam_fp);#if 0	if (fb)		munmap(fb, FB_WIDTH*FB_HEIGHT*2);	if (fb_fp)		close(fb_fp);#endif	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美剧在线免费观看网站| 9久草视频在线视频精品| 国产精品久久久久久久蜜臀| 久久亚洲捆绑美女| 久久色在线观看| 国产亚洲1区2区3区| 久久欧美中文字幕| 国产欧美一区二区三区沐欲 | 国内外成人在线视频| 婷婷成人激情在线网| 爽好久久久欧美精品| 日本成人中文字幕| 国产综合久久久久久久久久久久| 国内精品写真在线观看| 国产99久久精品| 91浏览器在线视频| 91精品婷婷国产综合久久| 欧美不卡一区二区| 国产精品久久久久婷婷二区次| 亚洲欧洲日韩女同| 午夜伊人狠狠久久| 国产揄拍国内精品对白| 欧美午夜精品久久久久久孕妇 | 午夜精品一区二区三区免费视频| 亚洲成av人影院在线观看网| 免费日本视频一区| 国产一区日韩二区欧美三区| gogo大胆日本视频一区| 欧美三区免费完整视频在线观看| 欧美一级艳片视频免费观看| 国产欧美日韩久久| 亚洲国产欧美在线| 国产精品一区免费视频| 一本久久综合亚洲鲁鲁五月天| 欧美日韩国产另类不卡| 国产日韩欧美精品一区| 亚洲国产一区二区三区青草影视| 美国十次了思思久久精品导航| 懂色av一区二区三区蜜臀| 欧美色综合影院| 国产嫩草影院久久久久| 肉丝袜脚交视频一区二区| 丁香另类激情小说| 日韩一区二区三| 亚洲乱码国产乱码精品精98午夜 | 亚洲午夜私人影院| 韩国精品一区二区| 欧美日韩的一区二区| 亚洲国产电影在线观看| 三级在线观看一区二区| 91麻豆蜜桃一区二区三区| 日韩女优av电影| 亚洲国产精品久久不卡毛片| 成人一级黄色片| 久久女同互慰一区二区三区| 日韩va亚洲va欧美va久久| 日本道精品一区二区三区 | 日韩美女视频一区| 精品在线亚洲视频| 欧美乱妇15p| 亚洲国产精品久久人人爱| av一二三不卡影片| 欧美国产视频在线| 国产精品综合二区| 精品国产乱码久久久久久闺蜜| 国产在线精品免费| 欧美大尺度电影在线| 亚洲一区欧美一区| 在线亚洲精品福利网址导航| 中文字幕在线一区| eeuss鲁片一区二区三区| 欧美激情中文不卡| 成人app下载| 日韩一区有码在线| 成人精品视频一区| 中文字幕在线观看不卡视频| 国产99久久久久久免费看农村| 久久久久久黄色| 国产精品综合av一区二区国产馆| 精品国产一区二区精华| 韩国一区二区在线观看| 久久新电视剧免费观看| 国产乱人伦精品一区二区在线观看| 欧美va亚洲va| 国产在线日韩欧美| 欧美国产日产图区| 99在线视频精品| 有坂深雪av一区二区精品| 日本精品一级二级| 亚洲第一会所有码转帖| 日韩欧美视频一区| 国产麻豆精品一区二区| 国产精品久久久久一区二区三区共| 成人精品免费视频| 一区二区不卡在线视频 午夜欧美不卡在| 99国产精品国产精品毛片| 亚洲综合丁香婷婷六月香| 欧美日韩亚洲国产综合| 麻豆成人免费电影| 国产精品丝袜91| 色噜噜狠狠一区二区三区果冻| 亚欧色一区w666天堂| 日韩欧美国产系列| 成人免费高清视频在线观看| 亚洲午夜久久久久久久久电影网| 911精品产国品一二三产区| 国产美女精品人人做人人爽| 亚洲天堂成人在线观看| 在线成人av影院| 高清成人在线观看| 天天综合色天天综合| 国产日韩欧美激情| 欧美精品1区2区3区| 国产成人午夜精品5599| 亚洲国产综合视频在线观看| 亚洲精品在线免费观看视频| 色噜噜久久综合| 久久99精品国产麻豆不卡| 亚洲天堂网中文字| 精品福利一区二区三区免费视频| 色视频成人在线观看免| 国产综合色视频| 三级成人在线视频| 亚洲人成精品久久久久久| 精品福利视频一区二区三区| 欧美日免费三级在线| 国产成人欧美日韩在线电影| 日韩精品一区第一页| 国产精品久久看| 精品成人免费观看| 欧美高清激情brazzers| av福利精品导航| 国产精品亚洲专一区二区三区| 午夜精品久久久久久久99水蜜桃| ●精品国产综合乱码久久久久| 欧美一级理论片| 欧美精品久久天天躁| 一本色道综合亚洲| 972aa.com艺术欧美| 国产91精品一区二区| 国内成+人亚洲+欧美+综合在线| 国产精品一区二区三区乱码| 亚洲成人av一区二区| 亚洲毛片av在线| 中文字幕亚洲不卡| 欧美国产禁国产网站cc| 久久青草欧美一区二区三区| 日韩欧美一级二级| 欧美成人一区二区| 日韩三级中文字幕| 日韩欧美成人激情| 日韩欧美资源站| 欧美电影精品一区二区| 91精品欧美综合在线观看最新| 欧美蜜桃一区二区三区| 欧美视频在线播放| 在线电影国产精品| 欧美一区二区在线免费播放| 欧美一区二区三区视频在线观看| 在线不卡一区二区| 日韩欧美在线不卡| www久久精品| 国产日韩精品久久久| 国产嫩草影院久久久久| 中文字幕中文字幕一区二区| 日韩理论电影院| 婷婷中文字幕综合| 蜜桃视频一区二区三区在线观看| 久久精品国产免费看久久精品| 狠狠色综合日日| 成人视屏免费看| 欧美综合久久久| 91精品国产福利| 久久亚洲精华国产精华液| 国产精品久久久久四虎| 亚洲一区欧美一区| 六月婷婷色综合| av激情成人网| 91精品国产综合久久精品性色| 欧美成人性战久久| 一区在线播放视频| 日韩福利视频网| 懂色av中文一区二区三区| 在线精品视频一区二区三四| 欧美一卡二卡三卡| 欧美国产综合一区二区| 亚洲一区二区三区四区中文字幕| 青青草精品视频| www.66久久| 日韩欧美一区二区视频| 国产精品人人做人人爽人人添| 夜夜精品浪潮av一区二区三区| 青草国产精品久久久久久| 波多野结衣视频一区| 欧美肥妇bbw| 国产精品不卡在线| 九九视频精品免费| 日本乱人伦aⅴ精品| 久久久99精品免费观看| 亚洲成人动漫一区|