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

奋斗的小Q 2011-09-26 09:14:37
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
请问这是什么原因,要怎么解决啊?
求高人指点~~~~~ 先谢谢大家啦
...全文
1562 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
eliry 2012-09-24
  • 打赏
  • 举报
回复
errno.h中定义的
laoyouji 2011-10-08
  • 打赏
  • 举报
回复
楼上,errno在哪定义啊?
coderQXR 2011-09-29
  • 打赏
  • 举报
回复
返回-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");

}

}
看看具体问题吧

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧