Snap for 4657601 from 3477a3887f2a77cf27196af1e77a40ecd4eaed0c to oc-m4-release
Change-Id: Id95bdc6dbe66cad8a24f6b7661141e4bf9419f55
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 771d35b..4248ddd 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -5630,6 +5630,11 @@
meta.find(NEXUS_EXPERIMENTAL_2016_HYBRID_AE_ENABLE).data.u8[0];
}
+ if (meta.exists(NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE)) {
+ pendingRequest.motion_detection_enable =
+ meta.find(NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE).data.u8[0];
+ }
+
/* DevCamDebug metadata processCaptureRequest */
if (meta.exists(DEVCAMDEBUG_META_ENABLE)) {
mDevCamDebugMetaEnable =
@@ -6845,6 +6850,7 @@
camMetadata.update(ANDROID_REQUEST_PIPELINE_DEPTH, &pendingRequest.pipeline_depth, 1);
camMetadata.update(ANDROID_CONTROL_CAPTURE_INTENT, &pendingRequest.capture_intent, 1);
camMetadata.update(NEXUS_EXPERIMENTAL_2016_HYBRID_AE_ENABLE, &pendingRequest.hybrid_ae_enable, 1);
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE, &pendingRequest.motion_detection_enable, 1);
if (mBatchSize == 0) {
// DevCamDebug metadata translateFromHalMetadata. Only update this one for non-HFR mode
camMetadata.update(DEVCAMDEBUG_META_ENABLE, &pendingRequest.DevCamDebug_meta_enable, 1);
@@ -8278,6 +8284,26 @@
frame_ois_data->ois_sample_shift_pixel_y, frame_ois_data->num_ois_sample);
}
+ // DevCamDebug metadata translateFromHalMetadata AEC MOTION
+ IF_META_AVAILABLE(float, DevCamDebug_aec_camera_motion_dx,
+ CAM_INTF_META_DEV_CAM_AEC_CAMERA_MOTION_DX, metadata) {
+ float fwk_DevCamDebug_aec_camera_motion_dx = *DevCamDebug_aec_camera_motion_dx;
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_X,
+ &fwk_DevCamDebug_aec_camera_motion_dx, 1);
+ }
+ IF_META_AVAILABLE(float, DevCamDebug_aec_camera_motion_dy,
+ CAM_INTF_META_DEV_CAM_AEC_CAMERA_MOTION_DY, metadata) {
+ float fwk_DevCamDebug_aec_camera_motion_dy = *DevCamDebug_aec_camera_motion_dy;
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_Y,
+ &fwk_DevCamDebug_aec_camera_motion_dy, 1);
+ }
+ IF_META_AVAILABLE(float, DevCamDebug_aec_subject_motion,
+ CAM_INTF_META_DEV_CAM_AEC_SUBJECT_MOTION, metadata) {
+ float fwk_DevCamDebug_aec_subject_motion = *DevCamDebug_aec_subject_motion;
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_SUBJECT_MOTION,
+ &fwk_DevCamDebug_aec_subject_motion, 1);
+ }
+
resultMetadata = camMetadata.release();
return resultMetadata;
}
@@ -10422,7 +10448,8 @@
TANGO_MODE_DATA_SENSOR_FULLFOV,
NEXUS_EXPERIMENTAL_2017_TRACKING_AF_TRIGGER,
NEXUS_EXPERIMENTAL_2017_PD_DATA_ENABLE,
- NEXUS_EXPERIMENTAL_2017_EXIF_MAKERNOTE
+ NEXUS_EXPERIMENTAL_2017_EXIF_MAKERNOTE,
+ NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE,
};
size_t request_keys_cnt =
@@ -10565,7 +10592,11 @@
NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_X,
NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_Y,
NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_PIXEL_X,
- NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_PIXEL_Y
+ NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_PIXEL_Y,
+ NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE,
+ NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_X,
+ NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_Y,
+ NEXUS_EXPERIMENTAL_2017_SUBJECT_MOTION
};
size_t result_keys_cnt =
@@ -13365,6 +13396,15 @@
}
}
+ // Motion Detection
+ if (frame_settings.exists(NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE)) {
+ uint8_t *motion_detection = (uint8_t *)
+ frame_settings.find(NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE).data.u8;
+ if (ADD_SET_PARAM_ENTRY_TO_BATCH(hal_metadata, CAM_INTF_META_MOTION_DETECTION_ENABLE, *motion_detection)) {
+ rc = BAD_VALUE;
+ }
+ }
+
// Histogram
if (frame_settings.exists(NEXUS_EXPERIMENTAL_2017_HISTOGRAM_ENABLE)) {
uint8_t histogramMode =
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.h b/msm8998/QCamera2/HAL3/QCamera3HWI.h
index c10c724..f7d8c42 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.h
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.h
@@ -597,6 +597,7 @@
uint8_t capture_intent;
uint8_t fwkCacMode;
uint8_t hybrid_ae_enable;
+ uint8_t motion_detection_enable;
/* DevCamDebug metadata PendingRequestInfo */
uint8_t DevCamDebug_meta_enable;
/* DevCamDebug metadata end */
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
index 6db2cbe..b08797c 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
@@ -373,6 +373,10 @@
{ "request.continuous_zsl_capture", TYPE_INT32},
{ "request.disable_hdrplus", TYPE_INT32},
{ "control.scene_distance", TYPE_INT32},
+ { "stats.motion_detection_enable", TYPE_BYTE},
+ { "stats.camera_motion_x", TYPE_FLOAT},
+ { "stats.camera_motion_y", TYPE_FLOAT},
+ { "stats.subject_motion", TYPE_FLOAT},
};
vendor_tag_info_t tango_mode_data[TANGO_MODE_DATA_END -
@@ -622,7 +626,10 @@
(uint32_t)NEXUS_EXPERIMENTAL_2017_CONTINUOUS_ZSL_CAPTURE,
(uint32_t)NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS,
(uint32_t)NEXUS_EXPERIMENTAL_2017_SCENE_DISTANCE,
-
+ (uint32_t)NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE,
+ (uint32_t)NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_X,
+ (uint32_t)NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_Y,
+ (uint32_t)NEXUS_EXPERIMENTAL_2017_SUBJECT_MOTION,
//TANGO_MODE
(uint32_t)TANGO_MODE_DATA_SENSOR_FULLFOV,
};
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
index e940ff3..7b6394c 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
@@ -459,6 +459,12 @@
NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS,
NEXUS_EXPERIMENTAL_2017_SCENE_DISTANCE,
+ /* Motion detection */
+ NEXUS_EXPERIMENTAL_2017_MOTION_DETECTION_ENABLE,
+ NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_X,
+ NEXUS_EXPERIMENTAL_2017_CAMERA_MOTION_Y,
+ NEXUS_EXPERIMENTAL_2017_SUBJECT_MOTION,
+
NEXUS_EXPERIMENTAL_2017_END,
/* Select sensor mode for tango */
diff --git a/msm8998/QCamera2/stack/common/cam_intf.h b/msm8998/QCamera2/stack/common/cam_intf.h
index f722915..fe3b5f9 100644
--- a/msm8998/QCamera2/stack/common/cam_intf.h
+++ b/msm8998/QCamera2/stack/common/cam_intf.h
@@ -1146,6 +1146,7 @@
INCLUDE(CAM_INTF_PARM_FOV_COMP_ENABLE, int32_t, 1);
INCLUDE(CAM_INTF_META_LED_CALIB_RESULT, int32_t, 1);
INCLUDE(CAM_INTF_META_HYBRID_AE, uint8_t, 1);
+ INCLUDE(CAM_INTF_META_MOTION_DETECTION_ENABLE, 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);
diff --git a/msm8998/QCamera2/stack/common/cam_types.h b/msm8998/QCamera2/stack/common/cam_types.h
index 82c5f2c..b764ede 100644
--- a/msm8998/QCamera2/stack/common/cam_types.h
+++ b/msm8998/QCamera2/stack/common/cam_types.h
@@ -2464,6 +2464,8 @@
CAM_INTF_META_LED_CALIB_RESULT,
/* Whether to enable hybrid ae mode */
CAM_INTF_META_HYBRID_AE,
+ /* Whether to enable motion detection */
+ CAM_INTF_META_MOTION_DETECTION_ENABLE,
/* DevCamDebug metadata CAM_TYPES.h */
CAM_INTF_META_DEV_CAM_ENABLE,
/* DevCamDebug metadata CAM_TYPES.h AF */