Expose a variation of the createRenderer API that works on a plain Surface.
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp
index b0f466b..d1dbc5c 100644
--- a/media/libmedia/IOMX.cpp
+++ b/media/libmedia/IOMX.cpp
@@ -6,6 +6,7 @@
 #include <binder/Parcel.h>
 #include <media/IOMX.h>
 #include <ui/ISurface.h>
+#include <ui/Surface.h>
 
 namespace android {
 
@@ -29,6 +30,18 @@
     RENDERER_RENDER,
 };
 
+sp<IOMXRenderer> IOMX::createRenderer(
+        const sp<Surface> &surface,
+        const char *componentName,
+        OMX_COLOR_FORMATTYPE colorFormat,
+        size_t encodedWidth, size_t encodedHeight,
+        size_t displayWidth, size_t displayHeight) {
+    return createRenderer(
+            surface->getISurface(),
+            componentName, colorFormat, encodedWidth, encodedHeight,
+            displayWidth, displayHeight);
+}
+
 static void *readVoidStar(const Parcel *parcel) {
     // FIX if sizeof(void *) != sizeof(int32)
     return (void *)parcel->readInt32();
diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp
index 341f002..f2e62f5 100644
--- a/media/libstagefright/MediaPlayerImpl.cpp
+++ b/media/libstagefright/MediaPlayerImpl.cpp
@@ -646,15 +646,21 @@
     success = success && meta->findInt32(kKeyHeight, &decodedHeight);
     assert(success);
 
-    const sp<ISurface> &isurface =
-        mSurface.get() != NULL ? mSurface->getISurface() : mISurface;
-
-    mVideoRenderer =
-        mClient.interface()->createRenderer(
-                isurface, component,
-                (OMX_COLOR_FORMATTYPE)format,
-                decodedWidth, decodedHeight,
-                mVideoWidth, mVideoHeight);
+    if (mSurface.get() != NULL) {
+        mVideoRenderer =
+            mClient.interface()->createRenderer(
+                    mSurface, component,
+                    (OMX_COLOR_FORMATTYPE)format,
+                    decodedWidth, decodedHeight,
+                    mVideoWidth, mVideoHeight);
+    } else {
+        mVideoRenderer =
+            mClient.interface()->createRenderer(
+                    mISurface, component,
+                    (OMX_COLOR_FORMATTYPE)format,
+                    decodedWidth, decodedHeight,
+                    mVideoWidth, mVideoHeight);
+    }
 }
 
 void MediaPlayerImpl::depopulateISurface() {