[libcamera-devel] [PATCH v2] lc-compliance: Add test to call multiple configure()
Nícolas F. R. A. Prado
nfraprado at collabora.com
Tue May 18 20:46:01 CEST 2021
Add a test to lc-compliance that calls configure() multiple times on the
camera before starting to capture. This isn't a common pattern for
applications but is allowed and so should be tested by lc-compliance.
Signed-off-by: Nícolas F. R. A. Prado <nfraprado at collabora.com>
---
Changes in v2:
- Thanks to Niklas:
- Move roles vector inside the configure test
src/lc-compliance/single_stream.cpp | 32 ++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/lc-compliance/single_stream.cpp b/src/lc-compliance/single_stream.cpp
index 8318b42f42d6..9159ea17fcf2 100644
--- a/src/lc-compliance/single_stream.cpp
+++ b/src/lc-compliance/single_stream.cpp
@@ -33,6 +33,26 @@ Results::Result testRequestBalance(std::shared_ptr<Camera> camera,
std::to_string(startCycles) + " start cycles" };
}
+Results::Result testMultipleConfigures(std::shared_ptr<Camera> camera,
+ StreamRole role, unsigned int numRequests)
+{
+ const std::vector<StreamRole> roles = { Raw, StillCapture, VideoRecording, Viewfinder };
+ Results::Result ret;
+
+ SimpleCaptureBalanced capture(camera);
+
+ for (auto r: roles) {
+ ret = capture.configure(r);
+ if (ret.first == Results::Fail)
+ return ret;
+ }
+ ret = capture.configure(role);
+ if (ret.first != Results::Pass)
+ return ret;
+
+ return capture.capture(numRequests);
+}
+
Results::Result testRequestUnbalance(std::shared_ptr<Camera> camera,
StreamRole role, unsigned int numRequests)
{
@@ -55,7 +75,7 @@ Results testSingleStream(std::shared_ptr<Camera> camera)
};
static const std::vector<unsigned int> numRequests = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };
- Results results(numRequests.size() * roles.size() * 3);
+ Results results(numRequests.size() * roles.size() * 3 + roles.size());
for (const auto &role : roles) {
std::cout << "= Test role " << role.first << std::endl;
@@ -91,6 +111,16 @@ Results testSingleStream(std::shared_ptr<Camera> camera)
std::cout << "* Test unbalanced stop" << std::endl;
for (unsigned int num : numRequests)
results.add(testRequestUnbalance(camera, role.second, num));
+
+ /*
+ * Test multiple configure()
+ *
+ * Makes sure that the camera supports being configured multiple
+ * times, with only the last one taking effect, before starting
+ * to capture.
+ */
+ std::cout << "* Test multiple configure()" << std::endl;
+ results.add(testMultipleConfigures(camera, role.second, numRequests.back()));
}
return results;
--
2.31.1
More information about the libcamera-devel
mailing list