[libcamera-devel] [RFC v1 4/5] libcamera: pipeline: ipu3: Get VCM information
Kate Hsuan
hpa at redhat.com
Thu Apr 14 09:43:41 CEST 2022
It is an interface of CameraData to get the VCM steps. Also, the VCM step
value is stored in ConfigInfo.
Signed-off-by: Kate Hsuan<hpa at redhat.com>
---
src/libcamera/pipeline/ipu3/ipu3.cpp | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 9f113171..9cc12e4c 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -85,6 +85,8 @@ public:
ControlInfoMap ipaControls_;
+ int getSensorControls();
+
private:
void metadataReady(unsigned int id, const ControlList &metadata);
void paramsBufferReady(unsigned int id);
@@ -670,6 +672,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
configInfo.sensorInfo = sensorInfo;
configInfo.bdsOutputSize = config->imguConfig().bds;
configInfo.iif = config->imguConfig().iif;
+ configInfo.sensorInfo.maxVcmSteps = data->getSensorControls();
ret = data->ipa_->configure(configInfo, &data->ipaControls_);
if (ret) {
@@ -1271,6 +1274,18 @@ void IPU3CameraData::setSensorControls([[maybe_unused]] unsigned int id,
focusLens->setFocusPosition(focusValue.get<int32_t>());
}
+int IPU3CameraData::getSensorControls()
+{
+ int ret = 0;
+
+ CameraLens *focusLens = cio2_.sensor()->focusLens();
+ if (!focusLens)
+ return 0;
+
+ ret = focusLens->getFocusCapabilityies();
+ return ret;
+}
+
void IPU3CameraData::paramsBufferReady(unsigned int id)
{
IPU3Frames::Info *info = frameInfos_.find(id);
--
2.35.1
More information about the libcamera-devel
mailing list