From df3630d65d35bbb6ce4df970f55c94709e358328 Mon Sep 17 00:00:00 2001 From: Gustavo Garcia Date: Wed, 9 May 2018 11:23:18 +0200 Subject: [PATCH] Fix retry opening camera if there is an exception during getParameters in Camera1Session Bug: webrtc:8258 Change-Id: I27190bc57d9e80df3a40aac9e7114554289c2563 Reviewed-on: https://webrtc-review.googlesource.com/47820 Reviewed-by: Magnus Jedvert Commit-Queue: Magnus Jedvert Cr-Commit-Position: refs/heads/master@{#23210} --- .../src/java/org/webrtc/Camera1Session.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sdk/android/src/java/org/webrtc/Camera1Session.java b/sdk/android/src/java/org/webrtc/Camera1Session.java index 80d28c47e5..08502dc630 100644 --- a/sdk/android/src/java/org/webrtc/Camera1Session.java +++ b/sdk/android/src/java/org/webrtc/Camera1Session.java @@ -86,12 +86,17 @@ class Camera1Session implements CameraSession { final android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(cameraId, info); - final android.hardware.Camera.Parameters parameters = camera.getParameters(); - final CaptureFormat captureFormat = - findClosestCaptureFormat(parameters, width, height, framerate); - final Size pictureSize = findClosestPictureSize(parameters, width, height); - - updateCameraParameters(camera, parameters, captureFormat, pictureSize, captureToTexture); + final CaptureFormat captureFormat; + try { + final android.hardware.Camera.Parameters parameters = camera.getParameters(); + captureFormat = findClosestCaptureFormat(parameters, width, height, framerate); + final Size pictureSize = findClosestPictureSize(parameters, width, height); + updateCameraParameters(camera, parameters, captureFormat, pictureSize, captureToTexture); + } catch (RuntimeException e) { + camera.release(); + callback.onFailure(FailureType.ERROR, e.getMessage()); + return; + } if (!captureToTexture) { final int frameSize = captureFormat.frameSize();