Remove static/default interface method usage. BUG=webrtc:8217 Review-Url: https://codereview.webrtc.org/3010233002 Cr-Original-Commit-Position: refs/heads/master@{#19741} Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc Cr-Mirrored-Commit: 9bc599f6da435acba6fbb2e5e8b43863dcc45c2b
diff --git a/sdk/android/api/org/webrtc/EglBase.java b/sdk/android/api/org/webrtc/EglBase.java index 2a8d4e4..1f90588 100644 --- a/sdk/android/api/org/webrtc/EglBase.java +++ b/sdk/android/api/org/webrtc/EglBase.java
@@ -19,8 +19,7 @@ * Holds EGL state and utility methods for handling an egl 1.0 EGLContext, an EGLDisplay, * and an EGLSurface. */ -@SuppressWarnings("StaticOrDefaultInterfaceMethod") -public interface EglBase { +public abstract class EglBase { // EGL wrapper for an actual EGLContext. public static class Context {} @@ -141,34 +140,34 @@ return new EglBase14(new EglBase14.Context(sharedContext), configAttributes); } - void createSurface(Surface surface); + public abstract void createSurface(Surface surface); // Create EGLSurface from the Android SurfaceTexture. - void createSurface(SurfaceTexture surfaceTexture); + public abstract void createSurface(SurfaceTexture surfaceTexture); // Create dummy 1x1 pixel buffer surface so the context can be made current. - void createDummyPbufferSurface(); + public abstract void createDummyPbufferSurface(); - void createPbufferSurface(int width, int height); + public abstract void createPbufferSurface(int width, int height); - Context getEglBaseContext(); + public abstract Context getEglBaseContext(); - boolean hasSurface(); + public abstract boolean hasSurface(); - int surfaceWidth(); + public abstract int surfaceWidth(); - int surfaceHeight(); + public abstract int surfaceHeight(); - void releaseSurface(); + public abstract void releaseSurface(); - void release(); + public abstract void release(); - void makeCurrent(); + public abstract void makeCurrent(); // Detach the current EGL context, so that it can be made current on another thread. - void detachCurrent(); + public abstract void detachCurrent(); - void swapBuffers(); + public abstract void swapBuffers(); - void swapBuffers(long presentationTimeStampNs); + public abstract void swapBuffers(long presentationTimeStampNs); }
diff --git a/sdk/android/api/org/webrtc/EglRenderer.java b/sdk/android/api/org/webrtc/EglRenderer.java index 08d66a9..d3c9151 100644 --- a/sdk/android/api/org/webrtc/EglRenderer.java +++ b/sdk/android/api/org/webrtc/EglRenderer.java
@@ -622,8 +622,8 @@ drawnFrameHeight, 0, 0, eglBase.surfaceWidth(), eglBase.surfaceHeight()); } else { VideoFrame.TextureBuffer textureBuffer = (VideoFrame.TextureBuffer) buffer; - drawer.drawTexture(textureBuffer, drawMatrix, drawnFrameWidth, drawnFrameHeight, 0, 0, - eglBase.surfaceWidth(), eglBase.surfaceHeight()); + RendererCommon.drawTexture(drawer, textureBuffer, drawMatrix, drawnFrameWidth, + drawnFrameHeight, 0, 0, eglBase.surfaceWidth(), eglBase.surfaceHeight()); } final long swapBuffersStartTimeNs = System.nanoTime(); @@ -689,8 +689,8 @@ frame.getRotatedWidth(), frame.getRotatedHeight(), 0, 0, scaledWidth, scaledHeight); } else { VideoFrame.TextureBuffer textureBuffer = (VideoFrame.TextureBuffer) frame.getBuffer(); - listenerAndParams.drawer.drawTexture(textureBuffer, drawMatrix, frame.getRotatedWidth(), - frame.getRotatedHeight(), 0, 0, scaledWidth, scaledHeight); + RendererCommon.drawTexture(listenerAndParams.drawer, textureBuffer, drawMatrix, + frame.getRotatedWidth(), frame.getRotatedHeight(), 0, 0, scaledWidth, scaledHeight); } final ByteBuffer bitmapBuffer = ByteBuffer.allocateDirect(scaledWidth * scaledHeight * 4);
diff --git a/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java b/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java index 5ccf640..a45e709 100644 --- a/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java +++ b/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java
@@ -616,8 +616,8 @@ // 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.drawTexture(textureBuffer, new Matrix() /* renderMatrix */, width, height, - 0 /* viewportX */, 0 /* viewportY */, width, height); + RendererCommon.drawTexture(drawer, 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/sdk/android/api/org/webrtc/RendererCommon.java b/sdk/android/api/org/webrtc/RendererCommon.java index 8f8d9fe..18d96c2 100644 --- a/sdk/android/api/org/webrtc/RendererCommon.java +++ b/sdk/android/api/org/webrtc/RendererCommon.java
@@ -34,7 +34,6 @@ } /** 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 @@ -49,37 +48,35 @@ 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) + * Release all GL resources. This needs to be done manually, otherwise resources may leak. */ - 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."); - } - } + void release(); + } - /** - * Release all GL resources. This needs to be done manually, otherwise resources may leak. - */ - void release(); + /** + * Draws a VideoFrame.TextureBuffer. Calls either drawer.drawOes or drawer.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) + */ + static void drawTexture(GlDrawer drawer, 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: + drawer.drawOes(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeight, viewportX, + viewportY, viewportWidth, viewportHeight); + break; + case RGB: + drawer.drawRgb(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeight, viewportX, + viewportY, viewportWidth, viewportHeight); + break; + default: + throw new RuntimeException("Unknown texture type."); + } } /**
diff --git a/sdk/android/src/java/org/webrtc/EglBase10.java b/sdk/android/src/java/org/webrtc/EglBase10.java index 70200fa..8f1c5c6 100644 --- a/sdk/android/src/java/org/webrtc/EglBase10.java +++ b/sdk/android/src/java/org/webrtc/EglBase10.java
@@ -26,7 +26,7 @@ * Holds EGL state and utility methods for handling an egl 1.0 EGLContext, an EGLDisplay, * and an EGLSurface. */ -class EglBase10 implements EglBase { +class EglBase10 extends EglBase { // This constant is taken from EGL14.EGL_CONTEXT_CLIENT_VERSION. private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
diff --git a/sdk/android/src/java/org/webrtc/EglBase14.java b/sdk/android/src/java/org/webrtc/EglBase14.java index 44d16d5..92f0958 100644 --- a/sdk/android/src/java/org/webrtc/EglBase14.java +++ b/sdk/android/src/java/org/webrtc/EglBase14.java
@@ -25,7 +25,7 @@ * and an EGLSurface. */ @TargetApi(18) -class EglBase14 implements EglBase { +class EglBase14 extends EglBase { private static final String TAG = "EglBase14"; private static final int EGLExt_SDK_VERSION = android.os.Build.VERSION_CODES.JELLY_BEAN_MR2; private static final int CURRENT_SDK_VERSION = android.os.Build.VERSION.SDK_INT;