[libcamera-devel] [PATCH v3] lc-compliance: Add test to call multiple configure()
Nícolas F. R. A. Prado
nfraprado at collabora.com
Mon May 24 19:00:55 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>
Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
---
Changes in v3:
- Thanks to Niklas:
- Add missing blank line
Changes in v2:
- Thanks to Niklas:
- Move roles vector inside the configure test
src/lc-compliance/single_stream.cpp | 33 ++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/src/lc-compliance/single_stream.cpp b/src/lc-compliance/single_stream.cpp
index 8318b42f42d6..cdc13461c7de 100644
--- a/src/lc-compliance/single_stream.cpp
+++ b/src/lc-compliance/single_stream.cpp
@@ -33,6 +33,27 @@ 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 +76,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 +112,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