summaryrefslogtreecommitdiff
path: root/src/qcam/assets/feathericons/terminal.svg
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2021-02-24 12:50:40 +0100
committerJacopo Mondi <jacopo@jmondi.org>2021-03-03 09:50:13 +0100
commita725baf4b33320a71f03474627c9bf19cdafc4ed (patch)
treefe357c9c50066f43f71cd18ad995f56fbffbbfe1 /src/qcam/assets/feathericons/terminal.svg
parentd5473c962618f29e3f2f971b794a7fc770afc9bd (diff)
android: Move buffer mapping to CameraStream
The destination buffer for the post-processing component is currently first mapped in the CameraDevice class and then passed to CameraStream which simply calls the post-processor interface. Move the mapping to CameraStream::process() to tie the buffer mapping to the lifetime of the CameraBuffer instance. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/qcam/assets/feathericons/terminal.svg')
0 files changed, 0 insertions, 0 deletions
yright (C) 2021, Collabora Ltd. * * capture_test.cpp - Test camera capture */ #include <iostream> #include <gtest/gtest.h> #include "environment.h" #include "simple_capture.h" using namespace libcamera; const std::vector<int> NUMREQUESTS = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 }; const std::vector<StreamRole> ROLES = { Raw, StillCapture, VideoRecording, Viewfinder }; class SingleStream : public testing::TestWithParam<std::tuple<StreamRole, int>> { public: static std::string nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info); protected: void SetUp() override; void TearDown() override; std::shared_ptr<Camera> camera_; }; /* * We use gtest's SetUp() and TearDown() instead of constructor and destructor * in order to be able to assert on them. */ void SingleStream::SetUp() { Environment *env = Environment::get(); camera_ = env->cm()->get(env->cameraId()); ASSERT_EQ(camera_->acquire(), 0); } void SingleStream::TearDown() { if (!camera_) return; camera_->release(); camera_.reset(); } std::string SingleStream::nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info) { std::map<StreamRole, std::string> rolesMap = { { Raw, "Raw" }, { StillCapture, "StillCapture" }, { VideoRecording, "VideoRecording" }, { Viewfinder, "Viewfinder" } }; std::string roleName = rolesMap[std::get<0>(info.param)]; std::string numRequestsName = std::to_string(std::get<1>(info.param)); return roleName + "_" + numRequestsName; } /* * Test single capture cycles * * Makes sure the camera completes the exact number of requests queued. Example * failure is a camera that completes less requests than the number of requests * queued. */ TEST_P(SingleStream, Capture) { auto [role, numRequests] = GetParam(); SimpleCaptureBalanced capture(camera_); capture.configure(role); capture.capture(numRequests); } /* * Test multiple start/stop cycles * * Makes sure the camera supports multiple start/stop cycles. Example failure is * a camera that does not clean up correctly in its error path but is only * tested by single-capture applications. */ TEST_P(SingleStream, CaptureStartStop) { auto [role, numRequests] = GetParam(); unsigned int numRepeats = 3; SimpleCaptureBalanced capture(camera_); capture.configure(role); for (unsigned int starts = 0; starts < numRepeats; starts++) capture.capture(numRequests); } /* * Test unbalanced stop * * Makes sure the camera supports a stop with requests queued. Example failure * is a camera that does not handle cancelation of buffers coming back from the * video device while stopping. */ TEST_P(SingleStream, UnbalancedStop) { auto [role, numRequests] = GetParam(); SimpleCaptureUnbalanced capture(camera_); capture.configure(role); capture.capture(numRequests); } INSTANTIATE_TEST_SUITE_P(CaptureTests, SingleStream, testing::Combine(testing::ValuesIn(ROLES), testing::ValuesIn(NUMREQUESTS)), SingleStream::nameParameters);