ipa: raspberrypi: Include autofocus controls in the IPA ControlInfoMap
Add all the autofocus controls handled by the IPA into the ControlInfoMap if a controllable lens actuator is present. Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com> Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@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
aa2028e42f
commit
3caa0dde0e
1 changed files with 18 additions and 0 deletions
|
@ -97,6 +97,18 @@ static const ControlInfoMap::Map ipaControls{
|
|||
{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }
|
||||
};
|
||||
|
||||
/* IPA controls handled conditionally, if the lens has a focus control */
|
||||
static const ControlInfoMap::Map ipaAfControls{
|
||||
{ &controls::AfMode, ControlInfo(controls::AfModeValues) },
|
||||
{ &controls::AfRange, ControlInfo(controls::AfRangeValues) },
|
||||
{ &controls::AfSpeed, ControlInfo(controls::AfSpeedValues) },
|
||||
{ &controls::AfMetering, ControlInfo(controls::AfMeteringValues) },
|
||||
{ &controls::AfWindows, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
|
||||
{ &controls::AfTrigger, ControlInfo(controls::AfTriggerValues) },
|
||||
{ &controls::AfPause, ControlInfo(controls::AfPauseValues) },
|
||||
{ &controls::LensPosition, ControlInfo(0.0f, 32.0f, 1.0f) }
|
||||
};
|
||||
|
||||
LOG_DEFINE_CATEGORY(IPARPI)
|
||||
|
||||
namespace ipa::RPi {
|
||||
|
@ -248,6 +260,8 @@ int IPARPi::init(const IPASettings &settings, bool lensPresent, IPAInitResult *r
|
|||
|
||||
/* Return the controls handled by the IPA */
|
||||
ControlInfoMap::Map ctrlMap = ipaControls;
|
||||
if (lensPresent_)
|
||||
ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));
|
||||
result->controlInfo = ControlInfoMap(std::move(ctrlMap), controls::controls);
|
||||
|
||||
return 0;
|
||||
|
@ -489,6 +503,10 @@ int IPARPi::configure(const IPACameraSensorInfo &sensorInfo, const IPAConfig &ip
|
|||
ControlInfo(static_cast<int32_t>(helper_->exposure(exposureMin, mode_.minLineLength).get<std::micro>()),
|
||||
static_cast<int32_t>(maxShutter.get<std::micro>()));
|
||||
|
||||
/* Declare Autofocus controls, only if we have a controllable lens */
|
||||
if (lensPresent_)
|
||||
ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));
|
||||
|
||||
result->controlInfo = ControlInfoMap(std::move(ctrlMap), controls::controls);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue