[libcamera-devel] [PATCH v3 2/4] pipeline: raspberrypi: Update naming convention for tuning files

Naushir Patuck naush at raspberrypi.com
Mon Oct 3 11:55:56 CEST 2022


Append "_mono" to the sensor name when generating the tuning filename for
monochrome sensor variants. So the new naming convention is as follows:

<sensor_name>.json - Standard colour sensor variant
<sensor_name>_mono.json - Monochrom sensor variant

Rename the existing imx296.json file to imx296_mono.json as this tuning file
is based on the monochrome variant of the IMX296.

Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
 .../data/{imx296.json => imx296_mono.json}    |  0
 src/ipa/raspberrypi/data/meson.build          |  2 +-
 .../pipeline/raspberrypi/raspberrypi.cpp      | 20 +++++++++++++++----
 3 files changed, 17 insertions(+), 5 deletions(-)
 rename src/ipa/raspberrypi/data/{imx296.json => imx296_mono.json} (100%)

diff --git a/src/ipa/raspberrypi/data/imx296.json b/src/ipa/raspberrypi/data/imx296_mono.json
similarity index 100%
rename from src/ipa/raspberrypi/data/imx296.json
rename to src/ipa/raspberrypi/data/imx296_mono.json
diff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/raspberrypi/data/meson.build
index 211811cfa915..465a7a17ce6f 100644
--- a/src/ipa/raspberrypi/data/meson.build
+++ b/src/ipa/raspberrypi/data/meson.build
@@ -4,7 +4,7 @@ conf_files = files([
     'imx219.json',
     'imx219_noir.json',
     'imx290.json',
-    'imx296.json',
+    'imx296_mono.json',
     'imx378.json',
     'imx477.json',
     'imx477_noir.json',
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index dcd81650c32d..39a1c798df2e 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -67,6 +67,14 @@ SensorFormats populateSensorFormats(std::unique_ptr<CameraSensor> &sensor)
 	return formats;
 }
 
+bool isMonoSensor(std::unique_ptr<CameraSensor> &sensor)
+{
+	unsigned int mbusCode = sensor->mbusCodes()[0];
+	const BayerFormat &bayer = BayerFormat::fromMbusCode(mbusCode);
+
+	return bayer.order == BayerFormat::Order::MONO;
+}
+
 PixelFormat mbusCodeToPixelFormat(unsigned int mbus_code,
 				  BayerFormat::Packing packingReq)
 {
@@ -1551,12 +1559,16 @@ int RPiCameraData::loadIPA(ipa::RPi::IPAInitResult *result)
 	 */
 	std::string configurationFile;
 	char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RPI_TUNING_FILE");
-	if (!configFromEnv || *configFromEnv == '\0')
-		configurationFile = ipa_->configurationFile(sensor_->model() + ".json");
-	else
+	std::string model = sensor_->model();
+	if (!configFromEnv || *configFromEnv == '\0') {
+		if (isMonoSensor(sensor_))
+			model += "_mono";
+		configurationFile = ipa_->configurationFile(model + ".json");
+	} else {
 		configurationFile = std::string(configFromEnv);
+	}
 
-	IPASettings settings(configurationFile, sensor_->model());
+	IPASettings settings(configurationFile, model);
 
 	return ipa_->init(settings, result);
 }
-- 
2.25.1



More information about the libcamera-devel mailing list