mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
v4l2: also poll for output devices
Note that the V4L2 API defines that for output devices POLLOUT indicates that a buffer is ready to be dequeued. https://bugzilla.gnome.org/show_bug.cgi?id=698992
This commit is contained in:
parent
fd0123800c
commit
d4126ff986
2 changed files with 6 additions and 8 deletions
|
@ -632,13 +632,8 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
|
|||
GstV4l2Object *obj = pool->obj;
|
||||
GstClockTime timestamp;
|
||||
|
||||
if (obj->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
|
||||
/* select works for input devices when data is available. According to the
|
||||
* specs we can also poll to find out when a frame has been displayed but
|
||||
* that just seems to lock up here */
|
||||
if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
|
||||
goto poll_error;
|
||||
}
|
||||
if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
|
||||
goto poll_error;
|
||||
|
||||
memset (&vbuffer, 0x00, sizeof (vbuffer));
|
||||
vbuffer.type = obj->type;
|
||||
|
|
|
@ -481,7 +481,10 @@ gst_v4l2_open (GstV4l2Object * v4l2object)
|
|||
|
||||
pollfd.fd = v4l2object->video_fd;
|
||||
gst_poll_add_fd (v4l2object->poll, &pollfd);
|
||||
gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE);
|
||||
if (v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
||||
gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE);
|
||||
else
|
||||
gst_poll_fd_ctl_write (v4l2object->poll, &pollfd, TRUE);
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
|
Loading…
Reference in a new issue