| Index: webrtc/sdk/android/api/org/webrtc/RendererCommon.java
|
| diff --git a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java
|
| index b5ac7501d7bf6b9838477377abdb8207c0bcc9b2..ac71d9fd2bd48050a5f0ad17a198d2c331b374b7 100644
|
| --- a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java
|
| +++ b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java
|
| @@ -34,6 +34,7 @@ public class RendererCommon {
|
| }
|
|
|
| /** Interface for rendering frames on an EGLSurface. */
|
| + @SuppressWarnings("StaticOrDefaultInterfaceMethod")
|
| public static interface GlDrawer {
|
| /**
|
| * Functions for drawing frames with different sources. The rendering surface target is
|
| @@ -47,10 +48,32 @@ public class RendererCommon {
|
| void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frameHeight,
|
| int viewportX, int viewportY, int viewportWidth, int viewportHeight);
|
|
|
| - /**
|
| - * Release all GL resources. This needs to be done manually, otherwise resources may leak.
|
| - */
|
| - void release();
|
| + default void
|
| + drawTexture(VideoFrame.TextureBuffer buffer, android.graphics.Matrix renderMatrix,
|
| + int frameWidth, int frameHeight, int viewportX, int viewportY, int viewportWidth,
|
| + int viewportHeight) {
|
| + android.graphics.Matrix finalMatrix =
|
| + new android.graphics.Matrix(buffer.getTransformMatrix());
|
| + finalMatrix.preConcat(renderMatrix);
|
| + float[] finalGlMatrix = convertMatrixFromAndroidGraphicsMatrix(finalMatrix);
|
| + switch (buffer.getType()) {
|
| + case OES:
|
| + drawOes(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeight, viewportX,
|
| + viewportY, viewportWidth, viewportHeight);
|
| + break;
|
| + case RGB:
|
| + drawRgb(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeight, viewportX,
|
| + viewportY, viewportWidth, viewportHeight);
|
| + break;
|
| + default:
|
| + throw new RuntimeException("Unknown texture type.");
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Release all GL resources. This needs to be done manually, otherwise resources may leak.
|
| + */
|
| + void release();
|
| }
|
|
|
| /**
|
| @@ -111,6 +134,12 @@ public class RendererCommon {
|
| return yuvTextures;
|
| }
|
|
|
| + public int[] uploadFromBuffer(VideoFrame.I420Buffer buffer) {
|
| + int[] strides = {buffer.getStrideY(), buffer.getStrideU(), buffer.getStrideV()};
|
| + ByteBuffer[] planes = {buffer.getDataY(), buffer.getDataU(), buffer.getDataV()};
|
| + return uploadYuvData(buffer.getWidth(), buffer.getHeight(), strides, planes);
|
| + }
|
| +
|
| /**
|
| * Releases cached resources. Uploader can still be used and the resources will be reallocated
|
| * on first use.
|
|
|