Reland of Delete video_render module. (patchset #1 id:1 of https://codereview.webrtc.org/1923613003/ )

Reason for revert:
Chrome's build files have now been updated, see cl https://codereview.chromium.org/1929933002/

Original issue's description:
> Revert of Delete video_render module. (patchset #12 id:220001 of https://codereview.webrtc.org/1912143002/ )
>
> Reason for revert:
> This breaks every buildbot in chromium.webrtc.fyi and I don't see any roll in progress to address this (and I don't see how that would be possible either).
> Usage in Chrome: https://code.google.com/p/chromium/codesearch#search/&q=modules.gyp%3Avideo_render&sq=package:chromium&type=cs
>
> Example failures:
> https://build.chromium.org/p/chromium.webrtc.fyi/builders/Linux%20Builder/builds/5420
> https://build.chromium.org/p/chromium.webrtc.fyi/builders/Win%20Builder/builds/4526
>
> I think it's fine to delete our video_render_module_internal_impl target and those files, but video_render target needs to remain.
>
> Original issue's description:
> > Delete video_render module.
> >
> > BUG=webrtc:5817
> >
> > Committed: https://crrev.com/97cfd1ec05d07ef233356e57f7aa4b028b74ffba
> > Cr-Commit-Position: refs/heads/master@{#12526}
>
> TBR=mflodman@webrtc.org,pbos@webrtc.org,nisse@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:5817

TBR=mflodman@webrtc.org,pbos@webrtc.org,kjellander@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:5817

Review-Url: https://codereview.webrtc.org/1929223003
Cr-Commit-Position: refs/heads/master@{#12556}
diff --git a/talk/app/webrtc/legacy_objc_api.gyp b/talk/app/webrtc/legacy_objc_api.gyp
index f681906..c55e74c 100755
--- a/talk/app/webrtc/legacy_objc_api.gyp
+++ b/talk/app/webrtc/legacy_objc_api.gyp
@@ -157,6 +157,8 @@
                   'OTHER_LDFLAGS': [
                     '-framework CoreGraphics',
                     '-framework GLKit',
+                    '-framework OpenGLES',
+                    '-framework QuartzCore',
                   ],
                 },
               },
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 9be2aa0..3ae09da 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -204,10 +204,7 @@
   ]
 
   if (build_with_chromium) {
-    deps += [
-      "modules/video_capture",
-      "modules/video_render",
-    ]
+    deps += [ "modules/video_capture" ]
   }
 
   if (rtc_enable_protobuf) {
@@ -222,7 +219,6 @@
     deps = [
       ":webrtc",
       "modules/video_capture:video_capture_internal_impl",
-      "modules/video_render:video_render_internal_impl",
       "test",
     ]
   }
diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp
index 0341741..1267595 100644
--- a/webrtc/api/api.gyp
+++ b/webrtc/api/api.gyp
@@ -115,7 +115,7 @@
               'java/android',
               '<(webrtc_base_dir)/java/src',
               '<(webrtc_modules_dir)/audio_device/android/java/src',
-              '<(webrtc_modules_dir)/video_render/android/java/src',
+
             ],
           },
           'includes': ['../../build/java.gypi'],
diff --git a/webrtc/api/java/jni/peerconnection_jni.cc b/webrtc/api/java/jni/peerconnection_jni.cc
index c5154c9..228e5e1 100644
--- a/webrtc/api/java/jni/peerconnection_jni.cc
+++ b/webrtc/api/java/jni/peerconnection_jni.cc
@@ -70,7 +70,6 @@
 #include "webrtc/media/devices/videorendererfactory.h"
 #include "webrtc/media/engine/webrtcvideodecoderfactory.h"
 #include "webrtc/media/engine/webrtcvideoencoderfactory.h"
-#include "webrtc/modules/video_render/video_render_internal.h"
 #include "webrtc/system_wrappers/include/field_trial_default.h"
 #include "webrtc/system_wrappers/include/logcat_trace_context.h"
 #include "webrtc/system_wrappers/include/trace.h"
diff --git a/webrtc/media/media.gyp b/webrtc/media/media.gyp
index 5c4a248..230d33a 100644
--- a/webrtc/media/media.gyp
+++ b/webrtc/media/media.gyp
@@ -15,7 +15,6 @@
       'dependencies': [
         '<(webrtc_root)/base/base.gyp:rtc_base_approved',
         '<(webrtc_root)/common.gyp:webrtc_common',
-        '<(webrtc_root)/modules/modules.gyp:video_render_module',
         '<(webrtc_root)/webrtc.gyp:webrtc',
         '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
@@ -133,7 +132,6 @@
         ['build_with_chromium==1', {
           'dependencies': [
             '<(webrtc_root)/modules/modules.gyp:video_capture',
-            '<(webrtc_root)/modules/modules.gyp:video_render',
           ],
         }, {
           'defines': [
@@ -148,7 +146,6 @@
           },
           'dependencies': [
             '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
-            '<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl',
           ],
         }],
         ['OS=="linux" and use_gtk==1', {
diff --git a/webrtc/modules/modules.gyp b/webrtc/modules/modules.gyp
index 3b36208..53ca770 100644
--- a/webrtc/modules/modules.gyp
+++ b/webrtc/modules/modules.gyp
@@ -26,7 +26,6 @@
     'video_coding/video_coding.gypi',
     'video_capture/video_capture.gypi',
     'video_processing/video_processing.gypi',
-    'video_render/video_render.gypi',
   ],
   'conditions': [
     ['include_tests==1', {
@@ -783,19 +782,6 @@
                 'modules_unittests.isolate',
               ],
             },
-            {
-              'target_name': 'video_render_tests_run',
-              'type': 'none',
-              'dependencies': [
-                'video_render_tests',
-              ],
-              'includes': [
-                '../build/isolate.gypi',
-              ],
-              'sources': [
-                'video_render_tests.isolate',
-              ],
-            },
           ],
         }],
       ],
diff --git a/webrtc/modules/modules_java.gyp b/webrtc/modules/modules_java.gyp
index 060de2a..2a72fb3 100644
--- a/webrtc/modules/modules_java.gyp
+++ b/webrtc/modules/modules_java.gyp
@@ -18,14 +18,5 @@
 
       'includes': [ '../../build/java.gypi' ],
     }, # audio_device_module_java
-    {
-      'target_name': 'video_render_module_java',
-      'type': 'none',
-      'variables': {
-        'java_in_dir': 'video_render/android/java',
-        'additional_src_dirs': [ '../base/java/src', ],
-      },
-      'includes': [ '../../build/java.gypi' ],
-    }, # video_render_module_java
   ],
 }
diff --git a/webrtc/modules/modules_java_chromium.gyp b/webrtc/modules/modules_java_chromium.gyp
index 32d2d8d..ebc53d6 100644
--- a/webrtc/modules/modules_java_chromium.gyp
+++ b/webrtc/modules/modules_java_chromium.gyp
@@ -16,13 +16,5 @@
       },
       'includes': [ '../../../build/java.gypi' ],
     }, # audio_device_module_java
-    {
-      'target_name': 'video_render_module_java',
-      'type': 'none',
-      'variables': {
-        'java_in_dir': 'video_render/android/java',
-      },
-      'includes': [ '../../../build/java.gypi' ],
-    }, # video_render_module_java
   ],
 }
diff --git a/webrtc/modules/video_render/BUILD.gn b/webrtc/modules/video_render/BUILD.gn
deleted file mode 100644
index 0771bd7..0000000
--- a/webrtc/modules/video_render/BUILD.gn
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
-#
-# Use of this source code is governed by a BSD-style license
-# that can be found in the LICENSE file in the root of the source
-# tree. An additional intellectual property rights grant can be found
-# in the file PATENTS.  All contributing project authors may
-# be found in the AUTHORS file in the root of the source tree.
-
-import("../../build/webrtc.gni")
-
-source_set("video_render_module") {
-  sources = [
-    "external/video_render_external_impl.cc",
-    "external/video_render_external_impl.h",
-    "i_video_render.h",
-    "video_render.h",
-    "video_render_defines.h",
-    "video_render_impl.h",
-  ]
-
-  deps = [
-    "../..:webrtc_common",
-    "../../common_video",
-    "../../system_wrappers",
-    "../utility",
-  ]
-
-  configs += [ "../..:common_config" ]
-  public_configs = [ "../..:common_inherited_config" ]
-
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-}
-
-source_set("video_render") {
-  sources = [
-    "video_render_impl.cc",
-  ]
-  deps = [
-    ":video_render_module",
-    "../../system_wrappers",
-  ]
-
-  configs += [ "../..:common_config" ]
-  public_configs = [ "../..:common_inherited_config" ]
-
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-}
-
-if (!build_with_chromium) {
-  config("video_render_internal_impl_config") {
-    if (is_ios) {
-      libs = [
-        "OpenGLES.framework",
-        "QuartzCore.framework",
-      ]
-    }
-  }
-
-  source_set("video_render_internal_impl") {
-    libs = []
-    sources = [
-      "video_render_internal_impl.cc",
-    ]
-    deps = [
-      ":video_render_module",
-      "../../system_wrappers",
-    ]
-
-    if (is_linux) {
-      sources += [
-        "linux/video_render_linux_impl.cc",
-        "linux/video_render_linux_impl.h",
-        "linux/video_x11_channel.cc",
-        "linux/video_x11_channel.h",
-        "linux/video_x11_render.cc",
-        "linux/video_x11_render.h",
-      ]
-
-      deps += [ "../..:webrtc_common" ]
-
-      libs += [ "Xext" ]
-    }
-    if (is_mac) {
-      sources += [
-        "mac/cocoa_full_screen_window.h",
-        "mac/cocoa_full_screen_window.mm",
-        "mac/cocoa_render_view.h",
-        "mac/cocoa_render_view.mm",
-        "mac/video_render_agl.cc",
-        "mac/video_render_agl.h",
-        "mac/video_render_mac_carbon_impl.cc",
-        "mac/video_render_mac_carbon_impl.h",
-        "mac/video_render_mac_cocoa_impl.h",
-        "mac/video_render_mac_cocoa_impl.mm",
-        "mac/video_render_nsopengl.h",
-        "mac/video_render_nsopengl.mm",
-      ]
-
-      libs += [
-        "CoreVideo.framework",
-        "QTKit.framework",
-      ]
-    }
-    if (is_win) {
-      sources += [
-        "windows/i_video_render_win.h",
-        "windows/video_render_direct3d9.cc",
-        "windows/video_render_direct3d9.h",
-        "windows/video_render_windows_impl.cc",
-        "windows/video_render_windows_impl.h",
-      ]
-
-      directxsdk_exists =
-          exec_script("//build/dir_exists.py",
-                      [ rebase_path("//third_party/directxsdk/files",
-                                    root_build_dir) ],
-                      "trim string") == "True"
-      if (directxsdk_exists) {
-        directxsdk_path = "//third_party/directxsdk/files"
-      } else {
-        directxsdk_path =
-            exec_script("../../build/find_directx_sdk.py", [], "trim string")
-      }
-      include_dirs = [ directxsdk_path + "/Include" ]
-    }
-    if (is_android) {
-      sources += [
-        "android/video_render_android_impl.cc",
-        "android/video_render_android_impl.h",
-        "android/video_render_android_native_opengl2.cc",
-        "android/video_render_android_native_opengl2.h",
-        "android/video_render_android_surface_view.cc",
-        "android/video_render_android_surface_view.h",
-        "android/video_render_opengles20.cc",
-        "android/video_render_opengles20.h",
-      ]
-
-      libs += [ "GLESv2" ]
-    }
-    if (is_ios) {
-      sources += [
-        "ios/open_gles20.h",
-        "ios/open_gles20.mm",
-        "ios/video_render_ios_channel.h",
-        "ios/video_render_ios_channel.mm",
-        "ios/video_render_ios_gles20.h",
-        "ios/video_render_ios_gles20.mm",
-        "ios/video_render_ios_impl.h",
-        "ios/video_render_ios_impl.mm",
-        "ios/video_render_ios_view.h",
-        "ios/video_render_ios_view.mm",
-      ]
-
-      deps += [ "../..:webrtc_common" ]
-
-      cflags = [ "-fobjc-arc" ]  # CLANG_ENABLE_OBJC_ARC = YES.
-    }
-
-    all_dependent_configs = [ ":video_render_internal_impl_config" ]
-
-    configs += [ "../..:common_config" ]
-    public_configs = [ "../..:common_inherited_config" ]
-
-    if (is_clang) {
-      # Suppress warnings from Chrome's Clang plugins.
-      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-      configs -= [ "//build/config/clang:find_bad_constructs" ]
-    }
-  }
-}
diff --git a/webrtc/modules/video_render/DEPS b/webrtc/modules/video_render/DEPS
deleted file mode 100644
index 58ae9fe..0000000
--- a/webrtc/modules/video_render/DEPS
+++ /dev/null
@@ -1,5 +0,0 @@
-include_rules = [
-  "+webrtc/base",
-  "+webrtc/common_video",
-  "+webrtc/system_wrappers",
-]
diff --git a/webrtc/modules/video_render/OWNERS b/webrtc/modules/video_render/OWNERS
deleted file mode 100644
index 3aaa532..0000000
--- a/webrtc/modules/video_render/OWNERS
+++ /dev/null
@@ -1,12 +0,0 @@
-mflodman@webrtc.org
-perkj@webrtc.org
-tkchin@webrtc.org
-
-per-file *.isolate=kjellander@webrtc.org
-
-# These are for the common case of adding or renaming files. If you're doing
-# structural changes, please get a review from a reviewer in this file.
-per-file *.gyp=*
-per-file *.gypi=*
-
-per-file BUILD.gn=kjellander@webrtc.org
diff --git a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java b/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java
deleted file mode 100644
index fa756ba..0000000
--- a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.webrtc.videoengine;
-
-import java.util.concurrent.locks.ReentrantLock;
-
-import javax.microedition.khronos.egl.EGL10;
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.egl.EGLContext;
-import javax.microedition.khronos.egl.EGLDisplay;
-import javax.microedition.khronos.opengles.GL10;
-
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.pm.ConfigurationInfo;
-import android.graphics.PixelFormat;
-import android.opengl.GLSurfaceView;
-
-import org.webrtc.Logging;
-
-public class ViEAndroidGLES20 extends GLSurfaceView
-        implements GLSurfaceView.Renderer {
-    private static String TAG = "WEBRTC-JR";
-    private static final boolean DEBUG = false;
-    // True if onSurfaceCreated has been called.
-    private boolean surfaceCreated = false;
-    private boolean openGLCreated = false;
-    // True if NativeFunctionsRegistered has been called.
-    private boolean nativeFunctionsRegisted = false;
-    private ReentrantLock nativeFunctionLock = new ReentrantLock();
-    // Address of Native object that will do the drawing.
-    private long nativeObject = 0;
-    private int viewWidth = 0;
-    private int viewHeight = 0;
-
-    public static boolean UseOpenGL2(Object renderWindow) {
-        return ViEAndroidGLES20.class.isInstance(renderWindow);
-    }
-
-    public ViEAndroidGLES20(Context context) {
-        super(context);
-        init(false, 0, 0);
-    }
-
-    public ViEAndroidGLES20(Context context, boolean translucent,
-            int depth, int stencil) {
-        super(context);
-        init(translucent, depth, stencil);
-    }
-
-    private void init(boolean translucent, int depth, int stencil) {
-
-        // By default, GLSurfaceView() creates a RGB_565 opaque surface.
-        // If we want a translucent one, we should change the surface's
-        // format here, using PixelFormat.TRANSLUCENT for GL Surfaces
-        // is interpreted as any 32-bit surface with alpha by SurfaceFlinger.
-        if (translucent) {
-            this.getHolder().setFormat(PixelFormat.TRANSLUCENT);
-        }
-
-        // Setup the context factory for 2.0 rendering.
-        // See ContextFactory class definition below
-        setEGLContextFactory(new ContextFactory());
-
-        // We need to choose an EGLConfig that matches the format of
-        // our surface exactly. This is going to be done in our
-        // custom config chooser. See ConfigChooser class definition
-        // below.
-        setEGLConfigChooser( translucent ?
-                             new ConfigChooser(8, 8, 8, 8, depth, stencil) :
-                             new ConfigChooser(5, 6, 5, 0, depth, stencil) );
-
-        // Set the renderer responsible for frame rendering
-        this.setRenderer(this);
-        this.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
-    }
-
-    private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
-        private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
-        public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
-            Logging.w(TAG, "creating OpenGL ES 2.0 context");
-            checkEglError("Before eglCreateContext", egl);
-            int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
-            EGLContext context = egl.eglCreateContext(display, eglConfig,
-                    EGL10.EGL_NO_CONTEXT, attrib_list);
-            checkEglError("After eglCreateContext", egl);
-            return context;
-        }
-
-        public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
-            egl.eglDestroyContext(display, context);
-        }
-    }
-
-    private static void checkEglError(String prompt, EGL10 egl) {
-        int error;
-        while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) {
-            Logging.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error));
-        }
-    }
-
-    private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
-
-        public ConfigChooser(int r, int g, int b, int a, int depth, int stencil) {
-            mRedSize = r;
-            mGreenSize = g;
-            mBlueSize = b;
-            mAlphaSize = a;
-            mDepthSize = depth;
-            mStencilSize = stencil;
-        }
-
-        // This EGL config specification is used to specify 2.0 rendering.
-        // We use a minimum size of 4 bits for red/green/blue, but will
-        // perform actual matching in chooseConfig() below.
-        private static int EGL_OPENGL_ES2_BIT = 4;
-        private static int[] s_configAttribs2 =
-        {
-            EGL10.EGL_RED_SIZE, 4,
-            EGL10.EGL_GREEN_SIZE, 4,
-            EGL10.EGL_BLUE_SIZE, 4,
-            EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-            EGL10.EGL_NONE
-        };
-
-        public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
-
-            // Get the number of minimally matching EGL configurations
-            int[] num_config = new int[1];
-            egl.eglChooseConfig(display, s_configAttribs2, null, 0, num_config);
-
-            int numConfigs = num_config[0];
-
-            if (numConfigs <= 0) {
-                throw new IllegalArgumentException("No configs match configSpec");
-            }
-
-            // Allocate then read the array of minimally matching EGL configs
-            EGLConfig[] configs = new EGLConfig[numConfigs];
-            egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
-
-            if (DEBUG) {
-                printConfigs(egl, display, configs);
-            }
-            // Now return the "best" one
-            return chooseConfig(egl, display, configs);
-        }
-
-        public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display,
-                EGLConfig[] configs) {
-            for(EGLConfig config : configs) {
-                int d = findConfigAttrib(egl, display, config,
-                        EGL10.EGL_DEPTH_SIZE, 0);
-                int s = findConfigAttrib(egl, display, config,
-                        EGL10.EGL_STENCIL_SIZE, 0);
-
-                // We need at least mDepthSize and mStencilSize bits
-                if (d < mDepthSize || s < mStencilSize)
-                    continue;
-
-                // We want an *exact* match for red/green/blue/alpha
-                int r = findConfigAttrib(egl, display, config,
-                        EGL10.EGL_RED_SIZE, 0);
-                int g = findConfigAttrib(egl, display, config,
-                            EGL10.EGL_GREEN_SIZE, 0);
-                int b = findConfigAttrib(egl, display, config,
-                            EGL10.EGL_BLUE_SIZE, 0);
-                int a = findConfigAttrib(egl, display, config,
-                        EGL10.EGL_ALPHA_SIZE, 0);
-
-                if (r == mRedSize && g == mGreenSize && b == mBlueSize && a == mAlphaSize)
-                    return config;
-            }
-            return null;
-        }
-
-        private int findConfigAttrib(EGL10 egl, EGLDisplay display,
-                EGLConfig config, int attribute, int defaultValue) {
-
-            if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) {
-                return mValue[0];
-            }
-            return defaultValue;
-        }
-
-        private void printConfigs(EGL10 egl, EGLDisplay display,
-            EGLConfig[] configs) {
-            int numConfigs = configs.length;
-            Logging.w(TAG, String.format("%d configurations", numConfigs));
-            for (int i = 0; i < numConfigs; i++) {
-                Logging.w(TAG, String.format("Configuration %d:\n", i));
-                printConfig(egl, display, configs[i]);
-            }
-        }
-
-        private void printConfig(EGL10 egl, EGLDisplay display,
-                EGLConfig config) {
-            int[] attributes = {
-                    EGL10.EGL_BUFFER_SIZE,
-                    EGL10.EGL_ALPHA_SIZE,
-                    EGL10.EGL_BLUE_SIZE,
-                    EGL10.EGL_GREEN_SIZE,
-                    EGL10.EGL_RED_SIZE,
-                    EGL10.EGL_DEPTH_SIZE,
-                    EGL10.EGL_STENCIL_SIZE,
-                    EGL10.EGL_CONFIG_CAVEAT,
-                    EGL10.EGL_CONFIG_ID,
-                    EGL10.EGL_LEVEL,
-                    EGL10.EGL_MAX_PBUFFER_HEIGHT,
-                    EGL10.EGL_MAX_PBUFFER_PIXELS,
-                    EGL10.EGL_MAX_PBUFFER_WIDTH,
-                    EGL10.EGL_NATIVE_RENDERABLE,
-                    EGL10.EGL_NATIVE_VISUAL_ID,
-                    EGL10.EGL_NATIVE_VISUAL_TYPE,
-                    0x3030, // EGL10.EGL_PRESERVED_RESOURCES,
-                    EGL10.EGL_SAMPLES,
-                    EGL10.EGL_SAMPLE_BUFFERS,
-                    EGL10.EGL_SURFACE_TYPE,
-                    EGL10.EGL_TRANSPARENT_TYPE,
-                    EGL10.EGL_TRANSPARENT_RED_VALUE,
-                    EGL10.EGL_TRANSPARENT_GREEN_VALUE,
-                    EGL10.EGL_TRANSPARENT_BLUE_VALUE,
-                    0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB,
-                    0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA,
-                    0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL,
-                    0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL,
-                    EGL10.EGL_LUMINANCE_SIZE,
-                    EGL10.EGL_ALPHA_MASK_SIZE,
-                    EGL10.EGL_COLOR_BUFFER_TYPE,
-                    EGL10.EGL_RENDERABLE_TYPE,
-                    0x3042 // EGL10.EGL_CONFORMANT
-            };
-            String[] names = {
-                    "EGL_BUFFER_SIZE",
-                    "EGL_ALPHA_SIZE",
-                    "EGL_BLUE_SIZE",
-                    "EGL_GREEN_SIZE",
-                    "EGL_RED_SIZE",
-                    "EGL_DEPTH_SIZE",
-                    "EGL_STENCIL_SIZE",
-                    "EGL_CONFIG_CAVEAT",
-                    "EGL_CONFIG_ID",
-                    "EGL_LEVEL",
-                    "EGL_MAX_PBUFFER_HEIGHT",
-                    "EGL_MAX_PBUFFER_PIXELS",
-                    "EGL_MAX_PBUFFER_WIDTH",
-                    "EGL_NATIVE_RENDERABLE",
-                    "EGL_NATIVE_VISUAL_ID",
-                    "EGL_NATIVE_VISUAL_TYPE",
-                    "EGL_PRESERVED_RESOURCES",
-                    "EGL_SAMPLES",
-                    "EGL_SAMPLE_BUFFERS",
-                    "EGL_SURFACE_TYPE",
-                    "EGL_TRANSPARENT_TYPE",
-                    "EGL_TRANSPARENT_RED_VALUE",
-                    "EGL_TRANSPARENT_GREEN_VALUE",
-                    "EGL_TRANSPARENT_BLUE_VALUE",
-                    "EGL_BIND_TO_TEXTURE_RGB",
-                    "EGL_BIND_TO_TEXTURE_RGBA",
-                    "EGL_MIN_SWAP_INTERVAL",
-                    "EGL_MAX_SWAP_INTERVAL",
-                    "EGL_LUMINANCE_SIZE",
-                    "EGL_ALPHA_MASK_SIZE",
-                    "EGL_COLOR_BUFFER_TYPE",
-                    "EGL_RENDERABLE_TYPE",
-                    "EGL_CONFORMANT"
-            };
-            int[] value = new int[1];
-            for (int i = 0; i < attributes.length; i++) {
-                int attribute = attributes[i];
-                String name = names[i];
-                if (egl.eglGetConfigAttrib(display, config, attribute, value)) {
-                    Logging.w(TAG, String.format("  %s: %d\n", name, value[0]));
-                } else {
-                    // Logging.w(TAG, String.format("  %s: failed\n", name));
-                    while (egl.eglGetError() != EGL10.EGL_SUCCESS);
-                }
-            }
-        }
-
-        // Subclasses can adjust these values:
-        protected int mRedSize;
-        protected int mGreenSize;
-        protected int mBlueSize;
-        protected int mAlphaSize;
-        protected int mDepthSize;
-        protected int mStencilSize;
-        private int[] mValue = new int[1];
-    }
-
-    // IsSupported
-    // Return true if this device support Open GL ES 2.0 rendering.
-    public static boolean IsSupported(Context context) {
-        ActivityManager am =
-                (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
-        ConfigurationInfo info = am.getDeviceConfigurationInfo();
-        if(info.reqGlEsVersion >= 0x20000) {
-            // Open GL ES 2.0 is supported.
-            return true;
-        }
-        return false;
-    }
-
-    public void onDrawFrame(GL10 gl) {
-        nativeFunctionLock.lock();
-        if(!nativeFunctionsRegisted || !surfaceCreated) {
-            nativeFunctionLock.unlock();
-            return;
-        }
-
-        if(!openGLCreated) {
-            if(0 != CreateOpenGLNative(nativeObject, viewWidth, viewHeight)) {
-                return; // Failed to create OpenGL
-            }
-            openGLCreated = true; // Created OpenGL successfully
-        }
-        DrawNative(nativeObject); // Draw the new frame
-        nativeFunctionLock.unlock();
-    }
-
-    public void onSurfaceChanged(GL10 gl, int width, int height) {
-        surfaceCreated = true;
-        viewWidth = width;
-        viewHeight = height;
-
-        nativeFunctionLock.lock();
-        if(nativeFunctionsRegisted) {
-            if(CreateOpenGLNative(nativeObject,width,height) == 0)
-                openGLCreated = true;
-        }
-        nativeFunctionLock.unlock();
-    }
-
-    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-    }
-
-    public void RegisterNativeObject(long nativeObject) {
-        nativeFunctionLock.lock();
-        this.nativeObject = nativeObject;
-        nativeFunctionsRegisted = true;
-        nativeFunctionLock.unlock();
-    }
-
-    public void DeRegisterNativeObject() {
-        nativeFunctionLock.lock();
-        nativeFunctionsRegisted = false;
-        openGLCreated = false;
-        this.nativeObject = 0;
-        nativeFunctionLock.unlock();
-    }
-
-    public void ReDraw() {
-        if(surfaceCreated) {
-            // Request the renderer to redraw using the render thread context.
-            this.requestRender();
-        }
-    }
-
-    private native int CreateOpenGLNative(long nativeObject,
-            int width, int height);
-    private native void DrawNative(long nativeObject);
-
-}
diff --git a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java b/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java
deleted file mode 100644
index 50b1a59..0000000
--- a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.webrtc.videoengine;
-
-import android.content.Context;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-
-public class ViERenderer {
-    public static SurfaceView CreateRenderer(Context context) {
-        return CreateRenderer(context, false);
-    }
-
-    public static SurfaceView CreateRenderer(Context context,
-            boolean useOpenGLES2) {
-        if(useOpenGLES2 == true && ViEAndroidGLES20.IsSupported(context))
-            return new ViEAndroidGLES20(context);
-        else
-            return new SurfaceView(context);
-    }
-}
diff --git a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java b/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java
deleted file mode 100644
index 71f26c2..0000000
--- a/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.webrtc.videoengine;
-
-// The following four imports are needed saveBitmapToJPEG which
-// is for debug only
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.SurfaceHolder.Callback;
-
-import org.webrtc.Logging;
-
-public class ViESurfaceRenderer implements Callback {
-
-    private final static String TAG = "WEBRTC";
-
-    // the bitmap used for drawing.
-    private Bitmap bitmap = null;
-    private ByteBuffer byteBuffer = null;
-    private SurfaceHolder surfaceHolder;
-    // Rect of the source bitmap to draw
-    private Rect srcRect = new Rect();
-    // Rect of the destination canvas to draw to
-    private Rect dstRect = new Rect();
-    private float dstTopScale = 0;
-    private float dstBottomScale = 1;
-    private float dstLeftScale = 0;
-    private float dstRightScale = 1;
-
-    public ViESurfaceRenderer(SurfaceView view) {
-        surfaceHolder = view.getHolder();
-        if(surfaceHolder == null)
-            return;
-        surfaceHolder.addCallback(this);
-    }
-
-    // surfaceChanged and surfaceCreated share this function
-    private void changeDestRect(int dstWidth, int dstHeight) {
-        dstRect.right = (int)(dstRect.left + dstRightScale * dstWidth);
-        dstRect.bottom = (int)(dstRect.top + dstBottomScale * dstHeight);
-    }
-
-    public void surfaceChanged(SurfaceHolder holder, int format,
-            int in_width, int in_height) {
-        Logging.d(TAG, "ViESurfaceRender::surfaceChanged");
-
-        changeDestRect(in_width, in_height);
-
-        Logging.d(TAG, "ViESurfaceRender::surfaceChanged" +
-                " in_width:" + in_width + " in_height:" + in_height +
-                " srcRect.left:" + srcRect.left +
-                " srcRect.top:" + srcRect.top +
-                " srcRect.right:" + srcRect.right +
-                " srcRect.bottom:" + srcRect.bottom +
-                " dstRect.left:" + dstRect.left +
-                " dstRect.top:" + dstRect.top +
-                " dstRect.right:" + dstRect.right +
-                " dstRect.bottom:" + dstRect.bottom);
-    }
-
-    public void surfaceCreated(SurfaceHolder holder) {
-        Canvas canvas = surfaceHolder.lockCanvas();
-        if(canvas != null) {
-            Rect dst = surfaceHolder.getSurfaceFrame();
-            if(dst != null) {
-                changeDestRect(dst.right - dst.left, dst.bottom - dst.top);
-                Logging.d(TAG, "ViESurfaceRender::surfaceCreated" +
-                        " dst.left:" + dst.left +
-                        " dst.top:" + dst.top +
-                        " dst.right:" + dst.right +
-                        " dst.bottom:" + dst.bottom +
-                        " srcRect.left:" + srcRect.left +
-                        " srcRect.top:" + srcRect.top +
-                        " srcRect.right:" + srcRect.right +
-                        " srcRect.bottom:" + srcRect.bottom +
-                        " dstRect.left:" + dstRect.left +
-                        " dstRect.top:" + dstRect.top +
-                        " dstRect.right:" + dstRect.right +
-                        " dstRect.bottom:" + dstRect.bottom);
-            }
-            surfaceHolder.unlockCanvasAndPost(canvas);
-        }
-    }
-
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        Logging.d(TAG, "ViESurfaceRenderer::surfaceDestroyed");
-        bitmap = null;
-        byteBuffer = null;
-    }
-
-    public Bitmap CreateBitmap(int width, int height) {
-        Logging.d(TAG, "CreateByteBitmap " + width + ":" + height);
-        if (bitmap == null) {
-            try {
-                android.os.Process.setThreadPriority(
-                    android.os.Process.THREAD_PRIORITY_DISPLAY);
-            }
-            catch (Exception e) {
-            }
-        }
-        bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
-        srcRect.left = 0;
-        srcRect.top = 0;
-        srcRect.bottom = height;
-        srcRect.right = width;
-        return bitmap;
-    }
-
-    public ByteBuffer CreateByteBuffer(int width, int height) {
-        Logging.d(TAG, "CreateByteBuffer " + width + ":" + height);
-        if (bitmap == null) {
-            bitmap = CreateBitmap(width, height);
-            byteBuffer = ByteBuffer.allocateDirect(width * height * 2);
-        }
-        return byteBuffer;
-    }
-
-    public void SetCoordinates(float left, float top,
-            float right, float bottom) {
-        Logging.d(TAG, "SetCoordinates " + left + "," + top + ":" +
-                right + "," + bottom);
-        dstLeftScale = left;
-        dstTopScale = top;
-        dstRightScale = right;
-        dstBottomScale = bottom;
-    }
-
-    // It saves bitmap data to a JPEG picture, this function is for debug only.
-    private void saveBitmapToJPEG(int width, int height) {
-        ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
-        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteOutStream);
-
-        try{
-            FileOutputStream output = new FileOutputStream(String.format(
-                "/sdcard/render_%d.jpg", System.currentTimeMillis()));
-            output.write(byteOutStream.toByteArray());
-            output.flush();
-            output.close();
-        }
-        catch (FileNotFoundException e) {
-        }
-        catch (IOException e) {
-        }
-    }
-
-    public void DrawByteBuffer() {
-        if(byteBuffer == null)
-            return;
-        byteBuffer.rewind();
-        bitmap.copyPixelsFromBuffer(byteBuffer);
-        DrawBitmap();
-    }
-
-    public void DrawBitmap() {
-        if(bitmap == null)
-            return;
-
-        Canvas canvas = surfaceHolder.lockCanvas();
-        if(canvas != null) {
-            // The follow line is for debug only
-            // saveBitmapToJPEG(srcRect.right - srcRect.left,
-            //                  srcRect.bottom - srcRect.top);
-            canvas.drawBitmap(bitmap, srcRect, dstRect, null);
-            surfaceHolder.unlockCanvasAndPost(canvas);
-        }
-    }
-
-}
diff --git a/webrtc/modules/video_render/android/video_render_android_impl.cc b/webrtc/modules/video_render/android/video_render_android_impl.cc
deleted file mode 100644
index 9affb23..0000000
--- a/webrtc/modules/video_render/android/video_render_android_impl.cc
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/android/video_render_android_impl.h"
-
-#include "webrtc/modules/video_render/video_render_internal.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-
-#ifdef ANDROID
-#include <android/log.h>
-#include <stdio.h>
-
-#undef WEBRTC_TRACE
-#define WEBRTC_TRACE(a,b,c,...)  __android_log_print(ANDROID_LOG_DEBUG, "*WEBRTCN*", __VA_ARGS__)
-#else
-#include "webrtc/system_wrappers/include/trace.h"
-#endif
-
-namespace webrtc {
-
-JavaVM* VideoRenderAndroid::g_jvm = NULL;
-
-int32_t SetRenderAndroidVM(JavaVM* javaVM) {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, -1, "%s", __FUNCTION__);
-  VideoRenderAndroid::g_jvm = javaVM;
-  return 0;
-}
-
-VideoRenderAndroid::VideoRenderAndroid(
-    const int32_t id,
-    const VideoRenderType videoRenderType,
-    void* window,
-    const bool /*fullscreen*/):
-    _id(id),
-    _critSect(*CriticalSectionWrapper::CreateCriticalSection()),
-    _renderType(videoRenderType),
-    _ptrWindow((jobject)(window)),
-    _javaShutDownFlag(false),
-    _javaShutdownEvent(*EventWrapper::Create()),
-    _javaRenderEvent(*EventWrapper::Create()),
-    _lastJavaRenderEvent(0),
-    _javaRenderJniEnv(NULL) {
-}
-
-VideoRenderAndroid::~VideoRenderAndroid() {
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-               "VideoRenderAndroid dtor");
-
-  if (_javaRenderThread)
-    StopRender();
-
-  for (AndroidStreamMap::iterator it = _streamsMap.begin();
-       it != _streamsMap.end();
-       ++it) {
-    delete it->second;
-  }
-  delete &_javaShutdownEvent;
-  delete &_javaRenderEvent;
-  delete &_critSect;
-}
-
-int32_t VideoRenderAndroid::ChangeWindow(void* /*window*/) {
-  return -1;
-}
-
-VideoRenderCallback*
-VideoRenderAndroid::AddIncomingRenderStream(const uint32_t streamId,
-                                            const uint32_t zOrder,
-                                            const float left, const float top,
-                                            const float right,
-                                            const float bottom) {
-  CriticalSectionScoped cs(&_critSect);
-
-  AndroidStream* renderStream = NULL;
-  AndroidStreamMap::iterator item = _streamsMap.find(streamId);
-  if (item != _streamsMap.end() && item->second != NULL) {
-    WEBRTC_TRACE(kTraceInfo,
-                 kTraceVideoRenderer,
-                 -1,
-                 "%s: Render stream already exists",
-                 __FUNCTION__);
-    return renderStream;
-  }
-
-  renderStream = CreateAndroidRenderChannel(streamId, zOrder, left, top,
-                                            right, bottom, *this);
-  if (renderStream) {
-    _streamsMap[streamId] = renderStream;
-  }
-  else {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "(%s:%d): renderStream is NULL", __FUNCTION__, __LINE__);
-    return NULL;
-  }
-  return renderStream;
-}
-
-int32_t VideoRenderAndroid::DeleteIncomingRenderStream(
-    const uint32_t streamId) {
-  CriticalSectionScoped cs(&_critSect);
-
-  AndroidStreamMap::iterator item = _streamsMap.find(streamId);
-  if (item == _streamsMap.end()) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "(%s:%d): renderStream is NULL", __FUNCTION__, __LINE__);
-    return -1;
-  }
-  delete item->second;
-  _streamsMap.erase(item);
-  return 0;
-}
-
-int32_t VideoRenderAndroid::GetIncomingRenderStreamProperties(
-    const uint32_t streamId,
-    uint32_t& zOrder,
-    float& left,
-    float& top,
-    float& right,
-    float& bottom) const {
-  return -1;
-}
-
-int32_t VideoRenderAndroid::StartRender() {
-  CriticalSectionScoped cs(&_critSect);
-
-  if (_javaRenderThread) {
-    // StartRender is called when this stream should start render.
-    // However StopRender is not called when the streams stop rendering.
-    // Thus the the thread  is only deleted when the renderer is removed.
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-                 "%s, Render thread already exist", __FUNCTION__);
-    return 0;
-  }
-
-  _javaRenderThread.reset(new rtc::PlatformThread(JavaRenderThreadFun, this,
-                                                  "AndroidRenderThread"));
-
-  _javaRenderThread->Start();
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s: thread started",
-               __FUNCTION__);
-  _javaRenderThread->SetPriority(rtc::kRealtimePriority);
-  return 0;
-}
-
-int32_t VideoRenderAndroid::StopRender() {
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:", __FUNCTION__);
-  {
-    CriticalSectionScoped cs(&_critSect);
-    if (!_javaRenderThread)
-    {
-      return -1;
-    }
-    _javaShutDownFlag = true;
-    _javaRenderEvent.Set();
-  }
-
-  _javaShutdownEvent.Wait(3000);
-  CriticalSectionScoped cs(&_critSect);
-  _javaRenderThread->Stop();
-  _javaRenderThread.reset();
-
-  return 0;
-}
-
-void VideoRenderAndroid::ReDraw() {
-  CriticalSectionScoped cs(&_critSect);
-  // Allow redraw if it was more than 20ms since last.
-  if (_lastJavaRenderEvent < TickTime::MillisecondTimestamp() - 20) {
-    _lastJavaRenderEvent = TickTime::MillisecondTimestamp();
-    _javaRenderEvent.Set();
-  }
-}
-
-bool VideoRenderAndroid::JavaRenderThreadFun(void* obj) {
-  return static_cast<VideoRenderAndroid*> (obj)->JavaRenderThreadProcess();
-}
-
-bool VideoRenderAndroid::JavaRenderThreadProcess()
-{
-  _javaRenderEvent.Wait(1000);
-
-  CriticalSectionScoped cs(&_critSect);
-  if (!_javaRenderJniEnv) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = g_jvm->AttachCurrentThread(&_javaRenderJniEnv, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !_javaRenderJniEnv) {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                   "%s: Could not attach thread to JVM (%d, %p)",
-                   __FUNCTION__, res, _javaRenderJniEnv);
-      return false;
-    }
-  }
-
-  for (AndroidStreamMap::iterator it = _streamsMap.begin();
-       it != _streamsMap.end();
-       ++it) {
-    it->second->DeliverFrame(_javaRenderJniEnv);
-  }
-
-  if (_javaShutDownFlag) {
-    if (g_jvm->DetachCurrentThread() < 0)
-      WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                   "%s: Could not detach thread from JVM", __FUNCTION__);
-    else {
-      WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-                   "%s: Java thread detached", __FUNCTION__);
-    }
-    _javaRenderJniEnv = NULL;
-    _javaShutDownFlag = false;
-    _javaShutdownEvent.Set();
-    return false; // Do not run this thread again.
-  }
-  return true;
-}
-
-VideoRenderType VideoRenderAndroid::RenderType() {
-  return _renderType;
-}
-
-RawVideoType VideoRenderAndroid::PerferedVideoType() {
-  return kVideoI420;
-}
-
-bool VideoRenderAndroid::FullScreen() {
-  return false;
-}
-
-int32_t VideoRenderAndroid::GetGraphicsMemory(
-    uint64_t& /*totalGraphicsMemory*/,
-    uint64_t& /*availableGraphicsMemory*/) const {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::GetScreenResolution(
-    uint32_t& /*screenWidth*/,
-    uint32_t& /*screenHeight*/) const {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-uint32_t VideoRenderAndroid::RenderFrameRate(
-    const uint32_t /*streamId*/) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::SetStreamCropping(
-    const uint32_t /*streamId*/,
-    const float /*left*/,
-    const float /*top*/,
-    const float /*right*/,
-    const float /*bottom*/) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::SetTransparentBackground(const bool enable) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::ConfigureRenderer(
-    const uint32_t streamId,
-    const unsigned int zOrder,
-    const float left,
-    const float top,
-    const float right,
-    const float bottom) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::SetText(
-    const uint8_t textId,
-    const uint8_t* text,
-    const int32_t textLength,
-    const uint32_t textColorRef,
-    const uint32_t backgroundColorRef,
-    const float left, const float top,
-    const float rigth, const float bottom) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-int32_t VideoRenderAndroid::SetBitmap(const void* bitMap,
-                                      const uint8_t pictureId,
-                                      const void* colorKey,
-                                      const float left, const float top,
-                                      const float right,
-                                      const float bottom) {
-  WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-               "%s - not supported on Android", __FUNCTION__);
-  return -1;
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/android/video_render_android_impl.h b/webrtc/modules/video_render/android/video_render_android_impl.h
deleted file mode 100644
index 06fd7a1..0000000
--- a/webrtc/modules/video_render/android/video_render_android_impl.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_IMPL_H_
-
-#include <jni.h>
-
-#include <map>
-#include <memory>
-
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/modules/video_render/i_video_render.h"
-
-
-namespace webrtc {
-
-//#define ANDROID_LOG
-
-class CriticalSectionWrapper;
-class EventWrapper;
-
-// The object a module user uses to send new frames to the java renderer
-// Base class for android render streams.
-
-class AndroidStream : public VideoRenderCallback {
- public:
-  // DeliverFrame is called from a thread connected to the Java VM.
-  // Used for Delivering frame for rendering.
-  virtual void DeliverFrame(JNIEnv* jniEnv)=0;
-
-  virtual ~AndroidStream() {};
-};
-
-class VideoRenderAndroid: IVideoRender {
- public:
-  VideoRenderAndroid(const int32_t id,
-                     const VideoRenderType videoRenderType,
-                     void* window,
-                     const bool fullscreen);
-
-  virtual ~VideoRenderAndroid();
-
-  virtual int32_t Init()=0;
-
-  virtual int32_t ChangeWindow(void* window);
-
-  virtual VideoRenderCallback* AddIncomingRenderStream(
-      const uint32_t streamId,
-      const uint32_t zOrder,
-      const float left, const float top,
-      const float right, const float bottom);
-
-  virtual int32_t DeleteIncomingRenderStream(
-      const uint32_t streamId);
-
-  virtual int32_t GetIncomingRenderStreamProperties(
-      const uint32_t streamId,
-      uint32_t& zOrder,
-      float& left, float& top,
-      float& right, float& bottom) const;
-
-  virtual int32_t StartRender();
-
-  virtual int32_t StopRender();
-
-  virtual void ReDraw();
-
-  // Properties
-
-  virtual VideoRenderType RenderType();
-
-  virtual RawVideoType PerferedVideoType();
-
-  virtual bool FullScreen();
-
-  virtual int32_t GetGraphicsMemory(
-      uint64_t& totalGraphicsMemory,
-      uint64_t& availableGraphicsMemory) const;
-
-  virtual int32_t GetScreenResolution(
-      uint32_t& screenWidth,
-      uint32_t& screenHeight) const;
-
-  virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-  virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                    const float left, const float top,
-                                    const float right, const float bottom);
-
-  virtual int32_t SetTransparentBackground(const bool enable);
-
-  virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                    const unsigned int zOrder,
-                                    const float left, const float top,
-                                    const float right, const float bottom);
-
-  virtual int32_t SetText(const uint8_t textId,
-                          const uint8_t* text,
-                          const int32_t textLength,
-                          const uint32_t textColorRef,
-                          const uint32_t backgroundColorRef,
-                          const float left, const float top,
-                          const float rigth, const float bottom);
-
-  virtual int32_t SetBitmap(const void* bitMap,
-                            const uint8_t pictureId,
-                            const void* colorKey, const float left,
-                            const float top, const float right,
-                            const float bottom);
-  static JavaVM* g_jvm;
-
- protected:
-  virtual AndroidStream* CreateAndroidRenderChannel(
-      int32_t streamId,
-      int32_t zOrder,
-      const float left,
-      const float top,
-      const float right,
-      const float bottom,
-      VideoRenderAndroid& renderer) = 0;
-
-  int32_t _id;
-  CriticalSectionWrapper& _critSect;
-  VideoRenderType _renderType;
-  jobject _ptrWindow;
-
- private:
-  static bool JavaRenderThreadFun(void* obj);
-  bool JavaRenderThreadProcess();
-
-  // Map with streams to render.
-  typedef std::map<int32_t, AndroidStream*> AndroidStreamMap;
-  AndroidStreamMap _streamsMap;
-  // True if the _javaRenderThread thread shall be detached from the JVM.
-  bool _javaShutDownFlag;
-  EventWrapper& _javaShutdownEvent;
-  EventWrapper& _javaRenderEvent;
-  int64_t _lastJavaRenderEvent;
-  JNIEnv* _javaRenderJniEnv; // JNIEnv for the java render thread.
-  // TODO(pbos): Remove unique_ptr and use the member directly.
-  std::unique_ptr<rtc::PlatformThread> _javaRenderThread;
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_IMPL_H_
diff --git a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc b/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
deleted file mode 100644
index 286776e..0000000
--- a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/android/video_render_android_native_opengl2.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-
-#ifdef ANDROID_LOG
-#include <android/log.h>
-#include <stdio.h>
-
-#undef WEBRTC_TRACE
-#define WEBRTC_TRACE(a,b,c,...)  __android_log_print(ANDROID_LOG_DEBUG, "*WEBRTC*", __VA_ARGS__)
-#else
-#include "webrtc/system_wrappers/include/trace.h"
-#endif
-
-namespace webrtc {
-
-AndroidNativeOpenGl2Renderer::AndroidNativeOpenGl2Renderer(
-    const int32_t id,
-    const VideoRenderType videoRenderType,
-    void* window,
-    const bool fullscreen) :
-    VideoRenderAndroid(id, videoRenderType, window, fullscreen),
-    _javaRenderObj(NULL),
-    _javaRenderClass(NULL) {
-}
-
-bool AndroidNativeOpenGl2Renderer::UseOpenGL2(void* window) {
-  if (!g_jvm) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "RendererAndroid():UseOpenGL No JVM set.");
-    return false;
-  }
-  bool isAttached = false;
-  JNIEnv* env = NULL;
-  if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !env) {
-      WEBRTC_TRACE(
-          kTraceError,
-          kTraceVideoRenderer,
-          -1,
-          "RendererAndroid(): Could not attach thread to JVM (%d, %p)",
-          res, env);
-      return false;
-    }
-    isAttached = true;
-  }
-
-  // get the renderer class
-  jclass javaRenderClassLocal =
-      env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
-  if (!javaRenderClassLocal) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "%s: could not find ViEAndroidRenderer class",
-                 __FUNCTION__);
-    return false;
-  }
-
-  // get the method ID for UseOpenGL
-  jmethodID cidUseOpenGL = env->GetStaticMethodID(javaRenderClassLocal,
-                                                  "UseOpenGL2",
-                                                  "(Ljava/lang/Object;)Z");
-  if (cidUseOpenGL == NULL) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "%s: could not get UseOpenGL ID", __FUNCTION__);
-    return false;
-  }
-  jboolean res = env->CallStaticBooleanMethod(javaRenderClassLocal,
-                                              cidUseOpenGL, (jobject) window);
-
-  // Detach this thread if it was attached
-  if (isAttached) {
-    if (g_jvm->DetachCurrentThread() < 0) {
-      WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, -1,
-                   "%s: Could not detach thread from JVM", __FUNCTION__);
-    }
-  }
-  return res;
-}
-
-AndroidNativeOpenGl2Renderer::~AndroidNativeOpenGl2Renderer() {
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-               "AndroidNativeOpenGl2Renderer dtor");
-  if (g_jvm) {
-    // get the JNI env for this thread
-    bool isAttached = false;
-    JNIEnv* env = NULL;
-    if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-      // try to attach the thread and get the env
-      // Attach this thread to JVM
-      jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
-      // Get the JNI env for this thread
-      if ((res < 0) || !env) {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: Could not attach thread to JVM (%d, %p)",
-                     __FUNCTION__, res, env);
-        env = NULL;
-      }
-      else {
-        isAttached = true;
-      }
-    }
-
-    env->DeleteGlobalRef(_javaRenderObj);
-    env->DeleteGlobalRef(_javaRenderClass);
-
-    if (isAttached) {
-      if (g_jvm->DetachCurrentThread() < 0) {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                     "%s: Could not detach thread from JVM",
-                     __FUNCTION__);
-      }
-    }
-  }
-}
-
-int32_t AndroidNativeOpenGl2Renderer::Init() {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
-  if (!g_jvm) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "(%s): Not a valid Java VM pointer.", __FUNCTION__);
-    return -1;
-  }
-  if (!_ptrWindow) {
-    WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                 "(%s): No window have been provided.", __FUNCTION__);
-    return -1;
-  }
-
-  // get the JNI env for this thread
-  bool isAttached = false;
-  JNIEnv* env = NULL;
-  if (g_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !env) {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                   "%s: Could not attach thread to JVM (%d, %p)",
-                   __FUNCTION__, res, env);
-      return -1;
-    }
-    isAttached = true;
-  }
-
-  // get the ViEAndroidGLES20 class
-  jclass javaRenderClassLocal =
-      env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
-  if (!javaRenderClassLocal) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not find ViEAndroidGLES20", __FUNCTION__);
-    return -1;
-  }
-
-  // create a global reference to the class (to tell JNI that
-  // we are referencing it after this function has returned)
-  _javaRenderClass =
-      reinterpret_cast<jclass> (env->NewGlobalRef(javaRenderClassLocal));
-  if (!_javaRenderClass) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not create Java SurfaceHolder class reference",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // Delete local class ref, we only use the global ref
-  env->DeleteLocalRef(javaRenderClassLocal);
-
-  // create a reference to the object (to tell JNI that we are referencing it
-  // after this function has returned)
-  _javaRenderObj = env->NewGlobalRef(_ptrWindow);
-  if (!_javaRenderObj) {
-    WEBRTC_TRACE(
-        kTraceError,
-        kTraceVideoRenderer,
-        _id,
-        "%s: could not create Java SurfaceRender object reference",
-        __FUNCTION__);
-    return -1;
-  }
-
-  // Detach this thread if it was attached
-  if (isAttached) {
-    if (g_jvm->DetachCurrentThread() < 0) {
-      WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                   "%s: Could not detach thread from JVM", __FUNCTION__);
-    }
-  }
-
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s done",
-               __FUNCTION__);
-  return 0;
-
-}
-AndroidStream*
-AndroidNativeOpenGl2Renderer::CreateAndroidRenderChannel(
-    int32_t streamId,
-    int32_t zOrder,
-    const float left,
-    const float top,
-    const float right,
-    const float bottom,
-    VideoRenderAndroid& renderer) {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s: Id %d",
-               __FUNCTION__, streamId);
-  AndroidNativeOpenGl2Channel* stream =
-      new AndroidNativeOpenGl2Channel(streamId, g_jvm, renderer,
-                                      _javaRenderObj);
-  if (stream && stream->Init(zOrder, left, top, right, bottom) == 0)
-    return stream;
-  else {
-    delete stream;
-  }
-  return NULL;
-}
-
-AndroidNativeOpenGl2Channel::AndroidNativeOpenGl2Channel(
-    uint32_t streamId,
-    JavaVM* jvm,
-    VideoRenderAndroid& renderer,jobject javaRenderObj):
-    _id(streamId),
-    _renderCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
-    _renderer(renderer), _jvm(jvm), _javaRenderObj(javaRenderObj),
-    _registerNativeCID(NULL), _deRegisterNativeCID(NULL),
-    _openGLRenderer(streamId) {
-
-}
-AndroidNativeOpenGl2Channel::~AndroidNativeOpenGl2Channel() {
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-               "AndroidNativeOpenGl2Channel dtor");
-  if (_jvm) {
-    // get the JNI env for this thread
-    bool isAttached = false;
-    JNIEnv* env = NULL;
-    if (_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-      // try to attach the thread and get the env
-      // Attach this thread to JVM
-      jint res = _jvm->AttachCurrentThread(&env, NULL);
-
-      // Get the JNI env for this thread
-      if ((res < 0) || !env) {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: Could not attach thread to JVM (%d, %p)",
-                     __FUNCTION__, res, env);
-        env = NULL;
-      } else {
-        isAttached = true;
-      }
-    }
-    if (env && _deRegisterNativeCID) {
-      env->CallVoidMethod(_javaRenderObj, _deRegisterNativeCID);
-    }
-
-    if (isAttached) {
-      if (_jvm->DetachCurrentThread() < 0) {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                     "%s: Could not detach thread from JVM",
-                     __FUNCTION__);
-      }
-    }
-  }
-
-  delete &_renderCritSect;
-}
-
-int32_t AndroidNativeOpenGl2Channel::Init(int32_t zOrder,
-                                          const float left,
-                                          const float top,
-                                          const float right,
-                                          const float bottom)
-{
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-               "%s: AndroidNativeOpenGl2Channel", __FUNCTION__);
-  if (!_jvm) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Not a valid Java VM pointer", __FUNCTION__);
-    return -1;
-  }
-
-  // get the JNI env for this thread
-  bool isAttached = false;
-  JNIEnv* env = NULL;
-  if (_jvm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = _jvm->AttachCurrentThread(&env, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !env) {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                   "%s: Could not attach thread to JVM (%d, %p)",
-                   __FUNCTION__, res, env);
-      return -1;
-    }
-    isAttached = true;
-  }
-
-  jclass javaRenderClass =
-      env->FindClass("org/webrtc/videoengine/ViEAndroidGLES20");
-  if (!javaRenderClass) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not find ViESurfaceRenderer", __FUNCTION__);
-    return -1;
-  }
-
-  // get the method ID for the ReDraw function
-  _redrawCid = env->GetMethodID(javaRenderClass, "ReDraw", "()V");
-  if (_redrawCid == NULL) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not get ReDraw ID", __FUNCTION__);
-    return -1;
-  }
-
-  _registerNativeCID = env->GetMethodID(javaRenderClass,
-                                        "RegisterNativeObject", "(J)V");
-  if (_registerNativeCID == NULL) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not get RegisterNativeObject ID", __FUNCTION__);
-    return -1;
-  }
-
-  _deRegisterNativeCID = env->GetMethodID(javaRenderClass,
-                                          "DeRegisterNativeObject", "()V");
-  if (_deRegisterNativeCID == NULL) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: could not get DeRegisterNativeObject ID",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  JNINativeMethod nativeFunctions[2] = {
-    { "DrawNative",
-      "(J)V",
-      (void*) &AndroidNativeOpenGl2Channel::DrawNativeStatic, },
-    { "CreateOpenGLNative",
-      "(JII)I",
-      (void*) &AndroidNativeOpenGl2Channel::CreateOpenGLNativeStatic },
-  };
-  if (env->RegisterNatives(javaRenderClass, nativeFunctions, 2) == 0) {
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, -1,
-                 "%s: Registered native functions", __FUNCTION__);
-  }
-  else {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "%s: Failed to register native functions", __FUNCTION__);
-    return -1;
-  }
-
-  env->CallVoidMethod(_javaRenderObj, _registerNativeCID, (jlong) this);
-
-  // Detach this thread if it was attached
-  if (isAttached) {
-    if (_jvm->DetachCurrentThread() < 0) {
-      WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id,
-                   "%s: Could not detach thread from JVM", __FUNCTION__);
-    }
-  }
-
-  if (_openGLRenderer.SetCoordinates(zOrder, left, top, right, bottom) != 0) {
-    return -1;
-  }
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-               "%s: AndroidNativeOpenGl2Channel done", __FUNCTION__);
-  return 0;
-}
-
-int32_t AndroidNativeOpenGl2Channel::RenderFrame(const uint32_t /*streamId*/,
-                                                 const VideoFrame& videoFrame) {
-  //   WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id, "%s:" ,__FUNCTION__);
-  _renderCritSect.Enter();
-  _bufferToRender = videoFrame;
-  _renderCritSect.Leave();
-  _renderer.ReDraw();
-  return 0;
-}
-
-/*Implements AndroidStream
- * Calls the Java object and render the buffer in _bufferToRender
- */
-void AndroidNativeOpenGl2Channel::DeliverFrame(JNIEnv* jniEnv) {
-  //TickTime timeNow=TickTime::Now();
-
-  //Draw the Surface
-  jniEnv->CallVoidMethod(_javaRenderObj, _redrawCid);
-
-  // WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id,
-  // "%s: time to deliver %lld" ,__FUNCTION__,
-  // (TickTime::Now()-timeNow).Milliseconds());
-}
-
-/*
- * JNI callback from Java class. Called when the render
- * want to render a frame. Called from the GLRenderThread
- * Method:    DrawNative
- * Signature: (J)V
- */
-void JNICALL AndroidNativeOpenGl2Channel::DrawNativeStatic(
-    JNIEnv * env, jobject, jlong context) {
-  AndroidNativeOpenGl2Channel* renderChannel =
-      reinterpret_cast<AndroidNativeOpenGl2Channel*>(context);
-  renderChannel->DrawNative();
-}
-
-void AndroidNativeOpenGl2Channel::DrawNative() {
-  _renderCritSect.Enter();
-  _openGLRenderer.Render(_bufferToRender);
-  _renderCritSect.Leave();
-}
-
-/*
- * JNI callback from Java class. Called when the GLSurfaceview
- * have created a surface. Called from the GLRenderThread
- * Method:    CreateOpenGLNativeStatic
- * Signature: (JII)I
- */
-jint JNICALL AndroidNativeOpenGl2Channel::CreateOpenGLNativeStatic(
-    JNIEnv * env,
-    jobject,
-    jlong context,
-    jint width,
-    jint height) {
-  AndroidNativeOpenGl2Channel* renderChannel =
-      reinterpret_cast<AndroidNativeOpenGl2Channel*> (context);
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, -1, "%s:", __FUNCTION__);
-  return renderChannel->CreateOpenGLNative(width, height);
-}
-
-jint AndroidNativeOpenGl2Channel::CreateOpenGLNative(
-    int width, int height) {
-  return _openGLRenderer.Setup(width, height);
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/android/video_render_android_native_opengl2.h b/webrtc/modules/video_render/android/video_render_android_native_opengl2.h
deleted file mode 100644
index 8be247b..0000000
--- a/webrtc/modules/video_render/android/video_render_android_native_opengl2.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_NATIVE_OPENGL2_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_NATIVE_OPENGL2_H_
-
-#include <jni.h>
-
-#include "webrtc/modules/video_render/android/video_render_android_impl.h"
-#include "webrtc/modules/video_render/android/video_render_opengles20.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-namespace webrtc {
-
-class CriticalSectionWrapper;
-
-class AndroidNativeOpenGl2Channel: public AndroidStream {
- public:
-  AndroidNativeOpenGl2Channel(
-      uint32_t streamId,
-      JavaVM* jvm,
-      VideoRenderAndroid& renderer,jobject javaRenderObj);
-  ~AndroidNativeOpenGl2Channel();
-
-  int32_t Init(int32_t zOrder, const float left, const float top,
-               const float right, const float bottom);
-
-  //Implement VideoRenderCallback
-  virtual int32_t RenderFrame(const uint32_t streamId,
-                              const VideoFrame& videoFrame);
-
-  //Implements AndroidStream
-  virtual void DeliverFrame(JNIEnv* jniEnv);
-
- private:
-  static jint JNICALL CreateOpenGLNativeStatic(
-      JNIEnv * env,
-      jobject,
-      jlong context,
-      jint width,
-      jint height);
-  jint CreateOpenGLNative(int width, int height);
-
-  static void JNICALL DrawNativeStatic(JNIEnv * env,jobject, jlong context);
-  void DrawNative();
-  uint32_t _id;
-  CriticalSectionWrapper& _renderCritSect;
-
-  VideoFrame _bufferToRender;
-  VideoRenderAndroid& _renderer;
-  JavaVM*     _jvm;
-  jobject     _javaRenderObj;
-
-  jmethodID      _redrawCid;
-  jmethodID      _registerNativeCID;
-  jmethodID      _deRegisterNativeCID;
-  VideoRenderOpenGles20 _openGLRenderer;
-};
-
-
-class AndroidNativeOpenGl2Renderer: private VideoRenderAndroid {
- public:
-  AndroidNativeOpenGl2Renderer(const int32_t id,
-                               const VideoRenderType videoRenderType,
-                               void* window,
-                               const bool fullscreen);
-
-  ~AndroidNativeOpenGl2Renderer();
-  static bool UseOpenGL2(void* window);
-
-  int32_t Init();
-  virtual AndroidStream* CreateAndroidRenderChannel(
-      int32_t streamId,
-      int32_t zOrder,
-      const float left,
-      const float top,
-      const float right,
-      const float bottom,
-      VideoRenderAndroid& renderer);
-
- private:
-  jobject _javaRenderObj;
-  jclass _javaRenderClass;
-};
-
-}  // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_NATIVE_OPENGL2_H_
diff --git a/webrtc/modules/video_render/android/video_render_android_surface_view.cc b/webrtc/modules/video_render/android/video_render_android_surface_view.cc
deleted file mode 100644
index ea3b106..0000000
--- a/webrtc/modules/video_render/android/video_render_android_surface_view.cc
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/modules/video_render/android/video_render_android_surface_view.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-
-#ifdef ANDROID_LOG
-#include <android/log.h>
-#include <stdio.h>
-
-#undef WEBRTC_TRACE
-#define WEBRTC_TRACE(a,b,c,...)  __android_log_print(ANDROID_LOG_DEBUG, "*WEBRTC*", __VA_ARGS__)
-#else
-#include "webrtc/system_wrappers/include/trace.h"
-#endif
-
-namespace webrtc {
-
-AndroidSurfaceViewRenderer::AndroidSurfaceViewRenderer(
-    const int32_t id,
-    const VideoRenderType videoRenderType,
-    void* window,
-    const bool fullscreen) :
-    VideoRenderAndroid(id,videoRenderType,window,fullscreen),
-    _javaRenderObj(NULL),
-    _javaRenderClass(NULL) {
-}
-
-AndroidSurfaceViewRenderer::~AndroidSurfaceViewRenderer() {
-  WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-               "AndroidSurfaceViewRenderer dtor");
-  if(g_jvm) {
-    // get the JNI env for this thread
-    bool isAttached = false;
-    JNIEnv* env = NULL;
-    if (g_jvm->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) {
-      // try to attach the thread and get the env
-      // Attach this thread to JVM
-      jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
-      // Get the JNI env for this thread
-      if ((res < 0) || !env) {
-        WEBRTC_TRACE(kTraceError,
-                     kTraceVideoRenderer,
-                     _id,
-                     "%s: Could not attach thread to JVM (%d, %p)",
-                     __FUNCTION__,
-                     res,
-                     env);
-        env=NULL;
-      }
-      else {
-        isAttached = true;
-      }
-    }
-    env->DeleteGlobalRef(_javaRenderObj);
-    env->DeleteGlobalRef(_javaRenderClass);
-
-    if (isAttached) {
-      if (g_jvm->DetachCurrentThread() < 0) {
-        WEBRTC_TRACE(kTraceWarning,
-                     kTraceVideoRenderer,
-                     _id,
-                     "%s: Could not detach thread from JVM",
-                     __FUNCTION__);
-      }
-    }
-  }
-}
-
-int32_t AndroidSurfaceViewRenderer::Init() {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
-  if (!g_jvm) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "(%s): Not a valid Java VM pointer.",
-                 __FUNCTION__);
-    return -1;
-  }
-  if(!_ptrWindow) {
-    WEBRTC_TRACE(kTraceWarning,
-                 kTraceVideoRenderer,
-                 _id,
-                 "(%s): No window have been provided.",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // get the JNI env for this thread
-  bool isAttached = false;
-  JNIEnv* env = NULL;
-  if (g_jvm->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = g_jvm->AttachCurrentThread(&env, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !env) {
-      WEBRTC_TRACE(kTraceError,
-                   kTraceVideoRenderer,
-                   _id,
-                   "%s: Could not attach thread to JVM (%d, %p)",
-                   __FUNCTION__,
-                   res,
-                   env);
-      return -1;
-    }
-    isAttached = true;
-  }
-
-  // get the ViESurfaceRender class
-  jclass javaRenderClassLocal =
-      env->FindClass("org/webrtc/videoengine/ViESurfaceRenderer");
-  if (!javaRenderClassLocal) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not find ViESurfaceRenderer",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // create a global reference to the class (to tell JNI that
-  // we are referencing it after this function has returned)
-  _javaRenderClass =
-      reinterpret_cast<jclass>(env->NewGlobalRef(javaRenderClassLocal));
-  if (!_javaRenderClass) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not create Java ViESurfaceRenderer class reference",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // Delete local class ref, we only use the global ref
-  env->DeleteLocalRef(javaRenderClassLocal);
-
-  // get the method ID for the constructor
-  jmethodID cid = env->GetMethodID(_javaRenderClass,
-                                   "<init>",
-                                   "(Landroid/view/SurfaceView;)V");
-  if (cid == NULL) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not get constructor ID",
-                 __FUNCTION__);
-    return -1; /* exception thrown */
-  }
-
-  // construct the object
-  jobject javaRenderObjLocal = env->NewObject(_javaRenderClass,
-                                              cid,
-                                              _ptrWindow);
-  if (!javaRenderObjLocal) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not create Java Render",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // create a reference to the object (to tell JNI that we are referencing it
-  // after this function has returned)
-  _javaRenderObj = env->NewGlobalRef(javaRenderObjLocal);
-  if (!_javaRenderObj) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not create Java SurfaceRender object reference",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // Detach this thread if it was attached
-  if (isAttached) {
-    if (g_jvm->DetachCurrentThread() < 0) {
-      WEBRTC_TRACE(kTraceWarning,
-                   kTraceVideoRenderer,
-                   _id,
-                   "%s: Could not detach thread from JVM", __FUNCTION__);
-    }
-  }
-
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s done", __FUNCTION__);
-  return 0;
-}
-
-AndroidStream*
-AndroidSurfaceViewRenderer::CreateAndroidRenderChannel(
-    int32_t streamId,
-    int32_t zOrder,
-    const float left,
-    const float top,
-    const float right,
-    const float bottom,
-    VideoRenderAndroid& renderer) {
-  WEBRTC_TRACE(kTraceDebug,
-               kTraceVideoRenderer,
-               _id,
-               "%s: Id %d",
-               __FUNCTION__,
-               streamId);
-  AndroidSurfaceViewChannel* stream =
-      new AndroidSurfaceViewChannel(streamId, g_jvm, renderer, _javaRenderObj);
-  if(stream && stream->Init(zOrder, left, top, right, bottom) == 0)
-    return stream;
-  else
-    delete stream;
-  return NULL;
-}
-
-AndroidSurfaceViewChannel::AndroidSurfaceViewChannel(
-    uint32_t streamId,
-    JavaVM* jvm,
-    VideoRenderAndroid& renderer,
-    jobject javaRenderObj) :
-    _id(streamId),
-    _renderCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
-    _renderer(renderer),
-    _jvm(jvm),
-    _javaRenderObj(javaRenderObj),
-#ifndef ANDROID_NDK_8_OR_ABOVE
-    _javaByteBufferObj(NULL),
-    _directBuffer(NULL),
-#endif
-    _bitmapWidth(0),
-    _bitmapHeight(0) {
-}
-
-AndroidSurfaceViewChannel::~AndroidSurfaceViewChannel() {
-  WEBRTC_TRACE(kTraceInfo,
-               kTraceVideoRenderer,
-               _id,
-               "AndroidSurfaceViewChannel dtor");
-  delete &_renderCritSect;
-  if(_jvm) {
-    // get the JNI env for this thread
-    bool isAttached = false;
-    JNIEnv* env = NULL;
-    if ( _jvm->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) {
-      // try to attach the thread and get the env
-      // Attach this thread to JVM
-      jint res = _jvm->AttachCurrentThread(&env, NULL);
-
-      // Get the JNI env for this thread
-      if ((res < 0) || !env) {
-        WEBRTC_TRACE(kTraceError,
-                     kTraceVideoRenderer,
-                     _id,
-                     "%s: Could not attach thread to JVM (%d, %p)",
-                     __FUNCTION__,
-                     res,
-                     env);
-        env=NULL;
-      }
-      else {
-        isAttached = true;
-      }
-    }
-
-    env->DeleteGlobalRef(_javaByteBufferObj);
-    if (isAttached) {
-      if (_jvm->DetachCurrentThread() < 0) {
-        WEBRTC_TRACE(kTraceWarning,
-                     kTraceVideoRenderer,
-                     _id,
-                     "%s: Could not detach thread from JVM",
-                     __FUNCTION__);
-      }
-    }
-  }
-}
-
-int32_t AndroidSurfaceViewChannel::Init(
-    int32_t /*zOrder*/,
-    const float left,
-    const float top,
-    const float right,
-    const float bottom) {
-
-  WEBRTC_TRACE(kTraceDebug,
-               kTraceVideoRenderer,
-               _id,
-               "%s: AndroidSurfaceViewChannel",
-               __FUNCTION__);
-  if (!_jvm) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: Not a valid Java VM pointer",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  if( (top > 1 || top < 0) ||
-      (right > 1 || right < 0) ||
-      (bottom > 1 || bottom < 0) ||
-      (left > 1 || left < 0)) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Wrong coordinates", __FUNCTION__);
-    return -1;
-  }
-
-  // get the JNI env for this thread
-  bool isAttached = false;
-  JNIEnv* env = NULL;
-  if (_jvm->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) {
-    // try to attach the thread and get the env
-    // Attach this thread to JVM
-    jint res = _jvm->AttachCurrentThread(&env, NULL);
-
-    // Get the JNI env for this thread
-    if ((res < 0) || !env) {
-      WEBRTC_TRACE(kTraceError,
-                   kTraceVideoRenderer,
-                   _id,
-                   "%s: Could not attach thread to JVM (%d, %p)",
-                   __FUNCTION__,
-                   res,
-                   env);
-      return -1;
-    }
-    isAttached = true;
-  }
-
-  jclass javaRenderClass =
-      env->FindClass("org/webrtc/videoengine/ViESurfaceRenderer");
-  if (!javaRenderClass) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not find ViESurfaceRenderer",
-                 __FUNCTION__);
-    return -1;
-  }
-
-  // get the method ID for the CreateIntArray
-  _createByteBufferCid =
-      env->GetMethodID(javaRenderClass,
-                       "CreateByteBuffer",
-                       "(II)Ljava/nio/ByteBuffer;");
-  if (_createByteBufferCid == NULL) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not get CreateByteBuffer ID",
-                 __FUNCTION__);
-    return -1; /* exception thrown */
-  }
-
-  // get the method ID for the DrawByteBuffer function
-  _drawByteBufferCid = env->GetMethodID(javaRenderClass,
-                                        "DrawByteBuffer",
-                                        "()V");
-  if (_drawByteBufferCid == NULL) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not get DrawByteBuffer ID",
-                 __FUNCTION__);
-    return -1; /* exception thrown */
-  }
-
-  // get the method ID for the SetCoordinates function
-  _setCoordinatesCid = env->GetMethodID(javaRenderClass,
-                                        "SetCoordinates",
-                                        "(FFFF)V");
-  if (_setCoordinatesCid == NULL) {
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: could not get SetCoordinates ID",
-                 __FUNCTION__);
-    return -1; /* exception thrown */
-  }
-
-  env->CallVoidMethod(_javaRenderObj, _setCoordinatesCid,
-                      left, top, right, bottom);
-
-  // Detach this thread if it was attached
-  if (isAttached) {
-    if (_jvm->DetachCurrentThread() < 0) {
-      WEBRTC_TRACE(kTraceWarning,
-                   kTraceVideoRenderer,
-                   _id,
-                   "%s: Could not detach thread from JVM",
-                   __FUNCTION__);
-    }
-  }
-
-  WEBRTC_TRACE(kTraceDebug,
-               kTraceVideoRenderer,
-               _id,
-               "%s: AndroidSurfaceViewChannel done",
-               __FUNCTION__);
-  return 0;
-}
-
-int32_t AndroidSurfaceViewChannel::RenderFrame(const uint32_t /*streamId*/,
-                                               const VideoFrame& videoFrame) {
-  // WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id, "%s:" ,__FUNCTION__);
-  _renderCritSect.Enter();
-  _bufferToRender = videoFrame;
-  _renderCritSect.Leave();
-  _renderer.ReDraw();
-  return 0;
-}
-
-
-/*Implements AndroidStream
- * Calls the Java object and render the buffer in _bufferToRender
- */
-void AndroidSurfaceViewChannel::DeliverFrame(JNIEnv* jniEnv) {
-  _renderCritSect.Enter();
-
-  if (_bitmapWidth != _bufferToRender.width() ||
-      _bitmapHeight != _bufferToRender.height()) {
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s: New render size %d "
-                 "%d",__FUNCTION__,
-                 _bufferToRender.width(), _bufferToRender.height());
-    if (_javaByteBufferObj) {
-      jniEnv->DeleteGlobalRef(_javaByteBufferObj);
-      _javaByteBufferObj = NULL;
-      _directBuffer = NULL;
-    }
-
-    jobject javaByteBufferObj =
-        jniEnv->CallObjectMethod(_javaRenderObj, _createByteBufferCid,
-                                 _bufferToRender.width(),
-                                 _bufferToRender.height());
-    _javaByteBufferObj = jniEnv->NewGlobalRef(javaByteBufferObj);
-    if (!_javaByteBufferObj) {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,  "%s: could not "
-                   "create Java ByteBuffer object reference", __FUNCTION__);
-      _renderCritSect.Leave();
-      return;
-    } else {
-      _directBuffer = static_cast<unsigned char*>
-          (jniEnv->GetDirectBufferAddress(_javaByteBufferObj));
-      _bitmapWidth = _bufferToRender.width();
-      _bitmapHeight = _bufferToRender.height();
-    }
-  }
-
-  if(_javaByteBufferObj && _bitmapWidth && _bitmapHeight) {
-    const int conversionResult =
-        ConvertFromI420(_bufferToRender, kRGB565, 0, _directBuffer);
-
-    if (conversionResult < 0)  {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s: Color conversion"
-                   " failed.", __FUNCTION__);
-      _renderCritSect.Leave();
-      return;
-    }
-  }
-  _renderCritSect.Leave();
-  // Draw the Surface
-  jniEnv->CallVoidMethod(_javaRenderObj, _drawByteBufferCid);
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/android/video_render_android_surface_view.h b/webrtc/modules/video_render/android/video_render_android_surface_view.h
deleted file mode 100644
index 0f029b5..0000000
--- a/webrtc/modules/video_render/android/video_render_android_surface_view.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_SURFACE_VIEW_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_SURFACE_VIEW_H_
-
-#include <jni.h>
-
-#include "webrtc/modules/video_render/android/video_render_android_impl.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-namespace webrtc {
-
-class CriticalSectionWrapper;
-
-class AndroidSurfaceViewChannel : public AndroidStream {
- public:
-  AndroidSurfaceViewChannel(uint32_t streamId,
-                            JavaVM* jvm,
-                            VideoRenderAndroid& renderer,
-                            jobject javaRenderObj);
-  ~AndroidSurfaceViewChannel();
-
-  int32_t Init(int32_t zOrder, const float left, const float top,
-               const float right, const float bottom);
-
-  //Implement VideoRenderCallback
-  virtual int32_t RenderFrame(const uint32_t streamId,
-                              const VideoFrame& videoFrame);
-
-  //Implements AndroidStream
-  virtual void DeliverFrame(JNIEnv* jniEnv);
-
- private:
-  uint32_t _id;
-  CriticalSectionWrapper& _renderCritSect;
-
-  VideoFrame _bufferToRender;
-  VideoRenderAndroid& _renderer;
-  JavaVM* _jvm;
-  jobject _javaRenderObj;
-
-  jobject _javaByteBufferObj;
-  unsigned char* _directBuffer;
-  jmethodID _createByteBufferCid;
-  jmethodID _drawByteBufferCid;
-
-  jmethodID _setCoordinatesCid;
-  int _bitmapWidth;
-  int _bitmapHeight;
-};
-
-class AndroidSurfaceViewRenderer : private VideoRenderAndroid {
- public:
-  AndroidSurfaceViewRenderer(const int32_t id,
-                             const VideoRenderType videoRenderType,
-                             void* window,
-                             const bool fullscreen);
-  ~AndroidSurfaceViewRenderer();
-  int32_t Init();
-  virtual AndroidStream* CreateAndroidRenderChannel(
-      int32_t streamId,
-      int32_t zOrder,
-      const float left,
-      const float top,
-      const float right,
-      const float bottom,
-      VideoRenderAndroid& renderer);
- private:
-  jobject _javaRenderObj;
-  jclass _javaRenderClass;
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_SURFACE_VIEW_H_
diff --git a/webrtc/modules/video_render/android/video_render_opengles20.cc b/webrtc/modules/video_render/android/video_render_opengles20.cc
deleted file mode 100644
index 45db56a..0000000
--- a/webrtc/modules/video_render/android/video_render_opengles20.cc
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "webrtc/modules/video_render/android/video_render_opengles20.h"
-
-//#define ANDROID_LOG
-
-#ifdef ANDROID_LOG
-#include <android/log.h>
-#include <stdio.h>
-
-#undef WEBRTC_TRACE
-#define WEBRTC_TRACE(a,b,c,...)  __android_log_print(ANDROID_LOG_DEBUG, "*WEBRTCN*", __VA_ARGS__)
-#else
-#include "webrtc/system_wrappers/include/trace.h"
-#endif
-
-namespace webrtc {
-
-const char VideoRenderOpenGles20::g_indices[] = { 0, 3, 2, 0, 2, 1 };
-
-const char VideoRenderOpenGles20::g_vertextShader[] = {
-  "attribute vec4 aPosition;\n"
-  "attribute vec2 aTextureCoord;\n"
-  "varying vec2 vTextureCoord;\n"
-  "void main() {\n"
-  "  gl_Position = aPosition;\n"
-  "  vTextureCoord = aTextureCoord;\n"
-  "}\n" };
-
-// The fragment shader.
-// Do YUV to RGB565 conversion.
-const char VideoRenderOpenGles20::g_fragmentShader[] = {
-  "precision mediump float;\n"
-  "uniform sampler2D Ytex;\n"
-  "uniform sampler2D Utex,Vtex;\n"
-  "varying vec2 vTextureCoord;\n"
-  "void main(void) {\n"
-  "  float nx,ny,r,g,b,y,u,v;\n"
-  "  mediump vec4 txl,ux,vx;"
-  "  nx=vTextureCoord[0];\n"
-  "  ny=vTextureCoord[1];\n"
-  "  y=texture2D(Ytex,vec2(nx,ny)).r;\n"
-  "  u=texture2D(Utex,vec2(nx,ny)).r;\n"
-  "  v=texture2D(Vtex,vec2(nx,ny)).r;\n"
-
-  //"  y = v;\n"+
-  "  y=1.1643*(y-0.0625);\n"
-  "  u=u-0.5;\n"
-  "  v=v-0.5;\n"
-
-  "  r=y+1.5958*v;\n"
-  "  g=y-0.39173*u-0.81290*v;\n"
-  "  b=y+2.017*u;\n"
-  "  gl_FragColor=vec4(r,g,b,1.0);\n"
-  "}\n" };
-
-VideoRenderOpenGles20::VideoRenderOpenGles20(int32_t id) :
-    _id(id),
-    _textureWidth(-1),
-    _textureHeight(-1) {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s: id %d",
-               __FUNCTION__, (int) _id);
-
-  const GLfloat vertices[20] = {
-    // X, Y, Z, U, V
-    -1, -1, 0, 0, 1, // Bottom Left
-    1, -1, 0, 1, 1, //Bottom Right
-    1, 1, 0, 1, 0, //Top Right
-    -1, 1, 0, 0, 0 }; //Top Left
-
-  memcpy(_vertices, vertices, sizeof(_vertices));
-}
-
-VideoRenderOpenGles20::~VideoRenderOpenGles20() {
-}
-
-int32_t VideoRenderOpenGles20::Setup(int32_t width, int32_t height) {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-               "%s: width %d, height %d", __FUNCTION__, (int) width,
-               (int) height);
-
-  printGLString("Version", GL_VERSION);
-  printGLString("Vendor", GL_VENDOR);
-  printGLString("Renderer", GL_RENDERER);
-  printGLString("Extensions", GL_EXTENSIONS);
-
-  int maxTextureImageUnits[2];
-  int maxTextureSize[2];
-  glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, maxTextureImageUnits);
-  glGetIntegerv(GL_MAX_TEXTURE_SIZE, maxTextureSize);
-
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-               "%s: number of textures %d, size %d", __FUNCTION__,
-               (int) maxTextureImageUnits[0], (int) maxTextureSize[0]);
-
-  _program = createProgram(g_vertextShader, g_fragmentShader);
-  if (!_program) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Could not create program", __FUNCTION__);
-    return -1;
-  }
-
-  int positionHandle = glGetAttribLocation(_program, "aPosition");
-  checkGlError("glGetAttribLocation aPosition");
-  if (positionHandle == -1) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Could not get aPosition handle", __FUNCTION__);
-    return -1;
-  }
-
-  int textureHandle = glGetAttribLocation(_program, "aTextureCoord");
-  checkGlError("glGetAttribLocation aTextureCoord");
-  if (textureHandle == -1) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Could not get aTextureCoord handle", __FUNCTION__);
-    return -1;
-  }
-
-  // set the vertices array in the shader
-  // _vertices contains 4 vertices with 5 coordinates.
-  // 3 for (xyz) for the vertices and 2 for the texture
-  glVertexAttribPointer(positionHandle, 3, GL_FLOAT, false,
-                        5 * sizeof(GLfloat), _vertices);
-  checkGlError("glVertexAttribPointer aPosition");
-
-  glEnableVertexAttribArray(positionHandle);
-  checkGlError("glEnableVertexAttribArray positionHandle");
-
-  // set the texture coordinate array in the shader
-  // _vertices contains 4 vertices with 5 coordinates.
-  // 3 for (xyz) for the vertices and 2 for the texture
-  glVertexAttribPointer(textureHandle, 2, GL_FLOAT, false, 5
-                        * sizeof(GLfloat), &_vertices[3]);
-  checkGlError("glVertexAttribPointer maTextureHandle");
-  glEnableVertexAttribArray(textureHandle);
-  checkGlError("glEnableVertexAttribArray textureHandle");
-
-  glUseProgram(_program);
-  int i = glGetUniformLocation(_program, "Ytex");
-  checkGlError("glGetUniformLocation");
-  glUniform1i(i, 0); /* Bind Ytex to texture unit 0 */
-  checkGlError("glUniform1i Ytex");
-
-  i = glGetUniformLocation(_program, "Utex");
-  checkGlError("glGetUniformLocation Utex");
-  glUniform1i(i, 1); /* Bind Utex to texture unit 1 */
-  checkGlError("glUniform1i Utex");
-
-  i = glGetUniformLocation(_program, "Vtex");
-  checkGlError("glGetUniformLocation");
-  glUniform1i(i, 2); /* Bind Vtex to texture unit 2 */
-  checkGlError("glUniform1i");
-
-  glViewport(0, 0, width, height);
-  checkGlError("glViewport");
-  return 0;
-}
-
-// SetCoordinates
-// Sets the coordinates where the stream shall be rendered.
-// Values must be between 0 and 1.
-int32_t VideoRenderOpenGles20::SetCoordinates(int32_t zOrder,
-                                              const float left,
-                                              const float top,
-                                              const float right,
-                                              const float bottom) {
-  if ((top > 1 || top < 0) || (right > 1 || right < 0) ||
-      (bottom > 1 || bottom < 0) || (left > 1 || left < 0)) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: Wrong coordinates", __FUNCTION__);
-    return -1;
-  }
-
-  //  X, Y, Z, U, V
-  // -1, -1, 0, 0, 1, // Bottom Left
-  //  1, -1, 0, 1, 1, //Bottom Right
-  //  1,  1, 0, 1, 0, //Top Right
-  // -1,  1, 0, 0, 0  //Top Left
-
-  // Bottom Left
-  _vertices[0] = (left * 2) - 1;
-  _vertices[1] = -1 * (2 * bottom) + 1;
-  _vertices[2] = zOrder;
-
-  //Bottom Right
-  _vertices[5] = (right * 2) - 1;
-  _vertices[6] = -1 * (2 * bottom) + 1;
-  _vertices[7] = zOrder;
-
-  //Top Right
-  _vertices[10] = (right * 2) - 1;
-  _vertices[11] = -1 * (2 * top) + 1;
-  _vertices[12] = zOrder;
-
-  //Top Left
-  _vertices[15] = (left * 2) - 1;
-  _vertices[16] = -1 * (2 * top) + 1;
-  _vertices[17] = zOrder;
-
-  return 0;
-}
-
-int32_t VideoRenderOpenGles20::Render(const VideoFrame& frameToRender) {
-  if (frameToRender.IsZeroSize()) {
-    return -1;
-  }
-
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s: id %d",
-               __FUNCTION__, (int) _id);
-
-  glUseProgram(_program);
-  checkGlError("glUseProgram");
-
-  if (_textureWidth != (GLsizei) frameToRender.width() ||
-      _textureHeight != (GLsizei) frameToRender.height()) {
-    SetupTextures(frameToRender);
-  }
-  UpdateTextures(frameToRender);
-
-  glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, g_indices);
-  checkGlError("glDrawArrays");
-
-  return 0;
-}
-
-GLuint VideoRenderOpenGles20::loadShader(GLenum shaderType,
-                                         const char* pSource) {
-  GLuint shader = glCreateShader(shaderType);
-  if (shader) {
-    glShaderSource(shader, 1, &pSource, NULL);
-    glCompileShader(shader);
-    GLint compiled = 0;
-    glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
-    if (!compiled) {
-      GLint infoLen = 0;
-      glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
-      if (infoLen) {
-        char* buf = (char*) malloc(infoLen);
-        if (buf) {
-          glGetShaderInfoLog(shader, infoLen, NULL, buf);
-          WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                       "%s: Could not compile shader %d: %s",
-                       __FUNCTION__, shaderType, buf);
-          free(buf);
-        }
-        glDeleteShader(shader);
-        shader = 0;
-      }
-    }
-  }
-  return shader;
-}
-
-GLuint VideoRenderOpenGles20::createProgram(const char* pVertexSource,
-                                            const char* pFragmentSource) {
-  GLuint vertexShader = loadShader(GL_VERTEX_SHADER, pVertexSource);
-  if (!vertexShader) {
-    return 0;
-  }
-
-  GLuint pixelShader = loadShader(GL_FRAGMENT_SHADER, pFragmentSource);
-  if (!pixelShader) {
-    return 0;
-  }
-
-  GLuint program = glCreateProgram();
-  if (program) {
-    glAttachShader(program, vertexShader);
-    checkGlError("glAttachShader");
-    glAttachShader(program, pixelShader);
-    checkGlError("glAttachShader");
-    glLinkProgram(program);
-    GLint linkStatus = GL_FALSE;
-    glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
-    if (linkStatus != GL_TRUE) {
-      GLint bufLength = 0;
-      glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
-      if (bufLength) {
-        char* buf = (char*) malloc(bufLength);
-        if (buf) {
-          glGetProgramInfoLog(program, bufLength, NULL, buf);
-          WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                       "%s: Could not link program: %s",
-                       __FUNCTION__, buf);
-          free(buf);
-        }
-      }
-      glDeleteProgram(program);
-      program = 0;
-    }
-  }
-  return program;
-}
-
-void VideoRenderOpenGles20::printGLString(const char *name, GLenum s) {
-  const char *v = (const char *) glGetString(s);
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "GL %s = %s\n",
-               name, v);
-}
-
-void VideoRenderOpenGles20::checkGlError(const char* op) {
-#ifdef ANDROID_LOG
-  for (GLint error = glGetError(); error; error = glGetError()) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "after %s() glError (0x%x)\n", op, error);
-  }
-#else
-  return;
-#endif
-}
-
-static void InitializeTexture(int name, int id, int width, int height) {
-  glActiveTexture(name);
-  glBindTexture(GL_TEXTURE_2D, id);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-  glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0,
-               GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-}
-
-void VideoRenderOpenGles20::SetupTextures(const VideoFrame& frameToRender) {
-  WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id,
-               "%s: width %d, height %d", __FUNCTION__,
-               frameToRender.width(), frameToRender.height());
-
-  const GLsizei width = frameToRender.width();
-  const GLsizei height = frameToRender.height();
-
-  glGenTextures(3, _textureIds); //Generate  the Y, U and V texture
-  InitializeTexture(GL_TEXTURE0, _textureIds[0], width, height);
-  InitializeTexture(GL_TEXTURE1, _textureIds[1], width / 2, height / 2);
-  InitializeTexture(GL_TEXTURE2, _textureIds[2], width / 2, height / 2);
-
-  checkGlError("SetupTextures");
-
-  _textureWidth = width;
-  _textureHeight = height;
-}
-
-// Uploads a plane of pixel data, accounting for stride != width*bpp.
-static void GlTexSubImage2D(GLsizei width, GLsizei height, int stride,
-                            const uint8_t* plane) {
-  if (stride == width) {
-    // Yay!  We can upload the entire plane in a single GL call.
-    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_LUMINANCE,
-                    GL_UNSIGNED_BYTE,
-                    static_cast<const GLvoid*>(plane));
-  } else {
-    // Boo!  Since GLES2 doesn't have GL_UNPACK_ROW_LENGTH and Android doesn't
-    // have GL_EXT_unpack_subimage we have to upload a row at a time.  Ick.
-    for (int row = 0; row < height; ++row) {
-      glTexSubImage2D(GL_TEXTURE_2D, 0, 0, row, width, 1, GL_LUMINANCE,
-                      GL_UNSIGNED_BYTE,
-                      static_cast<const GLvoid*>(plane + (row * stride)));
-    }
-  }
-}
-
-void VideoRenderOpenGles20::UpdateTextures(const VideoFrame& frameToRender) {
-  const GLsizei width = frameToRender.width();
-  const GLsizei height = frameToRender.height();
-
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, _textureIds[0]);
-  GlTexSubImage2D(width, height, frameToRender.stride(kYPlane),
-                  frameToRender.buffer(kYPlane));
-
-  glActiveTexture(GL_TEXTURE1);
-  glBindTexture(GL_TEXTURE_2D, _textureIds[1]);
-  GlTexSubImage2D(width / 2, height / 2, frameToRender.stride(kUPlane),
-                  frameToRender.buffer(kUPlane));
-
-  glActiveTexture(GL_TEXTURE2);
-  glBindTexture(GL_TEXTURE_2D, _textureIds[2]);
-  GlTexSubImage2D(width / 2, height / 2, frameToRender.stride(kVPlane),
-                  frameToRender.buffer(kVPlane));
-
-  checkGlError("UpdateTextures");
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/android/video_render_opengles20.h b/webrtc/modules/video_render/android/video_render_opengles20.h
deleted file mode 100644
index 57e2a10..0000000
--- a/webrtc/modules/video_render/android/video_render_opengles20.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_OPENGLES20_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_OPENGLES20_H_
-
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-namespace webrtc
-{
-
-class VideoRenderOpenGles20 {
- public:
-  VideoRenderOpenGles20(int32_t id);
-  ~VideoRenderOpenGles20();
-
-  int32_t Setup(int32_t widht, int32_t height);
-  int32_t Render(const VideoFrame& frameToRender);
-  int32_t SetCoordinates(int32_t zOrder, const float left, const float top,
-                         const float right, const float bottom);
-
- private:
-  void printGLString(const char *name, GLenum s);
-  void checkGlError(const char* op);
-  GLuint loadShader(GLenum shaderType, const char* pSource);
-  GLuint createProgram(const char* pVertexSource,
-                       const char* pFragmentSource);
-  void SetupTextures(const VideoFrame& frameToRender);
-  void UpdateTextures(const VideoFrame& frameToRender);
-
-  int32_t _id;
-  GLuint _textureIds[3]; // Texture id of Y,U and V texture.
-  GLuint _program;
-  GLsizei _textureWidth;
-  GLsizei _textureHeight;
-
-  GLfloat _vertices[20];
-  static const char g_indices[];
-
-  static const char g_vertextShader[];
-  static const char g_fragmentShader[];
-
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_OPENGLES20_H_
diff --git a/webrtc/modules/video_render/external/video_render_external_impl.cc b/webrtc/modules/video_render/external/video_render_external_impl.cc
deleted file mode 100644
index 58df078..0000000
--- a/webrtc/modules/video_render/external/video_render_external_impl.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/external/video_render_external_impl.h"
-
-namespace webrtc {
-
-VideoRenderExternalImpl::VideoRenderExternalImpl(
-                                                 const int32_t id,
-                                                 const VideoRenderType videoRenderType,
-                                                 void* window,
-                                                 const bool fullscreen) :
-    _critSect(*CriticalSectionWrapper::CreateCriticalSection()),
-    _fullscreen(fullscreen)
-{
-}
-
-VideoRenderExternalImpl::~VideoRenderExternalImpl()
-{
-    delete &_critSect;
-}
-
-int32_t VideoRenderExternalImpl::Init()
-{
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::ChangeWindow(void* window)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-VideoRenderCallback*
-VideoRenderExternalImpl::AddIncomingRenderStream(const uint32_t streamId,
-                                                 const uint32_t zOrder,
-                                                 const float left,
-                                                 const float top,
-                                                 const float right,
-                                                 const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return this;
-}
-
-int32_t VideoRenderExternalImpl::DeleteIncomingRenderStream(
-                                                                  const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::GetIncomingRenderStreamProperties(
-                                                                         const uint32_t streamId,
-                                                                         uint32_t& zOrder,
-                                                                         float& left,
-                                                                         float& top,
-                                                                         float& right,
-                                                                         float& bottom) const
-{
-    CriticalSectionScoped cs(&_critSect);
-
-    zOrder = 0;
-    left = 0;
-    top = 0;
-    right = 0;
-    bottom = 0;
-
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::StartRender()
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::StopRender()
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-VideoRenderType VideoRenderExternalImpl::RenderType()
-{
-    return kRenderExternal;
-}
-
-RawVideoType VideoRenderExternalImpl::PerferedVideoType()
-{
-    return kVideoI420;
-}
-
-bool VideoRenderExternalImpl::FullScreen()
-{
-    CriticalSectionScoped cs(&_critSect);
-    return _fullscreen;
-}
-
-int32_t VideoRenderExternalImpl::GetGraphicsMemory(
-                                                         uint64_t& totalGraphicsMemory,
-                                                         uint64_t& availableGraphicsMemory) const
-{
-    totalGraphicsMemory = 0;
-    availableGraphicsMemory = 0;
-    return -1;
-}
-
-int32_t VideoRenderExternalImpl::GetScreenResolution(
-                                                           uint32_t& screenWidth,
-                                                           uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_critSect);
-    screenWidth = 0;
-    screenHeight = 0;
-    return 0;
-}
-
-uint32_t VideoRenderExternalImpl::RenderFrameRate(
-                                                        const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::SetStreamCropping(
-                                                         const uint32_t streamId,
-                                                         const float left,
-                                                         const float top,
-                                                         const float right,
-                                                         const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::ConfigureRenderer(
-                                                         const uint32_t streamId,
-                                                         const unsigned int zOrder,
-                                                         const float left,
-                                                         const float top,
-                                                         const float right,
-                                                         const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::SetTransparentBackground(
-                                                                const bool enable)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::SetText(
-                                               const uint8_t textId,
-                                               const uint8_t* text,
-                                               const int32_t textLength,
-                                               const uint32_t textColorRef,
-                                               const uint32_t backgroundColorRef,
-                                               const float left,
-                                               const float top,
-                                               const float right,
-                                               const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-int32_t VideoRenderExternalImpl::SetBitmap(const void* bitMap,
-                                           const uint8_t pictureId,
-                                           const void* colorKey,
-                                           const float left,
-                                           const float top,
-                                           const float right,
-                                           const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    return 0;
-}
-
-// VideoRenderCallback
-int32_t VideoRenderExternalImpl::RenderFrame(const uint32_t streamId,
-                                             const VideoFrame& videoFrame) {
-    return 0;
-}
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/external/video_render_external_impl.h b/webrtc/modules/video_render/external/video_render_external_impl.h
deleted file mode 100644
index a8b663f..0000000
--- a/webrtc/modules/video_render/external/video_render_external_impl.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_EXTERNAL_VIDEO_RENDER_EXTERNAL_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_EXTERNAL_VIDEO_RENDER_EXTERNAL_IMPL_H_
-
-#include "webrtc/modules/include/module_common_types.h"
-#include "webrtc/modules/video_render/i_video_render.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-
-namespace webrtc {
-
-// Class definitions
-class VideoRenderExternalImpl: IVideoRender, public VideoRenderCallback
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    VideoRenderExternalImpl(const int32_t id,
-                            const VideoRenderType videoRenderType,
-                            void* window, const bool fullscreen);
-
-    virtual ~VideoRenderExternalImpl();
-
-    virtual int32_t Init();
-
-    virtual int32_t ChangeWindow(void* window);
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId);
-
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left, float& top,
-                                              float& right, float& bottom) const;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderType RenderType();
-
-    virtual RawVideoType PerferedVideoType();
-
-    virtual bool FullScreen();
-
-    virtual int32_t
-            GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-                              uint64_t& availableGraphicsMemory) const;
-
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left, const float top,
-                            const float right, const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey, const float left,
-                              const float top, const float right,
-                              const float bottom);
-
-    // VideoRenderCallback
-    virtual int32_t RenderFrame(const uint32_t streamId,
-                                const VideoFrame& videoFrame);
-
-private:
-    CriticalSectionWrapper& _critSect;
-    bool _fullscreen;
-};
-
-}  // namespace webrtc
-
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_EXTERNAL_VIDEO_RENDER_EXTERNAL_IMPL_H_
diff --git a/webrtc/modules/video_render/i_video_render.h b/webrtc/modules/video_render/i_video_render.h
deleted file mode 100644
index e6ec7a4..0000000
--- a/webrtc/modules/video_render/i_video_render.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_I_VIDEO_RENDER_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_I_VIDEO_RENDER_H_
-
-#include "webrtc/modules/video_render/video_render.h"
-
-namespace webrtc {
-
-// Class definitions
-class IVideoRender
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    virtual ~IVideoRender() {}
-
-    virtual int32_t Init() = 0;
-
-    virtual int32_t ChangeWindow(void* window) = 0;
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId) = 0;
-
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left,
-                                              float& top,
-                                              float& right,
-                                              float& bottom) const = 0;
-    // Implemented in common code?
-    //virtual uint32_t GetNumIncomingRenderStreams() const = 0;
-    //virtual bool HasIncomingRenderStream(const uint16_t stramId) const = 0;
-
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender() = 0;
-
-    virtual int32_t StopRender() = 0;
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-    virtual VideoRenderType RenderType() = 0;
-
-    virtual RawVideoType PerferedVideoType() = 0;
-
-    virtual bool FullScreen() = 0;
-
-    // TODO: This should be treated in platform specific code only
-    virtual int32_t
-            GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-                              uint64_t& availableGraphicsMemory) const = 0;
-
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const = 0;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId) = 0;
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    virtual int32_t SetTransparentBackground(const bool enable) = 0;
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left,
-                            const float top,
-                            const float rigth,
-                            const float bottom) = 0;
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left,
-                              const float top,
-                              const float right,
-                              const float bottom) = 0;
-
-};
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_I_VIDEO_RENDER_H_
diff --git a/webrtc/modules/video_render/ios/open_gles20.h b/webrtc/modules/video_render/ios/open_gles20.h
deleted file mode 100644
index 880ddb5..0000000
--- a/webrtc/modules/video_render/ios/open_gles20.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_
-
-#include <OpenGLES/ES2/glext.h>
-
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-/*
- * This OpenGles20 is the class of renderer for VideoFrame into a GLES 2.0
- * windows used in the VideoRenderIosView class.
- */
-namespace webrtc {
-class OpenGles20 {
- public:
-  OpenGles20();
-  ~OpenGles20();
-
-  bool Setup(int32_t width, int32_t height);
-  bool Render(const VideoFrame& frame);
-
-  // SetCoordinates
-  // Sets the coordinates where the stream shall be rendered.
-  // Values must be between 0 and 1.
-  bool SetCoordinates(const float z_order,
-                      const float left,
-                      const float top,
-                      const float right,
-                      const float bottom);
-
- private:
-  // Compile and load the vertex and fragment shaders defined at the top of
-  // open_gles20.mm
-  GLuint LoadShader(GLenum shader_type, const char* shader_source);
-
-  GLuint CreateProgram(const char* vertex_source, const char* fragment_source);
-
-  // Initialize the textures by the frame width and height
-  void SetupTextures(const VideoFrame& frame);
-
-  // Update the textures by the YUV data from the frame
-  void UpdateTextures(const VideoFrame& frame);
-
-  GLuint texture_ids_[3];  // Texture id of Y,U and V texture.
-  GLuint program_;
-  GLsizei texture_width_;
-  GLsizei texture_height_;
-
-  GLfloat vertices_[20];
-  static const char indices_[];
-  static const char vertext_shader_[];
-  static const char fragment_shader_[];
-};
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_IOS_OPEN_GLES20_H_
diff --git a/webrtc/modules/video_render/ios/open_gles20.mm b/webrtc/modules/video_render/ios/open_gles20.mm
deleted file mode 100644
index d173528..0000000
--- a/webrtc/modules/video_render/ios/open_gles20.mm
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-// This files is mostly copied from
-// webrtc/modules/video_render/android/video_render_opengles20.h
-
-// TODO(sjlee): unify this copy with the android one.
-#include "webrtc/modules/video_render/ios/open_gles20.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-const char OpenGles20::indices_[] = {0, 3, 2, 0, 2, 1};
-
-const char OpenGles20::vertext_shader_[] = {
-    "attribute vec4 aPosition;\n"
-    "attribute vec2 aTextureCoord;\n"
-    "varying vec2 vTextureCoord;\n"
-    "void main() {\n"
-    "  gl_Position = aPosition;\n"
-    "  vTextureCoord = aTextureCoord;\n"
-    "}\n"};
-
-// The fragment shader.
-// Do YUV to RGB565 conversion.
-const char OpenGles20::fragment_shader_[] = {
-    "precision mediump float;\n"
-    "uniform sampler2D Ytex;\n"
-    "uniform sampler2D Utex,Vtex;\n"
-    "varying vec2 vTextureCoord;\n"
-    "void main(void) {\n"
-    "  float nx,ny,r,g,b,y,u,v;\n"
-    "  mediump vec4 txl,ux,vx;"
-    "  nx=vTextureCoord[0];\n"
-    "  ny=vTextureCoord[1];\n"
-    "  y=texture2D(Ytex,vec2(nx,ny)).r;\n"
-    "  u=texture2D(Utex,vec2(nx,ny)).r;\n"
-    "  v=texture2D(Vtex,vec2(nx,ny)).r;\n"
-    "  y=1.1643*(y-0.0625);\n"
-    "  u=u-0.5;\n"
-    "  v=v-0.5;\n"
-    "  r=y+1.5958*v;\n"
-    "  g=y-0.39173*u-0.81290*v;\n"
-    "  b=y+2.017*u;\n"
-    "  gl_FragColor=vec4(r,g,b,1.0);\n"
-    "}\n"};
-
-OpenGles20::OpenGles20() : texture_width_(-1), texture_height_(-1) {
-  texture_ids_[0] = 0;
-  texture_ids_[1] = 0;
-  texture_ids_[2] = 0;
-
-  program_ = 0;
-
-  const GLfloat vertices[20] = {
-      // X, Y, Z, U, V
-      -1, -1, 0, 0, 1,   // Bottom Left
-      1,  -1, 0, 1, 1,   // Bottom Right
-      1,  1,  0, 1, 0,   // Top Right
-      -1, 1,  0, 0, 0};  // Top Left
-
-  memcpy(vertices_, vertices, sizeof(vertices_));
-}
-
-OpenGles20::~OpenGles20() {
-  if (program_) {
-    glDeleteTextures(3, texture_ids_);
-    glDeleteProgram(program_);
-  }
-}
-
-bool OpenGles20::Setup(int32_t width, int32_t height) {
-  program_ = CreateProgram(vertext_shader_, fragment_shader_);
-  if (!program_) {
-    return false;
-  }
-
-  int position_handle = glGetAttribLocation(program_, "aPosition");
-  int texture_handle = glGetAttribLocation(program_, "aTextureCoord");
-
-  // set the vertices array in the shader
-  // vertices_ contains 4 vertices with 5 coordinates.
-  // 3 for (xyz) for the vertices and 2 for the texture
-  glVertexAttribPointer(
-      position_handle, 3, GL_FLOAT, false, 5 * sizeof(GLfloat), vertices_);
-
-  glEnableVertexAttribArray(position_handle);
-
-  // set the texture coordinate array in the shader
-  // vertices_ contains 4 vertices with 5 coordinates.
-  // 3 for (xyz) for the vertices and 2 for the texture
-  glVertexAttribPointer(
-      texture_handle, 2, GL_FLOAT, false, 5 * sizeof(GLfloat), &vertices_[3]);
-  glEnableVertexAttribArray(texture_handle);
-
-  glUseProgram(program_);
-  int i = glGetUniformLocation(program_, "Ytex");
-  glUniform1i(i, 0); /* Bind Ytex to texture unit 0 */
-
-  i = glGetUniformLocation(program_, "Utex");
-  glUniform1i(i, 1); /* Bind Utex to texture unit 1 */
-
-  i = glGetUniformLocation(program_, "Vtex");
-  glUniform1i(i, 2); /* Bind Vtex to texture unit 2 */
-
-  glViewport(0, 0, width, height);
-  return true;
-}
-
-bool OpenGles20::SetCoordinates(const float z_order,
-                                const float left,
-                                const float top,
-                                const float right,
-                                const float bottom) {
-  if (top > 1 || top < 0 || right > 1 || right < 0 || bottom > 1 ||
-      bottom < 0 || left > 1 || left < 0) {
-    return false;
-  }
-
-  // Bottom Left
-  vertices_[0] = (left * 2) - 1;
-  vertices_[1] = -1 * (2 * bottom) + 1;
-  vertices_[2] = z_order;
-
-  // Bottom Right
-  vertices_[5] = (right * 2) - 1;
-  vertices_[6] = -1 * (2 * bottom) + 1;
-  vertices_[7] = z_order;
-
-  // Top Right
-  vertices_[10] = (right * 2) - 1;
-  vertices_[11] = -1 * (2 * top) + 1;
-  vertices_[12] = z_order;
-
-  // Top Left
-  vertices_[15] = (left * 2) - 1;
-  vertices_[16] = -1 * (2 * top) + 1;
-  vertices_[17] = z_order;
-
-  return true;
-}
-
-bool OpenGles20::Render(const VideoFrame& frame) {
-  if (texture_width_ != (GLsizei)frame.width() ||
-      texture_height_ != (GLsizei)frame.height()) {
-    SetupTextures(frame);
-  }
-  UpdateTextures(frame);
-
-  glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indices_);
-
-  return true;
-}
-
-GLuint OpenGles20::LoadShader(GLenum shader_type, const char* shader_source) {
-  GLuint shader = glCreateShader(shader_type);
-  if (shader) {
-    glShaderSource(shader, 1, &shader_source, NULL);
-    glCompileShader(shader);
-
-    GLint compiled = 0;
-    glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
-    if (!compiled) {
-      GLint info_len = 0;
-      glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &info_len);
-      if (info_len) {
-        char* buf = (char*)malloc(info_len);
-        glGetShaderInfoLog(shader, info_len, NULL, buf);
-        WEBRTC_TRACE(kTraceError,
-                     kTraceVideoRenderer,
-                     0,
-                     "%s: Could not compile shader %d: %s",
-                     __FUNCTION__,
-                     shader_type,
-                     buf);
-        free(buf);
-      }
-      glDeleteShader(shader);
-      shader = 0;
-    }
-  }
-  return shader;
-}
-
-GLuint OpenGles20::CreateProgram(const char* vertex_source,
-                                 const char* fragment_source) {
-  GLuint vertex_shader = LoadShader(GL_VERTEX_SHADER, vertex_source);
-  if (!vertex_shader) {
-    return -1;
-  }
-
-  GLuint fragment_shader = LoadShader(GL_FRAGMENT_SHADER, fragment_source);
-  if (!fragment_shader) {
-    return -1;
-  }
-
-  GLuint program = glCreateProgram();
-  if (program) {
-    glAttachShader(program, vertex_shader);
-    glAttachShader(program, fragment_shader);
-    glLinkProgram(program);
-    GLint link_status = GL_FALSE;
-    glGetProgramiv(program, GL_LINK_STATUS, &link_status);
-    if (link_status != GL_TRUE) {
-      GLint info_len = 0;
-      glGetProgramiv(program, GL_INFO_LOG_LENGTH, &info_len);
-      if (info_len) {
-        char* buf = (char*)malloc(info_len);
-        glGetProgramInfoLog(program, info_len, NULL, buf);
-        WEBRTC_TRACE(kTraceError,
-                     kTraceVideoRenderer,
-                     0,
-                     "%s: Could not link program: %s",
-                     __FUNCTION__,
-                     buf);
-        free(buf);
-      }
-      glDeleteProgram(program);
-      program = 0;
-    }
-  }
-
-  if (vertex_shader) {
-    glDeleteShader(vertex_shader);
-  }
-
-  if (fragment_shader) {
-    glDeleteShader(fragment_shader);
-  }
-
-  return program;
-}
-
-static void InitializeTexture(int name, int id, int width, int height) {
-  glActiveTexture(name);
-  glBindTexture(GL_TEXTURE_2D, id);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-  glTexImage2D(GL_TEXTURE_2D,
-               0,
-               GL_LUMINANCE,
-               width,
-               height,
-               0,
-               GL_LUMINANCE,
-               GL_UNSIGNED_BYTE,
-               NULL);
-}
-
-void OpenGles20::SetupTextures(const VideoFrame& frame) {
-  const GLsizei width = frame.width();
-  const GLsizei height = frame.height();
-
-  if (!texture_ids_[0]) {
-    glGenTextures(3, texture_ids_);  // Generate  the Y, U and V texture
-  }
-
-  InitializeTexture(GL_TEXTURE0, texture_ids_[0], width, height);
-  InitializeTexture(GL_TEXTURE1, texture_ids_[1], width / 2, height / 2);
-  InitializeTexture(GL_TEXTURE2, texture_ids_[2], width / 2, height / 2);
-
-  texture_width_ = width;
-  texture_height_ = height;
-}
-
-// Uploads a plane of pixel data, accounting for stride != width*bpp.
-static void GlTexSubImage2D(GLsizei width,
-                            GLsizei height,
-                            int stride,
-                            const uint8_t* plane) {
-  if (stride == width) {
-    // Yay!  We can upload the entire plane in a single GL call.
-    glTexSubImage2D(GL_TEXTURE_2D,
-                    0,
-                    0,
-                    0,
-                    width,
-                    height,
-                    GL_LUMINANCE,
-                    GL_UNSIGNED_BYTE,
-                    static_cast<const GLvoid*>(plane));
-  } else {
-    // Boo!  Since GLES2 doesn't have GL_UNPACK_ROW_LENGTH and iOS doesn't
-    // have GL_EXT_unpack_subimage we have to upload a row at a time.  Ick.
-    for (int row = 0; row < height; ++row) {
-      glTexSubImage2D(GL_TEXTURE_2D,
-                      0,
-                      0,
-                      row,
-                      width,
-                      1,
-                      GL_LUMINANCE,
-                      GL_UNSIGNED_BYTE,
-                      static_cast<const GLvoid*>(plane + (row * stride)));
-    }
-  }
-}
-
-void OpenGles20::UpdateTextures(const VideoFrame& frame) {
-  const GLsizei width = frame.width();
-  const GLsizei height = frame.height();
-
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, texture_ids_[0]);
-  GlTexSubImage2D(width, height, frame.stride(kYPlane), frame.buffer(kYPlane));
-
-  glActiveTexture(GL_TEXTURE1);
-  glBindTexture(GL_TEXTURE_2D, texture_ids_[1]);
-  GlTexSubImage2D(
-      width / 2, height / 2, frame.stride(kUPlane), frame.buffer(kUPlane));
-
-  glActiveTexture(GL_TEXTURE2);
-  glBindTexture(GL_TEXTURE_2D, texture_ids_[2]);
-  GlTexSubImage2D(
-      width / 2, height / 2, frame.stride(kVPlane), frame.buffer(kVPlane));
-}
diff --git a/webrtc/modules/video_render/ios/video_render_ios_channel.h b/webrtc/modules/video_render/ios/video_render_ios_channel.h
deleted file mode 100644
index a15ba39..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_channel.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_CHANNEL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_CHANNEL_H_
-
-#include "webrtc/modules/video_render/video_render_defines.h"
-#include "webrtc/modules/video_render/ios/video_render_ios_view.h"
-
-namespace webrtc {
-
-class VideoRenderIosGles20;
-
-class VideoRenderIosChannel : public VideoRenderCallback {
- public:
-  explicit VideoRenderIosChannel(VideoRenderIosView* view);
-  virtual ~VideoRenderIosChannel();
-
-  // Implementation of VideoRenderCallback.
-  int32_t RenderFrame(const uint32_t stream_id,
-                      const VideoFrame& video_frame) override;
-
-  int SetStreamSettings(const float z_order,
-                        const float left,
-                        const float top,
-                        const float right,
-                        const float bottom);
-  bool IsUpdated();
-  bool RenderOffScreenBuffer();
-
- private:
-  VideoRenderIosView* view_;
-  VideoFrame* current_frame_;
-  bool buffer_is_updated_;
-};
-
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_CHANNEL_H_
diff --git a/webrtc/modules/video_render/ios/video_render_ios_channel.mm b/webrtc/modules/video_render/ios/video_render_ios_channel.mm
deleted file mode 100644
index b2b1585..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_channel.mm
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-#include "webrtc/modules/video_render/ios/video_render_ios_channel.h"
-
-using namespace webrtc;
-
-VideoRenderIosChannel::VideoRenderIosChannel(VideoRenderIosView* view)
-    : view_(view), current_frame_(new VideoFrame()), buffer_is_updated_(false) {
-}
-
-VideoRenderIosChannel::~VideoRenderIosChannel() { delete current_frame_; }
-
-int32_t VideoRenderIosChannel::RenderFrame(const uint32_t stream_id,
-                                           const VideoFrame& video_frame) {
-  current_frame_->CopyFrame(video_frame);
-  current_frame_->set_render_time_ms(0);
-  buffer_is_updated_ = true;
-
-  return 0;
-}
-
-bool VideoRenderIosChannel::RenderOffScreenBuffer() {
-  if (![view_ renderFrame:current_frame_]) {
-    return false;
-  }
-
-  buffer_is_updated_ = false;
-
-  return true;
-}
-
-bool VideoRenderIosChannel::IsUpdated() { return buffer_is_updated_; }
-
-int VideoRenderIosChannel::SetStreamSettings(const float z_order,
-                                             const float left,
-                                             const float top,
-                                             const float right,
-                                             const float bottom) {
-  if (![view_ setCoordinatesForZOrder:z_order
-                                 Left:left
-                                  Top:bottom
-                                Right:right
-                               Bottom:top]) {
-
-    return -1;
-  }
-
-  return 0;
-}
diff --git a/webrtc/modules/video_render/ios/video_render_ios_gles20.h b/webrtc/modules/video_render/ios/video_render_ios_gles20.h
deleted file mode 100644
index d4e04e7..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_gles20.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_GLES20_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_GLES20_H_
-
-#include <list>
-#include <map>
-#include <memory>
-
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/modules/video_render/ios/video_render_ios_channel.h"
-#include "webrtc/modules/video_render/ios/video_render_ios_view.h"
-
-namespace webrtc {
-
-class CriticalSectionWrapper;
-class EventTimerWrapper;
-
-class VideoRenderIosGles20 {
- public:
-  VideoRenderIosGles20(VideoRenderIosView* view,
-                       bool full_screen,
-                       int render_id);
-  virtual ~VideoRenderIosGles20();
-
-  int Init();
-  VideoRenderIosChannel* CreateEaglChannel(int channel,
-                                           int z_order,
-                                           float left,
-                                           float top,
-                                           float right,
-                                           float bottom);
-  int DeleteEaglChannel(int channel);
-  bool HasChannel(int channel);
-  bool ScreenUpdateProcess();
-  int GetWindowRect(Rect& rect);  // NOLINT
-
-  int GetScreenResolution(uint& screen_width, uint& screen_height);  // NOLINT
-  int SetStreamCropping(const uint stream_id,
-                        const float left,
-                        const float top,
-                        const float right,
-                        const float bottom);
-
-  int ChangeWindow(void* new_window);
-  int StartRender();
-  int StopRender();
-
- protected:
-  static bool ScreenUpdateThreadProc(void* obj);
-
- private:
-  bool RenderOffScreenBuffers();
-  int SwapAndDisplayBuffers();
-
- private:
-  std::unique_ptr<CriticalSectionWrapper> gles_crit_sec_;
-  EventTimerWrapper* screen_update_event_;
-  // TODO(pbos): Remove unique_ptr and use member directly.
-  std::unique_ptr<rtc::PlatformThread> screen_update_thread_;
-
-  VideoRenderIosView* view_;
-  Rect window_rect_;
-  int window_width_;
-  int window_height_;
-  bool is_full_screen_;
-  GLint backing_width_;
-  GLint backing_height_;
-  GLuint view_renderbuffer_;
-  GLuint view_framebuffer_;
-  GLuint depth_renderbuffer_;
-  std::map<int, VideoRenderIosChannel*> agl_channels_;
-  std::multimap<int, int> z_order_to_channel_;
-  EAGLContext* gles_context_;
-  bool is_rendering_;
-};
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_GLES20_H_
diff --git a/webrtc/modules/video_render/ios/video_render_ios_gles20.mm b/webrtc/modules/video_render/ios/video_render_ios_gles20.mm
deleted file mode 100644
index 6ad5db8..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_gles20.mm
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-#include "webrtc/modules/video_render/ios/video_render_ios_gles20.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-
-using namespace webrtc;
-
-VideoRenderIosGles20::VideoRenderIosGles20(VideoRenderIosView* view,
-                                           bool full_screen,
-                                           int render_id)
-    : gles_crit_sec_(CriticalSectionWrapper::CreateCriticalSection()),
-      screen_update_event_(0),
-      view_(view),
-      window_rect_(),
-      window_width_(0),
-      window_height_(0),
-      is_full_screen_(full_screen),
-      agl_channels_(),
-      z_order_to_channel_(),
-      gles_context_([view context]),
-      is_rendering_(true) {
-  screen_update_thread_.reset(new rtc::PlatformThread(
-      ScreenUpdateThreadProc, this, "ScreenUpdateGles20"));
-  screen_update_event_ = EventTimerWrapper::Create();
-  GetWindowRect(window_rect_);
-}
-
-VideoRenderIosGles20::~VideoRenderIosGles20() {
-  // Signal event to exit thread, then delete it
-  rtc::PlatformThread* thread_wrapper = screen_update_thread_.release();
-
-  if (thread_wrapper) {
-    screen_update_event_->Set();
-    screen_update_event_->StopTimer();
-
-    thread_wrapper->Stop();
-    delete thread_wrapper;
-    delete screen_update_event_;
-    screen_update_event_ = NULL;
-    is_rendering_ = FALSE;
-  }
-
-  // Delete all channels
-  std::map<int, VideoRenderIosChannel*>::iterator it = agl_channels_.begin();
-  while (it != agl_channels_.end()) {
-    delete it->second;
-    agl_channels_.erase(it);
-    it = agl_channels_.begin();
-  }
-  agl_channels_.clear();
-
-  // Clean the zOrder map
-  std::multimap<int, int>::iterator z_it = z_order_to_channel_.begin();
-  while (z_it != z_order_to_channel_.end()) {
-    z_order_to_channel_.erase(z_it);
-    z_it = z_order_to_channel_.begin();
-  }
-  z_order_to_channel_.clear();
-}
-
-int VideoRenderIosGles20::Init() {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  if (!view_) {
-    view_ = [[VideoRenderIosView alloc] init];
-  }
-
-  if (![view_ createContext]) {
-    return -1;
-  }
-
-  screen_update_thread_->Start();
-  screen_update_thread_->SetPriority(rtc::kRealtimePriority);
-
-  // Start the event triggering the render process
-  unsigned int monitor_freq = 60;
-  screen_update_event_->StartTimer(true, 1000 / monitor_freq);
-
-  window_width_ = window_rect_.right - window_rect_.left;
-  window_height_ = window_rect_.bottom - window_rect_.top;
-
-  return 0;
-}
-
-VideoRenderIosChannel* VideoRenderIosGles20::CreateEaglChannel(int channel,
-                                                               int z_order,
-                                                               float left,
-                                                               float top,
-                                                               float right,
-                                                               float bottom) {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  if (HasChannel(channel)) {
-    return NULL;
-  }
-
-  VideoRenderIosChannel* new_eagl_channel = new VideoRenderIosChannel(view_);
-
-  if (new_eagl_channel->SetStreamSettings(z_order, left, top, right, bottom) ==
-      -1) {
-    return NULL;
-  }
-
-  agl_channels_[channel] = new_eagl_channel;
-  z_order_to_channel_.insert(std::pair<int, int>(z_order, channel));
-
-  return new_eagl_channel;
-}
-
-int VideoRenderIosGles20::DeleteEaglChannel(int channel) {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  std::map<int, VideoRenderIosChannel*>::iterator it;
-  it = agl_channels_.find(channel);
-  if (it != agl_channels_.end()) {
-    delete it->second;
-    agl_channels_.erase(it);
-  } else {
-    return -1;
-  }
-
-  std::multimap<int, int>::iterator z_it = z_order_to_channel_.begin();
-  while (z_it != z_order_to_channel_.end()) {
-    if (z_it->second == channel) {
-      z_order_to_channel_.erase(z_it);
-      break;
-    }
-    z_it++;
-  }
-
-  return 0;
-}
-
-bool VideoRenderIosGles20::HasChannel(int channel) {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  std::map<int, VideoRenderIosChannel*>::iterator it =
-      agl_channels_.find(channel);
-
-  if (it != agl_channels_.end()) {
-    return true;
-  }
-
-  return false;
-}
-
-// Rendering process
-bool VideoRenderIosGles20::ScreenUpdateThreadProc(void* obj) {
-  return static_cast<VideoRenderIosGles20*>(obj)->ScreenUpdateProcess();
-}
-
-bool VideoRenderIosGles20::ScreenUpdateProcess() {
-  screen_update_event_->Wait(100);
-
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  if (!is_rendering_) {
-    return false;
-  }
-
-  if (!screen_update_thread_) {
-    return false;
-  }
-
-  if (GetWindowRect(window_rect_) == -1) {
-    return true;
-  }
-
-  if (window_width_ != (window_rect_.right - window_rect_.left) ||
-      window_height_ != (window_rect_.bottom - window_rect_.top)) {
-    window_width_ = window_rect_.right - window_rect_.left;
-    window_height_ = window_rect_.bottom - window_rect_.top;
-  }
-
-  // Check if there are any updated buffers
-  bool updated = false;
-
-  std::map<int, VideoRenderIosChannel*>::iterator it = agl_channels_.begin();
-  while (it != agl_channels_.end()) {
-    VideoRenderIosChannel* agl_channel = it->second;
-
-    updated = agl_channel->IsUpdated();
-    if (updated) {
-      break;
-    }
-    it++;
-  }
-
-  if (updated) {
-    // At least one buffer has been updated, we need to repaint the texture
-    // Loop through all channels starting highest zOrder ending with lowest.
-    for (std::multimap<int, int>::reverse_iterator r_it =
-             z_order_to_channel_.rbegin();
-         r_it != z_order_to_channel_.rend();
-         r_it++) {
-      int channel_id = r_it->second;
-      std::map<int, VideoRenderIosChannel*>::iterator it =
-          agl_channels_.find(channel_id);
-
-      VideoRenderIosChannel* agl_channel = it->second;
-
-      agl_channel->RenderOffScreenBuffer();
-    }
-
-    [view_ presentFramebuffer];
-  }
-
-  return true;
-}
-
-int VideoRenderIosGles20::GetWindowRect(Rect& rect) {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  if (!view_) {
-    return -1;
-  }
-
-  CGRect bounds = [view_ bounds];
-  rect.top = bounds.origin.y;
-  rect.left = bounds.origin.x;
-  rect.bottom = bounds.size.height + bounds.origin.y;
-  rect.right = bounds.size.width + bounds.origin.x;
-
-  return 0;
-}
-
-int VideoRenderIosGles20::ChangeWindow(void* new_window) {
-  CriticalSectionScoped cs(gles_crit_sec_.get());
-
-  view_ = (__bridge VideoRenderIosView*)new_window;
-
-  return 0;
-}
-
-int VideoRenderIosGles20::StartRender() {
-  is_rendering_ = true;
-  return 0;
-}
-
-int VideoRenderIosGles20::StopRender() {
-  is_rendering_ = false;
-  return 0;
-}
-
-int VideoRenderIosGles20::GetScreenResolution(uint& screen_width,
-                                              uint& screen_height) {
-  screen_width = [view_ bounds].size.width;
-  screen_height = [view_ bounds].size.height;
-  return 0;
-}
-
-int VideoRenderIosGles20::SetStreamCropping(const uint stream_id,
-                                            const float left,
-                                            const float top,
-                                            const float right,
-                                            const float bottom) {
-  // Check if there are any updated buffers
-  // bool updated = false;
-  uint counter = 0;
-
-  std::map<int, VideoRenderIosChannel*>::iterator it = agl_channels_.begin();
-  while (it != agl_channels_.end()) {
-    if (counter == stream_id) {
-      VideoRenderIosChannel* agl_channel = it->second;
-      agl_channel->SetStreamSettings(0, left, top, right, bottom);
-    }
-    counter++;
-    it++;
-  }
-
-  return 0;
-}
diff --git a/webrtc/modules/video_render/ios/video_render_ios_impl.h b/webrtc/modules/video_render/ios/video_render_ios_impl.h
deleted file mode 100644
index 04a7493..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_impl.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_IMPL_H_
-
-#include <list>
-#include <map>
-#include <memory>
-
-#include "webrtc/modules/video_render/i_video_render.h"
-
-namespace webrtc {
-
-class VideoRenderIosGles20;
-class CriticalSectionWrapper;
-
-class VideoRenderIosImpl : IVideoRender {
- public:
-  explicit VideoRenderIosImpl(const int32_t id,
-                              void* window,
-                              const bool full_screen);
-
-  ~VideoRenderIosImpl();
-
-  // Implementation of IVideoRender.
-  int32_t Init() override;
-  int32_t ChangeWindow(void* window) override;
-
-  VideoRenderCallback* AddIncomingRenderStream(const uint32_t stream_id,
-                                               const uint32_t z_order,
-                                               const float left,
-                                               const float top,
-                                               const float right,
-                                               const float bottom) override;
-
-  int32_t DeleteIncomingRenderStream(const uint32_t stream_id) override;
-
-  int32_t GetIncomingRenderStreamProperties(const uint32_t stream_id,
-                                            uint32_t& z_order,
-                                            float& left,
-                                            float& top,
-                                            float& right,
-                                            float& bottom) const override;
-
-  int32_t StartRender() override;
-  int32_t StopRender() override;
-
-  VideoRenderType RenderType() override;
-  RawVideoType PerferedVideoType() override;
-  bool FullScreen() override;
-  int32_t GetGraphicsMemory(
-      uint64_t& total_graphics_memory,
-      uint64_t& available_graphics_memory) const override;  // NOLINT
-  int32_t GetScreenResolution(
-      uint32_t& screen_width,
-      uint32_t& screen_height) const override;  // NOLINT
-  uint32_t RenderFrameRate(const uint32_t stream_id);
-  int32_t SetStreamCropping(const uint32_t stream_id,
-                            const float left,
-                            const float top,
-                            const float right,
-                            const float bottom) override;
-  int32_t ConfigureRenderer(const uint32_t stream_id,
-                            const unsigned int z_order,
-                            const float left,
-                            const float top,
-                            const float right,
-                            const float bottom) override;
-  int32_t SetTransparentBackground(const bool enable) override;
-  int32_t SetText(const uint8_t text_id,
-                  const uint8_t* text,
-                  const int32_t text_length,
-                  const uint32_t text_color_ref,
-                  const uint32_t background_color_ref,
-                  const float left,
-                  const float top,
-                  const float right,
-                  const float bottom) override;
-  int32_t SetBitmap(const void* bit_map,
-                    const uint8_t picture_id,
-                    const void* color_key,
-                    const float left,
-                    const float top,
-                    const float right,
-                    const float bottom);
-  int32_t FullScreenRender(void* window, const bool enable);
-
- private:
-  int32_t id_;
-  void* ptr_window_;
-  bool full_screen_;
-
-  CriticalSectionWrapper* crit_sec_;
-  std::unique_ptr<VideoRenderIosGles20> ptr_ios_render_;
-};
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_IOS_VIDEO_RENDER_IOS_IMPL_H_
diff --git a/webrtc/modules/video_render/ios/video_render_ios_impl.mm b/webrtc/modules/video_render/ios/video_render_ios_impl.mm
deleted file mode 100644
index 0ef411d..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_impl.mm
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-#include "webrtc/modules/video_render/ios/video_render_ios_impl.h"
-#include "webrtc/modules/video_render/ios/video_render_ios_gles20.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-#define IOS_UNSUPPORTED()                                  \
-  WEBRTC_TRACE(kTraceError,                                \
-               kTraceVideoRenderer,                        \
-               id_,                                        \
-               "%s is not supported on the iOS platform.", \
-               __FUNCTION__);                              \
-  return -1;
-
-VideoRenderIosImpl::VideoRenderIosImpl(const int32_t id,
-                                       void* window,
-                                       const bool full_screen)
-    : id_(id),
-      ptr_window_(window),
-      full_screen_(full_screen),
-      crit_sec_(CriticalSectionWrapper::CreateCriticalSection()) {}
-
-VideoRenderIosImpl::~VideoRenderIosImpl() {
-  delete crit_sec_;
-}
-
-int32_t VideoRenderIosImpl::Init() {
-  CriticalSectionScoped cs(crit_sec_);
-
-  ptr_ios_render_.reset(new VideoRenderIosGles20(
-      (__bridge VideoRenderIosView*)ptr_window_, full_screen_, id_));
-
-  return ptr_ios_render_->Init();
-  ;
-}
-
-int32_t VideoRenderIosImpl::ChangeWindow(void* window) {
-  CriticalSectionScoped cs(crit_sec_);
-  if (window == NULL) {
-    return -1;
-  }
-
-  ptr_window_ = window;
-
-  return ptr_ios_render_->ChangeWindow(ptr_window_);
-}
-
-VideoRenderCallback* VideoRenderIosImpl::AddIncomingRenderStream(
-    const uint32_t stream_id,
-    const uint32_t z_order,
-    const float left,
-    const float top,
-    const float right,
-    const float bottom) {
-  CriticalSectionScoped cs(crit_sec_);
-  if (!ptr_window_) {
-    return NULL;
-  }
-
-  return ptr_ios_render_->CreateEaglChannel(
-      stream_id, z_order, left, top, right, bottom);
-}
-
-int32_t VideoRenderIosImpl::DeleteIncomingRenderStream(
-    const uint32_t stream_id) {
-  CriticalSectionScoped cs(crit_sec_);
-
-  return ptr_ios_render_->DeleteEaglChannel(stream_id);
-}
-
-int32_t VideoRenderIosImpl::GetIncomingRenderStreamProperties(
-    const uint32_t stream_id,
-    uint32_t& z_order,
-    float& left,
-    float& top,
-    float& right,
-    float& bottom) const {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::StartRender() {
-  return ptr_ios_render_->StartRender();
-}
-
-int32_t VideoRenderIosImpl::StopRender() {
-  return ptr_ios_render_->StopRender();
-}
-
-VideoRenderType VideoRenderIosImpl::RenderType() { return kRenderiOS; }
-
-RawVideoType VideoRenderIosImpl::PerferedVideoType() { return kVideoI420; }
-
-bool VideoRenderIosImpl::FullScreen() { IOS_UNSUPPORTED(); }
-
-int32_t VideoRenderIosImpl::GetGraphicsMemory(
-    uint64_t& totalGraphicsMemory,
-    uint64_t& availableGraphicsMemory) const {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::GetScreenResolution(uint32_t& screenWidth,
-                                                uint32_t& screenHeight) const {
-  return ptr_ios_render_->GetScreenResolution(screenWidth, screenHeight);
-}
-
-uint32_t VideoRenderIosImpl::RenderFrameRate(const uint32_t streamId) {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::SetStreamCropping(const uint32_t streamId,
-                                              const float left,
-                                              const float top,
-                                              const float right,
-                                              const float bottom) {
-  return ptr_ios_render_->SetStreamCropping(streamId, left, top, right, bottom);
-}
-
-int32_t VideoRenderIosImpl::ConfigureRenderer(const uint32_t streamId,
-                                              const unsigned int zOrder,
-                                              const float left,
-                                              const float top,
-                                              const float right,
-                                              const float bottom) {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::SetTransparentBackground(const bool enable) {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::SetText(const uint8_t textId,
-                                    const uint8_t* text,
-                                    const int32_t textLength,
-                                    const uint32_t textColorRef,
-                                    const uint32_t backgroundColorRef,
-                                    const float left,
-                                    const float top,
-                                    const float right,
-                                    const float bottom) {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::SetBitmap(const void* bitMap,
-                                      const uint8_t pictureId,
-                                      const void* colorKey,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) {
-  IOS_UNSUPPORTED();
-}
-
-int32_t VideoRenderIosImpl::FullScreenRender(void* window, const bool enable) {
-  IOS_UNSUPPORTED();
-}
diff --git a/webrtc/modules/video_render/ios/video_render_ios_view.h b/webrtc/modules/video_render/ios/video_render_ios_view.h
deleted file mode 100644
index d110bc7..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_view.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_IOS_RENDER_VIEW_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_IOS_RENDER_VIEW_H_
-
-#import <UIKit/UIKit.h>
-#import <QuartzCore/QuartzCore.h>
-
-#include "webrtc/modules/video_render/ios/open_gles20.h"
-
-@interface VideoRenderIosView : UIView
-
-- (BOOL)createContext;
-- (BOOL)presentFramebuffer;
-- (BOOL)renderFrame:(webrtc::VideoFrame*)frameToRender;
-- (BOOL)setCoordinatesForZOrder:(const float)zOrder
-                           Left:(const float)left
-                            Top:(const float)top
-                          Right:(const float)right
-                         Bottom:(const float)bottom;
-
-@property(nonatomic, retain) EAGLContext* context;
-
-@end
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_IOS_RENDER_VIEW_H_
diff --git a/webrtc/modules/video_render/ios/video_render_ios_view.mm b/webrtc/modules/video_render/ios/video_render_ios_view.mm
deleted file mode 100644
index b106ffa..0000000
--- a/webrtc/modules/video_render/ios/video_render_ios_view.mm
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-#include <memory>
-
-#include "webrtc/modules/video_render/ios/video_render_ios_view.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-@implementation VideoRenderIosView {
-  EAGLContext* _context;
-  std::unique_ptr<webrtc::OpenGles20> _gles_renderer20;
-  int _frameBufferWidth;
-  int _frameBufferHeight;
-  unsigned int _defaultFrameBuffer;
-  unsigned int _colorRenderBuffer;
-}
-
-@synthesize context = context_;
-
-+ (Class)layerClass {
-  return [CAEAGLLayer class];
-}
-
-- (id)initWithCoder:(NSCoder*)coder {
-  // init super class
-  self = [super initWithCoder:coder];
-  if (self) {
-    _gles_renderer20.reset(new OpenGles20());
-  }
-  return self;
-}
-
-- (id)init {
-  // init super class
-  self = [super init];
-  if (self) {
-    _gles_renderer20.reset(new OpenGles20());
-  }
-  return self;
-}
-
-- (id)initWithFrame:(CGRect)frame {
-  // init super class
-  self = [super initWithFrame:frame];
-  if (self) {
-    _gles_renderer20.reset(new OpenGles20());
-  }
-  return self;
-}
-
-- (void)dealloc {
-  if (_defaultFrameBuffer) {
-    glDeleteFramebuffers(1, &_defaultFrameBuffer);
-    _defaultFrameBuffer = 0;
-  }
-
-  if (_colorRenderBuffer) {
-    glDeleteRenderbuffers(1, &_colorRenderBuffer);
-    _colorRenderBuffer = 0;
-  }
-
-  [EAGLContext setCurrentContext:nil];
-}
-
-- (NSString*)description {
-  return [NSString stringWithFormat:
-          @"A WebRTC implemented subclass of UIView."
-          "+Class method is overwritten, along with custom methods"];
-}
-
-- (BOOL)createContext {
-  // create OpenGLES context from self layer class
-  CAEAGLLayer* eagl_layer = (CAEAGLLayer*)self.layer;
-  eagl_layer.opaque = YES;
-  eagl_layer.drawableProperties =
-      [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO],
-          kEAGLDrawablePropertyRetainedBacking,
-          kEAGLColorFormatRGBA8,
-          kEAGLDrawablePropertyColorFormat,
-          nil];
-  _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
-
-  if (!_context) {
-    return NO;
-  }
-
-  if (![EAGLContext setCurrentContext:_context]) {
-    return NO;
-  }
-
-  // generates and binds the OpenGLES buffers
-  glGenFramebuffers(1, &_defaultFrameBuffer);
-  glBindFramebuffer(GL_FRAMEBUFFER, _defaultFrameBuffer);
-
-  // Create color render buffer and allocate backing store.
-  glGenRenderbuffers(1, &_colorRenderBuffer);
-  glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer);
-  [_context renderbufferStorage:GL_RENDERBUFFER
-                   fromDrawable:(CAEAGLLayer*)self.layer];
-  glGetRenderbufferParameteriv(
-      GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &_frameBufferWidth);
-  glGetRenderbufferParameteriv(
-      GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &_frameBufferHeight);
-  glFramebufferRenderbuffer(GL_FRAMEBUFFER,
-                            GL_COLOR_ATTACHMENT0,
-                            GL_RENDERBUFFER,
-                            _colorRenderBuffer);
-
-  if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-    return NO;
-  }
-
-  // set the frame buffer
-  glBindFramebuffer(GL_FRAMEBUFFER, _defaultFrameBuffer);
-  glViewport(0, 0, self.frame.size.width, self.frame.size.height);
-
-  return _gles_renderer20->Setup([self bounds].size.width,
-                                 [self bounds].size.height);
-}
-
-- (BOOL)presentFramebuffer {
-  if (![_context presentRenderbuffer:GL_RENDERBUFFER]) {
-    WEBRTC_TRACE(kTraceWarning,
-                 kTraceVideoRenderer,
-                 0,
-                 "%s:%d [context present_renderbuffer] "
-                 "returned false",
-                 __FUNCTION__,
-                 __LINE__);
-  }
-  return YES;
-}
-
-- (BOOL)renderFrame:(VideoFrame*)frameToRender {
-  if (![EAGLContext setCurrentContext:_context]) {
-    return NO;
-  }
-
-  return _gles_renderer20->Render(*frameToRender);
-}
-
-- (BOOL)setCoordinatesForZOrder:(const float)zOrder
-                           Left:(const float)left
-                            Top:(const float)top
-                          Right:(const float)right
-                         Bottom:(const float)bottom {
-  return _gles_renderer20->SetCoordinates(zOrder, left, top, right, bottom);
-}
-
-@end
diff --git a/webrtc/modules/video_render/linux/video_render_linux_impl.cc b/webrtc/modules/video_render/linux/video_render_linux_impl.cc
deleted file mode 100644
index 7e53dfd..0000000
--- a/webrtc/modules/video_render/linux/video_render_linux_impl.cc
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/linux/video_render_linux_impl.h"
-
-#include "webrtc/modules/video_render/linux/video_x11_render.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-#include <X11/Xlib.h>
-
-namespace webrtc {
-
-VideoRenderLinuxImpl::VideoRenderLinuxImpl(
-                                           const int32_t id,
-                                           const VideoRenderType videoRenderType,
-                                           void* window, const bool fullscreen) :
-            _id(id),
-            _renderLinuxCritsect(
-                                 *CriticalSectionWrapper::CreateCriticalSection()),
-            _ptrWindow(window), _ptrX11Render(NULL)
-{
-}
-
-VideoRenderLinuxImpl::~VideoRenderLinuxImpl()
-{
-    if (_ptrX11Render)
-        delete _ptrX11Render;
-
-    delete &_renderLinuxCritsect;
-}
-
-int32_t VideoRenderLinuxImpl::Init()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-
-    CriticalSectionScoped cs(&_renderLinuxCritsect);
-    _ptrX11Render = new VideoX11Render((Window) _ptrWindow);
-    if (!_ptrX11Render)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s",
-                     "Failed to create instance of VideoX11Render object");
-        return -1;
-    }
-    int retVal = _ptrX11Render->Init();
-    if (retVal == -1)
-    {
-        return -1;
-    }
-
-    return 0;
-
-}
-
-int32_t VideoRenderLinuxImpl::ChangeWindow(void* window)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-
-    CriticalSectionScoped cs(&_renderLinuxCritsect);
-    _ptrWindow = window;
-
-    if (_ptrX11Render)
-    {
-        return _ptrX11Render->ChangeWindow((Window) window);
-    }
-
-    return -1;
-}
-
-VideoRenderCallback* VideoRenderLinuxImpl::AddIncomingRenderStream(
-                                                                       const uint32_t streamId,
-                                                                       const uint32_t zOrder,
-                                                                       const float left,
-                                                                       const float top,
-                                                                       const float right,
-                                                                       const float bottom)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_renderLinuxCritsect);
-
-    VideoRenderCallback* renderCallback = NULL;
-    if (_ptrX11Render)
-    {
-        VideoX11Channel* renderChannel =
-                _ptrX11Render->CreateX11RenderChannel(streamId, zOrder, left,
-                                                      top, right, bottom);
-        if (!renderChannel)
-        {
-            WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                         "Render channel creation failed for stream id: %d",
-                         streamId);
-            return NULL;
-        }
-        renderCallback = (VideoRenderCallback *) renderChannel;
-    }
-    else
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "_ptrX11Render is NULL");
-        return NULL;
-    }
-    return renderCallback;
-}
-
-int32_t VideoRenderLinuxImpl::DeleteIncomingRenderStream(
-                                                               const uint32_t streamId)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_renderLinuxCritsect);
-
-    if (_ptrX11Render)
-    {
-        return _ptrX11Render->DeleteX11RenderChannel(streamId);
-    }
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::GetIncomingRenderStreamProperties(
-                                                                      const uint32_t streamId,
-                                                                      uint32_t& zOrder,
-                                                                      float& left,
-                                                                      float& top,
-                                                                      float& right,
-                                                                      float& bottom) const
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_renderLinuxCritsect);
-
-    if (_ptrX11Render)
-    {
-        return _ptrX11Render->GetIncomingStreamProperties(streamId, zOrder,
-                                                          left, top, right,
-                                                          bottom);
-    }
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::StartRender()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-    return 0;
-}
-
-int32_t VideoRenderLinuxImpl::StopRender()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s",
-                 __FUNCTION__);
-    return 0;
-}
-
-VideoRenderType VideoRenderLinuxImpl::RenderType()
-{
-    return kRenderX11;
-}
-
-RawVideoType VideoRenderLinuxImpl::PerferedVideoType()
-{
-    return kVideoI420;
-}
-
-bool VideoRenderLinuxImpl::FullScreen()
-{
-    return false;
-}
-
-int32_t VideoRenderLinuxImpl::GetGraphicsMemory(
-                                                      uint64_t& /*totalGraphicsMemory*/,
-                                                      uint64_t& /*availableGraphicsMemory*/) const
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::GetScreenResolution(
-                                                        uint32_t& /*screenWidth*/,
-                                                        uint32_t& /*screenHeight*/) const
-{
-    return -1;
-}
-
-uint32_t VideoRenderLinuxImpl::RenderFrameRate(const uint32_t /*streamId*/)
-{
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::SetStreamCropping(
-                                                      const uint32_t /*streamId*/,
-                                                      const float /*left*/,
-                                                      const float /*top*/,
-                                                      const float /*right*/,
-                                                      const float /*bottom*/)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::SetTransparentBackground(const bool /*enable*/)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::ConfigureRenderer(
-                                                      const uint32_t streamId,
-                                                      const unsigned int zOrder,
-                                                      const float left,
-                                                      const float top,
-                                                      const float right,
-                                                      const float bottom)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::SetText(
-                                            const uint8_t textId,
-                                            const uint8_t* text,
-                                            const int32_t textLength,
-                                            const uint32_t textColorRef,
-                                            const uint32_t backgroundColorRef,
-                                            const float left, const float top,
-                                            const float rigth,
-                                            const float bottom)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-int32_t VideoRenderLinuxImpl::SetBitmap(const void* bitMap,
-                                        const uint8_t pictureId,
-                                        const void* colorKey,
-                                        const float left,
-                                        const float top,
-                                        const float right,
-                                        const float bottom)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s - not supported on Linux", __FUNCTION__);
-    return -1;
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/linux/video_render_linux_impl.h b/webrtc/modules/video_render/linux/video_render_linux_impl.h
deleted file mode 100644
index 0e9ae54..0000000
--- a/webrtc/modules/video_render/linux/video_render_linux_impl.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_RENDER_LINUX_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_RENDER_LINUX_IMPL_H_
-
-#include "webrtc/modules/video_render/i_video_render.h"
-
-namespace webrtc {
-class CriticalSectionWrapper;
-
-class VideoX11Render;
-
-// Class definitions
-class VideoRenderLinuxImpl: IVideoRender
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    VideoRenderLinuxImpl(const int32_t id,
-                         const VideoRenderType videoRenderType,
-                         void* window, const bool fullscreen);
-
-    virtual ~VideoRenderLinuxImpl();
-
-    virtual int32_t Init();
-
-    virtual int32_t ChangeWindow(void* window);
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId);
-
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left, float& top,
-                                              float& right, float& bottom) const;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderType RenderType();
-
-    virtual RawVideoType PerferedVideoType();
-
-    virtual bool FullScreen();
-
-    virtual int32_t
-            GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-                              uint64_t& availableGraphicsMemory) const;
-
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left, const float top,
-                            const float rigth, const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom);
-
-private:
-    int32_t _id;
-    CriticalSectionWrapper& _renderLinuxCritsect;
-
-    void* _ptrWindow;
-
-    // X11 Render
-    VideoX11Render* _ptrX11Render;
-};
-
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_RENDER_LINUX_IMPL_H_
diff --git a/webrtc/modules/video_render/linux/video_x11_channel.cc b/webrtc/modules/video_render/linux/video_x11_channel.cc
deleted file mode 100644
index 8d86b7c..0000000
--- a/webrtc/modules/video_render/linux/video_x11_channel.cc
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/linux/video_x11_channel.h"
-
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-#define DISP_MAX 128
-
-static Display *dispArray[DISP_MAX];
-static int dispCount = 0;
-
-
-VideoX11Channel::VideoX11Channel(int32_t id) :
-    _crit(*CriticalSectionWrapper::CreateCriticalSection()), _display(NULL),
-          _shminfo(), _image(NULL), _window(0L), _gc(NULL),
-          _width(DEFAULT_RENDER_FRAME_WIDTH),
-          _height(DEFAULT_RENDER_FRAME_HEIGHT), _outWidth(0), _outHeight(0),
-          _xPos(0), _yPos(0), _prepared(false), _dispCount(0), _buffer(NULL),
-          _top(0.0), _left(0.0), _right(0.0), _bottom(0.0),
-          _Id(id)
-{
-}
-
-VideoX11Channel::~VideoX11Channel()
-{
-    if (_prepared)
-    {
-        _crit.Enter();
-        ReleaseWindow();
-        _crit.Leave();
-    }
-    delete &_crit;
-}
-
-int32_t VideoX11Channel::RenderFrame(const uint32_t streamId,
-                                     const VideoFrame& videoFrame) {
-  CriticalSectionScoped cs(&_crit);
-  if (_width != videoFrame.width() || _height
-      != videoFrame.height()) {
-      if (FrameSizeChange(videoFrame.width(), videoFrame.height(), 1) == -1) {
-        return -1;
-    }
-  }
-  return DeliverFrame(videoFrame);
-}
-
-int32_t VideoX11Channel::FrameSizeChange(int32_t width,
-                                         int32_t height,
-                                         int32_t /*numberOfStreams */)
-{
-    CriticalSectionScoped cs(&_crit);
-    if (_prepared)
-    {
-        RemoveRenderer();
-    }
-    if (CreateLocalRenderer(width, height) == -1)
-    {
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t VideoX11Channel::DeliverFrame(const VideoFrame& videoFrame) {
-  CriticalSectionScoped cs(&_crit);
-  if (!_prepared) {
-    return 0;
-  }
-
-  if (!dispArray[_dispCount]) {
-    return -1;
-  }
-
-  ConvertFromI420(videoFrame, kARGB, 0, _buffer);
-
-  // Put image in window.
-  XShmPutImage(_display, _window, _gc, _image, 0, 0, _xPos, _yPos, _width,
-               _height, True);
-
-  // Very important for the image to update properly!
-  XSync(_display, False);
-  return 0;
-}
-
-int32_t VideoX11Channel::GetFrameSize(int32_t& width, int32_t& height)
-{
-    width = _width;
-    height = _height;
-
-    return 0;
-}
-
-int32_t VideoX11Channel::Init(Window window, float left, float top,
-                              float right, float bottom)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_crit);
-
-    _window = window;
-    _left = left;
-    _right = right;
-    _top = top;
-    _bottom = bottom;
-
-    _display = XOpenDisplay(NULL); // Use default display
-    if (!_window || !_display)
-    {
-        return -1;
-    }
-
-    if (dispCount < DISP_MAX)
-    {
-        dispArray[dispCount] = _display;
-        _dispCount = dispCount;
-        dispCount++;
-    }
-    else
-    {
-        return -1;
-    }
-
-    if ((1 < left || left < 0) || (1 < top || top < 0) || (1 < right || right
-            < 0) || (1 < bottom || bottom < 0))
-    {
-        return -1;
-    }
-
-    // calculate position and size of rendered video
-    int x, y;
-    unsigned int winWidth, winHeight, borderwidth, depth;
-    Window rootret;
-    if (XGetGeometry(_display, _window, &rootret, &x, &y, &winWidth,
-                     &winHeight, &borderwidth, &depth) == 0)
-    {
-        return -1;
-    }
-
-    _xPos = (int32_t) (winWidth * left);
-    _yPos = (int32_t) (winHeight * top);
-    _outWidth = (int32_t) (winWidth * (right - left));
-    _outHeight = (int32_t) (winHeight * (bottom - top));
-    if (_outWidth % 2)
-        _outWidth++; // the renderer want's sizes that are multiples of two
-    if (_outHeight % 2)
-        _outHeight++;
-
-    _gc = XCreateGC(_display, _window, 0, 0);
-    if (!_gc) {
-      // Failed to create the graphics context.
-      assert(false);
-      return -1;
-    }
-
-    if (CreateLocalRenderer(winWidth, winHeight) == -1)
-    {
-        return -1;
-    }
-    return 0;
-
-}
-
-int32_t VideoX11Channel::ChangeWindow(Window window)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_crit);
-
-    // Stop the rendering, if we are rendering...
-    RemoveRenderer();
-    _window = window;
-
-    // calculate position and size of rendered video
-    int x, y;
-    unsigned int winWidth, winHeight, borderwidth, depth;
-    Window rootret;
-    if (XGetGeometry(_display, _window, &rootret, &x, &y, &winWidth,
-                     &winHeight, &borderwidth, &depth) == -1)
-    {
-        return -1;
-    }
-    _xPos = (int) (winWidth * _left);
-    _yPos = (int) (winHeight * _top);
-    _outWidth = (int) (winWidth * (_right - _left));
-    _outHeight = (int) (winHeight * (_bottom - _top));
-    if (_outWidth % 2)
-        _outWidth++; // the renderer want's sizes that are multiples of two
-    if (_outHeight % 2)
-        _outHeight++;
-
-    // Prepare rendering using the
-    if (CreateLocalRenderer(_width, _height) == -1)
-    {
-        return -1;
-    }
-    return 0;
-}
-
-int32_t VideoX11Channel::ReleaseWindow()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_crit);
-
-    RemoveRenderer();
-    if (_gc) {
-      XFreeGC(_display, _gc);
-      _gc = NULL;
-    }
-    if (_display)
-    {
-        XCloseDisplay(_display);
-        _display = NULL;
-    }
-    return 0;
-}
-
-int32_t VideoX11Channel::CreateLocalRenderer(int32_t width, int32_t height)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-    CriticalSectionScoped cs(&_crit);
-
-    if (!_window || !_display)
-    {
-        return -1;
-    }
-
-    if (_prepared)
-    {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _Id,
-                     "Renderer already prepared, exits.");
-        return -1;
-    }
-
-    _width = width;
-    _height = height;
-
-    // create shared memory image
-    _image = XShmCreateImage(_display, CopyFromParent, 24, ZPixmap, NULL,
-                             &_shminfo, _width, _height); // this parameter needs to be the same for some reason.
-    _shminfo.shmid = shmget(IPC_PRIVATE, (_image->bytes_per_line
-            * _image->height), IPC_CREAT | 0777);
-    _shminfo.shmaddr = _image->data = (char*) shmat(_shminfo.shmid, 0, 0);
-    if (_image->data == reinterpret_cast<char*>(-1))
-    {
-        return -1;
-    }
-    _buffer = (unsigned char*) _image->data;
-    _shminfo.readOnly = False;
-
-    // attach image to display
-    if (!XShmAttach(_display, &_shminfo))
-    {
-        //printf("XShmAttach failed !\n");
-        return -1;
-    }
-    XSync(_display, False);
-
-    _prepared = true;
-    return 0;
-}
-
-int32_t VideoX11Channel::RemoveRenderer()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-
-    if (!_prepared)
-    {
-        return 0;
-    }
-    _prepared = false;
-
-    // Free the memory.
-    XShmDetach(_display, &_shminfo);
-    XDestroyImage( _image );
-    _image = NULL;
-    shmdt(_shminfo.shmaddr);
-    _shminfo.shmaddr = NULL;
-    _buffer = NULL;
-    shmctl(_shminfo.shmid, IPC_RMID, 0);
-    _shminfo.shmid = 0;
-    return 0;
-}
-
-int32_t VideoX11Channel::GetStreamProperties(uint32_t& zOrder,
-                                             float& left, float& top,
-                                             float& right, float& bottom) const
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _Id, "%s",
-                 __FUNCTION__);
-
-    zOrder = 0; // no z-order support yet
-    left = _left;
-    top = _top;
-    right = _right;
-    bottom = _bottom;
-
-    return 0;
-}
-
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/linux/video_x11_channel.h b/webrtc/modules/video_render/linux/video_x11_channel.h
deleted file mode 100644
index 6eb402e..0000000
--- a/webrtc/modules/video_render/linux/video_x11_channel.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_CHANNEL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_CHANNEL_H_
-
-#include <sys/shm.h>
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/extensions/XShm.h>
-
-namespace webrtc {
-class CriticalSectionWrapper;
-
-#define DEFAULT_RENDER_FRAME_WIDTH 352
-#define DEFAULT_RENDER_FRAME_HEIGHT 288
-
-
-class VideoX11Channel: public VideoRenderCallback
-{
-public:
-    VideoX11Channel(int32_t id);
-
-    virtual ~VideoX11Channel();
-
-    virtual int32_t RenderFrame(const uint32_t streamId,
-                                const VideoFrame& videoFrame);
-
-    int32_t FrameSizeChange(int32_t width, int32_t height,
-                            int32_t numberOfStreams);
-    int32_t DeliverFrame(const VideoFrame& videoFrame);
-    int32_t GetFrameSize(int32_t& width, int32_t& height);
-    int32_t Init(Window window, float left, float top, float right,
-                 float bottom);
-    int32_t ChangeWindow(Window window);
-    int32_t
-            GetStreamProperties(uint32_t& zOrder, float& left,
-                                float& top, float& right, float& bottom) const;
-    int32_t ReleaseWindow();
-
-    bool IsPrepared()
-    {
-        return _prepared;
-    }
-
-private:
-
-    int32_t
-            CreateLocalRenderer(int32_t width, int32_t height);
-    int32_t RemoveRenderer();
-
-    //FIXME a better place for this method? the GetWidthHeight no longer
-    // supported by common_video.
-    int GetWidthHeight(VideoType type, int bufferSize, int& width,
-                       int& height);
-
-    CriticalSectionWrapper& _crit;
-
-    Display* _display;
-    XShmSegmentInfo _shminfo;
-    XImage* _image;
-    Window _window;
-    GC _gc;
-    int32_t _width; // incoming frame width
-    int32_t _height; // incoming frame height
-    int32_t _outWidth; // render frame width
-    int32_t _outHeight; // render frame height
-    int32_t _xPos; // position within window
-    int32_t _yPos;
-    bool _prepared; // true if ready to use
-    int32_t _dispCount;
-
-    unsigned char* _buffer;
-    float _top;
-    float _left;
-    float _right;
-    float _bottom;
-
-    int32_t _Id;
-
-};
-
-
-}  // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_CHANNEL_H_
diff --git a/webrtc/modules/video_render/linux/video_x11_render.cc b/webrtc/modules/video_render/linux/video_x11_render.cc
deleted file mode 100644
index 5eb4f36..0000000
--- a/webrtc/modules/video_render/linux/video_x11_render.cc
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/linux/video_x11_channel.h"
-#include "webrtc/modules/video_render/linux/video_x11_render.h"
-
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-VideoX11Render::VideoX11Render(Window window) :
-    _window(window),
-            _critSect(*CriticalSectionWrapper::CreateCriticalSection())
-{
-}
-
-VideoX11Render::~VideoX11Render()
-{
-    delete &_critSect;
-}
-
-int32_t VideoX11Render::Init()
-{
-    CriticalSectionScoped cs(&_critSect);
-
-    _streamIdToX11ChannelMap.clear();
-
-    return 0;
-}
-
-int32_t VideoX11Render::ChangeWindow(Window window)
-{
-    CriticalSectionScoped cs(&_critSect);
-    VideoX11Channel* renderChannel = NULL;
-
-    std::map<int, VideoX11Channel*>::iterator iter =
-            _streamIdToX11ChannelMap.begin();
-
-    while (iter != _streamIdToX11ChannelMap.end())
-    {
-        renderChannel = iter->second;
-        if (renderChannel)
-        {
-            renderChannel->ChangeWindow(window);
-        }
-        iter++;
-    }
-
-    _window = window;
-
-    return 0;
-}
-
-VideoX11Channel* VideoX11Render::CreateX11RenderChannel(
-                                                                int32_t streamId,
-                                                                int32_t zOrder,
-                                                                const float left,
-                                                                const float top,
-                                                                const float right,
-                                                                const float bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-    VideoX11Channel* renderChannel = NULL;
-
-    std::map<int, VideoX11Channel*>::iterator iter =
-            _streamIdToX11ChannelMap.find(streamId);
-
-    if (iter == _streamIdToX11ChannelMap.end())
-    {
-        renderChannel = new VideoX11Channel(streamId);
-        if (!renderChannel)
-        {
-            WEBRTC_TRACE(
-                         kTraceError,
-                         kTraceVideoRenderer,
-                         -1,
-                         "Failed to create VideoX11Channel for streamId : %d",
-                         streamId);
-            return NULL;
-        }
-        renderChannel->Init(_window, left, top, right, bottom);
-        _streamIdToX11ChannelMap[streamId] = renderChannel;
-    }
-    else
-    {
-        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, -1,
-                     "Render Channel already exists for streamId: %d", streamId);
-        renderChannel = iter->second;
-    }
-
-    return renderChannel;
-}
-
-int32_t VideoX11Render::DeleteX11RenderChannel(int32_t streamId)
-{
-    CriticalSectionScoped cs(&_critSect);
-
-    std::map<int, VideoX11Channel*>::iterator iter =
-            _streamIdToX11ChannelMap.find(streamId);
-    if (iter != _streamIdToX11ChannelMap.end())
-    {
-        VideoX11Channel *renderChannel = iter->second;
-        if (renderChannel)
-        {
-            renderChannel->ReleaseWindow();
-            delete renderChannel;
-            renderChannel = NULL;
-        }
-        _streamIdToX11ChannelMap.erase(iter);
-    }
-
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "No VideoX11Channel object exists for stream id: %d",
-                 streamId);
-    return -1;
-}
-
-int32_t VideoX11Render::GetIncomingStreamProperties(
-                                                              int32_t streamId,
-                                                              uint32_t& zOrder,
-                                                              float& left,
-                                                              float& top,
-                                                              float& right,
-                                                              float& bottom)
-{
-    CriticalSectionScoped cs(&_critSect);
-
-    std::map<int, VideoX11Channel*>::iterator iter =
-            _streamIdToX11ChannelMap.find(streamId);
-    if (iter != _streamIdToX11ChannelMap.end())
-    {
-        VideoX11Channel *renderChannel = iter->second;
-        if (renderChannel)
-        {
-            renderChannel->GetStreamProperties(zOrder, left, top, right, bottom);
-        }
-    }
-
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
-                 "No VideoX11Channel object exists for stream id: %d",
-                 streamId);
-    return -1;
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/linux/video_x11_render.h b/webrtc/modules/video_render/linux/video_x11_render.h
deleted file mode 100644
index 23b83bd..0000000
--- a/webrtc/modules/video_render/linux/video_x11_render.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_RENDER_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_RENDER_H_
-
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#include <X11/Xlib.h>
-#include <map>
-
-namespace webrtc {
-class CriticalSectionWrapper;
-
-class VideoX11Channel;
-
-class VideoX11Render
-{
-
-public:
-    VideoX11Render(Window window);
-    ~VideoX11Render();
-
-    int32_t Init();
-    int32_t ChangeWindow(Window window);
-
-    VideoX11Channel* CreateX11RenderChannel(int32_t streamId,
-                                            int32_t zOrder,
-                                            const float left,
-                                            const float top,
-                                            const float right,
-                                            const float bottom);
-
-    int32_t DeleteX11RenderChannel(int32_t streamId);
-
-    int32_t GetIncomingStreamProperties(int32_t streamId,
-                                        uint32_t& zOrder,
-                                        float& left, float& top,
-                                        float& right, float& bottom);
-
-private:
-    Window _window;
-    CriticalSectionWrapper& _critSect;
-    std::map<int, VideoX11Channel*> _streamIdToX11ChannelMap;
-
-};
-
-
-}  // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_LINUX_VIDEO_X11_RENDER_H_
diff --git a/webrtc/modules/video_render/mac/cocoa_full_screen_window.h b/webrtc/modules/video_render/mac/cocoa_full_screen_window.h
deleted file mode 100644
index c8e98bb..0000000
--- a/webrtc/modules/video_render/mac/cocoa_full_screen_window.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-//
-//  cocoa_full_screen_window.h
-//
-//
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_FULL_SCREEN_WINDOW_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_FULL_SCREEN_WINDOW_H_
-
-#import <Cocoa/Cocoa.h>
-//#define GRAB_ALL_SCREENS 1
-
-@interface CocoaFullScreenWindow : NSObject {
-	NSWindow*			_window;
-}
-
--(id)init;
--(void)grabFullScreen;
--(void)releaseFullScreen;
--(NSWindow*)window;
-
-@end
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_FULL_SCREEN_WINDOW_H_
diff --git a/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm b/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm
deleted file mode 100644
index b57223b..0000000
--- a/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/mac/cocoa_full_screen_window.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-@implementation CocoaFullScreenWindow
-
--(id)init{	
-	
-	self = [super init];
-	if(!self){
-		WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d COULD NOT CREATE INSTANCE", __FUNCTION__, __LINE__); 
-		return nil;
-	}
-	
-	
-	WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, 0, "%s:%d Created instance", __FUNCTION__, __LINE__); 
-	return self;
-}
-
--(void)grabFullScreen{
-	
-#ifdef GRAB_ALL_SCREENS
-	if(CGCaptureAllDisplays() != kCGErrorSuccess)
-#else
-	if(CGDisplayCapture(kCGDirectMainDisplay) != kCGErrorSuccess)
-#endif
-	{
-		WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not capture main level", __FUNCTION__, __LINE__); 
-	}
-	
-	// get the shielding window level
-	int windowLevel = CGShieldingWindowLevel();
-	
-	// get the screen rect of main display
-	NSRect screenRect = [[NSScreen mainScreen]frame];
-	
-	_window = [[NSWindow alloc]initWithContentRect:screenRect 
-										   styleMask:NSBorderlessWindowMask
-											 backing:NSBackingStoreBuffered
-											   defer:NO
-											  screen:[NSScreen mainScreen]];
-	
-	[_window setLevel:windowLevel];
-	[_window setBackgroundColor:[NSColor blackColor]];
-	[_window makeKeyAndOrderFront:nil];
-
-}
- 
--(void)releaseFullScreen
-{
-	[_window orderOut:self];
-	
-#ifdef GRAB_ALL_SCREENS
-	if(CGReleaseAllDisplays() != kCGErrorSuccess)
-#else
-	if(CGDisplayRelease(kCGDirectMainDisplay) != kCGErrorSuccess)
-#endif
-	{
-		WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not release the displays", __FUNCTION__, __LINE__); 
-	}		
-}
-
-- (NSWindow*)window
-{
-  return _window;
-}
-
-- (void) dealloc
-{
-	[self releaseFullScreen];
-	[super dealloc];
-}	
-
-
-	
-@end
diff --git a/webrtc/modules/video_render/mac/cocoa_render_view.h b/webrtc/modules/video_render/mac/cocoa_render_view.h
deleted file mode 100644
index 15a8108..0000000
--- a/webrtc/modules/video_render/mac/cocoa_render_view.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-//
-//  cocoa_render_view.h
-//
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_RENDER_VIEW_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_RENDER_VIEW_H_
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl.h>
-#import <OpenGL/glu.h>
-#import <OpenGL/OpenGL.h>
-
-@interface CocoaRenderView : NSOpenGLView {
-  NSOpenGLContext* _nsOpenGLContext;
-}
-
--(void)initCocoaRenderView:(NSOpenGLPixelFormat*)fmt;
--(void)initCocoaRenderViewFullScreen:(NSOpenGLPixelFormat*)fmt;
--(NSOpenGLContext*)nsOpenGLContext;
-@end
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_COCOA_RENDER_VIEW_H_
diff --git a/webrtc/modules/video_render/mac/cocoa_render_view.mm b/webrtc/modules/video_render/mac/cocoa_render_view.mm
deleted file mode 100644
index 4631ff3..0000000
--- a/webrtc/modules/video_render/mac/cocoa_render_view.mm
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <AppKit/AppKit.h>
-
-#include "webrtc/modules/video_render/mac/cocoa_render_view.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-@implementation CocoaRenderView
-
--(void)initCocoaRenderView:(NSOpenGLPixelFormat*)fmt{
-	
-    self = [super initWithFrame:[self frame] pixelFormat:fmt];
-	if (self == nil){
-		
-		WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not create instance", __FUNCTION__, __LINE__); 
-	}
-	
-	
-	_nsOpenGLContext = [self openGLContext];
-
-}
-
--(NSOpenGLContext*)nsOpenGLContext {
-    return _nsOpenGLContext;
-}
-
--(void)initCocoaRenderViewFullScreen:(NSOpenGLPixelFormat*)fmt{
-	
-	NSRect screenRect = [[NSScreen mainScreen]frame];
-//	[_windowRef setFrame:screenRect];
-//	[_windowRef setBounds:screenRect];
-    self = [super initWithFrame:screenRect pixelFormat:fmt];
-	if (self == nil){
-		
-		WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not create instance", __FUNCTION__, __LINE__); 
-	}
-	
-	_nsOpenGLContext = [self openGLContext];
-
-}
-
-@end
-
-
diff --git a/webrtc/modules/video_render/mac/video_render_agl.cc b/webrtc/modules/video_render/mac/video_render_agl.cc
deleted file mode 100644
index 3243563..0000000
--- a/webrtc/modules/video_render/mac/video_render_agl.cc
+++ /dev/null
@@ -1,1987 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-
-#if defined(CARBON_RENDERING)
-
-#include "webrtc/modules/video_render/mac/video_render_agl.h"
-
-//  includes
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-/*
- *
- *    VideoChannelAGL
- *
- */
-
-#pragma mark VideoChannelAGL constructor
-
-VideoChannelAGL::VideoChannelAGL(AGLContext& aglContext, int iId, VideoRenderAGL* owner) :
-    _aglContext( aglContext),
-    _id( iId),
-    _owner( owner),
-    _width( 0),
-    _height( 0),
-    _stretchedWidth( 0),
-    _stretchedHeight( 0),
-    _startWidth( 0.0f),
-    _startHeight( 0.0f),
-    _stopWidth( 0.0f),
-    _stopHeight( 0.0f),
-    _xOldWidth( 0),
-    _yOldHeight( 0),
-    _oldStretchedHeight(0),
-    _oldStretchedWidth( 0),
-    _buffer( 0),
-    _bufferSize( 0),
-    _incomingBufferSize(0),
-    _bufferIsUpdated( false),
-    _sizeInitialized( false),
-    _numberOfStreams( 0),
-    _bVideoSizeStartedChanging(false),
-    _pixelFormat( GL_RGBA),
-    _pixelDataType( GL_UNSIGNED_INT_8_8_8_8),
-    _texture( 0)
-
-{
-    //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Constructor", __FUNCTION__, __LINE__);
-}
-
-VideoChannelAGL::~VideoChannelAGL()
-{
-    //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Destructor", __FUNCTION__, __LINE__);
-    if (_buffer)
-    {
-        delete [] _buffer;
-        _buffer = NULL;
-    }
-
-    aglSetCurrentContext(_aglContext);
-
-    if (_texture != 0)
-    {
-        glDeleteTextures(1, (const GLuint*) &_texture);
-        _texture = 0;
-    }
-}
-
-int32_t VideoChannelAGL::RenderFrame(const uint32_t streamId,
-                                     VideoFrame& videoFrame) {
-  _owner->LockAGLCntx();
-  if (_width != videoFrame.width() ||
-      _height != videoFrame.height()) {
-    if (FrameSizeChange(videoFrame.width(), videoFrame.height(), 1) == -1) {
-      WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d FrameSize
-                   Change returned an error", __FUNCTION__, __LINE__);
-      _owner->UnlockAGLCntx();
-      return -1;
-    }
-  }
-
-  _owner->UnlockAGLCntx();
-  return DeliverFrame(videoFrame);
-}
-
-int VideoChannelAGL::UpdateSize(int /*width*/, int /*height*/)
-{
-    _owner->LockAGLCntx();
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelAGL::UpdateStretchSize(int stretchHeight, int stretchWidth)
-{
-
-    _owner->LockAGLCntx();
-    _stretchedHeight = stretchHeight;
-    _stretchedWidth = stretchWidth;
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelAGL::FrameSizeChange(int width, int height, int numberOfStreams)
-{
-    //  We'll get a new frame size from VideoAPI, prepare the buffer
-
-    _owner->LockAGLCntx();
-
-    if (width == _width && _height == height)
-    {
-        // We already have a correct buffer size
-        _numberOfStreams = numberOfStreams;
-        _owner->UnlockAGLCntx();
-        return 0;
-    }
-
-    _width = width;
-    _height = height;
-
-    // Delete the old buffer, create a new one with correct size.
-    if (_buffer)
-    {
-        delete [] _buffer;
-        _bufferSize = 0;
-    }
-
-    _incomingBufferSize = CalcBufferSize(kI420, _width, _height);
-    _bufferSize = CalcBufferSize(kARGB, _width, _height);//_width * _height * bytesPerPixel;
-    _buffer = new unsigned char [_bufferSize];
-    memset(_buffer, 0, _bufferSize * sizeof(unsigned char));
-
-    if (aglSetCurrentContext(_aglContext) == false)
-    {
-        _owner->UnlockAGLCntx();
-        return -1;
-    }
-
-    // Delete a possible old texture
-    if (_texture != 0)
-    {
-        glDeleteTextures(1, (const GLuint*) &_texture);
-        _texture = 0;
-    }
-
-    // Create a new texture
-    glGenTextures(1, (GLuint *) &_texture);
-
-    GLenum glErr = glGetError();
-
-    if (glErr != GL_NO_ERROR)
-    {
-    }
-
-    // Do the setup for both textures
-    // Note: we setup two textures even if we're not running full screen
-    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-
-    // Set texture parameters
-    glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_PRIORITY, 1.0);
-
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    //glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-    //glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
-    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-
-    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_SHARED_APPLE);
-
-    // Maximum width/height for a texture
-    GLint texSize;
-    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
-
-    if (texSize < _width || texSize < _height)
-    {
-        // Image too big for memory
-        _owner->UnlockAGLCntx();
-        return -1;
-    }
-
-    // Set up th texture type and size
-    glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, // target
-            0, // level
-            GL_RGBA, // internal format
-            _width, // width
-            _height, // height
-            0, // border 0/1 = off/on
-            _pixelFormat, // format, GL_BGRA
-            _pixelDataType, // data type, GL_UNSIGNED_INT_8_8_8_8
-            _buffer); // pixel data
-
-    glErr = glGetError();
-    if (glErr != GL_NO_ERROR)
-    {
-        _owner->UnlockAGLCntx();
-        return -1;
-    }
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-// Called from video engine when a new frame should be rendered.
-int VideoChannelAGL::DeliverFrame(const VideoFrame& videoFrame) {
-  _owner->LockAGLCntx();
-
-  if (_texture == 0) {
-    _owner->UnlockAGLCntx();
-    return 0;
-  }
-
-  if (CalcBufferSize(kI420, videoFrame.width(), videoFrame.height()) !=
-      _incomingBufferSize) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  // Setting stride = width.
-  int rgbret = ConvertFromYV12(videoFrame, kBGRA, 0, _buffer);
-  if (rgbret < 0) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  aglSetCurrentContext(_aglContext);
-
-  // Put the new frame into the graphic card texture.
-  // Make sure this texture is the active one
-  glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-  GLenum glErr = glGetError();
-  if (glErr != GL_NO_ERROR) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  // Copy buffer to texture
-  glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT,
-                  0, // Level, not use
-                  0, // start point x, (low left of pic)
-                  0, // start point y,
-                  _width, // width
-                  _height, // height
-                  _pixelFormat, // pictue format for _buffer
-                  _pixelDataType, // data type of _buffer
-                  (const GLvoid*) _buffer); // the pixel data
-
-  if (glGetError() != GL_NO_ERROR) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  _bufferIsUpdated = true;
-  _owner->UnlockAGLCntx();
-
-  return 0;
-}
-
-int VideoChannelAGL::RenderOffScreenBuffer()
-{
-
-    _owner->LockAGLCntx();
-
-    if (_texture == 0)
-    {
-        _owner->UnlockAGLCntx();
-        return 0;
-    }
-
-    GLfloat xStart = 2.0f * _startWidth - 1.0f;
-    GLfloat xStop = 2.0f * _stopWidth - 1.0f;
-    GLfloat yStart = 1.0f - 2.0f * _stopHeight;
-    GLfloat yStop = 1.0f - 2.0f * _startHeight;
-
-    aglSetCurrentContext(_aglContext);
-    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-
-    if(_stretchedWidth != _oldStretchedWidth || _stretchedHeight != _oldStretchedHeight)
-    {
-        glViewport(0, 0, _stretchedWidth, _stretchedHeight);
-    }
-    _oldStretchedHeight = _stretchedHeight;
-    _oldStretchedWidth = _stretchedWidth;
-
-    // Now really put the texture into the framebuffer
-    glLoadIdentity();
-
-    glEnable(GL_TEXTURE_RECTANGLE_EXT);
-
-    glBegin(GL_POLYGON);
-    {
-        glTexCoord2f(0.0, 0.0); glVertex2f(xStart, yStop);
-        glTexCoord2f(_width, 0.0); glVertex2f(xStop, yStop);
-        glTexCoord2f(_width, _height); glVertex2f(xStop, yStart);
-        glTexCoord2f(0.0, _height); glVertex2f(xStart, yStart);
-    }
-    glEnd();
-
-    glDisable(GL_TEXTURE_RECTANGLE_EXT);
-
-    _bufferIsUpdated = false;
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelAGL::IsUpdated(bool& isUpdated)
-{
-    _owner->LockAGLCntx();
-    isUpdated = _bufferIsUpdated;
-    _owner->UnlockAGLCntx();
-
-    return 0;
-}
-
-int VideoChannelAGL::SetStreamSettings(int /*streamId*/, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-
-    _owner->LockAGLCntx();
-
-    _startWidth = startWidth;
-    _stopWidth = stopWidth;
-    _startHeight = startHeight;
-    _stopHeight = stopHeight;
-
-    int oldWidth = _width;
-    int oldHeight = _height;
-    int oldNumberOfStreams = _numberOfStreams;
-
-    _width = 0;
-    _height = 0;
-
-    int retVal = FrameSizeChange(oldWidth, oldHeight, oldNumberOfStreams);
-
-    _owner->UnlockAGLCntx();
-
-    return retVal;
-}
-
-int VideoChannelAGL::SetStreamCropSettings(int /*streamId*/, float /*startWidth*/, float /*startHeight*/, float /*stopWidth*/, float /*stopHeight*/)
-{
-    return -1;
-}
-
-#pragma mark VideoRenderAGL WindowRef constructor
-
-VideoRenderAGL::VideoRenderAGL(WindowRef windowRef, bool fullscreen, int iId) :
-_hiviewRef( 0),
-_windowRef( windowRef),
-_fullScreen( fullscreen),
-_id( iId),
-_renderCritSec(*CriticalSectionWrapper::CreateCriticalSection()),
-_screenUpdateEvent( 0),
-_isHIViewRef( false),
-_aglContext( 0),
-_windowWidth( 0),
-_windowHeight( 0),
-_lastWindowWidth( -1),
-_lastWindowHeight( -1),
-_lastHiViewWidth( -1),
-_lastHiViewHeight( -1),
-_currentParentWindowHeight( 0),
-_currentParentWindowWidth( 0),
-_currentParentWindowBounds( ),
-_windowHasResized( false),
-_lastParentWindowBounds( ),
-_currentHIViewBounds( ),
-_lastHIViewBounds( ),
-_windowRect( ),
-_aglChannels( ),
-_zOrderToChannel( ),
-_hiviewEventHandlerRef( NULL),
-_windowEventHandlerRef( NULL),
-_currentViewBounds( ),
-_lastViewBounds( ),
-_renderingIsPaused( false),
-
-{
-    //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s");
-
-    _screenUpdateThread.reset(
-        new rtc::PlatformThread(ScreenUpdateThreadProc, this, "ScreenUpdate"));
-    _screenUpdateEvent = EventWrapper::Create();
-
-    if(!IsValidWindowPtr(_windowRef))
-    {
-        //WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Invalid WindowRef:0x%x", __FUNCTION__, __LINE__, _windowRef);
-    }
-    else
-    {
-        //WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s:%d WindowRef 0x%x is valid", __FUNCTION__, __LINE__, _windowRef);
-    }
-
-    GetWindowRect(_windowRect);
-
-    _lastViewBounds.origin.x = 0;
-    _lastViewBounds.origin.y = 0;
-    _lastViewBounds.size.width = 0;
-    _lastViewBounds.size.height = 0;
-
-}
-
-// this is a static function. It has been registered (in class constructor) to be called on various window redrawing or resizing.
-// Since it is a static method, I have passed in "this" as the userData (one and only allowed) parameter, then calling member methods on it.
-#pragma mark WindowRef Event Handler
-pascal OSStatus VideoRenderAGL::sHandleWindowResized (EventHandlerCallRef /*nextHandler*/,
-        EventRef theEvent,
-        void* userData)
-{
-    WindowRef windowRef = NULL;
-
-    int eventType = GetEventKind(theEvent);
-
-    // see https://dcs.sourcerepo.com/dcs/tox_view/trunk/tox/libraries/i686-win32/include/quicktime/CarbonEvents.h for a list of codes
-    GetEventParameter (theEvent,
-            kEventParamDirectObject,
-            typeWindowRef,
-            NULL,
-            sizeof (WindowRef),
-            NULL,
-            &windowRef);
-
-    VideoRenderAGL* obj = (VideoRenderAGL*)(userData);
-
-    bool updateUI = true;
-    if(kEventWindowBoundsChanged == eventType)
-    {
-    }
-    else if(kEventWindowBoundsChanging == eventType)
-    {
-    }
-    else if(kEventWindowZoomed == eventType)
-    {
-    }
-    else if(kEventWindowExpanding == eventType)
-    {
-    }
-    else if(kEventWindowExpanded == eventType)
-    {
-    }
-    else if(kEventWindowClickResizeRgn == eventType)
-    {
-    }
-    else if(kEventWindowClickDragRgn == eventType)
-    {
-    }
-    else
-    {
-        updateUI = false;
-    }
-
-    if(true == updateUI)
-    {
-        obj->ParentWindowResized(windowRef);
-        obj->UpdateClipping();
-        obj->RenderOffScreenBuffers();
-    }
-
-    return noErr;
-}
-
-#pragma mark VideoRenderAGL HIViewRef constructor
-
-VideoRenderAGL::VideoRenderAGL(HIViewRef windowRef, bool fullscreen, int iId) :
-_hiviewRef( windowRef),
-_windowRef( 0),
-_fullScreen( fullscreen),
-_id( iId),
-_renderCritSec(*CriticalSectionWrapper::CreateCriticalSection()),
-_screenUpdateEvent( 0),
-_isHIViewRef( false),
-_aglContext( 0),
-_windowWidth( 0),
-_windowHeight( 0),
-_lastWindowWidth( -1),
-_lastWindowHeight( -1),
-_lastHiViewWidth( -1),
-_lastHiViewHeight( -1),
-_currentParentWindowHeight( 0),
-_currentParentWindowWidth( 0),
-_currentParentWindowBounds( ),
-_windowHasResized( false),
-_lastParentWindowBounds( ),
-_currentHIViewBounds( ),
-_lastHIViewBounds( ),
-_windowRect( ),
-_aglChannels( ),
-_zOrderToChannel( ),
-_hiviewEventHandlerRef( NULL),
-_windowEventHandlerRef( NULL),
-_currentViewBounds( ),
-_lastViewBounds( ),
-_renderingIsPaused( false),
-{
-    //WEBRTC_TRACE(kTraceDebug, "%s:%d Constructor", __FUNCTION__, __LINE__);
-    //    _renderCritSec = CriticalSectionWrapper::CreateCriticalSection();
-
-    _screenUpdateThread.reset(new rtc::PlatformThread(
-        ScreenUpdateThreadProc, this, "ScreenUpdateThread"));
-    _screenUpdateEvent = EventWrapper::Create();
-
-    GetWindowRect(_windowRect);
-
-    _lastViewBounds.origin.x = 0;
-    _lastViewBounds.origin.y = 0;
-    _lastViewBounds.size.width = 0;
-    _lastViewBounds.size.height = 0;
-
-#ifdef NEW_HIVIEW_PARENT_EVENT_HANDLER
-    // This gets the parent window of the HIViewRef that's passed in and installs a WindowRef event handler on it
-    // The event handler looks for window resize events and adjusts the offset of the controls.
-
-    //WEBRTC_TRACE(kTraceDebug, "%s:%d Installing Eventhandler for hiviewRef's parent window", __FUNCTION__, __LINE__);
-
-
-    static const EventTypeSpec windowEventTypes[] =
-    {
-        kEventClassWindow, kEventWindowBoundsChanged,
-        kEventClassWindow, kEventWindowBoundsChanging,
-        kEventClassWindow, kEventWindowZoomed,
-        kEventClassWindow, kEventWindowExpanded,
-        kEventClassWindow, kEventWindowClickResizeRgn,
-        kEventClassWindow, kEventWindowClickDragRgn
-    };
-
-    WindowRef parentWindow = HIViewGetWindow(windowRef);
-
-    InstallWindowEventHandler (parentWindow,
-            NewEventHandlerUPP (sHandleWindowResized),
-            GetEventTypeCount(windowEventTypes),
-            windowEventTypes,
-            (void *) this, // this is an arbitrary parameter that will be passed on to your event handler when it is called later
-            &_windowEventHandlerRef);
-
-#endif
-
-#ifdef NEW_HIVIEW_EVENT_HANDLER
-    //WEBRTC_TRACE(kTraceDebug, "%s:%d Installing Eventhandler for hiviewRef", __FUNCTION__, __LINE__);
-
-    static const EventTypeSpec hiviewEventTypes[] =
-    {
-        kEventClassControl, kEventControlBoundsChanged,
-        kEventClassControl, kEventControlDraw
-        //			kEventControlDragLeave
-        //			kEventControlDragReceive
-        //			kEventControlGetFocusPart
-        //			kEventControlApplyBackground
-        //			kEventControlDraw
-        //			kEventControlHit
-
-    };
-
-    HIViewInstallEventHandler(_hiviewRef,
-            NewEventHandlerUPP(sHandleHiViewResized),
-            GetEventTypeCount(hiviewEventTypes),
-            hiviewEventTypes,
-            (void *) this,
-            &_hiviewEventHandlerRef);
-
-#endif
-}
-
-// this is a static function. It has been registered (in constructor) to be called on various window redrawing or resizing.
-// Since it is a static method, I have passed in "this" as the userData (one and only allowed) parameter, then calling member methods on it.
-#pragma mark HIViewRef Event Handler
-pascal OSStatus VideoRenderAGL::sHandleHiViewResized (EventHandlerCallRef nextHandler, EventRef theEvent, void* userData)
-{
-    //static int      callbackCounter = 1;
-    HIViewRef hiviewRef = NULL;
-
-    // see https://dcs.sourcerepo.com/dcs/tox_view/trunk/tox/libraries/i686-win32/include/quicktime/CarbonEvents.h for a list of codes
-    int eventType = GetEventKind(theEvent);
-    OSStatus status = noErr;
-    status = GetEventParameter (theEvent,
-            kEventParamDirectObject,
-            typeControlRef,
-            NULL,
-            sizeof (ControlRef),
-            NULL,
-            &hiviewRef);
-
-    VideoRenderAGL* obj = (VideoRenderAGL*)(userData);
-    WindowRef parentWindow = HIViewGetWindow(hiviewRef);
-    bool updateUI = true;
-
-    if(kEventControlBoundsChanged == eventType)
-    {
-    }
-    else if(kEventControlDraw == eventType)
-    {
-    }
-    else
-    {
-        updateUI = false;
-    }
-
-    if(true == updateUI)
-    {
-        obj->ParentWindowResized(parentWindow);
-        obj->UpdateClipping();
-        obj->RenderOffScreenBuffers();
-    }
-
-    return status;
-}
-
-VideoRenderAGL::~VideoRenderAGL()
-{
-
-    //WEBRTC_TRACE(kTraceDebug, "%s:%d Destructor", __FUNCTION__, __LINE__);
-
-
-#ifdef USE_EVENT_HANDLERS
-    // remove event handlers
-    OSStatus status;
-    if(_isHIViewRef)
-    {
-        status = RemoveEventHandler(_hiviewEventHandlerRef);
-    }
-    else
-    {
-        status = RemoveEventHandler(_windowEventHandlerRef);
-    }
-    if(noErr != status)
-    {
-        if(_isHIViewRef)
-        {
-
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Failed to remove hiview event handler: %d", __FUNCTION__, __LINE__, (int)_hiviewEventHandlerRef);
-        }
-        else
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Failed to remove window event handler %d", __FUNCTION__, __LINE__, (int)_windowEventHandlerRef);
-        }
-    }
-
-#endif
-
-    OSStatus status;
-#ifdef NEW_HIVIEW_PARENT_EVENT_HANDLER
-    if(_windowEventHandlerRef)
-    {
-        status = RemoveEventHandler(_windowEventHandlerRef);
-        if(status != noErr)
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d failed to remove window event handler %d", __FUNCTION__, __LINE__, (int)_windowEventHandlerRef);
-        }
-    }
-#endif
-
-#ifdef NEW_HIVIEW_EVENT_HANDLER
-    if(_hiviewEventHandlerRef)
-    {
-        status = RemoveEventHandler(_hiviewEventHandlerRef);
-        if(status != noErr)
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Failed to remove hiview event handler: %d", __FUNCTION__, __LINE__, (int)_hiviewEventHandlerRef);
-        }
-    }
-#endif
-
-    // Signal event to exit thread, then delete it
-    rtc::PlatformThread* tmpPtr = _screenUpdateThread.release();
-
-    if (tmpPtr)
-    {
-        _screenUpdateEvent->Set();
-        _screenUpdateEvent->StopTimer();
-
-        tmpPtr->Stop();
-        delete tmpPtr;
-        delete _screenUpdateEvent;
-        _screenUpdateEvent = NULL;
-    }
-
-    if (_aglContext != 0)
-    {
-        aglSetCurrentContext(_aglContext);
-        aglDestroyContext(_aglContext);
-        _aglContext = 0;
-    }
-
-    // Delete all channels
-    std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.begin();
-    while (it!= _aglChannels.end())
-    {
-        delete it->second;
-        _aglChannels.erase(it);
-        it = _aglChannels.begin();
-    }
-    _aglChannels.clear();
-
-    // Clean the zOrder map
-    std::multimap<int, int>::iterator zIt = _zOrderToChannel.begin();
-    while(zIt != _zOrderToChannel.end())
-    {
-        _zOrderToChannel.erase(zIt);
-        zIt = _zOrderToChannel.begin();
-    }
-    _zOrderToChannel.clear();
-
-    //delete _renderCritSec;
-
-
-}
-
-int VideoRenderAGL::GetOpenGLVersion(int& aglMajor, int& aglMinor)
-{
-    aglGetVersion((GLint *) &aglMajor, (GLint *) &aglMinor);
-    return 0;
-}
-
-int VideoRenderAGL::Init()
-{
-    LockAGLCntx();
-
-    // Start rendering thread...
-    if (!_screenUpdateThread)
-    {
-        UnlockAGLCntx();
-        //WEBRTC_TRACE(kTraceError, "%s:%d Thread not created", __FUNCTION__, __LINE__);
-        return -1;
-    }
-    _screenUpdateThread->Start();
-    _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-
-    // Start the event triggering the render process
-    unsigned int monitorFreq = 60;
-    _screenUpdateEvent->StartTimer(true, 1000/monitorFreq);
-
-    // Create mixing textures
-    if (CreateMixingContext() == -1)
-    {
-        //WEBRTC_TRACE(kTraceError, "%s:%d Could not create a mixing context", __FUNCTION__, __LINE__);
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-VideoChannelAGL* VideoRenderAGL::CreateAGLChannel(int channel, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-
-    LockAGLCntx();
-
-    //WEBRTC_TRACE(kTraceInfo, "%s:%d Creating AGL channel: %d", __FUNCTION__, __LINE__, channel);
-
-    if (HasChannel(channel))
-    {
-        //WEBRTC_TRACE(kTraceError, "%s:%d Channel already exists", __FUNCTION__, __LINE__);
-        UnlockAGLCntx();k
-        return NULL;
-    }
-
-    if (_zOrderToChannel.find(zOrder) != _zOrderToChannel.end())
-    {
-        // There are already one channel using this zOrder
-        // TODO: Allow multiple channels with same zOrder
-    }
-
-    VideoChannelAGL* newAGLChannel = new VideoChannelAGL(_aglContext, _id, this);
-
-    if (newAGLChannel->SetStreamSettings(0, startWidth, startHeight, stopWidth, stopHeight) == -1)
-    {
-        if (newAGLChannel)
-        {
-            delete newAGLChannel;
-            newAGLChannel = NULL;
-        }
-        //WEBRTC_LOG(kTraceError, "Could not create AGL channel");
-        //WEBRTC_TRACE(kTraceError, "%s:%d Could not create AGL channel", __FUNCTION__, __LINE__);
-        UnlockAGLCntx();
-        return NULL;
-    }
-k
-    _aglChannels[channel] = newAGLChannel;
-    _zOrderToChannel.insert(std::pair<int, int>(zOrder, channel));
-
-    UnlockAGLCntx();
-    return newAGLChannel;
-}
-
-int VideoRenderAGL::DeleteAllAGLChannels()
-{
-    CriticalSectionScoped cs(&_renderCritSec);
-
-    //WEBRTC_TRACE(kTraceInfo, "%s:%d Deleting all AGL channels", __FUNCTION__, __LINE__);
-    //int i = 0 ;
-    std::map<int, VideoChannelAGL*>::iterator it;
-    it = _aglChannels.begin();
-
-    while (it != _aglChannels.end())
-    {
-        VideoChannelAGL* channel = it->second;
-        if (channel)
-        delete channel;
-
-        _aglChannels.erase(it);
-        it = _aglChannels.begin();
-    }
-    _aglChannels.clear();
-    return 0;
-}
-
-int VideoRenderAGL::DeleteAGLChannel(int channel)
-{
-    CriticalSectionScoped cs(&_renderCritSec);
-    //WEBRTC_TRACE(kTraceDebug, "%s:%d Deleting AGL channel %d", __FUNCTION__, __LINE__, channel);
-
-    std::map<int, VideoChannelAGL*>::iterator it;
-    it = _aglChannels.find(channel);
-    if (it != _aglChannels.end())
-    {
-        delete it->second;
-        _aglChannels.erase(it);
-    }
-    else
-    {
-        //WEBRTC_TRACE(kTraceWarning, "%s:%d Channel not found", __FUNCTION__, __LINE__);
-        return -1;
-    }
-
-    std::multimap<int, int>::iterator zIt = _zOrderToChannel.begin();
-    while( zIt != _zOrderToChannel.end())
-    {
-        if (zIt->second == channel)
-        {
-            _zOrderToChannel.erase(zIt);
-            break;
-        }
-        zIt++;// = _zOrderToChannel.begin();
-    }
-
-    return 0;
-}
-
-int VideoRenderAGL::StopThread()
-{
-    CriticalSectionScoped cs(&_renderCritSec);
-    rtc::PlatformThread* tmpPtr = _screenUpdateThread.release();
-
-    if (tmpPtr)
-    {
-        _screenUpdateEvent->Set();
-        _renderCritSec.Leave();
-        tmpPtr->Stop();
-        delete tmpPtr;
-        _renderCritSec.Enter();
-    }
-
-    delete _screenUpdateEvent;
-    _screenUpdateEvent = NULL;
-
-    return 0;
-}
-
-bool VideoRenderAGL::IsFullScreen()
-{
-    CriticalSectionScoped cs(&_renderCritSec);
-    return _fullScreen;
-}
-
-bool VideoRenderAGL::HasChannels()
-{
-
-    CriticalSectionScoped cs(&_renderCritSec);
-
-    if (_aglChannels.begin() != _aglChannels.end())
-    {
-        return true;
-    }
-
-    return false;
-}
-
-bool VideoRenderAGL::HasChannel(int channel)
-{
-    CriticalSectionScoped cs(&_renderCritSec);
-
-    std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.find(channel);
-    if (it != _aglChannels.end())
-    {
-        return true;
-    }
-
-    return false;
-}
-
-int VideoRenderAGL::GetChannels(std::list<int>& channelList)
-{
-
-    CriticalSectionScoped cs(&_renderCritSec);
-    std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.begin();
-
-    while (it != _aglChannels.end())
-    {
-        channelList.push_back(it->first);
-        it++;
-    }
-
-    return 0;
-}
-
-VideoChannelAGL* VideoRenderAGL::ConfigureAGLChannel(int channel, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-
-    CriticalSectionScoped cs(&_renderCritSec);
-
-    std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.find(channel);
-
-    if (it != _aglChannels.end())
-    {
-        VideoChannelAGL* aglChannel = it->second;
-        if (aglChannel->SetStreamSettings(0, startWidth, startHeight, stopWidth, stopHeight) == -1)
-        {
-            return NULL;
-        }
-
-        std::multimap<int, int>::iterator it = _zOrderToChannel.begin();
-        while(it != _zOrderToChannel.end())
-        {
-            if (it->second == channel)
-            {
-                if (it->first != zOrder)
-                {
-                    _zOrderToChannel.erase(it);
-                    _zOrderToChannel.insert(std::pair<int, int>(zOrder, channel));
-                }
-                break;
-            }
-            it++;
-        }
-        return aglChannel;
-    }
-
-    return NULL;
-}
-
-bool VideoRenderAGL::ScreenUpdateThreadProc(void* obj)
-{
-    return static_cast<VideoRenderAGL*>(obj)->ScreenUpdateProcess();
-}
-
-bool VideoRenderAGL::ScreenUpdateProcess()
-{
-    _screenUpdateEvent->Wait(100);
-
-    LockAGLCntx();
-
-    if (!_screenUpdateThread)
-    {
-        UnlockAGLCntx();
-        return false;
-    }
-
-    if (aglSetCurrentContext(_aglContext) == GL_FALSE)
-    {
-        UnlockAGLCntx();
-        return true;
-    }
-
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        UnlockAGLCntx();
-        return true;
-    }
-
-    if (_windowWidth != (_windowRect.right - _windowRect.left)
-            || _windowHeight != (_windowRect.bottom - _windowRect.top))
-    {
-        // We have a new window size, update the context.
-        if (aglUpdateContext(_aglContext) == GL_FALSE)
-        {
-            UnlockAGLCntx();
-            return true;
-        }
-        _windowWidth = _windowRect.right - _windowRect.left;
-        _windowHeight = _windowRect.bottom - _windowRect.top;
-    }
-
-    // this section will poll to see if the window size has changed
-    // this is causing problem w/invalid windowRef
-    // this code has been modified and exists now in the window event handler
-#ifndef NEW_HIVIEW_PARENT_EVENT_HANDLER
-    if (_isHIViewRef)
-    {
-
-        if(FALSE == HIViewIsValid(_hiviewRef))
-        {
-
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Invalid windowRef", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return true;
-        }
-        WindowRef window = HIViewGetWindow(_hiviewRef);
-
-        if(FALSE == IsValidWindowPtr(window))
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Invalide hiviewRef", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return true;
-        }
-        if (window == NULL)
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d WindowRef = NULL", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return true;
-        }
-
-        if(FALSE == MacIsWindowVisible(window))
-        {
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d MacIsWindowVisible == FALSE. Returning early", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return true;
-        }
-
-        HIRect viewBounds; // Placement and size for HIView
-        int windowWidth = 0; // Parent window width
-        int windowHeight = 0; // Parent window height
-
-        // NOTE: Calling GetWindowBounds with kWindowStructureRgn will crash intermittentaly if the OS decides it needs to push it into the back for a moment.
-        // To counter this, we get the titlebar height on class construction and then add it to the content region here. Content regions seems not to crash
-        Rect contentBounds =
-        {   0, 0, 0, 0}; // The bounds for the parent window
-
-#if		defined(USE_CONTENT_RGN)
-        GetWindowBounds(window, kWindowContentRgn, &contentBounds);
-#elif	defined(USE_STRUCT_RGN)
-        GetWindowBounds(window, kWindowStructureRgn, &contentBounds);
-#endif
-
-        Rect globalBounds =
-        {   0, 0, 0, 0}; // The bounds for the parent window
-        globalBounds.top = contentBounds.top;
-        globalBounds.right = contentBounds.right;
-        globalBounds.bottom = contentBounds.bottom;
-        globalBounds.left = contentBounds.left;
-
-        windowHeight = globalBounds.bottom - globalBounds.top;
-        windowWidth = globalBounds.right - globalBounds.left;
-
-        // Get the size of the HIViewRef
-        HIViewGetBounds(_hiviewRef, &viewBounds);
-        HIViewConvertRect(&viewBounds, _hiviewRef, NULL);
-
-        // Check if this is the first call..
-        if (_lastWindowHeight == -1 &&
-                _lastWindowWidth == -1)
-        {
-            _lastWindowWidth = windowWidth;
-            _lastWindowHeight = windowHeight;
-
-            _lastViewBounds.origin.x = viewBounds.origin.x;
-            _lastViewBounds.origin.y = viewBounds.origin.y;
-            _lastViewBounds.size.width = viewBounds.size.width;
-            _lastViewBounds.size.height = viewBounds.size.height;
-        }
-        sfasdfasdf
-
-        bool resized = false;
-
-        // Check if parent window size has changed
-        if (windowHeight != _lastWindowHeight ||
-                windowWidth != _lastWindowWidth)
-        {
-            resized = true;
-        }
-
-        // Check if the HIView has new size or is moved in the parent window
-        if (_lastViewBounds.origin.x != viewBounds.origin.x ||
-                _lastViewBounds.origin.y != viewBounds.origin.y ||
-                _lastViewBounds.size.width != viewBounds.size.width ||
-                _lastViewBounds.size.height != viewBounds.size.height)
-        {
-            // The HiView is resized or has moved.
-            resized = true;
-        }
-
-        if (resized)
-        {
-
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d Window has resized", __FUNCTION__, __LINE__);
-
-            // Calculate offset between the windows
-            // {x, y, widht, height}, x,y = lower left corner
-            const GLint offs[4] =
-            {   (int)(0.5f + viewBounds.origin.x),
-                (int)(0.5f + windowHeight - (viewBounds.origin.y + viewBounds.size.height)),
-                viewBounds.size.width, viewBounds.size.height};
-
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d contentBounds	t:%d r:%d b:%d l:%d", __FUNCTION__, __LINE__,
-            contentBounds.top, contentBounds.right, contentBounds.bottom, contentBounds.left);
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d windowHeight=%d", __FUNCTION__, __LINE__, windowHeight);
-            //WEBRTC_TRACE(kTraceDebug, "%s:%d offs[4] = %d, %d, %d, %d", __FUNCTION__, __LINE__, offs[0], offs[1], offs[2], offs[3]);
-
-            aglSetDrawable (_aglContext, GetWindowPort(window));
-            aglSetInteger(_aglContext, AGL_BUFFER_RECT, offs);
-            aglEnable(_aglContext, AGL_BUFFER_RECT);
-
-            // We need to change the viewport too if the HIView size has changed
-            glViewport(0.0f, 0.0f, (GLsizei) viewBounds.size.width, (GLsizei) viewBounds.size.height);
-
-        }
-        _lastWindowWidth = windowWidth;
-        _lastWindowHeight = windowHeight;
-
-        _lastViewBounds.origin.x = viewBounds.origin.x;
-        _lastViewBounds.origin.y = viewBounds.origin.y;
-        _lastViewBounds.size.width = viewBounds.size.width;
-        _lastViewBounds.size.height = viewBounds.size.height;
-
-    }
-#endif
-    if (_fullScreen)
-    {
-        // TODO
-        // We use double buffers, must always update
-        //RenderOffScreenBuffersToBackBuffer();
-    }
-    else
-    {
-        // Check if there are any updated buffers
-        bool updated = false;
-
-        // TODO: check if window size is updated!
-        // TODO Improvement: Walk through the zOrder Map to only render the ones in need of update
-        std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.begin();
-        while (it != _aglChannels.end())
-        {
-
-            VideoChannelAGL* aglChannel = it->second;
-            aglChannel->UpdateStretchSize(_windowHeight, _windowWidth);
-            aglChannel->IsUpdated(updated);
-            if (updated)
-            {
-                break;
-            }
-            it++;
-        }
-
-        if (updated)
-        {
-            // At least on buffers is updated, we need to repaint the texture
-            if (RenderOffScreenBuffers() != -1)
-            {
-                // MF
-                //SwapAndDisplayBuffers();
-            }
-            else
-            {
-                // Error updating the mixing texture, don't swap.
-            }
-        }
-    }
-
-    UnlockAGLCntx();
-
-    //WEBRTC_LOG(kTraceDebug, "Leaving ScreenUpdateProcess()");
-    return true;
-}
-
-void VideoRenderAGL::ParentWindowResized(WindowRef window)
-{
-    //WEBRTC_LOG(kTraceDebug, "%s HIViewRef:%d owner window has resized", __FUNCTION__, (int)_hiviewRef);
-
-    LockAGLCntx();
-k
-    // set flag
-    _windowHasResized = false;
-
-    if(FALSE == HIViewIsValid(_hiviewRef))
-    {
-        //WEBRTC_LOG(kTraceDebug, "invalid windowRef");
-        UnlockAGLCntx();
-        return;
-    }
-
-    if(FALSE == IsValidWindowPtr(window))
-    {
-        //WEBRTC_LOG(kTraceError, "invalid windowRef");
-        UnlockAGLCntx();
-        return;
-    }
-
-    if (window == NULL)
-    {
-        //WEBRTC_LOG(kTraceError, "windowRef = NULL");
-        UnlockAGLCntx();
-        return;
-    }
-
-    if(FALSE == MacIsWindowVisible(window))
-    {
-        //WEBRTC_LOG(kTraceDebug, "MacIsWindowVisible = FALSE. Returning early.");
-        UnlockAGLCntx();
-        return;
-    }
-
-    Rect contentBounds =
-    {   0, 0, 0, 0};
-
-#if		defined(USE_CONTENT_RGN)
-    GetWindowBounds(window, kWindowContentRgn, &contentBounds);
-#elif	defined(USE_STRUCT_RGN)
-    GetWindowBounds(window, kWindowStructureRgn, &contentBounds);
-#endif
-
-    //WEBRTC_LOG(kTraceDebug, "%s contentBounds	t:%d r:%d b:%d l:%d", __FUNCTION__, contentBounds.top, contentBounds.right, contentBounds.bottom, contentBounds.left);
-
-    // update global vars
-    _currentParentWindowBounds.top = contentBounds.top;
-    _currentParentWindowBounds.left = contentBounds.left;
-    _currentParentWindowBounds.bottom = contentBounds.bottom;
-    _currentParentWindowBounds.right = contentBounds.right;
-
-    _currentParentWindowWidth = _currentParentWindowBounds.right - _currentParentWindowBounds.left;
-    _currentParentWindowHeight = _currentParentWindowBounds.bottom - _currentParentWindowBounds.top;
-
-    _windowHasResized = true;
-
-    // ********* update AGL offsets
-    HIRect viewBounds;
-    HIViewGetBounds(_hiviewRef, &viewBounds);
-    HIViewConvertRect(&viewBounds, _hiviewRef, NULL);
-
-    const GLint offs[4] =
-    {   (int)(0.5f + viewBounds.origin.x),
-        (int)(0.5f + _currentParentWindowHeight - (viewBounds.origin.y + viewBounds.size.height)),
-        viewBounds.size.width, viewBounds.size.height};
-    //WEBRTC_LOG(kTraceDebug, "%s _currentParentWindowHeight=%d", __FUNCTION__, _currentParentWindowHeight);
-    //WEBRTC_LOG(kTraceDebug, "%s offs[4] = %d, %d, %d, %d", __FUNCTION__, offs[0], offs[1], offs[2], offs[3]);
-
-    aglSetCurrentContext(_aglContext);
-    aglSetDrawable (_aglContext, GetWindowPort(window));
-    aglSetInteger(_aglContext, AGL_BUFFER_RECT, offs);
-    aglEnable(_aglContext, AGL_BUFFER_RECT);
-
-    // We need to change the viewport too if the HIView size has changed
-    glViewport(0.0f, 0.0f, (GLsizei) viewBounds.size.width, (GLsizei) viewBounds.size.height);
-
-    UnlockAGLCntx();
-
-    return;
-}
-
-int VideoRenderAGL::CreateMixingContext()
-{
-
-    LockAGLCntx();
-
-    //WEBRTC_LOG(kTraceDebug, "Entering CreateMixingContext()");
-
-    // Use both AGL_ACCELERATED and AGL_NO_RECOVERY to make sure
-    // a hardware renderer is used and not a software renderer.
-
-    GLint attributes[] =
-    {
-        AGL_DOUBLEBUFFER,
-        AGL_WINDOW,
-        AGL_RGBA,
-        AGL_NO_RECOVERY,
-        AGL_ACCELERATED,
-        AGL_RED_SIZE, 8,
-        AGL_GREEN_SIZE, 8,
-        AGL_BLUE_SIZE, 8,
-        AGL_ALPHA_SIZE, 8,
-        AGL_DEPTH_SIZE, 24,
-        AGL_NONE,
-    };
-
-    AGLPixelFormat aglPixelFormat;
-
-    // ***** Set up the OpenGL Context *****
-
-    // Get a pixel format for the attributes above
-    aglPixelFormat = aglChoosePixelFormat(NULL, 0, attributes);
-    if (NULL == aglPixelFormat)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not create pixel format");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // Create an AGL context
-    _aglContext = aglCreateContext(aglPixelFormat, NULL);
-    if (_aglContext == NULL)
-    {
-        //WEBRTC_LOG(kTraceError, "Could no create AGL context");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // Release the pixel format memory
-    aglDestroyPixelFormat(aglPixelFormat);
-
-    // Set the current AGL context for the rest of the settings
-    if (aglSetCurrentContext(_aglContext) == false)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not set current context: %d", aglGetError());
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    if (_isHIViewRef)
-    {
-        //---------------------------
-        // BEGIN: new test code
-#if 0
-        // Don't use this one!
-        // There seems to be an OS X bug that can't handle
-        // movements and resizing of the parent window
-        // and or the HIView
-        if (aglSetHIViewRef(_aglContext,_hiviewRef) == false)
-        {
-            //WEBRTC_LOG(kTraceError, "Could not set WindowRef: %d", aglGetError());
-            UnlockAGLCntx();
-            return -1;
-        }
-#else
-
-        // Get the parent window for this control
-        WindowRef window = GetControlOwner(_hiviewRef);
-
-        Rect globalBounds =
-        {   0,0,0,0}; // The bounds for the parent window
-        HIRect viewBounds; // Placemnt in the parent window and size.
-        int windowHeight = 0;
-
-        //		Rect titleBounds = {0,0,0,0};
-        //		GetWindowBounds(window, kWindowTitleBarRgn, &titleBounds);
-        //		_titleBarHeight = titleBounds.top - titleBounds.bottom;
-        //		if(0 == _titleBarHeight)
-        //		{
-        //            //WEBRTC_LOG(kTraceError, "Titlebar height = 0");
-        //            //return -1;
-        //		}
-
-
-        // Get the bounds for the parent window
-#if		defined(USE_CONTENT_RGN)
-        GetWindowBounds(window, kWindowContentRgn, &globalBounds);
-#elif	defined(USE_STRUCT_RGN)
-        GetWindowBounds(window, kWindowStructureRgn, &globalBounds);
-#endif
-        windowHeight = globalBounds.bottom - globalBounds.top;
-
-        // Get the bounds for the HIView
-        HIViewGetBounds(_hiviewRef, &viewBounds);
-
-        HIViewConvertRect(&viewBounds, _hiviewRef, NULL);
-
-        const GLint offs[4] =
-        {   (int)(0.5f + viewBounds.origin.x),
-            (int)(0.5f + windowHeight - (viewBounds.origin.y + viewBounds.size.height)),
-            viewBounds.size.width, viewBounds.size.height};
-
-        //WEBRTC_LOG(kTraceDebug, "%s offs[4] = %d, %d, %d, %d", __FUNCTION__, offs[0], offs[1], offs[2], offs[3]);
-
-
-        aglSetDrawable (_aglContext, GetWindowPort(window));
-        aglSetInteger(_aglContext, AGL_BUFFER_RECT, offs);
-        aglEnable(_aglContext, AGL_BUFFER_RECT);
-
-        GLint surfaceOrder = 1; // 1: above window, -1 below.
-        //OSStatus status = aglSetInteger(_aglContext, AGL_SURFACE_ORDER, &surfaceOrder);
-        aglSetInteger(_aglContext, AGL_SURFACE_ORDER, &surfaceOrder);
-
-        glViewport(0.0f, 0.0f, (GLsizei) viewBounds.size.width, (GLsizei) viewBounds.size.height);
-#endif
-
-    }
-    else
-    {
-        if(GL_FALSE == aglSetDrawable (_aglContext, GetWindowPort(_windowRef)))
-        {
-            //WEBRTC_LOG(kTraceError, "Could not set WindowRef: %d", aglGetError());
-            UnlockAGLCntx();
-            return -1;
-        }
-    }
-
-    _windowWidth = _windowRect.right - _windowRect.left;
-    _windowHeight = _windowRect.bottom - _windowRect.top;
-
-    // opaque surface
-    int surfaceOpacity = 1;
-    if (aglSetInteger(_aglContext, AGL_SURFACE_OPACITY, (const GLint *) &surfaceOpacity) == false)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not set surface opacity: %d", aglGetError());
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // 1 -> sync to screen rat, slow...
-    //int swapInterval = 0;  // 0 don't sync with vertical trace
-    int swapInterval = 0; // 1 sync with vertical trace
-    if (aglSetInteger(_aglContext, AGL_SWAP_INTERVAL, (const GLint *) &swapInterval) == false)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not set swap interval: %d", aglGetError());
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // Update the rect with the current size
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not get window size");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // Disable not needed functionality to increase performance
-    glDisable(GL_DITHER);
-    glDisable(GL_ALPHA_TEST);
-    glDisable(GL_STENCIL_TEST);
-    glDisable(GL_FOG);
-    glDisable(GL_TEXTURE_2D);
-    glPixelZoom(1.0, 1.0);
-
-    glDisable(GL_BLEND);
-    glDisable(GL_DEPTH_TEST);
-    glDepthMask(GL_FALSE);
-    glDisable(GL_CULL_FACE);
-
-    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
-    glClear(GL_COLOR_BUFFER_BIT);
-
-    GLenum glErr = glGetError();
-
-    if (glErr)
-    {
-    }
-
-    UpdateClipping();
-
-    //WEBRTC_LOG(kTraceDebug, "Leaving CreateMixingContext()");
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderAGL::RenderOffScreenBuffers()
-{
-    LockAGLCntx();
-
-    // Get the current window size, it might have changed since last render.
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not get window rect");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    if (aglSetCurrentContext(_aglContext) == false)
-    {
-        //WEBRTC_LOG(kTraceError, "Could not set current context for rendering");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    // HERE - onl if updated!
-    glClear(GL_COLOR_BUFFER_BIT);
-
-    // Loop through all channels starting highest zOrder ending with lowest.
-    for (std::multimap<int, int>::reverse_iterator rIt = _zOrderToChannel.rbegin();
-    rIt != _zOrderToChannel.rend();
-    rIt++)
-    {
-        int channelId = rIt->second;
-        std::map<int, VideoChannelAGL*>::iterator it = _aglChannels.find(channelId);
-
-        VideoChannelAGL* aglChannel = it->second;
-
-        aglChannel->RenderOffScreenBuffer();
-    }
-
-    SwapAndDisplayBuffers();
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderAGL::SwapAndDisplayBuffers()
-{
-
-    LockAGLCntx();
-    if (_fullScreen)
-    {
-        // TODO:
-        // Swap front and back buffers, rendering taking care of in the same call
-        //aglSwapBuffers(_aglContext);
-        // Update buffer index to the idx for the next rendering!
-        //_textureIdx = (_textureIdx + 1) & 1;
-    }
-    else
-    {
-        // Single buffer rendering, only update context.
-        glFlush();
-        aglSwapBuffers(_aglContext);
-        HIViewSetNeedsDisplay(_hiviewRef, true);
-    }
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderAGL::GetWindowRect(Rect& rect)
-{
-
-    LockAGLCntx();
-
-    if (_isHIViewRef)
-    {
-        if (_hiviewRef)
-        {
-            HIRect HIViewRect1;
-            if(FALSE == HIViewIsValid(_hiviewRef))
-            {
-                rect.top = 0;
-                rect.left = 0;
-                rect.right = 0;
-                rect.bottom = 0;
-                //WEBRTC_LOG(kTraceError,"GetWindowRect() HIViewIsValid() returned false");
-                UnlockAGLCntx();
-            }
-            HIViewGetBounds(_hiviewRef,&HIViewRect1);
-            HIRectConvert(&HIViewRect1, 1, NULL, 2, NULL);
-            if(HIViewRect1.origin.x < 0)
-            {
-                rect.top = 0;
-                //WEBRTC_LOG(kTraceDebug, "GetWindowRect() rect.top = 0");
-            }
-            else
-            {
-                rect.top = HIViewRect1.origin.x;
-            }
-
-            if(HIViewRect1.origin.y < 0)
-            {
-                rect.left = 0;
-                //WEBRTC_LOG(kTraceDebug, "GetWindowRect() rect.left = 0");
-            }
-            else
-            {
-                rect.left = HIViewRect1.origin.y;
-            }
-
-            if(HIViewRect1.size.width < 0)
-            {
-                rect.right = 0;
-                //WEBRTC_LOG(kTraceDebug, "GetWindowRect() rect.right = 0");
-            }
-            else
-            {
-                rect.right = HIViewRect1.size.width;
-            }
-
-            if(HIViewRect1.size.height < 0)
-            {
-                rect.bottom = 0;
-                //WEBRTC_LOG(kTraceDebug, "GetWindowRect() rect.bottom = 0");
-            }
-            else
-            {
-                rect.bottom = HIViewRect1.size.height;
-            }
-
-            ////WEBRTC_LOG(kTraceDebug,"GetWindowRect() HIViewRef: rect.top = %d, rect.left = %d, rect.right = %d, rect.bottom =%d in GetWindowRect", rect.top,rect.left,rect.right,rect.bottom);
-            UnlockAGLCntx();
-        }
-        else
-        {
-            //WEBRTC_LOG(kTraceError, "invalid HIViewRef");
-            UnlockAGLCntx();
-        }
-    }
-    else
-    {
-        if (_windowRef)
-        {
-            GetWindowBounds(_windowRef, kWindowContentRgn, &rect);
-            UnlockAGLCntx();
-        }
-        else
-        {
-            //WEBRTC_LOG(kTraceError, "No WindowRef");
-            UnlockAGLCntx();
-        }
-    }
-}
-
-int VideoRenderAGL::UpdateClipping()
-{
-    //WEBRTC_LOG(kTraceDebug, "Entering UpdateClipping()");
-    LockAGLCntx();
-
-    if(_isHIViewRef)
-    {
-        if(FALSE == HIViewIsValid(_hiviewRef))
-        {
-            //WEBRTC_LOG(kTraceError, "UpdateClipping() _isHIViewRef is invalid. Returning -1");
-            UnlockAGLCntx();
-            return -1;
-        }
-
-        RgnHandle visibleRgn = NewRgn();
-        SetEmptyRgn (visibleRgn);
-
-        if(-1 == CalculateVisibleRegion((ControlRef)_hiviewRef, visibleRgn, true))
-        {
-        }
-
-        if(GL_FALSE == aglSetCurrentContext(_aglContext))
-        {
-            GLenum glErr = aglGetError();
-            //WEBRTC_LOG(kTraceError, "aglSetCurrentContext returned FALSE with error code %d at line %d", glErr, __LINE__);
-        }
-
-        if(GL_FALSE == aglEnable(_aglContext, AGL_CLIP_REGION))
-        {
-            GLenum glErr = aglGetError();
-            //WEBRTC_LOG(kTraceError, "aglEnable returned FALSE with error code %d at line %d\n", glErr, __LINE__);
-        }
-
-        if(GL_FALSE == aglSetInteger(_aglContext, AGL_CLIP_REGION, (const GLint*)visibleRgn))
-        {
-            GLenum glErr = aglGetError();
-            //WEBRTC_LOG(kTraceError, "aglSetInteger returned FALSE with error code %d at line %d\n", glErr, __LINE__);
-        }
-
-        DisposeRgn(visibleRgn);
-    }
-    else
-    {
-        //WEBRTC_LOG(kTraceDebug, "Not using a hiviewref!\n");
-    }
-
-    //WEBRTC_LOG(kTraceDebug, "Leaving UpdateClipping()");
-    UnlockAGLCntx();
-    return true;
-}
-
-int VideoRenderAGL::CalculateVisibleRegion(ControlRef control, RgnHandle &visibleRgn, bool clipChildren)
-{
-
-    //	LockAGLCntx();
-
-    //WEBRTC_LOG(kTraceDebug, "Entering CalculateVisibleRegion()");
-    OSStatus osStatus = 0;
-    OSErr osErr = 0;
-
-    RgnHandle tempRgn = NewRgn();
-    if (IsControlVisible(control))
-    {
-        RgnHandle childRgn = NewRgn();
-        WindowRef window = GetControlOwner(control);
-        ControlRef rootControl;
-        GetRootControl(window, &rootControl); // 'wvnc'
-        ControlRef masterControl;
-        osStatus = GetSuperControl(rootControl, &masterControl);
-        // //WEBRTC_LOG(kTraceDebug, "IBM GetSuperControl=%d", osStatus);
-
-        if (masterControl != NULL)
-        {
-            CheckValidRegion(visibleRgn);
-            // init visibleRgn with region of 'wvnc'
-            osStatus = GetControlRegion(rootControl, kControlStructureMetaPart, visibleRgn);
-            // //WEBRTC_LOG(kTraceDebug, "IBM GetControlRegion=%d : %d", osStatus, __LINE__);
-            //GetSuperControl(rootControl, &rootControl);
-            ControlRef tempControl = control, lastControl = 0;
-            while (tempControl != masterControl) // current control != master
-
-            {
-                CheckValidRegion(tempRgn);
-
-                // //WEBRTC_LOG(kTraceDebug, "IBM tempControl=%d masterControl=%d", tempControl, masterControl);
-                ControlRef subControl;
-
-                osStatus = GetControlRegion(tempControl, kControlStructureMetaPart, tempRgn); // intersect the region of the current control with visibleRgn
-                // //WEBRTC_LOG(kTraceDebug, "IBM GetControlRegion=%d : %d", osStatus, __LINE__);
-                CheckValidRegion(tempRgn);
-
-                osErr = HIViewConvertRegion(tempRgn, tempControl, rootControl);
-                // //WEBRTC_LOG(kTraceDebug, "IBM HIViewConvertRegion=%d : %d", osErr, __LINE__);
-                CheckValidRegion(tempRgn);
-
-                SectRgn(tempRgn, visibleRgn, visibleRgn);
-                CheckValidRegion(tempRgn);
-                CheckValidRegion(visibleRgn);
-                if (EmptyRgn(visibleRgn)) // if the region is empty, bail
-                break;
-
-                if (clipChildren || tempControl != control) // clip children if true, cut out the tempControl if it's not one passed to this function
-
-                {
-                    UInt16 numChildren;
-                    osStatus = CountSubControls(tempControl, &numChildren); // count the subcontrols
-                    // //WEBRTC_LOG(kTraceDebug, "IBM CountSubControls=%d : %d", osStatus, __LINE__);
-
-                    // //WEBRTC_LOG(kTraceDebug, "IBM numChildren=%d", numChildren);
-                    for (int i = 0; i < numChildren; i++)
-                    {
-                        osErr = GetIndexedSubControl(tempControl, numChildren - i, &subControl); // retrieve the subcontrol in order by zorder
-                        // //WEBRTC_LOG(kTraceDebug, "IBM GetIndexedSubControls=%d : %d", osErr, __LINE__);
-                        if ( subControl == lastControl ) // break because of zorder
-
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM breaking because of zorder %d", __LINE__);
-                            break;
-                        }
-
-                        if (!IsControlVisible(subControl)) // dont' clip invisible controls
-
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM continue. Control is not visible %d", __LINE__);
-                            continue;
-                        }
-
-                        if(!subControl) continue;
-
-                        osStatus = GetControlRegion(subControl, kControlStructureMetaPart, tempRgn); //get the region of the current control and union to childrg
-                        // //WEBRTC_LOG(kTraceDebug, "IBM GetControlRegion=%d %d", osStatus, __LINE__);
-                        CheckValidRegion(tempRgn);
-                        if(osStatus != 0)
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM ERROR! osStatus=%d. Continuing. %d", osStatus, __LINE__);
-                            continue;
-                        }
-                        if(!tempRgn)
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM ERROR! !tempRgn %d", osStatus, __LINE__);
-                            continue;
-                        }
-
-                        osStatus = HIViewConvertRegion(tempRgn, subControl, rootControl);
-                        CheckValidRegion(tempRgn);
-                        // //WEBRTC_LOG(kTraceDebug, "IBM HIViewConvertRegion=%d %d", osStatus, __LINE__);
-                        if(osStatus != 0)
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM ERROR! osStatus=%d. Continuing. %d", osStatus, __LINE__);
-                            continue;
-                        }
-                        if(!rootControl)
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM ERROR! !rootControl %d", osStatus, __LINE__);
-                            continue;
-                        }
-
-                        UnionRgn(tempRgn, childRgn, childRgn);
-                        CheckValidRegion(tempRgn);
-                        CheckValidRegion(childRgn);
-                        CheckValidRegion(visibleRgn);
-                        if(!childRgn)
-                        {
-                            // //WEBRTC_LOG(kTraceDebug, "IBM ERROR! !childRgn %d", osStatus, __LINE__);
-                            continue;
-                        }
-
-                    }  // next child control
-                }
-                lastControl = tempControl;
-                GetSuperControl(tempControl, &subControl);
-                tempControl = subControl;
-            }
-
-            DiffRgn(visibleRgn, childRgn, visibleRgn);
-            CheckValidRegion(visibleRgn);
-            CheckValidRegion(childRgn);
-            DisposeRgn(childRgn);
-        }
-        else
-        {
-            CopyRgn(tempRgn, visibleRgn);
-            CheckValidRegion(tempRgn);
-            CheckValidRegion(visibleRgn);
-        }
-        DisposeRgn(tempRgn);
-    }
-
-    //WEBRTC_LOG(kTraceDebug, "Leaving CalculateVisibleRegion()");
-    //_aglCritPtr->Leave();
-    return 0;
-}
-
-bool VideoRenderAGL::CheckValidRegion(RgnHandle rHandle)
-{
-
-    Handle hndSize = (Handle)rHandle;
-    long size = GetHandleSize(hndSize);
-    if(0 == size)
-    {
-
-        OSErr memErr = MemError();
-        if(noErr != memErr)
-        {
-            // //WEBRTC_LOG(kTraceError, "IBM ERROR Could not get size of handle. MemError() returned %d", memErr);
-        }
-        else
-        {
-            // //WEBRTC_LOG(kTraceError, "IBM ERROR Could not get size of handle yet MemError() returned noErr");
-        }
-
-    }
-    else
-    {
-        // //WEBRTC_LOG(kTraceDebug, "IBM handleSize = %d", size);
-    }
-
-    if(false == IsValidRgnHandle(rHandle))
-    {
-        // //WEBRTC_LOG(kTraceError, "IBM ERROR Invalid Region found : $%d", rHandle);
-        assert(false);
-    }
-
-    int err = QDError();
-    switch(err)
-    {
-        case 0:
-        break;
-        case -147:
-        //WEBRTC_LOG(kTraceError, "ERROR region too big");
-        assert(false);
-        break;
-
-        case -149:
-        //WEBRTC_LOG(kTraceError, "ERROR not enough stack");
-        assert(false);
-        break;
-
-        default:
-        //WEBRTC_LOG(kTraceError, "ERROR Unknown QDError %d", err);
-        assert(false);
-        break;
-    }
-
-    return true;
-}
-
-int VideoRenderAGL::ChangeWindow(void* newWindowRef)
-{
-
-    LockAGLCntx();
-
-    UnlockAGLCntx();
-    return -1;
-}
-
-int32_t VideoRenderAGL::StartRender()
-{
-
-    LockAGLCntx();
-    const unsigned int MONITOR_FREQ = 60;
-    if(TRUE == _renderingIsPaused)
-    {
-        //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Rendering is paused. Restarting now", __FUNCTION__, __LINE__);
-
-        // we already have the thread. Most likely StopRender() was called and they were paused
-        if(FALSE == _screenUpdateThread->Start())
-        {
-            //WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Failed to start screenUpdateThread", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return -1;
-        }
-        _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-        if(FALSE == _screenUpdateEvent->StartTimer(true, 1000/MONITOR_FREQ))
-        {
-            //WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Failed to start screenUpdateEvent", __FUNCTION__, __LINE__);
-            UnlockAGLCntx();
-            return -1;
-        }
-
-        return 0;
-    }
-
-    _screenUpdateThread.reset(
-        new rtc::PlatformThread(ScreenUpdateThreadProc, this, "ScreenUpdate"));
-    _screenUpdateEvent = EventWrapper::Create();
-
-    if (!_screenUpdateThread)
-    {
-        //WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Failed to start screenUpdateThread", __FUNCTION__, __LINE__);
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _screenUpdateThread->Start();
-    _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-    _screenUpdateEvent->StartTimer(true, 1000/MONITOR_FREQ);
-
-    //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Started screenUpdateThread", __FUNCTION__, __LINE__);
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int32_t VideoRenderAGL::StopRender()
-{
-    LockAGLCntx();
-
-    if(!_screenUpdateThread || !_screenUpdateEvent)
-    {
-        _renderingIsPaused = TRUE;
-        UnlockAGLCntx();
-        return 0;
-    }
-
-    if(FALSE == _screenUpdateThread->Stop() || FALSE == _screenUpdateEvent->StopTimer())
-    {
-        _renderingIsPaused = FALSE;
-        //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Could not stop either: screenUpdateThread or screenUpdateEvent", __FUNCTION__, __LINE__);
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _renderingIsPaused = TRUE;
-
-    //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Stopped screenUpdateThread", __FUNCTION__, __LINE__);
-    UnlockAGLCntx();
-    return 0;
-}
-
-int32_t VideoRenderAGL::DeleteAGLChannel(const uint32_t streamID)
-{
-
-    LockAGLCntx();
-
-    std::map<int, VideoChannelAGL*>::iterator it;
-    it = _aglChannels.begin();
-
-    while (it != _aglChannels.end())
-    {
-        VideoChannelAGL* channel = it->second;
-        //WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Deleting channel %d", __FUNCTION__, __LINE__, streamID);
-        delete channel;
-        it++;
-    }
-    _aglChannels.clear();
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int32_t VideoRenderAGL::GetChannelProperties(const uint16_t streamId,
-                                             uint32_t& zOrder,
-                                             float& left,
-                                             float& top,
-                                             float& right,
-                                             float& bottom)
-{
-
-    LockAGLCntx();
-    UnlockAGLCntx();
-    return -1;
-
-}
-
-void VideoRenderAGL::LockAGLCntx()
-{
-    _renderCritSec.Enter();
-}
-void VideoRenderAGL::UnlockAGLCntx()
-{
-    _renderCritSec.Leave();
-}
-
-}  // namespace webrtc
-
-#endif   // CARBON_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_agl.h b/webrtc/modules/video_render/mac/video_render_agl.h
deleted file mode 100644
index c0a6059..0000000
--- a/webrtc/modules/video_render/mac/video_render_agl.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-
-#if defined(CARBON_RENDERING)
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
-
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#define NEW_HIVIEW_PARENT_EVENT_HANDLER 1
-#define NEW_HIVIEW_EVENT_HANDLER 1
-#define USE_STRUCT_RGN
-
-#include <AGL/agl.h>
-#include <Carbon/Carbon.h>
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/glext.h>
-#include <OpenGL/glu.h>
-#include <list>
-#include <map>
-#include <memory>
-
-class VideoRenderAGL;
-
-namespace webrtc {
-class CriticalSectionWrapper;
-class EventWrapper;
-
-class VideoChannelAGL : public VideoRenderCallback {
- public:
-
-  VideoChannelAGL(AGLContext& aglContext, int iId, VideoRenderAGL* owner);
-  virtual ~VideoChannelAGL();
-  virtual int FrameSizeChange(int width, int height, int numberOfStreams);
-  virtual int DeliverFrame(const VideoFrame& videoFrame);
-  virtual int UpdateSize(int width, int height);
-  int SetStreamSettings(int streamId, float startWidth, float startHeight,
-                        float stopWidth, float stopHeight);
-  int SetStreamCropSettings(int streamId, float startWidth, float startHeight,
-                            float stopWidth, float stopHeight);
-  int RenderOffScreenBuffer();
-  int IsUpdated(bool& isUpdated);
-  virtual int UpdateStretchSize(int stretchHeight, int stretchWidth);
-  virtual int32_t RenderFrame(const uint32_t streamId, VideoFrame& videoFrame);
-
- private:
-
-  AGLContext _aglContext;
-  int _id;
-  VideoRenderAGL* _owner;
-  int _width;
-  int _height;
-  int _stretchedWidth;
-  int _stretchedHeight;
-  float _startHeight;
-  float _startWidth;
-  float _stopWidth;
-  float _stopHeight;
-  int _xOldWidth;
-  int _yOldHeight;
-  int _oldStretchedHeight;
-  int _oldStretchedWidth;
-  unsigned char* _buffer;
-  size_t _bufferSize;
-  size_t _incomingBufferSize;
-  bool _bufferIsUpdated;
-  bool _sizeInitialized;
-  int _numberOfStreams;
-  bool _bVideoSizeStartedChanging;
-  GLenum _pixelFormat;
-  GLenum _pixelDataType;
-  unsigned int _texture;
-};
-
-class VideoRenderAGL {
- public:
-  VideoRenderAGL(WindowRef windowRef, bool fullscreen, int iId);
-  VideoRenderAGL(HIViewRef windowRef, bool fullscreen, int iId);
-  ~VideoRenderAGL();
-
-  int Init();
-  VideoChannelAGL* CreateAGLChannel(int channel, int zOrder, float startWidth,
-                                    float startHeight, float stopWidth,
-                                    float stopHeight);
-  VideoChannelAGL* ConfigureAGLChannel(int channel, int zOrder,
-                                       float startWidth, float startHeight,
-                                       float stopWidth, float stopHeight);
-  int DeleteAGLChannel(int channel);
-  int DeleteAllAGLChannels();
-  int StopThread();
-  bool IsFullScreen();
-  bool HasChannels();
-  bool HasChannel(int channel);
-  int GetChannels(std::list<int>& channelList);
-  void LockAGLCntx();
-  void UnlockAGLCntx();
-
-  static int GetOpenGLVersion(int& aglMajor, int& aglMinor);
-
-  // ********** new module functions ************ //
-  int ChangeWindow(void* newWindowRef);
-  int32_t StartRender();
-  int32_t StopRender();
-  int32_t DeleteAGLChannel(const uint32_t streamID);
-  int32_t GetChannelProperties(const uint16_t streamId, uint32_t& zOrder,
-                               float& left, float& top, float& right,
-                               float& bottom);
-
- protected:
-  static bool ScreenUpdateThreadProc(void* obj);
-  bool ScreenUpdateProcess();
-  int GetWindowRect(Rect& rect);
-
- private:
-  int CreateMixingContext();
-  int RenderOffScreenBuffers();
-  int SwapAndDisplayBuffers();
-  int UpdateClipping();
-  int CalculateVisibleRegion(ControlRef control, RgnHandle& visibleRgn,
-                             bool clipChildren);
-  bool CheckValidRegion(RgnHandle rHandle);
-  void ParentWindowResized(WindowRef window);
-
-  // Carbon GUI event handlers
-  static pascal OSStatus sHandleWindowResized(
-      EventHandlerCallRef nextHandler, EventRef theEvent, void* userData);
-  static pascal OSStatus sHandleHiViewResized(
-      EventHandlerCallRef nextHandler, EventRef theEvent, void* userData);
-
-  HIViewRef _hiviewRef;
-  WindowRef _windowRef;
-  bool _fullScreen;
-  int _id;
-  webrtc::CriticalSectionWrapper& _renderCritSec;
-  // TODO(pbos): Remove unique_ptr and use PlatformThread directly.
-  std::unique_ptr<rtc::PlatformThread> _screenUpdateThread;
-  webrtc::EventWrapper* _screenUpdateEvent;
-  bool _isHIViewRef;
-  AGLContext _aglContext;
-  int _windowWidth;
-  int _windowHeight;
-  int _lastWindowWidth;
-  int _lastWindowHeight;
-  int _lastHiViewWidth;
-  int _lastHiViewHeight;
-  int _currentParentWindowHeight;
-  int _currentParentWindowWidth;
-  Rect _currentParentWindowBounds;
-  bool _windowHasResized;
-  Rect _lastParentWindowBounds;
-  Rect _currentHIViewBounds;
-  Rect _lastHIViewBounds;
-  Rect _windowRect;
-  std::map<int, VideoChannelAGL*> _aglChannels;
-  std::multimap<int, int> _zOrderToChannel;
-  EventHandlerRef _hiviewEventHandlerRef;
-  EventHandlerRef _windowEventHandlerRef;
-  HIRect _currentViewBounds;
-  HIRect _lastViewBounds;
-  bool _renderingIsPaused;
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_AGL_H_
-
-#endif  // CARBON_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.cc b/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.cc
deleted file mode 100644
index f85be5f..0000000
--- a/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.cc
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#if defined(CARBON_RENDERING)
-
-#include <AGL/agl.h>
-#include "webrtc/modules/video_render/mac/video_render_agl.h"
-#include "webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-VideoRenderMacCarbonImpl::VideoRenderMacCarbonImpl(const int32_t id,
-        const VideoRenderType videoRenderType,
-        void* window,
-        const bool fullscreen) :
-_id(id),
-_renderMacCarbonCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
-_fullScreen(fullscreen),
-_ptrWindow(window)
-{
-
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
-
-}
-
-VideoRenderMacCarbonImpl::~VideoRenderMacCarbonImpl()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Destructor %s:%d", __FUNCTION__, __LINE__);
-    delete &_renderMacCarbonCritsect;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::Init()
-{
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d", __FUNCTION__, __LINE__);
-
-    if (!_ptrWindow)
-    {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
-        return -1;
-    }
-
-    // We don't know if the user passed us a WindowRef or a HIViewRef, so test.
-    bool referenceIsValid = false;
-
-    // Check if it's a valid WindowRef
-    //WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s:%d _ptrWindowRef before WindowRef cast: %x", __FUNCTION__, __LINE__, _ptrWindowRef);
-    WindowRef* windowRef = static_cast<WindowRef*>(_ptrWindow);
-    //WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s:%d _ptrWindowRef after cast: %x", __FUNCTION__, __LINE__, _ptrWindowRef);
-    if (IsValidWindowPtr(*windowRef))
-    {
-        _ptrCarbonRender = new VideoRenderAGL(*windowRef, _fullScreen, _id);
-        referenceIsValid = true;
-        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Successfully initialized CarbonRenderer with WindowRef:%x", __FUNCTION__, __LINE__, *windowRef);
-    }
-    else
-    {
-        HIViewRef* hiviewRef = static_cast<HIViewRef*>(_ptrWindow);
-        if (HIViewIsValid(*hiviewRef))
-        {
-            _ptrCarbonRender = new VideoRenderAGL(*hiviewRef, _fullScreen, _id);
-            referenceIsValid = true;
-            WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d Successfully initialized CarbonRenderer with HIViewRef:%x", __FUNCTION__, __LINE__, hiviewRef);
-        }
-    }
-
-    if(!referenceIsValid)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Invalid WindowRef/HIViewRef Returning -1", __FUNCTION__, __LINE__);
-        return -1;
-    }
-
-    if(!_ptrCarbonRender)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Failed to create an instance of VideoRenderAGL. Returning -1", __FUNCTION__, __LINE__);
-    }
-
-    int retVal = _ptrCarbonRender->Init();
-    if (retVal == -1)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s:%d Failed to init CarbonRenderer", __FUNCTION__, __LINE__);
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::ChangeWindow(void* window)
-{
-    return -1;
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s changing ID to ", __FUNCTION__, window);
-
-    if (window == NULL)
-    {
-        return -1;
-    }
-    _ptrWindow = window;
-
-
-    _ptrWindow = window;
-
-    return 0;
-}
-
-VideoRenderCallback*
-VideoRenderMacCarbonImpl::AddIncomingRenderStream(const uint32_t streamId,
-        const uint32_t zOrder,
-        const float left,
-        const float top,
-        const float right,
-        const float bottom)
-{
-
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
-    VideoChannelAGL* AGLChannel = NULL;
-
-    if(!_ptrWindow)
-    {
-    }
-
-    if(!AGLChannel)
-    {
-        AGLChannel = _ptrCocoaRender->CreateNSGLChannel(streamId, zOrder, left, top, right, bottom);
-    }
-
-    return AGLChannel;
-
-}
-
-int32_t
-VideoRenderMacCarbonImpl::DeleteIncomingRenderStream(const uint32_t streamId)
-{
-
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s:%d", __FUNCTION__, __LINE__);
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    _ptrCarbonRender->DeleteAGLChannel(streamId);
-
-    return 0;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::GetIncomingRenderStreamProperties(const uint32_t streamId,
-        uint32_t& zOrder,
-        float& left,
-        float& top,
-        float& right,
-        float& bottom) const
-{
-    return -1;
-    return _ptrCarbonRender->GetChannelProperties(streamId, zOrder, left, top, right, bottom);
-}
-
-int32_t
-VideoRenderMacCarbonImpl::StartRender()
-{
-    return _ptrCarbonRender->StartRender();
-}
-
-int32_t
-VideoRenderMacCarbonImpl::StopRender()
-{
-    return _ptrCarbonRender->StopRender();
-}
-
-VideoRenderType
-VideoRenderMacCarbonImpl::RenderType()
-{
-    return kRenderCarbon;
-}
-
-RawVideoType
-VideoRenderMacCarbonImpl::PerferedVideoType()
-{
-    return kVideoI420;
-}
-
-bool
-VideoRenderMacCarbonImpl::FullScreen()
-{
-    return false;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-        uint64_t& availableGraphicsMemory) const
-{
-    totalGraphicsMemory = 0;
-    availableGraphicsMemory = 0;
-    return 0;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::GetScreenResolution(uint32_t& screenWidth,
-        uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    //NSScreen* mainScreen = [NSScreen mainScreen];
-
-    //NSRect frame = [mainScreen frame];
-
-    //screenWidth = frame.size.width;
-    //screenHeight = frame.size.height;
-    return 0;
-}
-
-uint32_t
-VideoRenderMacCarbonImpl::RenderFrameRate(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_renderMacCarbonCritsect);
-    return 0;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::SetStreamCropping(const uint32_t streamId,
-        const float left,
-        const float top,
-        const float right,
-        const float bottom)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCarbonImpl::ConfigureRenderer(const uint32_t streamId,
-                                                    const unsigned int zOrder,
-                                                    const float left,
-                                                    const float top,
-                                                    const float right,
-                                                    const float bottom)
-{
-    return 0;
-}
-
-int32_t
-VideoRenderMacCarbonImpl::SetTransparentBackground(const bool enable)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCarbonImpl::SetText(const uint8_t textId,
-                                          const uint8_t* text,
-                                          const int32_t textLength,
-                                          const uint32_t textColorRef,
-                                          const uint32_t backgroundColorRef,
-                                          const float left,
-                                          const float top,
-                                          const float right,
-                                          const float bottom)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCarbonImpl::SetBitmap(const void* bitMap,
-                                            const uint8_t pictureId,
-                                            const void* colorKey,
-                                            const float left,
-                                            const float top,
-                                            const float right,
-                                            const float bottom)
-{
-    return 0;
-}
-
-
-}  // namespace webrtc
-
-#endif // CARBON_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h b/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h
deleted file mode 100644
index 9ad3a6c..0000000
--- a/webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#if defined(CARBON_RENDERING)
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_CARBON_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_CARBON_IMPL_H_
-
-#include "webrtc/modules/video_render/i_video_render.h"
-
-namespace webrtc {
-
-class CriticalSectionWrapper;
-class VideoRenderAGL;
-
-// Class definitions
-class VideoRenderMacCarbonImpl : IVideoRender
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    VideoRenderMacCarbonImpl(const int32_t id,
-            const VideoRenderType videoRenderType,
-            void* window,
-            const bool fullscreen);
-
-    virtual ~VideoRenderMacCarbonImpl();
-
-    virtual int32_t Init();
-
-    virtual int32_t ChangeWindow(void* window);
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-    virtual VideoRenderCallback* AddIncomingRenderStream(const uint32_t streamId,
-            const uint32_t zOrder,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t DeleteIncomingRenderStream(const uint32_t streamId);
-
-    virtual int32_t GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                                      uint32_t& zOrder,
-                                                      float& left,
-                                                      float& top,
-                                                      float& right,
-                                                      float& bottom) const;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderType RenderType();
-
-    virtual RawVideoType PerferedVideoType();
-
-    virtual bool FullScreen();
-
-    virtual int32_t GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-            uint64_t& availableGraphicsMemory) const;
-
-    virtual int32_t GetScreenResolution(uint32_t& screenWidth,
-            uint32_t& screenHeight) const;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-            const unsigned int zOrder,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t SetText(const uint8_t textId,
-            const uint8_t* text,
-            const int32_t textLength,
-            const uint32_t textColorRef,
-            const uint32_t backgroundColorRef,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-            const uint8_t pictureId,
-            const void* colorKey,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t FullScreenRender(void* window, const bool enable)
-    {
-        // not supported in Carbon at this time
-        return -1;
-    }
-
-private:
-    int32_t _id;
-    CriticalSectionWrapper& _renderMacCarbonCritsect;
-    bool _fullScreen;
-    void* _ptrWindow;
-    VideoRenderAGL* _ptrCarbonRender;
-
-};
-
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_CARBON_IMPL_H_
-#endif // CARBON_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h b/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h
deleted file mode 100644
index 21add27..0000000
--- a/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-
-#if defined(COCOA_RENDERING)
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_COCOA_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_COCOA_IMPL_H_
-
-#include "webrtc/modules/video_render/i_video_render.h"
-
-namespace webrtc {
-class CriticalSectionWrapper;
-class VideoRenderNSOpenGL;
-
-// Class definitions
-class VideoRenderMacCocoaImpl : IVideoRender
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    VideoRenderMacCocoaImpl(const int32_t id,
-            const VideoRenderType videoRenderType,
-            void* window,
-            const bool fullscreen);
-
-    virtual ~VideoRenderMacCocoaImpl();
-
-    virtual int32_t Init();
-
-    virtual int32_t ChangeWindow(void* window);
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-    virtual VideoRenderCallback* AddIncomingRenderStream(const uint32_t streamId,
-            const uint32_t zOrder,
-            const float left,
-            const float top,
-            const float right,
-            const float bottom);
-
-    virtual int32_t DeleteIncomingRenderStream(const uint32_t streamId);
-
-    virtual int32_t GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                                      uint32_t& zOrder,
-                                                      float& left,
-                                                      float& top,
-                                                      float& right,
-                                                      float& bottom) const;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderType RenderType();
-
-    virtual RawVideoType PerferedVideoType();
-
-    virtual bool FullScreen();
-
-    virtual int32_t GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-                                      uint64_t& availableGraphicsMemory) const;
-
-    virtual int32_t GetScreenResolution(uint32_t& screenWidth,
-                                        uint32_t& screenHeight) const;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left,
-                            const float top,
-                            const float right,
-                            const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left,
-                              const float top,
-                              const float right,
-                              const float bottom);
-
-    virtual int32_t FullScreenRender(void* window, const bool enable);
-
-private:
-    int32_t _id;
-    CriticalSectionWrapper& _renderMacCocoaCritsect;
-    bool _fullScreen;
-    void* _ptrWindow;
-    VideoRenderNSOpenGL* _ptrCocoaRender;
-
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_MAC_COCOA_IMPL_H_
-#endif	// COCOA_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.mm b/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.mm
deleted file mode 100644
index 5b017fe..0000000
--- a/webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.mm
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#if defined(COCOA_RENDERING)
-
-#include "webrtc/modules/video_render/mac/cocoa_render_view.h"
-#include "webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h"
-#include "webrtc/modules/video_render/mac/video_render_nsopengl.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-VideoRenderMacCocoaImpl::VideoRenderMacCocoaImpl(const int32_t id,
-        const VideoRenderType videoRenderType,
-        void* window,
-        const bool fullscreen) :
-_id(id),
-_renderMacCocoaCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
-_fullScreen(fullscreen),
-_ptrWindow(window)
-{
-
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
-}
-
-VideoRenderMacCocoaImpl::~VideoRenderMacCocoaImpl()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Destructor %s:%d", __FUNCTION__, __LINE__);
-    delete &_renderMacCocoaCritsect;
-    if (_ptrCocoaRender)
-    {
-        delete _ptrCocoaRender;
-        _ptrCocoaRender = NULL;
-    }
-}
-
-int32_t
-VideoRenderMacCocoaImpl::Init()
-{
-
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s:%d", __FUNCTION__, __LINE__);
-
-    // cast ptrWindow from void* to CocoaRenderer. Void* was once NSOpenGLView, and CocoaRenderer is NSOpenGLView.
-    _ptrCocoaRender = new VideoRenderNSOpenGL((CocoaRenderView*)_ptrWindow, _fullScreen, _id);
-    if (!_ptrWindow)
-    {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
-        return -1;
-    }
-    int retVal = _ptrCocoaRender->Init();
-    if (retVal == -1)
-    {
-        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "Failed to init %s:%d", __FUNCTION__, __LINE__);
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::ChangeWindow(void* window)
-{
-
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s changing ID to ", __FUNCTION__, window);
-
-    if (window == NULL)
-    {
-        return -1;
-    }
-    _ptrWindow = window;
-
-
-    _ptrWindow = window;
-    _ptrCocoaRender->ChangeWindow((CocoaRenderView*)_ptrWindow);
-
-    return 0;
-}
-
-VideoRenderCallback*
-VideoRenderMacCocoaImpl::AddIncomingRenderStream(const uint32_t streamId,
-        const uint32_t zOrder,
-        const float left,
-        const float top,
-        const float right,
-        const float bottom)
-{
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s", __FUNCTION__);
-    VideoChannelNSOpenGL* nsOpenGLChannel = NULL;
-
-    if(!_ptrWindow)
-    {
-    }
-
-    if(!nsOpenGLChannel)
-    {
-        nsOpenGLChannel = _ptrCocoaRender->CreateNSGLChannel(streamId, zOrder, left, top, right, bottom);
-    }
-
-    return nsOpenGLChannel;
-
-}
-
-int32_t
-VideoRenderMacCocoaImpl::DeleteIncomingRenderStream(const uint32_t streamId)
-{
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "Constructor %s:%d", __FUNCTION__, __LINE__);
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    _ptrCocoaRender->DeleteNSGLChannel(streamId);
-
-    return 0;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::GetIncomingRenderStreamProperties(const uint32_t streamId,
-        uint32_t& zOrder,
-        float& left,
-        float& top,
-        float& right,
-        float& bottom) const
-{
-    return _ptrCocoaRender->GetChannelProperties(streamId, zOrder, left, top, right, bottom);
-}
-
-int32_t
-VideoRenderMacCocoaImpl::StartRender()
-{
-    return _ptrCocoaRender->StartRender();
-}
-
-int32_t
-VideoRenderMacCocoaImpl::StopRender()
-{
-    return _ptrCocoaRender->StopRender();
-}
-
-VideoRenderType
-VideoRenderMacCocoaImpl::RenderType()
-{
-    return kRenderCocoa;
-}
-
-RawVideoType
-VideoRenderMacCocoaImpl::PerferedVideoType()
-{
-    return kVideoI420;
-}
-
-bool
-VideoRenderMacCocoaImpl::FullScreen()
-{
-    return false;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-        uint64_t& availableGraphicsMemory) const
-{
-    totalGraphicsMemory = 0;
-    availableGraphicsMemory = 0;
-    return 0;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::GetScreenResolution(uint32_t& screenWidth,
-        uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    NSScreen* mainScreen = [NSScreen mainScreen];
-
-    NSRect frame = [mainScreen frame];
-
-    screenWidth = frame.size.width;
-    screenHeight = frame.size.height;
-    return 0;
-}
-
-uint32_t
-VideoRenderMacCocoaImpl::RenderFrameRate(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_renderMacCocoaCritsect);
-    return 0;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::SetStreamCropping(const uint32_t streamId,
-        const float left,
-        const float top,
-        const float right,
-        const float bottom)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCocoaImpl::ConfigureRenderer(const uint32_t streamId,
-                                                   const unsigned int zOrder,
-                                                   const float left,
-                                                   const float top,
-                                                   const float right,
-                                                   const float bottom)
-{
-    return 0;
-}
-
-int32_t
-VideoRenderMacCocoaImpl::SetTransparentBackground(const bool enable)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCocoaImpl::SetText(const uint8_t textId,
-                                         const uint8_t* text,
-                                         const int32_t textLength,
-                                         const uint32_t textColorRef,
-                                         const uint32_t backgroundColorRef,
-                                         const float left,
-                                         const float top,
-                                         const float right,
-                                         const float bottom)
-{
-    return _ptrCocoaRender->SetText(textId, text, textLength, textColorRef, backgroundColorRef, left, top, right, bottom);
-}
-
-int32_t VideoRenderMacCocoaImpl::SetBitmap(const void* bitMap,
-                                           const uint8_t pictureId,
-                                           const void* colorKey,
-                                           const float left,
-                                           const float top,
-                                           const float right,
-                                           const float bottom)
-{
-    return 0;
-}
-
-int32_t VideoRenderMacCocoaImpl::FullScreenRender(void* window, const bool enable)
-{
-    return -1;
-}
-
-}  // namespace webrtc
-
-#endif // COCOA_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_nsopengl.h b/webrtc/modules/video_render/mac/video_render_nsopengl.h
deleted file mode 100644
index 457557d..0000000
--- a/webrtc/modules/video_render/mac/video_render_nsopengl.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#if defined(COCOA_RENDERING)
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_NSOPENGL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_NSOPENGL_H_
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/OpenGL.h>
-#import <OpenGL/glext.h>
-#import <OpenGL/glu.h>
-#include <QuickTime/QuickTime.h>
-#include <list>
-#include <map>
-#include <memory>
-
-#include "webrtc/base/thread_annotations.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#import "webrtc/modules/video_render/mac/cocoa_full_screen_window.h"
-#import "webrtc/modules/video_render/mac/cocoa_render_view.h"
-
-class Trace;
-
-namespace rtc {
-class PlatformThread;
-}  // namespace rtc
-
-namespace webrtc {
-class EventTimerWrapper;
-class VideoRenderNSOpenGL;
-class CriticalSectionWrapper;
-
-class VideoChannelNSOpenGL : public VideoRenderCallback {
-public:
-    VideoChannelNSOpenGL(NSOpenGLContext *nsglContext, int iId, VideoRenderNSOpenGL* owner);
-    virtual ~VideoChannelNSOpenGL();
-
-    // A new frame is delivered
-    virtual int DeliverFrame(const VideoFrame& videoFrame);
-
-    // Called when the incoming frame size and/or number of streams in mix
-    // changes.
-    virtual int FrameSizeChange(int width, int height, int numberOfStreams);
-
-    virtual int UpdateSize(int width, int height);
-
-    // Setup
-    int SetStreamSettings(int streamId, float startWidth, float startHeight, float stopWidth, float stopHeight);
-    int SetStreamCropSettings(int streamId, float startWidth, float startHeight, float stopWidth, float stopHeight);
-
-    // Called when it's time to render the last frame for the channel
-    int RenderOffScreenBuffer();
-
-    // Returns true if a new buffer has been delivered to the texture
-    int IsUpdated(bool& isUpdated);
-    virtual int UpdateStretchSize(int stretchHeight, int stretchWidth);
-
-    // ********** new module functions ************ //
-    virtual int32_t RenderFrame(const uint32_t streamId,
-                                const VideoFrame& videoFrame);
-
-    // ********** new module helper functions ***** //
-    int ChangeContext(NSOpenGLContext *nsglContext);
-    int32_t GetChannelProperties(float& left,
-                                 float& top,
-                                 float& right,
-                                 float& bottom);
-
-private:
-
-    NSOpenGLContext* _nsglContext;
-    const int _id;
-    VideoRenderNSOpenGL* _owner;
-    int32_t _width;
-    int32_t _height;
-    float _startWidth;
-    float _startHeight;
-    float _stopWidth;
-    float _stopHeight;
-    int _stretchedWidth;
-    int _stretchedHeight;
-    int _oldStretchedHeight;
-    int _oldStretchedWidth;
-    unsigned char* _buffer;
-    size_t _bufferSize;
-    size_t _incomingBufferSize;
-    bool _bufferIsUpdated;
-    int _numberOfStreams;
-    GLenum _pixelFormat;
-    GLenum _pixelDataType;
-    unsigned int _texture;
-};
-
-class VideoRenderNSOpenGL
-{
-
-public: // methods
-    VideoRenderNSOpenGL(CocoaRenderView *windowRef, bool fullScreen, int iId);
-    ~VideoRenderNSOpenGL();
-
-    static int GetOpenGLVersion(int& nsglMajor, int& nsglMinor);
-
-    // Allocates textures
-    int Init();
-    VideoChannelNSOpenGL* CreateNSGLChannel(int streamID, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight);
-    VideoChannelNSOpenGL* ConfigureNSGLChannel(int channel, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight);
-    int DeleteNSGLChannel(int channel);
-    int DeleteAllNSGLChannels();
-    int StopThread();
-    bool IsFullScreen();
-    bool HasChannels();
-    bool HasChannel(int channel);
-    int GetChannels(std::list<int>& channelList);
-    void LockAGLCntx() EXCLUSIVE_LOCK_FUNCTION(_nsglContextCritSec);
-    void UnlockAGLCntx() UNLOCK_FUNCTION(_nsglContextCritSec);
-
-    // ********** new module functions ************ //
-    int ChangeWindow(CocoaRenderView* newWindowRef);
-    int32_t StartRender();
-    int32_t StopRender();
-    int32_t DeleteNSGLChannel(const uint32_t streamID);
-    int32_t GetChannelProperties(const uint16_t streamId,
-                                 uint32_t& zOrder,
-                                 float& left,
-                                 float& top,
-                                 float& right,
-                                 float& bottom);
-
-    int32_t SetText(const uint8_t textId,
-                    const uint8_t* text,
-                    const int32_t textLength,
-                    const uint32_t textColorRef,
-                    const uint32_t backgroundColorRef,
-                    const float left,
-                    const float top,
-                    const float right,
-                    const float bottom);
-
-    // ********** new module helper functions ***** //
-    int configureNSOpenGLEngine();
-    int configureNSOpenGLView();
-    int setRenderTargetWindow();
-    int setRenderTargetFullScreen();
-
-protected: // methods
-    static bool ScreenUpdateThreadProc(void* obj);
-    bool ScreenUpdateProcess();
-    int GetWindowRect(Rect& rect);
-
-private: // methods
-
-    int CreateMixingContext();
-    int RenderOffScreenBuffers();
-    int DisplayBuffers();
-
-private: // variables
-
-
-    CocoaRenderView* _windowRef;
-    bool _fullScreen;
-    int _id;
-    CriticalSectionWrapper& _nsglContextCritSec;
-    // TODO(pbos): Remove unique_ptr and use PlatformThread directly.
-    std::unique_ptr<rtc::PlatformThread> _screenUpdateThread;
-    EventTimerWrapper* _screenUpdateEvent;
-    NSOpenGLContext* _nsglContext;
-    NSOpenGLContext* _nsglFullScreenContext;
-    CocoaFullScreenWindow* _fullScreenWindow;
-    Rect _windowRect; // The size of the window
-    int _windowWidth;
-    int _windowHeight;
-    std::map<int, VideoChannelNSOpenGL*> _nsglChannels;
-    std::multimap<int, int> _zOrderToChannel;
-    bool _renderingIsPaused;
-    NSView* _windowRefSuperView;
-    NSRect _windowRefSuperViewFrame;
-};
-
-}  // namespace webrtc
-
-#endif   // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_MAC_VIDEO_RENDER_NSOPENGL_H_
-#endif	 // COCOA_RENDERING
diff --git a/webrtc/modules/video_render/mac/video_render_nsopengl.mm b/webrtc/modules/video_render/mac/video_render_nsopengl.mm
deleted file mode 100644
index b7683a9..0000000
--- a/webrtc/modules/video_render/mac/video_render_nsopengl.mm
+++ /dev/null
@@ -1,1247 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#if defined(COCOA_RENDERING)
-
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/modules/video_render/mac/video_render_nsopengl.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-VideoChannelNSOpenGL::VideoChannelNSOpenGL(NSOpenGLContext *nsglContext, int iId, VideoRenderNSOpenGL* owner) :
-_nsglContext( nsglContext),
-_id( iId),
-_owner( owner),
-_width( 0),
-_height( 0),
-_startWidth( 0.0f),
-_startHeight( 0.0f),
-_stopWidth( 0.0f),
-_stopHeight( 0.0f),
-_stretchedWidth( 0),
-_stretchedHeight( 0),
-_oldStretchedHeight( 0),
-_oldStretchedWidth( 0),
-_buffer( 0),
-_bufferSize( 0),
-_incomingBufferSize( 0),
-_bufferIsUpdated( false),
-_numberOfStreams( 0),
-_pixelFormat( GL_RGBA),
-_pixelDataType( GL_UNSIGNED_INT_8_8_8_8),
-_texture( 0)
-{
-
-}
-
-VideoChannelNSOpenGL::~VideoChannelNSOpenGL()
-{
-    if (_buffer)
-    {
-        delete [] _buffer;
-        _buffer = NULL;
-    }
-
-    if (_texture != 0)
-    {
-        [_nsglContext makeCurrentContext];
-        glDeleteTextures(1, (const GLuint*) &_texture);
-        _texture = 0;
-    }
-}
-
-int VideoChannelNSOpenGL::ChangeContext(NSOpenGLContext *nsglContext)
-{
-    _owner->LockAGLCntx();
-
-    _nsglContext = nsglContext;
-    [_nsglContext makeCurrentContext];
-
-    _owner->UnlockAGLCntx();
-    return 0;
-
-}
-
-int32_t VideoChannelNSOpenGL::GetChannelProperties(float& left, float& top,
-                                                   float& right, float& bottom)
-{
-
-    _owner->LockAGLCntx();
-
-    left = _startWidth;
-    top = _startHeight;
-    right = _stopWidth;
-    bottom = _stopHeight;
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int32_t VideoChannelNSOpenGL::RenderFrame(const uint32_t /*streamId*/,
-                                          const VideoFrame& videoFrame) {
-  _owner->LockAGLCntx();
-
-  if(_width != videoFrame.width() ||
-     _height != videoFrame.height()) {
-      if(FrameSizeChange(videoFrame.width(), videoFrame.height(), 1) == -1) {
-        _owner->UnlockAGLCntx();
-        return -1;
-      }
-  }
-  int ret = DeliverFrame(videoFrame);
-
-  _owner->UnlockAGLCntx();
-  return ret;
-}
-
-int VideoChannelNSOpenGL::UpdateSize(int width, int height)
-{
-    _owner->LockAGLCntx();
-    _width = width;
-    _height = height;
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelNSOpenGL::UpdateStretchSize(int stretchHeight, int stretchWidth)
-{
-
-    _owner->LockAGLCntx();
-    _stretchedHeight = stretchHeight;
-    _stretchedWidth = stretchWidth;
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelNSOpenGL::FrameSizeChange(int width, int height, int numberOfStreams)
-{
-    //  We got a new frame size from VideoAPI, prepare the buffer
-
-    _owner->LockAGLCntx();
-
-    if (width == _width && _height == height)
-    {
-        // We already have a correct buffer size
-        _numberOfStreams = numberOfStreams;
-        _owner->UnlockAGLCntx();
-        return 0;
-    }
-
-    _width = width;
-    _height = height;
-
-    // Delete the old buffer, create a new one with correct size.
-    if (_buffer)
-    {
-        delete [] _buffer;
-        _bufferSize = 0;
-    }
-
-    _incomingBufferSize = CalcBufferSize(kI420, _width, _height);
-    _bufferSize = CalcBufferSize(kARGB, _width, _height);
-    _buffer = new unsigned char [_bufferSize];
-    memset(_buffer, 0, _bufferSize * sizeof(unsigned char));
-
-    [_nsglContext makeCurrentContext];
-
-    if(glIsTexture(_texture))
-    {
-        glDeleteTextures(1, (const GLuint*) &_texture);
-        _texture = 0;
-    }
-
-    // Create a new texture
-    glGenTextures(1, (GLuint *) &_texture);
-
-    GLenum glErr = glGetError();
-
-    if (glErr != GL_NO_ERROR)
-    {
-
-    }
-
-    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-
-    GLint texSize;
-    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
-
-    if (texSize < _width || texSize < _height)
-    {
-        _owner->UnlockAGLCntx();
-        return -1;
-    }
-
-    // Set up th texture type and size
-    glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, // target
-            0, // level
-            GL_RGBA, // internal format
-            _width, // width
-            _height, // height
-            0, // border 0/1 = off/on
-            _pixelFormat, // format, GL_RGBA
-            _pixelDataType, // data type, GL_UNSIGNED_INT_8_8_8_8
-            _buffer); // pixel data
-
-    glErr = glGetError();
-    if (glErr != GL_NO_ERROR)
-    {
-        _owner->UnlockAGLCntx();
-        return -1;
-    }
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelNSOpenGL::DeliverFrame(const VideoFrame& videoFrame) {
-  _owner->LockAGLCntx();
-
-  if (_texture == 0) {
-    _owner->UnlockAGLCntx();
-    return 0;
-  }
-
-  if (CalcBufferSize(kI420, videoFrame.width(), videoFrame.height()) !=
-      _incomingBufferSize) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  // Using the VideoFrame for YV12: YV12 is YVU; I420 assumes
-  // YUV.
-  // TODO(mikhal) : Use appropriate functionality.
-  // TODO(wu): See if we are using glTexSubImage2D correctly.
-  int rgbRet = ConvertFromYV12(videoFrame, kBGRA, 0, _buffer);
-  if (rgbRet < 0) {
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  [_nsglContext makeCurrentContext];
-
-  // Make sure this texture is the active one
-  glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-  GLenum glErr = glGetError();
-  if (glErr != GL_NO_ERROR) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-    "ERROR %d while calling glBindTexture", glErr);
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT,
-                  0, // Level, not use
-                  0, // start point x, (low left of pic)
-                  0, // start point y,
-                  _width, // width
-                  _height, // height
-                  _pixelFormat, // pictue format for _buffer
-                  _pixelDataType, // data type of _buffer
-                  (const GLvoid*) _buffer); // the pixel data
-
-  glErr = glGetError();
-  if (glErr != GL_NO_ERROR) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-    "ERROR %d while calling glTexSubImage2d", glErr);
-    _owner->UnlockAGLCntx();
-    return -1;
-  }
-
-  _bufferIsUpdated = true;
-
-  _owner->UnlockAGLCntx();
-  return 0;
-}
-
-int VideoChannelNSOpenGL::RenderOffScreenBuffer()
-{
-
-    _owner->LockAGLCntx();
-
-    if (_texture == 0)
-    {
-        _owner->UnlockAGLCntx();
-        return 0;
-    }
-
-    //	if(_fullscreen)
-    //	{
-    // NSRect mainDisplayRect = [[NSScreen mainScreen] frame];
-    //		_width = mainDisplayRect.size.width;
-    //		_height = mainDisplayRect.size.height;
-    //		glViewport(0, 0, mainDisplayRect.size.width, mainDisplayRect.size.height);
-    //		float newX = mainDisplayRect.size.width/_width;
-    //		float newY = mainDisplayRect.size.height/_height;
-
-    // convert from 0.0 <= size <= 1.0 to
-    // open gl world -1.0 < size < 1.0
-    GLfloat xStart = 2.0f * _startWidth - 1.0f;
-    GLfloat xStop = 2.0f * _stopWidth - 1.0f;
-    GLfloat yStart = 1.0f - 2.0f * _stopHeight;
-    GLfloat yStop = 1.0f - 2.0f * _startHeight;
-
-    [_nsglContext makeCurrentContext];
-
-    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, _texture);
-    _oldStretchedHeight = _stretchedHeight;
-    _oldStretchedWidth = _stretchedWidth;
-
-    glLoadIdentity();
-    glEnable(GL_TEXTURE_RECTANGLE_EXT);
-    glBegin(GL_POLYGON);
-    {
-        glTexCoord2f(0.0, 0.0); glVertex2f(xStart, yStop);
-        glTexCoord2f(_width, 0.0); glVertex2f(xStop, yStop);
-        glTexCoord2f(_width, _height); glVertex2f(xStop, yStart);
-        glTexCoord2f(0.0, _height); glVertex2f(xStart, yStart);
-    }
-    glEnd();
-
-    glDisable(GL_TEXTURE_RECTANGLE_EXT);
-
-    _bufferIsUpdated = false;
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelNSOpenGL::IsUpdated(bool& isUpdated)
-{
-    _owner->LockAGLCntx();
-
-    isUpdated = _bufferIsUpdated;
-
-    _owner->UnlockAGLCntx();
-    return 0;
-}
-
-int VideoChannelNSOpenGL::SetStreamSettings(int /*streamId*/, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-    _owner->LockAGLCntx();
-
-    _startWidth = startWidth;
-    _stopWidth = stopWidth;
-    _startHeight = startHeight;
-    _stopHeight = stopHeight;
-
-    int oldWidth = _width;
-    int oldHeight = _height;
-    int oldNumberOfStreams = _numberOfStreams;
-
-    _width = 0;
-    _height = 0;
-
-    int retVal = FrameSizeChange(oldWidth, oldHeight, oldNumberOfStreams);
-
-    _owner->UnlockAGLCntx();
-    return retVal;
-}
-
-int VideoChannelNSOpenGL::SetStreamCropSettings(int /*streamId*/, float /*startWidth*/, float /*startHeight*/, float /*stopWidth*/, float /*stopHeight*/)
-{
-    return -1;
-}
-
-/*
- *
- *    VideoRenderNSOpenGL
- *
- */
-
-VideoRenderNSOpenGL::VideoRenderNSOpenGL(CocoaRenderView *windowRef, bool fullScreen, int iId) :
-_windowRef( (CocoaRenderView*)windowRef),
-_fullScreen( fullScreen),
-_id( iId),
-_nsglContextCritSec( *CriticalSectionWrapper::CreateCriticalSection()),
-_screenUpdateEvent(EventTimerWrapper::Create()),
-_nsglContext( 0),
-_nsglFullScreenContext( 0),
-_fullScreenWindow( nil),
-_windowRect( ),
-_windowWidth( 0),
-_windowHeight( 0),
-_nsglChannels( ),
-_zOrderToChannel( ),
-_renderingIsPaused (FALSE),
-_windowRefSuperView(NULL),
-_windowRefSuperViewFrame(NSMakeRect(0,0,0,0))
-{
-  _screenUpdateThread.reset(new rtc::PlatformThread(
-      ScreenUpdateThreadProc, this, "ScreenUpdateNSOpenGL"));
-}
-
-int VideoRenderNSOpenGL::ChangeWindow(CocoaRenderView* newWindowRef)
-{
-
-    LockAGLCntx();
-
-    _windowRef = newWindowRef;
-
-    if(CreateMixingContext() == -1)
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    int error = 0;
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.begin();
-    while (it!= _nsglChannels.end())
-    {
-        error |= (it->second)->ChangeContext(_nsglContext);
-        it++;
-    }
-    if(error != 0)
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-/* Check if the thread and event already exist.
- * If so then they will simply be restarted
- * If not then create them and continue
- */
-int32_t VideoRenderNSOpenGL::StartRender()
-{
-
-    LockAGLCntx();
-
-    const unsigned int MONITOR_FREQ = 60;
-    if(TRUE == _renderingIsPaused)
-    {
-        WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "Restarting screenUpdateThread");
-
-        // we already have the thread. Most likely StopRender() was called and they were paused
-        _screenUpdateThread->Start();
-        if (FALSE ==
-            _screenUpdateEvent->StartTimer(true, 1000 / MONITOR_FREQ)) {
-            WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "Failed to restart screenUpdateThread or screenUpdateEvent");
-            UnlockAGLCntx();
-            return -1;
-        }
-
-        _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-
-        UnlockAGLCntx();
-        return 0;
-    }
-
-
-    if (!_screenUpdateThread)
-    {
-        WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "failed start screenUpdateThread");
-        UnlockAGLCntx();
-        return -1;
-    }
-
-
-    UnlockAGLCntx();
-    return 0;
-}
-int32_t VideoRenderNSOpenGL::StopRender()
-{
-
-    LockAGLCntx();
-
-    /* The code below is functional
-     * but it pauses for several seconds
-     */
-
-    // pause the update thread and the event timer
-    if(!_screenUpdateThread || !_screenUpdateEvent)
-    {
-        _renderingIsPaused = TRUE;
-
-        UnlockAGLCntx();
-        return 0;
-    }
-
-    _screenUpdateThread->Stop();
-    if (FALSE == _screenUpdateEvent->StopTimer()) {
-        _renderingIsPaused = FALSE;
-
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _renderingIsPaused = TRUE;
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderNSOpenGL::configureNSOpenGLView()
-{
-    return 0;
-
-}
-
-int VideoRenderNSOpenGL::configureNSOpenGLEngine()
-{
-
-    LockAGLCntx();
-
-    // Disable not needed functionality to increase performance
-    glDisable(GL_DITHER);
-    glDisable(GL_ALPHA_TEST);
-    glDisable(GL_STENCIL_TEST);
-    glDisable(GL_FOG);
-    glDisable(GL_TEXTURE_2D);
-    glPixelZoom(1.0, 1.0);
-    glDisable(GL_BLEND);
-    glDisable(GL_DEPTH_TEST);
-    glDepthMask(GL_FALSE);
-    glDisable(GL_CULL_FACE);
-
-    // Set texture parameters
-    glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_PRIORITY, 1.0);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-    glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_SHARED_APPLE);
-
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        UnlockAGLCntx();
-        return true;
-    }
-
-    if (_windowWidth != (_windowRect.right - _windowRect.left)
-            || _windowHeight != (_windowRect.bottom - _windowRect.top))
-    {
-        _windowWidth = _windowRect.right - _windowRect.left;
-        _windowHeight = _windowRect.bottom - _windowRect.top;
-    }
-    glViewport(0, 0, _windowWidth, _windowHeight);
-
-    // Synchronize buffer swaps with vertical refresh rate
-    GLint swapInt = 1;
-    [_nsglContext setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderNSOpenGL::setRenderTargetWindow()
-{
-    LockAGLCntx();
-
-
-    GLuint attribs[] =
-    {
-        NSOpenGLPFAColorSize, 24,
-        NSOpenGLPFAAlphaSize, 8,
-        NSOpenGLPFADepthSize, 16,
-        NSOpenGLPFAAccelerated,
-        0
-    };
-
-    NSOpenGLPixelFormat* fmt = [[[NSOpenGLPixelFormat alloc] initWithAttributes:
-                          (NSOpenGLPixelFormatAttribute*) attribs] autorelease];
-
-    if(_windowRef)
-    {
-        [_windowRef initCocoaRenderView:fmt];
-    }
-    else
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _nsglContext = [_windowRef nsOpenGLContext];
-    [_nsglContext makeCurrentContext];
-
-    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
-    glClear(GL_COLOR_BUFFER_BIT);
-
-
-    DisplayBuffers();
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderNSOpenGL::setRenderTargetFullScreen()
-{
-    LockAGLCntx();
-
-
-    GLuint attribs[] =
-    {
-        NSOpenGLPFAColorSize, 24,
-        NSOpenGLPFAAlphaSize, 8,
-        NSOpenGLPFADepthSize, 16,
-        NSOpenGLPFAAccelerated,
-        0
-    };
-
-    NSOpenGLPixelFormat* fmt = [[[NSOpenGLPixelFormat alloc] initWithAttributes:
-                          (NSOpenGLPixelFormatAttribute*) attribs] autorelease];
-
-    // Store original superview and frame for use when exiting full screens
-    _windowRefSuperViewFrame = [_windowRef frame];
-    _windowRefSuperView = [_windowRef superview];
-
-
-    // create new fullscreen window
-    NSRect screenRect = [[NSScreen mainScreen]frame];
-    [_windowRef setFrame:screenRect];
-    [_windowRef setBounds:screenRect];
-
-
-    _fullScreenWindow = [[CocoaFullScreenWindow alloc]init];
-    [_fullScreenWindow grabFullScreen];
-    [[[_fullScreenWindow window] contentView] addSubview:_windowRef];
-
-    if(_windowRef)
-    {
-        [_windowRef initCocoaRenderViewFullScreen:fmt];
-    }
-    else
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _nsglContext = [_windowRef nsOpenGLContext];
-    [_nsglContext makeCurrentContext];
-
-    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
-    glClear(GL_COLOR_BUFFER_BIT);
-
-    DisplayBuffers();
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-VideoRenderNSOpenGL::~VideoRenderNSOpenGL()
-{
-
-    if(_fullScreen)
-    {
-        if(_fullScreenWindow)
-        {
-            // Detach CocoaRenderView from full screen view back to
-            // it's original parent.
-            [_windowRef removeFromSuperview];
-            if(_windowRefSuperView)
-            {
-              [_windowRefSuperView addSubview:_windowRef];
-              [_windowRef setFrame:_windowRefSuperViewFrame];
-            }
-
-            WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, 0, "%s:%d Attempting to release fullscreen window", __FUNCTION__, __LINE__);
-            [_fullScreenWindow releaseFullScreen];
-
-        }
-    }
-
-    // Signal event to exit thread, then delete it
-    rtc::PlatformThread* tmpPtr = _screenUpdateThread.release();
-
-    if (tmpPtr)
-    {
-        _screenUpdateEvent->Set();
-        _screenUpdateEvent->StopTimer();
-
-        tmpPtr->Stop();
-        delete tmpPtr;
-        delete _screenUpdateEvent;
-        _screenUpdateEvent = NULL;
-    }
-
-    if (_nsglContext != 0)
-    {
-        [_nsglContext makeCurrentContext];
-        _nsglContext = nil;
-    }
-
-    // Delete all channels
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.begin();
-    while (it!= _nsglChannels.end())
-    {
-        delete it->second;
-        _nsglChannels.erase(it);
-        it = _nsglChannels.begin();
-    }
-    _nsglChannels.clear();
-
-    // Clean the zOrder map
-    std::multimap<int, int>::iterator zIt = _zOrderToChannel.begin();
-    while(zIt != _zOrderToChannel.end())
-    {
-        _zOrderToChannel.erase(zIt);
-        zIt = _zOrderToChannel.begin();
-    }
-    _zOrderToChannel.clear();
-
-}
-
-/* static */
-int VideoRenderNSOpenGL::GetOpenGLVersion(int& /*nsglMajor*/, int& /*nsglMinor*/)
-{
-    return -1;
-}
-
-int VideoRenderNSOpenGL::Init()
-{
-
-    LockAGLCntx();
-    if (!_screenUpdateThread)
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    _screenUpdateThread->Start();
-    _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-
-    // Start the event triggering the render process
-    unsigned int monitorFreq = 60;
-    _screenUpdateEvent->StartTimer(true, 1000/monitorFreq);
-
-    if (CreateMixingContext() == -1)
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-VideoChannelNSOpenGL* VideoRenderNSOpenGL::CreateNSGLChannel(int channel, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    if (HasChannel(channel))
-    {
-        return NULL;
-    }
-
-    if (_zOrderToChannel.find(zOrder) != _zOrderToChannel.end())
-    {
-
-    }
-
-    VideoChannelNSOpenGL* newAGLChannel = new VideoChannelNSOpenGL(_nsglContext, _id, this);
-    if (newAGLChannel->SetStreamSettings(0, startWidth, startHeight, stopWidth, stopHeight) == -1)
-    {
-        if (newAGLChannel)
-        {
-            delete newAGLChannel;
-            newAGLChannel = NULL;
-        }
-
-        return NULL;
-    }
-
-    _nsglChannels[channel] = newAGLChannel;
-    _zOrderToChannel.insert(std::pair<int, int>(zOrder, channel));
-
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s successfully created NSGL channel number %d", __FUNCTION__, channel);
-
-    return newAGLChannel;
-}
-
-int VideoRenderNSOpenGL::DeleteAllNSGLChannels()
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    std::map<int, VideoChannelNSOpenGL*>::iterator it;
-    it = _nsglChannels.begin();
-
-    while (it != _nsglChannels.end())
-    {
-        VideoChannelNSOpenGL* channel = it->second;
-        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s Deleting channel %d", __FUNCTION__, channel);
-        delete channel;
-        it++;
-    }
-    _nsglChannels.clear();
-    return 0;
-}
-
-int32_t VideoRenderNSOpenGL::DeleteNSGLChannel(const uint32_t channel)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    std::map<int, VideoChannelNSOpenGL*>::iterator it;
-    it = _nsglChannels.find(channel);
-    if (it != _nsglChannels.end())
-    {
-        delete it->second;
-        _nsglChannels.erase(it);
-    }
-    else
-    {
-        return -1;
-    }
-
-    std::multimap<int, int>::iterator zIt = _zOrderToChannel.begin();
-    while( zIt != _zOrderToChannel.end())
-    {
-        if (zIt->second == (int)channel)
-        {
-            _zOrderToChannel.erase(zIt);
-            break;
-        }
-        zIt++;
-    }
-
-    return 0;
-}
-
-int32_t VideoRenderNSOpenGL::GetChannelProperties(const uint16_t streamId,
-                                                  uint32_t& zOrder,
-                                                  float& left,
-                                                  float& top,
-                                                  float& right,
-                                                  float& bottom)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    bool channelFound = false;
-
-    // Loop through all channels until we find a match.
-    // From that, get zorder.
-    // From that, get T, L, R, B
-    for (std::multimap<int, int>::reverse_iterator rIt = _zOrderToChannel.rbegin();
-            rIt != _zOrderToChannel.rend();
-            rIt++)
-    {
-        if(streamId == rIt->second)
-        {
-            channelFound = true;
-
-            zOrder = rIt->second;
-
-            std::map<int, VideoChannelNSOpenGL*>::iterator rIt = _nsglChannels.find(streamId);
-            VideoChannelNSOpenGL* tempChannel = rIt->second;
-
-            if(-1 == tempChannel->GetChannelProperties(left, top, right, bottom) )
-            {
-                return -1;
-            }
-            break;
-        }
-    }
-
-    if(false == channelFound)
-    {
-
-        return -1;
-    }
-
-    return 0;
-}
-
-int VideoRenderNSOpenGL::StopThread()
-{
-
-    rtc::PlatformThread* tmpPtr = _screenUpdateThread.release();
-    WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id,
-                 "%s Stopping thread ", __FUNCTION__, tmpPtr);
-
-    if (tmpPtr)
-    {
-        _screenUpdateEvent->Set();
-        tmpPtr->Stop();
-        delete tmpPtr;
-    }
-
-    delete _screenUpdateEvent;
-    _screenUpdateEvent = NULL;
-
-    return 0;
-}
-
-bool VideoRenderNSOpenGL::IsFullScreen()
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-    return _fullScreen;
-}
-
-bool VideoRenderNSOpenGL::HasChannels()
-{
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    if (_nsglChannels.begin() != _nsglChannels.end())
-    {
-        return true;
-    }
-    return false;
-}
-
-bool VideoRenderNSOpenGL::HasChannel(int channel)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.find(channel);
-
-    if (it != _nsglChannels.end())
-    {
-        return true;
-    }
-    return false;
-}
-
-int VideoRenderNSOpenGL::GetChannels(std::list<int>& channelList)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.begin();
-
-    while (it != _nsglChannels.end())
-    {
-        channelList.push_back(it->first);
-        it++;
-    }
-
-    return 0;
-}
-
-VideoChannelNSOpenGL* VideoRenderNSOpenGL::ConfigureNSGLChannel(int channel, int zOrder, float startWidth, float startHeight, float stopWidth, float stopHeight)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.find(channel);
-
-    if (it != _nsglChannels.end())
-    {
-        VideoChannelNSOpenGL* aglChannel = it->second;
-        if (aglChannel->SetStreamSettings(0, startWidth, startHeight, stopWidth, stopHeight) == -1)
-        {
-            WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id, "%s failed to set stream settings: channel %d. channel=%d zOrder=%d startWidth=%d startHeight=%d stopWidth=%d stopHeight=%d",
-                    __FUNCTION__, channel, zOrder, startWidth, startHeight, stopWidth, stopHeight);
-            return NULL;
-        }
-        WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, _id, "%s Configuring channel %d. channel=%d zOrder=%d startWidth=%d startHeight=%d stopWidth=%d stopHeight=%d",
-                __FUNCTION__, channel, zOrder, startWidth, startHeight, stopWidth, stopHeight);
-
-        std::multimap<int, int>::iterator it = _zOrderToChannel.begin();
-        while(it != _zOrderToChannel.end())
-        {
-            if (it->second == channel)
-            {
-                if (it->first != zOrder)
-                {
-                    _zOrderToChannel.erase(it);
-                    _zOrderToChannel.insert(std::pair<int, int>(zOrder, channel));
-                }
-                break;
-            }
-            it++;
-        }
-        return aglChannel;
-    }
-
-    return NULL;
-}
-
-/*
- *
- *    Rendering process
- *
- */
-
-bool VideoRenderNSOpenGL::ScreenUpdateThreadProc(void* obj)
-{
-    return static_cast<VideoRenderNSOpenGL*>(obj)->ScreenUpdateProcess();
-}
-
-bool VideoRenderNSOpenGL::ScreenUpdateProcess()
-{
-
-    _screenUpdateEvent->Wait(10);
-    LockAGLCntx();
-
-    if (!_screenUpdateThread)
-    {
-        WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, _id, "%s no screen update thread", __FUNCTION__);
-        UnlockAGLCntx();
-        return false;
-    }
-
-    [_nsglContext makeCurrentContext];
-
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        UnlockAGLCntx();
-        return true;
-    }
-
-    if (_windowWidth != (_windowRect.right - _windowRect.left)
-            || _windowHeight != (_windowRect.bottom - _windowRect.top))
-    {
-        _windowWidth = _windowRect.right - _windowRect.left;
-        _windowHeight = _windowRect.bottom - _windowRect.top;
-        glViewport(0, 0, _windowWidth, _windowHeight);
-    }
-
-    // Check if there are any updated buffers
-    bool updated = false;
-    std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.begin();
-    while (it != _nsglChannels.end())
-    {
-
-        VideoChannelNSOpenGL* aglChannel = it->second;
-        aglChannel->UpdateStretchSize(_windowHeight, _windowWidth);
-        aglChannel->IsUpdated(updated);
-        if (updated)
-        {
-            break;
-        }
-        it++;
-    }
-
-    if (updated)
-    {
-
-        // At least on buffers is updated, we need to repaint the texture
-        if (RenderOffScreenBuffers() != -1)
-        {
-            UnlockAGLCntx();
-            return true;
-        }
-    }
-    //    }
-    UnlockAGLCntx();
-    return true;
-}
-
-/*
- *
- *    Functions for creating mixing buffers and screen settings
- *
- */
-
-int VideoRenderNSOpenGL::CreateMixingContext()
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    if(_fullScreen)
-    {
-        if(-1 == setRenderTargetFullScreen())
-        {
-            return -1;
-        }
-    }
-    else
-    {
-
-        if(-1 == setRenderTargetWindow())
-        {
-            return -1;
-        }
-    }
-
-    configureNSOpenGLEngine();
-
-    DisplayBuffers();
-
-    GLenum glErr = glGetError();
-    if (glErr)
-    {
-    }
-
-    return 0;
-}
-
-/*
- *
- *    Rendering functions
- *
- */
-
-int VideoRenderNSOpenGL::RenderOffScreenBuffers()
-{
-    LockAGLCntx();
-
-    // Get the current window size, it might have changed since last render.
-    if (GetWindowRect(_windowRect) == -1)
-    {
-        UnlockAGLCntx();
-        return -1;
-    }
-
-    [_nsglContext makeCurrentContext];
-    glClear(GL_COLOR_BUFFER_BIT);
-
-    // Loop through all channels starting highest zOrder ending with lowest.
-    for (std::multimap<int, int>::reverse_iterator rIt = _zOrderToChannel.rbegin();
-            rIt != _zOrderToChannel.rend();
-            rIt++)
-    {
-        int channelId = rIt->second;
-        std::map<int, VideoChannelNSOpenGL*>::iterator it = _nsglChannels.find(channelId);
-
-        VideoChannelNSOpenGL* aglChannel = it->second;
-
-        aglChannel->RenderOffScreenBuffer();
-    }
-
-    DisplayBuffers();
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-/*
- *
- * Help functions
- *
- * All help functions assumes external protections
- *
- */
-
-int VideoRenderNSOpenGL::DisplayBuffers()
-{
-
-    LockAGLCntx();
-
-    glFinish();
-    [_nsglContext flushBuffer];
-
-    WEBRTC_TRACE(kTraceDebug, kTraceVideoRenderer, _id, "%s glFinish and [_nsglContext flushBuffer]", __FUNCTION__);
-
-    UnlockAGLCntx();
-    return 0;
-}
-
-int VideoRenderNSOpenGL::GetWindowRect(Rect& rect)
-{
-
-    CriticalSectionScoped cs(&_nsglContextCritSec);
-
-    if (_windowRef)
-    {
-        if(_fullScreen)
-        {
-            NSRect mainDisplayRect = [[NSScreen mainScreen] frame];
-            rect.bottom = 0;
-            rect.left = 0;
-            rect.right = mainDisplayRect.size.width;
-            rect.top = mainDisplayRect.size.height;
-        }
-        else
-        {
-            rect.top = [_windowRef frame].origin.y;
-            rect.left = [_windowRef frame].origin.x;
-            rect.bottom = [_windowRef frame].origin.y + [_windowRef frame].size.height;
-            rect.right = [_windowRef frame].origin.x + [_windowRef frame].size.width;
-        }
-
-        return 0;
-    }
-    else
-    {
-        return -1;
-    }
-}
-
-int32_t VideoRenderNSOpenGL::SetText(const uint8_t /*textId*/,
-                                     const uint8_t* /*text*/,
-                                     const int32_t /*textLength*/,
-                                     const uint32_t /*textColorRef*/,
-                                     const uint32_t /*backgroundColorRef*/,
-                                     const float /*left*/,
-                                     const float /*top*/,
-                                     const float /*right*/,
-                                     const float /*bottom*/)
-{
-
-    return 0;
-
-}
-
-void VideoRenderNSOpenGL::LockAGLCntx()
-{
-    _nsglContextCritSec.Enter();
-}
-void VideoRenderNSOpenGL::UnlockAGLCntx()
-{
-    _nsglContextCritSec.Leave();
-}
-
-/*
-
- bool VideoRenderNSOpenGL::SetFullScreen(bool fullscreen)
- {
- NSRect mainDisplayRect, viewRect;
-
- // Create a screen-sized window on the display you want to take over
- // Note, mainDisplayRect has a non-zero origin if the key window is on a secondary display
- mainDisplayRect = [[NSScreen mainScreen] frame];
- fullScreenWindow = [[NSWindow alloc] initWithContentRect:mainDisplayRect styleMask:NSBorderlessWindowMask
- backing:NSBackingStoreBuffered defer:YES];
-
- // Set the window level to be above the menu bar
- [fullScreenWindow setLevel:NSMainMenuWindowLevel+1];
-
- // Perform any other window configuration you desire
- [fullScreenWindow setOpaque:YES];
- [fullScreenWindow setHidesOnDeactivate:YES];
-
- // Create a view with a double-buffered OpenGL context and attach it to the window
- // By specifying the non-fullscreen context as the shareContext, we automatically inherit the OpenGL objects (textures, etc) it has defined
- viewRect = NSMakeRect(0.0, 0.0, mainDisplayRect.size.width, mainDisplayRect.size.height);
- fullScreenView = [[MyOpenGLView alloc] initWithFrame:viewRect shareContext:[openGLView openGLContext]];
- [fullScreenWindow setContentView:fullScreenView];
-
- // Show the window
- [fullScreenWindow makeKeyAndOrderFront:self];
-
- // Set the scene with the full-screen viewport and viewing transformation
- [scene setViewportRect:viewRect];
-
- // Assign the view's MainController to self
- [fullScreenView setMainController:self];
-
- if (!isAnimating) {
- // Mark the view as needing drawing to initalize its contents
- [fullScreenView setNeedsDisplay:YES];
- }
- else {
- // Start playing the animation
- [fullScreenView startAnimation];
- }
-
- }
-
-
-
- */
-
-
-}  // namespace webrtc
-
-#endif // COCOA_RENDERING
diff --git a/webrtc/modules/video_render/test/testAPI/renderStartImage.bmp b/webrtc/modules/video_render/test/testAPI/renderStartImage.bmp
deleted file mode 100644
index c443a58..0000000
--- a/webrtc/modules/video_render/test/testAPI/renderStartImage.bmp
+++ /dev/null
Binary files differ
diff --git a/webrtc/modules/video_render/test/testAPI/testAPI.cc b/webrtc/modules/video_render/test/testAPI/testAPI.cc
deleted file mode 100644
index cea2f6b..0000000
--- a/webrtc/modules/video_render/test/testAPI/testAPI.cc
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_render/test/testAPI/testAPI.h"
-
-#include <stdio.h>
-
-#if defined(_WIN32)
-#include <tchar.h>
-#include <windows.h>
-#include <assert.h>
-#include <fstream>
-#include <iostream>
-#include <string>
-#include <windows.h>
-#include <ddraw.h>
-
-#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <iostream>
-#include <sys/time.h>
-
-#endif
-
-#include "webrtc/common_types.h"
-#include "webrtc/modules/include/module_common_types.h"
-#include "webrtc/modules/utility/include/process_thread.h"
-#include "webrtc/modules/video_render/video_render.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-#include "webrtc/system_wrappers/include/sleep.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-void GetTestVideoFrame(VideoFrame* frame, uint8_t startColor);
-int TestSingleStream(VideoRender* renderModule);
-int TestFullscreenStream(VideoRender* &renderModule,
-                         void* window,
-                         const VideoRenderType videoRenderType);
-int TestBitmapText(VideoRender* renderModule);
-int TestMultipleStreams(VideoRender* renderModule);
-int TestExternalRender(VideoRender* renderModule);
-
-#define TEST_FRAME_RATE 30
-#define TEST_TIME_SECOND 5
-#define TEST_FRAME_NUM (TEST_FRAME_RATE*TEST_TIME_SECOND)
-#define TEST_STREAM0_START_COLOR 0
-#define TEST_STREAM1_START_COLOR 64
-#define TEST_STREAM2_START_COLOR 128
-#define TEST_STREAM3_START_COLOR 192
-
-#if defined(WEBRTC_LINUX)
-
-#define GET_TIME_IN_MS timeGetTime()
-
-unsigned long timeGetTime()
-{
-    struct timeval tv;
-    struct timezone tz;
-    unsigned long val;
-
-    gettimeofday(&tv, &tz);
-    val= tv.tv_sec*1000+ tv.tv_usec/1000;
-    return(val);
-}
-
-#elif defined(WEBRTC_MAC)
-
-#include <unistd.h>
-
-#define GET_TIME_IN_MS timeGetTime()
-
-unsigned long timeGetTime()
-{
-    return 0;
-}
-
-#else
-
-#define GET_TIME_IN_MS ::timeGetTime()
-
-#endif
-
-using namespace std;
-
-#if defined(_WIN32)
-LRESULT CALLBACK WebRtcWinProc( HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
-{
-    switch(uMsg)
-    {
-        case WM_DESTROY:
-        break;
-        case WM_COMMAND:
-        break;
-    }
-    return DefWindowProc(hWnd,uMsg,wParam,lParam);
-}
-
-int WebRtcCreateWindow(HWND &hwndMain,int winNum, int width, int height)
-{
-    HINSTANCE hinst = GetModuleHandle(0);
-    WNDCLASSEX wcx;
-    wcx.hInstance = hinst;
-    wcx.lpszClassName = TEXT("VideoRenderTest");
-    wcx.lpfnWndProc = (WNDPROC)WebRtcWinProc;
-    wcx.style = CS_DBLCLKS;
-    wcx.hIcon = LoadIcon (NULL, IDI_APPLICATION);
-    wcx.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
-    wcx.hCursor = LoadCursor (NULL, IDC_ARROW);
-    wcx.lpszMenuName = NULL;
-    wcx.cbSize = sizeof (WNDCLASSEX);
-    wcx.cbClsExtra = 0;
-    wcx.cbWndExtra = 0;
-    wcx.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
-
-    // Register our window class with the operating system.
-    // If there is an error, exit program.
-    if ( !RegisterClassEx (&wcx) )
-    {
-        MessageBox( 0, TEXT("Failed to register window class!"),TEXT("Error!"), MB_OK|MB_ICONERROR );
-        return 0;
-    }
-
-    // Create the main window.
-    hwndMain = CreateWindowEx(
-            0, // no extended styles
-            TEXT("VideoRenderTest"), // class name
-            TEXT("VideoRenderTest Window"), // window name
-            WS_OVERLAPPED |WS_THICKFRAME, // overlapped window
-            800, // horizontal position
-            0, // vertical position
-            width, // width
-            height, // height
-            (HWND) NULL, // no parent or owner window
-            (HMENU) NULL, // class menu used
-            hinst, // instance handle
-            NULL); // no window creation data
-
-    if (!hwndMain)
-        return -1;
-
-    // Show the window using the flag specified by the program
-    // that started the application, and send the application
-    // a WM_PAINT message.
-
-    ShowWindow(hwndMain, SW_SHOWDEFAULT);
-    UpdateWindow(hwndMain);
-    return 0;
-}
-
-#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
-
-int WebRtcCreateWindow(Window *outWindow, Display **outDisplay, int winNum, int width, int height) // unsigned char* title, int titleLength)
-
-{
-    int screen, xpos = 10, ypos = 10;
-    XEvent evnt;
-    XSetWindowAttributes xswa; // window attribute struct
-    XVisualInfo vinfo; // screen visual info struct
-    unsigned long mask; // attribute mask
-
-    // get connection handle to xserver
-    Display* _display = XOpenDisplay( NULL );
-
-    // get screen number
-    screen = DefaultScreen(_display);
-
-    // put desired visual info for the screen in vinfo
-    if( XMatchVisualInfo(_display, screen, 24, TrueColor, &vinfo) != 0 )
-    {
-        //printf( "Screen visual info match!\n" );
-    }
-
-    // set window attributes
-    xswa.colormap = XCreateColormap(_display, DefaultRootWindow(_display), vinfo.visual, AllocNone);
-    xswa.event_mask = StructureNotifyMask | ExposureMask;
-    xswa.background_pixel = 0;
-    xswa.border_pixel = 0;
-
-    // value mask for attributes
-    mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
-
-    switch( winNum )
-    {
-        case 0:
-        xpos = 200;
-        ypos = 200;
-        break;
-        case 1:
-        xpos = 300;
-        ypos = 200;
-        break;
-        default:
-        break;
-    }
-
-    // create a subwindow for parent (defroot)
-    Window _window = XCreateWindow(_display, DefaultRootWindow(_display),
-            xpos, ypos,
-            width,
-            height,
-            0, vinfo.depth,
-            InputOutput,
-            vinfo.visual,
-            mask, &xswa);
-
-    // Set window name
-    if( winNum == 0 )
-    {
-        XStoreName(_display, _window, "VE MM Local Window");
-        XSetIconName(_display, _window, "VE MM Local Window");
-    }
-    else if( winNum == 1 )
-    {
-        XStoreName(_display, _window, "VE MM Remote Window");
-        XSetIconName(_display, _window, "VE MM Remote Window");
-    }
-
-    // make x report events for mask
-    XSelectInput(_display, _window, StructureNotifyMask);
-
-    // map the window to the display
-    XMapWindow(_display, _window);
-
-    // wait for map event
-    do
-    {
-        XNextEvent(_display, &evnt);
-    }
-    while (evnt.type != MapNotify || evnt.xmap.event != _window);
-
-    *outWindow = _window;
-    *outDisplay = _display;
-
-    return 0;
-}
-#endif  // WEBRTC_LINUX
-
-// Note: Mac code is in testApi_mac.mm.
-
-class MyRenderCallback: public VideoRenderCallback
-{
-public:
-    MyRenderCallback() :
-        _cnt(0)
-    {
-    }
-    ;
-    ~MyRenderCallback()
-    {
-    }
-    ;
-    virtual int32_t RenderFrame(const uint32_t streamId,
-                                const VideoFrame& videoFrame) {
-        _cnt++;
-        if (_cnt % 100 == 0)
-        {
-            printf("Render callback %d \n",_cnt);
-        }
-        return 0;
-    }
-    int32_t _cnt;
-};
-
-void GetTestVideoFrame(VideoFrame* frame, uint8_t startColor) {
-    // changing color
-    static uint8_t color = startColor;
-
-    memset(frame->buffer(kYPlane), color, frame->allocated_size(kYPlane));
-    memset(frame->buffer(kUPlane), color, frame->allocated_size(kUPlane));
-    memset(frame->buffer(kVPlane), color, frame->allocated_size(kVPlane));
-
-    ++color;
-}
-
-int TestSingleStream(VideoRender* renderModule) {
-    int error = 0;
-    // Add settings for a stream to render
-    printf("Add stream 0 to entire window\n");
-    const int streamId0 = 0;
-    VideoRenderCallback* renderCallback0 = renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f);
-    assert(renderCallback0 != NULL);
-
-    printf("Start render\n");
-    error = renderModule->StartRender(streamId0);
-    if (error != 0) {
-      // TODO(phoglund): This test will not work if compiled in release mode.
-      // This rather silly construct here is to avoid compilation errors when
-      // compiling in release. Release => no asserts => unused 'error' variable.
-      assert(false);
-    }
-
-    // Loop through an I420 file and render each frame
-    const int width = 352;
-    const int half_width = (width + 1) / 2;
-    const int height = 288;
-
-    VideoFrame videoFrame0;
-    videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
-
-    const uint32_t renderDelayMs = 500;
-
-    for (int i=0; i<TEST_FRAME_NUM; i++) {
-        GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
-        // Render this frame with the specified delay
-        videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp()
-                                       + renderDelayMs);
-        renderCallback0->RenderFrame(streamId0, videoFrame0);
-        SleepMs(1000/TEST_FRAME_RATE);
-    }
-
-
-    // Shut down
-    printf("Closing...\n");
-    error = renderModule->StopRender(streamId0);
-    assert(error == 0);
-
-    error = renderModule->DeleteIncomingRenderStream(streamId0);
-    assert(error == 0);
-
-    return 0;
-}
-
-int TestFullscreenStream(VideoRender* &renderModule,
-                         void* window,
-                         const VideoRenderType videoRenderType) {
-    VideoRender::DestroyVideoRender(renderModule);
-    renderModule = VideoRender::CreateVideoRender(12345, window, true, videoRenderType);
-
-    TestSingleStream(renderModule);
-
-    VideoRender::DestroyVideoRender(renderModule);
-    renderModule = VideoRender::CreateVideoRender(12345, window, false, videoRenderType);
-
-    return 0;
-}
-
-int TestBitmapText(VideoRender* renderModule) {
-#if defined(WIN32)
-
-    int error = 0;
-    // Add settings for a stream to render
-    printf("Add stream 0 to entire window\n");
-    const int streamId0 = 0;
-    VideoRenderCallback* renderCallback0 = renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f);
-    assert(renderCallback0 != NULL);
-
-    printf("Adding Bitmap\n");
-    DDCOLORKEY ColorKey; // black
-    ColorKey.dwColorSpaceHighValue = RGB(0, 0, 0);
-    ColorKey.dwColorSpaceLowValue = RGB(0, 0, 0);
-    HBITMAP hbm = (HBITMAP)LoadImage(NULL,
-                                     (LPCTSTR)_T("renderStartImage.bmp"),
-                                     IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
-    renderModule->SetBitmap(hbm, 0, &ColorKey, 0.0f, 0.0f, 0.3f,
-                             0.3f);
-
-    printf("Adding Text\n");
-    renderModule->SetText(1, (uint8_t*) "WebRtc Render Demo App", 20,
-                           RGB(255, 0, 0), RGB(0, 0, 0), 0.25f, 0.1f, 1.0f,
-                           1.0f);
-
-    printf("Start render\n");
-    error = renderModule->StartRender(streamId0);
-    assert(error == 0);
-
-    // Loop through an I420 file and render each frame
-    const int width = 352;
-    const int half_width = (width + 1) / 2;
-    const int height = 288;
-
-    VideoFrame videoFrame0;
-    videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
-
-    const uint32_t renderDelayMs = 500;
-
-    for (int i=0; i<TEST_FRAME_NUM; i++) {
-        GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
-        // Render this frame with the specified delay
-        videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                       renderDelayMs);
-        renderCallback0->RenderFrame(streamId0, videoFrame0);
-        SleepMs(1000/TEST_FRAME_RATE);
-    }
-    // Sleep and let all frames be rendered before closing
-    SleepMs(renderDelayMs*2);
-
-
-    // Shut down
-    printf("Closing...\n");
-    ColorKey.dwColorSpaceHighValue = RGB(0,0,0);
-    ColorKey.dwColorSpaceLowValue = RGB(0,0,0);
-    renderModule->SetBitmap(NULL, 0, &ColorKey, 0.0f, 0.0f, 0.0f, 0.0f);
-    renderModule->SetText(1, NULL, 20, RGB(255,255,255),
-                    RGB(0,0,0), 0.0f, 0.0f, 0.0f, 0.0f);
-
-    error = renderModule->StopRender(streamId0);
-    assert(error == 0);
-
-    error = renderModule->DeleteIncomingRenderStream(streamId0);
-    assert(error == 0);
-#endif
-
-    return 0;
-}
-
-int TestMultipleStreams(VideoRender* renderModule) {
-    int error = 0;
-
-    // Add settings for a stream to render
-    printf("Add stream 0\n");
-    const int streamId0 = 0;
-    VideoRenderCallback* renderCallback0 =
-        renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f, 0.45f, 0.45f);
-    assert(renderCallback0 != NULL);
-    printf("Add stream 1\n");
-    const int streamId1 = 1;
-    VideoRenderCallback* renderCallback1 =
-        renderModule->AddIncomingRenderStream(streamId1, 0, 0.55f, 0.0f, 1.0f, 0.45f);
-    assert(renderCallback1 != NULL);
-    printf("Add stream 2\n");
-    const int streamId2 = 2;
-    VideoRenderCallback* renderCallback2 =
-        renderModule->AddIncomingRenderStream(streamId2, 0, 0.0f, 0.55f, 0.45f, 1.0f);
-    assert(renderCallback2 != NULL);
-    printf("Add stream 3\n");
-    const int streamId3 = 3;
-    VideoRenderCallback* renderCallback3 =
-        renderModule->AddIncomingRenderStream(streamId3, 0, 0.55f, 0.55f, 1.0f, 1.0f);
-    assert(renderCallback3 != NULL);
-    error = renderModule->StartRender(streamId0);
-    if (error != 0) {
-      // TODO(phoglund): This test will not work if compiled in release mode.
-      // This rather silly construct here is to avoid compilation errors when
-      // compiling in release. Release => no asserts => unused 'error' variable.
-      assert(false);
-    }
-    error = renderModule->StartRender(streamId1);
-    assert(error == 0);
-    error = renderModule->StartRender(streamId2);
-    assert(error == 0);
-    error = renderModule->StartRender(streamId3);
-    assert(error == 0);
-
-    // Loop through an I420 file and render each frame
-    const int width = 352;
-    const int half_width = (width + 1) / 2;
-    const int height = 288;
-
-    VideoFrame videoFrame0;
-    videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
-    VideoFrame videoFrame1;
-    videoFrame1.CreateEmptyFrame(width, height, width, half_width, half_width);
-    VideoFrame videoFrame2;
-    videoFrame2.CreateEmptyFrame(width, height, width, half_width, half_width);
-    VideoFrame videoFrame3;
-    videoFrame3.CreateEmptyFrame(width, height, width, half_width, half_width);
-
-    const uint32_t renderDelayMs = 500;
-
-    // Render frames with the specified delay.
-    for (int i=0; i<TEST_FRAME_NUM; i++) {
-      GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
-
-      videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                     renderDelayMs);
-      renderCallback0->RenderFrame(streamId0, videoFrame0);
-
-      GetTestVideoFrame(&videoFrame1, TEST_STREAM1_START_COLOR);
-      videoFrame1.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                     renderDelayMs);
-      renderCallback1->RenderFrame(streamId1, videoFrame1);
-
-      GetTestVideoFrame(&videoFrame2,  TEST_STREAM2_START_COLOR);
-      videoFrame2.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                     renderDelayMs);
-      renderCallback2->RenderFrame(streamId2, videoFrame2);
-
-      GetTestVideoFrame(&videoFrame3, TEST_STREAM3_START_COLOR);
-      videoFrame3.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                     renderDelayMs);
-      renderCallback3->RenderFrame(streamId3, videoFrame3);
-
-      SleepMs(1000/TEST_FRAME_RATE);
-    }
-
-    // Shut down
-    printf("Closing...\n");
-    error = renderModule->StopRender(streamId0);
-    assert(error == 0);
-    error = renderModule->DeleteIncomingRenderStream(streamId0);
-    assert(error == 0);
-    error = renderModule->StopRender(streamId1);
-    assert(error == 0);
-    error = renderModule->DeleteIncomingRenderStream(streamId1);
-    assert(error == 0);
-    error = renderModule->StopRender(streamId2);
-    assert(error == 0);
-    error = renderModule->DeleteIncomingRenderStream(streamId2);
-    assert(error == 0);
-    error = renderModule->StopRender(streamId3);
-    assert(error == 0);
-    error = renderModule->DeleteIncomingRenderStream(streamId3);
-    assert(error == 0);
-
-    return 0;
-}
-
-int TestExternalRender(VideoRender* renderModule) {
-    int error = 0;
-    MyRenderCallback *externalRender = new MyRenderCallback();
-
-    const int streamId0 = 0;
-    VideoRenderCallback* renderCallback0 =
-        renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f,
-                                                   1.0f, 1.0f);
-    assert(renderCallback0 != NULL);
-    error = renderModule->AddExternalRenderCallback(streamId0, externalRender);
-    if (error != 0) {
-      // TODO(phoglund): This test will not work if compiled in release mode.
-      // This rather silly construct here is to avoid compilation errors when
-      // compiling in release. Release => no asserts => unused 'error' variable.
-      assert(false);
-    }
-
-    error = renderModule->StartRender(streamId0);
-    assert(error == 0);
-
-    const int width = 352;
-    const int half_width = (width + 1) / 2;
-    const int height = 288;
-    VideoFrame videoFrame0;
-    videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
-
-    const uint32_t renderDelayMs = 500;
-    int frameCount = TEST_FRAME_NUM;
-    for (int i=0; i<frameCount; i++) {
-        videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
-                                       renderDelayMs);
-        renderCallback0->RenderFrame(streamId0, videoFrame0);
-        SleepMs(33);
-    }
-
-    // Sleep and let all frames be rendered before closing
-    SleepMs(2*renderDelayMs);
-
-    // Shut down
-    printf("Closing...\n");
-    error = renderModule->StopRender(streamId0);
-    assert(error == 0);
-    error = renderModule->DeleteIncomingRenderStream(streamId0);
-    assert(error == 0);
-    assert(frameCount == externalRender->_cnt);
-
-    delete externalRender;
-    externalRender = NULL;
-
-    return 0;
-}
-
-void RunVideoRenderTests(void* window, VideoRenderType windowType) {
-    int myId = 12345;
-
-    // Create the render module
-    printf("Create render module\n");
-    VideoRender* renderModule = NULL;
-    renderModule = VideoRender::CreateVideoRender(myId,
-                                                  window,
-                                                  false,
-                                                  windowType);
-    assert(renderModule != NULL);
-
-    // ##### Test single stream rendering ####
-    printf("#### TestSingleStream ####\n");
-    if (TestSingleStream(renderModule) != 0) {
-        printf ("TestSingleStream failed\n");
-    }
-
-    // ##### Test fullscreen rendering ####
-    printf("#### TestFullscreenStream ####\n");
-    if (TestFullscreenStream(renderModule, window, windowType) != 0) {
-        printf ("TestFullscreenStream failed\n");
-    }
-
-    // ##### Test bitmap and text ####
-    printf("#### TestBitmapText ####\n");
-    if (TestBitmapText(renderModule) != 0) {
-        printf ("TestBitmapText failed\n");
-    }
-
-    // ##### Test multiple streams ####
-    printf("#### TestMultipleStreams ####\n");
-    if (TestMultipleStreams(renderModule) != 0) {
-        printf ("TestMultipleStreams failed\n");
-    }
-
-    // ##### Test multiple streams ####
-    printf("#### TestExternalRender ####\n");
-    if (TestExternalRender(renderModule) != 0) {
-        printf ("TestExternalRender failed\n");
-    }
-
-    delete renderModule;
-    renderModule = NULL;
-
-    printf("VideoRender unit tests passed.\n");
-}
-
-// Note: The Mac main is implemented in testApi_mac.mm.
-#if defined(_WIN32)
-int _tmain(int argc, _TCHAR* argv[])
-#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
-int main(int argc, char* argv[])
-#endif
-#if !defined(WEBRTC_MAC) && !defined(WEBRTC_ANDROID)
-{
-    // Create a window for testing.
-    void* window = NULL;
-#if defined (_WIN32)
-    HWND testHwnd;
-    WebRtcCreateWindow(testHwnd, 0, 352, 288);
-    window = (void*)testHwnd;
-    VideoRenderType windowType = kRenderWindows;
-#elif defined(WEBRTC_LINUX)
-    Window testWindow;
-    Display* display;
-    WebRtcCreateWindow(&testWindow, &display, 0, 352, 288);
-    VideoRenderType windowType = kRenderX11;
-    window = (void*)testWindow;
-#endif // WEBRTC_LINUX
-
-    RunVideoRenderTests(window, windowType);
-    return 0;
-}
-#endif  // !WEBRTC_MAC
diff --git a/webrtc/modules/video_render/test/testAPI/testAPI.h b/webrtc/modules/video_render/test/testAPI/testAPI.h
deleted file mode 100644
index 0655a5b..0000000
--- a/webrtc/modules/video_render/test/testAPI/testAPI.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_TEST_TESTAPI_TESTAPI_H
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_TEST_TESTAPI_TESTAPI_H
-
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-void RunVideoRenderTests(void* window, webrtc::VideoRenderType windowType);
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_TEST_TESTAPI_TESTAPI_H
diff --git a/webrtc/modules/video_render/test/testAPI/testAPI_android.cc b/webrtc/modules/video_render/test/testAPI/testAPI_android.cc
deleted file mode 100644
index c62a62f..0000000
--- a/webrtc/modules/video_render/test/testAPI/testAPI_android.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-int main(int argc, char* argv[]) {
-  // TODO(leozwang): Video render test app is not ready on android,
-  // make it dummy test now, will add android specific tests
-  return 0;
-}
diff --git a/webrtc/modules/video_render/test/testAPI/testAPI_mac.mm b/webrtc/modules/video_render/test/testAPI/testAPI_mac.mm
deleted file mode 100644
index dfee4c7..0000000
--- a/webrtc/modules/video_render/test/testAPI/testAPI_mac.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "testAPI.h"
-
-#include <iostream>
-
-#import <Foundation/Foundation.h>
-#import <Cocoa/Cocoa.h>
-#import <AppKit/AppKit.h>
-#import <QTKit/QTKit.h>
-#include <sys/time.h>
-
-#import "webrtc/modules/video_render/mac/cocoa_render_view.h"
-#include "webrtc/common_types.h"
-#include "webrtc/modules/include/module_common_types.h"
-#include "webrtc/modules/utility/include/process_thread.h"
-#include "webrtc/modules/video_render/video_render.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-#include "webrtc/system_wrappers/include/tick_util.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-int WebRtcCreateWindow(CocoaRenderView*& cocoaRenderer, int winNum, int width, int height)
-{
-    // In Cocoa, rendering is not done directly to a window like in Windows and Linux.
-    // It is rendererd to a Subclass of NSOpenGLView
-
-    // create cocoa container window
-    NSRect outWindowFrame = NSMakeRect(200, 800, width + 20, height + 20);
-    NSWindow* outWindow = [[NSWindow alloc] initWithContentRect:outWindowFrame 
-                                                      styleMask:NSTitledWindowMask 
-                                                        backing:NSBackingStoreBuffered 
-                                                          defer:NO];
-    [outWindow orderOut:nil];
-    [outWindow setTitle:@"Cocoa Renderer"];
-    [outWindow setBackgroundColor:[NSColor blueColor]];
-
-    // create renderer and attach to window
-    NSRect cocoaRendererFrame = NSMakeRect(10, 10, width, height);
-    cocoaRenderer = [[CocoaRenderView alloc] initWithFrame:cocoaRendererFrame];
-    [[outWindow contentView] addSubview:(NSView*)cocoaRenderer];
-
-    [outWindow makeKeyAndOrderFront:NSApp];
-
-    return 0;
-}
-
-int main (int argc, const char * argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    [NSApplication sharedApplication];
-
-    CocoaRenderView* testWindow;
-    WebRtcCreateWindow(testWindow, 0, 352, 288);
-    VideoRenderType windowType = kRenderCocoa;
-    void* window = (void*)testWindow;
-
-    RunVideoRenderTests(window, windowType);
-
-    [pool release];
-}
diff --git a/webrtc/modules/video_render/video_render.gypi b/webrtc/modules/video_render/video_render.gypi
deleted file mode 100644
index e8cc03a..0000000
--- a/webrtc/modules/video_render/video_render.gypi
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
-#
-# Use of this source code is governed by a BSD-style license
-# that can be found in the LICENSE file in the root of the source
-# tree. An additional intellectual property rights grant can be found
-# in the file PATENTS.  All contributing project authors may
-# be found in the AUTHORS file in the root of the source tree.
-
-{
-  'targets': [
-    {
-      # Note this library is missing an implementation for the video render.
-      # For that targets must link with 'video_render' or
-      # 'video_render_module_internal_impl' if they want to compile and use
-      # the internal render as the default renderer.
-      'target_name': 'video_render_module',
-      'type': 'static_library',
-      'dependencies': [
-        'webrtc_utility',
-        '<(webrtc_root)/common.gyp:webrtc_common',
-        '<(webrtc_root)/common_video/common_video.gyp:common_video',
-        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
-      ],
-      'sources': [
-        'external/video_render_external_impl.cc',
-        'external/video_render_external_impl.h',
-        'i_video_render.h',
-        'video_render.h',
-        'video_render_defines.h',
-        'video_render_impl.h',
-      ],
-    },
-    {
-      # Default video_render_module implementation that only supports external
-      # renders.
-      'target_name': 'video_render',
-      'type': 'static_library',
-      'dependencies': [
-        'video_render_module',
-      ],
-      'sources': [
-        'video_render_impl.cc',
-      ],
-    },
-  ], # targets
-
-  'conditions': [
-    ['build_with_chromium==0', {
-      'targets': [
-        {
-          # video_render_module implementation that supports the internal
-          # video_render implementation.
-          'target_name': 'video_render_module_internal_impl',
-          'type': 'static_library',
-          'dependencies': [
-            '<(webrtc_root)/common.gyp:webrtc_common',
-            'video_render_module',
-          ],
-          'sources': [
-            'video_render_internal_impl.cc',
-          ],
-           # TODO(andrew): with the proper suffix, these files will be excluded
-           # automatically.
-          'conditions': [
-            ['OS=="android"', {
-              'sources': [
-                'android/video_render_android_impl.h',
-                'android/video_render_android_native_opengl2.h',
-                'android/video_render_android_surface_view.h',
-                'android/video_render_opengles20.h',
-                'android/video_render_android_impl.cc',
-                'android/video_render_android_native_opengl2.cc',
-                'android/video_render_android_surface_view.cc',
-                'android/video_render_opengles20.cc',
-              ],
-              'link_settings': {
-                'libraries': [
-                  '-lGLESv2',
-                ],
-              },
-            }],
-            ['OS=="ios"', {
-              'sources': [
-                # iOS
-                'ios/open_gles20.h',
-                'ios/open_gles20.mm',
-                'ios/video_render_ios_channel.h',
-                'ios/video_render_ios_channel.mm',
-                'ios/video_render_ios_gles20.h',
-                'ios/video_render_ios_gles20.mm',
-                'ios/video_render_ios_impl.h',
-                'ios/video_render_ios_impl.mm',
-                'ios/video_render_ios_view.h',
-                'ios/video_render_ios_view.mm',
-              ],
-              'xcode_settings': {
-                'CLANG_ENABLE_OBJC_ARC': 'YES',
-              },
-              'all_dependent_settings': {
-                'xcode_settings': {
-                  'OTHER_LDFLAGS': [
-                    '-framework OpenGLES',
-                    '-framework QuartzCore',
-                    '-framework UIKit',
-                  ],
-                },
-              },
-            }],
-            ['OS=="linux"', {
-              'sources': [
-                'linux/video_render_linux_impl.h',
-                'linux/video_x11_channel.h',
-                'linux/video_x11_render.h',
-                'linux/video_render_linux_impl.cc',
-                'linux/video_x11_channel.cc',
-                'linux/video_x11_render.cc',
-              ],
-              'link_settings': {
-                'libraries': [
-                  '-lXext',
-                ],
-              },
-            }],
-            ['OS=="mac"', {
-              'sources': [
-                'mac/cocoa_full_screen_window.h',
-                'mac/cocoa_render_view.h',
-                'mac/video_render_agl.h',
-                'mac/video_render_mac_carbon_impl.h',
-                'mac/video_render_mac_cocoa_impl.h',
-                'mac/video_render_nsopengl.h',
-                'mac/video_render_nsopengl.mm',
-                'mac/video_render_mac_cocoa_impl.mm',
-                'mac/video_render_agl.cc',
-                'mac/video_render_mac_carbon_impl.cc',
-                'mac/cocoa_render_view.mm',
-                'mac/cocoa_full_screen_window.mm',
-              ],
-            }],
-            ['OS=="win"', {
-              'sources': [
-                'windows/i_video_render_win.h',
-                'windows/video_render_direct3d9.h',
-                'windows/video_render_windows_impl.h',
-                'windows/video_render_direct3d9.cc',
-                'windows/video_render_windows_impl.cc',
-              ],
-              'include_dirs': [
-                '<(directx_sdk_path)/Include',
-              ],
-            }],
-            ['OS=="win" and clang==1', {
-              'msvs_settings': {
-                'VCCLCompilerTool': {
-                  'AdditionalOptions': [
-                    # Disable warnings failing when compiling with Clang on Windows.
-                    # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
-                    '-Wno-comment',
-                    '-Wno-reorder',
-                    '-Wno-unused-value',
-                    '-Wno-unused-private-field',
-                  ],
-                },
-              },
-            }],
-          ] # conditions
-        },
-      ],
-    }], # build_with_chromium==0
-    ['include_tests==1 and OS!="ios"', {
-      'targets': [
-        {
-          # Does not compile on iOS: webrtc:4755.
-          'target_name': 'video_render_tests',
-          'type': 'executable',
-          'dependencies': [
-            'video_render_module_internal_impl',
-            'webrtc_utility',
-            '<(webrtc_root)/common.gyp:webrtc_common',
-            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
-            '<(webrtc_root)/common_video/common_video.gyp:common_video',
-          ],
-          'sources': [
-            'test/testAPI/testAPI.cc',
-            'test/testAPI/testAPI.h',
-            'test/testAPI/testAPI_android.cc',
-            'test/testAPI/testAPI_mac.mm',
-          ],
-          'conditions': [
-            ['OS=="mac" or OS=="linux"', {
-              'cflags': [
-                '-Wno-write-strings',
-              ],
-              'ldflags': [
-                '-lpthread -lm',
-              ],
-            }],
-            ['OS=="linux"', {
-              'link_settings': {
-                'libraries': [
-                  '-lX11',
-                ],
-              },
-            }],
-            ['OS=="mac"', {
-              'xcode_settings': {
-                'OTHER_LDFLAGS': [
-                  '-framework Foundation -framework AppKit -framework Cocoa -framework OpenGL',
-                ],
-              },
-            }],
-          ] # conditions
-        }, # video_render_module_test
-      ], # targets
-    }], # include_tests==1 and OS!=ios
-  ], # conditions
-}
-
diff --git a/webrtc/modules/video_render/video_render.h b/webrtc/modules/video_render/video_render.h
deleted file mode 100644
index a24acb9..0000000
--- a/webrtc/modules/video_render/video_render.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_H_
-
-/*
- * video_render.h
- *
- * This header file together with module.h and module_common_types.h
- * contains all of the APIs that are needed for using the video render
- * module class.
- *
- */
-
-#include "webrtc/modules/include/module.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-namespace webrtc {
-
-// Class definitions
-class VideoRender: public Module
-{
-public:
-    /*
-     *   Create a video render module object
-     *
-     *   id              - unique identifier of this video render module object
-     *   window          - pointer to the window to render to
-     *   fullscreen      - true if this is a fullscreen renderer
-     *   videoRenderType - type of renderer to create
-     */
-    static VideoRender
-            * CreateVideoRender(
-                                          const int32_t id,
-                                          void* window,
-                                          const bool fullscreen,
-                                          const VideoRenderType videoRenderType =
-                                                  kRenderDefault);
-
-    /*
-     *   Destroy a video render module object
-     *
-     *   module  - object to destroy
-     */
-    static void DestroyVideoRender(VideoRender* module);
-
-    int64_t TimeUntilNextProcess() override = 0;
-    void Process() override = 0;
-
-    /**************************************************************************
-     *
-     *   Window functions
-     *
-     ***************************************************************************/
-
-    /*
-     *   Get window for this renderer
-     */
-    virtual void* Window() = 0;
-
-    /*
-     *   Change render window
-     *
-     *   window      - the new render window, assuming same type as originally created.
-     */
-    virtual int32_t ChangeWindow(void* window) = 0;
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    /*
-     *   Add incoming render stream
-     *
-     *   streamID    - id of the stream to add
-     *   zOrder      - relative render order for the streams, 0 = on top
-     *   left        - position of the stream in the window, [0.0f, 1.0f]
-     *   top         - position of the stream in the window, [0.0f, 1.0f]
-     *   right       - position of the stream in the window, [0.0f, 1.0f]
-     *   bottom      - position of the stream in the window, [0.0f, 1.0f]
-     *
-     *   Return      - callback class to use for delivering new frames to render.
-     */
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom) = 0;
-    /*
-     *   Delete incoming render stream
-     *
-     *   streamID    - id of the stream to add
-     */
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId) = 0;
-
-    /*
-     *   Add incoming render callback, used for external rendering
-     *
-     *   streamID     - id of the stream the callback is used for
-     *   renderObject - the VideoRenderCallback to use for this stream, NULL to remove
-     *
-     *   Return      - callback class to use for delivering new frames to render.
-     */
-    virtual int32_t
-            AddExternalRenderCallback(const uint32_t streamId,
-                                      VideoRenderCallback* renderObject) = 0;
-
-    /*
-     *   Get the porperties for an incoming render stream
-     *
-     *   streamID    - [in] id of the stream to get properties for
-     *   zOrder      - [out] relative render order for the streams, 0 = on top
-     *   left        - [out] position of the stream in the window, [0.0f, 1.0f]
-     *   top         - [out] position of the stream in the window, [0.0f, 1.0f]
-     *   right       - [out] position of the stream in the window, [0.0f, 1.0f]
-     *   bottom      - [out] position of the stream in the window, [0.0f, 1.0f]
-     */
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left, float& top,
-                                              float& right, float& bottom) const = 0;
-    /*
-     *   The incoming frame rate to the module, not the rate rendered in the window.
-     */
-    virtual uint32_t
-            GetIncomingFrameRate(const uint32_t streamId) = 0;
-
-    /*
-     *   Returns the number of incoming streams added to this render module
-     */
-    virtual uint32_t GetNumIncomingRenderStreams() const = 0;
-
-    /*
-     *   Returns true if this render module has the streamId added, false otherwise.
-     */
-    virtual bool
-            HasIncomingRenderStream(const uint32_t streamId) const = 0;
-
-    /*
-     *   Registers a callback to get raw images in the same time as sent
-     *   to the renderer. To be used for external rendering.
-     */
-    virtual int32_t
-            RegisterRawFrameCallback(const uint32_t streamId,
-                                     VideoRenderCallback* callbackObj) = 0;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    /*
-     *   Starts rendering the specified stream
-     */
-    virtual int32_t StartRender(const uint32_t streamId) = 0;
-
-    /*
-     *   Stops the renderer
-     */
-    virtual int32_t StopRender(const uint32_t streamId) = 0;
-
-    /*
-     *   Resets the renderer
-     *   No streams are removed. The state should be as after AddStream was called.
-     */
-    virtual int32_t ResetRender() = 0;
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    /*
-     *   Returns the preferred render video type
-     */
-    virtual RawVideoType PreferredVideoType() const = 0;
-
-    /*
-     *   Returns true if the renderer is in fullscreen mode, otherwise false.
-     */
-    virtual bool IsFullScreen() = 0;
-
-    /*
-     *   Gets screen resolution in pixels
-     */
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const = 0;
-
-    /*
-     *   Get the actual render rate for this stream. I.e rendered frame rate,
-     *   not frames delivered to the renderer.
-     */
-    virtual uint32_t RenderFrameRate(const uint32_t streamId) = 0;
-
-    /*
-     *   Set cropping of incoming stream
-     */
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    /*
-     * re-configure renderer
-     */
-
-    // Set the expected time needed by the graphics card or external renderer,
-    // i.e. frames will be released for rendering |delay_ms| before set render
-    // time in the video frame.
-    virtual int32_t SetExpectedRenderDelay(uint32_t stream_id,
-                                           int32_t delay_ms) = 0;
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    virtual int32_t SetTransparentBackground(const bool enable) = 0;
-
-    virtual int32_t FullScreenRender(void* window, const bool enable) = 0;
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom) = 0;
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left, const float top,
-                            const float right, const float bottom) = 0;
-};
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_H_
diff --git a/webrtc/modules/video_render/video_render_defines.h b/webrtc/modules/video_render/video_render_defines.h
deleted file mode 100644
index 999707c..0000000
--- a/webrtc/modules/video_render/video_render_defines.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_DEFINES_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_DEFINES_H_
-
-#include "webrtc/common_types.h"
-#include "webrtc/common_video/include/incoming_video_stream.h"
-#include "webrtc/modules/include/module_common_types.h"
-
-namespace webrtc
-{
-// Defines
-#ifndef NULL
-#define NULL    0
-#endif
-
-// Enums
-enum VideoRenderType
-{
-    kRenderExternal = 0, // External
-    kRenderWindows = 1, // Windows
-    kRenderCocoa = 2, // Mac
-    kRenderCarbon = 3,
-    kRenderiOS = 4, // iPhone
-    kRenderAndroid = 5, // Android
-    kRenderX11 = 6, // Linux
-    kRenderDefault
-};
-
-// Runtime errors
-enum VideoRenderError
-{
-    kRenderShutDown = 0,
-    kRenderPerformanceAlarm = 1
-};
-
-// Feedback class to be implemented by module user
-class VideoRenderFeedback
-{
-public:
-    virtual void OnRenderError(const int32_t streamId,
-                               const VideoRenderError error) = 0;
-
-protected:
-    virtual ~VideoRenderFeedback()
-    {
-    }
-};
-
-// Mobile enums
-enum StretchMode
-{
-    kStretchToInsideEdge = 1,
-    kStretchToOutsideEdge = 2,
-    kStretchMatchWidth = 3,
-    kStretchMatchHeight = 4,
-    kStretchNone = 5
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_DEFINES_H_
diff --git a/webrtc/modules/video_render/video_render_impl.cc b/webrtc/modules/video_render/video_render_impl.cc
deleted file mode 100644
index f3d12dc..0000000
--- a/webrtc/modules/video_render/video_render_impl.cc
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "webrtc/common_video/include/incoming_video_stream.h"
-#include "webrtc/engine_configurations.h"
-#include "webrtc/modules/video_render/external/video_render_external_impl.h"
-#include "webrtc/modules/video_render/i_video_render.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-#include "webrtc/modules/video_render/video_render_impl.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-VideoRender*
-VideoRender::CreateVideoRender(const int32_t id,
-                               void* window,
-                               const bool fullscreen,
-                               const VideoRenderType videoRenderType/*=kRenderDefault*/)
-{
-    VideoRenderType resultVideoRenderType = videoRenderType;
-    if (videoRenderType == kRenderDefault)
-    {
-        resultVideoRenderType = kRenderExternal;
-    }
-    return new ModuleVideoRenderImpl(id, resultVideoRenderType, window,
-                                     fullscreen);
-}
-
-void VideoRender::DestroyVideoRender(
-                                                         VideoRender* module)
-{
-    if (module)
-    {
-        delete module;
-    }
-}
-
-ModuleVideoRenderImpl::ModuleVideoRenderImpl(
-                                             const int32_t id,
-                                             const VideoRenderType videoRenderType,
-                                             void* window,
-                                             const bool fullscreen) :
-    _id(id), _moduleCrit(*CriticalSectionWrapper::CreateCriticalSection()),
-    _ptrWindow(window), _fullScreen(fullscreen), _ptrRenderer(NULL)
-{
-
-    // Create platform specific renderer
-    switch (videoRenderType)
-    {
-        case kRenderExternal:
-        {
-            VideoRenderExternalImpl* ptrRenderer(NULL);
-            ptrRenderer = new VideoRenderExternalImpl(_id, videoRenderType,
-                                                      window, _fullScreen);
-            if (ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
-            }
-        }
-            break;
-        default:
-            // Error...
-            break;
-    }
-    if (_ptrRenderer)
-    {
-        if (_ptrRenderer->Init() == -1)
-        {
-        }
-    }
-}
-
-ModuleVideoRenderImpl::~ModuleVideoRenderImpl()
-{
-    delete &_moduleCrit;
-
-    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
-         it != _streamRenderMap.end();
-         ++it) {
-      delete it->second;
-    }
-
-    // Delete platform specific renderer
-    if (_ptrRenderer)
-    {
-        VideoRenderType videoRenderType = _ptrRenderer->RenderType();
-
-        switch (videoRenderType)
-        {
-            case kRenderExternal:
-            {
-                VideoRenderExternalImpl
-                        * ptrRenderer =
-                                reinterpret_cast<VideoRenderExternalImpl*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-
-            default:
-                // Error...
-                break;
-        }
-    }
-}
-
-int64_t ModuleVideoRenderImpl::TimeUntilNextProcess()
-{
-    // Not used
-    return 50;
-}
-void ModuleVideoRenderImpl::Process() {}
-
-void*
-ModuleVideoRenderImpl::Window()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-    return _ptrWindow;
-}
-
-int32_t ModuleVideoRenderImpl::ChangeWindow(void* window)
-{
-    return -1;
-}
-
-int32_t ModuleVideoRenderImpl::Id()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-    return _id;
-}
-
-uint32_t ModuleVideoRenderImpl::GetIncomingFrameRate(const uint32_t streamId) {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  IncomingVideoStreamMap::iterator it = _streamRenderMap.find(streamId);
-
-  if (it == _streamRenderMap.end()) {
-    // This stream doesn't exist
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: stream doesn't exist",
-                 __FUNCTION__);
-    return 0;
-  }
-  assert(it->second != NULL);
-  return it->second->IncomingRate();
-}
-
-VideoRenderCallback*
-ModuleVideoRenderImpl::AddIncomingRenderStream(const uint32_t streamId,
-                                               const uint32_t zOrder,
-                                               const float left,
-                                               const float top,
-                                               const float right,
-                                               const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return NULL;
-    }
-
-    if (_streamRenderMap.find(streamId) != _streamRenderMap.end()) {
-        // The stream already exists...
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream already exists", __FUNCTION__);
-        return NULL;
-    }
-
-    VideoRenderCallback* ptrRenderCallback =
-            _ptrRenderer->AddIncomingRenderStream(streamId, zOrder, left, top,
-                                                  right, bottom);
-    if (ptrRenderCallback == NULL)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: Can't create incoming stream in renderer",
-                     __FUNCTION__);
-        return NULL;
-    }
-
-    // Create platform independant code
-    IncomingVideoStream* ptrIncomingStream =
-        new IncomingVideoStream(streamId, false);
-    ptrIncomingStream->SetRenderCallback(ptrRenderCallback);
-    VideoRenderCallback* moduleCallback = ptrIncomingStream->ModuleCallback();
-
-    // Store the stream
-    _streamRenderMap[streamId] = ptrIncomingStream;
-
-    return moduleCallback;
-}
-
-int32_t ModuleVideoRenderImpl::DeleteIncomingRenderStream(
-                                                                const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-    if (item == _streamRenderMap.end())
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream doesn't exist", __FUNCTION__);
-        return -1;
-    }
-
-    delete item->second;
-
-    _ptrRenderer->DeleteIncomingRenderStream(streamId);
-
-    _streamRenderMap.erase(item);
-
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::AddExternalRenderCallback(
-    const uint32_t streamId,
-    VideoRenderCallback* renderObject) {
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream doesn't exist", __FUNCTION__);
-        return -1;
-    }
-
-    if (item->second == NULL) {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: could not get stream", __FUNCTION__);
-        return -1;
-    }
-    item->second->SetExternalCallback(renderObject);
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::GetIncomingRenderStreamProperties(
-    const uint32_t streamId,
-    uint32_t& zOrder,
-    float& left,
-    float& top,
-    float& right,
-    float& bottom) const {
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    return _ptrRenderer->GetIncomingRenderStreamProperties(streamId, zOrder,
-                                                           left, top, right,
-                                                           bottom);
-}
-
-uint32_t ModuleVideoRenderImpl::GetNumIncomingRenderStreams() const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    return static_cast<uint32_t>(_streamRenderMap.size());
-}
-
-bool ModuleVideoRenderImpl::HasIncomingRenderStream(
-    const uint32_t streamId) const {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  return _streamRenderMap.find(streamId) != _streamRenderMap.end();
-}
-
-int32_t ModuleVideoRenderImpl::RegisterRawFrameCallback(
-    const uint32_t streamId,
-    VideoRenderCallback* callbackObj) {
-  return -1;
-}
-
-int32_t ModuleVideoRenderImpl::StartRender(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    // Start the stream
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        return -1;
-    }
-
-    if (item->second->Start() == -1)
-    {
-        return -1;
-    }
-
-    // Start the HW renderer
-    if (_ptrRenderer->StartRender() == -1)
-    {
-        return -1;
-    }
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::StopRender(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s(%d): No renderer", __FUNCTION__, streamId);
-        return -1;
-    }
-
-    // Stop the incoming stream
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        return -1;
-    }
-
-    if (item->second->Stop() == -1)
-    {
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::ResetRender()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    int32_t ret = 0;
-    // Loop through all incoming streams and reset them
-    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
-         it != _streamRenderMap.end();
-         ++it) {
-      if (it->second->Reset() == -1)
-        ret = -1;
-    }
-    return ret;
-}
-
-RawVideoType ModuleVideoRenderImpl::PreferredVideoType() const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (_ptrRenderer == NULL)
-    {
-        return kVideoI420;
-    }
-
-    return _ptrRenderer->PerferedVideoType();
-}
-
-bool ModuleVideoRenderImpl::IsFullScreen()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->FullScreen();
-}
-
-int32_t ModuleVideoRenderImpl::GetScreenResolution(
-                                                         uint32_t& screenWidth,
-                                                         uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->GetScreenResolution(screenWidth, screenHeight);
-}
-
-uint32_t ModuleVideoRenderImpl::RenderFrameRate(
-                                                      const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->RenderFrameRate(streamId);
-}
-
-int32_t ModuleVideoRenderImpl::SetStreamCropping(
-                                                       const uint32_t streamId,
-                                                       const float left,
-                                                       const float top,
-                                                       const float right,
-                                                       const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->SetStreamCropping(streamId, left, top, right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetTransparentBackground(const bool enable)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->SetTransparentBackground(enable);
-}
-
-int32_t ModuleVideoRenderImpl::FullScreenRender(void* window, const bool enable)
-{
-    return -1;
-}
-
-int32_t ModuleVideoRenderImpl::SetText(
-                                             const uint8_t textId,
-                                             const uint8_t* text,
-                                             const int32_t textLength,
-                                             const uint32_t textColorRef,
-                                             const uint32_t backgroundColorRef,
-                                             const float left, const float top,
-                                             const float right,
-                                             const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-    return _ptrRenderer->SetText(textId, text, textLength, textColorRef,
-                                 backgroundColorRef, left, top, right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetBitmap(const void* bitMap,
-                                         const uint8_t pictureId,
-                                         const void* colorKey,
-                                         const float left,
-                                         const float top,
-                                         const float right,
-                                         const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-    return _ptrRenderer->SetBitmap(bitMap, pictureId, colorKey, left, top,
-                                   right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetExpectedRenderDelay(
-    uint32_t stream_id, int32_t delay_ms) {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  if (!_ptrRenderer) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: No renderer", __FUNCTION__);
-    return false;
-  }
-
-  IncomingVideoStreamMap::const_iterator item =
-      _streamRenderMap.find(stream_id);
-  if (item == _streamRenderMap.end()) {
-    // This stream doesn't exist
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s(%u, %d): stream doesn't exist", __FUNCTION__, stream_id,
-                 delay_ms);
-    return -1;
-  }
-
-  assert(item->second != NULL);
-  return item->second->SetExpectedRenderDelay(delay_ms);
-}
-
-int32_t ModuleVideoRenderImpl::ConfigureRenderer(
-                                                       const uint32_t streamId,
-                                                       const unsigned int zOrder,
-                                                       const float left,
-                                                       const float top,
-                                                       const float right,
-                                                       const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->ConfigureRenderer(streamId, zOrder, left, top, right,
-                                           bottom);
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/video_render_impl.h b/webrtc/modules/video_render/video_render_impl.h
deleted file mode 100644
index 8dfa57d..0000000
--- a/webrtc/modules/video_render/video_render_impl.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_
-
-#include <map>
-
-#include "webrtc/engine_configurations.h"
-#include "webrtc/modules/video_render/video_render.h"
-
-namespace webrtc {
-class CriticalSectionWrapper;
-class IncomingVideoStream;
-class IVideoRender;
-
-// Class definitions
-class ModuleVideoRenderImpl: public VideoRender
-{
-public:
-    /*
-     *   VideoRenderer constructor/destructor
-     */
-    ModuleVideoRenderImpl(const int32_t id,
-                          const VideoRenderType videoRenderType,
-                          void* window, const bool fullscreen);
-
-    virtual ~ModuleVideoRenderImpl();
-
-    virtual int64_t TimeUntilNextProcess();
-    virtual void Process();
-
-    /*
-     *   Returns the render window
-     */
-    virtual void* Window();
-
-    /*
-     *   Change render window
-     */
-    virtual int32_t ChangeWindow(void* window);
-
-    /*
-     *   Returns module id
-     */
-    int32_t Id();
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    /*
-     *   Add incoming render stream
-     */
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-    /*
-     *   Delete incoming render stream
-     */
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId);
-
-    /*
-     *   Add incoming render callback, used for external rendering
-     */
-    virtual int32_t
-            AddExternalRenderCallback(const uint32_t streamId,
-                                      VideoRenderCallback* renderObject);
-
-    /*
-     *   Get the porperties for an incoming render stream
-     */
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left, float& top,
-                                              float& right, float& bottom) const;
-    /*
-     *   Incoming frame rate for the specified stream.
-     */
-    virtual uint32_t GetIncomingFrameRate(const uint32_t streamId);
-
-    /*
-     *   Returns the number of incoming streams added to this render module
-     */
-    virtual uint32_t GetNumIncomingRenderStreams() const;
-
-    /*
-     *   Returns true if this render module has the streamId added, false otherwise.
-     */
-    virtual bool HasIncomingRenderStream(const uint32_t streamId) const;
-
-    /*
-     *
-     */
-    virtual int32_t
-            RegisterRawFrameCallback(const uint32_t streamId,
-                                     VideoRenderCallback* callbackObj);
-
-    virtual int32_t SetExpectedRenderDelay(uint32_t stream_id,
-                                           int32_t delay_ms);
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    /*
-     *   Starts rendering the specified stream
-     */
-    virtual int32_t StartRender(const uint32_t streamId);
-
-    /*
-     *   Stops the renderer
-     */
-    virtual int32_t StopRender(const uint32_t streamId);
-
-    /*
-     *   Sets the renderer in start state, no streams removed.
-     */
-    virtual int32_t ResetRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    /*
-     *   Returns the prefered render video type
-     */
-    virtual RawVideoType PreferredVideoType() const;
-
-    /*
-     *   Returns true if the renderer is in fullscreen mode, otherwise false.
-     */
-    virtual bool IsFullScreen();
-
-    /*
-     *   Gets screen resolution in pixels
-     */
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const;
-
-    /*
-     *   Get the actual render rate for this stream. I.e rendered frame rate,
-     *   not frames delivered to the renderer.
-     */
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    /*
-     *   Set cropping of incoming stream
-     */
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t FullScreenRender(void* window, const bool enable);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left, const float top,
-                            const float right, const float bottom);
-
-private:
-    int32_t _id;
-    CriticalSectionWrapper& _moduleCrit;
-    void* _ptrWindow;
-    bool _fullScreen;
-
-    IVideoRender* _ptrRenderer;
-    typedef std::map<uint32_t, IncomingVideoStream*> IncomingVideoStreamMap;
-    IncomingVideoStreamMap _streamRenderMap;
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_IMPL_H_
diff --git a/webrtc/modules/video_render/video_render_internal.h b/webrtc/modules/video_render/video_render_internal.h
deleted file mode 100644
index 0508c1a..0000000
--- a/webrtc/modules/video_render/video_render_internal.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_INTERNAL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_INTERNAL_H_
-
-#ifdef ANDROID
-#include <jni.h>
-
-namespace webrtc {
-
-// In order to be able to use the internal webrtc video render
-// for android, the jvm objects must be set via this method.
-int32_t SetRenderAndroidVM(JavaVM* javaVM);
-
-}  // namespace webrtc
-
-#endif  // ANDROID
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_VIDEO_RENDER_INTERNAL_H_
diff --git a/webrtc/modules/video_render/video_render_internal_impl.cc b/webrtc/modules/video_render/video_render_internal_impl.cc
deleted file mode 100644
index ac89e7f..0000000
--- a/webrtc/modules/video_render/video_render_internal_impl.cc
+++ /dev/null
@@ -1,773 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <assert.h>
-
-#include "webrtc/common_video/include/incoming_video_stream.h"
-#include "webrtc/engine_configurations.h"
-#include "webrtc/modules/video_render/i_video_render.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-#include "webrtc/modules/video_render/video_render_impl.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-#if defined (_WIN32)
-#include "webrtc/modules/video_render/windows/video_render_windows_impl.h"
-#define STANDARD_RENDERING kRenderWindows
-
-// WEBRTC_IOS should go before WEBRTC_MAC because WEBRTC_MAC
-// gets defined if WEBRTC_IOS is defined
-#elif defined(WEBRTC_IOS)
-#define STANDARD_RENDERING kRenderiOS
-#include "webrtc/modules/video_render/ios/video_render_ios_impl.h"
-#elif defined(WEBRTC_MAC)
-#if defined(COCOA_RENDERING)
-#define STANDARD_RENDERING kRenderCocoa
-#include "webrtc/modules/video_render/mac/video_render_mac_cocoa_impl.h"
-#elif defined(CARBON_RENDERING)
-#define STANDARD_RENDERING kRenderCarbon
-#include "webrtc/modules/video_render/mac/video_render_mac_carbon_impl.h"
-#endif
-
-#elif defined(WEBRTC_ANDROID)
-#include "webrtc/modules/video_render/android/video_render_android_impl.h"
-#include "webrtc/modules/video_render/android/video_render_android_native_opengl2.h"
-#include "webrtc/modules/video_render/android/video_render_android_surface_view.h"
-#define STANDARD_RENDERING kRenderAndroid
-
-#elif defined(WEBRTC_LINUX)
-#include "webrtc/modules/video_render/linux/video_render_linux_impl.h"
-#define STANDARD_RENDERING kRenderX11
-
-#else
-//Other platforms
-#endif
-
-// For external rendering
-#include "webrtc/modules/video_render/external/video_render_external_impl.h"
-#ifndef STANDARD_RENDERING
-#define STANDARD_RENDERING kRenderExternal
-#endif  // STANDARD_RENDERING
-
-namespace webrtc {
-
-VideoRender*
-VideoRender::CreateVideoRender(const int32_t id,
-                               void* window,
-                               const bool fullscreen,
-                               const VideoRenderType videoRenderType/*=kRenderDefault*/)
-{
-    VideoRenderType resultVideoRenderType = videoRenderType;
-    if (videoRenderType == kRenderDefault)
-    {
-        resultVideoRenderType = STANDARD_RENDERING;
-    }
-    return new ModuleVideoRenderImpl(id, resultVideoRenderType, window,
-                                     fullscreen);
-}
-
-void VideoRender::DestroyVideoRender(
-                                                         VideoRender* module)
-{
-    if (module)
-    {
-        delete module;
-    }
-}
-
-ModuleVideoRenderImpl::ModuleVideoRenderImpl(
-                                             const int32_t id,
-                                             const VideoRenderType videoRenderType,
-                                             void* window,
-                                             const bool fullscreen) :
-    _id(id), _moduleCrit(*CriticalSectionWrapper::CreateCriticalSection()),
-    _ptrWindow(window), _fullScreen(fullscreen), _ptrRenderer(NULL)
-{
-
-    // Create platform specific renderer
-    switch (videoRenderType)
-    {
-#if defined(_WIN32)
-        case kRenderWindows:
-        {
-            VideoRenderWindowsImpl* ptrRenderer;
-            ptrRenderer = new VideoRenderWindowsImpl(_id, videoRenderType, window, _fullScreen);
-            if (ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-            }
-        }
-        break;
-
-#elif defined(WEBRTC_IOS)
-        case kRenderiOS:
-        {
-            VideoRenderIosImpl* ptrRenderer = new VideoRenderIosImpl(_id, window, _fullScreen);
-            if(ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-            }
-        }
-        break;
-
-#elif defined(WEBRTC_MAC)
-
-#if defined(COCOA_RENDERING)
-        case kRenderCocoa:
-        {
-            VideoRenderMacCocoaImpl* ptrRenderer = new VideoRenderMacCocoaImpl(_id, videoRenderType, window, _fullScreen);
-            if(ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-            }
-        }
-
-        break;
-#elif defined(CARBON_RENDERING)
-        case kRenderCarbon:
-        {
-            VideoRenderMacCarbonImpl* ptrRenderer = new VideoRenderMacCarbonImpl(_id, videoRenderType, window, _fullScreen);
-            if(ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-            }
-        }
-        break;
-#endif
-
-#elif defined(WEBRTC_ANDROID)
-        case kRenderAndroid:
-        {
-            if(AndroidNativeOpenGl2Renderer::UseOpenGL2(window))
-            {
-                AndroidNativeOpenGl2Renderer* ptrRenderer = NULL;
-                ptrRenderer = new AndroidNativeOpenGl2Renderer(_id, videoRenderType, window, _fullScreen);
-                if (ptrRenderer)
-                {
-                    _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
-                }
-            }
-            else
-            {
-                AndroidSurfaceViewRenderer* ptrRenderer = NULL;
-                ptrRenderer = new AndroidSurfaceViewRenderer(_id, videoRenderType, window, _fullScreen);
-                if (ptrRenderer)
-                {
-                    _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
-                }
-            }
-
-        }
-        break;
-#elif defined(WEBRTC_LINUX)
-        case kRenderX11:
-        {
-            VideoRenderLinuxImpl* ptrRenderer = NULL;
-            ptrRenderer = new VideoRenderLinuxImpl(_id, videoRenderType, window, _fullScreen);
-            if ( ptrRenderer )
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
-            }
-        }
-        break;
-
-#else
-        // Other platforms
-#endif
-        case kRenderExternal:
-        {
-            VideoRenderExternalImpl* ptrRenderer(NULL);
-            ptrRenderer = new VideoRenderExternalImpl(_id, videoRenderType,
-                                                      window, _fullScreen);
-            if (ptrRenderer)
-            {
-                _ptrRenderer = reinterpret_cast<IVideoRender*> (ptrRenderer);
-            }
-        }
-            break;
-        default:
-            // Error...
-            break;
-    }
-    if (_ptrRenderer)
-    {
-        if (_ptrRenderer->Init() == -1)
-        {
-        }
-    }
-}
-
-ModuleVideoRenderImpl::~ModuleVideoRenderImpl()
-{
-    delete &_moduleCrit;
-
-    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
-         it != _streamRenderMap.end();
-         ++it) {
-      delete it->second;
-    }
-
-    // Delete platform specific renderer
-    if (_ptrRenderer)
-    {
-        VideoRenderType videoRenderType = _ptrRenderer->RenderType();
-
-        switch (videoRenderType)
-        {
-            case kRenderExternal:
-            {
-                VideoRenderExternalImpl
-                        * ptrRenderer =
-                                reinterpret_cast<VideoRenderExternalImpl*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-#if defined(_WIN32)
-            case kRenderWindows:
-            {
-                VideoRenderWindowsImpl* ptrRenderer = reinterpret_cast<VideoRenderWindowsImpl*>(_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-#elif defined(WEBRTC_IOS)
-            case kRenderiOS:
-            {
-              VideoRenderIosImpl* ptrRenderer = reinterpret_cast<VideoRenderIosImpl*> (_ptrRenderer);
-              _ptrRenderer = NULL;
-              delete ptrRenderer;
-            }
-            break;
-#elif defined(WEBRTC_MAC)
-
-#if defined(COCOA_RENDERING)
-            case kRenderCocoa:
-            {
-                VideoRenderMacCocoaImpl* ptrRenderer = reinterpret_cast<VideoRenderMacCocoaImpl*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-#elif defined(CARBON_RENDERING)
-            case kRenderCarbon:
-            {
-                VideoRenderMacCarbonImpl* ptrRenderer = reinterpret_cast<VideoRenderMacCarbonImpl*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-#endif
-
-#elif defined(WEBRTC_ANDROID)
-            case kRenderAndroid:
-            {
-                VideoRenderAndroid* ptrRenderer = reinterpret_cast<VideoRenderAndroid*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-
-#elif defined(WEBRTC_LINUX)
-            case kRenderX11:
-            {
-                VideoRenderLinuxImpl* ptrRenderer = reinterpret_cast<VideoRenderLinuxImpl*> (_ptrRenderer);
-                _ptrRenderer = NULL;
-                delete ptrRenderer;
-            }
-            break;
-#else
-            //other platforms
-#endif
-
-            default:
-                // Error...
-                break;
-        }
-    }
-}
-
-int64_t ModuleVideoRenderImpl::TimeUntilNextProcess()
-{
-    // Not used
-    return 50;
-}
-void ModuleVideoRenderImpl::Process() {}
-
-void*
-ModuleVideoRenderImpl::Window()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-    return _ptrWindow;
-}
-
-int32_t ModuleVideoRenderImpl::ChangeWindow(void* window)
-{
-
-    CriticalSectionScoped cs(&_moduleCrit);
-
-#if defined(WEBRTC_IOS) // WEBRTC_IOS must go before WEBRTC_MAC
-    _ptrRenderer = NULL;
-    delete _ptrRenderer;
-
-    VideoRenderIosImpl* ptrRenderer;
-    ptrRenderer = new VideoRenderIosImpl(_id, window, _fullScreen);
-    if (!ptrRenderer)
-    {
-        return -1;
-    }
-    _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-    return _ptrRenderer->ChangeWindow(window);
-#elif defined(WEBRTC_MAC)
-
-    _ptrRenderer = NULL;
-    delete _ptrRenderer;
-
-#if defined(COCOA_RENDERING)
-    VideoRenderMacCocoaImpl* ptrRenderer;
-    ptrRenderer = new VideoRenderMacCocoaImpl(_id, kRenderCocoa, window, _fullScreen);
-#elif defined(CARBON_RENDERING)
-    VideoRenderMacCarbonImpl* ptrRenderer;
-    ptrRenderer = new VideoRenderMacCarbonImpl(_id, kRenderCarbon, window, _fullScreen);
-#endif
-    if (!ptrRenderer)
-    {
-        return -1;
-    }
-    _ptrRenderer = reinterpret_cast<IVideoRender*>(ptrRenderer);
-    return _ptrRenderer->ChangeWindow(window);
-
-#else
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-    return _ptrRenderer->ChangeWindow(window);
-
-#endif
-}
-
-int32_t ModuleVideoRenderImpl::Id()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-    return _id;
-}
-
-uint32_t ModuleVideoRenderImpl::GetIncomingFrameRate(const uint32_t streamId) {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  IncomingVideoStreamMap::iterator it = _streamRenderMap.find(streamId);
-
-  if (it == _streamRenderMap.end()) {
-    // This stream doesn't exist
-    WEBRTC_TRACE(kTraceError,
-                 kTraceVideoRenderer,
-                 _id,
-                 "%s: stream doesn't exist",
-                 __FUNCTION__);
-    return 0;
-  }
-  assert(it->second != NULL);
-  return it->second->IncomingRate();
-}
-
-VideoRenderCallback*
-ModuleVideoRenderImpl::AddIncomingRenderStream(const uint32_t streamId,
-                                               const uint32_t zOrder,
-                                               const float left,
-                                               const float top,
-                                               const float right,
-                                               const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return NULL;
-    }
-
-    if (_streamRenderMap.find(streamId) != _streamRenderMap.end()) {
-        // The stream already exists...
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream already exists", __FUNCTION__);
-        return NULL;
-    }
-
-    VideoRenderCallback* ptrRenderCallback =
-            _ptrRenderer->AddIncomingRenderStream(streamId, zOrder, left, top,
-                                                  right, bottom);
-    if (ptrRenderCallback == NULL)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: Can't create incoming stream in renderer",
-                     __FUNCTION__);
-        return NULL;
-    }
-
-    // Create platform independant code
-    IncomingVideoStream* ptrIncomingStream =
-        new IncomingVideoStream(streamId, false);
-    ptrIncomingStream->SetRenderCallback(ptrRenderCallback);
-    VideoRenderCallback* moduleCallback = ptrIncomingStream->ModuleCallback();
-
-    // Store the stream
-    _streamRenderMap[streamId] = ptrIncomingStream;
-
-    return moduleCallback;
-}
-
-int32_t ModuleVideoRenderImpl::DeleteIncomingRenderStream(
-                                                                const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-    if (item == _streamRenderMap.end())
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream doesn't exist", __FUNCTION__);
-        return -1;
-    }
-
-    delete item->second;
-
-    _ptrRenderer->DeleteIncomingRenderStream(streamId);
-
-    _streamRenderMap.erase(item);
-
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::AddExternalRenderCallback(
-    const uint32_t streamId,
-    VideoRenderCallback* renderObject) {
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream doesn't exist", __FUNCTION__);
-        return -1;
-    }
-
-    if (item->second == NULL) {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: could not get stream", __FUNCTION__);
-        return -1;
-    }
-    item->second->SetExternalCallback(renderObject);
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::GetIncomingRenderStreamProperties(
-    const uint32_t streamId,
-    uint32_t& zOrder,
-    float& left,
-    float& top,
-    float& right,
-    float& bottom) const {
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    return _ptrRenderer->GetIncomingRenderStreamProperties(streamId, zOrder,
-                                                           left, top, right,
-                                                           bottom);
-}
-
-uint32_t ModuleVideoRenderImpl::GetNumIncomingRenderStreams() const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    return static_cast<uint32_t>(_streamRenderMap.size());
-}
-
-bool ModuleVideoRenderImpl::HasIncomingRenderStream(
-    const uint32_t streamId) const {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  return _streamRenderMap.find(streamId) != _streamRenderMap.end();
-}
-
-int32_t ModuleVideoRenderImpl::RegisterRawFrameCallback(
-    const uint32_t streamId,
-    VideoRenderCallback* callbackObj) {
-  return -1;
-}
-
-int32_t ModuleVideoRenderImpl::StartRender(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-
-    // Start the stream
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        return -1;
-    }
-
-    if (item->second->Start() == -1)
-    {
-        return -1;
-    }
-
-    // Start the HW renderer
-    if (_ptrRenderer->StartRender() == -1)
-    {
-        return -1;
-    }
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::StopRender(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s(%d): No renderer", __FUNCTION__, streamId);
-        return -1;
-    }
-
-    // Stop the incoming stream
-    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
-
-    if (item == _streamRenderMap.end())
-    {
-        return -1;
-    }
-
-    if (item->second->Stop() == -1)
-    {
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t ModuleVideoRenderImpl::ResetRender()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    int32_t ret = 0;
-    // Loop through all incoming streams and reset them
-    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
-         it != _streamRenderMap.end();
-         ++it) {
-      if (it->second->Reset() == -1)
-        ret = -1;
-    }
-    return ret;
-}
-
-RawVideoType ModuleVideoRenderImpl::PreferredVideoType() const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (_ptrRenderer == NULL)
-    {
-        return kVideoI420;
-    }
-
-    return _ptrRenderer->PerferedVideoType();
-}
-
-bool ModuleVideoRenderImpl::IsFullScreen()
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->FullScreen();
-}
-
-int32_t ModuleVideoRenderImpl::GetScreenResolution(
-                                                         uint32_t& screenWidth,
-                                                         uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->GetScreenResolution(screenWidth, screenHeight);
-}
-
-uint32_t ModuleVideoRenderImpl::RenderFrameRate(
-                                                      const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->RenderFrameRate(streamId);
-}
-
-int32_t ModuleVideoRenderImpl::SetStreamCropping(
-                                                       const uint32_t streamId,
-                                                       const float left,
-                                                       const float top,
-                                                       const float right,
-                                                       const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->SetStreamCropping(streamId, left, top, right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetTransparentBackground(const bool enable)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->SetTransparentBackground(enable);
-}
-
-int32_t ModuleVideoRenderImpl::FullScreenRender(void* window, const bool enable)
-{
-    return -1;
-}
-
-int32_t ModuleVideoRenderImpl::SetText(
-                                             const uint8_t textId,
-                                             const uint8_t* text,
-                                             const int32_t textLength,
-                                             const uint32_t textColorRef,
-                                             const uint32_t backgroundColorRef,
-                                             const float left, const float top,
-                                             const float right,
-                                             const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-    return _ptrRenderer->SetText(textId, text, textLength, textColorRef,
-                                 backgroundColorRef, left, top, right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetBitmap(const void* bitMap,
-                                         const uint8_t pictureId,
-                                         const void* colorKey,
-                                         const float left,
-                                         const float top,
-                                         const float right,
-                                         const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return -1;
-    }
-    return _ptrRenderer->SetBitmap(bitMap, pictureId, colorKey, left, top,
-                                   right, bottom);
-}
-
-int32_t ModuleVideoRenderImpl::SetExpectedRenderDelay(
-    uint32_t stream_id, int32_t delay_ms) {
-  CriticalSectionScoped cs(&_moduleCrit);
-
-  if (!_ptrRenderer) {
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s: No renderer", __FUNCTION__);
-    return false;
-  }
-
-  IncomingVideoStreamMap::const_iterator item =
-      _streamRenderMap.find(stream_id);
-  if (item == _streamRenderMap.end()) {
-    // This stream doesn't exist
-    WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                 "%s(%u, %d): stream doesn't exist", __FUNCTION__, stream_id,
-                 delay_ms);
-    return -1;
-  }
-
-  assert(item->second != NULL);
-  return item->second->SetExpectedRenderDelay(delay_ms);
-}
-
-int32_t ModuleVideoRenderImpl::ConfigureRenderer(
-                                                       const uint32_t streamId,
-                                                       const unsigned int zOrder,
-                                                       const float left,
-                                                       const float top,
-                                                       const float right,
-                                                       const float bottom)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
-
-    if (!_ptrRenderer)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: No renderer", __FUNCTION__);
-        return false;
-    }
-    return _ptrRenderer->ConfigureRenderer(streamId, zOrder, left, top, right,
-                                           bottom);
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/windows/i_video_render_win.h b/webrtc/modules/video_render/windows/i_video_render_win.h
deleted file mode 100644
index 6dbb4fd..0000000
--- a/webrtc/modules/video_render/windows/i_video_render_win.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
-
-#include "webrtc/modules/video_render/video_render.h"
-
-namespace webrtc {
-
-// Class definitions
-class IVideoRenderWin
-{
-public:
-    /**************************************************************************
-     *
-     *   Constructor/destructor
-     *
-     ***************************************************************************/
-    virtual ~IVideoRenderWin()
-    {
-    };
-
-    virtual int32_t Init() = 0;
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderCallback
-            * CreateChannel(const uint32_t streamId,
-                            const uint32_t zOrder,
-                            const float left,
-                            const float top,
-                            const float right,
-                            const float bottom) = 0;
-
-    virtual int32_t DeleteChannel(const uint32_t streamId) = 0;
-
-    virtual int32_t GetStreamSettings(const uint32_t channel,
-                                      const uint16_t streamId,
-                                      uint32_t& zOrder,
-                                      float& left, float& top,
-                                      float& right, float& bottom) = 0;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender() = 0;
-
-    virtual int32_t StopRender() = 0;
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual bool IsFullScreen() = 0;
-
-    virtual int32_t SetCropping(const uint32_t channel,
-                                const uint16_t streamId,
-                                const float left, const float top,
-                                const float right, const float bottom) = 0;
-
-    virtual int32_t ConfigureRenderer(const uint32_t channel,
-                                      const uint16_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left,
-                                      const float top,
-                                      const float right,
-                                      const float bottom) = 0;
-
-    virtual int32_t SetTransparentBackground(const bool enable) = 0;
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t colorText,
-                            const uint32_t colorBg,
-                            const float left, const float top,
-                            const float rigth, const float bottom) = 0;
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom) = 0;
-
-    virtual int32_t ChangeWindow(void* window) = 0;
-
-    virtual int32_t GetGraphicsMemory(uint64_t& totalMemory,
-                                      uint64_t& availableMemory) = 0;
-
-};
-
-}  // namespace webrtc
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_I_VIDEO_RENDER_WIN_H_
diff --git a/webrtc/modules/video_render/windows/video_render_direct3d9.cc b/webrtc/modules/video_render/windows/video_render_direct3d9.cc
deleted file mode 100644
index b59b944..0000000
--- a/webrtc/modules/video_render/windows/video_render_direct3d9.cc
+++ /dev/null
@@ -1,1160 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-// Own include file
-#include "webrtc/modules/video_render/windows/video_render_direct3d9.h"
-
-// System include files
-#include <windows.h>
-
-// WebRtc include files
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc {
-
-// A structure for our custom vertex type
-struct CUSTOMVERTEX
-{
-    FLOAT x, y, z;
-    DWORD color; // The vertex color
-    FLOAT u, v;
-};
-
-// Our custom FVF, which describes our custom vertex structure
-#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
-
-/*
- *
- *    D3D9Channel
- *
- */
-D3D9Channel::D3D9Channel(LPDIRECT3DDEVICE9 pd3DDevice,
-                                 CriticalSectionWrapper* critSect,
-                                 Trace* trace) :
-    _width(0),
-    _height(0),
-    _pd3dDevice(pd3DDevice),
-    _pTexture(NULL),
-    _bufferIsUpdated(false),
-    _critSect(critSect),
-    _streamId(0),
-    _zOrder(0),
-    _startWidth(0),
-    _startHeight(0),
-    _stopWidth(0),
-    _stopHeight(0)
-{
-
-}
-
-D3D9Channel::~D3D9Channel()
-{
-    //release the texture
-    if (_pTexture != NULL)
-    {
-        _pTexture->Release();
-        _pTexture = NULL;
-    }
-}
-
-void D3D9Channel::SetStreamSettings(uint16_t streamId,
-                                        uint32_t zOrder,
-                                        float startWidth,
-                                        float startHeight,
-                                        float stopWidth,
-                                        float stopHeight)
-{
-    _streamId = streamId;
-    _zOrder = zOrder;
-    _startWidth = startWidth;
-    _startHeight = startHeight;
-    _stopWidth = stopWidth;
-    _stopHeight = stopHeight;
-}
-
-int D3D9Channel::GetStreamSettings(uint16_t streamId,
-                                       uint32_t& zOrder,
-                                       float& startWidth,
-                                       float& startHeight,
-                                       float& stopWidth,
-                                       float& stopHeight)
-{
-    streamId = _streamId;
-    zOrder = _zOrder;
-    startWidth = _startWidth;
-    startHeight = _startHeight;
-    stopWidth = _stopWidth;
-    stopHeight = _stopHeight;
-    return 0;
-}
-
-int D3D9Channel::GetTextureWidth()
-{
-    return _width;
-}
-
-int D3D9Channel::GetTextureHeight()
-{
-    return _height;
-}
-
-// Called from video engine when a the frame size changed
-int D3D9Channel::FrameSizeChange(int width, int height, int numberOfStreams)
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideo, -1,
-                 "FrameSizeChange, wifth: %d, height: %d, streams: %d", width,
-                 height, numberOfStreams);
-
-    CriticalSectionScoped cs(_critSect);
-    _width = width;
-    _height = height;
-
-    //clean the previous texture
-    if (_pTexture != NULL)
-    {
-        _pTexture->Release();
-        _pTexture = NULL;
-    }
-
-    HRESULT ret = E_POINTER;
-
-    if (_pd3dDevice)
-      ret = _pd3dDevice->CreateTexture(_width, _height, 1, 0, D3DFMT_A8R8G8B8,
-                                       D3DPOOL_MANAGED, &_pTexture, NULL);
-
-    if (FAILED(ret))
-    {
-        _pTexture = NULL;
-        return -1;
-    }
-
-    return 0;
-}
-
-int32_t D3D9Channel::RenderFrame(const uint32_t streamId,
-                                 const VideoFrame& videoFrame) {
-    CriticalSectionScoped cs(_critSect);
-    if (_width != videoFrame.width() || _height != videoFrame.height())
-    {
-        if (FrameSizeChange(videoFrame.width(), videoFrame.height(), 1) == -1)
-        {
-            return -1;
-        }
-    }
-    return DeliverFrame(videoFrame);
-}
-
-// Called from video engine when a new frame should be rendered.
-int D3D9Channel::DeliverFrame(const VideoFrame& videoFrame) {
-  WEBRTC_TRACE(kTraceStream, kTraceVideo, -1,
-               "DeliverFrame to D3D9Channel");
-
-  CriticalSectionScoped cs(_critSect);
-
-  // FIXME if _bufferIsUpdated is still true (not be renderred), do we want to
-  // update the texture? probably not
-  if (_bufferIsUpdated) {
-    WEBRTC_TRACE(kTraceStream, kTraceVideo, -1,
-                 "Last frame hasn't been rendered yet. Drop this frame.");
-    return -1;
-  }
-
-  if (!_pd3dDevice) {
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                 "D3D for rendering not initialized.");
-    return -1;
-  }
-
-  if (!_pTexture) {
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                 "Texture for rendering not initialized.");
-    return -1;
-  }
-
-  D3DLOCKED_RECT lr;
-
-  if (FAILED(_pTexture->LockRect(0, &lr, NULL, 0))) {
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                 "Failed to lock a texture in D3D9 Channel.");
-    return -1;
-  }
-  UCHAR* pRect = (UCHAR*) lr.pBits;
-
-  ConvertFromI420(videoFrame, kARGB, 0, pRect);
-
-  if (FAILED(_pTexture->UnlockRect(0))) {
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                 "Failed to unlock a texture in D3D9 Channel.");
-    return -1;
-  }
-
-  _bufferIsUpdated = true;
-  return 0;
-}
-
-// Called by d3d channel owner to indicate the frame/texture has been rendered off
-int D3D9Channel::RenderOffFrame()
-{
-    WEBRTC_TRACE(kTraceStream, kTraceVideo, -1,
-                 "Frame has been rendered to the screen.");
-    CriticalSectionScoped cs(_critSect);
-    _bufferIsUpdated = false;
-    return 0;
-}
-
-// Called by d3d channel owner to check if the texture is updated
-int D3D9Channel::IsUpdated(bool& isUpdated)
-{
-    CriticalSectionScoped cs(_critSect);
-    isUpdated = _bufferIsUpdated;
-    return 0;
-}
-
-// Called by d3d channel owner to get the texture
-LPDIRECT3DTEXTURE9 D3D9Channel::GetTexture()
-{
-    CriticalSectionScoped cs(_critSect);
-    return _pTexture;
-}
-
-int D3D9Channel::ReleaseTexture()
-{
-    CriticalSectionScoped cs(_critSect);
-
-    //release the texture
-    if (_pTexture != NULL)
-    {
-        _pTexture->Release();
-        _pTexture = NULL;
-    }
-    _pd3dDevice = NULL;
-    return 0;
-}
-
-int D3D9Channel::RecreateTexture(LPDIRECT3DDEVICE9 pd3DDevice)
-{
-    CriticalSectionScoped cs(_critSect);
-
-    _pd3dDevice = pd3DDevice;
-
-    if (_pTexture != NULL)
-    {
-        _pTexture->Release();
-        _pTexture = NULL;
-    }
-
-    HRESULT ret;
-
-    ret = _pd3dDevice->CreateTexture(_width, _height, 1, 0, D3DFMT_A8R8G8B8,
-                                     D3DPOOL_MANAGED, &_pTexture, NULL);
-
-    if (FAILED(ret))
-    {
-        _pTexture = NULL;
-        return -1;
-    }
-
-    return 0;
-}
-
-/*
- *
- *    VideoRenderDirect3D9
- *
- */
-VideoRenderDirect3D9::VideoRenderDirect3D9(Trace* trace,
-                                                   HWND hWnd,
-                                                   bool fullScreen) :
-    _refD3DCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
-    _trace(trace),
-    _hWnd(hWnd),
-    _fullScreen(fullScreen),
-    _pTextureLogo(NULL),
-    _pVB(NULL),
-    _pd3dDevice(NULL),
-    _pD3D(NULL),
-    _d3dChannels(),
-    _d3dZorder(),
-    _screenUpdateEvent(NULL),
-    _logoLeft(0),
-    _logoTop(0),
-    _logoRight(0),
-    _logoBottom(0),
-    _pd3dSurface(NULL),
-    _totalMemory(0),
-    _availableMemory(0)
-{
-    _screenUpdateThread.reset(new rtc::PlatformThread(
-        ScreenUpdateThreadProc, this, "ScreenUpdateThread"));
-    _screenUpdateEvent = EventTimerWrapper::Create();
-    SetRect(&_originalHwndRect, 0, 0, 0, 0);
-}
-
-VideoRenderDirect3D9::~VideoRenderDirect3D9()
-{
-    //NOTE: we should not enter CriticalSection in here!
-
-    // Signal event to exit thread, then delete it
-    rtc::PlatformThread* tmpPtr = _screenUpdateThread.release();
-    if (tmpPtr)
-    {
-        _screenUpdateEvent->Set();
-        _screenUpdateEvent->StopTimer();
-
-        tmpPtr->Stop();
-        delete tmpPtr;
-    }
-    delete _screenUpdateEvent;
-
-    //close d3d device
-    CloseDevice();
-
-    // Delete all channels
-    std::map<int, D3D9Channel*>::iterator it = _d3dChannels.begin();
-    while (it != _d3dChannels.end())
-    {
-        delete it->second;
-        it = _d3dChannels.erase(it);
-    }
-    // Clean the zOrder map
-    _d3dZorder.clear();
-
-    if (_fullScreen)
-    {
-        // restore hwnd to original size and position
-        ::SetWindowPos(_hWnd, HWND_NOTOPMOST, _originalHwndRect.left,
-                       _originalHwndRect.top, _originalHwndRect.right
-                               - _originalHwndRect.left,
-                       _originalHwndRect.bottom - _originalHwndRect.top,
-                       SWP_FRAMECHANGED);
-        ::RedrawWindow(_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW
-                | RDW_ERASE);
-        ::RedrawWindow(NULL, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW
-                | RDW_ERASE);
-    }
-
-    delete &_refD3DCritsect;
-}
-
-DWORD VideoRenderDirect3D9::GetVertexProcessingCaps()
-{
-    D3DCAPS9 caps;
-    DWORD dwVertexProcessing = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
-    if (SUCCEEDED(_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
-                                       &caps)))
-    {
-        if ((caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
-                == D3DDEVCAPS_HWTRANSFORMANDLIGHT)
-        {
-            dwVertexProcessing = D3DCREATE_HARDWARE_VERTEXPROCESSING;
-        }
-    }
-    return dwVertexProcessing;
-}
-
-int VideoRenderDirect3D9::InitializeD3D(HWND hWnd,
-                                            D3DPRESENT_PARAMETERS* pd3dpp)
-{
-    // initialize Direct3D
-    if (NULL == (_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
-    {
-        return -1;
-    }
-
-    // determine what type of vertex processing to use based on the device capabilities
-    DWORD dwVertexProcessing = GetVertexProcessingCaps();
-
-    // get the display mode
-    D3DDISPLAYMODE d3ddm;
-    _pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
-    pd3dpp->BackBufferFormat = d3ddm.Format;
-
-    // create the D3D device
-    if (FAILED(_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
-                                   dwVertexProcessing | D3DCREATE_MULTITHREADED
-                                           | D3DCREATE_FPU_PRESERVE, pd3dpp,
-                                   &_pd3dDevice)))
-    {
-        //try the ref device
-        if (FAILED(_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF,
-                                       hWnd, dwVertexProcessing
-                                               | D3DCREATE_MULTITHREADED
-                                               | D3DCREATE_FPU_PRESERVE,
-                                       pd3dpp, &_pd3dDevice)))
-        {
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-int VideoRenderDirect3D9::ResetDevice()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideo, -1,
-                 "VideoRenderDirect3D9::ResetDevice");
-
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-    //release the channel texture
-    std::map<int, D3D9Channel*>::iterator it;
-    it = _d3dChannels.begin();
-    while (it != _d3dChannels.end())
-    {
-        if (it->second)
-        {
-            it->second->ReleaseTexture();
-        }
-        it++;
-    }
-
-    //close d3d device
-    if (CloseDevice() != 0)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "VideoRenderDirect3D9::ResetDevice failed to CloseDevice");
-        return -1;
-    }
-
-    //reinit d3d device
-    if (InitDevice() != 0)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "VideoRenderDirect3D9::ResetDevice failed to InitDevice");
-        return -1;
-    }
-
-    //recreate channel texture
-    it = _d3dChannels.begin();
-    while (it != _d3dChannels.end())
-    {
-        if (it->second)
-        {
-            it->second->RecreateTexture(_pd3dDevice);
-        }
-        it++;
-    }
-
-    return 0;
-}
-
-int VideoRenderDirect3D9::InitDevice()
-{
-    // Set up the structure used to create the D3DDevice
-    ZeroMemory(&_d3dpp, sizeof(_d3dpp));
-    _d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
-    _d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
-    if (GetWindowRect(_hWnd, &_originalHwndRect) == 0)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "VideoRenderDirect3D9::InitDevice Could not get window size");
-        return -1;
-    }
-    if (!_fullScreen)
-    {
-        _winWidth = _originalHwndRect.right - _originalHwndRect.left;
-        _winHeight = _originalHwndRect.bottom - _originalHwndRect.top;
-        _d3dpp.Windowed = TRUE;
-        _d3dpp.BackBufferHeight = 0;
-        _d3dpp.BackBufferWidth = 0;
-    }
-    else
-    {
-        _winWidth = (LONG) ::GetSystemMetrics(SM_CXSCREEN);
-        _winHeight = (LONG) ::GetSystemMetrics(SM_CYSCREEN);
-        _d3dpp.Windowed = FALSE;
-        _d3dpp.BackBufferWidth = _winWidth;
-        _d3dpp.BackBufferHeight = _winHeight;
-        _d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
-    }
-
-    if (InitializeD3D(_hWnd, &_d3dpp) == -1)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "VideoRenderDirect3D9::InitDevice failed in InitializeD3D");
-        return -1;
-    }
-
-    // Turn off culling, so we see the front and back of the triangle
-    _pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
-
-    // Turn off D3D lighting, since we are providing our own vertex colors
-    _pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
-
-    // Settings for alpha blending
-    _pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
-    _pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
-    _pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
-
-    _pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
-    _pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
-    _pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );
-
-    // Initialize Vertices
-    CUSTOMVERTEX Vertices[] = {
-            //front
-            { -1.0f, -1.0f, 0.0f, 0xffffffff, 0, 1 }, { -1.0f, 1.0f, 0.0f,
-                    0xffffffff, 0, 0 },
-            { 1.0f, -1.0f, 0.0f, 0xffffffff, 1, 1 }, { 1.0f, 1.0f, 0.0f,
-                    0xffffffff, 1, 0 } };
-
-    // Create the vertex buffer.
-    if (FAILED(_pd3dDevice->CreateVertexBuffer(sizeof(Vertices), 0,
-                                               D3DFVF_CUSTOMVERTEX,
-                                               D3DPOOL_DEFAULT, &_pVB, NULL )))
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Failed to create the vertex buffer.");
-        return -1;
-    }
-
-    // Now we fill the vertex buffer.
-    VOID* pVertices;
-    if (FAILED(_pVB->Lock(0, sizeof(Vertices), (void**) &pVertices, 0)))
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Failed to lock the vertex buffer.");
-        return -1;
-    }
-    memcpy(pVertices, Vertices, sizeof(Vertices));
-    _pVB->Unlock();
-
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::Init()
-{
-    WEBRTC_TRACE(kTraceInfo, kTraceVideo, -1,
-                 "VideoRenderDirect3D9::Init");
-
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-    // Start rendering thread...
-    if (!_screenUpdateThread)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Thread not created");
-        return -1;
-    }
-    _screenUpdateThread->Start();
-    _screenUpdateThread->SetPriority(rtc::kRealtimePriority);
-
-    // Start the event triggering the render process
-    unsigned int monitorFreq = 60;
-    DEVMODE dm;
-    // initialize the DEVMODE structure
-    ZeroMemory(&dm, sizeof(dm));
-    dm.dmSize = sizeof(dm);
-    if (0 != EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm))
-    {
-        monitorFreq = dm.dmDisplayFrequency;
-    }
-    _screenUpdateEvent->StartTimer(true, 1000 / monitorFreq);
-
-    return InitDevice();
-}
-
-int32_t VideoRenderDirect3D9::ChangeWindow(void* window)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return -1;
-}
-
-int VideoRenderDirect3D9::UpdateRenderSurface()
-{
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-    // Check if there are any updated buffers
-    bool updated = false;
-    std::map<int, D3D9Channel*>::iterator it;
-    it = _d3dChannels.begin();
-    while (it != _d3dChannels.end())
-    {
-
-        D3D9Channel* channel = it->second;
-        channel->IsUpdated(updated);
-        if (updated)
-        {
-            break;
-        }
-        it++;
-    }
-    //nothing is updated, continue
-    if (!updated)
-        return -1;
-
-    // Clear the backbuffer to a black color
-    _pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f,
-                       0);
-
-    // Begin the scene
-    if (SUCCEEDED(_pd3dDevice->BeginScene()))
-    {
-        _pd3dDevice->SetStreamSource(0, _pVB, 0, sizeof(CUSTOMVERTEX));
-        _pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
-
-        //draw all the channels
-        //get texture from the channels
-        LPDIRECT3DTEXTURE9 textureFromChannel = NULL;
-        DWORD textureWidth, textureHeight;
-
-        std::multimap<int, unsigned int>::reverse_iterator it;
-        it = _d3dZorder.rbegin();
-        while (it != _d3dZorder.rend())
-        {
-            // loop through all channels and streams in Z order
-            int channel = it->second & 0x0000ffff;
-
-            std::map<int, D3D9Channel*>::iterator ddIt;
-            ddIt = _d3dChannels.find(channel);
-            if (ddIt != _d3dChannels.end())
-            {
-                // found the channel
-                D3D9Channel* channelObj = ddIt->second;
-                if (channelObj)
-                {
-                    textureFromChannel = channelObj->GetTexture();
-                    textureWidth = channelObj->GetTextureWidth();
-                    textureHeight = channelObj->GetTextureHeight();
-
-                    uint32_t zOrder;
-                    float startWidth, startHeight, stopWidth, stopHeight;
-                    channelObj->GetStreamSettings(0, zOrder, startWidth,
-                                                  startHeight, stopWidth,
-                                                  stopHeight);
-
-                    //draw the video stream
-                    UpdateVerticeBuffer(_pVB, 0, startWidth, startHeight,
-                                        stopWidth, stopHeight);
-                    _pd3dDevice->SetTexture(0, textureFromChannel);
-                    _pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
-
-                    //Notice channel that this frame as been rendered
-                    channelObj->RenderOffFrame();
-                }
-            }
-            it++;
-        }
-
-        //draw the logo
-        if (_pTextureLogo)
-        {
-            UpdateVerticeBuffer(_pVB, 0, _logoLeft, _logoTop, _logoRight,
-                                _logoBottom);
-            _pd3dDevice->SetTexture(0, _pTextureLogo);
-            _pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
-        }
-
-        // End the scene
-        _pd3dDevice->EndScene();
-    }
-
-    // Present the backbuffer contents to the display
-    _pd3dDevice->Present(NULL, NULL, NULL, NULL );
-
-    return 0;
-}
-
-//set the  alpha value of the pixal with a particular colorkey as 0
-int VideoRenderDirect3D9::SetTransparentColor(LPDIRECT3DTEXTURE9 pTexture,
-                                                  DDCOLORKEY* transparentColorKey,
-                                                  DWORD width,
-                                                  DWORD height)
-{
-    D3DLOCKED_RECT lr;
-    if (!pTexture)
-        return -1;
-
-    CriticalSectionScoped cs(&_refD3DCritsect);
-    if (SUCCEEDED(pTexture->LockRect(0, &lr, NULL, D3DLOCK_DISCARD)))
-    {
-        for (DWORD y = 0; y < height; y++)
-        {
-            DWORD dwOffset = y * width;
-
-            for (DWORD x = 0; x < width; x)
-            {
-                DWORD temp = ((DWORD*) lr.pBits)[dwOffset + x];
-                if ((temp & 0x00FFFFFF)
-                        == transparentColorKey->dwColorSpaceLowValue)
-                {
-                    temp &= 0x00FFFFFF;
-                }
-                else
-                {
-                    temp |= 0xFF000000;
-                }
-                ((DWORD*) lr.pBits)[dwOffset + x] = temp;
-                x++;
-            }
-        }
-        pTexture->UnlockRect(0);
-        return 0;
-    }
-    return -1;
-}
-
-/*
- *
- *    Rendering process
- *
- */
-bool VideoRenderDirect3D9::ScreenUpdateThreadProc(void* obj)
-{
-    return static_cast<VideoRenderDirect3D9*> (obj)->ScreenUpdateProcess();
-}
-
-bool VideoRenderDirect3D9::ScreenUpdateProcess()
-{
-    _screenUpdateEvent->Wait(100);
-
-    if (!_screenUpdateThread)
-    {
-        //stop the thread
-        return false;
-    }
-    if (!_pd3dDevice)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "d3dDevice not created.");
-        return true;
-    }
-
-    HRESULT hr = _pd3dDevice->TestCooperativeLevel();
-
-    if (SUCCEEDED(hr))
-    {
-        UpdateRenderSurface();
-    }
-
-    if (hr == D3DERR_DEVICELOST)
-    {
-        //Device is lost and cannot be reset yet
-
-    }
-    else if (hr == D3DERR_DEVICENOTRESET)
-    {
-        //Lost but we can reset it now
-        //Note: the standard way is to call Reset, however for some reason doesn't work here.
-        //so we will release the device and create it again.
-        ResetDevice();
-    }
-
-    return true;
-}
-
-int VideoRenderDirect3D9::CloseDevice()
-{
-    CriticalSectionScoped cs(&_refD3DCritsect);
-    WEBRTC_TRACE(kTraceInfo, kTraceVideo, -1,
-                 "VideoRenderDirect3D9::CloseDevice");
-
-    if (_pTextureLogo != NULL)
-    {
-        _pTextureLogo->Release();
-        _pTextureLogo = NULL;
-    }
-
-    if (_pVB != NULL)
-    {
-        _pVB->Release();
-        _pVB = NULL;
-    }
-
-    if (_pd3dDevice != NULL)
-    {
-        _pd3dDevice->Release();
-        _pd3dDevice = NULL;
-    }
-
-    if (_pD3D != NULL)
-    {
-        _pD3D->Release();
-        _pD3D = NULL;
-    }
-
-    if (_pd3dSurface != NULL)
-        _pd3dSurface->Release();
-    return 0;
-}
-
-D3D9Channel* VideoRenderDirect3D9::GetD3DChannel(int channel)
-{
-    std::map<int, D3D9Channel*>::iterator ddIt;
-    ddIt = _d3dChannels.find(channel & 0x0000ffff);
-    D3D9Channel* ddobj = NULL;
-    if (ddIt != _d3dChannels.end())
-    {
-        ddobj = ddIt->second;
-    }
-    if (ddobj == NULL)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D render failed to find channel");
-        return NULL;
-    }
-    return ddobj;
-}
-
-int32_t VideoRenderDirect3D9::DeleteChannel(const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-
-    std::multimap<int, unsigned int>::iterator it;
-    it = _d3dZorder.begin();
-    while (it != _d3dZorder.end())
-    {
-        if ((streamId & 0x0000ffff) == (it->second & 0x0000ffff))
-        {
-            it = _d3dZorder.erase(it);
-            break;
-        }
-        it++;
-    }
-
-    std::map<int, D3D9Channel*>::iterator ddIt;
-    ddIt = _d3dChannels.find(streamId & 0x0000ffff);
-    if (ddIt != _d3dChannels.end())
-    {
-        delete ddIt->second;
-        _d3dChannels.erase(ddIt);
-        return 0;
-    }
-    return -1;
-}
-
-VideoRenderCallback* VideoRenderDirect3D9::CreateChannel(const uint32_t channel,
-                                                                 const uint32_t zOrder,
-                                                                 const float left,
-                                                                 const float top,
-                                                                 const float right,
-                                                                 const float bottom)
-{
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-    //FIXME this should be done in VideoAPIWindows? stop the frame deliver first
-    //remove the old channel
-    DeleteChannel(channel);
-
-    D3D9Channel* d3dChannel = new D3D9Channel(_pd3dDevice,
-                                                      &_refD3DCritsect, _trace);
-    d3dChannel->SetStreamSettings(0, zOrder, left, top, right, bottom);
-
-    // store channel
-    _d3dChannels[channel & 0x0000ffff] = d3dChannel;
-
-    // store Z order
-    // default streamID is 0
-    _d3dZorder.insert(
-                      std::pair<int, unsigned int>(zOrder, channel & 0x0000ffff));
-
-    return d3dChannel;
-}
-
-int32_t VideoRenderDirect3D9::GetStreamSettings(const uint32_t channel,
-                                                const uint16_t streamId,
-                                                uint32_t& zOrder,
-                                                float& left, float& top,
-                                                float& right, float& bottom)
-{
-    std::map<int, D3D9Channel*>::iterator ddIt;
-    ddIt = _d3dChannels.find(channel & 0x0000ffff);
-    D3D9Channel* ddobj = NULL;
-    if (ddIt != _d3dChannels.end())
-    {
-        ddobj = ddIt->second;
-    }
-    if (ddobj == NULL)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D render failed to find channel");
-        return -1;
-    }
-    // Only allow one stream per channel, demuxing is
-    return ddobj->GetStreamSettings(0, zOrder, left, top, right, bottom);
-}
-
-int VideoRenderDirect3D9::UpdateVerticeBuffer(LPDIRECT3DVERTEXBUFFER9 pVB,
-                                                  int offset,
-                                                  float startWidth,
-                                                  float startHeight,
-                                                  float stopWidth,
-                                                  float stopHeight)
-{
-    if (pVB == NULL)
-        return -1;
-
-    float left, right, top, bottom;
-
-    //update the vertice buffer
-    //0,1 => -1,1
-    left = startWidth * 2 - 1;
-    right = stopWidth * 2 - 1;
-
-    //0,1 => 1,-1
-    top = 1 - startHeight * 2;
-    bottom = 1 - stopHeight * 2;
-
-    CUSTOMVERTEX newVertices[] = {
-            //logo
-            { left, bottom, 0.0f, 0xffffffff, 0, 1 }, { left, top, 0.0f,
-                    0xffffffff, 0, 0 },
-            { right, bottom, 0.0f, 0xffffffff, 1, 1 }, { right, top, 0.0f,
-                    0xffffffff, 1, 0 }, };
-    // Now we fill the vertex buffer.
-    VOID* pVertices;
-    if (FAILED(pVB->Lock(sizeof(CUSTOMVERTEX) * offset, sizeof(newVertices),
-                         (void**) &pVertices, 0)))
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Failed to lock the vertex buffer.");
-        return -1;
-    }
-    memcpy(pVertices, newVertices, sizeof(newVertices));
-    pVB->Unlock();
-
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::StartRender()
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::StopRender()
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return 0;
-}
-
-bool VideoRenderDirect3D9::IsFullScreen()
-{
-    return _fullScreen;
-}
-
-int32_t VideoRenderDirect3D9::SetCropping(const uint32_t channel,
-                                          const uint16_t streamId,
-                                          const float left, const float top,
-                                          const float right, const float bottom)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::SetTransparentBackground(
-                                                                 const bool enable)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::SetText(const uint8_t textId,
-                                      const uint8_t* text,
-                                      const int32_t textLength,
-                                      const uint32_t colorText,
-                                      const uint32_t colorBg,
-                                      const float left, const float top,
-                                      const float rigth, const float bottom)
-{
-    WEBRTC_TRACE(kTraceError, kTraceVideo, -1, "Not supported.");
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::SetBitmap(const void* bitMap,
-                                        const uint8_t pictureId,
-                                        const void* colorKey,
-                                        const float left, const float top,
-                                        const float right, const float bottom)
-{
-    if (!bitMap)
-    {
-        if (_pTextureLogo != NULL)
-        {
-            _pTextureLogo->Release();
-            _pTextureLogo = NULL;
-        }
-        WEBRTC_TRACE(kTraceInfo, kTraceVideo, -1, "Remove bitmap.");
-        return 0;
-    }
-
-    // sanity
-    if (left > 1.0f || left < 0.0f ||
-        top > 1.0f || top < 0.0f ||
-        right > 1.0f || right < 0.0f ||
-        bottom > 1.0f || bottom < 0.0f)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D SetBitmap invalid parameter");
-        return -1;
-    }
-
-    if ((bottom <= top) || (right <= left))
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D SetBitmap invalid parameter");
-        return -1;
-    }
-
-    CriticalSectionScoped cs(&_refD3DCritsect);
-
-    unsigned char* srcPtr;
-    HGDIOBJ oldhand;
-    BITMAPINFO pbi;
-    BITMAP bmap;
-    HDC hdcNew;
-    hdcNew = CreateCompatibleDC(0);
-    // Fill out the BITMAP structure.
-    GetObject((HBITMAP)bitMap, sizeof(bmap), &bmap);
-    //Select the bitmap handle into the new device context.
-    oldhand = SelectObject(hdcNew, (HGDIOBJ) bitMap);
-    // we are done with this object
-    DeleteObject(oldhand);
-    pbi.bmiHeader.biSize = 40;
-    pbi.bmiHeader.biWidth = bmap.bmWidth;
-    pbi.bmiHeader.biHeight = bmap.bmHeight;
-    pbi.bmiHeader.biPlanes = 1;
-    pbi.bmiHeader.biBitCount = bmap.bmBitsPixel;
-    pbi.bmiHeader.biCompression = BI_RGB;
-    pbi.bmiHeader.biSizeImage = bmap.bmWidth * bmap.bmHeight * 3;
-    srcPtr = new unsigned char[bmap.bmWidth * bmap.bmHeight * 4];
-    // the original un-stretched image in RGB24
-    int pixelHeight = GetDIBits(hdcNew, (HBITMAP)bitMap, 0, bmap.bmHeight, srcPtr, &pbi,
-                                DIB_RGB_COLORS);
-    if (pixelHeight == 0)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D failed to GetDIBits in SetBitmap");
-        delete[] srcPtr;
-        return -1;
-    }
-    DeleteDC(hdcNew);
-    if (pbi.bmiHeader.biBitCount != 24 && pbi.bmiHeader.biBitCount != 32)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D failed to SetBitmap invalid bit depth");
-        delete[] srcPtr;
-        return -1;
-    }
-
-    HRESULT ret;
-    //release the previous logo texture
-    if (_pTextureLogo != NULL)
-    {
-        _pTextureLogo->Release();
-        _pTextureLogo = NULL;
-    }
-    ret = _pd3dDevice->CreateTexture(bmap.bmWidth, bmap.bmHeight, 1, 0,
-                                     D3DFMT_A8R8G8B8, D3DPOOL_MANAGED,
-                                     &_pTextureLogo, NULL);
-    if (FAILED(ret))
-    {
-        _pTextureLogo = NULL;
-        delete[] srcPtr;
-        return -1;
-    }
-    if (!_pTextureLogo)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Texture for rendering not initialized.");
-        delete[] srcPtr;
-        return -1;
-    }
-
-    D3DLOCKED_RECT lr;
-    if (FAILED(_pTextureLogo->LockRect(0, &lr, NULL, 0)))
-    {
-        delete[] srcPtr;
-        return -1;
-    }
-    unsigned char* dstPtr = (UCHAR*) lr.pBits;
-    int pitch = bmap.bmWidth * 4;
-
-    if (pbi.bmiHeader.biBitCount == 24)
-    {
-        ConvertRGB24ToARGB(srcPtr, dstPtr, bmap.bmWidth, bmap.bmHeight, 0);
-    }
-    else
-    {
-        unsigned char* srcTmp = srcPtr + (bmap.bmWidth * 4) * (bmap.bmHeight - 1);
-        for (int i = 0; i < bmap.bmHeight; ++i)
-        {
-            memcpy(dstPtr, srcTmp, bmap.bmWidth * 4);
-            srcTmp -= bmap.bmWidth * 4;
-            dstPtr += pitch;
-        }
-    }
-
-    delete[] srcPtr;
-    if (FAILED(_pTextureLogo->UnlockRect(0)))
-    {
-        return -1;
-    }
-
-    if (colorKey)
-    {
-        DDCOLORKEY* ddColorKey =
-                static_cast<DDCOLORKEY*> (const_cast<void*> (colorKey));
-        SetTransparentColor(_pTextureLogo, ddColorKey, bmap.bmWidth,
-                            bmap.bmHeight);
-    }
-
-    //update the vertice buffer
-    //0,1 => -1,1
-    _logoLeft = left;
-    _logoRight = right;
-
-    //0,1 => 1,-1
-    _logoTop = top;
-    _logoBottom = bottom;
-
-    return 0;
-
-}
-
-int32_t VideoRenderDirect3D9::GetGraphicsMemory(uint64_t& totalMemory,
-                                                uint64_t& availableMemory)
-{
-    totalMemory = _totalMemory;
-    availableMemory = _availableMemory;
-    return 0;
-}
-
-int32_t VideoRenderDirect3D9::ConfigureRenderer(const uint32_t channel,
-                                                const uint16_t streamId,
-                                                const unsigned int zOrder,
-                                                const float left,
-                                                const float top,
-                                                const float right,
-                                                const float bottom)
-{
-    std::map<int, D3D9Channel*>::iterator ddIt;
-    ddIt = _d3dChannels.find(channel & 0x0000ffff);
-    D3D9Channel* ddobj = NULL;
-    if (ddIt != _d3dChannels.end())
-    {
-        ddobj = ddIt->second;
-    }
-    if (ddobj == NULL)
-    {
-        WEBRTC_TRACE(kTraceError, kTraceVideo, -1,
-                     "Direct3D render failed to find channel");
-        return -1;
-    }
-    // Only allow one stream per channel, demuxing is
-    ddobj->SetStreamSettings(0, zOrder, left, top, right, bottom);
-
-    return 0;
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/windows/video_render_direct3d9.h b/webrtc/modules/video_render/windows/video_render_direct3d9.h
deleted file mode 100644
index eaa8c14..0000000
--- a/webrtc/modules/video_render/windows/video_render_direct3d9.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_DIRECT3D9_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_DIRECT3D9_H_
-
-#include <memory>
-
-#include "webrtc/modules/video_render/windows/i_video_render_win.h"
-
-#include <d3d9.h>
-#include <ddraw.h>
-
-#include <Map>
-
-// Added
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
-
-#pragma comment(lib, "d3d9.lib")       // located in DirectX SDK
-
-namespace webrtc {
-class CriticalSectionWrapper;
-class EventTimerWrapper;
-class Trace;
-
-class D3D9Channel: public VideoRenderCallback
-{
-public:
-    D3D9Channel(LPDIRECT3DDEVICE9 pd3DDevice,
-                    CriticalSectionWrapper* critSect, Trace* trace);
-
-    virtual ~D3D9Channel();
-
-    // Inherited from VideoRencerCallback, called from VideoAPI class.
-    // Called when the incomming frame size and/or number of streams in mix changes
-    virtual int FrameSizeChange(int width, int height, int numberOfStreams);
-
-    // A new frame is delivered.
-    virtual int DeliverFrame(const VideoFrame& videoFrame);
-    virtual int32_t RenderFrame(const uint32_t streamId,
-                                const VideoFrame& videoFrame);
-
-    // Called to check if the video frame is updated.
-    int IsUpdated(bool& isUpdated);
-    // Called after the video frame has been render to the screen
-    int RenderOffFrame();
-    // Called to get the texture that contains the video frame
-    LPDIRECT3DTEXTURE9 GetTexture();
-    // Called to get the texture(video frame) size
-    int GetTextureWidth();
-    int GetTextureHeight();
-    //
-    void SetStreamSettings(uint16_t streamId,
-                           uint32_t zOrder,
-                           float startWidth,
-                           float startHeight,
-                           float stopWidth,
-                           float stopHeight);
-    int GetStreamSettings(uint16_t streamId,
-                          uint32_t& zOrder,
-                          float& startWidth,
-                          float& startHeight,
-                          float& stopWidth,
-                          float& stopHeight);
-
-    int ReleaseTexture();
-    int RecreateTexture(LPDIRECT3DDEVICE9 pd3DDevice);
-
-protected:
-
-private:
-    //critical section passed from the owner
-    CriticalSectionWrapper* _critSect;
-    LPDIRECT3DDEVICE9 _pd3dDevice;
-    LPDIRECT3DTEXTURE9 _pTexture;
-
-    bool _bufferIsUpdated;
-    // the frame size
-    int _width;
-    int _height;
-    //sream settings
-    //TODO support multiple streams in one channel
-    uint16_t _streamId;
-    uint32_t _zOrder;
-    float _startWidth;
-    float _startHeight;
-    float _stopWidth;
-    float _stopHeight;
-};
-
-class VideoRenderDirect3D9: IVideoRenderWin
-{
-public:
-    VideoRenderDirect3D9(Trace* trace, HWND hWnd, bool fullScreen);
-    ~VideoRenderDirect3D9();
-
-public:
-    //IVideoRenderWin
-
-    /**************************************************************************
-     *
-     *   Init
-     *
-     ***************************************************************************/
-    virtual int32_t Init();
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-    virtual VideoRenderCallback
-            * CreateChannel(const uint32_t streamId,
-                            const uint32_t zOrder,
-                            const float left,
-                            const float top,
-                            const float right,
-                            const float bottom);
-
-    virtual int32_t DeleteChannel(const uint32_t streamId);
-
-    virtual int32_t GetStreamSettings(const uint32_t channel,
-                                      const uint16_t streamId,
-                                      uint32_t& zOrder,
-                                      float& left, float& top,
-                                      float& right, float& bottom);
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual bool IsFullScreen();
-
-    virtual int32_t SetCropping(const uint32_t channel,
-                                const uint16_t streamId,
-                                const float left, const float top,
-                                const float right, const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t channel,
-                                      const uint16_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t ChangeWindow(void* window);
-
-    virtual int32_t GetGraphicsMemory(uint64_t& totalMemory,
-                                      uint64_t& availableMemory);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t colorText,
-                            const uint32_t colorBg,
-                            const float left, const float top,
-                            const float rigth, const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom);
-
-public:
-    // Get a channel by channel id
-    D3D9Channel* GetD3DChannel(int channel);
-    int UpdateRenderSurface();
-
-protected:
-    // The thread rendering the screen
-    static bool ScreenUpdateThreadProc(void* obj);
-    bool ScreenUpdateProcess();
-
-private:
-    // Init/close the d3d device
-    int InitDevice();
-    int CloseDevice();
-
-    // Transparent related functions
-    int SetTransparentColor(LPDIRECT3DTEXTURE9 pTexture,
-                            DDCOLORKEY* transparentColorKey,
-                            DWORD width,
-                            DWORD height);
-
-    CriticalSectionWrapper& _refD3DCritsect;
-    Trace* _trace;
-    // TODO(pbos): Remove unique_ptr and use PlatformThread directly.
-    std::unique_ptr<rtc::PlatformThread> _screenUpdateThread;
-    EventTimerWrapper* _screenUpdateEvent;
-
-    HWND _hWnd;
-    bool _fullScreen;
-    RECT _originalHwndRect;
-    //FIXME we probably don't need this since all the information can be get from _d3dChannels
-    int _channel;
-    //Window size
-    UINT _winWidth;
-    UINT _winHeight;
-
-    // Device
-    LPDIRECT3D9 _pD3D; // Used to create the D3DDevice
-    LPDIRECT3DDEVICE9 _pd3dDevice; // Our rendering device
-    LPDIRECT3DVERTEXBUFFER9 _pVB; // Buffer to hold Vertices
-    LPDIRECT3DTEXTURE9 _pTextureLogo;
-
-    std::map<int, D3D9Channel*> _d3dChannels;
-    std::multimap<int, unsigned int> _d3dZorder;
-
-    // The position where the logo will be placed
-    float _logoLeft;
-    float _logoTop;
-    float _logoRight;
-    float _logoBottom;
-
-    typedef HRESULT (WINAPI *DIRECT3DCREATE9EX)(UINT SDKVersion, IDirect3D9Ex**);
-    LPDIRECT3DSURFACE9 _pd3dSurface;
-
-    DWORD GetVertexProcessingCaps();
-    int InitializeD3D(HWND hWnd, D3DPRESENT_PARAMETERS* pd3dpp);
-
-    D3DPRESENT_PARAMETERS _d3dpp;
-    int ResetDevice();
-
-    int UpdateVerticeBuffer(LPDIRECT3DVERTEXBUFFER9 pVB, int offset,
-                            float startWidth, float startHeight,
-                            float stopWidth, float stopHeight);
-
-    //code for providing graphics settings
-    DWORD _totalMemory;
-    DWORD _availableMemory;
-};
-
-}  // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_DIRECT3D9_H_
diff --git a/webrtc/modules/video_render/windows/video_render_windows_impl.cc b/webrtc/modules/video_render/windows/video_render_windows_impl.cc
deleted file mode 100644
index 042d7fd..0000000
--- a/webrtc/modules/video_render/windows/video_render_windows_impl.cc
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/engine_configurations.h"
-#include "webrtc/modules/video_render/windows/video_render_windows_impl.h"
-
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-#ifdef DIRECT3D9_RENDERING
-#include "webrtc/modules/video_render/windows/video_render_direct3d9.h"
-#endif
-
-#include <tchar.h>
-
-namespace webrtc {
-
-VideoRenderWindowsImpl::VideoRenderWindowsImpl(const int32_t id,
-    const VideoRenderType videoRenderType, void* window, const bool fullscreen)
-    : _renderWindowsCritsect(*CriticalSectionWrapper::CreateCriticalSection()),
-      _prtWindow(window),
-      _fullscreen(fullscreen),
-      _renderMethod(kVideoRenderWinD3D9),
-      _ptrRendererWin(NULL) {
-}
-
-VideoRenderWindowsImpl::~VideoRenderWindowsImpl()
-{
-    delete &_renderWindowsCritsect;
-    if (_ptrRendererWin)
-    {
-        delete _ptrRendererWin;
-        _ptrRendererWin = NULL;
-    }
-}
-
-int32_t VideoRenderWindowsImpl::Init()
-{
-    // Create the win renderer
-    switch (_renderMethod)
-    {
-        case kVideoRenderWinD3D9:
-        {
-#ifdef DIRECT3D9_RENDERING
-            VideoRenderDirect3D9* ptrRenderer;
-            ptrRenderer = new VideoRenderDirect3D9(NULL, (HWND) _prtWindow, _fullscreen);
-            if (ptrRenderer == NULL)
-            {
-                break;
-            }
-            _ptrRendererWin = reinterpret_cast<IVideoRenderWin*>(ptrRenderer);
-#else
-            return NULL;
-#endif  //DIRECT3D9_RENDERING
-        }
-            break;
-        default:
-            break;
-    }
-
-    //Init renderer
-    if (_ptrRendererWin)
-        return _ptrRendererWin->Init();
-    else
-        return -1;
-}
-
-int32_t VideoRenderWindowsImpl::ChangeWindow(void* window)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    if (!_ptrRendererWin)
-    {
-        return -1;
-    }
-    else
-    {
-        return _ptrRendererWin->ChangeWindow(window);
-    }
-}
-
-VideoRenderCallback*
-VideoRenderWindowsImpl::AddIncomingRenderStream(const uint32_t streamId,
-                                                const uint32_t zOrder,
-                                                const float left,
-                                                const float top,
-                                                const float right,
-                                                const float bottom)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    VideoRenderCallback* renderCallback = NULL;
-
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        renderCallback = _ptrRendererWin->CreateChannel(streamId, zOrder, left,
-                                                        top, right, bottom);
-    }
-
-    return renderCallback;
-}
-
-int32_t VideoRenderWindowsImpl::DeleteIncomingRenderStream(
-                                                                 const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->DeleteChannel(streamId);
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::GetIncomingRenderStreamProperties(
-                                                                        const uint32_t streamId,
-                                                                        uint32_t& zOrder,
-                                                                        float& left,
-                                                                        float& top,
-                                                                        float& right,
-                                                                        float& bottom) const
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    zOrder = 0;
-    left = 0;
-    top = 0;
-    right = 0;
-    bottom = 0;
-
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->GetStreamSettings(streamId, 0, zOrder, left,
-                                                   top, right, bottom);
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::StartRender()
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->StartRender();
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::StopRender()
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->StopRender();
-    }
-    return error;
-}
-
-VideoRenderType VideoRenderWindowsImpl::RenderType()
-{
-    return kRenderWindows;
-}
-
-RawVideoType VideoRenderWindowsImpl::PerferedVideoType()
-{
-    return kVideoI420;
-}
-
-bool VideoRenderWindowsImpl::FullScreen()
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    bool fullscreen = false;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        fullscreen = _ptrRendererWin->IsFullScreen();
-    }
-    return fullscreen;
-}
-
-int32_t VideoRenderWindowsImpl::GetGraphicsMemory(
-                                                        uint64_t& totalGraphicsMemory,
-                                                        uint64_t& availableGraphicsMemory) const
-{
-    if (_ptrRendererWin)
-    {
-        return _ptrRendererWin->GetGraphicsMemory(totalGraphicsMemory,
-                                                  availableGraphicsMemory);
-    }
-
-    totalGraphicsMemory = 0;
-    availableGraphicsMemory = 0;
-    return -1;
-}
-
-int32_t VideoRenderWindowsImpl::GetScreenResolution(
-                                                          uint32_t& screenWidth,
-                                                          uint32_t& screenHeight) const
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    screenWidth = 0;
-    screenHeight = 0;
-    return 0;
-}
-
-uint32_t VideoRenderWindowsImpl::RenderFrameRate(
-                                                       const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    return 0;
-}
-
-int32_t VideoRenderWindowsImpl::SetStreamCropping(
-                                                        const uint32_t streamId,
-                                                        const float left,
-                                                        const float top,
-                                                        const float right,
-                                                        const float bottom)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->SetCropping(streamId, 0, left, top, right,
-                                             bottom);
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::ConfigureRenderer(
-                                                        const uint32_t streamId,
-                                                        const unsigned int zOrder,
-                                                        const float left,
-                                                        const float top,
-                                                        const float right,
-                                                        const float bottom)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->ConfigureRenderer(streamId, 0, zOrder, left,
-                                                   top, right, bottom);
-    }
-
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::SetTransparentBackground(
-                                                               const bool enable)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->SetTransparentBackground(enable);
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::SetText(
-                                              const uint8_t textId,
-                                              const uint8_t* text,
-                                              const int32_t textLength,
-                                              const uint32_t textColorRef,
-                                              const uint32_t backgroundColorRef,
-                                              const float left,
-                                              const float top,
-                                              const float right,
-                                              const float bottom)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->SetText(textId, text, textLength,
-                                         textColorRef, backgroundColorRef,
-                                         left, top, right, bottom);
-    }
-    return error;
-}
-
-int32_t VideoRenderWindowsImpl::SetBitmap(const void* bitMap,
-                                          const uint8_t pictureId,
-                                          const void* colorKey,
-                                          const float left, const float top,
-                                          const float right, const float bottom)
-{
-    CriticalSectionScoped cs(&_renderWindowsCritsect);
-    int32_t error = -1;
-    if (!_ptrRendererWin)
-    {
-    }
-    else
-    {
-        error = _ptrRendererWin->SetBitmap(bitMap, pictureId, colorKey, left,
-                                           top, right, bottom);
-    }
-    return error;
-}
-
-}  // namespace webrtc
diff --git a/webrtc/modules/video_render/windows/video_render_windows_impl.h b/webrtc/modules/video_render/windows/video_render_windows_impl.h
deleted file mode 100644
index aaa3f81..0000000
--- a/webrtc/modules/video_render/windows/video_render_windows_impl.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_WINDOWS_IMPL_H_
-#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_WINDOWS_IMPL_H_
-
-#include <Winerror.h>
-#include <dxdiag.h>
-
-#include "webrtc/modules/video_render/i_video_render.h"
-#include "webrtc/modules/video_render/windows/i_video_render_win.h"
-
-namespace webrtc {
-class CriticalSectionWrapper;
-
-#define EXPAND(x)            x, sizeof(x)/sizeof(TCHAR)
-
-enum VideoRenderWinMethod {
-  kVideoRenderWinD3D9 = 0,
-};
-
-// Class definitions
-class VideoRenderWindowsImpl: IVideoRender
-{
-public:
-    /*
-     *   Constructor/destructor
-     */
-
-    VideoRenderWindowsImpl(const int32_t id,
-                           const VideoRenderType videoRenderType,
-                           void* window, const bool fullscreen);
-
-    virtual ~VideoRenderWindowsImpl();
-
-    virtual int32_t Init();
-
-    virtual int32_t ChangeWindow(void* window);
-
-    /**************************************************************************
-     *
-     *   Incoming Streams
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderCallback
-            * AddIncomingRenderStream(const uint32_t streamId,
-                                      const uint32_t zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t
-            DeleteIncomingRenderStream(const uint32_t streamId);
-
-    virtual int32_t
-            GetIncomingRenderStreamProperties(const uint32_t streamId,
-                                              uint32_t& zOrder,
-                                              float& left, float& top,
-                                              float& right, float& bottom) const;
-
-    /**************************************************************************
-     *
-     *   Start/Stop
-     *
-     ***************************************************************************/
-
-    virtual int32_t StartRender();
-
-    virtual int32_t StopRender();
-
-    /**************************************************************************
-     *
-     *   Properties
-     *
-     ***************************************************************************/
-
-    virtual VideoRenderType RenderType();
-
-    virtual RawVideoType PerferedVideoType();
-
-    virtual bool FullScreen();
-
-    virtual int32_t
-            GetGraphicsMemory(uint64_t& totalGraphicsMemory,
-                              uint64_t& availableGraphicsMemory) const;
-
-    virtual int32_t
-            GetScreenResolution(uint32_t& screenWidth,
-                                uint32_t& screenHeight) const;
-
-    virtual uint32_t RenderFrameRate(const uint32_t streamId);
-
-    virtual int32_t SetStreamCropping(const uint32_t streamId,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t ConfigureRenderer(const uint32_t streamId,
-                                      const unsigned int zOrder,
-                                      const float left, const float top,
-                                      const float right, const float bottom);
-
-    virtual int32_t SetTransparentBackground(const bool enable);
-
-    virtual int32_t SetText(const uint8_t textId,
-                            const uint8_t* text,
-                            const int32_t textLength,
-                            const uint32_t textColorRef,
-                            const uint32_t backgroundColorRef,
-                            const float left, const float top,
-                            const float right, const float bottom);
-
-    virtual int32_t SetBitmap(const void* bitMap,
-                              const uint8_t pictureId,
-                              const void* colorKey,
-                              const float left, const float top,
-                              const float right, const float bottom);
-
-private:
-    CriticalSectionWrapper& _renderWindowsCritsect;
-
-    void* _prtWindow;
-    bool _fullscreen;
-
-    VideoRenderWinMethod _renderMethod;
-    IVideoRenderWin* _ptrRendererWin;
-};
-
-}  // namespace webrtc
-
-#endif  // WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_WINDOWS_VIDEO_RENDER_WINDOWS_IMPL_H_
diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp
index 65349cc..a04a128 100644
--- a/webrtc/test/test.gyp
+++ b/webrtc/test/test.gyp
@@ -304,7 +304,6 @@
        '<(webrtc_root)/base/base.gyp:rtc_base_approved',
        '<(webrtc_root)/common.gyp:webrtc_common',
        '<(webrtc_root)/modules/modules.gyp:media_file',
-       '<(webrtc_root)/modules/modules.gyp:video_render',
        '<(webrtc_root)/webrtc.gyp:webrtc',
        'rtp_test_utils',
        'test_support',
diff --git a/webrtc/video/BUILD.gn b/webrtc/video/BUILD.gn
index ec45987..0bc5a12 100644
--- a/webrtc/video/BUILD.gn
+++ b/webrtc/video/BUILD.gn
@@ -71,7 +71,6 @@
     "../modules/video_capture:video_capture_module",
     "../modules/video_coding",
     "../modules/video_processing",
-    "../modules/video_render:video_render_module",
     "../system_wrappers",
     "../voice_engine",
   ]
diff --git a/webrtc/video/DEPS b/webrtc/video/DEPS
index 8c54066..7e53144 100644
--- a/webrtc/video/DEPS
+++ b/webrtc/video/DEPS
@@ -12,7 +12,6 @@
   "+webrtc/modules/video_coding",
   "+webrtc/modules/video_capture",
   "+webrtc/modules/video_processing",
-  "+webrtc/modules/video_render",
   "+webrtc/system_wrappers",
   "+webrtc/voice_engine",
 ]
diff --git a/webrtc/video/video_capture_input.cc b/webrtc/video/video_capture_input.cc
index 54b41b5..8f574e2 100644
--- a/webrtc/video/video_capture_input.cc
+++ b/webrtc/video/video_capture_input.cc
@@ -16,7 +16,6 @@
 #include "webrtc/modules/include/module_common_types.h"
 #include "webrtc/modules/video_capture/video_capture_factory.h"
 #include "webrtc/modules/video_processing/include/video_processing.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
 #include "webrtc/video/overuse_frame_detector.h"
 #include "webrtc/video/send_statistics_proxy.h"
 #include "webrtc/video/vie_encoder.h"
diff --git a/webrtc/video/video_receive_stream.h b/webrtc/video/video_receive_stream.h
index 5c47422..a7ee42d 100644
--- a/webrtc/video/video_receive_stream.h
+++ b/webrtc/video/video_receive_stream.h
@@ -18,7 +18,6 @@
 #include "webrtc/call/transport_adapter.h"
 #include "webrtc/common_video/include/incoming_video_stream.h"
 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
 #include "webrtc/modules/video_coding/video_coding_impl.h"
 #include "webrtc/system_wrappers/include/clock.h"
 #include "webrtc/video/encoded_frame_callback_adapter.h"
diff --git a/webrtc/video/vie_channel.cc b/webrtc/video/vie_channel.cc
index 6595ce4..8176a50 100644
--- a/webrtc/video/vie_channel.cc
+++ b/webrtc/video/vie_channel.cc
@@ -23,7 +23,6 @@
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
 #include "webrtc/modules/video_coding/video_coding_impl.h"
 #include "webrtc/modules/video_processing/include/video_processing.h"
-#include "webrtc/modules/video_render/video_render_defines.h"
 #include "webrtc/system_wrappers/include/metrics.h"
 #include "webrtc/video/call_stats.h"
 #include "webrtc/video/payload_router.h"
diff --git a/webrtc/video/webrtc_video.gypi b/webrtc/video/webrtc_video.gypi
index 54efbcd..514b21d 100644
--- a/webrtc/video/webrtc_video.gypi
+++ b/webrtc/video/webrtc_video.gypi
@@ -17,7 +17,6 @@
       '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
       '<(webrtc_root)/modules/modules.gyp:video_capture_module',
       '<(webrtc_root)/modules/modules.gyp:video_processing',
-      '<(webrtc_root)/modules/modules.gyp:video_render_module',
       '<(webrtc_root)/modules/modules.gyp:webrtc_utility',
       '<(webrtc_root)/modules/modules.gyp:webrtc_video_coding',
       '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
diff --git a/webrtc/webrtc.gyp b/webrtc/webrtc.gyp
index 8e7c99b..abc48e9 100644
--- a/webrtc/webrtc.gyp
+++ b/webrtc/webrtc.gyp
@@ -148,7 +148,6 @@
         ['build_with_chromium==1', {
           'dependencies': [
             '<(webrtc_root)/modules/modules.gyp:video_capture',
-            '<(webrtc_root)/modules/modules.gyp:video_render',
           ],
         }],
       ],
diff --git a/webrtc/webrtc_tests.gypi b/webrtc/webrtc_tests.gypi
index 43d717e..75fc35a 100644
--- a/webrtc/webrtc_tests.gypi
+++ b/webrtc/webrtc_tests.gypi
@@ -57,7 +57,6 @@
       ],
       'dependencies': [
         '<(DEPTH)/testing/gtest.gyp:gtest',
-        '<(webrtc_root)/modules/modules.gyp:video_render',
         '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
         'webrtc',
@@ -144,7 +143,6 @@
         'test/test.gyp:test_common',
         'test/test.gyp:test_renderer',
         '<(webrtc_root)/modules/modules.gyp:video_capture',
-        '<(webrtc_root)/modules/modules.gyp:video_render',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
         'webrtc',
       ],
@@ -184,7 +182,6 @@
         '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
         '<(webrtc_root)/modules/modules.gyp:video_capture',
-        '<(webrtc_root)/modules/modules.gyp:video_render',
         '<(webrtc_root)/test/test.gyp:channel_transport',
         '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
         'test/metrics.gyp:metrics',