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");
}
}
看看具体问题吧