summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2021-03-23 14:36:04 +0000
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-03-23 18:43:58 +0200
commitff9f60ce3fef7be119c29d75da4011dcd4b9f4e6 (patch)
tree0428cb2c92d582d5443a20ca351326fa950cf494
parent500c9a1f980d376d15829a2f1a24812ed74a7470 (diff)
ipa: Add sensor model string to IPASettings
Pass the sensor model string to the IPA init() method through the IPASettings structure. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/ipa/core.mojom8
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp3
-rw-r--r--src/libcamera/pipeline/raspberrypi/raspberrypi.cpp3
-rw-r--r--src/libcamera/pipeline/vimc/vimc.cpp10
-rw-r--r--test/ipa/ipa_interface_test.cpp2
5 files changed, 18 insertions, 8 deletions
diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom
index 5236a672..5363f1c5 100644
--- a/include/libcamera/ipa/core.mojom
+++ b/include/libcamera/ipa/core.mojom
@@ -145,8 +145,16 @@ struct IPABuffer {
* This field may be an empty string if the IPA doesn't require a configuration
* file.
*/
+
+ /**
+ * \var IPASettings::sensorModel
+ * \brief The sensor model name
+ *
+ * Provides the sensor model name to the IPA.
+ */
struct IPASettings {
string configurationFile;
+ string sensorModel;
};
/**
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index c9e3c5ef..fc40dcb3 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -1144,7 +1144,8 @@ int IPU3CameraData::loadIPA()
ipa_->queueFrameAction.connect(this, &IPU3CameraData::queueFrameAction);
- ipa_->init(IPASettings{});
+ CameraSensor *sensor = cio2_.sensor();
+ ipa_->init(IPASettings{ "", sensor->model() });
return 0;
}
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 00fa62c9..2c8ae31a 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -1227,7 +1227,8 @@ int RPiCameraData::loadIPA()
ipa_->setIspControls.connect(this, &RPiCameraData::setIspControls);
ipa_->setDelayedControls.connect(this, &RPiCameraData::setDelayedControls);
- IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"));
+ IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"),
+ sensor_->model());
return ipa_->init(settings);
}
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index 57c65b02..8f5f4ba3 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -422,18 +422,18 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media);
+ /* Locate and open the capture video node. */
+ if (data->init())
+ return false;
+
data->ipa_ = IPAManager::createIPA<ipa::vimc::IPAProxyVimc>(this, 0, 0);
if (data->ipa_ != nullptr) {
std::string conf = data->ipa_->configurationFile("vimc.conf");
- data->ipa_->init(IPASettings{ conf });
+ data->ipa_->init(IPASettings{ conf, data->sensor_->model() });
} else {
LOG(VIMC, Warning) << "no matching IPA found";
}
- /* Locate and open the capture video node. */
- if (data->init())
- return false;
-
/* Create and register the camera. */
std::set<Stream *> streams{ &data->stream_ };
std::shared_ptr<Camera> camera =
diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp
index 4b88806f..d6ca6f51 100644
--- a/test/ipa/ipa_interface_test.cpp
+++ b/test/ipa/ipa_interface_test.cpp
@@ -104,7 +104,7 @@ protected:
/* Test initialization of IPA module. */
std::string conf = ipa_->configurationFile("vimc.conf");
- int ret = ipa_->init(IPASettings{ conf });
+ int ret = ipa_->init(IPASettings{ conf, "vimc" });
if (ret < 0) {
cerr << "IPA interface init() failed" << endl;
return TestFail;