[libcamera-devel] [PATCH v2 09/13] android: camera_device: Make CameraStream configuration nicer

Jacopo Mondi jacopo at jmondi.org
Tue Oct 6 16:44:28 CEST 2020


Loop over the CameraStream instances and use their interface to perform
CameraStream configuration.

Modify CameraStream::configure() to configure the android stream buffer
count and to retrieve the StreamConfiguration by index instead of
receiving it as a parameter.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/android/camera_device.cpp | 15 +++++----------
 src/android/camera_stream.cpp | 11 ++++++++---
 src/android/camera_stream.h   |  2 +-
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 678dca609003..1e2cbeeb92d1 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1287,17 +1287,12 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
 	 * StreamConfiguration and set the number of required buffers in
 	 * the Android camera3_stream_t.
 	 */
-	for (unsigned int i = 0; i < stream_list->num_streams; ++i) {
-		camera3_stream_t *stream = stream_list->streams[i];
-		CameraStream *cameraStream = static_cast<CameraStream *>(stream->priv);
-		const StreamConfiguration &cfg = cameraStream->configuration();
-
-		int ret = cameraStream->configure(cfg);
-		if (ret)
+	for (CameraStream &cameraStream : streams_) {
+		int ret = cameraStream.configure();
+		if (ret) {
+			LOG(HAL, Error) << "Failed to configure camera stream";
 			return ret;
-
-		/* Use the bufferCount confirmed by the validation process. */
-		stream->max_buffers = cfg.bufferCount;
+		}
 	}
 
 	/*
diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp
index 3946a2cdf844..f899be4fe007 100644
--- a/src/android/camera_stream.cpp
+++ b/src/android/camera_stream.cpp
@@ -38,10 +38,15 @@ Stream *CameraStream::stream() const
 	return configuration().stream();
 }
 
-int CameraStream::configure(const libcamera::StreamConfiguration &cfg)
+int CameraStream::configure()
 {
-	if (encoder_)
-		return encoder_->configure(cfg);
+	if (encoder_) {
+		int ret = encoder_->configure(configuration());
+		if (ret)
+			return ret;
+	}
+
+	camera3Stream_->max_buffers = configuration().bufferCount;
 
 	return 0;
 }
diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h
index f46cfd605d03..4c51f0fb3393 100644
--- a/src/android/camera_stream.h
+++ b/src/android/camera_stream.h
@@ -114,7 +114,7 @@ public:
 	const libcamera::StreamConfiguration &configuration() const;
 	libcamera::Stream *stream() const;
 
-	int configure(const libcamera::StreamConfiguration &cfg);
+	int configure();
 	int process(const libcamera::FrameBuffer &source,
 		    MappedCamera3Buffer *dest, CameraMetadata *metadata);
 
-- 
2.28.0



More information about the libcamera-devel mailing list