From: Andrea <audetto@tiscali.it>
To: video4linux-list@redhat.com
Subject: A question about VIDIOC_DQBUF
Date: Tue, 08 Jul 2008 21:18:49 +0100 [thread overview]
Message-ID: <4873CBA9.1090603@tiscali.it> (raw)
Hi,
I would like to understand better the way VIDIOC_DQBUF works.
I've read the documentation at
http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec/r8849.htm
and some tutorial at
http://lwn.net/Articles/240667/
I'm trying to check the implementation of pwc of the 2 ioctl VIDIOC_DQBUF and VIDIOC_QBUF.
Is the following correct?
- First, an application queues a buffer, then it dequeues the buffer.
- Then again, a buffer is queued and then dequeued.
- Dequeuing a buffer blocks is the buffer is not ready (unless device opened with O_NONBLOCK).
- Trying to dequeue a buffer without queuing it first is an error, and the ioctl VIDIOC_DQBUF should
return -EINVAL.
<- end of question ->
Now, about pwc: (if the above is correct).
1) VIDIOC_DQBUF blocks always until a buffer is ready, regardless of O_NONBLOCK.
2) VIDIOC_DQBUF does not check if a buffer has been previously queued. Moreover VIDIOC_QBUF is
almost a no-op. It has no way to check if a buffer has been queued before VIDIOC_DQBUF.
If I have understood correctly (very unlikely), this is the reason why mplayer hangs while stopping
the stream with pwc:
while (!ioctl(priv->video_fd, VIDIOC_DQBUF, &buf));
This code should eventually return -EINVAL, while pwc just blocks waiting for the next buffer (which
never arrives because VIDIOC_STREAMOFF has been called).
I've read that video-buf should simplify the handling of buffers. Should I try it?
Andrea
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
next reply other threads:[~2008-07-08 20:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-08 20:18 Andrea [this message]
2008-07-08 22:14 ` A question about VIDIOC_DQBUF Andrea
2008-07-10 21:02 ` Andrea
2008-07-11 7:31 ` Jean-Francois Moine
2008-07-11 20:03 ` Andrea
[not found] ` <c8b4dbe10807090704t4e98b8cu253fab39a9dd81d@mail.gmail.com>
2008-07-11 19:17 ` Andrea
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4873CBA9.1090603@tiscali.it \
--to=audetto@tiscali.it \
--cc=video4linux-list@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.