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);
