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

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

?? main.c

?? vga(or dvi )to usb video4linux api sample
?? C
?? 第 1 頁 / 共 2 頁
字號:
/** -*-linux-c-*- * */#include <stdio.h>#include <stdint.h>#include <string.h>#include <ctype.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <usb.h>#ifndef __user#define __user#endif#include <linux/usbdevice_fs.h>#include "v2u_id.h"#include "v2u_ioctl.h"#include <magick/api.h>// OK error code#define EOK 0#define TRUE 1#define FALSE 0int max(int x, int y)	{return x>y ? x : y;}int min(int x, int y)	{return x<y ? x : y;}/** * returns 0 if failed */static int save_image(int w, int h, int bpp, const char * pixels, const char * fname) {	int res = -EOK;	ExceptionInfo exception;	Image *image;	ImageInfo *image_info;		// Initialize the image info structure	InitializeMagick(NULL);	GetExceptionInfo(&exception);	image_info = CloneImageInfo(NULL);	if(bpp==16) {		unsigned char * pixels24 = malloc(w*h*3);		unsigned char * d = pixels24;		unsigned short * s = (unsigned short *)pixels;		int x, y;		for(y=0; y<h; y++)			for(x=0; x<w; x++) {				const unsigned short p = *s;				d[2] = (0x1F & p) << 3;				d[1] = ((0x3F << 5) & p) >> 3;				d[0] = ((0x1F << 11) & p) >> 8;				d+=3;				s++;			}		image = ConstituteImage( w, h, "RGB", CharPixel, pixels24, &exception );		free(pixels24);	} else {		image = ConstituteImage( w, h, "RGB", CharPixel, pixels, &exception );	}	strcpy(image->filename, fname);	res = WriteImage(image_info, image);    	DestroyConstitute();	DestroyImage(image);	DestroyImageInfo(image_info);	DestroyExceptionInfo(&exception);	DestroyMagick();	return res;}/** * */static struct usb_device * find_vga2usb(){	struct usb_bus *busses;		usb_init();	usb_find_busses();	usb_find_devices();		busses = usb_get_busses();		struct usb_bus *bus;		for (bus = busses; bus; bus = bus->next) {		struct usb_device *dev;				for (dev = bus->devices; dev; dev = dev->next) {			if( dev->descriptor.idVendor == VGA2USB_VENDORID )			{				return dev;			}		}	}		return NULL;}/** * Perform an ioctl on the device connected on usbfs */static int usbfs_ioctl(int fd, int code, void * data){	struct usbdevfs_ioctl ctrl;	ctrl.ifno = 0;	ctrl.ioctl_code = code;	ctrl.data = data;	return ioctl(fd, USBDEVFS_IOCTL, &ctrl);}/** * */static int grab_frame(const int fd, const char * img_file, int doSave, int doSaveRGB, int bpp) {	int result = -EOK;	struct ioctl_grabframe ioctl_grabframe;	ioctl_grabframe.pixbuflen = 2048*1536*3;	ioctl_grabframe.bpp = bpp;	ioctl_grabframe.pixbuf = malloc(ioctl_grabframe.pixbuflen);	if(!ioctl_grabframe.pixbuf) {		result = -ENOMEM;		goto Exit;	}	result = usbfs_ioctl(fd, IOCTL_VGA2USB_GRABFRAME, &ioctl_grabframe);	if(result>=0 && doSave) {		result = save_image(ioctl_grabframe.width,				    ioctl_grabframe.height,				    ioctl_grabframe.bpp,				    ioctl_grabframe.pixbuf,				    img_file);				if(doSaveRGB) {			int i,j;			char * compbuf = malloc(ioctl_grabframe.pixbuflen);			if(!compbuf) {				result = -ENOMEM;				goto Exit;			}			for(j=0; j<3; j++) {				char fname[64];				snprintf(fname, 64, "%s-%d.png", img_file, j);				memset(compbuf,0,ioctl_grabframe.pixbuflen);				for(i=0; i<ioctl_grabframe.pixbuflen; i+=3) {					compbuf[i+j] = ((char*)ioctl_grabframe.pixbuf)[i+j];				}				result = save_image(ioctl_grabframe.width,						    ioctl_grabframe.height,						    ioctl_grabframe.bpp,						    compbuf,						    fname);			}			free(compbuf);		}	} Exit:	if(ioctl_grabframe.pixbuf)		free(ioctl_grabframe.pixbuf);	return result;}/** * */static int get_videomode(const int fd){	int result = 0;	struct ioctl_videomode vm = {0,0,0};	if( (result = usbfs_ioctl(fd, IOCTL_VGA2USB_VIDEOMODE, &vm)) < 0 ) {		goto Exit;	}	printf("Videomode: %d x %d @ %d mHz\n", vm.width, vm.height, vm.vfreq);	   Exit:	return result;}/** * */static int get_timings(const int fd){	int result = 0;	int i;	int msglen;	V2U_Property prop;	prop.key = V2UKey_ModeMeasurmentsDump;	memset(&prop.value, 0, sizeof(prop.value)); 	if( (result = usbfs_ioctl(fd, IOCTL_VGA2USB_GET_PROPERTY, &prop)) < 0 ) {		goto Exit;	} 	msglen = min(prop.value.blob[0],sizeof(prop.value.blob)/sizeof(prop.value.blob[0]));	for(i=0; i<msglen; i++) {		if (i == 6 || i == 14) {                        printf("\r\n");		}		printf("%02X ",prop.value.blob[i]);	}	printf("\r\n"); Exit:	return result;}/** * Queries capture parameters from the drivers and prints them to stdout. */#define MSGSTR_MANUAL	"manual"#define MSGSTR_AUTO	"auto  "static int get_adjustment (const int d){    struct ioctl_setparams params;    memset(&params,0,sizeof(params));    int result = usbfs_ioctl(d, IOCTL_VGA2USB_GETPARAMS, &params);    if ( result >= 0 ) {        printf("VGR2USB capture parameters:\n");	printf("  hshift (%s): %d\n", params.flags & V2U_FLAG_VALID_HSHIFT ? MSGSTR_MANUAL : MSGSTR_AUTO, params.hshift );        printf("  vshift (%s): %d\n", params.flags & V2U_FLAG_VALID_VSHIFT ? MSGSTR_MANUAL : MSGSTR_AUTO, params.vshift);        printf("  phase  (%s): %u\n", params.flags & V2U_FLAG_VALID_PHASE ? MSGSTR_MANUAL : MSGSTR_AUTO, (unsigned int)params.phase);	printf("  pll    (%s): %d\n", params.flags & V2U_FLAG_VALID_PLLSHIFT ? MSGSTR_MANUAL : MSGSTR_AUTO, params.pllshift);        printf("  offset (%s): R:%u G:%u B:%u\n",	       params.flags & V2U_FLAG_VALID_OFFSETGAIN ? MSGSTR_MANUAL : MSGSTR_AUTO,                (unsigned int)params.offset_r,               (unsigned int)params.offset_g,               (unsigned int)params.offset_b);        printf("  gain   (%s): R:%u G:%u B:%u\n",	       params.flags & V2U_FLAG_VALID_OFFSETGAIN ? MSGSTR_MANUAL : MSGSTR_AUTO,                (unsigned int)params.gain_r,               (unsigned int)params.gain_g,               (unsigned int)params.gain_b);        if (params.flags & V2U_FLAG_VALID_GRABFLAGS) {	    printf("  grab flags : 0x%08x\n",params.grab_flags);            if (params.grab_flags & GRAB_BMP_BOTTOM_UP) {                printf("         GRAB_BMP_BOTTOM_UP\n");            }            if (params.grab_flags & GRAB_PREFER_WIDE_MODE) {                printf("         GRAB_PREFER_WIDE_MODE\n");            }        }    }    return result;}/** * */#define ADJ_SEPARATOR	":"#define ADJ_HSHIFT	"hs="#define ADJ_VSHIFT	"vs="#define ADJ_PHASE	"phase="#define ADJ_GAIN	"gain="#define ADJ_OFFSET	"offset="#define ADJ_PLL		"pll="#define ADJ_FLAGS	"flags="static int set_adjustment(const int fd, const char * args){	int result = 0;	char parambuf[256];	char *token=NULL, *tmp;	struct ioctl_setparams adj = {0,0,0};	memset(&adj,0,sizeof(struct ioctl_setparams));	strncpy(parambuf,args,sizeof(parambuf)); parambuf[sizeof(parambuf)-1]=0;	token = strtok_r(parambuf, ADJ_SEPARATOR, &tmp);	while( token ) {		char *nptr;		char *eptr;		int num;		if(!strncmp(token,ADJ_HSHIFT,sizeof(ADJ_HSHIFT)-1)) {			num = strtol( (nptr=token+sizeof(ADJ_HSHIFT)-1), &eptr, 10);			if(!*eptr) {				if(*nptr) {					adj.flags |= V2U_FLAG_VALID_HSHIFT;					adj.hshift = num;				}			} else {				fprintf(stderr,"Ignoring invalid adjustment %s\n", token);			}		} else if(!strncmp(token,ADJ_VSHIFT,sizeof(ADJ_VSHIFT)-1)) {			num = strtol( (nptr=token+sizeof(ADJ_VSHIFT)-1), &eptr, 10);			if(!*eptr) {				if(*nptr) {					adj.flags |= V2U_FLAG_VALID_VSHIFT;					adj.vshift = num;				}			} else {				fprintf(stderr,"Ignoring invalid adjustment %s\n", token);			}		} else  if(!strncmp(token,ADJ_PHASE,sizeof(ADJ_PHASE)-1)) {			num = strtol( (nptr=token+sizeof(ADJ_PHASE)-1), &eptr, 10);			if(!*eptr) {				if(*nptr) {					adj.flags |= V2U_FLAG_VALID_PHASE;					adj.phase = num;				}			} else {				fprintf(stderr,"Ignoring invalid adjustment %s\n", token);			}		} else if(!strncmp(token,ADJ_OFFSET,sizeof(ADJ_OFFSET)-1)) {			num = strtol( (nptr=token+sizeof(ADJ_OFFSET)-1), &eptr, 10);			if(!*eptr) {				if(*nptr) {					adj.flags |= V2U_FLAG_VALID_OFFSETGAIN;					adj.offset_r = adj.offset_g = adj.offset_b = ((unsigned)num) & 0x1F;				}			} else {				fprintf(stderr,"Ignoring invalid adjustment %s\n", token);			}		} else if(!strncmp(token,ADJ_GAIN,sizeof(ADJ_GAIN)-1)) {			num = strtol( (nptr=token+sizeof(ADJ_GAIN)-1), &eptr, 10);			if(!*eptr) {				if(*nptr) {					adj.flags |= V2U_FLAG_VALID_OFFSETGAIN;					adj.gain_r = adj.gain_g = adj.gain_b = ((unsigned)num) & 0xFF;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩1区2区3区| 黄网站免费久久| 国产亚洲一区二区在线观看| 日本久久电影网| 国产成人午夜电影网| 三级不卡在线观看| 亚洲色欲色欲www| 欧美精品一区二区三| 欧美亚男人的天堂| 99久久久精品| 国产二区国产一区在线观看| 日本在线播放一区二区三区| 亚洲一区自拍偷拍| 国产精品欧美久久久久无广告| 日韩欧美一级在线播放| 欧美中文一区二区三区| 99久久精品一区| 国产成人精品免费| 激情综合一区二区三区| 日韩激情一区二区| 亚洲va天堂va国产va久| 粉嫩av亚洲一区二区图片| 日韩电影在线免费看| 亚洲愉拍自拍另类高清精品| 色视频一区二区| 亚洲一区二区三区四区五区黄| 亚洲精品一区二区在线观看| 日韩中文字幕亚洲一区二区va在线| 日本高清不卡aⅴ免费网站| 中文字幕一区二区三区四区不卡| 欧美在线影院一区二区| 欧美日韩视频在线一区二区| 东方aⅴ免费观看久久av| 久久精品久久久精品美女| 视频一区二区欧美| 亚洲午夜电影在线| 亚洲国产wwwccc36天堂| 亚洲综合另类小说| 亚洲午夜久久久久久久久电影院| 一区二区三区四区在线| 亚洲女女做受ⅹxx高潮| 一区二区三区在线观看网站| 亚洲免费在线视频| 亚洲一区二区三区免费视频| 亚洲午夜在线观看视频在线| 午夜久久久影院| 人人精品人人爱| 久久66热re国产| 国产精品一二三四五| 高清shemale亚洲人妖| 福利一区二区在线| 91老师片黄在线观看| 91官网在线免费观看| 欧美性极品少妇| 欧美一级高清大全免费观看| 精品久久久影院| 国产欧美精品一区二区色综合朱莉| 中文字幕乱码久久午夜不卡| 国产精品短视频| 午夜精品一区二区三区免费视频 | 在线播放亚洲一区| 欧美一区二区三区在线| 日韩女优制服丝袜电影| 久久久久久久精| 亚洲欧美在线视频观看| 亚洲香蕉伊在人在线观| 日本不卡免费在线视频| 国产精品一区2区| 91久久精品国产91性色tv| 91精品啪在线观看国产60岁| 久久精品欧美日韩精品 | 中文在线一区二区| 亚洲欧美日韩在线播放| 日本女人一区二区三区| 成人在线一区二区三区| 欧美性淫爽ww久久久久无| 欧美一级日韩免费不卡| 国产精品人人做人人爽人人添| 亚洲一区二区成人在线观看| 久久99久久精品欧美| eeuss鲁片一区二区三区| 欧美精品 日韩| 国产午夜久久久久| 天堂午夜影视日韩欧美一区二区| 国产一区二区成人久久免费影院 | 精品粉嫩超白一线天av| 最新国产精品久久精品| 青青草97国产精品免费观看无弹窗版| 国产乱码精品1区2区3区| 欧美午夜一区二区三区 | 久久蜜桃av一区二区天堂| 亚洲欧美一区二区三区久本道91| 久久99久久久欧美国产| 91亚洲国产成人精品一区二三| 日韩欧美一区二区在线视频| 亚洲三级免费观看| 国产电影一区在线| 欧美一卡二卡三卡| 亚洲午夜精品在线| av在线不卡电影| 久久久久国产精品人| 三级不卡在线观看| 91激情五月电影| 中文字幕av一区 二区| 久久国产精品无码网站| 欧美色综合影院| 中文字幕一区二区三区蜜月 | 美女视频黄免费的久久| 欧美午夜电影一区| 中文字幕在线不卡国产视频| 极品少妇xxxx精品少妇| 在线播放日韩导航| 亚洲一区二区三区国产| 97精品电影院| 国产精品毛片大码女人| 国产夫妻精品视频| 亚洲影院久久精品| 一本一道久久a久久精品综合蜜臀| 久久久久久久久岛国免费| 免费观看成人av| 欧美一激情一区二区三区| 亚洲一级在线观看| 一本色道亚洲精品aⅴ| 国产精品激情偷乱一区二区∴| 国产大陆a不卡| 久久精品一区四区| 国产一区二区91| 久久久欧美精品sm网站 | 欧美日韩不卡一区| 亚洲狠狠爱一区二区三区| 色成年激情久久综合| 亚洲欧美在线视频观看| 91麻豆精品视频| 一区二区三区小说| 欧美色综合网站| 天天影视色香欲综合网老头| 欧美老肥妇做.爰bbww| 亚洲va欧美va人人爽午夜| 欧美久久高跟鞋激| 免费成人av在线播放| 欧美一级xxx| 国产一区二区三区不卡在线观看| 欧美精品一区二区久久婷婷| 国产真实精品久久二三区| 2020日本不卡一区二区视频| 国模冰冰炮一区二区| 国产丝袜美腿一区二区三区| 成人av在线电影| 亚洲精品日日夜夜| 欧美久久婷婷综合色| 日本不卡在线视频| 久久亚洲精品小早川怜子| 国产老肥熟一区二区三区| 中文字幕av一区二区三区免费看| www.亚洲色图.com| 一个色在线综合| 日韩欧美国产系列| 成人综合在线视频| 亚洲欧洲无码一区二区三区| 91福利国产成人精品照片| 午夜免费欧美电影| 337p粉嫩大胆色噜噜噜噜亚洲| 国产99一区视频免费| 亚洲精品免费视频| 日韩美一区二区三区| 高潮精品一区videoshd| 尤物在线观看一区| 欧美一级黄色大片| 不卡av在线网| 日韩精品欧美成人高清一区二区| xfplay精品久久| 色婷婷av一区二区三区gif| 麻豆精品在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 在线看一区二区| 国产一区二区女| 亚洲裸体在线观看| 欧美第一区第二区| 99免费精品在线| 蜜桃久久久久久| 亚洲丝袜精品丝袜在线| 777xxx欧美| 成人av综合在线| 日韩精品一区第一页| 国产精品免费丝袜| 欧美一区二区三区喷汁尤物| av动漫一区二区| 天天综合天天综合色| 亚洲国产高清在线观看视频| 欧美区一区二区三区| 成人性生交大片免费看在线播放| 午夜不卡在线视频| 中文字幕成人av| 欧美xxxx老人做受| 欧洲av在线精品| 成人免费观看视频| 欧美日韩视频一区二区| 成人免费精品视频| 精品综合久久久久久8888| 亚洲综合视频在线|