[libcamera-devel] [PATCH v2 1/5] libcamera: ipu3: Drop entityControls map

Jacopo Mondi jacopo at jmondi.org
Tue Sep 7 13:10:34 CEST 2021


The IPA::configure() function has an IPAConfigInfo parameters which
contains a map of numerical indexes to ControlInfoMap instances.

This is a leftover of the old IPA protocol, where it was not possible to
specify a rich interface as it is possible today and each entity
ControlInfoMap was indexed by a numerical id and stored in a map.

Now that the IPA interface allows to specify parameters by name, drop the
map and send the sensor's control info map only.

If we'll need more ControlInfoMap to be shared with the IPA, a new parameter
can be added to IPAConfigInfo.

Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 include/libcamera/ipa/ipu3.mojom     | 2 +-
 src/ipa/ipu3/ipu3.cpp                | 6 +++---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
index d561c2244907..2045ce909a88 100644
--- a/include/libcamera/ipa/ipu3.mojom
+++ b/include/libcamera/ipa/ipu3.mojom
@@ -32,7 +32,7 @@ struct IPU3Action {
 
 struct IPAConfigInfo {
 	libcamera.IPACameraSensorInfo sensorInfo;
-	map<uint32, libcamera.ControlInfoMap> entityControls;
+	libcamera.ControlInfoMap sensorControls;
 	libcamera.Size bdsOutputSize;
 	libcamera.Size iif;
 };
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index c925cf642611..2229bf4fc84e 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -337,14 +337,14 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize)
 
 int IPAIPU3::configure(const IPAConfigInfo &configInfo)
 {
-	if (configInfo.entityControls.empty()) {
-		LOG(IPAIPU3, Error) << "No controls provided";
+	if (configInfo.sensorControls.empty()) {
+		LOG(IPAIPU3, Error) << "No sensor controls provided";
 		return -ENODATA;
 	}
 
 	sensorInfo_ = configInfo.sensorInfo;
 
-	ctrls_ = configInfo.entityControls.at(0);
+	ctrls_ = configInfo.sensorControls;
 
 	const auto itExp = ctrls_.find(V4L2_CID_EXPOSURE);
 	if (itExp == ctrls_.end()) {
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index c287bf86e79a..92e869257e53 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -654,7 +654,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
 	}
 
 	ipa::ipu3::IPAConfigInfo configInfo;
-	configInfo.entityControls.emplace(0, data->cio2_.sensor()->controls());
+	configInfo.sensorControls = data->cio2_.sensor()->controls();
 	configInfo.sensorInfo = sensorInfo;
 	configInfo.bdsOutputSize = config->imguConfig().bds;
 	configInfo.iif = config->imguConfig().iif;
-- 
2.32.0



More information about the libcamera-devel mailing list