LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 725|回复: 0

抓取 ov511 图像程序 在Redhat 和 Ubuntu 上运行的差异!

[复制链接]
发表于 2008-4-24 13:44:04 | 显示全部楼层 |阅读模式
抓取 ov511 图像程序 在Redhat 和 Ubuntu 上运行的差异!

我在网上下了vidcat ,修改了一下来抓取OV511的图像(网眼 v2000),在

redhat9  2.4.20上这个运行这个程序可以抓到图像,运行没有问题。但是同样的

这个应用程序在ubuntu 2.6.22 上编译可以通过,一运行就提示:

VIDIOCMCAPTURE:Invalid argument

然后程序退出运行。出错的地方在下面这个函数中,在网上查找了相关的资料,还

是没有找到原因的所在,请大虾们指点指点吧,3Q!


  1. get_image (int dev, int width, int height, int palette ,int *size)
  2. {
  3.         struct video_mbuf vid_buf;
  4.         struct video_mmap vid_mmap;
  5.         char *map, *convmap;
  6.         int len;
  7.         int bytes = 3;

  8.         if (ioctl (dev, VIDIOCGMBUF, &vid_buf) == -1) {
  9.             perror ("VIDIOCGMBUF");               
  10.                  }

  11.         map = mmap (0, vid_buf.size,

  12. PROT_READ|PROT_WRITE,MAP_SHARED,dev,0);
  13.         if ((unsigned char *)-1 == (unsigned char *)map) {
  14.                 perror ("mmap()");
  15.                 return (NULL);
  16.         }

  17.         vid_mmap.format = palette;
  18.         vid_mmap.frame = 0;
  19.         vid_mmap.width = width;
  20.         vid_mmap.height = height;

  21.         if (ioctl (dev, VIDIOCMCAPTURE, &vid_mmap) == -1) {
  22.                 printf("debug ----- 1\n");
  23.                 perror ("VIDIOCMCAPTURE");  // *********************问题

  24. 所在******************
  25.                
  26.                 fprintf (stderr, "args: width=%d height=%d palette=%

  27. d\n",
  28.                                         vid_mmap.width, vid_mmap.height,
  29.                                                                         

  30.        vid_mmap.format);
  31.                 munmap (map, vid_buf.size);
  32.                 return (NULL);
  33.         }
  34.         if (ioctl (dev, VIDIOCSYNC, &vid_mmap.frame) == -1) {
  35.                 perror ("VIDIOCSYNC");
  36.                 munmap (map, vid_buf.size);
  37.                 return (NULL);
  38.         }
  39.         *size = vid_buf.size;
  40.        
  41.         }
  42.        
  43.         return (map);
  44.         fprintf (stderr, "got picture\n");
  45. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表