pipeline: rkisp1: Support IPA tuning file

Pass the path name of the YAML IPA tuning file to the IPA module. The
file name is derived from the sensor name ("${sensor_name}.yaml"), with
a fallback to "uncalibrated.yaml".

The tuning file name can be manually overridden with the
LIBCAMERA_RKISP1_TUNING_FILE environment variable.

Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Florian Sylvestre
2022-06-17 11:23:11 +02:00
committed by Laurent Pinchart
parent e9c53ac4d8
commit 011a4668fb
3 changed files with 35 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
# SPDX-License-Identifier: CC0-1.0
conf_files = files([
'uncalibrated.yaml',
])
install_data(conf_files,
install_dir : ipa_data_dir / 'rkisp1')

View File

@@ -0,0 +1,8 @@
# SPDX-License-Identifier: CC0-1.0
%YAML 1.2
---
version: 1
algorithms:
- Agc:
- Awb:
...

View File

@@ -321,7 +321,25 @@ int RkISP1CameraData::loadIPA(unsigned int hwRevision)
ipa_->paramsBufferReady.connect(this, &RkISP1CameraData::paramFilled);
ipa_->metadataReady.connect(this, &RkISP1CameraData::metadataReady);
int ret = ipa_->init(IPASettings{ "", sensor_->model() }, hwRevision);
/*
* The API tuning file is made from the sensor name unless the
* environment variable overrides it. If
*/
std::string ipaTuningFile;
char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RKISP1_TUNING_FILE");
if (!configFromEnv || *configFromEnv == '\0') {
ipaTuningFile = ipa_->configurationFile(sensor_->model() + ".yaml");
/*
* If the tuning file isn't found, fall back to the
* 'uncalibrated' configuration file.
*/
if (ipaTuningFile.empty())
ipaTuningFile = ipa_->configurationFile("uncalibrated.yaml");
} else {
ipaTuningFile = std::string(configFromEnv);
}
int ret = ipa_->init({ ipaTuningFile, sensor_->model() }, hwRevision);
if (ret < 0) {
LOG(RkISP1, Error) << "IPA initialization failure";
return ret;