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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? vga(or dvi )to usb video4linux api sample
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/** -*-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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区在线播放| 爽好久久久欧美精品| 亚洲免费视频成人| 亚洲成人777| 国产一区二区三区在线观看免费| 成人免费高清视频| 欧美性大战久久久久久久蜜臀| 日韩精品一区二区三区中文精品| 日本一区二区三区在线观看| 亚洲一区二区精品视频| 免费成人av资源网| 成人免费看黄yyy456| 欧洲精品一区二区三区在线观看| 日韩一区二区电影网| 国产精品免费丝袜| 亚洲gay无套男同| 国产精品99久久久久久久女警| 91麻豆文化传媒在线观看| 欧美一区永久视频免费观看| 日本一区二区三级电影在线观看 | 韩国中文字幕2020精品| 国产69精品久久99不卡| 欧美三级视频在线| 久久夜色精品国产欧美乱极品| 亚洲欧美日本韩国| 另类小说综合欧美亚洲| 97精品久久久久中文字幕| 日韩一区二区三区四区| 一区在线播放视频| 久久国产精品色婷婷| 色综合久久88色综合天天6| 欧美大片日本大片免费观看| 亚洲精品欧美激情| 国产乱子伦视频一区二区三区| 欧美午夜精品久久久| 国产欧美一区二区在线| 日韩综合在线视频| 色哟哟在线观看一区二区三区| 欧美精品一区二区在线播放| 一区二区国产盗摄色噜噜| 国产精品一级黄| 欧美一卡在线观看| 一区二区三区中文免费| 国产成人在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲免费观看高清完整版在线观看| 黄页视频在线91| 5858s免费视频成人| 亚洲欧美怡红院| 国产成人亚洲综合a∨猫咪| 欧美一区二区三区视频免费播放| 国产精品国产a| 国产精品白丝jk黑袜喷水| 日韩欧美中文字幕制服| 亚洲在线成人精品| 97se亚洲国产综合自在线| 久久久久久久久久久黄色| 美女在线视频一区| 欧美男人的天堂一二区| 成人免费在线视频观看| 成人丝袜视频网| 久久久久久免费| 极品尤物av久久免费看| 欧美一区二区高清| 日本成人在线电影网| 欧美日韩美少妇| 亚洲午夜在线电影| 91成人在线观看喷潮| 亚洲欧美日韩国产另类专区| 99久久国产综合精品女不卡| 国产精品欧美极品| 粉嫩一区二区三区在线看| 国产欧美一区二区精品忘忧草| 国产一区二区三区| 久久毛片高清国产| 国产激情偷乱视频一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 亚洲美女屁股眼交| 99久久免费国产| 色综合久久久久| 日韩一区二区精品| 狠狠色丁香久久婷婷综| 久久亚洲综合色一区二区三区| 国产一区二区在线视频| 欧美精品一区二| 玖玖九九国产精品| 欧美中文字幕一区| 欧美sm美女调教| 激情亚洲综合在线| 亚洲视频在线观看三级| 99精品久久久久久| 最新日韩在线视频| 天天影视网天天综合色在线播放 | 欧美日韩一区国产| 久久看人人爽人人| 国产精品区一区二区三区 | 国产成人精品一区二| 色爱区综合激月婷婷| 久久综合色8888| 性感美女久久精品| 99国产精品国产精品毛片| 日韩欧美国产精品一区| 亚洲男人的天堂网| 国产综合久久久久久久久久久久| 色老头久久综合| 久久久久国产一区二区三区四区| 亚洲一区二区三区四区五区黄| 国产一区二区三区电影在线观看| 欧美久久久久久久久| 国产精品高潮久久久久无| 久久99这里只有精品| 欧美日韩一本到| 亚洲女同ⅹxx女同tv| 国产精品小仙女| 精品剧情v国产在线观看在线| 亚洲激情综合网| 不卡的看片网站| 国产无人区一区二区三区| 日韩精品亚洲一区二区三区免费| 一本大道久久a久久综合婷婷| 国产天堂亚洲国产碰碰| 久久99国产精品尤物| 8x8x8国产精品| 亚洲成国产人片在线观看| 91麻豆精东视频| 国产精品丝袜久久久久久app| 激情国产一区二区| 欧美成人伊人久久综合网| 日本亚洲最大的色成网站www| 日本韩国精品一区二区在线观看| 中文字幕制服丝袜一区二区三区 | 精品美女被调教视频大全网站| 日日摸夜夜添夜夜添亚洲女人| 欧美色图天堂网| 一区二区三区精品在线| 色综合久久66| 亚洲卡通欧美制服中文| 91浏览器在线视频| 最新久久zyz资源站| 91视视频在线观看入口直接观看www| 欧美国产精品劲爆| 国产**成人网毛片九色| 亚洲国产精品t66y| 成人污视频在线观看| 中文字幕制服丝袜一区二区三区| 99精品久久只有精品| 一区二区国产盗摄色噜噜| 欧美色图一区二区三区| 日日夜夜一区二区| 日韩美女天天操| 国内精品久久久久影院薰衣草| 337p日本欧洲亚洲大胆色噜噜| 狠狠色狠狠色综合日日91app| 久久久久久久网| 成人av电影在线网| 亚洲精品一二三| 欧美日韩精品系列| 美女在线视频一区| 国产欧美一区二区精品忘忧草| av综合在线播放| 亚洲一区av在线| 欧美一级夜夜爽| 国产精品影视天天线| 国产精品成人在线观看| 91福利在线看| 免费人成精品欧美精品| 久久久久国产精品麻豆ai换脸| 成人黄色大片在线观看| 亚洲一区二区三区影院| 日韩你懂的在线播放| 高清不卡一区二区在线| 一区二区三区免费| www国产成人| 91同城在线观看| 日本不卡视频在线观看| 国产日韩高清在线| 欧洲色大大久久| 国产在线播放一区二区三区| 亚洲婷婷综合色高清在线| 欧美男女性生活在线直播观看 | 欧美夫妻性生活| 国产精品1024久久| 一区二区三区欧美亚洲| 精品国产伦一区二区三区免费| 99久久精品久久久久久清纯| 石原莉奈一区二区三区在线观看| 日本一区二区三区在线不卡| 欧美日韩极品在线观看一区| 国产一区二区三区视频在线播放| 亚洲日本va午夜在线电影| 欧美一区二区性放荡片| 不卡av电影在线播放| 日本人妖一区二区| 日韩一区在线免费观看| 精品久久久网站| 欧美在线免费播放| 国产a级毛片一区| 天天色综合成人网| 亚洲欧美日韩国产综合| 久久精品亚洲一区二区三区浴池|