Android: Stop using VideoRenderer class
This CL updates the WebRTC code to stop using the old VideoRenderer and
VideoRenderer.I420Frame classes and instead use the new VideoSink and
VideoFrame classes.
This CL is the first step and the old classes are still left in the code
for now to keep backwards compatibility.
Bug: webrtc:9181
Change-Id: Ib0caa18cbaa2758b7859e850ddcaba003cfb06d6
Reviewed-on: https://webrtc-review.googlesource.com/71662
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22989}
diff --git a/sdk/android/api/org/webrtc/SurfaceEglRenderer.java b/sdk/android/api/org/webrtc/SurfaceEglRenderer.java
index 338871c..350a4cb 100644
--- a/sdk/android/api/org/webrtc/SurfaceEglRenderer.java
+++ b/sdk/android/api/org/webrtc/SurfaceEglRenderer.java
@@ -97,13 +97,6 @@
super.pauseVideo();
}
- // VideoRenderer.Callbacks interface.
- @Override
- public void renderFrame(VideoRenderer.I420Frame frame) {
- updateFrameDimensionsAndReportEvents(frame);
- super.renderFrame(frame);
- }
-
// VideoSink interface.
@Override
public void onFrame(VideoFrame frame) {
@@ -133,33 +126,6 @@
}
// Update frame dimensions and report any changes to |rendererEvents|.
- private void updateFrameDimensionsAndReportEvents(VideoRenderer.I420Frame frame) {
- synchronized (layoutLock) {
- if (isRenderingPaused) {
- return;
- }
- if (!isFirstFrameRendered) {
- isFirstFrameRendered = true;
- logD("Reporting first rendered frame.");
- if (rendererEvents != null) {
- rendererEvents.onFirstFrameRendered();
- }
- }
- if (rotatedFrameWidth != frame.rotatedWidth() || rotatedFrameHeight != frame.rotatedHeight()
- || frameRotation != frame.rotationDegree) {
- logD("Reporting frame resolution changed to " + frame.width + "x" + frame.height
- + " with rotation " + frame.rotationDegree);
- if (rendererEvents != null) {
- rendererEvents.onFrameResolutionChanged(frame.width, frame.height, frame.rotationDegree);
- }
- rotatedFrameWidth = frame.rotatedWidth();
- rotatedFrameHeight = frame.rotatedHeight();
- frameRotation = frame.rotationDegree;
- }
- }
- }
-
- // Update frame dimensions and report any changes to |rendererEvents|.
private void updateFrameDimensionsAndReportEvents(VideoFrame frame) {
synchronized (layoutLock) {
if (isRenderingPaused) {
diff --git a/sdk/android/api/org/webrtc/SurfaceViewRenderer.java b/sdk/android/api/org/webrtc/SurfaceViewRenderer.java
index a8eb57b..c39416c 100644
--- a/sdk/android/api/org/webrtc/SurfaceViewRenderer.java
+++ b/sdk/android/api/org/webrtc/SurfaceViewRenderer.java
@@ -21,9 +21,8 @@
/**
* Display the video stream on a SurfaceView.
*/
-public class SurfaceViewRenderer extends SurfaceView implements SurfaceHolder.Callback,
- VideoRenderer.Callbacks, VideoSink,
- RendererCommon.RendererEvents {
+public class SurfaceViewRenderer extends SurfaceView
+ implements SurfaceHolder.Callback, VideoSink, RendererCommon.RendererEvents {
private static final String TAG = "SurfaceViewRenderer";
// Cached resource name.
@@ -180,12 +179,6 @@
eglRenderer.pauseVideo();
}
- // VideoRenderer.Callbacks interface.
- @Override
- public void renderFrame(VideoRenderer.I420Frame frame) {
- eglRenderer.renderFrame(frame);
- }
-
// VideoSink interface.
@Override
public void onFrame(VideoFrame frame) {
diff --git a/sdk/android/api/org/webrtc/VideoFileRenderer.java b/sdk/android/api/org/webrtc/VideoFileRenderer.java
index 1b9fa48..c599491 100644
--- a/sdk/android/api/org/webrtc/VideoFileRenderer.java
+++ b/sdk/android/api/org/webrtc/VideoFileRenderer.java
@@ -25,7 +25,7 @@
* Can be used to save the video frames to file.
*/
@JNINamespace("webrtc::jni")
-public class VideoFileRenderer implements VideoRenderer.Callbacks, VideoSink {
+public class VideoFileRenderer implements VideoSink {
private static final String TAG = "VideoFileRenderer";
private final HandlerThread renderThread;
@@ -74,13 +74,6 @@
}
@Override
- public void renderFrame(final VideoRenderer.I420Frame i420Frame) {
- final VideoFrame frame = i420Frame.toVideoFrame();
- onFrame(frame);
- frame.release();
- }
-
- @Override
public void onFrame(VideoFrame frame) {
frame.retain();
renderThreadHandler.post(() -> renderFrameOnRenderThread(frame));
diff --git a/sdk/android/api/org/webrtc/VideoFrameDrawer.java b/sdk/android/api/org/webrtc/VideoFrameDrawer.java
index 96292ec..d2c5be2 100644
--- a/sdk/android/api/org/webrtc/VideoFrameDrawer.java
+++ b/sdk/android/api/org/webrtc/VideoFrameDrawer.java
@@ -21,6 +21,7 @@
* drawer.drawYuv depending on the type of the buffer. The frame will be rendered with rotation
* taken into account. You can supply an additional render matrix for custom transformations.
*/
+@JNINamespace("webrtc::jni")
public class VideoFrameDrawer {
/**
* Draws a VideoFrame.TextureBuffer. Calls either drawer.drawOes or drawer.drawRgb
@@ -97,7 +98,7 @@
// Input is packed already.
packedByteBuffer = planes[i];
} else {
- VideoRenderer.nativeCopyPlane(
+ nativeCopyPlane(
planes[i], planeWidths[i], planeHeights[i], strides[i], copyBuffer, planeWidths[i]);
packedByteBuffer = copyBuffer;
}
@@ -228,4 +229,8 @@
yuvUploader.release();
lastI420Frame = null;
}
+
+ // Helper native function to do a video frame plane copying.
+ static native void nativeCopyPlane(
+ ByteBuffer src, int width, int height, int srcStride, ByteBuffer dst, int dstStride);
}
diff --git a/sdk/android/api/org/webrtc/VideoRenderer.java b/sdk/android/api/org/webrtc/VideoRenderer.java
index 402f261..3e75db6 100644
--- a/sdk/android/api/org/webrtc/VideoRenderer.java
+++ b/sdk/android/api/org/webrtc/VideoRenderer.java
@@ -195,10 +195,6 @@
}
}
- // Helper native function to do a video frame plane copying.
- static native void nativeCopyPlane(
- ByteBuffer src, int width, int height, int srcStride, ByteBuffer dst, int dstStride);
-
/** The real meat of VideoSinkInterface. */
public static interface Callbacks {
// |frame| might have pending rotation and implementation of Callbacks