From 160e32c34f629be1fc7e634a085d9dc70a77b908 Mon Sep 17 00:00:00 2001 From: sakal Date: Mon, 28 Aug 2017 02:41:38 -0700 Subject: [PATCH] Add support for RGB frames in MediaCodecVideoEncoder. BUG=webrtc:7749 Review-Url: https://codereview.webrtc.org/3002263002 Cr-Commit-Position: refs/heads/master@{#19554} --- .../sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java | 6 ++---- webrtc/sdk/android/api/org/webrtc/RendererCommon.java | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java b/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java index 808b43d6df..5ccf640810 100644 --- a/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java +++ b/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java @@ -616,10 +616,8 @@ public class MediaCodecVideoEncoder { // TODO(perkj): glClear() shouldn't be necessary since every pixel is covered anyway, // but it's a workaround for bug webrtc:5147. GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); - drawer.drawOes(textureBuffer.getTextureId(), - RendererCommon.convertMatrixFromAndroidGraphicsMatrix( - textureBuffer.getTransformMatrix()), - width, height, 0, 0, width, height); + drawer.drawTexture(textureBuffer, new Matrix() /* renderMatrix */, width, height, + 0 /* viewportX */, 0 /* viewportY */, width, height); eglBase.swapBuffers(frame.getTimestampNs()); } else { VideoFrame.I420Buffer i420Buffer = buffer.toI420(); diff --git a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java index ac71d9fd2b..8f8d9fef4c 100644 --- a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java +++ b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java @@ -48,6 +48,12 @@ public class RendererCommon { void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frameHeight, int viewportX, int viewportY, int viewportWidth, int viewportHeight); + /** + * Draws a VideoFrame.TextureBuffer. Default implementation calls either drawOes or drawRgb + * depending on the type of the buffer. You can supply an additional render matrix. This is + * used multiplied together with the transformation matrix of the frame. (M = renderMatrix * + * transformationMatrix) + */ default void drawTexture(VideoFrame.TextureBuffer buffer, android.graphics.Matrix renderMatrix, int frameWidth, int frameHeight, int viewportX, int viewportY, int viewportWidth,