Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: webrtc/sdk/android/api/org/webrtc/RendererCommon.java

Issue 3002563002: Add VideoSink interface to SurfaceViewRenderer. (Closed)
Patch Set: Address comments. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
« no previous file with comments | « webrtc/sdk/android/api/org/webrtc/EglRenderer.java ('k') | webrtc/sdk/android/api/org/webrtc/SurfaceViewRenderer.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698