EGL10.eglCreateWindowSurface(): Replace Surface input with SurfaceHolder

Sending a Surface as input to EGL10.eglCreateWindowSurface() is not supported everywhere. See this code as reference:
https://android.googlesource.com/platform/frameworks/native.git/+/ae9610220b5f509687b840532f95f3638ee0146b/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.java#42

Sending a SurfaceHolder as input instead should hopefully be supported everywhere, and this is also what GlSurfaceView does:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/opengl/GLSurfaceView.java#1076

Review URL: https://codereview.webrtc.org/1416213004

Cr-Commit-Position: refs/heads/master@{#10392}
diff --git a/talk/app/webrtc/java/android/org/webrtc/EglBase.java b/talk/app/webrtc/java/android/org/webrtc/EglBase.java
index 32c38f3..2ee3688 100644
--- a/talk/app/webrtc/java/android/org/webrtc/EglBase.java
+++ b/talk/app/webrtc/java/android/org/webrtc/EglBase.java
@@ -28,7 +28,7 @@
 package org.webrtc;
 
 import android.graphics.SurfaceTexture;
-import android.view.Surface;
+import android.view.SurfaceHolder;
 
 import org.webrtc.Logging;
 
@@ -86,9 +86,9 @@
     eglContext = createEglContext(sharedContext, eglDisplay, eglConfig);
   }
 
-  // Create EGLSurface from the Android Surface.
-  public void createSurface(Surface surface) {
-    createSurfaceInternal(surface);
+  // Create EGLSurface from the Android SurfaceHolder.
+  public void createSurface(SurfaceHolder surfaceHolder) {
+    createSurfaceInternal(surfaceHolder);
   }
 
   // Create EGLSurface from the Android SurfaceTexture.
@@ -96,10 +96,10 @@
     createSurfaceInternal(surfaceTexture);
   }
 
-  // Create EGLSurface from either Surface or SurfaceTexture.
-  private void createSurfaceInternal(Object surface) {
-    if (!(surface instanceof Surface) && !(surface instanceof SurfaceTexture)) {
-      throw new IllegalStateException("Input must be either a Surface or SurfaceTexture");
+  // Create EGLSurface from either a SurfaceHolder or a SurfaceTexture.
+  private void createSurfaceInternal(Object nativeWindow) {
+    if (!(nativeWindow instanceof SurfaceHolder) && !(nativeWindow instanceof SurfaceTexture)) {
+      throw new IllegalStateException("Input must be either a SurfaceHolder or SurfaceTexture");
     }
     checkIsNotReleased();
     if (configType == ConfigType.PIXEL_BUFFER) {
@@ -109,7 +109,7 @@
       throw new RuntimeException("Already has an EGLSurface");
     }
     int[] surfaceAttribs = {EGL10.EGL_NONE};
-    eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, surface, surfaceAttribs);
+    eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, nativeWindow, surfaceAttribs);
     if (eglSurface == EGL10.EGL_NO_SURFACE) {
       throw new RuntimeException("Failed to create window surface");
     }
diff --git a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
index 99f33d7..3281074 100644
--- a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
+++ b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
@@ -173,7 +173,7 @@
       @Override public void run() {
         synchronized (layoutLock) {
           if (isSurfaceCreated) {
-            eglBase.createSurface(getHolder().getSurface());
+            eglBase.createSurface(getHolder());
             eglBase.makeCurrent();
             // Necessary for YUV frames with odd width.
             GLES20.glPixelStorei(GLES20.GL_UNPACK_ALIGNMENT, 1);