aboutsummaryrefslogtreecommitdiffstats
path: root/utils/v4l2-compliance/v4l2-test-codecs.cpp
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-08-21 16:33:22 +0200
committerHans Verkuil <hans.verkuil@cisco.com>2012-08-21 16:38:22 +0200
commitee58aa47645cb92b82b4881c5ed2f142b20bc8db (patch)
tree7e8ffc05998ef393c240eeb8843164fd579d5479 /utils/v4l2-compliance/v4l2-test-codecs.cpp
parent574f9328842eaa1b1e767ce9a1abd8cd869e783c (diff)
v4l2-compliance: add VIDIOC_(TRY_)DECODER_CMD tests.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Diffstat (limited to 'utils/v4l2-compliance/v4l2-test-codecs.cpp')
-rw-r--r--utils/v4l2-compliance/v4l2-test-codecs.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/utils/v4l2-compliance/v4l2-test-codecs.cpp b/utils/v4l2-compliance/v4l2-test-codecs.cpp
index 60f861a2..6a5efa94 100644
--- a/utils/v4l2-compliance/v4l2-test-codecs.cpp
+++ b/utils/v4l2-compliance/v4l2-test-codecs.cpp
@@ -60,3 +60,33 @@ int testEncoder(struct node *node)
fail_on_test(ret != EPERM && ret != EINVAL);
return 0;
}
+
+int testDecoder(struct node *node)
+{
+ struct v4l2_decoder_cmd cmd;
+ int ret;
+
+ memset(&cmd, 0xff, sizeof(cmd));
+ memset(&cmd.raw, 0, sizeof(cmd.raw));
+ ret = doioctl(node, VIDIOC_DECODER_CMD, &cmd);
+ if (ret == ENOTTY)
+ return ret;
+ fail_on_test(ret != EINVAL);
+ ret = doioctl(node, VIDIOC_TRY_DECODER_CMD, &cmd);
+ fail_on_test(ret == ENOTTY);
+ fail_on_test(ret != EINVAL);
+ cmd.cmd = V4L2_DEC_CMD_STOP;
+ cmd.flags = V4L2_DEC_CMD_STOP_IMMEDIATELY;
+ ret = doioctl(node, VIDIOC_TRY_DECODER_CMD, &cmd);
+ fail_on_test(ret != 0);
+ ret = doioctl(node, VIDIOC_DECODER_CMD, &cmd);
+ fail_on_test(ret != 0);
+ cmd.cmd = V4L2_DEC_CMD_PAUSE;
+ cmd.flags = 0;
+ ret = doioctl(node, VIDIOC_DECODER_CMD, &cmd);
+ fail_on_test(ret != EPERM && ret != EINVAL);
+ cmd.cmd = V4L2_DEC_CMD_RESUME;
+ ret = doioctl(node, VIDIOC_DECODER_CMD, &cmd);
+ fail_on_test(ret != EPERM && ret != EINVAL);
+ return 0;
+}

Privacy Policy