diff options
-rw-r--r-- | sys/v4l2/v4l2src_calls.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c index 576b6fbe..9e2e93e9 100644 --- a/sys/v4l2/v4l2src_calls.c +++ b/sys/v4l2/v4l2src_calls.c @@ -266,12 +266,17 @@ gst_v4l2src_capture_init (GstV4l2Src *v4l2src) p.parm.capture.readbuffers = v4l2src->breq.count; ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_S_PARM, &p); + v4l2src->breq.count = p.parm.capture.readbuffers; } } + if (v4l2src->breq.count < MIN_BUFFERS_QUEUED) { + v4l2src->breq.count = MIN_BUFFERS_QUEUED; + } /* request buffer info */ v4l2src->breq.type = v4l2src->format.type; - if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, VIDIOC_REQBUFS, &v4l2src->breq) < 0) { + if (ioctl(GST_V4L2ELEMENT(v4l2src)->video_fd, + VIDIOC_REQBUFS, &v4l2src->breq) < 0) { gst_element_error(GST_ELEMENT(v4l2src), "Error requesting buffers (%d) for %s: %s", v4l2src->breq.count, GST_V4L2ELEMENT(v4l2src)->device, g_strerror(errno)); |