android: Remove CameraWorker

The CameraWorker class purpose was to handle acquire fences for incoming
capture requests directed to libcamera.

Now that fences are handled by the core library, it is not required to
handle them in the HAL and the CameraWorker and CaptureRequest classes
can be dropped.

Update the core in CameraDevice class accordingly to queue Requests
directly to the libcamera::Camera and set the release_fence to the
value of the FrameBuffer::fence() for streams of type ::Direct.

While at it make CameraRequest::StreamBuffer::fence a UniqueFD to ease
the management of the fences file descriptor values.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Jacopo Mondi 2021-10-25 11:47:44 +02:00
parent a71834e1a0
commit 015fa7f718
8 changed files with 28 additions and 236 deletions

View file

@ -13,6 +13,7 @@
#include <libcamera/base/class.h>
#include <libcamera/base/mutex.h>
#include <libcamera/base/unique_fd.h>
#include <libcamera/camera.h>
#include <libcamera/framebuffer.h>
@ -20,7 +21,6 @@
#include <hardware/camera3.h>
#include "camera_metadata.h"
#include "camera_worker.h"
class CameraBuffer;
class CameraStream;
@ -45,7 +45,7 @@ public:
CameraStream *stream;
buffer_handle_t *camera3Buffer;
std::unique_ptr<libcamera::FrameBuffer> frameBuffer;
int fence;
libcamera::UniqueFD fence;
Status status = Status::Success;
libcamera::FrameBuffer *internalBuffer = nullptr;
const libcamera::FrameBuffer *srcBuffer = nullptr;
@ -72,7 +72,7 @@ public:
std::vector<StreamBuffer> buffers_;
CameraMetadata settings_;
std::unique_ptr<CaptureRequest> request_;
std::unique_ptr<libcamera::Request> request_;
std::unique_ptr<CameraMetadata> resultMetadata_;
bool complete_ = false;