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