[libcamera-devel] [PATCH v2 06/12] android: camera_stream: Pass StreamBuffer to process()

Umang Jain umang.jain at ideasonboard.com
Tue Oct 19 13:47:56 CEST 2021


From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Now that we have a proper structure to model a stream buffer, pass it to
CameraStream::process() instead of the camera3_stream_buffer_t. This
will allow accessing other members of StreamBuffer in subsequent
commits.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
---
 src/android/camera_device.cpp |  2 +-
 src/android/camera_stream.cpp | 14 +++++++-------
 src/android/camera_stream.h   |  5 +++--
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 74d9b952..80e11d4b 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1152,7 +1152,7 @@ void CameraDevice::requestComplete(Request *request)
 			continue;
 		}
 
-		int ret = cameraStream->process(*src, buffer.buffer, descriptor);
+		int ret = cameraStream->process(*src, buffer, descriptor);
 
 		/*
 		 * Return the FrameBuffer to the CameraStream now that we're
diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp
index 8f47e4d8..f3cc77e7 100644
--- a/src/android/camera_stream.cpp
+++ b/src/android/camera_stream.cpp
@@ -143,15 +143,15 @@ int CameraStream::waitFence(int fence)
 }
 
 int CameraStream::process(const FrameBuffer &source,
-			  camera3_stream_buffer_t &camera3Dest,
+			  Camera3RequestDescriptor::StreamBuffer &dest,
 			  Camera3RequestDescriptor *request)
 {
 	/* Handle waiting on fences on the destination buffer. */
-	int fence = camera3Dest.acquire_fence;
+	int fence = dest.buffer.acquire_fence;
 	if (fence != -1) {
 		int ret = waitFence(fence);
 		::close(fence);
-		camera3Dest.acquire_fence = -1;
+		dest.buffer.acquire_fence = -1;
 		if (ret < 0) {
 			LOG(HAL, Error) << "Failed waiting for fence: "
 					<< fence << ": " << strerror(-ret);
@@ -167,14 +167,14 @@ int CameraStream::process(const FrameBuffer &source,
 	 * separate thread.
 	 */
 	const StreamConfiguration &output = configuration();
-	CameraBuffer dest(*camera3Dest.buffer, output.pixelFormat, output.size,
-			  PROT_READ | PROT_WRITE);
-	if (!dest.isValid()) {
+	CameraBuffer destBuffer(*dest.buffer.buffer, output.pixelFormat,
+				output.size, PROT_READ | PROT_WRITE);
+	if (!destBuffer.isValid()) {
 		LOG(HAL, Error) << "Failed to create destination buffer";
 		return -EINVAL;
 	}
 
-	return postProcessor_->process(source, &dest, request);
+	return postProcessor_->process(source, &destBuffer, request);
 }
 
 FrameBuffer *CameraStream::getBuffer()
diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h
index 405b232d..197bd995 100644
--- a/src/android/camera_stream.h
+++ b/src/android/camera_stream.h
@@ -19,7 +19,8 @@
 #include <libcamera/geometry.h>
 #include <libcamera/pixel_format.h>
 
-class Camera3RequestDescriptor;
+#include "camera_request.h"
+
 class CameraDevice;
 class PostProcessor;
 
@@ -119,7 +120,7 @@ public:
 
 	int configure();
 	int process(const libcamera::FrameBuffer &source,
-		    camera3_stream_buffer_t &camera3Buffer,
+		    Camera3RequestDescriptor::StreamBuffer &dest,
 		    Camera3RequestDescriptor *request);
 	libcamera::FrameBuffer *getBuffer();
 	void putBuffer(libcamera::FrameBuffer *buffer);
-- 
2.31.0



More information about the libcamera-devel mailing list