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 test setting all enumerated timings.
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Fri Mar 14 15:12:42 2014 +0100

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>

 utils/v4l2-compliance/v4l2-test-io-config.cpp |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=cb239e955a2ee8f8fcd9ef7853c8de13aaf9b695

diff --git a/utils/v4l2-compliance/v4l2-test-io-config.cpp 
b/utils/v4l2-compliance/v4l2-test-io-config.cpp
index df2714d..da29a03 100644
--- a/utils/v4l2-compliance/v4l2-test-io-config.cpp
+++ b/utils/v4l2-compliance/v4l2-test-io-config.cpp
@@ -154,10 +154,19 @@ static int checkTimings(struct node *node, bool 
has_timings, bool is_input)
 {
        struct v4l2_enum_dv_timings enumtimings;
        struct v4l2_dv_timings timings;
-       int ret;
+       struct v4l2_format fmt;
+       bool is_mplane = node->caps & (V4L2_CAP_VIDEO_CAPTURE_MPLANE |
+                                      V4L2_CAP_VIDEO_OUTPUT_MPLANE |
+                                      V4L2_CAP_VIDEO_M2M_MPLANE);
+       unsigned type;
        unsigned i;
+       int ret;
 
        memset(&timings, 0xff, sizeof(timings));
+       if (node->can_capture)
+               type = is_mplane ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE : 
V4L2_BUF_TYPE_VIDEO_CAPTURE;
+       else
+               type = is_mplane ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE : 
V4L2_BUF_TYPE_VIDEO_OUTPUT;
        ret = doioctl(node, VIDIOC_G_DV_TIMINGS, &timings);
        if (ret && has_timings)
                return fail("TIMINGS cap set, but could not get current 
timings\n");
@@ -177,6 +186,16 @@ static int checkTimings(struct node *node, bool 
has_timings, bool is_input)
                        return fail("reserved not zeroed\n");
                if (enumtimings.index != i)
                        return fail("index changed!\n");
+               fail_on_test(doioctl(node, VIDIOC_S_DV_TIMINGS, 
&enumtimings.timings));
+               fmt.type = type;
+               fail_on_test(doioctl(node, VIDIOC_G_FMT, &fmt));
+
+               unsigned field = is_mplane ? fmt.fmt.pix_mp.field : 
fmt.fmt.pix.field;
+
+               if (enumtimings.timings.bt.interlaced)
+                       fail_on_test(field == V4L2_FIELD_NONE);
+               else
+                       fail_on_test(field != V4L2_FIELD_NONE);
        }
        if (i == 0 && has_timings)
                return fail("TIMINGS cap set, but no timings can be 
enumerated\n");
@@ -184,6 +203,8 @@ static int checkTimings(struct node *node, bool 
has_timings, bool is_input)
                return fail("TIMINGS cap was not set, but timings can be 
enumerated\n");
        if (ret != ENOTTY && ret != ENODATA && !has_timings)
                return fail("TIMINGS cap not set, but got wrong error code for 
enumeration (%d)\n", ret);
+       if (has_timings)
+               fail_on_test(doioctl(node, VIDIOC_S_DV_TIMINGS, &timings));
        ret = doioctl(node, VIDIOC_QUERY_DV_TIMINGS, &timings);
        if (!ret && !has_timings)
                return fail("TIMINGS cap was not set, but could still query 
timings\n");

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to