diff --git a/WebcamTracker.cc b/WebcamTracker.cc index 9890e5e..0206d30 100644 --- a/WebcamTracker.cc +++ b/WebcamTracker.cc @@ -110,6 +110,42 @@ WebcamTracker::WebcamTracker(const char * device) cerr << " (EINVAL)"; cerr << endl; } + + struct v4l2_buffer querybuf; + querybuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + querybuf.index = 0; + ret = ioctl(m_fd, VIDIOC_QUERYBUF, &querybuf); + if (ret != 0) + { + cerr << "VIDIOC_QUERYBUF ioctl failed: returned " << ret + << ", errno: " << errno; + if (errno == EINVAL) + cerr << " (EINVAL)"; + cerr << endl; + } + if (querybuf.flags & V4L2_BUF_FLAG_DONE) + { + cout << "buf done" << endl; + } + + v4l2_buffer dqbuf; + dqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + dqbuf.memory = V4L2_MEMORY_MMAP; + ret = ioctl(m_fd, VIDIOC_DQBUF, &dqbuf); + if (ret != 0) + { + cerr << "VIDIOC_DQBUF failed! errno = " << errno; + if (errno == EAGAIN) + cerr << " (EAGAIN)"; + if (errno == EINVAL) + cerr << " (EINVAL)"; + if (errno == ENOMEM) + cerr << " (ENOMEM)"; + if (errno == EIO) + cerr << " (EIO)"; + cerr << endl; + } + } else {