当前位置: 技术问答>linux和unix
抓取 ov511 图像程序在 Redhat 上成功运行,在 Ubuntu 上运行失败???
来源: 互联网 发布时间:2016-03-15
本文导语: 抓取 ov511 图像程序在 Redhat 上成功运行,在 Ubuntu 上运行失败??? 我在网上下了vidcat ,修改了一下来抓取OV511的图像(网眼 v2000),在 redhat9 2.4.20上这个运行这个程序可以抓到图像,运行没有问题。但是同样的 这个应...
抓取 ov511 图像程序在 Redhat 上成功运行,在 Ubuntu 上运行失败???
我在网上下了vidcat ,修改了一下来抓取OV511的图像(网眼 v2000),在
redhat9 2.4.20上这个运行这个程序可以抓到图像,运行没有问题。但是同样的
这个应用程序在ubuntu 2.6.22 上编译可以通过,一运行就提示:
VIDIOCMCAPTURE:Invalid argument
然后程序退出运行。出错的地方在下面这个函数中,在网上查找了相关的资料,还
是没有找到原因的所在,请大虾们指点指点吧,3Q!
get_image (int dev, int width, int height, int palette ,int *size)
{
struct video_mbuf vid_buf;
struct video_mmap vid_mmap;
char *map, *convmap;
int len;
int bytes = 3;
if (ioctl (dev, VIDIOCGMBUF, &vid_buf) == -1) {
perror ("VIDIOCGMBUF");
}
map = mmap (0, vid_buf.size,
PROT_READ|PROT_WRITE,MAP_SHARED,dev,0);
if ((unsigned char *)-1 == (unsigned char *)map) {
perror ("mmap()");
return (NULL);
}
vid_mmap.format = palette;
vid_mmap.frame = 0;
vid_mmap.width = width;
vid_mmap.height = height;
if (ioctl (dev, VIDIOCMCAPTURE, &vid_mmap) == -1) {
printf("debug ----- 1n");
perror ("VIDIOCMCAPTURE"); // *********************问题
所在******************
fprintf (stderr, "args: width=%d height=%d palette=%
dn",
vid_mmap.width, vid_mmap.height,
vid_mmap.format);
munmap (map, vid_buf.size);
return (NULL);
}
if (ioctl (dev, VIDIOCSYNC, &vid_mmap.frame) == -1) {
perror ("VIDIOCSYNC");
munmap (map, vid_buf.size);
return (NULL);
}
*size = vid_buf.size;
}
return (map);
fprintf (stderr, "got picturen");
}
|
我不清楚,你看看
http://www.linuxtv.org/downloads/video4linux/API/V4L1_API.html
#define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap) /* Grab frames */
看上去没错
vid_mmap.format = palette; 这里可能有问题
http://www.linuxtv.org/downloads/video4linux/API/V4L1_API.html
#define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap) /* Grab frames */
看上去没错
vid_mmap.format = palette; 这里可能有问题