Android: Improve handling of RGB texture frames

In the transition period when we have both VideoRenderer.Callbacks and
VideoSinks, and VideoRenderer.I420Frames and VideoFrames, the adapters
between them does not handle RGB frames correctly. This CL improves the
situation somewhat, and at least gives clearer error messages.

BUG=webrtc:7749

Review-Url: https://codereview.webrtc.org/3017433002
Cr-Original-Commit-Position: refs/heads/master@{#19817}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 2ab9879af0ef661b9afde3f1a56ef7073c4006cf
diff --git a/sdk/android/api/org/webrtc/VideoRenderer.java b/sdk/android/api/org/webrtc/VideoRenderer.java
index 623f6b9..ec732be 100644
--- a/sdk/android/api/org/webrtc/VideoRenderer.java
+++ b/sdk/android/api/org/webrtc/VideoRenderer.java
@@ -93,7 +93,8 @@
       if (rotationDegree % 90 != 0) {
         throw new IllegalArgumentException("Rotation degree not multiple of 90: " + rotationDegree);
       }
-      if (buffer instanceof VideoFrame.TextureBuffer) {
+      if (buffer instanceof VideoFrame.TextureBuffer
+          && ((VideoFrame.TextureBuffer) buffer).getType() == VideoFrame.TextureBuffer.Type.OES) {
         VideoFrame.TextureBuffer textureBuffer = (VideoFrame.TextureBuffer) buffer;
         this.yuvFrame = false;
         this.textureId = textureBuffer.getTextureId();
diff --git a/sdk/android/src/java/org/webrtc/TextureBufferImpl.java b/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
index c2b2010..3a7da8d 100644
--- a/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
+++ b/sdk/android/src/java/org/webrtc/TextureBufferImpl.java
@@ -67,6 +67,9 @@
 
   @Override
   public VideoFrame.I420Buffer toI420() {
+    if (type == Type.RGB) {
+      throw new RuntimeException("toI420 for RGB frames not implemented yet");
+    }
     // SurfaceTextureHelper requires a stride that is divisible by 8.  Round width up.
     // See SurfaceTextureHelper for details on the size and format.
     int stride = ((width + 7) / 8) * 8;