From d62f02f96f8d509566c24bcaadeee35d4a018e3b Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 14 Sep 2018 10:00:35 +0200 Subject: v4l2-compliance: improve S_PARM test Check for framerates 0/1 and 1/0 as well, not just 0/0. Signed-off-by: Hans Verkuil --- utils/v4l2-compliance/v4l2-test-formats.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/utils/v4l2-compliance/v4l2-test-formats.cpp b/utils/v4l2-compliance/v4l2-test-formats.cpp index 4524dfd9..02c2ce9e 100644 --- a/utils/v4l2-compliance/v4l2-test-formats.cpp +++ b/utils/v4l2-compliance/v4l2-test-formats.cpp @@ -1236,6 +1236,28 @@ static int testParmType(struct node *node, unsigned type) fail_on_test(parm.type != type); if (!(parm.parm.capture.capability & V4L2_CAP_TIMEPERFRAME)) warn("S_PARM is supported but doesn't report V4L2_CAP_TIMEPERFRAME\n"); + ret = testParmStruct(node, parm); + if (ret) + return ret; + if (V4L2_TYPE_IS_OUTPUT(type)) { + parm.parm.output.timeperframe.numerator = 0; + parm.parm.output.timeperframe.denominator = 1; + } else { + parm.parm.capture.timeperframe.numerator = 0; + parm.parm.capture.timeperframe.denominator = 1; + } + fail_on_test(doioctl(node, VIDIOC_S_PARM, &parm)); + ret = testParmStruct(node, parm); + if (ret) + return ret; + if (V4L2_TYPE_IS_OUTPUT(type)) { + parm.parm.output.timeperframe.numerator = 1; + parm.parm.output.timeperframe.denominator = 0; + } else { + parm.parm.capture.timeperframe.numerator = 1; + parm.parm.capture.timeperframe.denominator = 0; + } + fail_on_test(doioctl(node, VIDIOC_S_PARM, &parm)); return testParmStruct(node, parm); } -- cgit v1.2.1