pipeline: ipa: raspberrypi: Validate lens controls
Pass the available lens controls to the IPA through the configure() function. Validate that the V4L2_CID_FOCUS_ABSOLUTE does exist. If it doesn't, log a warning message, and do not advertise focus related controls from the IPA. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
c204a67bae
commit
b9923747ad
3 changed files with 25 additions and 0 deletions
|
@ -131,6 +131,7 @@ private:
|
|||
void setMode(const IPACameraSensorInfo &sensorInfo);
|
||||
bool validateSensorControls();
|
||||
bool validateIspControls();
|
||||
bool validateLensControls();
|
||||
void queueRequest(const ControlList &controls);
|
||||
void returnEmbeddedBuffer(unsigned int bufferId);
|
||||
void prepareISP(const ISPConfig &data);
|
||||
|
@ -155,6 +156,7 @@ private:
|
|||
|
||||
ControlInfoMap sensorCtrls_;
|
||||
ControlInfoMap ispCtrls_;
|
||||
ControlInfoMap lensCtrls_;
|
||||
bool lensPresent_;
|
||||
ControlList libcameraMetadata_;
|
||||
|
||||
|
@ -394,6 +396,15 @@ int IPARPi::configure(const IPACameraSensorInfo &sensorInfo, const IPAConfig &ip
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (lensPresent_) {
|
||||
lensCtrls_ = ipaConfig.lensControls;
|
||||
if (!validateLensControls()) {
|
||||
LOG(IPARPI, Warning) << "Lens validation failed, "
|
||||
<< "no lens control will be available.";
|
||||
lensPresent_ = false;
|
||||
}
|
||||
}
|
||||
|
||||
maxSensorGainCode_ = sensorCtrls_.at(V4L2_CID_ANALOGUE_GAIN).max().get<int32_t>();
|
||||
|
||||
/* Setup a metadata ControlList to output metadata. */
|
||||
|
@ -648,6 +659,16 @@ bool IPARPi::validateIspControls()
|
|||
return true;
|
||||
}
|
||||
|
||||
bool IPARPi::validateLensControls()
|
||||
{
|
||||
if (lensCtrls_.find(V4L2_CID_FOCUS_ABSOLUTE) == lensCtrls_.end()) {
|
||||
LOG(IPARPI, Error) << "Unable to find Lens control V4L2_CID_FOCUS_ABSOLUTE";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Converting between enums (used in the libcamera API) and the names that
|
||||
* we use to identify different modes. Unfortunately, the conversion tables
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue