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

Message ID 20201006144432.22908-10-jacopo@jmondi.org
State Accepted
Headers show
Series
  • CameraStream refactor
Related show

Commit Message

Jacopo Mondi Oct. 6, 2020, 2:44 p.m. UTC
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@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@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(-)

Comments

Laurent Pinchart Oct. 7, 2020, 1:33 a.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Tue, Oct 06, 2020 at 04:44:28PM +0200, Jacopo Mondi wrote:
> 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@ideasonboard.com>
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  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);
>

Patch

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);