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

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

?? video_test.c

?? LINUX下使用ZC0301攝像頭的基于v4l1的視頻采集程序
?? C
字號:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <signal.h>
#include <linux/types.h> 
#include <linux/videodev.h>
#include <errno.h>
#include <time.h>
#include <gtk/gtk.h>

#define VIDEO_PALETTE_JPEG 21
#define COLS      320
#define ROWS      240

int cam,size,i,frame,jpeg_size;
struct video_capability cap;
struct video_picture pic;
struct video_window win;
struct video_capture vicap;
struct video_channel vidcan;
struct video_mbuf vidbuf;
struct video_buffer buffer;
struct video_mmap mapbuf;
guchar *bigbuf;
guchar *buf;



GtkWidget *window, *darea;GdkPixbuf* pixbuf;
//on_darea_expose (GtkWidget *widget);
void draw(GtkWidget *widget);void display(window,darea);int get_jpegsize (unsigned char *buf, int insize);
int main (int argc, char *argv[])
{
//-------------------------------------------------------------------
              /* OPEN VIDEO DEVICE */
//-------------------------------------------------------------------		size = (320*240)>>2;
	cam = open("/dev/video0", O_RDWR );
	if (cam<0){printf("ERROR: THERE IS NO CAMERA CONECTED\n");
		exit(-1);}
//--------------------------------------------------------------------
		/* VIDEO CAPABILITIES*/
//---------------------------------------------------------------------
	if (-1==ioctl(cam,VIDIOCGCAP,&cap)){perror("ioctl VIDIOCGCAP");
		exit(-1);}
	printf("------------------------------------\n");
	printf("------------------------------------\n");
	printf("name hola-> %s\n", cap.name);
	printf("type -> %d\n", cap.type);
	printf("channels -> %d\n", cap.channels);
	printf("audios -> %d\n", cap.audios );
	printf("maxwidth -> %d\n", cap.maxwidth );
	printf("maxheight -> %d\n", cap.maxheight);
	printf("minwidth -> %d\n", cap.minwidth );
	printf("minheight -> %d\n", cap.minheight );
	printf("------------------------------------\n");//---------------------------------------------------------------------
	ioctl( cam, VIDIOCGPICT, &pic );
	printf("------------------------------------\n");
	printf("brightness -> %d \n", pic.brightness/256 );
	printf("hue -> %d\n", pic.hue/256);
	printf("colour -> %d\n", pic.colour/256 );
	printf("contrast -> %d \n", pic.contrast/256 );
	printf("whiteness -> %d\n", pic.whiteness/256 );
	printf("depth -> %d\n", pic.depth );
	printf("palette -> %d \n", pic.palette );
	printf("------------------------------------\n");

//-----------------------------------------------------------------------
		/* MAPPING BUFFER */
//------------------------------------------------------------------------
	mapbuf.width = COLS;//初始化過程,對mmap結構賦初值	mapbuf.height = ROWS;	mapbuf.format = VIDEO_PALETTE_JPEG;//設置圖像格式
	if (-1==ioctl(cam,VIDIOCGMBUF,&vidbuf)){perror("ioctl VIDIOCGMBUF"); 
		exit(-1);}
	printf("------------------------------------\n");
	printf("size  -> %d\n",vidbuf.size);
	printf("frames -> %d\n",vidbuf.frames);
	printf("offsets -> %d\n",vidbuf.offsets);
	printf("------------------------------------\n");
	bigbuf = (char *)mmap(0,vidbuf.size, PROT_READ | PROT_WRITE, MAP_SHARED, cam, 0);
//------------------------------------------------------------------------------
		/* CREATE DISPLAY WINDOWS AND IMAGE AREA */
//------------------------------------------------------------------------------

	gtk_init (&argc, &argv);							// Initialize GTK functions.
	gdk_init (&argc, &argv);							// Initialize GDK functions.
	gdk_rgb_init();									// Initialize GDK_RGB functions.
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);					// Create windows.
	darea = gtk_drawing_area_new();							// Create Image area.			 					
//----------------------------------------------------------------------
		    /* SET BUFFERS*/
//----------------------------------------------------------------------		 

	for(frame=0; frame<vidbuf.frames;frame++){					// turn on both of the buffers
		mapbuf.frame = frame;							// to start capture process.
		if (ioctl(cam,VIDIOCMCAPTURE, &mapbuf)<0){				// Now they can store images.
			perror("VIDIOCMCAPTURE");
			exit(-1);}
		}
	frame = 0;

//---------------------------------------------------------------------
		       /* CAPTURING*/
//---------------------------------------------------------------------		
	display(window,darea);								// Call display.
	while (1){
		i = -1;
		while(i<0){
	
			i= ioctl(cam,VIDIOCSYNC, &frame);				// Wait until the actual buffer
			if(i < 0 && errno == EINTR) continue;				// is full. When it happends 
			if (i < 0) {							// it start to capture to	
				perror ("VIDIOCSYNC");					// the other buffer.
				exit(-1);
			}
		break;
	}

	buf = bigbuf + vidbuf.offsets[frame];
	mapbuf.frame = frame;	jpeg_size = get_jpegsize(buf,size);	printf("jpeg_size -- %d \n",jpeg_size);
	draw(darea);
	//if (ioctl(cam,VIDIOCMCAPTURE, &mapbuf)<0) {perror("VIDIOCMCAPTURE");		// Turn on the buffer that
	//	exit(-1);}								// was being used.

	frame++;


	if (frame>=vidbuf.frames) frame=0;

	}	gtk_main();										// Go to main process ().
}


//------------------------------------------------------------------------
			/* DISPLAY IMAGES */
//------------------------------------------------------------------------

/*void display(window,darea)
  {
    	gint x, y;
    	static first = 1;
 	if (first)
   	{
       		gtk_container_add (GTK_CONTAINER (window), darea);				// Put darea in windows.
   
        	gtk_signal_connect (GTK_OBJECT (darea), "expose-event",				// Put RGB image in darea.
                        GTK_SIGNAL_FUNC (on_darea_expose), NULL);

 		first = 0;
   	}		
   
   	gtk_drawing_area_size (GTK_DRAWING_AREA (darea), COLS, ROWS);				// Set darea size.
   	gtk_widget_show_all (window);								// Show windows in screen.      
   	gtk_main();										// Go to main process ().
  }*/void display(window,darea){       	gtk_container_add (GTK_CONTAINER (window), darea);				// Put darea in windows.	gtk_drawing_area_size (GTK_DRAWING_AREA (darea), COLS, ROWS);				// Set darea size.
   	gtk_widget_show_all (window);								// Show windows in screen.    }
/*on_darea_expose (GtkWidget *widget)
  { 	GdkPixbufLoader* pixbuf_loader = gdk_pixbuf_loader_new(); 				// create a pixbuf loader object. 	gdk_pixbuf_loader_write( pixbuf_loader, buf, COLS*ROWS, 0 ); // parse the image.	gdk_pixbuf_loader_close (pixbuf_loader, 0 ); // tell the pixbuf loader the end of the parsing the image.	pixbuf = gdk_pixbuf_loader_get_pixbuf( pixbuf_loader ); // get the new pixbuf just created by the pixbuf loader.	gtk_widget_realize(darea);	gdk_draw_pixbuf (GTK_WIDGET (darea)->window, NULL,pixbuf,0,0,0,0, COLS,ROWS, GDK_RGB_DITHER_NORMAL, 0, 0);
   	gtk_main_quit();
  }*/void draw(GtkWidget *widget)
{ 	jpeg_size = get_jpegsize(buf , size);	GdkPixbufLoader* pixbuf_loader = gdk_pixbuf_loader_new(); 				// create a pixbuf loader object. 	gdk_pixbuf_loader_write( pixbuf_loader, buf, jpeg_size, 0 ); // parse the image.	gdk_pixbuf_loader_close (pixbuf_loader, 0 ); // tell the pixbuf loader the end of the parsing the image.	pixbuf = gdk_pixbuf_loader_get_pixbuf( pixbuf_loader ); // get the new pixbuf just created by the pixbuf loader.	gtk_widget_realize(darea);	gdk_draw_pixbuf (GTK_WIDGET (darea)->window, NULL,pixbuf,0,0,0,0, COLS,ROWS, GDK_RGB_DITHER_NORMAL, 0, 0);

}
int get_jpegsize (unsigned char *buf, int insize){ int i; 	 for ( i= 1024 ; i< insize; i++) { 	if ((buf[i] == 0xFF) && (buf[i+1] == 0xD9)) return i+10; } return -1;}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合久久久久综合| 日韩电影免费在线看| 欧美日韩国产成人在线免费| 久久99精品国产| 亚洲午夜精品网| 国产精品嫩草99a| 欧美一区二区三区电影| 91免费视频网址| 国产精品一区二区果冻传媒| 丝袜诱惑亚洲看片| 日韩毛片一二三区| 国产视频一区在线播放| 欧美一级二级三级蜜桃| 欧美视频一区在线观看| av电影在线不卡| 国产不卡视频一区| 精品在线免费视频| 免费黄网站欧美| 五月激情六月综合| 一区二区成人在线视频| 中文字幕一区二区三区四区不卡 | 成人少妇影院yyyy| 狠狠久久亚洲欧美| 免费av网站大全久久| 五月天网站亚洲| 亚洲va天堂va国产va久| 日本一区二区视频在线观看| wwwwww.欧美系列| 欧美成人a在线| 欧美精品一区二区高清在线观看 | 国产精品美女久久久久av爽李琼| 精品国产一区二区三区四区四| 欧美日韩1234| 91精品蜜臀在线一区尤物| 欧美乱妇一区二区三区不卡视频| 91黄色免费看| 色94色欧美sute亚洲线路二| 97超碰欧美中文字幕| 91丨porny丨中文| 91蜜桃免费观看视频| 91在线小视频| 欧美亚洲一区二区三区四区| 欧美性高清videossexo| 欧美三级电影网站| 欧美老年两性高潮| 欧美大片在线观看| 久久人人爽人人爽| 亚洲国产精品99久久久久久久久| 欧美激情一区在线| 最新中文字幕一区二区三区| 一二三区精品福利视频| 午夜成人免费电影| 另类调教123区| 国产成人av一区二区三区在线| 国产精品18久久久久| 成人免费视频一区| 91在线看国产| 欧美三级在线播放| 日韩一级在线观看| 国产女人aaa级久久久级| 国产精品美女久久久久aⅴ| 一区二区成人在线视频| 毛片av一区二区| 国产a视频精品免费观看| jiyouzz国产精品久久| 欧美四级电影在线观看| 欧美成人乱码一区二区三区| 国产亚洲一区二区三区在线观看| 国产精品盗摄一区二区三区| 亚洲综合另类小说| 加勒比av一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美韩国日本不卡| 一区二区三区四区在线播放| 日本麻豆一区二区三区视频| 国产成人高清视频| 欧美色老头old∨ideo| 久久―日本道色综合久久| 亚洲欧美激情视频在线观看一区二区三区| 亚洲国产综合人成综合网站| 狠狠网亚洲精品| 色老综合老女人久久久| 日韩精品中文字幕一区二区三区 | 久久国产精品无码网站| a级精品国产片在线观看| 欧美丰满少妇xxxxx高潮对白| 26uuu成人网一区二区三区| 最新国产成人在线观看| 蜜桃视频免费观看一区| 97国产精品videossex| 精品久久久久久久人人人人传媒 | 亚洲a一区二区| 粉嫩欧美一区二区三区高清影视| 欧美性xxxxxx少妇| 国产日韩一级二级三级| 日韩成人免费在线| 99久久国产综合精品麻豆| 日韩一级黄色大片| 亚洲伦理在线免费看| 精品一区二区三区在线播放视频| 色综合久久久久久久久| 久久久蜜桃精品| 喷水一区二区三区| 日本乱码高清不卡字幕| 久久天天做天天爱综合色| 亚洲观看高清完整版在线观看| 国产精品白丝av| 555www色欧美视频| 亚洲欧美国产三级| 成人午夜免费电影| 久久一日本道色综合| 日韩精品欧美精品| 91国在线观看| 亚洲欧洲日韩一区二区三区| 国产一区二区三区四区五区美女 | 日韩电影在线观看网站| 色吊一区二区三区 | 麻豆成人久久精品二区三区小说| 欧美中文字幕亚洲一区二区va在线 | 奇米影视在线99精品| 91福利国产精品| 综合色中文字幕| av不卡一区二区三区| 国产人成亚洲第一网站在线播放| 奇米精品一区二区三区在线观看 | 成人精品免费视频| 国产亚洲人成网站| 国产在线看一区| 精品国产一二三| 韩国成人在线视频| 欧美成人伊人久久综合网| 天堂va蜜桃一区二区三区 | 欧美久久一区二区| 首页亚洲欧美制服丝腿| 欧美日韩1区2区| 青青草国产成人99久久| 日韩欧美国产三级| 久88久久88久久久| 欧美精品一区男女天堂| 国产一区欧美二区| 欧美激情艳妇裸体舞| 成人一区二区视频| 自拍偷拍欧美精品| 日本道在线观看一区二区| 亚洲综合视频在线| 欧美久久久影院| 麻豆国产欧美日韩综合精品二区| 日韩免费观看高清完整版在线观看| 免费av成人在线| 久久久久久久久久久久久女国产乱| 国产精品资源在线看| 中文字幕av一区 二区| 91污在线观看| 亚洲成人综合网站| 日韩欧美成人一区二区| 国产成人av一区二区三区在线| 中文字幕永久在线不卡| 欧洲一区二区三区在线| 日日夜夜精品视频免费| 精品久久久影院| 成人av在线一区二区| 亚洲影院在线观看| 91精品国产福利| 国产风韵犹存在线视精品| 中文字幕在线视频一区| 亚洲免费观看高清完整版在线 | 色偷偷久久人人79超碰人人澡 | 欧美性猛片xxxx免费看久爱| 麻豆国产精品官网| 伊人夜夜躁av伊人久久| 久久久噜噜噜久久人人看 | 日韩欧美一级精品久久| hitomi一区二区三区精品| 久久91精品国产91久久小草| 一区二区三区丝袜| 国产欧美日韩三级| 日韩一区二区三区免费看| 日本久久电影网| 成人理论电影网| 国产一区二区三区免费在线观看| 五月天视频一区| 亚洲中国最大av网站| 欧美国产成人精品| 欧美精品一区二区三| 欧美伦理电影网| 欧美日韩一卡二卡三卡| 色哟哟一区二区在线观看| 国产高清不卡一区| 久久99国产精品久久99 | 欧美日韩免费高清一区色橹橹| 成人性生交大片| 国产精品一区二区你懂的| 美女爽到高潮91| 三级不卡在线观看| 婷婷综合在线观看| 亚洲国产日韩综合久久精品| 一区二区三区四区在线免费观看| 亚洲欧美视频一区| 综合在线观看色| 亚洲精品国产视频|