Message ID | 20221005113145.9325-1-naush@raspberrypi.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Naush, Thank you for the patch. On Wed, Oct 05, 2022 at 12:31:45PM +0100, Naushir Patuck via libcamera-devel wrote: > 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 s/Monochrom/Monochrome/ I'll fix this small issue when applying. > 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@raspberrypi.com> > Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > .../data/{imx296.json => imx296_mono.json} | 0 > src/ipa/raspberrypi/data/meson.build | 2 +- > .../pipeline/raspberrypi/raspberrypi.cpp | 18 +++++++++++++++--- > 3 files changed, 16 insertions(+), 4 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..5d77715f3448 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,10 +1559,14 @@ 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 > + if (!configFromEnv || *configFromEnv == '\0') { > + std::string model = sensor_->model(); > + if (isMonoSensor(sensor_)) > + model += "_mono"; > + configurationFile = ipa_->configurationFile(model + ".json"); > + } else { > configurationFile = std::string(configFromEnv); > + } > > IPASettings settings(configurationFile, sensor_->model()); >
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..5d77715f3448 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,10 +1559,14 @@ 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 + if (!configFromEnv || *configFromEnv == '\0') { + std::string model = sensor_->model(); + if (isMonoSensor(sensor_)) + model += "_mono"; + configurationFile = ipa_->configurationFile(model + ".json"); + } else { configurationFile = std::string(configFromEnv); + } IPASettings settings(configurationFile, sensor_->model());