summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-06-05 10:14:05 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-06-06 18:21:00 +0300
commitd66ff77759dc5aca41f4c575d7c962e97547406f (patch)
tree3f4fc5f180023adc5700acfeb3a82ae145f11e18
parentbdba31cc0258dbfc71cb0fe68a9350189ef985e4 (diff)
pipeline: ipa: rpi: Return lens controls from ipa->configure()
In addition to sensor controls, return lens controls from IpaBase::configure() back to the pipeline handler. If there are lens controls present in the ControlList, action them in the pipeline handler as part of the configure routine. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/ipa/raspberrypi.mojom3
-rw-r--r--src/ipa/rpi/common/ipa_base.cpp2
-rw-r--r--src/libcamera/pipeline/rpi/common/pipeline_base.cpp6
3 files changed, 7 insertions, 4 deletions
diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom
index 1ea51f99..ab4c4e2e 100644
--- a/include/libcamera/ipa/raspberrypi.mojom
+++ b/include/libcamera/ipa/raspberrypi.mojom
@@ -47,7 +47,8 @@ struct ConfigParams {
struct ConfigResult {
float modeSensitivity;
libcamera.ControlInfoMap controlInfo;
- libcamera.ControlList controls;
+ libcamera.ControlList sensorControls;
+ libcamera.ControlList lensControls;
};
struct StartResult {
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
index 7fe8ee73..866f6924 100644
--- a/src/ipa/rpi/common/ipa_base.cpp
+++ b/src/ipa/rpi/common/ipa_base.cpp
@@ -210,7 +210,7 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa
applyAGC(&agcStatus, ctrls);
}
- result->controls = std::move(ctrls);
+ result->sensorControls = std::move(ctrls);
/*
* Apply the correct limits to the exposure, gain and frame duration controls
diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index 3aef1f43..1e20fc2d 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -1200,8 +1200,10 @@ int CameraData::configureIPA(const CameraConfiguration *config, ipa::RPi::Config
return -EPIPE;
}
- if (!result->controls.empty())
- setSensorControls(result->controls);
+ if (!result->sensorControls.empty())
+ setSensorControls(result->sensorControls);
+ if (!result->lensControls.empty())
+ setLensControls(result->lensControls);
return 0;
}