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

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

?? main.c~

?? 用于arm9以上平臺
?? C~
字號:
/* * *   (c) 2005-2010 threewater <threewater@up-tech.com> * */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <math.h>#include <errno.h>#include <fcntl.h>#include <string.h>#include <signal.h>#include <pthread.h>#include <sys/types.h>#include <sys/time.h>#include <sys/ioctl.h>#include <sys/stat.h>#include <sys/mman.h>#include "fb.h"#include "videodev.h"//#include "grab-ng.h"#define _GNU_SOURCE#include <getopt.h>#define BMP      "/mnt/xx/image%d.bmp"
struct capture_info{	int width, height;	char device[256];};struct fb_dev{	//for frame buffer	int fb;	void *fb_mem;	//frame buffer mmap	int fb_width, fb_height, fb_line_len, fb_size;	int fb_bpp;	//src must be RGB24 format	void (*fb_draw)(struct fb_dev *fbdev, void* src, int x, int y, int width, int height);};static char *default_framebuffer="/dev/fb0";static struct capture_info capinfo={320, 240, "/dev/video0"};static struct fb_dev fbdev;static char* fb_dev_name=NULL;#define NUM_CAPBUFFER	32void fb_draw16bpp(struct fb_dev *fbdev, void* src, int x, int y, int width, int height){	int i, j;	int fb_line_len = fbdev->fb_line_len;	__u8 *psrc= (__u8*)src;	__u16* pdsc = (__u16*)fbdev->fb_mem;	__u16 tmp, tmp1;	pdsc+=y*fb_line_len/2 + x;	for(i=0; i<height; i++){		for(j=0; j<width; j++){			tmp = (*psrc)>>3;		tmp<<=11;	*psrc++;			tmp1 = (*psrc)>>2;	tmp|=(tmp1<<5);	*psrc++;			tmp |= (*psrc)>>3;	*psrc++;			pdsc[j] = tmp;		}		pdsc+=fb_line_len/2;	}}void fb_draw12bpp(struct fb_dev *fbdev, void* src, int x, int y, int width, int height){	int i, j;	int fb_line_len = fbdev->fb_line_len;	__u8 *psrc= (__u8*)src;	__u8* pdsc = (__u8*)fbdev->fb_mem;	__u8 tmp;	//fixed me! x must be even	pdsc+=y*fb_line_len + x*3/2;	for(i=0; i<height; i++){		for(j=0; j<width*3/2;){			tmp = psrc[2]&0xf0;			tmp |=(psrc[1]>>4);			pdsc[j++] = tmp;			tmp = psrc[0]&0xf0;			tmp |=(psrc[5]>>4);			pdsc[j++] = tmp;			tmp = psrc[4]&0xf0;			tmp |=(psrc[3]>>4);			pdsc[j++] = tmp;			psrc+=6;		}		pdsc+=fb_line_len;	}}int framebuffer_open(void){	int fb;	struct fb_var_screeninfo fb_vinfo;	struct fb_fix_screeninfo fb_finfo;		if (!fb_dev_name && !(fb_dev_name = getenv("FRAMEBUFFER")))		fb_dev_name=default_framebuffer;	fb = open (fb_dev_name, O_RDWR);	if(fb<0){		printf("device %s open failed\n", fb_dev_name);		return -1;	}		if (ioctl(fb, FBIOGET_VSCREENINFO, &fb_vinfo)) {		printf("Can't get VSCREENINFO: %s\n", strerror(errno));		close(fb);		return -1;	}	if (ioctl(fb,FBIOGET_FSCREENINFO, &fb_finfo)) {		printf("Can't get FSCREENINFO: %s\n", strerror(errno));		return 1;	}	fbdev.fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length +		fb_vinfo.blue.length + fb_vinfo.transp.length;	fbdev.fb_width = fb_vinfo.xres;	fbdev.fb_height = fb_vinfo.yres;	fbdev.fb_line_len = fb_finfo.line_length;	fbdev.fb_size = fb_finfo.smem_len;	printf("frame buffer: %dx%d,  %dbpp, 0x%xbyte\n", 		fbdev.fb_width, fbdev.fb_height, fbdev.fb_bpp, fbdev.fb_size);	switch(fbdev.fb_bpp){	case 16:		fbdev.fb_draw = fb_draw16bpp;		break;	case 12:		fbdev.fb_draw = fb_draw12bpp;		break;	default:		printf("Can't support %d bpp draw\n", fbdev.fb_bpp);		return -1;	}	fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);	if(fbdev.fb_mem==NULL || (int)fbdev.fb_mem==-1){		fbdev.fb_mem=NULL;		printf("mmap failed\n");		close(fb);		return -1;	}		fbdev.fb=fb;	memset (fbdev.fb_mem, 0x0, fbdev.fb_size);	return 0;}void framebuffer_close(){	if(fbdev.fb_mem){		munmap(fbdev.fb_mem, fbdev.fb_size);		fbdev.fb_mem=NULL;	}	if(fbdev.fb){		close(fbdev.fb);		fbdev.fb=0;	}}int capture(void){    FILE *  fp;       char file[32];
     unsigned char *        buffer;
     int           i,size;        unsigned char *img="";              i=1;         char filename[32];	void* caphandle;	struct ng_vid_driver *cap_driver = &v4l_driver;	struct ng_video_fmt fmt;   //memset(buf,0,size*num*sizeof(struct uyvy));	fmt.fmtid = VIDEO_BGR24;	fmt.width = capinfo.width;	fmt.height = capinfo.height;	if(framebuffer_open()<0){		return -1;	}printf("%s\n",capinfo.device);	caphandle=cap_driver->open(capinfo.device);                 	if(!caphandle){		printf("failed to open video for linux interface!\n");		return -1;	}int d=cap_driver->setformat(caphandle, &fmt);	if(d){               		printf("failed to set video format!\n");		return -1;	}////----------	cap_driver->startvideo(caphandle, 25,  NUM_CAPBUFFER);	{		struct ng_video_buf* pvideo_buf;		int x, y, width, height;		int diff_width, diff_height;		diff_width = fbdev.fb_width - fmt.width;		diff_height = fbdev.fb_height - fmt.height;		if(diff_width>0){			x =  diff_width/2;			width = fmt.width;		}		else{			x = 0;			width = fbdev.fb_width;		}		if(diff_height>0){			y =  diff_height/2;			height = fmt.height;		}		else{			y = 0;			height = fbdev.fb_height;		}		//begin capture		for(;;){			pvideo_buf=cap_driver->nextframe(caphandle);			fbdev.fb_draw(&fbdev, pvideo_buf->data, x, y, width, height);                    if(i<=9)  {            sprintf(filename,BMP,i);                  printf("get %s\n",filename);              if(fp = fopen(filename, "wb"))                  {                          img = pvideo_buf->data;         //返回所采集的數據的起始地址            fprintf(fp,"P6\n%d %d\n255\n",width,height);                   fwrite(img,width,3*height,fp);                   fclose(fp);                   i++;    }                             }			ng_release_video_buf(pvideo_buf);		}	framebuffer_close();	cap_driver->stopvideo(caphandle);	cap_driver->close(caphandle);	return 0;}}const char*program_name; void print_usage (FILE*stream,int exit_code){ 	fprintf (stream, "Usage:%s options [ inputfile ....]\n",program_name); 	fprintf (stream, "-h --help Display this usage information.\n"		"-d --device <video device>.\n "		"-f --framebuffer <frame buffer device>.\n "		"-v --verbose <n>.\n "		"-s --size <320:240>\n");	exit (exit_code); printf("video %s caputure: %dx%d\n", capinfo.device, capinfo.width, capinfo.height);} static int verbose =0;int main (int argc,char*argv []) { 	int  next_option; 	const char*const short_options ="hd:v:f:s:";	const struct option long_options [] ={		{"help",0,NULL,'h' }, 		{"device",1,NULL,'d' }, 		{"framebuffer",1,NULL,'f' }, 		{"verbose",1,NULL,'v' }, 		{"size",0,NULL,'s' }, 		{NULL,0,NULL,0 }}; 	const char*output_filename =NULL; 	program_name =argv [0]; 	do { 		next_option =getopt_long (argc,argv,short_options, long_options,NULL);                 printf(" %d\n",next_option );               //next_option='d';		switch (next_option) 		{ 		case 'h':/*-h or --help */ 			print_usage (stdout,0); 		case 's':/*-s or --size */ 			//ip =optarg; 			sscanf(optarg, "%d:%d", &(capinfo.width), &(capinfo.height));			break; 		case 'f':/*-f or --framebuffer */ 			fb_dev_name = optarg;			break; 		case 'd':/*-b or --device */ 			strcpy(capinfo.device, optarg);			break; 		case 'v':/*-v or --verbose */ 			sscanf(optarg, "%d", &verbose);			ng_debug = verbose;			break; 		case '?':/*The user specified an invalid option.*/ 			print_usage (stderr,1); 		case -1:/*Done with options.*/ 			break; 		default:/*Something else:unexpected.*/ 			print_usage (stderr,1); 		}	}while (next_option !=-1); 	/*The main program goes here.*/     printf(" %c\n",next_option );	printf("video %s caputure: %dx%d\n", capinfo.device, capinfo.width, capinfo.height);	return capture(); } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美不卡在线| 日本韩国欧美国产| www.欧美亚洲| 91精品国产一区二区人妖| 欧美吻胸吃奶大尺度电影| 中文天堂在线一区| 另类的小说在线视频另类成人小视频在线| 国产成人aaa| 日韩欧美卡一卡二| 亚洲福利国产精品| 99re热这里只有精品视频| 精品国产一区二区三区不卡 | 91精品国产综合久久精品图片| 欧美韩国一区二区| 久久黄色级2电影| 在线观看亚洲专区| 亚洲欧洲制服丝袜| 国产成人免费高清| 2023国产精品| 久久av中文字幕片| 日韩一级欧美一级| 美女久久久精品| 欧美老肥妇做.爰bbww视频| 亚洲乱码国产乱码精品精可以看 | 56国语精品自产拍在线观看| 亚洲gay无套男同| 欧美日韩国产综合久久| 国产风韵犹存在线视精品| 视频一区二区三区入口| 国产一区二区三区免费| 亚洲成va人在线观看| 久久婷婷一区二区三区| 欧美日韩国产一区二区三区地区| 乱一区二区av| 久久精品国产色蜜蜜麻豆| 亚洲色欲色欲www| 国产三级三级三级精品8ⅰ区| 一区二区三区美女| 99re热这里只有精品免费视频| 亚洲国产精品成人综合 | av日韩在线网站| 国产精品情趣视频| av亚洲产国偷v产偷v自拍| 中文字幕亚洲成人| 在线免费视频一区二区| 亚洲一区二区欧美激情| 欧美日韩国产精品自在自线| 三级一区在线视频先锋| 欧美一区二区三区日韩| 老鸭窝一区二区久久精品| 精品国产电影一区二区| 丰满少妇久久久久久久| 18成人在线观看| 欧美午夜电影网| 激情另类小说区图片区视频区| 久久一区二区三区国产精品| 国产福利一区二区三区| 亚洲摸摸操操av| 欧美一区二区三区人| 国产91精品久久久久久久网曝门 | 久久久久久免费毛片精品| **欧美大码日韩| 欧美肥妇毛茸茸| 精品亚洲aⅴ乱码一区二区三区| 久久精品视频在线免费观看| 成人午夜视频网站| 五月天一区二区| 国产日产欧美精品一区二区三区| 一本久道中文字幕精品亚洲嫩| 日韩中文字幕区一区有砖一区 | 国产精品一区二区91| 中文字幕一区视频| 欧美一级理论片| 成人免费观看男女羞羞视频| 午夜精品123| 亚洲国产精品黑人久久久| 欧美日本在线播放| k8久久久一区二区三区| 天堂影院一区二区| 亚洲天堂2014| 精品国产123| 在线视频欧美精品| 高清不卡一区二区在线| 亚洲电影在线播放| 中文字幕在线不卡国产视频| 日韩一级免费观看| 在线观看av一区| 成人av先锋影音| 精油按摩中文字幕久久| 亚洲午夜免费福利视频| 国产精品第四页| 精品国内二区三区| 91精品国产综合久久久久久漫画| www.日韩大片| 成人在线视频首页| 国产一区三区三区| 秋霞av亚洲一区二区三| 亚洲最色的网站| 国产精品久久久久久久久免费桃花 | 日韩一区精品视频| 中文字幕中文字幕一区二区| 久久一二三国产| 日韩欧美的一区| 欧美精品久久99| 精品视频免费看| 99精品国产一区二区三区不卡| 国产成人自拍高清视频在线免费播放| 天天免费综合色| 亚洲va韩国va欧美va精品| 亚洲最新视频在线观看| 自拍偷拍欧美精品| 亚洲视频一区二区在线观看| 欧美韩国日本综合| 国产亚洲精品超碰| 亚洲精品在线三区| 精品久久久三级丝袜| 精品噜噜噜噜久久久久久久久试看| 欧美日韩亚洲综合一区| 欧美日韩高清一区二区| 欧美日韩国产精品成人| 7777精品久久久大香线蕉| 精品视频色一区| 欧美精品久久久久久久久老牛影院| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产乱码精品一品二品| 国产成人综合亚洲91猫咪| 成人午夜电影网站| 99久久精品99国产精品| 97se亚洲国产综合自在线不卡| 99精品视频一区二区| 色老汉一区二区三区| 欧美日韩高清在线| 欧美v国产在线一区二区三区| www激情久久| 国产精品色哟哟网站| 亚洲日本va在线观看| 午夜不卡在线视频| 麻豆国产一区二区| 成人国产精品免费网站| 91蝌蚪国产九色| 欧美猛男超大videosgay| 欧美日韩精品一区视频| 精品国产免费一区二区三区香蕉| 精品88久久久久88久久久| 中文字幕欧美日本乱码一线二线| 综合色天天鬼久久鬼色| 亚洲大片免费看| 久久成人精品无人区| 99国产精品一区| 欧美一级午夜免费电影| 欧美韩日一区二区三区四区| 亚洲成人福利片| 精品一区二区三区蜜桃| 色欧美片视频在线观看在线视频| 7777精品伊人久久久大香线蕉超级流畅| 精品盗摄一区二区三区| 亚洲男同性恋视频| 理论片日本一区| 欧美亚洲国产一区在线观看网站| 日韩一区二区三区三四区视频在线观看| 国产拍欧美日韩视频二区| 亚洲成av人片一区二区三区| 国产原创一区二区三区| 欧美日韩高清一区二区三区| 日本一区免费视频| 男女视频一区二区| 色综合久久久久综合99| 国产欧美一区二区精品婷婷| 日韩精品亚洲专区| 成人国产免费视频| 久久伊99综合婷婷久久伊| 午夜精品福利一区二区三区蜜桃| 成人免费观看视频| 日韩精品一区二区三区蜜臀| 亚洲综合免费观看高清在线观看| 国产丶欧美丶日本不卡视频| 欧美精品久久久久久久久老牛影院| 国产精品国产精品国产专区不蜜| 乱一区二区av| 91麻豆精品国产91久久久久 | 午夜不卡av免费| 91年精品国产| 国产精品久久久久四虎| 激情综合色播激情啊| 日韩写真欧美这视频| 午夜精品在线看| 在线一区二区观看| 亚洲靠逼com| 99久久亚洲一区二区三区青草| 国产天堂亚洲国产碰碰| 久久99精品国产麻豆婷婷| 91精品婷婷国产综合久久竹菊| 亚洲国产毛片aaaaa无费看| 在线视频国内自拍亚洲视频| 亚洲欧美aⅴ...| 在线视频观看一区| 一区二区三区.www| 欧美体内she精高潮| 午夜视黄欧洲亚洲| 欧美军同video69gay|