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

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

?? grab-ng.c

?? It s a tool designed to extract as much information as possible from Bluetooth devices without the r
?? C
?? 第 1 頁 / 共 2 頁
字號:
#if 0	fprintf(stderr,"\tconv from:  %-28s =>  %s\n",		ng_vfmt_to_desc[ret->fmtid_in],		ng_vfmt_to_desc[ret->fmtid_out]);#endif	if (ret->fmtid_in == in) {	    (*i)++;	    return ret;	}    }    return NULL;}struct ng_video_conv*ng_conv_find_match(unsigned int in, unsigned int out){    struct list_head *item;    struct ng_video_conv *ret = NULL;        list_for_each(item,&ng_conv) {	ret = list_entry(item, struct ng_video_conv, list);	if (ret->fmtid_in  == in && ret->fmtid_out == out)	    return ret;    }    return NULL;}/* --------------------------------------------------------------------- */int ng_vid_init(struct ng_devstate *dev, char *device){    struct list_head *item;    struct ng_vid_driver *drv;    struct ng_attribute *attr;    void *handle;    int i, err = ENODEV;    /* check all grabber drivers */    memset(dev,0,sizeof(*dev));    list_for_each(item,&ng_vid_drivers) {        drv = list_entry(item, struct ng_vid_driver, list);	if (ng_debug)	    fprintf(stderr,"vid-open: trying: %s... \n", drv->name);	if (NULL != (handle = drv->init(device)))	    break;	if (errno)	    err = errno;	if (ng_debug)	    fprintf(stderr,"vid-open: failed: %s\n",drv->name);    }    if (item == &ng_vid_drivers)	return err;    if (ng_debug)	fprintf(stderr,"vid-open: ok: %s\n", drv->name);    dev->type   = NG_DEV_VIDEO;    dev->v      = drv;    dev->handle = handle;    dev->device = dev->v->devname(dev->handle);    dev->flags  = dev->v->capabilities(dev->handle);    if (ng_debug)	fprintf(stderr,"vid-open: flags: %x\n", dev->flags);	    INIT_LIST_HEAD(&dev->attrs);    attr = dev->v->list_attrs(dev->handle);    for (i = 0; attr && attr[i].name; i++) {	attr[i].dev   = dev;	attr[i].group = dev->device;	list_add_tail(&attr[i].device_list,&dev->attrs);    }    return 0;}struct ng_devinfo* ng_vid_probe(char *driver){    struct list_head *item;    struct ng_vid_driver *drv;    /* check all grabber drivers */    list_for_each(item,&ng_vid_drivers) {        drv = list_entry(item, struct ng_vid_driver, list);	if (ng_debug)	    fprintf(stderr,"vid-probe: trying: %s... \n", drv->name);	if (strcmp(driver, drv->name))	    continue;	return drv->probe(ng_debug);    }    return NULL;}int ng_dsp_init(struct ng_devstate *dev, char *device, int record){    struct list_head *item;    struct ng_dsp_driver *drv;    void *handle;    int err = ENODEV;    /* check all dsp drivers */    list_for_each(item,&ng_dsp_drivers) {        drv = list_entry(item, struct ng_dsp_driver, list);	if (record && NULL == drv->read)	    continue;	if (!record && NULL == drv->write)	    continue;	if (ng_debug)	    fprintf(stderr, "dsp-open: trying: %s... \n", drv->name);	if (NULL != (handle = drv->init(device, record)))	    break;	if (errno)	    err = errno;	if (ng_debug)	    fprintf(stderr,"dsp-open: failed: %s\n", drv->name);    }    if (item == &ng_dsp_drivers)	return err;    if (ng_debug)	fprintf(stderr,"dsp-open: ok: %s\n",drv->name);    memset(dev,0,sizeof(*dev));    dev->type   = NG_DEV_DSP;    dev->a      = drv;    dev->handle = handle;    dev->device = dev->a->devname(dev->handle);    //dev->flags  = dev->a->capabilities(dev->handle);    INIT_LIST_HEAD(&dev->attrs);    return 0;}int ng_mix_init(struct ng_devstate *dev, char *device, char *control){    struct list_head *item;    struct ng_mix_driver *drv;    struct ng_attribute *attr;    void *handle;    int i, err = ENODEV;    /* check all dsp drivers */    list_for_each(item,&ng_mix_drivers) {        drv = list_entry(item, struct ng_mix_driver, list);	if (ng_debug)	    fprintf(stderr, "mix-open: trying: %s... \n", drv->name);	if (NULL != (handle = drv->init(device, control)))	    break;	if (errno)	    err = errno;	if (ng_debug)	    fprintf(stderr,"mix-open: failed: %s\n", drv->name);    }    if (item == &ng_mix_drivers)	return err;    if (ng_debug)	fprintf(stderr,"mix-open: ok: %s\n",drv->name);    memset(dev,0,sizeof(*dev));    dev->type   = NG_DEV_MIX;    dev->m      = drv;    dev->handle = handle;    dev->device = dev->m->devname(dev->handle);    INIT_LIST_HEAD(&dev->attrs);    attr = dev->m->list_attrs(dev->handle);    for (i = 0; attr && attr[i].name; i++) {	attr[i].dev   = dev;	attr[i].group = dev->device;	list_add_tail(&attr[i].device_list,&dev->attrs);    }    return 0;}int ng_dev_fini(struct ng_devstate *dev){    switch (dev->type) {    case NG_DEV_NONE:	/* nothing */	break;    case NG_DEV_VIDEO:	dev->v->fini(dev->handle);	break;    case NG_DEV_DSP:	dev->a->fini(dev->handle);	break;    case NG_DEV_MIX:	dev->m->fini(dev->handle);	break;    }    memset(dev,0,sizeof(*dev));    return 0;}int ng_dev_open(struct ng_devstate *dev){    int rc = 0;    if (0 == dev->refcount) {	switch (dev->type) {	case NG_DEV_NONE:	    BUG_ON(1,"dev type NONE");	    break;	case NG_DEV_VIDEO:	    rc = dev->v->open(dev->handle);	    break;	case NG_DEV_DSP:	    rc = dev->a->open(dev->handle);	    break;	case NG_DEV_MIX:	    rc = dev->m->open(dev->handle);	    break;	}    }    if (0 == rc) {	dev->refcount++;	if (ng_debug)	    fprintf(stderr,"%s: opened %s [refcount %d]\n",		    __FUNCTION__, dev->device, dev->refcount);    }    return rc;}int ng_dev_close(struct ng_devstate *dev){    dev->refcount--;    BUG_ON(dev->refcount < 0, "refcount below 0");        if (0 == dev->refcount) {	switch (dev->type) {	case NG_DEV_NONE:	    BUG_ON(1,"dev type NONE");	    break;	case NG_DEV_VIDEO:	    dev->v->close(dev->handle);	    break;	case NG_DEV_DSP:	    dev->a->close(dev->handle);	    break;	case NG_DEV_MIX:	    dev->m->close(dev->handle);	    break;	}    }    if (ng_debug)	fprintf(stderr,"%s: closed %s [refcount %d]\n",		__FUNCTION__, dev->device, dev->refcount);    return 0;}int ng_dev_users(struct ng_devstate *dev){    return dev->refcount;}int ng_chardev_open(char *device, int flags, int major, int complain){    struct stat st;    int fd = -1;    if (strncmp(device, "/dev/", 5)) {	if (complain)	    fprintf(stderr,"%s: not below /dev\n",device);	goto err;    }    if (-1 == (fd = open(device, flags))) {	if (complain)	    fprintf(stderr,"open(%s): %s\n",device,strerror(errno));	goto err;    }    if (-1 == fstat(fd,&st)) {	if (complain)	    fprintf(stderr,"fstat(%s): %s\n",device,strerror(errno));	goto err;    }    if (!S_ISCHR(st.st_mode)) {	if (complain)	    fprintf(stderr,"%s: not a charcter device\n",device);	goto err;    }    if (major(st.st_rdev) != major) {	if (complain)	    fprintf(stderr,"%s: wrong major number (expected %d, got %d)\n",		    device, major, major(st.st_rdev));	goto err;    }    fcntl(fd,F_SETFD,FD_CLOEXEC);    return fd; err:    if (-1 != fd)	close(fd);    return -1;}/* --------------------------------------------------------------------- */struct ng_reader* ng_find_reader_magic(char *filename){    struct list_head *item;    struct ng_reader *reader;    char blk[512];    FILE *fp;    int m;    if (NULL == (fp = fopen(filename, "r"))) {	fprintf(stderr,"open %s: %s\n",filename,strerror(errno));        return NULL;    }    memset(blk,0,sizeof(blk));    fread(blk,1,sizeof(blk),fp);    fclose(fp);    list_for_each(item,&ng_readers) {	reader = list_entry(item, struct ng_reader, list);	for (m = 0; m < 8 && reader->mlen[m] > 0; m++) {	    if (0 == memcmp(blk+reader->moff[m],reader->magic[m],			    reader->mlen[m]))		return reader;	}    }    if (ng_debug)	fprintf(stderr,"%s: no reader found [magic]\n",filename);    return NULL;}struct ng_reader* ng_find_reader_name(char *name){    struct list_head *item;    struct ng_reader *reader;    list_for_each(item,&ng_readers) {	reader = list_entry(item, struct ng_reader, list);	if (0 == strcasecmp(reader->name,name))	    return reader;    }    if (ng_debug)	fprintf(stderr,"%s: no reader found [name]\n",name);    return NULL;}struct ng_writer* ng_find_writer_name(char *name){    struct list_head *item;    struct ng_writer *writer;    list_for_each(item,&ng_writers) {	writer = list_entry(item, struct ng_writer, list);	if (0 == strcasecmp(writer->name,name))	    return writer;    }    if (ng_debug)	fprintf(stderr,"%s: no writer found [name]\n",name);    return NULL;}int64_tng_tofday_to_timestamp(struct timeval *tv){    long long ts;    ts  = tv->tv_sec;    ts *= 1000000;    ts += tv->tv_usec;    ts *= 1000;    return ts;}int64_tng_get_timestamp(){    struct timeval tv;    gettimeofday(&tv,NULL);    return ng_tofday_to_timestamp(&tv);}struct ng_video_buf*ng_filter_single(struct ng_video_filter *filter, struct ng_video_buf *in){    struct ng_video_buf *out = in;    void *handle;    if (NULL != filter  &&  filter->fmts & (1 << in->fmt.fmtid)) {	handle = filter->init(&in->fmt);#if 0	BUG_ON(1,"not fixed yet");	out = filter->frame(handle,in);	filter->fini(handle);#endif    }    return out;}/* --------------------------------------------------------------------- */static void clip_dump(char *state, struct OVERLAY_CLIP *oc, int count){    int i;    fprintf(stderr,"clip: %s - %d clips\n",state,count);    for (i = 0; i < count; i++)	fprintf(stderr,"clip:   %d: %dx%d+%d+%d\n",i,		oc[i].x2 - oc[i].x1,		oc[i].y2 - oc[i].y1,		oc[i].x1, oc[i].y1);}static void clip_drop(struct OVERLAY_CLIP *oc, int n, int *count){    (*count)--;    memmove(oc+n, oc+n+1, sizeof(struct OVERLAY_CLIP) * (*count-n));}void ng_check_clipping(int width, int height, int xadjust, int yadjust,		       struct OVERLAY_CLIP *oc, int *count){    int i,j;    if (ng_debug > 1) {	fprintf(stderr,"clip: win=%dx%d xa=%d ya=%d\n",		width,height,xadjust,yadjust);	clip_dump("init",oc,*count);    }    for (i = 0; i < *count; i++) {	/* fixup coordinates */	oc[i].x1 += xadjust;	oc[i].x2 += xadjust;	oc[i].y1 += yadjust;	oc[i].y2 += yadjust;    }    if (ng_debug > 1)	clip_dump("fixup adjust",oc,*count);    for (i = 0; i < *count; i++) {	/* fixup borders */	if (oc[i].x1 < 0)	    oc[i].x1 = 0;	if (oc[i].x2 < 0)	    oc[i].x2 = 0;	if (oc[i].x1 > width)	    oc[i].x1 = width;	if (oc[i].x2 > width)	    oc[i].x2 = width;	if (oc[i].y1 < 0)	    oc[i].y1 = 0;	if (oc[i].y2 < 0)	    oc[i].y2 = 0;	if (oc[i].y1 > height)	    oc[i].y1 = height;	if (oc[i].y2 > height)	    oc[i].y2 = height;    }    if (ng_debug > 1)	clip_dump("fixup range",oc,*count);    /* drop zero-sized clips */    for (i = 0; i < *count;) {	if (oc[i].x1 == oc[i].x2 || oc[i].y1 == oc[i].y2) {	    clip_drop(oc,i,count);	    continue;	}	i++;    }    if (ng_debug > 1)	clip_dump("zerosize done",oc,*count);    /* try to merge clips */ restart_merge:    for (j = *count - 1; j >= 0; j--) {	for (i = 0; i < *count; i++) {	    if (i == j)		continue;	    if (oc[i].x1 == oc[j].x1 &&		oc[i].x2 == oc[j].x2 &&		oc[i].y1 <= oc[j].y1 &&		oc[i].y2 >= oc[j].y1) {		if (ng_debug > 1)		    fprintf(stderr,"clip: merge y %d,%d\n",i,j);		if (oc[i].y2 < oc[j].y2)		    oc[i].y2 = oc[j].y2;		clip_drop(oc,j,count);		if (ng_debug > 1)		    clip_dump("merge y done",oc,*count);		goto restart_merge;	    }	    if (oc[i].y1 == oc[j].y1 &&		oc[i].y2 == oc[j].y2 &&		oc[i].x1 <= oc[j].x1 &&		oc[i].x2 >= oc[j].x1) {		if (ng_debug > 1)		    fprintf(stderr,"clip: merge x %d,%d\n",i,j);		if (oc[i].x2 < oc[j].x2)		    oc[i].x2 = oc[j].x2;		clip_drop(oc,j,count);		if (ng_debug > 1)		    clip_dump("merge x done",oc,*count);		goto restart_merge;	    }	}    }    if (ng_debug)	clip_dump("final",oc,*count);}/* --------------------------------------------------------------------- */#if 0void ng_print_stacktrace(void){    void *array[16];    size_t size;    char **strings;    size_t i;        size = backtrace(array, DIMOF(array));    strings = backtrace_symbols(array, size);        for (i = 0; i < size; i++)	fprintf(stderr, "\t%s\n", strings[i]);    free(strings);}#endifstatic int ng_plugins(char *dirname){    struct dirent **list;    char filename[1024];    void *plugin;#if 1    void (*initcall)(void);#endif    int i,n = 0,l = 0;    n = scandir(dirname,&list,NULL,alphasort);    if (n <= 0)	return 0;    for (i = 0; i < n; i++) {	if (0 != fnmatch("*.so",list[i]->d_name,0))	    continue;	sprintf(filename,"%s/%s",dirname,list[i]->d_name);	if (NULL == (plugin = dlopen(filename,RTLD_NOW))) {	    fprintf(stderr,"dlopen: %s\n",dlerror());	    continue;	}	if (NULL == (initcall = dlsym(plugin,"ng_plugin_init"))) {	    if (NULL == (initcall = dlsym(plugin,"_ng_plugin_init"))) {		continue;	    }	}#if 0	initcall();#endif	l++;    }    for (i = 0; i < n; i++)	free(list[i]);    free(list);    return l;}voidng_init(void){    static int once=0;    int count=0;    if (once++) {	fprintf(stderr,"panic: ng_init called twice\n");	return;    }    yuv2rgb_init();    packed_init();    /* dirty hack: touch ng_dev to make ld _not_ drop devices.o, it is     *             needed by various plugins */    if (!ng_dev.video[0])	return;    count += ng_plugins(LIBDIR);    count += ng_plugins("./libng/plugins");    count += ng_plugins("./libng/contrib-plugins");     count += ng_plugins("../libng/plugins");    count += ng_plugins("../libng/contrib-plugins");    count += ng_plugins("./utils/linux/capture/libng/plugins");    count += ng_plugins("./utils/linux/capture/libng/contrib-plugins");     /*    if (0 == count)	fprintf(stderr,"WARNING: no plugins found [%s]\n",LIBDIR);    */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清在线一区二区| 欧美日本一区二区| 国产日韩欧美精品一区| 高清国产一区二区| 亚洲日穴在线视频| 欧美精品国产精品| 国产一区二区不卡在线| 国产精品久线在线观看| 在线观看国产精品网站| 日本中文字幕一区二区视频| 欧美成人高清电影在线| 国产精品一二二区| 一区二区视频在线看| 欧美日韩国产bt| 精品在线免费观看| 最新中文字幕一区二区三区| 欧美伊人久久大香线蕉综合69| 日韩精品1区2区3区| www国产成人免费观看视频 深夜成人网| 国产精品一区二区久久不卡| 国产精品国产三级国产| 欧美日本一区二区三区四区 | 色综合一区二区三区| 亚洲激情av在线| 精品嫩草影院久久| 色婷婷国产精品| 国产尤物一区二区| 一区二区高清免费观看影视大全| 91精品国产色综合久久不卡蜜臀| 国内精品国产三级国产a久久| 中文在线一区二区| 在线不卡一区二区| 成+人+亚洲+综合天堂| 日本不卡视频在线| 亚洲欧美怡红院| 久久噜噜亚洲综合| 欧美顶级少妇做爰| 91在线视频免费观看| 麻豆国产一区二区| 一区二区三区小说| 国产女人18水真多18精品一级做 | 91国偷自产一区二区开放时间| 久久国产人妖系列| 亚洲国产精品麻豆| 国产精品不卡在线| 欧美本精品男人aⅴ天堂| 一本到三区不卡视频| 国产激情偷乱视频一区二区三区| 无码av中文一区二区三区桃花岛| 亚洲欧洲在线观看av| 日韩免费视频线观看| 欧美日韩精品综合在线| 91在线观看免费视频| 国产福利一区二区三区| 理论片日本一区| 日本在线不卡视频一二三区| 亚洲免费观看高清完整版在线 | 成人免费在线播放视频| 精品福利在线导航| 欧美另类久久久品| 欧美日韩国产高清一区二区| 色美美综合视频| 在线观看日韩一区| 99在线视频精品| 成人午夜碰碰视频| 国产精品一区二区三区99| 蜜桃一区二区三区在线| 天堂午夜影视日韩欧美一区二区| 亚洲欧美一区二区久久| 国产精品久久看| 国产精品美女久久久久aⅴ国产馆| 2021国产精品久久精品| 精品久久国产字幕高潮| 日韩欧美中文一区二区| 欧美电影免费观看高清完整版在 | 欧美国产视频在线| 久久精品亚洲麻豆av一区二区| 日韩美女视频在线| 亚洲精品一区二区三区影院 | 自拍偷拍亚洲综合| 1区2区3区精品视频| 亚洲欧洲三级电影| 中文字幕在线观看不卡| 国产精品久久久久久久午夜片| 中文字幕精品综合| 专区另类欧美日韩| 亚洲精品久久嫩草网站秘色| 亚洲色图另类专区| 亚洲国产视频一区二区| 丝瓜av网站精品一区二区| 日韩精品欧美成人高清一区二区| 视频一区二区中文字幕| 日韩av成人高清| 国产美女精品在线| 成人午夜在线播放| 在线观看日韩一区| 日韩欧美精品在线| 国产精品无遮挡| 亚洲永久精品国产| 成人一二三区视频| 91在线精品一区二区三区| 91成人国产精品| 日韩欧美自拍偷拍| 中文字幕在线不卡一区二区三区| 亚洲一区二区中文在线| 美女视频黄a大片欧美| 国产不卡在线视频| 欧美色图片你懂的| 久久综合五月天婷婷伊人| 成人免费视频在线观看| 性欧美疯狂xxxxbbbb| 国产曰批免费观看久久久| 91看片淫黄大片一级在线观看| 欧美人动与zoxxxx乱| 久久精品一二三| 亚洲一区在线视频观看| 黑人精品欧美一区二区蜜桃 | 日韩一级片网站| |精品福利一区二区三区| 日韩国产欧美在线观看| 春色校园综合激情亚洲| 8x福利精品第一导航| 日本一二三不卡| 日韩国产在线一| 9色porny自拍视频一区二区| 91精品国产综合久久婷婷香蕉| 欧美国产日韩在线观看| 免费看欧美美女黄的网站| av电影一区二区| 精品电影一区二区| 午夜成人免费视频| 99久久夜色精品国产网站| 日韩欧美一区二区三区在线| 亚洲欧美色综合| 国产精品 欧美精品| 欧美肥妇free| 亚洲欧美日韩国产另类专区| 国产一区激情在线| 91精品国产一区二区| 一区二区三国产精华液| 不卡av在线网| 久久久久久久久99精品| 秋霞电影一区二区| 欧美欧美欧美欧美| 麻豆精品久久久| 在线播放亚洲一区| 亚洲国产精品影院| 91美女在线看| 国产精品卡一卡二卡三| 国产经典欧美精品| 久久影院视频免费| 免费成人在线播放| 欧美日韩在线播放一区| 亚洲乱码国产乱码精品精的特点| 国产成人午夜电影网| 久久影院电视剧免费观看| 捆绑变态av一区二区三区| 欧美丰满美乳xxx高潮www| 亚洲成人手机在线| 欧美精品在线观看播放| 亚洲成人免费电影| 欧美视频中文字幕| 亚洲男同1069视频| 在线国产电影不卡| 一区二区三区在线观看动漫| 色综合久久中文字幕综合网| 亚洲同性gay激情无套| 99久久久免费精品国产一区二区| 国产精品久久精品日日| 91在线视频观看| 亚洲在线视频免费观看| 欧美色倩网站大全免费| 午夜精品久久久久久久| 日韩一区二区三区在线视频| 久久国产尿小便嘘嘘尿| 欧美精品一区二区三区高清aⅴ| 精品一区二区日韩| 国产午夜精品一区二区| 成人一区二区三区中文字幕| 中文字幕日韩一区| 日本精品一级二级| 亚洲18影院在线观看| 日韩欧美国产一区二区三区 | 国产精品亚洲а∨天堂免在线| 欧美激情一区在线| 91免费视频大全| 亚洲一区二区三区四区五区黄 | 国产人妖乱国产精品人妖| av在线播放成人| 午夜精品久久久久影视| 欧美变态口味重另类| 成人精品一区二区三区四区| 亚洲精品欧美综合四区| 在线成人小视频| 国产黄色成人av| 亚洲福利电影网| 久久午夜电影网| 色美美综合视频| 精油按摩中文字幕久久| 中文字幕色av一区二区三区|