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}
This commit is contained in:
Magnus Jedvert
2018-04-23 16:14:47 +02:00
committed by Commit Bot
parent b9ac121598
commit e987f2b765
15 changed files with 137 additions and 187 deletions

View File

@ -66,7 +66,6 @@ import org.webrtc.StatsReport;
import org.webrtc.VideoCapturer;
import org.webrtc.VideoDecoderFactory;
import org.webrtc.VideoEncoderFactory;
import org.webrtc.VideoRenderer;
import org.webrtc.VideoSink;
import org.webrtc.VideoSource;
import org.webrtc.VideoTrack;
@ -147,8 +146,7 @@ public class PeerConnectionClient {
private boolean isError;
@Nullable
private VideoSink localRender;
@Nullable
private List<VideoRenderer.Callbacks> remoteRenders;
@Nullable private List<VideoSink> remoteSinks;
private SignalingParameters signalingParameters;
private int videoWidth;
private int videoHeight;
@ -356,25 +354,23 @@ public class PeerConnectionClient {
executor.execute(() -> createPeerConnectionFactoryInternal(options));
}
public void createPeerConnection(final VideoSink localRender,
final VideoRenderer.Callbacks remoteRender, final VideoCapturer videoCapturer,
final SignalingParameters signalingParameters) {
public void createPeerConnection(final VideoSink localRender, final VideoSink remoteSink,
final VideoCapturer videoCapturer, final SignalingParameters signalingParameters) {
if (peerConnectionParameters.videoCallEnabled && videoCapturer == null) {
Log.w(TAG, "Video call enabled but no video capturer provided.");
}
createPeerConnection(
localRender, Collections.singletonList(remoteRender), videoCapturer, signalingParameters);
localRender, Collections.singletonList(remoteSink), videoCapturer, signalingParameters);
}
public void createPeerConnection(final VideoSink localRender,
final List<VideoRenderer.Callbacks> remoteRenders, final VideoCapturer videoCapturer,
final SignalingParameters signalingParameters) {
public void createPeerConnection(final VideoSink localRender, final List<VideoSink> remoteSinks,
final VideoCapturer videoCapturer, final SignalingParameters signalingParameters) {
if (peerConnectionParameters == null) {
Log.e(TAG, "Creating peer connection without initializing factory.");
return;
}
this.localRender = localRender;
this.remoteRenders = remoteRenders;
this.remoteSinks = remoteSinks;
this.videoCapturer = videoCapturer;
this.signalingParameters = signalingParameters;
executor.execute(() -> {
@ -685,8 +681,8 @@ public class PeerConnectionClient {
// answer to get the remote track.
remoteVideoTrack = getRemoteVideoTrack();
remoteVideoTrack.setEnabled(renderVideo);
for (VideoRenderer.Callbacks remoteRender : remoteRenders) {
remoteVideoTrack.addRenderer(new VideoRenderer(remoteRender));
for (VideoSink remoteSink : remoteSinks) {
remoteVideoTrack.addSink(remoteSink);
}
}
peerConnection.addTrack(createAudioTrack(), mediaStreamLabels);
@ -781,7 +777,7 @@ public class PeerConnectionClient {
saveRecordedAudioToFile = null;
}
localRender = null;
remoteRenders = null;
remoteSinks = null;
Log.d(TAG, "Closing peer connection factory.");
if (factory != null) {
factory.dispose();