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. |