QCamera2: HAL: Add FD debug logging
Issue:
No proper debugging mechanism to track FD
ROI information.
Fix:
Add FD debug logs with face ROI, landmark info
Bug: 31979356
Change-Id: Ifc59bcbaadf02f66b85fe5a7f9b9a14901a26334
diff --git a/msm8998/QCamera2/HAL/QCamera2HWI.cpp b/msm8998/QCamera2/HAL/QCamera2HWI.cpp
index 6771efb..8068b47 100644
--- a/msm8998/QCamera2/HAL/QCamera2HWI.cpp
+++ b/msm8998/QCamera2/HAL/QCamera2HWI.cpp
@@ -9187,6 +9187,9 @@
roiData->number_of_faces = detect_data->num_faces_detected;
roiData->faces = faces;
+ LOGL("FD_DEBUG : Frame[%d] : number_of_faces=%d, display_dim=%d %d",
+ detect_data->frame_id, detect_data->num_faces_detected,
+ display_dim.width, display_dim.height);
if (roiData->number_of_faces > 0) {
for (int i = 0; i < roiData->number_of_faces; i++) {
faces[i].id = detect_data->faces[i].face_id;
@@ -9214,6 +9217,17 @@
detect_data->faces[i].face_boundary.height,
display_dim.height, 2000, 0);
+ LOGL("FD_DEBUG : Frame[%d] : Face[%d] : id=%d, score=%d, "
+ "CAM[left=%d, top=%d, w=%d, h=%d], "
+ "APP[left=%d, top=%d, right=%d, bottom=%d] ",
+ detect_data->frame_id, i, faces[i].id, faces[i].score,
+ detect_data->faces[i].face_boundary.left,
+ detect_data->faces[i].face_boundary.top,
+ detect_data->faces[i].face_boundary.width,
+ detect_data->faces[i].face_boundary.height,
+ faces[i].rect[0], faces[i].rect[1],
+ faces[i].rect[2], faces[i].rect[3]);
+
if (faces_data->landmark_valid) {
// Center of left eye
if (faces_data->landmark_data.face_landmarks[i].is_left_eye_valid) {
@@ -9253,6 +9267,12 @@
faces[i].mouth[0] = FACE_INVALID_POINT;
faces[i].mouth[1] = FACE_INVALID_POINT;
}
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : "
+ "eye : left(%d, %d) right(%d, %d), mouth(%d, %d)",
+ detect_data->frame_id, i, faces[i].left_eye[0], faces[i].left_eye[1],
+ faces[i].right_eye[0], faces[i].right_eye[1],
+ faces[i].mouth[0], faces[i].mouth[1]);
} else {
// return -2000 if invalid
faces[i].left_eye[0] = FACE_INVALID_POINT;
@@ -9275,14 +9295,25 @@
if (faces_data->smile_valid) {
faces[i].smile_degree = faces_data->smile_data.smile[i].smile_degree;
faces[i].smile_score = faces_data->smile_data.smile[i].smile_confidence;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : smile_degree=%d, smile_score=%d",
+ detect_data->frame_id, i, faces[i].smile_degree, faces[i].smile_score);
}
if (faces_data->blink_valid) {
faces[i].blink_detected = faces_data->blink_data.blink[i].blink_detected;
faces[i].leye_blink = faces_data->blink_data.blink[i].left_blink;
faces[i].reye_blink = faces_data->blink_data.blink[i].right_blink;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : "
+ "blink_detected=%d, leye_blink=%d, reye_blink=%d",
+ detect_data->frame_id, i, faces[i].blink_detected, faces[i].leye_blink,
+ faces[i].reye_blink);
}
if (faces_data->recog_valid) {
faces[i].face_recognised = faces_data->recog_data.face_rec[i].face_recognised;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : face_recognised=%d",
+ detect_data->frame_id, i, faces[i].face_recognised);
}
if (faces_data->gaze_valid) {
faces[i].gaze_angle = faces_data->gaze_data.gaze[i].gaze_angle;
@@ -9291,6 +9322,12 @@
faces[i].roll_dir = faces_data->gaze_data.gaze[i].roll_dir;
faces[i].left_right_gaze = faces_data->gaze_data.gaze[i].left_right_gaze;
faces[i].top_bottom_gaze = faces_data->gaze_data.gaze[i].top_bottom_gaze;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : gaze_angle=%d, updown_dir=%d, "
+ "leftright_dir=%d,, roll_dir=%d, left_right_gaze=%d, top_bottom_gaze=%d",
+ detect_data->frame_id, i, faces[i].gaze_angle, faces[i].updown_dir,
+ faces[i].leftright_dir, faces[i].roll_dir, faces[i].left_right_gaze,
+ faces[i].top_bottom_gaze);
}
#endif
diff --git a/msm8998/QCamera2/HAL/QCamera2HWICallbacks.cpp b/msm8998/QCamera2/HAL/QCamera2HWICallbacks.cpp
index b344fac..d6f6b0e 100755
--- a/msm8998/QCamera2/HAL/QCamera2HWICallbacks.cpp
+++ b/msm8998/QCamera2/HAL/QCamera2HWICallbacks.cpp
@@ -3144,7 +3144,7 @@
faces_data.detection_data.num_faces_detected = MAX_ROI;
}
- LOGH("[KPI Perf] PROFILE_NUMBER_OF_FACES_DETECTED %d",
+ LOGH("[KPI Perf] FD_DEBUG : NUMBER_OF_FACES_DETECTED %d",
faces_data.detection_data.num_faces_detected);
IF_META_AVAILABLE(cam_face_recog_data_t, p_recog_data,
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 4f43bf0..97f6145 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -114,6 +114,13 @@
#define TIMEOUT_NEVER -1
+/* Face rect indices */
+#define FACE_LEFT 0
+#define FACE_TOP 1
+#define FACE_RIGHT 2
+#define FACE_BOTTOM 3
+#define FACE_WEIGHT 4
+
/* Face landmarks indices */
#define LEFT_EYE_X 0
#define LEFT_EYE_Y 1
@@ -7054,6 +7061,12 @@
convertToRegions(faceDetectionInfo->faces[i].face_boundary,
faceRectangles+j, -1);
+ LOGL("FD_DEBUG : Frame[%d] Face[%d] : top-left (%d, %d), "
+ "bottom-right (%d, %d)",
+ faceDetectionInfo->frame_id, i,
+ faceRectangles[j + FACE_LEFT], faceRectangles[j + FACE_TOP],
+ faceRectangles[j + FACE_RIGHT], faceRectangles[j + FACE_BOTTOM]);
+
j+= 4;
}
if (numFaces <= 0) {
@@ -7086,6 +7099,17 @@
landmarks->face_landmarks[i].mouth_center.y);
convertLandmarks(landmarks->face_landmarks[i], faceLandmarks+k);
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] Face[%d] : "
+ "left-eye (%d, %d), right-eye (%d, %d), mouth (%d, %d)",
+ faceDetectionInfo->frame_id, i,
+ faceLandmarks[k + LEFT_EYE_X],
+ faceLandmarks[k + LEFT_EYE_Y],
+ faceLandmarks[k + RIGHT_EYE_X],
+ faceLandmarks[k + RIGHT_EYE_Y],
+ faceLandmarks[k + MOUTH_X],
+ faceLandmarks[k + MOUTH_Y]);
+
k+= TOTAL_LANDMARK_INDICES;
}
} else {
@@ -7107,6 +7131,11 @@
detected[i] = blinks->blink[i].blink_detected;
degree[2 * i] = blinks->blink[i].left_blink;
degree[2 * i + 1] = blinks->blink[i].right_blink;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : "
+ "blink_detected=%d, leye_blink=%d, reye_blink=%d",
+ faceDetectionInfo->frame_id, i, detected[i], degree[2 * i],
+ degree[2 * i + 1]);
}
camMetadata.update(QCAMERA3_STATS_BLINK_DETECTED,
detected, numFaces);
@@ -7120,6 +7149,10 @@
for (size_t i = 0; i < numFaces; i++) {
degree[i] = smiles->smile[i].smile_degree;
confidence[i] = smiles->smile[i].smile_confidence;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : "
+ "smile_degree=%d, smile_score=%d",
+ faceDetectionInfo->frame_id, i, degree[i], confidence[i]);
}
camMetadata.update(QCAMERA3_STATS_SMILE_DEGREE,
degree, numFaces);
@@ -7138,6 +7171,14 @@
direction[3 * i + 2] = gazes->gaze[i].roll_dir;
degree[2 * i] = gazes->gaze[i].left_right_gaze;
degree[2 * i + 1] = gazes->gaze[i].top_bottom_gaze;
+
+ LOGL("FD_DEBUG LANDMARK : Frame[%d] : Face[%d] : gaze_angle=%d, "
+ "updown_dir=%d, leftright_dir=%d,, roll_dir=%d, "
+ "left_right_gaze=%d, top_bottom_gaze=%d",
+ faceDetectionInfo->frame_id, i, angle[i],
+ direction[3 * i], direction[3 * i + 1],
+ direction[3 * i + 2],
+ degree[2 * i], degree[2 * i + 1]);
}
camMetadata.update(QCAMERA3_STATS_GAZE_ANGLE,
(uint8_t *)angle, numFaces);
@@ -8340,12 +8381,12 @@
void QCamera3HardwareInterface::convertToRegions(cam_rect_t rect,
int32_t *region, int weight)
{
- region[0] = rect.left;
- region[1] = rect.top;
- region[2] = rect.left + rect.width;
- region[3] = rect.top + rect.height;
+ region[FACE_LEFT] = rect.left;
+ region[FACE_TOP] = rect.top;
+ region[FACE_RIGHT] = rect.left + rect.width;
+ region[FACE_BOTTOM] = rect.top + rect.height;
if (weight > -1) {
- region[4] = weight;
+ region[FACE_WEIGHT] = weight;
}
}