This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-utils.git tree:

Subject: v4l2-ctl: skip captured buffers with flag V4L2_BUF_FLAG_ERROR
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Tue Feb 25 20:09:48 2014 +0100

These buffers contain invalid data, so just QBUF them again.

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>

 utils/v4l2-ctl/v4l2-ctl-streaming.cpp |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=22b7aa164f89fba1798481fc589a78214c0b0633

diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp 
b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
index d920b28..ea62661 100644
--- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
@@ -586,14 +586,19 @@ static int do_handle_cap(int fd, buffers &b, FILE *fout, 
int *index,
                buf.length = VIDEO_MAX_PLANES;
        }
 
-       ret = test_ioctl(fd, VIDIOC_DQBUF, &buf);
-       if (ret < 0 && errno == EAGAIN)
-               return 0;
-       if (ret < 0) {
-               fprintf(stderr, "%s: failed: %s\n", "VIDIOC_DQBUF", 
strerror(errno));
-               return -1;
+       for (;;) {
+               ret = test_ioctl(fd, VIDIOC_DQBUF, &buf);
+               if (ret < 0 && errno == EAGAIN)
+                       return 0;
+               if (ret < 0) {
+                       fprintf(stderr, "%s: failed: %s\n", "VIDIOC_DQBUF", 
strerror(errno));
+                       return -1;
+               }
+               if (!(buf.flags & V4L2_BUF_FLAG_ERROR))
+                       break;
+               test_ioctl(fd, VIDIOC_QBUF, &buf);
        }
-       if (fout && (!stream_skip || ignore_count_skip)) {
+       if (fout && (!stream_skip || ignore_count_skip) && !(buf.flags & 
V4L2_BUF_FLAG_ERROR)) {
                for (unsigned j = 0; j < b.num_planes; j++) {
                        unsigned used = b.is_mplane ? planes[j].bytesused : 
buf.bytesused;
                        unsigned offset = b.is_mplane ? planes[j].data_offset : 
0;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to