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;