QCamera2: HAL3: Add AF_SCENE_CHANGE vendor tag

AF_SCENE_CHANGE is used to indicate AF algorithm detects a scene change
within AF ROI (Region of Interest).

Bug: 28912374
Change-Id: I4b9d36bf9939fff0c80fb3c5824b10ed1fd5eadf
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 58599a6..471fb5f 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -6783,6 +6783,11 @@
         camMetadata.update(QCAMERA3_INSTANT_AEC_MODE, instant_aec_mode, 1);
     }
 
+    // AF scene change
+    IF_META_AVAILABLE(uint8_t, afSceneChange, CAM_INTF_META_AF_SCENE_CHANGE, metadata) {
+        camMetadata.update(NEXUS_EXPERIMENTAL_2016_AF_SCENE_CHANGE, afSceneChange, 1);
+    }
+
     /* In batch mode, cache the first metadata in the batch */
     if (mBatchSize && firstMetadataInBatch) {
         mCachedMetadata.clear();
@@ -8719,6 +8724,7 @@
 #ifndef USE_HAL_3_3
        ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST,
 #endif
+       NEXUS_EXPERIMENTAL_2016_AF_SCENE_CHANGE,
        // DevCamDebug metadata result_keys_basic
        DEVCAMDEBUG_META_ENABLE,
        // DevCamDebug metadata result_keys AF
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
index 2830963..9d6062f 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
@@ -216,6 +216,7 @@
 vendor_tag_info_t nexus_experimental_2016[NEXUS_EXPERIMENTAL_2016_END -
         NEXUS_EXPERIMENTAL_2016_START] = {
    {"3a.hybrid_3a_enable",                     TYPE_BYTE  },
+   {"control.af_scene_change",                 TYPE_BYTE  },
       // DevCamDebug vendor tag
    { "devcamdebug_meta_enable",                TYPE_BYTE  },
    // DevCamDebug vendor tag AF
@@ -330,6 +331,7 @@
     (uint32_t)QCAMERA3_SENSOR_IS_MONO_ONLY,
 
     //NEXUS_EXPERIMENTAL_2016
+    (uint32_t)NEXUS_EXPERIMENTAL_2016_AF_SCENE_CHANGE,
     // DEVCAMDEBUG
     (uint32_t)DEVCAMDEBUG_META_ENABLE,
     // DEVCAMDEBUG AF
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
index e39efed..99e2639 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
@@ -230,6 +230,7 @@
     QCAMERA3_INSTANT_AEC_END,
 
     NEXUS_EXPERIMENTAL_2016_HYBRID_AE_ENABLE = NEXUS_EXPERIMENTAL_2016_START,
+    NEXUS_EXPERIMENTAL_2016_AF_SCENE_CHANGE,
     // DEVCAMDEBUG
     DEVCAMDEBUG_META_ENABLE,
     // DEVCAMDEBUG AF
diff --git a/msm8998/QCamera2/stack/common/cam_intf.h b/msm8998/QCamera2/stack/common/cam_intf.h
index 1b82026..c1e2246 100644
--- a/msm8998/QCamera2/stack/common/cam_intf.h
+++ b/msm8998/QCamera2/stack/common/cam_intf.h
@@ -1107,6 +1107,7 @@
     INCLUDE(CAM_INTF_META_DC_LOW_POWER_ENABLE,          uint8_t,                     1);
     INCLUDE(CAM_INTF_META_DC_SAC_OUTPUT_INFO,           cam_sac_output_info_t,       1);
     INCLUDE(CAM_INTF_META_HYBRID_AE,                    uint8_t,                     1);
+    INCLUDE(CAM_INTF_META_AF_SCENE_CHANGE,              uint8_t,                     1);
     /* DevCamDebug metadata CAM_INTF.H */
     INCLUDE(CAM_INTF_META_DEV_CAM_ENABLE,               uint8_t,                     1);
     /* DevCamDebug metadata CAM_INTF.H AF */
diff --git a/msm8998/QCamera2/stack/common/cam_types.h b/msm8998/QCamera2/stack/common/cam_types.h
index 06269f3..167911d 100644
--- a/msm8998/QCamera2/stack/common/cam_types.h
+++ b/msm8998/QCamera2/stack/common/cam_types.h
@@ -2380,6 +2380,8 @@
     CAM_INTF_META_DEV_CAM_AWB_CCT,
     CAM_INTF_META_DEV_CAM_AWB_DECISION,
     /* DevCamDebug metadata end */
+    /* AF scene change */
+    CAM_INTF_META_AF_SCENE_CHANGE,
     CAM_INTF_PARM_MAX
 } cam_intf_parm_type_t;