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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Oct 7 03:33:57 CEST 2020


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 at ideasonboard.com>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart at 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);
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list