Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Unified Diff: talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java

Issue 1396013004: Android: Replace EGL14 with EGL10 (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add comments for hardcoded EGL constants Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java
diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java b/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java
index 00ac2e50faf27d850e45cedf6b02484442461f51..06722fa8abae45c6b52645fbf269d3022d11397e 100644
--- a/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java
+++ b/talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java
@@ -31,9 +31,6 @@ import android.content.Context;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
-import android.opengl.EGLContext;
-import android.opengl.GLES11Ext;
-import android.opengl.GLES20;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.SystemClock;
@@ -56,6 +53,9 @@ import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGL10;
+
// Android specific implementation of VideoCapturer.
// An instance of this class can be created by an application using
// VideoCapturerAndroid.create();
@@ -95,14 +95,6 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
private final CameraEventsHandler eventsHandler;
private boolean firstFrameReported;
private final boolean isCapturingToTexture;
- // |cameraGlTexture| is used with setPreviewTexture if the capturer is capturing to
- // ByteBuffers.
- private int cameraGlTexture;
- // |cameraSurfaceTexture| is used with setPreviewTexture if the capturer is capturing to
- // ByteBuffers. Must be a member, see issue webrtc:5021.
- private SurfaceTexture cameraSurfaceTexture;
- //|surfaceHelper| is used if the capturer is capturing to a texture. Capturing to textures require
- // API level 17.
private final SurfaceTextureHelper surfaceHelper;
// The camera API can output one old frame after the camera has been switched or the resolution
// has been changed. This flag is used for dropping the first frame after camera restart.
@@ -224,7 +216,7 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
}
public static VideoCapturerAndroid create(String name,
- CameraEventsHandler eventsHandler, Object sharedEglContext) {
+ CameraEventsHandler eventsHandler, EGLContext sharedEglContext) {
final int cameraId = lookupDeviceName(name);
if (cameraId == -1) {
return null;
@@ -337,7 +329,7 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
}
private VideoCapturerAndroid(int cameraId, CameraEventsHandler eventsHandler,
- Object sharedContext) {
+ EGLContext sharedContext) {
Logging.d(TAG, "VideoCapturerAndroid");
this.id = cameraId;
this.eventsHandler = eventsHandler;
@@ -345,13 +337,11 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
cameraThread.start();
cameraThreadHandler = new Handler(cameraThread.getLooper());
videoBuffers = new FramePool(cameraThread);
- if (sharedContext != null) {
- surfaceHelper = SurfaceTextureHelper.create((EGLContext)sharedContext, cameraThreadHandler);
+ isCapturingToTexture = (sharedContext != null);
+ surfaceHelper = SurfaceTextureHelper.create(
+ isCapturingToTexture ? sharedContext : EGL10.EGL_NO_CONTEXT, cameraThreadHandler);
+ if (isCapturingToTexture) {
surfaceHelper.setListener(this);
- isCapturingToTexture = true;
- } else {
- surfaceHelper = null;
- isCapturingToTexture = false;
}
}
@@ -397,9 +387,7 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
}
}
});
- if (isCapturingToTexture) {
- surfaceHelper.disconnect();
- }
+ surfaceHelper.disconnect();
cameraThread.quit();
ThreadUtils.joinUninterruptibly(cameraThread);
cameraThread = null;
@@ -455,13 +443,7 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
Camera.getCameraInfo(id, info);
}
try {
- if (isCapturingToTexture) {
- camera.setPreviewTexture(surfaceHelper.getSurfaceTexture());
- } else {
- cameraGlTexture = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
- cameraSurfaceTexture = new SurfaceTexture(cameraGlTexture);
- camera.setPreviewTexture(cameraSurfaceTexture);
- }
+ camera.setPreviewTexture(surfaceHelper.getSurfaceTexture());
} catch (IOException e) {
Logging.e(TAG, "setPreviewTexture failed", error);
throw new RuntimeException(e);
@@ -604,14 +586,6 @@ public class VideoCapturerAndroid extends VideoCapturer implements PreviewCallba
if (eventsHandler != null) {
eventsHandler.onCameraClosed();
}
-
- if (cameraGlTexture != 0) {
- GLES20.glDeleteTextures(1, new int[] {cameraGlTexture}, 0);
- cameraGlTexture = 0;
- }
- if (cameraSurfaceTexture != null) {
- cameraSurfaceTexture.release();
- }
}
private void switchCameraOnCameraThread() {

Powered by Google App Engine
This is Rietveld 408576698