diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2012-08-21 16:33:22 +0200 |
---|---|---|
committer | Hans Verkuil <hans.verkuil@cisco.com> | 2012-08-21 16:38:22 +0200 |
commit | ee58aa47645cb92b82b4881c5ed2f142b20bc8db (patch) | |
tree | 7e8ffc05998ef393c240eeb8843164fd579d5479 /utils/v4l2-compliance/v4l2-test-codecs.cpp | |
parent | 574f9328842eaa1b1e767ce9a1abd8cd869e783c (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.cpp | 30 |
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; +} |