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

Reply via email to