读书人

linux上V4L2编程ioctl VIDIOC_DQBUF

发布时间: 2012-10-15 09:45:25 作者: rapoo

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");

}

}
看看具体问题吧

读书人网 >UNIXLINUX

热点推荐