summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmang Jain <umang.jain@ideasonboard.com>2021-09-29 19:00:27 +0530
committerUmang Jain <umang.jain@ideasonboard.com>2021-09-30 18:28:36 +0530
commit25b0216886c70122d1e9d6a0fab35bd32a19f85a (patch)
tree9281cd720116586428656ab25af7701d8de4629a
parent2eca16b674ff9e849d7681fbc670325de87ad0a2 (diff)
android: camera_worker: Use Camera3RequestDescriptor as cookie
Use Camera3RequestDescriptor as cookie for the Capture Request. The cookie is used to lookup descriptors map in CameraDevice::requestComplete(). The map will be transformed to a queue in subsequent commit. Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--src/android/camera_device.cpp3
-rw-r--r--src/android/camera_worker.cpp4
-rw-r--r--src/android/camera_worker.h3
3 files changed, 6 insertions, 4 deletions
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 5e2fad1e..06003f5d 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -244,7 +244,8 @@ CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor(
* Create the CaptureRequest, stored as a unique_ptr<> to tie its
* lifetime to the descriptor.
*/
- request_ = std::make_unique<CaptureRequest>(camera);
+ request_ = std::make_unique<CaptureRequest>(camera,
+ reinterpret_cast<uint64_t>(this));
}
/*
diff --git a/src/android/camera_worker.cpp b/src/android/camera_worker.cpp
index 91313183..dabb3054 100644
--- a/src/android/camera_worker.cpp
+++ b/src/android/camera_worker.cpp
@@ -27,10 +27,10 @@ LOG_DECLARE_CATEGORY(HAL)
* by the CameraWorker which queues it to the libcamera::Camera after handling
* fences.
*/
-CaptureRequest::CaptureRequest(Camera *camera)
+CaptureRequest::CaptureRequest(Camera *camera, uint64_t cookie)
: camera_(camera)
{
- request_ = camera_->createRequest(reinterpret_cast<uint64_t>(this));
+ request_ = camera_->createRequest(cookie);
}
void CaptureRequest::addBuffer(Stream *stream, FrameBuffer *buffer, int fence)
diff --git a/src/android/camera_worker.h b/src/android/camera_worker.h
index 67ae50bd..c94f1632 100644
--- a/src/android/camera_worker.h
+++ b/src/android/camera_worker.h
@@ -8,6 +8,7 @@
#define __ANDROID_CAMERA_WORKER_H__
#include <memory>
+#include <stdint.h>
#include <libcamera/base/object.h>
#include <libcamera/base/thread.h>
@@ -22,7 +23,7 @@ class CameraDevice;
class CaptureRequest
{
public:
- CaptureRequest(libcamera::Camera *camera);
+ CaptureRequest(libcamera::Camera *camera, uint64_t cookie);
const std::vector<int> &fences() const { return acquireFences_; }
libcamera::ControlList &controls() { return request_->controls(); }