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 support for M2M(_MPLANE) caps.
Author:  Hans Verkuil <[email protected]>
Date:    Wed Aug 1 09:35:42 2012 +0200

Signed-off-by: Hans Verkuil <[email protected]>
(cherry picked from commit 71481ec343d55c6ded5e524b45cfe9ee34120628)

Signed-off-by: Gregor Jasny <[email protected]>

 utils/v4l2-compliance/v4l2-compliance.cpp   |   30 ++++++++++++++++++--------
 utils/v4l2-compliance/v4l2-test-formats.cpp |    8 +++---
 2 files changed, 25 insertions(+), 13 deletions(-)

---

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

diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp 
b/utils/v4l2-compliance/v4l2-compliance.cpp
index 2ffa3c7..66f2edb 100644
--- a/utils/v4l2-compliance/v4l2-compliance.cpp
+++ b/utils/v4l2-compliance/v4l2-compliance.cpp
@@ -128,6 +128,10 @@ std::string cap2s(unsigned cap)
                s += "\t\tVideo Output\n";
        if (cap & V4L2_CAP_VIDEO_OUTPUT_MPLANE)
                s += "\t\tVideo Output Multiplanar\n";
+       if (cap & V4L2_CAP_VIDEO_M2M)
+               s += "\t\tVideo Memory-to-Memory\n";
+       if (cap & V4L2_CAP_VIDEO_M2M_MPLANE)
+               s += "\t\tVideo Memory-to-Memory Multiplanar\n";
        if (cap & V4L2_CAP_VIDEO_OVERLAY)
                s += "\t\tVideo Overlay\n";
        if (cap & V4L2_CAP_VIDEO_OUTPUT_OVERLAY)
@@ -245,6 +249,7 @@ static int testCap(struct node *node)
        __u32 caps, dcaps;
        const __u32 video_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT 
|
                        V4L2_CAP_VIDEO_CAPTURE_MPLANE | 
V4L2_CAP_VIDEO_OUTPUT_MPLANE |
+                       V4L2_CAP_VIDEO_M2M | V4L2_CAP_VIDEO_M2M_MPLANE |
                        V4L2_CAP_VIDEO_OVERLAY | V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
        const __u32 vbi_caps = V4L2_CAP_VBI_CAPTURE | 
V4L2_CAP_SLICED_VBI_CAPTURE |
                        V4L2_CAP_VBI_OUTPUT | V4L2_CAP_SLICED_VBI_OUTPUT;
@@ -257,6 +262,7 @@ static int testCap(struct node *node)
                        V4L2_CAP_VIDEO_OUTPUT_OVERLAY | V4L2_CAP_VBI_OUTPUT |
                        V4L2_CAP_SLICED_VBI_OUTPUT | V4L2_CAP_MODULATOR |
                        V4L2_CAP_RDS_OUTPUT;
+       const __u32 m2m_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_VIDEO_M2M_MPLANE;
        const __u32 io_caps = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
 
        memset(&vcap, 0xff, sizeof(vcap));
@@ -272,8 +278,7 @@ static int testCap(struct node *node)
        fail_on_test(check_0(vcap.reserved, sizeof(vcap.reserved)));
        caps = vcap.capabilities;
        dcaps = vcap.device_caps;
-       node->is_m2m = (dcaps & (V4L2_CAP_VIDEO_CAPTURE | 
V4L2_CAP_VIDEO_CAPTURE_MPLANE)) &&
-                      (dcaps & (V4L2_CAP_VIDEO_OUTPUT | 
V4L2_CAP_VIDEO_OUTPUT_MPLANE));
+       node->is_m2m = dcaps & m2m_caps;
        fail_on_test(caps == 0);
        fail_on_test(!(caps & V4L2_CAP_DEVICE_CAPS));
        fail_on_test(dcaps & V4L2_CAP_DEVICE_CAPS);
@@ -290,7 +295,12 @@ static int testCap(struct node *node)
        fail_on_test(node->is_video && (dcaps & (vbi_caps | radio_caps)));
        fail_on_test(node->is_radio && (dcaps & (vbi_caps | video_caps)));
        fail_on_test(node->is_vbi && (dcaps & (video_caps | radio_caps)));
-       if (!node->is_m2m) {
+       if (node->is_m2m) {
+               // This will become an error as this combination of caps
+               // is on the feature removal list.
+               if ((dcaps & input_caps) && (dcaps & output_caps))
+                       warn("VIDIOC_QUERYCAP: m2m with video input and output 
caps\n");
+       } else {
                if (dcaps & input_caps)
                        fail_on_test(dcaps & output_caps);
                if (dcaps & output_caps)
@@ -494,18 +504,20 @@ int main(int argc, char **argv)
        else
                node.caps = vcap.capabilities;
        if (node.caps & (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VBI_CAPTURE |
-                        V4L2_CAP_SLICED_VBI_CAPTURE | V4L2_CAP_RDS_CAPTURE |
-                        V4L2_CAP_RADIO | V4L2_CAP_TUNER))
+                        V4L2_CAP_VIDEO_CAPTURE_MPLANE | 
V4L2_CAP_SLICED_VBI_CAPTURE |
+                        V4L2_CAP_RDS_CAPTURE | V4L2_CAP_RADIO | 
V4L2_CAP_TUNER))
                node.has_inputs = true;
        if (node.caps & (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VBI_OUTPUT |
-                        V4L2_CAP_SLICED_VBI_OUTPUT | V4L2_CAP_RDS_OUTPUT |
-                        V4L2_CAP_MODULATOR))
+                        V4L2_CAP_VIDEO_OUTPUT_MPLANE | 
V4L2_CAP_SLICED_VBI_OUTPUT |
+                        V4L2_CAP_RDS_OUTPUT | V4L2_CAP_MODULATOR))
                node.has_outputs = true;
        if (node.caps & (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VBI_CAPTURE |
-                        V4L2_CAP_SLICED_VBI_CAPTURE))
+                        V4L2_CAP_VIDEO_CAPTURE_MPLANE | 
V4L2_CAP_VIDEO_M2M_MPLANE |
+                        V4L2_CAP_VIDEO_M2M | V4L2_CAP_SLICED_VBI_CAPTURE))
                node.can_capture = true;
        if (node.caps & (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VBI_OUTPUT |
-                        V4L2_CAP_SLICED_VBI_OUTPUT))
+                        V4L2_CAP_VIDEO_OUTPUT_MPLANE | 
V4L2_CAP_VIDEO_M2M_MPLANE |
+                        V4L2_CAP_VIDEO_M2M | V4L2_CAP_SLICED_VBI_OUTPUT))
                node.can_output = true;
 
        /* Information Opts */
diff --git a/utils/v4l2-compliance/v4l2-test-formats.cpp 
b/utils/v4l2-compliance/v4l2-test-formats.cpp
index a651cd8..0935fb3 100644
--- a/utils/v4l2-compliance/v4l2-test-formats.cpp
+++ b/utils/v4l2-compliance/v4l2-test-formats.cpp
@@ -34,16 +34,16 @@
 
 static const __u32 buftype2cap[] = {
        0,
-       V4L2_CAP_VIDEO_CAPTURE,
-       V4L2_CAP_VIDEO_OUTPUT,
+       V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_M2M,
+       V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_M2M,
        V4L2_CAP_VIDEO_OVERLAY,
        V4L2_CAP_VBI_CAPTURE,
        V4L2_CAP_VBI_OUTPUT,
        V4L2_CAP_SLICED_VBI_CAPTURE,
        V4L2_CAP_SLICED_VBI_OUTPUT,
        V4L2_CAP_VIDEO_OUTPUT_OVERLAY,
-       V4L2_CAP_VIDEO_CAPTURE_MPLANE,
-       V4L2_CAP_VIDEO_OUTPUT_MPLANE,
+       V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_VIDEO_M2M_MPLANE,
+       V4L2_CAP_VIDEO_OUTPUT_MPLANE | V4L2_CAP_VIDEO_M2M_MPLANE,
 };
 
 static int testEnumFrameIntervals(struct node *node, __u32 pixfmt, __u32 w, 
__u32 h, bool valid)

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to