Merge changes Ibe5c08d5,I559f1281,I6f0f44fa into jb-mr1-dev
* changes:
Camera2: Don't be bothered by lack of faces.
Camera2: Filter out faces with 0 confidence.
Camera2: Change face detect/scene mode priority.
diff --git a/services/camera/libcameraservice/camera2/FrameProcessor.cpp b/services/camera/libcameraservice/camera2/FrameProcessor.cpp
index e24db0b..a7d19aa 100644
--- a/services/camera/libcameraservice/camera2/FrameProcessor.cpp
+++ b/services/camera/libcameraservice/camera2/FrameProcessor.cpp
@@ -174,8 +174,7 @@
SharedParameters::Lock l(client->getParameters());
entry = frame.find(ANDROID_STATS_FACE_RECTANGLES);
if (entry.count == 0) {
- ALOGE("%s: Camera %d: Unable to read face rectangles",
- __FUNCTION__, client->getCameraId());
+ // No faces this frame
return res;
}
metadata.number_of_faces = entry.count / 4;
@@ -220,7 +219,13 @@
faces.setCapacity(metadata.number_of_faces);
- for (int i = 0; i < metadata.number_of_faces; i++) {
+ size_t maxFaces = metadata.number_of_faces;
+ for (size_t i = 0; i < maxFaces; i++) {
+ if (faceScores[i] == 0) {
+ metadata.number_of_faces--;
+ continue;
+ }
+
camera_face_t face;
face.rect[0] = l.mParameters.arrayXToNormalized(faceRects[i*4 + 0]);
diff --git a/services/camera/libcameraservice/camera2/Parameters.cpp b/services/camera/libcameraservice/camera2/Parameters.cpp
index c07a6ac..c6d7747 100644
--- a/services/camera/libcameraservice/camera2/Parameters.cpp
+++ b/services/camera/libcameraservice/camera2/Parameters.cpp
@@ -1380,8 +1380,11 @@
&reqControlMode, 1);
if (res != OK) return res;
- uint8_t reqSceneMode = enableFaceDetect ?
- (uint8_t)ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY : sceneMode;
+ uint8_t reqSceneMode =
+ (sceneMode !=
+ (uint8_t)ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED) ? sceneMode :
+ enableFaceDetect ? (uint8_t)ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY :
+ (uint8_t)ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED;
res = request->update(ANDROID_CONTROL_SCENE_MODE,
&reqSceneMode, 1);
if (res != OK) return res;