[PATCH 1/3] libcamera: pipeline: rkisp1: Detect invalid sensor configurations

Jacopo Mondi jacopo.mondi at ideasonboard.com
Fri May 2 10:21:13 CEST 2025


Hi Kieran

On Thu, May 01, 2025 at 03:16:07PM +0100, Kieran Bingham wrote:
> If we select a Sensor Format that is larger than the ISP capabilities
> the pipeline will not be able to successfully start.
>
> Detect this during validate - and report accordingly, returning
> an 'Invalid' state to reflect that we were not able to
> reconfigure to adjust to a working state in this instance.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 675f0a7490a6..d8c6100946bc 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -673,9 +673,21 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
>  	sensorFormat_ = sensor->getFormat(mbusCodes, maxSize,
>  					  mainPath->maxResolution());
>
> +

Additional blank line

> +	/*
> +	 * TODO: There doesn't seem to be a valid occasion to set the size to
> +	 * the native resolution if there was not a supported size found above.

It might be me, but I can't parse this

> +	 */
>  	if (sensorFormat_.size.isNull())
>  		sensorFormat_.size = sensor->resolution();
>
> +	if (sensorFormat_.size > mainPath->maxResolution()) {
> +		LOG(RkISP1, Error)
> +			<< "Sensor format size " << sensorFormat_.size
> +			<< " exceeds maximum possible size " << mainPath->maxResolution();
> +		return Invalid;

This should never happen as

  	sensorFormat_ = sensor->getFormat(mbusCodes, maxSize,
  					  mainPath->maxResolution());

Should guarantee that the returned resolution is never larger than
mainPath->maxResolution() ?


> +	}
> +
>  	return status;
>  }
>
> --
> 2.48.1
>


More information about the libcamera-devel mailing list