Android: Remove deprecated SurfaceTextureHelper methods
This removal was announced here:
https://groups.google.com/d/msgid/discuss-webrtc/4b2cc67f-a39e-444c-9310-d564bf95eaa1%40googlegroups.com
Bug: webrtc:9412
Change-Id: I3bc780d98b9eb5dc54c4d65fcc929f52850762c5
Reviewed-on: https://webrtc-review.googlesource.com/92381
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24342}
diff --git a/sdk/android/api/org/webrtc/SurfaceTextureHelper.java b/sdk/android/api/org/webrtc/SurfaceTextureHelper.java
index 146eb22..decdd05 100644
--- a/sdk/android/api/org/webrtc/SurfaceTextureHelper.java
+++ b/sdk/android/api/org/webrtc/SurfaceTextureHelper.java
@@ -34,18 +34,6 @@
public class SurfaceTextureHelper {
private static final String TAG = "SurfaceTextureHelper";
/**
- * Callback interface for being notified that a new texture frame is available. The calls will be
- * made on the SurfaceTextureHelper handler thread, with a bound EGLContext. The callee is not
- * allowed to make another EGLContext current on the calling thread.
- *
- * @deprecated Use a VideoSink as listener instead.
- */
- @Deprecated
- public interface OnTextureFrameAvailableListener {
- void onTextureFrameAvailable(int oesTextureId, float[] transformMatrix, long timestampNs);
- }
-
- /**
* Construct a new SurfaceTextureHelper sharing OpenGL resources with |sharedContext|. A dedicated
* thread and handler is created for handling the SurfaceTexture. May return null if EGL fails to
* initialize a pixel buffer surface and make it current.
@@ -81,8 +69,7 @@
private final YuvConverter yuvConverter = new YuvConverter();
// These variables are only accessed from the |handler| thread.
- // The type of |listener| is either a VideoSink or the deprecated OnTextureFrameAvailableListener.
- @Nullable private Object listener;
+ @Nullable private VideoSink listener;
// The possible states of this class.
private boolean hasPendingTexture = false;
private volatile boolean isTextureInUse = false;
@@ -92,9 +79,7 @@
private int textureHeight;
// |pendingListener| is set in setListener() and the runnable is posted to the handler thread.
// setListener() is not allowed to be called again before stopListening(), so this is thread safe.
- // The type of |pendingListener| is either a VideoSink or the deprecated
- // OnTextureFrameAvailableListener.
- @Nullable private Object pendingListener;
+ @Nullable private VideoSink pendingListener;
final Runnable setListenerRunnable = new Runnable() {
@Override
public void run() {
@@ -153,23 +138,8 @@
/**
* Start to stream textures to the given |listener|. If you need to change listener, you need to
* call stopListening() first.
- *
- * @deprecated Use a VideoSink as listener instead.
- */
- @Deprecated
- public void startListening(final OnTextureFrameAvailableListener listener) {
- startListeningInternal(listener);
- }
-
- /**
- * Start to stream textures to the given |listener|. If you need to change listener, you need to
- * call stopListening() first.
*/
public void startListening(final VideoSink listener) {
- startListeningInternal(listener);
- }
-
- private void startListeningInternal(Object listener) {
if (this.listener != null || this.pendingListener != null) {
throw new IllegalStateException("SurfaceTextureHelper listener has already been set.");
}
@@ -179,7 +149,7 @@
/**
* Stop listening. The listener set in startListening() is guaranteded to not receive any more
- * onTextureFrameAvailable() callbacks after this function returns.
+ * onFrame() callbacks after this function returns.
*/
public void stopListening() {
Logging.d(TAG, "stopListening()");
@@ -222,23 +192,16 @@
return surfaceTexture;
}
- /**
- * Retrieve the handler that calls onTextureFrameAvailable(). This handler is valid until
- * dispose() is called.
- */
+ /** Retrieve the handler that calls onFrame(). This handler is valid until dispose() is called. */
public Handler getHandler() {
return handler;
}
/**
- * Call this function to signal that you are done with the frame received in
- * onTextureFrameAvailable(). Only one texture frame can be in flight at once, so you must call
- * this function in order to receive a new frame.
- *
- * @deprecated Use a VideoSink as listener instead.
+ * This function is called when the texture frame is released. Only one texture frame can be in
+ * flight at once, so this function must be called before a new frame is delivered.
*/
- @Deprecated
- public void returnTextureFrame() {
+ private void returnTextureFrame() {
handler.post(() -> {
isTextureInUse = false;
if (isQuitting) {
@@ -255,8 +218,8 @@
/**
* Call disconnect() to stop receiving frames. OpenGL resources are released and the handler is
- * stopped when the texture frame has been returned by a call to returnTextureFrame(). You are
- * guaranteed to not receive any more onTextureFrameAvailable() after this function returns.
+ * stopped when the texture frame has been released. You are guaranteed to not receive any more
+ * onFrame() after this function returns.
*/
public void dispose() {
Logging.d(TAG, "dispose()");
@@ -302,19 +265,16 @@
final float[] transformMatrix = new float[16];
surfaceTexture.getTransformMatrix(transformMatrix);
final long timestampNs = surfaceTexture.getTimestamp();
- if (listener instanceof OnTextureFrameAvailableListener) {
- ((OnTextureFrameAvailableListener) listener)
- .onTextureFrameAvailable(oesTextureId, transformMatrix, timestampNs);
- } else if (listener instanceof VideoSink) {
- if (textureWidth == 0 || textureHeight == 0) {
- throw new RuntimeException("Texture size has not been set.");
- }
- final VideoFrame.Buffer buffer = createTextureBuffer(textureWidth, textureHeight,
- RendererCommon.convertMatrixToAndroidGraphicsMatrix(transformMatrix));
- final VideoFrame frame = new VideoFrame(buffer, frameRotation, timestampNs);
- ((VideoSink) listener).onFrame(frame);
- frame.release();
+ if (textureWidth == 0 || textureHeight == 0) {
+ throw new RuntimeException("Texture size has not been set.");
}
+ final VideoFrame.Buffer buffer =
+ new TextureBufferImpl(textureWidth, textureHeight, TextureBuffer.Type.OES, oesTextureId,
+ RendererCommon.convertMatrixToAndroidGraphicsMatrix(transformMatrix), handler,
+ yuvConverter, this ::returnTextureFrame);
+ final VideoFrame frame = new VideoFrame(buffer, frameRotation, timestampNs);
+ ((VideoSink) listener).onFrame(frame);
+ frame.release();
}
private void release() {
@@ -330,20 +290,4 @@
eglBase.release();
handler.getLooper().quit();
}
-
- /**
- * Creates a VideoFrame buffer backed by this helper's texture. The |width| and |height| should
- * match the dimensions of the data placed in the texture. The correct |transformMatrix| may be
- * obtained from callbacks to OnTextureFrameAvailableListener.
- *
- * The returned TextureBuffer holds a reference to the SurfaceTextureHelper that created it. The
- * buffer calls returnTextureFrame() when it is released.
- *
- * @deprecated Use a VideoSink as listener instead.
- */
- @Deprecated
- public TextureBufferImpl createTextureBuffer(int width, int height, Matrix transformMatrix) {
- return new TextureBufferImpl(width, height, TextureBuffer.Type.OES, oesTextureId,
- transformMatrix, handler, yuvConverter, this ::returnTextureFrame);
- }
}