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;
     }
 }