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

Subject: v4l2-compliance: improve VIDIOC_CREATE_BUFS checks
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Thu Sep 6 09:19:32 2018 +0200

Add tests for the multiplanar case:

- check that a mismatch in num_planes will return -EINVAL
- check handling of too small plane sizes

The second test was only done when streaming, now it is also done
when v4l2-compliance is called without the -s option.

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

 utils/v4l2-compliance/v4l2-test-buffers.cpp | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=a8c766b75f82d0facbeed5a392d91f4469ffd716
diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp 
b/utils/v4l2-compliance/v4l2-test-buffers.cpp
index d654a7cdb843..6864f924daec 100644
--- a/utils/v4l2-compliance/v4l2-test-buffers.cpp
+++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp
@@ -506,6 +506,26 @@ int testReqBufs(struct node *node)
                        fail_on_test(doioctl(node, VIDIOC_CREATE_BUFS, 
&crbufs));
                        fail_on_test(check_0(crbufs.reserved, 
sizeof(crbufs.reserved)));
                        fail_on_test(crbufs.index != q.g_buffers());
+
+                       if (node->is_video) {
+                               cv4l_fmt fmt;
+
+                               node->g_fmt(fmt, q.g_type());
+                               if (V4L2_TYPE_IS_MULTIPLANAR(q.g_type())) {
+                                       fmt.s_num_planes(fmt.g_num_planes() + 
1);
+                                       fail_on_test(q.create_bufs(node, 1, 
&fmt) != EINVAL);
+                                       node->g_fmt(fmt, q.g_type());
+                               }
+                               fmt.s_height(fmt.g_height() / 2);
+                               for (unsigned p = 0; p < fmt.g_num_planes(); 
p++)
+                                       fmt.s_sizeimage(fmt.g_sizeimage(p) / 2, 
p);
+                               fail_on_test(q.create_bufs(node, 1, &fmt) != 
EINVAL);
+                               fail_on_test(testQueryBuf(node, fmt.type, 
q.g_buffers()));
+                               node->g_fmt(fmt, q.g_type());
+                               for (unsigned p = 0; p < fmt.g_num_planes(); 
p++)
+                                       fmt.s_sizeimage(fmt.g_sizeimage(p) * 2, 
p);
+                               fail_on_test(q.create_bufs(node, 1, &fmt));
+                       }
                }
                fail_on_test(q.reqbufs(node));
        }

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

Reply via email to