diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2013-10-15 05:06:18 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-15 05:06:18 -0700 |
commit | ac61e030e537150548c7cfac2f1bfcf01a8408c5 (patch) | |
tree | 234a6a86f8aa049ce606599750dab82692c86203 | |
parent | c8f6a7f7bf5f71db14f2d92ae7f3cff1f06c64e2 (diff) | |
parent | c80477e7124264ff0a61f7e972244be03fc20d42 (diff) | |
download | frameworks_base-ac61e030e537150548c7cfac2f1bfcf01a8408c5.zip frameworks_base-ac61e030e537150548c7cfac2f1bfcf01a8408c5.tar.gz frameworks_base-ac61e030e537150548c7cfac2f1bfcf01a8408c5.tar.bz2 |
am c80477e7: am a7833f86: am bf9b087b: Merge "Camera2: Fix face rectangle coordinate mapping, and use Key.equals" into klp-dev
* commit 'c80477e7124264ff0a61f7e972244be03fc20d42':
Camera2: Fix face rectangle coordinate mapping, and use Key.equals
-rw-r--r-- | core/java/android/hardware/camera2/impl/CameraMetadataNative.java | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index adccbc5..e87d387 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -93,7 +93,7 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { @Override public <T> T get(Key<T> key) { - if (key == CaptureResult.STATISTICS_FACES) { + if (key.equals(CaptureResult.STATISTICS_FACES)) { /** * FIXME: Workaround for HAL bug that's missing FACE_DETECT_MODE */ @@ -452,10 +452,12 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { // and managed sides. @SuppressWarnings("unchecked") private <T> T getOverride(Key<T> key) { - if (key == CameraCharacteristics.SCALER_AVAILABLE_FORMATS) { + if (key.equals(CameraCharacteristics.SCALER_AVAILABLE_FORMATS)) { return (T) getAvailableFormats(); - } else if (key == CaptureResult.STATISTICS_FACES) { + } else if (key.equals(CaptureResult.STATISTICS_FACES)) { return (T) getFaces(); + } else if (key.equals(CaptureResult.STATISTICS_FACE_RECTANGLES)) { + return (T) fixFaceRectangles(); } // For other keys, get() falls back to getBase() @@ -536,6 +538,25 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { return faces; } + // Face rectangles are defined as (left, top, right, bottom) instead of + // (left, top, width, height) at the native level, so the normal Rect + // conversion that does (l, t, w, h) -> (l, t, r, b) is unnecessary. Undo + // that conversion here for just the faces. + private Rect[] fixFaceRectangles() { + Rect[] faceRectangles = getBase(CaptureResult.STATISTICS_FACE_RECTANGLES); + if (faceRectangles == null) return null; + + Rect[] fixedFaceRectangles = new Rect[faceRectangles.length]; + for (int i = 0; i < faceRectangles.length; i++) { + fixedFaceRectangles[i] = new Rect( + faceRectangles[i].left, + faceRectangles[i].top, + faceRectangles[i].right - faceRectangles[i].left, + faceRectangles[i].bottom - faceRectangles[i].top); + } + return fixedFaceRectangles; + } + private <T> void setBase(Key<T> key, T value) { int tag = key.getTag(); @@ -559,7 +580,7 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { // Set the camera metadata override. private <T> boolean setOverride(Key<T> key, T value) { - if (key == CameraCharacteristics.SCALER_AVAILABLE_FORMATS) { + if (key.equals(CameraCharacteristics.SCALER_AVAILABLE_FORMATS)) { return setAvailableFormats((int[]) value); } |