[libcamera-devel] [PATCH] libcamera: raspberrypi: Allow the tuning file to be set by an environment variable

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Jul 9 17:04:22 CEST 2021


Hi David,

On 07/07/2021 14:40, David Plowman wrote:
> The configuration (camera tuning) file used by the Raspberry Pi comes
> by default from the sensor name. However, we now allow this to be
> overridden by the LIBCAMERA_RPI_TUNING_FILE environment variable.

Some how I had it in my head that this would be an override occurring in
the IPA itself, but I think this is ok too.

> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> ---
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index 082eb1ee..a738770a 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -1232,8 +1232,18 @@ int RPiCameraData::loadIPA(ipa::RPi::SensorConfig *sensorConfig)
>  	ipa_->setIspControls.connect(this, &RPiCameraData::setIspControls);
>  	ipa_->setDelayedControls.connect(this, &RPiCameraData::setDelayedControls);
>  
> -	IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"),
> -			     sensor_->model());
> +	/*
> +	 * The configuration (tuning file) is made from the sensor name unless
> +	 * the environment variable overrides it.
> +	 */
> +	std::string configurationFile;
> +	char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RPI_TUNING_FILE");

We likely need to document this somewhere...

We have Documentation/environment_variables.rst

But that could be a follow up patch


> +	if (!configFromEnv || *configFromEnv == '\0')
> +		configurationFile = ipa_->configurationFile(sensor_->model() + ".json");

I'm not a particular fan of the current ipa_->configurationFile
implementation, and I think I see that it should have changes in the future.

If this were to be generalised, then the override should go there - but
given that this is quite specific to RPi needs right now - I think this
is ok.

However I could envisage that in the future this environment variable
gets deprecated, but I don't yet know what would replace it - so I
believe it's worth while to have this for now.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>


> +	else
> +		configurationFile = std::string(configFromEnv);
> +
> +	IPASettings settings(configurationFile, sensor_->model());
>  
>  	return ipa_->init(settings, sensorConfig);
>  }
> 


More information about the libcamera-devel mailing list