From e6d3adab087281c24076a534b1c82e47e60153bd Mon Sep 17 00:00:00 2001 From: Per Date: Mon, 21 Sep 2015 13:57:36 +0200 Subject: [PATCH] Re-add SurfaceTexture as member for setLocalPreview in VideoCapturerAndroid. The Android camera api requires a surface to be set in order work. In https://codereview.webrtc.org/1354683004/ this surfaceTexture was removed as a member but it turns out that can lead to camera freezes when the device is rotated. This cl re-adds the surface as a member. BUG= webrtc:5021, webrtc:5003 R=magjed@webrtc.org Review URL: https://codereview.webrtc.org/1349433003 . Cr-Commit-Position: refs/heads/master@{#9999} --- .../java/android/org/webrtc/VideoCapturerAndroid.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java b/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java index 18eb6e43fa..eff539044c 100644 --- a/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java +++ b/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java @@ -76,6 +76,8 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba private Camera camera; // Only non-null while capturing. private CameraThread cameraThread; private Handler cameraThreadHandler; + // |cameraSurfaceTexture| is used with setPreviewTexture. Must be a member, see issue webrtc:5021. + private SurfaceTexture cameraSurfaceTexture; private Context applicationContext; private int id; private Camera.CameraInfo info; @@ -321,9 +323,8 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba // and never call updateTexImage on it. try { cameraGlTexture = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES); - SurfaceTexture cameraSurfaceTexture = new SurfaceTexture(cameraGlTexture); + cameraSurfaceTexture = new SurfaceTexture(cameraGlTexture); cameraSurfaceTexture.setOnFrameAvailableListener(null); - camera.setPreviewTexture(cameraSurfaceTexture); } catch (IOException e) { Logging.e(TAG, "setPreviewTexture failed", error); @@ -461,6 +462,7 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba Logging.d(TAG, "Release camera."); camera.release(); camera = null; + cameraSurfaceTexture = null; } private void switchCameraOnCameraThread(Runnable switchDoneEvent) {