[libcamera-devel] [PATCH v2 09/20] libcamera: camera: Zero streams before validate()

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Jul 10 10:57:48 CEST 2020


Hi Jacopo,

Thank you for the patch.

On Thu, Jul 09, 2020 at 10:41:17AM +0200, Jacopo Mondi wrote:
> The current implementation of the Camera::configure() method zeroes the
> stream pointers assigned to the StreamConfiguration items before calling
> the pipeline handler configure() operation, just after the
> CameraConfiguration has been validated.
> 
> This discards the stream assignment performed at pipeline hander
> validation time, requiring platforms that need to perform that early
> assignment to maintain the association in place with custom data
> structures.
> 
> To allow pipeline handlers to use StreamConfiguration::setStream() at
> validate() time, zero the stream assignment before calling validate().
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

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

> ---
>  src/libcamera/camera.cpp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index 69a1b4428e3f..ca88c48b2830 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -753,6 +753,9 @@ int Camera::configure(CameraConfiguration *config)
>  	if (ret < 0)
>  		return ret;
>  
> +	for (auto it : *config)
> +		it.setStream(nullptr);
> +
>  	if (config->validate() != CameraConfiguration::Valid) {
>  		LOG(Camera, Error)
>  			<< "Can't configure camera with invalid configuration";
> @@ -763,7 +766,6 @@ int Camera::configure(CameraConfiguration *config)
>  
>  	for (unsigned int index = 0; index < config->size(); ++index) {
>  		StreamConfiguration &cfg = config->at(index);
> -		cfg.setStream(nullptr);
>  		msg << " (" << index << ") " << cfg.toString();
>  	}
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list