summaryrefslogtreecommitdiff
path: root/test/gstreamer/gstreamer_test.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-05-25 01:58:09 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-20 15:12:11 +0300
commit3a18ad1607d4963105270f48e78d6b4e94a2133f (patch)
tree94ea914cbf5bde9a551e5c0278e68c3d1f632ec5 /test/gstreamer/gstreamer_test.h
parent40f8cbda60c8dd792d1530d3c4889d71e223aa0b (diff)
libcamera: yaml_parser: Add iterator API
Allow using range-based for loops over YamlObject instances by implementing iterators. New YamlObject::DictAdapter and YamlObject::ListAdapter adapter classes are introduced to provide different iterators depending on the object type. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Han-Lin Chen <hanlinchen@chromium.org>
Diffstat (limited to 'test/gstreamer/gstreamer_test.h')
0 files changed, 0 insertions, 0 deletions
span>std::shared_ptr<Camera> camera, StreamRole role, unsigned int startCycles, unsigned int numRequests) { SimpleCaptureBalanced capture(camera); Results::Result ret = capture.configure(role); if (ret.first != Results::Pass) return ret; for (unsigned int starts = 0; starts < startCycles; starts++) { ret = capture.capture(numRequests); if (ret.first != Results::Pass) return ret; } return { Results::Pass, "Balanced capture of " + std::to_string(numRequests) + " requests with " + std::to_string(startCycles) + " start cycles" }; } Results::Result testRequestUnbalance(std::shared_ptr<Camera> camera, StreamRole role, unsigned int numRequests) { SimpleCaptureUnbalanced capture(camera); Results::Result ret = capture.configure(role); if (ret.first != Results::Pass) return ret; return capture.capture(numRequests); } Results testSingleStream(std::shared_ptr<Camera> camera) { static const std::vector<std::pair<std::string, StreamRole>> roles = { { "raw", Raw }, { "still", StillCapture }, { "video", VideoRecording }, { "viewfinder", Viewfinder }, }; static const std::vector<unsigned int> numRequests = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 }; Results results(numRequests.size() * roles.size() * 3); for (const auto &role : roles) { std::cout << "= Test role " << role.first << std::endl; /* * Test single capture cycles * * Makes sure the camera completes the exact number of requests queued. * Example failure is a camera that needs N+M requests queued to * complete N requests to the application. */ std::cout << "* Test single capture cycles" << std::endl; for (unsigned int num : numRequests) results.add(testRequestBalance(camera, role.second, 1, num)); /* * Test multiple start/stop cycles * * Makes sure the camera supports multiple start/stop cycles.