首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux上V4L2编程,ioctl VIDIOC_DQBUF时,为什么总是返回-1呢?怎么解决

2012-10-15 
linux下V4L2编程,ioctl VIDIOC_DQBUF时,为什么总是返回-1呢?如何解决?linux下V4L2编程,// 开始录制enum v4

linux下V4L2编程,ioctl VIDIOC_DQBUF时,为什么总是返回-1呢?如何解决?
linux下V4L2编程,
 // 开始录制
  enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  ret = ioctl( camerafd, VIDIOC_STREAMON, &type);
  if (ret < 0)
  {
  printf("VIDIOC_STREAMON failed (%d)\n", ret);
  return ret;
  }

  // Get frame
  ret = ioctl( camerafd, VIDIOC_DQBUF, &buf);
  if (ret < 0)
  {
  qDebug()<<"VIDIOC_DQBUF failed 001234500(%d)"<<ret;
  //printf("VIDIOC_DQBUF failed 0000(%d)\n", ret);
  return ret;
  }

执行ret = ioctl( camerafd, VIDIOC_DQBUF, &buf);这句是,返回值总是-1 
请问这是什么原因,要怎么解决啊?
求高人指点~~~~~ 先谢谢大家啦

[解决办法]
返回-1也有很多情况
使用
if (-1 == xioctl(fd, VIDIOC_DQBUF, &buf))

{

switch (errno)

{

case EAGAIN:

return 0;

  

case EIO:

/* Could ignore EIO, see spec. */

  

/* fall through */

  

default:

errno_exit("VIDIOC_DQBUF");

}


看看具体问题吧

热点排行