QCamera2: HAL3: Add tracking_af vendor tags
Add vendor tags to support tracking AF:
- trackingAfTrigger (control)
- afRegionsConfidence (dynamic)
Test: Camera CTS and PTS
Bug: 36069090
Change-Id: I4028b5f09894c8c58b514212b003d6f6395d018d
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 0df6c03..f3d75a2 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -7955,6 +7955,11 @@
hAfRegions->rect.height);
}
+ // AF region confidence
+ IF_META_AVAILABLE(int32_t, afRegionConfidence, CAM_INTF_META_AF_REGIONS_CONFIDENCE, metadata) {
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_AF_REGIONS_CONFIDENCE, afRegionConfidence, 1);
+ }
+
IF_META_AVAILABLE(int32_t, whiteBalance, CAM_INTF_PARM_WHITE_BALANCE, metadata) {
int val = lookupFwkName(WHITE_BALANCE_MODES_MAP,
METADATA_MAP_SIZE(WHITE_BALANCE_MODES_MAP), *whiteBalance);
@@ -10679,6 +10684,7 @@
vsMode = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;
optStabMode = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;
uint8_t shadingmap_mode = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
+ uint8_t trackingAfTrigger = NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER_IDLE;
switch (type) {
case CAMERA3_TEMPLATE_PREVIEW:
@@ -10779,6 +10785,7 @@
}
settings.update(ANDROID_CONTROL_AF_MODE, &focusMode, 1);
settings.update(NEXUS_EXPERIMENTAL_2017_HISTOGRAM_ENABLE, &histogramEnable, 1);
+ settings.update(NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER, &trackingAfTrigger, 1);
if (gCamCapability[mCameraId]->optical_stab_modes_count == 1 &&
gCamCapability[mCameraId]->optical_stab_modes[0] == CAM_OPT_STAB_ON)
@@ -12582,6 +12589,16 @@
}
}
+ // Tracking AF
+ if (frame_settings.exists(NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER)) {
+ uint8_t trackingAfTrigger =
+ frame_settings.find(NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER).data.u8[0];
+ if (ADD_SET_PARAM_ENTRY_TO_BATCH(hal_metadata, CAM_INTF_META_TRACKING_AF_TRIGGER,
+ trackingAfTrigger)) {
+ rc = BAD_VALUE;
+ }
+ }
+
return rc;
}