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: test two stateful encoder corner cases
Author:  Hans Verkuil <hverkuil-ci...@xs4all.nl>
Date:    Fri Mar 29 15:38:50 2019 +0100

1) No buffers are queued on either vb2_queue, but STREAMON is called
   for both queues. The next capture buffer queued should return empty
   with FLAG_LAST set.

2) The CAPTURE queue contains buffers, the OUTPUT queue does not. Now
   ENC_CMD_STOP. Check that the dequeued capture buffer is empty and
   has FLAG_LAST set.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

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

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=81397f2b56b6d6a7e944f602203be9c1decc4a60
diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp 
b/utils/v4l2-compliance/v4l2-test-buffers.cpp
index be606e48821c..6b645fd97453 100644
--- a/utils/v4l2-compliance/v4l2-test-buffers.cpp
+++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp
@@ -1273,6 +1273,44 @@ int testMmap(struct node *node, unsigned frame_count, 
enum poll_mode pollmode)
                                         pollmode, capture_count));
                fail_on_test(node->streamoff(q.g_type()));
                fail_on_test(node->streamoff(q.g_type()));
+               if (node->is_m2m)
+                       fail_on_test(node->streamoff(m2m_q.g_type()));
+
+               if (node->codec_mask & STATEFUL_ENCODER) {
+                       struct v4l2_encoder_cmd cmd;
+                       buffer buf_cap(m2m_q);
+
+                       memset(&cmd, 0, sizeof(cmd));
+                       cmd.cmd = V4L2_ENC_CMD_STOP;
+
+                       /* No buffers are queued, call STREAMON, then STOP */
+                       fail_on_test(node->streamon(q.g_type()));
+                       fail_on_test(node->streamon(m2m_q.g_type()));
+                       fail_on_test(doioctl(node, VIDIOC_ENCODER_CMD, &cmd));
+
+                       fail_on_test(buf_cap.querybuf(node, 0));
+                       fail_on_test(buf_cap.qbuf(node));
+                       fail_on_test(buf_cap.dqbuf(node));
+                       fail_on_test(!(buf_cap.g_flags() & V4L2_BUF_FLAG_LAST));
+                       for (unsigned p = 0; p < buf_cap.g_num_planes(); p++)
+                               fail_on_test(buf_cap.g_bytesused(p));
+                       fail_on_test(node->streamoff(q.g_type()));
+                       fail_on_test(node->streamoff(m2m_q.g_type()));
+
+                       /* Call STREAMON, queue one CAPTURE buffer, then STOP */
+                       fail_on_test(node->streamon(q.g_type()));
+                       fail_on_test(node->streamon(m2m_q.g_type()));
+                       fail_on_test(buf_cap.querybuf(node, 0));
+                       fail_on_test(buf_cap.qbuf(node));
+                       fail_on_test(doioctl(node, VIDIOC_ENCODER_CMD, &cmd));
+
+                       fail_on_test(buf_cap.dqbuf(node));
+                       fail_on_test(!(buf_cap.g_flags() & V4L2_BUF_FLAG_LAST));
+                       for (unsigned p = 0; p < buf_cap.g_num_planes(); p++)
+                               fail_on_test(buf_cap.g_bytesused(p));
+                       fail_on_test(node->streamoff(q.g_type()));
+                       fail_on_test(node->streamoff(m2m_q.g_type()));
+               }
 
                if (node->supports_orphaned_bufs) {
                        fail_on_test(q.reqbufs(node, 0));
@@ -1288,7 +1326,6 @@ int testMmap(struct node *node, unsigned frame_count, 
enum poll_mode pollmode)
                }
 
                if (node->is_m2m) {
-                       fail_on_test(node->streamoff(m2m_q.g_type()));
                        if (node->supports_orphaned_bufs) {
                                fail_on_test(m2m_q.reqbufs(node, 0));
                                m2m_q.munmap_bufs(node);

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

Reply via email to