libcamera, android, cam, gstreamer, qcam, v4l2: Reuse Request
Allow reuse of the Request object by implementing reuse(). This means the applications now have the responsibility of freeing the Request objects, so make all libcamera users (cam, qcam, v4l2-compat, gstreamer, android) do so. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
@@ -58,7 +58,7 @@ protected:
|
||||
const Stream *stream = buffers.begin()->first;
|
||||
FrameBuffer *buffer = buffers.begin()->second;
|
||||
|
||||
request = camera_->createRequest();
|
||||
request->reuse();
|
||||
request->addBuffer(stream, buffer);
|
||||
camera_->queueRequest(request);
|
||||
}
|
||||
@@ -98,9 +98,8 @@ protected:
|
||||
if (ret != TestPass)
|
||||
return ret;
|
||||
|
||||
std::vector<Request *> requests;
|
||||
for (const std::unique_ptr<FrameBuffer> &buffer : source.buffers()) {
|
||||
Request *request = camera_->createRequest();
|
||||
std::unique_ptr<Request> request = camera_->createRequest();
|
||||
if (!request) {
|
||||
std::cout << "Failed to create request" << std::endl;
|
||||
return TestFail;
|
||||
@@ -111,7 +110,7 @@ protected:
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
requests.push_back(request);
|
||||
requests_.push_back(std::move(request));
|
||||
}
|
||||
|
||||
completeRequestsCount_ = 0;
|
||||
@@ -125,8 +124,8 @@ protected:
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
for (Request *request : requests) {
|
||||
if (camera_->queueRequest(request)) {
|
||||
for (std::unique_ptr<Request> &request : requests_) {
|
||||
if (camera_->queueRequest(request.get())) {
|
||||
std::cout << "Failed to queue request" << std::endl;
|
||||
return TestFail;
|
||||
}
|
||||
@@ -160,6 +159,8 @@ protected:
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<std::unique_ptr<Request>> requests_;
|
||||
|
||||
unsigned int completeBuffersCount_;
|
||||
unsigned int completeRequestsCount_;
|
||||
std::unique_ptr<CameraConfiguration> config_;
|
||||
|
||||
Reference in New Issue
Block a user