Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Unified Diff: talk/app/webrtc/java/src/org/webrtc/PeerConnection.java

Issue 1368143002: Java binding for RtpSender/RtpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Getting rid of updateSenders. Instead, getSenders will update the stored list and dispose of old ob… Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
diff --git a/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java b/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
index 40ac615dcc484146204c7dc4bbda9b7a449ece10..9df0c479c1aa6972cdc27ba76b56e7bf1ef04a93 100644
--- a/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
+++ b/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
@@ -170,11 +170,15 @@ public class PeerConnection {
private final List<MediaStream> localStreams;
private final long nativePeerConnection;
private final long nativeObserver;
+ private List<RtpSender> senders;
+ private List<RtpReceiver> receivers;
PeerConnection(long nativePeerConnection, long nativeObserver) {
this.nativePeerConnection = nativePeerConnection;
this.nativeObserver = nativeObserver;
localStreams = new LinkedList<MediaStream>();
+ senders = new LinkedList<RtpSender>();
+ receivers = new LinkedList<RtpReceiver>();
}
// JsepInterface.
@@ -191,11 +195,15 @@ public class PeerConnection {
public native void createAnswer(
SdpObserver observer, MediaConstraints constraints);
- public native void setLocalDescription(
- SdpObserver observer, SessionDescription sdp);
+ public void setLocalDescription(
AlexG 2015/10/02 22:44:35 This change is not needed now - you can revert bac
Taylor Brandstetter 2015/10/03 01:50:10 Done.
+ SdpObserver observer, SessionDescription sdp) {
+ nativeSetLocalDescription(observer, sdp);
+ }
- public native void setRemoteDescription(
- SdpObserver observer, SessionDescription sdp);
+ public void setRemoteDescription(
AlexG 2015/10/02 22:44:35 ditto: revert back to native
Taylor Brandstetter 2015/10/03 01:50:10 Done.
+ SdpObserver observer, SessionDescription sdp) {
+ nativeSetRemoteDescription(observer, sdp);
+ }
public native boolean setConfiguration(RTCConfiguration config);
@@ -218,6 +226,24 @@ public class PeerConnection {
localStreams.remove(stream);
}
+ // Note that calling getSenders will dispose of the senders previously
+ // returned (and same goes for getReceivers).
+ public List<RtpSender> getSenders() {
+ for (RtpSender sender : senders) {
+ sender.dispose();
+ }
+ senders = nativeGetSenders();
+ return new ArrayList<RtpSender>(senders);
AlexG 2015/10/02 22:44:35 why new here? You can return senders directly with
Taylor Brandstetter 2015/10/03 01:50:10 Because if the caller of getSenders() modified the
AlexG 2015/10/05 22:44:53 May be you can use Collections.unmodifiableList fo
+ }
+
+ public List<RtpReceiver> getReceivers() {
+ for (RtpReceiver receiver : receivers) {
+ receiver.dispose();
+ }
+ receivers = nativeGetReceivers();
+ return new ArrayList<RtpReceiver>(receivers);
AlexG 2015/10/02 22:44:35 ditto: return receivers without making extra copy
Taylor Brandstetter 2015/10/03 01:50:10 See above.
+ }
+
public boolean getStats(StatsObserver observer, MediaStreamTrack track) {
return nativeGetStats(observer, (track == null) ? 0 : track.nativeTrack);
}
@@ -239,6 +265,14 @@ public class PeerConnection {
stream.dispose();
}
localStreams.clear();
+ for (RtpSender sender : senders) {
+ sender.dispose();
+ }
+ senders.clear();
+ for (RtpReceiver receiver : receivers) {
+ receiver.dispose();
+ }
+ receivers.clear();
freePeerConnection(nativePeerConnection);
freeObserver(nativeObserver);
}
@@ -250,10 +284,18 @@ public class PeerConnection {
private native boolean nativeAddIceCandidate(
String sdpMid, int sdpMLineIndex, String iceCandidateSdp);
+ public native void nativeSetLocalDescription(SdpObserver observer, SessionDescription sdp);
+
+ public native void nativeSetRemoteDescription(SdpObserver observer, SessionDescription sdp);
+
private native boolean nativeAddLocalStream(long nativeStream);
private native void nativeRemoveLocalStream(long nativeStream);
private native boolean nativeGetStats(
StatsObserver observer, long nativeTrack);
+
+ private native List<RtpSender> nativeGetSenders();
+
+ private native List<RtpReceiver> nativeGetReceivers();
}

Powered by Google App Engine
This is Rietveld 408576698