Hi Franz, I'm not *the* v4l2 guru, but I can tell what my driver does and what I think drivers are supposed to do. On Fri, 2003-05-16 at 08:57, Franz Reinhardt wrote: > Q: What if no buffers are enqued by the app ? Then nothing happens. The driver will - at best - set a flag that locks capture to that session. However, you will still have to queue buffers. The advantage of first queue - then start is, that at the point that you start, all buffers are already there and enqueued, which means better buffering and performance. If the buffers are enqueued later, the driver has to initialize its internal capture system, which degrades performance a bit. > Q1: Does DQBUF block, when the hardware is just capturing in this > buffer, until capturing has finished ? Depends on whether O_NONBLOCK is given in the open() flags (second argument). I'm not sure whether O_NONBLOCK is part of the v4l2 specs or whether *all* drivers implement support for it. > Q2: Is there any way to get the last captured buffer (and skip the other > buffers)? No. > Q3: What should the driver do, if the application wants to deque the > last buffer ? If streaming is going on, the hardware need at least one > buffer, or the streaming has to be stopped. The same as when VIDEO_STREAMON is called without any buffers queued. Capturing in the driver is stopped, but the capture lock is still being held by that session. > Q: To restart capturing, do I have to start @ VIDIOC_REQBUFS again ? Yes. Ronald