From be22d51307407e1820e792887aa4ef6bd75675c8 Mon Sep 17 00:00:00 2001 From: sakal Date: Mon, 19 Sep 2016 06:01:37 -0700 Subject: [PATCH] Enable auto-focus on Camera2. BUG=webrtc:6357 Review-Url: https://codereview.webrtc.org/2347823002 Cr-Commit-Position: refs/heads/master@{#14288} --- .../java/src/org/webrtc/Camera2Session.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java index 35a4862d13..460bba68ec 100644 --- a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java +++ b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java @@ -167,6 +167,7 @@ public class Camera2Session implements CameraSession { CaptureRequest.CONTROL_AE_MODE_ON); captureRequestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, false); chooseStabilizationMode(captureRequestBuilder); + chooseFocusMode(captureRequestBuilder); captureRequestBuilder.addTarget(surface); session.setRepeatingRequest( @@ -248,6 +249,20 @@ public class Camera2Session implements CameraSession { } Logging.d(TAG, "Stabilization not available."); } + + private void chooseFocusMode(CaptureRequest.Builder captureRequestBuilder) { + final int[] availableFocusModes = cameraCharacteristics.get( + CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES); + for (int mode : availableFocusModes) { + if (mode == CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_VIDEO) { + captureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, + CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_VIDEO); + Logging.d(TAG, "Using continuous video auto-focus."); + return; + } + } + Logging.d(TAG, "Auto-focus is not available."); + } } private class CameraCaptureCallback extends CameraCaptureSession.CaptureCallback {