From 172683173dd84a72659ad494962245445eb2a353 Mon Sep 17 00:00:00 2001 From: ivoc Date: Wed, 4 May 2016 06:50:21 -0700 Subject: [PATCH] Revert of Android GlDrawer: Add frame size as argument to draw functions (patchset #2 id:20001 of https://codereview.webrtc.org/1948473002/ ) Reason for revert: Causes errors on Google3 import. Original issue's description: > Android GlDrawer: Add frame size as argument to draw functions > > BUG=b/28544933 > > Committed: https://crrev.com/71af75dc3ca8516017dca9de2ebe582145ecad14 > Cr-Commit-Position: refs/heads/master@{#12623} TBR=glaznev@webrtc.org,magjed@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=b/28544933 Review-Url: https://codereview.webrtc.org/1950953002 Cr-Commit-Position: refs/heads/master@{#12627} --- .../src/org/webrtc/GlRectDrawerTest.java | 12 ++++-------- .../src/org/webrtc/SurfaceTextureHelperTest.java | 6 ++---- .../api/java/android/org/webrtc/GlRectDrawer.java | 15 ++++++--------- .../java/android/org/webrtc/RendererCommon.java | 9 +++------ .../android/org/webrtc/SurfaceViewRenderer.java | 6 ++---- .../java/android/org/webrtc/VideoRendererGui.java | 7 +++---- .../src/org/webrtc/MediaCodecVideoEncoder.java | 2 +- 7 files changed, 21 insertions(+), 36 deletions(-) diff --git a/webrtc/api/androidtests/src/org/webrtc/GlRectDrawerTest.java b/webrtc/api/androidtests/src/org/webrtc/GlRectDrawerTest.java index 8625ccd2be..46e8e48498 100644 --- a/webrtc/api/androidtests/src/org/webrtc/GlRectDrawerTest.java +++ b/webrtc/api/androidtests/src/org/webrtc/GlRectDrawerTest.java @@ -98,8 +98,7 @@ public final class GlRectDrawerTest extends ActivityTestCase { // Draw the RGB frame onto the pixel buffer. final GlRectDrawer drawer = new GlRectDrawer(); - drawer.drawRgb(rgbTexture, RendererCommon.identityMatrix(), WIDTH, HEIGHT, - 0 /* viewportX */, 0 /* viewportY */, WIDTH, HEIGHT); + drawer.drawRgb(rgbTexture, RendererCommon.identityMatrix(), 0, 0, WIDTH, HEIGHT); // Download the pixels in the pixel buffer as RGBA. Not all platforms support RGB, e.g. Nexus 9. final ByteBuffer rgbaData = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4); @@ -146,8 +145,7 @@ public final class GlRectDrawerTest extends ActivityTestCase { // Draw the YUV frame onto the pixel buffer. final GlRectDrawer drawer = new GlRectDrawer(); - drawer.drawYuv(yuvTextures, RendererCommon.identityMatrix(), WIDTH, HEIGHT, - 0 /* viewportX */, 0 /* viewportY */, WIDTH, HEIGHT); + drawer.drawYuv(yuvTextures, RendererCommon.identityMatrix(), 0, 0, WIDTH, HEIGHT); // Download the pixels in the pixel buffer as RGBA. Not all platforms support RGB, e.g. Nexus 9. final ByteBuffer data = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4); @@ -235,8 +233,7 @@ public final class GlRectDrawerTest extends ActivityTestCase { GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGB, WIDTH, HEIGHT, 0, GLES20.GL_RGB, GLES20.GL_UNSIGNED_BYTE, rgbPlane); // Draw the RGB data onto the SurfaceTexture. - drawer.drawRgb(rgbTexture, RendererCommon.identityMatrix(), WIDTH, HEIGHT, - 0 /* viewportX */, 0 /* viewportY */, WIDTH, HEIGHT); + drawer.drawRgb(rgbTexture, RendererCommon.identityMatrix(), 0, 0, WIDTH, HEIGHT); eglBase.swapBuffers(); } @@ -274,8 +271,7 @@ public final class GlRectDrawerTest extends ActivityTestCase { // Draw the OES texture on the pixel buffer. eglBase.makeCurrent(); final GlRectDrawer drawer = new GlRectDrawer(); - drawer.drawOes(listener.oesTextureId, listener.transformMatrix, WIDTH, HEIGHT, - 0 /* viewportX */, 0 /* viewportY */, WIDTH, HEIGHT); + drawer.drawOes(listener.oesTextureId, listener.transformMatrix, 0, 0, WIDTH, HEIGHT); // Download the pixels in the pixel buffer as RGBA. Not all platforms support RGB, e.g. Nexus 9. final ByteBuffer rgbaData = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4); diff --git a/webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java b/webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java index a2a3391709..c5b9ec430e 100644 --- a/webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java +++ b/webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java @@ -131,8 +131,7 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase { // Wait for an OES texture to arrive and draw it onto the pixel buffer. listener.waitForNewFrame(); eglBase.makeCurrent(); - drawer.drawOes(listener.oesTextureId, listener.transformMatrix, width, height, - 0, 0, width, height); + drawer.drawOes(listener.oesTextureId, listener.transformMatrix, 0, 0, width, height); surfaceTextureHelper.returnTextureFrame(); @@ -203,8 +202,7 @@ public final class SurfaceTextureHelperTest extends ActivityTestCase { // Draw the pending texture frame onto the pixel buffer. eglBase.makeCurrent(); final GlRectDrawer drawer = new GlRectDrawer(); - drawer.drawOes(listener.oesTextureId, listener.transformMatrix, width, height, - 0, 0, width, height); + drawer.drawOes(listener.oesTextureId, listener.transformMatrix, 0, 0, width, height); drawer.release(); // Download the pixels in the pixel buffer as RGBA. Not all platforms support RGB, e.g. Nexus 9. diff --git a/webrtc/api/java/android/org/webrtc/GlRectDrawer.java b/webrtc/api/java/android/org/webrtc/GlRectDrawer.java index cfadff108a..fa821f84fd 100644 --- a/webrtc/api/java/android/org/webrtc/GlRectDrawer.java +++ b/webrtc/api/java/android/org/webrtc/GlRectDrawer.java @@ -119,14 +119,13 @@ public class GlRectDrawer implements RendererCommon.GlDrawer { * allocated at the first call to this function. */ @Override - public void drawOes(int oesTextureId, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight) { + public void drawOes(int oesTextureId, float[] texMatrix, int x, int y, int width, int height) { prepareShader(OES_FRAGMENT_SHADER_STRING, texMatrix); GLES20.glActiveTexture(GLES20.GL_TEXTURE0); // updateTexImage() may be called from another thread in another EGL context, so we need to // bind/unbind the texture in each draw call so that GLES understads it's a new texture. GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, oesTextureId); - drawRectangle(viewportX, viewportY, viewportWidth, viewportHeight); + drawRectangle(x, y, width, height); GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, 0); } @@ -135,12 +134,11 @@ public class GlRectDrawer implements RendererCommon.GlDrawer { * are allocated at the first call to this function. */ @Override - public void drawRgb(int textureId, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight) { + public void drawRgb(int textureId, float[] texMatrix, int x, int y, int width, int height) { prepareShader(RGB_FRAGMENT_SHADER_STRING, texMatrix); GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId); - drawRectangle(viewportX, viewportY, viewportWidth, viewportHeight); + drawRectangle(x, y, width, height); // Unbind the texture as a precaution. GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); } @@ -150,15 +148,14 @@ public class GlRectDrawer implements RendererCommon.GlDrawer { * allocated at the first call to this function. */ @Override - public void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight) { + public void drawYuv(int[] yuvTextures, float[] texMatrix, int x, int y, int width, int height) { prepareShader(YUV_FRAGMENT_SHADER_STRING, texMatrix); // Bind the textures. for (int i = 0; i < 3; ++i) { GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + i); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, yuvTextures[i]); } - drawRectangle(viewportX, viewportY, viewportWidth, viewportHeight); + drawRectangle(x, y, width, height); // Unbind the textures as a precaution.. for (int i = 0; i < 3; ++i) { GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + i); diff --git a/webrtc/api/java/android/org/webrtc/RendererCommon.java b/webrtc/api/java/android/org/webrtc/RendererCommon.java index 55547eb208..d95b69f94c 100644 --- a/webrtc/api/java/android/org/webrtc/RendererCommon.java +++ b/webrtc/api/java/android/org/webrtc/RendererCommon.java @@ -40,12 +40,9 @@ public class RendererCommon { * implied by the current EGL context of the calling thread and requires no explicit argument. * The coordinates specify the viewport location on the surface target. */ - void drawOes(int oesTextureId, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight); - void drawRgb(int textureId, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight); - void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frameHeight, - int viewportX, int viewportY, int viewportWidth, int viewportHeight); + void drawOes(int oesTextureId, float[] texMatrix, int x, int y, int width, int height); + void drawRgb(int textureId, float[] texMatrix, int x, int y, int width, int height); + void drawYuv(int[] yuvTextures, float[] texMatrix, int x, int y, int width, int height); /** * Release all GL resources. This needs to be done manually, otherwise resources may leak. diff --git a/webrtc/api/java/android/org/webrtc/SurfaceViewRenderer.java b/webrtc/api/java/android/org/webrtc/SurfaceViewRenderer.java index c37d24770f..e20f67dc32 100644 --- a/webrtc/api/java/android/org/webrtc/SurfaceViewRenderer.java +++ b/webrtc/api/java/android/org/webrtc/SurfaceViewRenderer.java @@ -489,11 +489,9 @@ public class SurfaceViewRenderer extends SurfaceView } yuvUploader.uploadYuvData( yuvTextures, frame.width, frame.height, frame.yuvStrides, frame.yuvPlanes); - drawer.drawYuv(yuvTextures, texMatrix, frame.rotatedWidth(), frame.rotatedHeight(), - 0, 0, surfaceSize.x, surfaceSize.y); + drawer.drawYuv(yuvTextures, texMatrix, 0, 0, surfaceSize.x, surfaceSize.y); } else { - drawer.drawOes(frame.textureId, texMatrix, frame.rotatedWidth(), frame.rotatedHeight(), - 0, 0, surfaceSize.x, surfaceSize.y); + drawer.drawOes(frame.textureId, texMatrix, 0, 0, surfaceSize.x, surfaceSize.y); } eglBase.swapBuffers(); diff --git a/webrtc/api/java/android/org/webrtc/VideoRendererGui.java b/webrtc/api/java/android/org/webrtc/VideoRendererGui.java index e292bac2ef..82417d6afc 100644 --- a/webrtc/api/java/android/org/webrtc/VideoRendererGui.java +++ b/webrtc/api/java/android/org/webrtc/VideoRendererGui.java @@ -243,8 +243,7 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { GlUtil.checkNoGLES2Error("glBindFramebuffer"); // Copy the OES texture content. This will also normalize the sampling matrix. - drawer.drawOes(pendingFrame.textureId, rotatedSamplingMatrix, - textureCopy.getWidth(), textureCopy.getHeight(), + drawer.drawOes(pendingFrame.textureId, rotatedSamplingMatrix, 0, 0, textureCopy.getWidth(), textureCopy.getHeight()); rotatedSamplingMatrix = RendererCommon.identityMatrix(); @@ -264,10 +263,10 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { // OpenGL defaults to lower left origin - flip viewport position vertically. final int viewportY = screenHeight - displayLayout.bottom; if (rendererType == RendererType.RENDERER_YUV) { - drawer.drawYuv(yuvTextures, texMatrix, videoWidth, videoHeight, + drawer.drawYuv(yuvTextures, texMatrix, displayLayout.left, viewportY, displayLayout.width(), displayLayout.height()); } else { - drawer.drawRgb(textureCopy.getTextureId(), texMatrix, videoWidth, videoHeight, + drawer.drawRgb(textureCopy.getTextureId(), texMatrix, displayLayout.left, viewportY, displayLayout.width(), displayLayout.height()); } diff --git a/webrtc/api/java/src/org/webrtc/MediaCodecVideoEncoder.java b/webrtc/api/java/src/org/webrtc/MediaCodecVideoEncoder.java index 0b5f122209..1f71652350 100644 --- a/webrtc/api/java/src/org/webrtc/MediaCodecVideoEncoder.java +++ b/webrtc/api/java/src/org/webrtc/MediaCodecVideoEncoder.java @@ -395,7 +395,7 @@ 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(oesTextureId, transformationMatrix, width, height, 0, 0, width, height); + drawer.drawOes(oesTextureId, transformationMatrix, 0, 0, width, height); eglBase.swapBuffers(TimeUnit.MICROSECONDS.toNanos(presentationTimestampUs)); return true; }