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

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

?? docapture3.c

?? 一個攝像頭Framebuffer應用程序在ARM平臺上的移植
?? C
字號:
/* * MX21 OV9640 Application * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * Copyright (C) 2004 Motorola Semiconductors Hong Kong. * */#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <stdio.h>#include <sys/ioctl.h>#include <fcntl.h>#include <linux/fb.h>#include <asm/mman.h>#include <sys/mman.h>#include <string.h>#include <unistd.h>#include "csi.h"#include "csilib.h"#include "ov9640.h"#include "ov9640lib.h"#include "camera.h"typedef struct{	int width;	int height;	int format;	int bytes_per_pixel;} IMG_SPEC;//local functionstatic void rgb_rotate(unsigned int BufIn, unsigned int BufOut, int imgH, int imgV, int dir, int out_stride);void ov9640_get_config(OV9640_CFG * _cfg, FILE * _fp);//16-bit rotation//1=clockwise, -1=anticlockwise, 0=no rotstatic void rgb_rotate(unsigned int BufIn, unsigned int BufOut, int imgH, int imgV, int dir, int out_stride){	int v, h, k;	unsigned short * _dataIn = (unsigned short *)BufIn;	unsigned short * _dataOut = (unsigned short *)BufOut;	switch(dir)	{		case 1:		{			k = 0;			for(h = 0; h < imgH; h ++)			{				for(v = imgV - 1; v >= 0; v --)				{					_dataOut[k] = _dataIn[v * imgH + h];					k ++;				}			}			break;		}		case -1:		{			k = 0;			for(h = imgH - 1; h >= 0; h --)			{				for(v = 0; v < imgV; v ++)				{					_dataOut[k] = _dataIn[v * imgH + h];					k ++;				}				_dataOut += (out_stride - imgV);			}			break;		}		case 0:		{		//provide the effect of line stride			for(v = 0; v < imgV; v ++)			{				memcpy(_dataOut, _dataIn, imgH * 2);				_dataIn += imgH;				_dataOut += out_stride;			}			break;		}	}		return;}/*//read sensor control file//modify according to control filevoid ov9640_get_config(OV9640_CFG * _cfg, FILE * _fp){	char buf[200];	memset(_cfg, 0, sizeof(OV9640_CFG));	if(_fp)	{		fgets(buf, sizeof(buf), _fp);		if(!strncmp(buf, "ov9640", 6))		{			printf("ov9640: reading control file\n");						fgets(buf, sizeof(buf), _fp);			_cfg->color_format = strtoul(buf, NULL, 0);						fgets(buf, sizeof(buf), _fp);			_cfg->vert_mirror = strtoul(buf, NULL, 0);						fgets(buf, sizeof(buf), _fp);			_cfg->hori_mirror = strtoul(buf, NULL, 0);						fgets(buf, sizeof(buf), _fp);			_cfg->out_width = strtoul(buf, NULL, 0);						fgets(buf, sizeof(buf), _fp);			_cfg->out_height = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->test_pattern_enable = strtoul(buf, NULL, 0);						fgets(buf, sizeof(buf), _fp);			_cfg->gamma = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->sharpening = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->colorsat = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->awb_left = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->awb_right = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->awb_top = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->awb_bottom = strtoul(buf, NULL, 0);					fgets(buf, sizeof(buf), _fp);			_cfg->fps = strtoul(buf, NULL, 0);			fgets(buf, sizeof(buf), _fp);			_cfg->afc_freq = strtoul(buf, NULL, 0);			fgets(buf, sizeof(buf), _fp);			_cfg->capture_width = strtoul(buf, NULL, 0);			fgets(buf, sizeof(buf), _fp);			_cfg->capture_height = strtoul(buf, NULL, 0);		}	}	printf("\nOV9640 CONFIGURATION\n\n");		printf("color_format = %d\n", _cfg->color_format);	printf("vert_mirror = %d\n", _cfg->vert_mirror);	printf("hori_mirror = %d\n", _cfg->hori_mirror);	printf("out_width = %d\n", _cfg->out_width);	printf("out_height = %d\n", _cfg->out_height);	printf("test_pattern_enable = %d\n", _cfg->test_pattern_enable);	printf("gain_green1 = %f\n", (double)_cfg->gain_green1 / SCALEFAC);	printf("gain_blue = %f\n", (double)_cfg->gain_blue / SCALEFAC);	printf("gain_red = %f\n", (double)_cfg->gain_red / SCALEFAC);	printf("gain_green2 = %f\n", (double)_cfg->gain_green2 / SCALEFAC);	printf("gain_global = %f\n", (double)_cfg->gain_global / SCALEFAC);	printf("gamma = %f\n", (double)_cfg->gamma / SCALEFAC);	printf("sharpening = %d%%\n", _cfg->sharpening);	printf("colorsat = %d%%\n", _cfg->colorsat);	printf("awb_left = %d\n", _cfg->awb_left);	printf("awb_right = %d\n", _cfg->awb_right);	printf("awb_top = %d\n", _cfg->awb_top);	printf("awb_bottom = %d\n", _cfg->awb_bottom);	printf("fps = %d\n", _cfg->fps);	printf("afc_freq = %d\n", _cfg->afc_freq);	printf("capture_width = %d\n", _cfg->capture_width);	printf("capture_height = %d\n", _cfg->capture_height);	printf("\n");		return;}*///camera main func//handles polling, dma & prpint main(int argc, char *argv[]){#define LCD_WIDTH	240#define ROTATION	-1#define READ_MODE_PRP	0#define READ_MODE_POLL	1	char _tbuf[640*480*2];	int g_fd_csi = 0;	IMG_SPEC img_spec;	OV9640_CFG ov9640_cfg;	CSI_CFG csi_cfg;	FILE * _fp_ov9640_cfg;	char * _file_name_sensor;	int read_mode;		int fb;	struct fb_var_screeninfo vinfo;	int screensize;	//unsigned int *_tbuf, *_fbuf;	int fr = 0;	if(argc != 3)	{		printf( "Camera application for OV9640 version 0.1\n"			"usage: doCapture3 [read mode] [sensor control file]\n"			"  - read mode          : p=prp, o=poll\n"			"  - sensor control file: contains sensor config\n");		return 0;	}	else	{		if(strcmp(argv[1], "p") == 0)			read_mode = READ_MODE_PRP;		else if(strcmp(argv[1], "o") == 0)			read_mode = READ_MODE_POLL;		_file_name_sensor = argv[2];	}printf("%s: %d\n",__FUNCTION__,__LINE__);//csi config	csi_open();printf("%s: %d\n",__FUNCTION__,__LINE__);	switch(read_mode)	{		case READ_MODE_PRP:				csi_select_config(TIMING_IMAGIC_RGB_PRP, &csi_cfg);			break;		case READ_MODE_POLL:			csi_select_config(TIMING_IMAGIC_RGB_POLL, &csi_cfg);			break;	}	printf("%s: %d\n",__FUNCTION__,__LINE__);        csi_open();	csi_config(&csi_cfg);printf("%s: %d\n",__FUNCTION__,__LINE__);	csi_dump_config();printf("%s: %d\n",__FUNCTION__,__LINE__);//sensor config	ov9640_open();printf("%s: %d\n",__FUNCTION__,__LINE__);	ov9640_i2c_test();printf("%s: %d\n",__FUNCTION__,__LINE__);	ov9640_select_config(OV9640_RGB_QVGA, &ov9640_cfg);printf("%s: %d\n",__FUNCTION__,__LINE__);	_fp_ov9640_cfg = fopen(_file_name_sensor, "r");printf("%s: %d\n",__FUNCTION__,__LINE__);	ov9640_get_config(&ov9640_cfg, _fp_ov9640_cfg);printf("%s: %d\n",__FUNCTION__,__LINE__);	fclose(_fp_ov9640_cfg);printf("%s: %d\n",__FUNCTION__,__LINE__);	ov9640_config(&ov9640_cfg);printf("%s: %d\n",__FUNCTION__,__LINE__);		img_spec.width = ov9640_cfg.out_width;	img_spec.height = ov9640_cfg.out_height;	img_spec.bytes_per_pixel = 2;	printf("%s: %d\n",__FUNCTION__,__LINE__);printf("csi_cfg.prp_if_en=%d\n",csi_cfg.prp_if_en);	if(csi_cfg.prp_if_en == 0)	{	//csi-prp link	//nothing to do	}//	else if(csi_cfg.dma_en)//	{//	//support dma here//	//most of time prp is used instead, dma is not useful and not implemented//	}	else	{	//polling	//write data to frame buffer//		if ((fb = open("/dev/fb0", O_RDWR)) < 0)		if ((fb = open("/tmp/fb", O_RDWR|O_CREAT)) < 0)		{			printf("doCapture3: cannot open fb file!\n");			exit(-1);		}		/*if( ioctl(fb,FBIOGET_VSCREENINFO,&vinfo) )		{			printf("Error reading variable information\n");			exit(2);		}*/printf("%s: %d\n",__FUNCTION__,__LINE__);		screensize = vinfo.xres*vinfo.yres*vinfo.bits_per_pixel / 8;		//_fbuf = (unsigned int *)mmap(NULL, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);		//_tbuf = (unsigned int *)malloc(img_spec.width * img_spec.height * img_spec.bytes_per_pixel);	printf("%s: %d\n",__FUNCTION__,__LINE__);//		while(1)//		{//			csi_read(_tbuf, img_spec.width * img_spec.height * img_spec.bytes_per_pixel);//			rgb_rotate((unsigned int)_tbuf, (unsigned int)_fbuf, img_spec.width, img_spec.height, ROTATION, LCD_WIDTH);printf("%s: %d\n",__FUNCTION__,__LINE__);			//csi_read(_tbuf, img_spec.width * img_spec.height * img_spec.bytes_per_pixel);		        read(g_fd_csi, _tbuf, img_spec.width * img_spec.height * img_spec.bytes_per_pixel);			write(fb, _tbuf, img_spec.width * img_spec.height * img_spec.bytes_per_pixel);			//perror("csi read");			//fr ++;			//if(!(fr % 100))				//printf("fr %d\n", fr);//		}	         printf("%s: %d\n",__FUNCTION__,__LINE__);			}	close(fb);	ov9640_close();	csi_close();	printf("doCapture3 completed\n");		return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合在线观看| av中文字幕一区| 国产精品一线二线三线| 色综合久久综合中文综合网| 制服丝袜亚洲网站| 成人欧美一区二区三区视频网页 | 国产精品入口麻豆原神| 亚洲大片免费看| 国产不卡免费视频| 欧美一区二区性放荡片| 亚洲精品国产一区二区三区四区在线| 老司机精品视频导航| 日本韩国精品在线| 国产网红主播福利一区二区| 日韩精品亚洲专区| 在线观看91视频| 中文字幕一区二区在线播放| 国产美女在线精品| 欧美成人午夜电影| 偷拍一区二区三区| 欧美色图片你懂的| 夜夜嗨av一区二区三区网页| 99国产精品国产精品毛片| 久久亚洲二区三区| 精彩视频一区二区| 欧美一二三四区在线| 夜夜嗨av一区二区三区| 91原创在线视频| 国产精品久久久久一区 | 国产一二精品视频| 欧美一级日韩免费不卡| 午夜视频一区在线观看| 欧美色图激情小说| 亚洲高清视频在线| 欧美日韩成人综合| 午夜视频一区二区| 91精品欧美福利在线观看| 天天综合色天天| 91精选在线观看| 理论电影国产精品| 久久久青草青青国产亚洲免观| 寂寞少妇一区二区三区| xfplay精品久久| 国产jizzjizz一区二区| 国产精品国产三级国产aⅴ无密码| 粉嫩av亚洲一区二区图片| 国产精品视频九色porn| 91麻豆成人久久精品二区三区| 一区二区三区在线影院| 宅男噜噜噜66一区二区66| 日本美女一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产成人精品在线看| 国产日韩欧美高清在线| 94色蜜桃网一区二区三区| 亚洲综合成人在线| 日韩欧美国产小视频| 国产在线精品一区二区夜色| 欧美国产日韩亚洲一区| 欧美这里有精品| 美女精品一区二区| 国产精品久久久久桃色tv| 色一区在线观看| 日本中文字幕不卡| 国产亚洲精品久| 一本大道av伊人久久综合| 亚洲成人精品在线观看| 久久先锋资源网| 色94色欧美sute亚洲13| 麻豆国产精品777777在线| 欧美激情资源网| 欧美日韩一区三区四区| 国产黄人亚洲片| 亚洲国产成人高清精品| 久久麻豆一区二区| 久久精品亚洲精品国产欧美kt∨ | 波多野结衣中文一区| 亚洲一区二区av电影| 精品国产乱码久久久久久免费| 一本一本久久a久久精品综合麻豆| 日韩av一区二区三区| 国产精品久久久久久亚洲伦| 91精品国产色综合久久不卡蜜臀 | 尤物av一区二区| 日韩片之四级片| 色婷婷久久一区二区三区麻豆| 久久精品99国产精品| 一区二区三区不卡视频| 国产欧美1区2区3区| 欧美一级午夜免费电影| 一本一道综合狠狠老| 国产福利一区二区| 毛片一区二区三区| 亚洲不卡在线观看| 亚洲天堂成人在线观看| 国产日产欧美一区二区视频| 日韩三级高清在线| 欧美色老头old∨ideo| 91婷婷韩国欧美一区二区| 国产自产视频一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 国产精品一二二区| 免费成人深夜小野草| 午夜精品久久久| 一区二区三区日本| 国产精品国产三级国产aⅴ入口| www国产精品av| 欧美一级搡bbbb搡bbbb| 欧美精品久久一区| 欧美三级乱人伦电影| 一本色道久久综合亚洲精品按摩| 成人美女视频在线观看18| 国产酒店精品激情| 狠狠狠色丁香婷婷综合激情 | 国产三级三级三级精品8ⅰ区| 4438x亚洲最大成人网| 欧美无砖专区一中文字| 日本国产一区二区| 日本韩国欧美国产| 精品视频999| 欧美精品自拍偷拍| 欧美精品欧美精品系列| 3751色影院一区二区三区| 91麻豆精品国产自产在线| 欧美精品丝袜中出| 日韩欧美亚洲国产精品字幕久久久| 91精品国产一区二区| 日韩精品自拍偷拍| 久久九九久久九九| 国产精品电影院| 亚洲综合色区另类av| 亚洲高清中文字幕| 免费成人在线观看视频| 国产麻豆成人传媒免费观看| 91精品国产色综合久久不卡电影| 91精品国产一区二区三区香蕉| 日韩欧美中文字幕制服| 久久婷婷国产综合国色天香| 中文字幕第一区综合| 亚洲精品视频在线观看网站| 亚洲国产另类av| 狠狠色综合色综合网络| 粉嫩av亚洲一区二区图片| 91国偷自产一区二区三区成为亚洲经典 | 亚洲青青青在线视频| 亚洲午夜国产一区99re久久| 奇米精品一区二区三区四区 | 99久久99久久精品免费观看| 日本韩国一区二区三区视频| 欧美视频在线观看一区二区| 日韩欧美一二区| 国产精品久线观看视频| 亚洲一二三四在线观看| 韩国欧美一区二区| 91在线视频网址| 欧美一区二区三区在线观看 | 最新欧美精品一区二区三区| 天天色天天操综合| 国产91露脸合集magnet| 欧美亚洲禁片免费| 国产午夜精品一区二区三区四区| 一区二区三区成人| 韩国女主播成人在线观看| 色综合久久中文字幕综合网| 日韩欧美一级二级| 亚洲综合一区在线| 国产a区久久久| 欧美一级在线视频| 亚洲欧美日韩久久精品| 精品一区二区久久久| 欧洲人成人精品| 国产欧美一区二区三区鸳鸯浴| 爽好多水快深点欧美视频| 成人aa视频在线观看| 欧美第一区第二区| 亚洲国产精品天堂| av不卡免费在线观看| 精品成a人在线观看| 五月天视频一区| 99麻豆久久久国产精品免费 | 亚洲国产精品v| 麻豆91在线播放| 欧美日韩精品一区二区三区四区| 国产精品国产馆在线真实露脸 | 国产精品2024| 日韩欧美国产午夜精品| 亚洲已满18点击进入久久| av中文字幕一区| 国产精品少妇自拍| 国产福利电影一区二区三区| 日韩一区二区免费在线电影| 亚洲大片免费看| 欧美日韩精品一区二区三区| 亚洲精品国产精华液| 成人国产精品免费网站| 亚洲国产精品精华液ab| 国产福利不卡视频| 久久久国产精品午夜一区ai换脸| 久久99精品视频| 欧美videossexotv100|