From 1b30992b623e15f6be9ea9f425d14dfa6c372c8d Mon Sep 17 00:00:00 2001 From: Umang Jain Date: Thu, 28 Oct 2021 22:32:54 +0530 Subject: android: Camera3RequestDescriptor: Provide a constructor for StreamBuffer Provide a constructor for StreamBuffer and use that while populating Camera3RequestDescriptor::buffers_ vector. Also provide the default move-constructor (required as StreamBuffer is stored in a vector in Camera3RequestDescriptor) and destructor for the StreamBuffer struct. Also declare a default move assignment operator and disable the copy constructor and move operator explicitly with LIBCAMERA_DISABLE_COPY(). While at it, initialize pointers members in the StreamBuffer struct to nullptr, with StreamBuffer::status set to Status::Success by default. Signed-off-by: Umang Jain Reviewed-by: Laurent Pinchart Reviewed-by: Hirokazu Honda Reviewed-by: Jacopo Mondi --- src/android/camera_request.cpp | 19 ++++++++++++++++--- src/android/camera_request.h | 17 ++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) (limited to 'src/android') diff --git a/src/android/camera_request.cpp b/src/android/camera_request.cpp index 5bac1b8f..8162aa78 100644 --- a/src/android/camera_request.cpp +++ b/src/android/camera_request.cpp @@ -37,9 +37,7 @@ Camera3RequestDescriptor::Camera3RequestDescriptor( CameraStream *stream = static_cast(buffer.stream->priv); - buffers_.push_back({ stream, buffer.buffer, nullptr, - buffer.acquire_fence, Status::Success, - nullptr, nullptr, nullptr, this }); + buffers_.emplace_back(stream, buffer, this); } /* Clone the controls associated with the camera3 request. */ @@ -54,3 +52,18 @@ Camera3RequestDescriptor::Camera3RequestDescriptor( } Camera3RequestDescriptor::~Camera3RequestDescriptor() = default; + +Camera3RequestDescriptor::StreamBuffer::StreamBuffer( + CameraStream *cameraStream, const camera3_stream_buffer_t &buffer, + Camera3RequestDescriptor *requestDescriptor) + : stream(cameraStream), camera3Buffer(buffer.buffer), + fence(buffer.acquire_fence), request(requestDescriptor) +{ +} + +Camera3RequestDescriptor::StreamBuffer::~StreamBuffer() = default; + +Camera3RequestDescriptor::StreamBuffer::StreamBuffer(StreamBuffer &&) = default; + +Camera3RequestDescriptor::StreamBuffer & +Camera3RequestDescriptor::StreamBuffer::operator=(Camera3RequestDescriptor::StreamBuffer &&) = default; diff --git a/src/android/camera_request.h b/src/android/camera_request.h index cfafa445..8d1204e5 100644 --- a/src/android/camera_request.h +++ b/src/android/camera_request.h @@ -34,15 +34,26 @@ public: }; struct StreamBuffer { + StreamBuffer(CameraStream *stream, + const camera3_stream_buffer_t &buffer, + Camera3RequestDescriptor *request); + ~StreamBuffer(); + + StreamBuffer(StreamBuffer &&); + StreamBuffer &operator=(StreamBuffer &&); + CameraStream *stream; buffer_handle_t *camera3Buffer; std::unique_ptr frameBuffer; int fence; - Status status; - libcamera::FrameBuffer *internalBuffer; - const libcamera::FrameBuffer *srcBuffer; + Status status = Status::Success; + libcamera::FrameBuffer *internalBuffer = nullptr; + const libcamera::FrameBuffer *srcBuffer = nullptr; std::unique_ptr dstBuffer; Camera3RequestDescriptor *request; + + private: + LIBCAMERA_DISABLE_COPY(StreamBuffer) }; /* Keeps track of streams requiring post-processing. */ -- cgit v1.2.1