This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/v4l-utils.git tree:
Subject: v4l2-compliance: add G/S_STD tests Author: Hans Verkuil <[email protected]> Date: Fri Jan 21 17:17:54 2011 +0100 Signed-off-by: Hans Verkuil <[email protected]> utils/v4l2-compliance/v4l2-test-io-config.cpp | 54 +++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) --- http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=93a2497b58303eed421f0eac617c807dfde9266f diff --git a/utils/v4l2-compliance/v4l2-test-io-config.cpp b/utils/v4l2-compliance/v4l2-test-io-config.cpp index 9bce007..54079cc 100644 --- a/utils/v4l2-compliance/v4l2-test-io-config.cpp +++ b/utils/v4l2-compliance/v4l2-test-io-config.cpp @@ -31,7 +31,61 @@ #include <sys/ioctl.h> #include "v4l2-compliance.h" +static int checkStd(struct node *node, bool has_std, v4l2_std_id mask) +{ + v4l2_std_id std; + int ret; + + ret = doioctl(node, VIDIOC_G_STD, &std); + if (ret && has_std) + return fail("STD cap set, but could not get standard\n"); + if (!ret && !has_std) + return fail("STD cap not set, but could still get a standard\n"); + if (!ret && has_std) { + if (std & ~mask) + warn("current standard is invalid according to the input standard mask\n"); + if (std == 0) + return fail("Standard == 0?!\n"); + } + ret = doioctl(node, VIDIOC_S_STD, &std); + if (ret && has_std) + return fail("STD cap set, but could not set standard\n"); + if (!ret && !has_std) + return fail("STD cap not set, but could still set a standard\n"); + return 0; +} + int testStd(struct node *node) { + int ret; + unsigned i, o; + + for (i = 0; i < node->inputs; i++) { + struct v4l2_input input; + + input.index = i; + ret = doioctl(node, VIDIOC_ENUMINPUT, &input); + if (ret) + return fail("could not enumerate input %d?!\n", i); + ret = doioctl(node, VIDIOC_S_INPUT, &input.index); + if (ret) + return fail("could not select input %d.\n", i); + if (checkStd(node, input.capabilities & V4L2_IN_CAP_STD, input.std)) + return fail("STD failed for input %d.\n", i); + } + + for (o = 0; o < node->outputs; o++) { + struct v4l2_output output; + + output.index = o; + ret = doioctl(node, VIDIOC_ENUMOUTPUT, &output); + if (ret) + return fail("could not enumerate output %d?!\n", o); + ret = doioctl(node, VIDIOC_S_OUTPUT, &output.index); + if (ret) + return fail("could not select output %d.\n", o); + if (checkStd(node, output.capabilities & V4L2_OUT_CAP_STD, output.std)) + return fail("STD failed for output %d.\n", o); + } return 0; } _______________________________________________ linuxtv-commits mailing list [email protected] http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
