From 65c4388a43701f037980da175e5515af2a2b7f7d Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 23 Nov 2017 21:34:10 +0100 Subject: [PATCH] Clean up Signed-off-by: Mario Danic --- .../webrtc/MagicPeerConnectionObserver.java | 85 -------- .../webrtc/MagicPeerConnectionWrapper.java | 190 ++++++++++++------ .../talk/webrtc/MagicSdpObserver.java | 48 ----- 3 files changed, 123 insertions(+), 200 deletions(-) delete mode 100644 app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionObserver.java delete mode 100644 app/src/main/java/com/nextcloud/talk/webrtc/MagicSdpObserver.java diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionObserver.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionObserver.java deleted file mode 100644 index d1cb7c786..000000000 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionObserver.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nextcloud.talk.webrtc; - -import org.webrtc.DataChannel; -import org.webrtc.IceCandidate; -import org.webrtc.MediaStream; -import org.webrtc.PeerConnection; -import org.webrtc.RtpReceiver; - - -public class MagicPeerConnectionObserver implements PeerConnection.Observer { - private static final String TAG = "MagicPeerConnectionObserver"; - - - @Override - public void onSignalingChange(PeerConnection.SignalingState signalingState) { - } - - @Override - public void onIceConnectionChange(PeerConnection.IceConnectionState iceConnectionState) { - - } - - @Override - public void onIceConnectionReceivingChange(boolean b) { - - } - - @Override - public void onIceGatheringChange(PeerConnection.IceGatheringState iceGatheringState) { - - } - - @Override - public void onIceCandidate(IceCandidate iceCandidate) { - } - - @Override - public void onIceCandidatesRemoved(IceCandidate[] iceCandidates) { - - } - - @Override - public void onAddStream(MediaStream mediaStream) { - } - - @Override - public void onRemoveStream(MediaStream mediaStream) { - - } - - @Override - public void onDataChannel(DataChannel dataChannel) { - - } - - @Override - public void onRenegotiationNeeded() { - - } - - @Override - public void onAddTrack(RtpReceiver rtpReceiver, MediaStream[] mediaStreams) { - - } -} diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java index 957e10a23..46ae54bef 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java @@ -35,6 +35,8 @@ import org.webrtc.MediaConstraints; import org.webrtc.MediaStream; import org.webrtc.PeerConnection; import org.webrtc.PeerConnectionFactory; +import org.webrtc.RtpReceiver; +import org.webrtc.SdpObserver; import org.webrtc.SessionDescription; import java.io.IOException; @@ -53,7 +55,9 @@ public class MagicPeerConnectionWrapper { private MediaConstraints mediaConstraints; private DataChannel magicDataChannel; private MagicSdpObserver magicSdpObserver; - private MagicPeerConnectionObserver magicPeerConnectionObserver; + + private boolean audioOn; + private boolean videoOn; public MagicPeerConnectionWrapper(PeerConnectionFactory peerConnectionFactory, List iceServerList, @@ -62,33 +66,8 @@ public class MagicPeerConnectionWrapper { this.iceServers = iceServerList; - magicPeerConnectionObserver = new MagicPeerConnectionObserver() { - @Override - public void onAddStream(MediaStream mediaStream) { - EventBus.getDefault().post(new MediaStreamEvent(mediaStream, sessionId)); - } - - @Override - public void onIceCandidate(IceCandidate iceCandidate) { - NCIceCandidate ncIceCandidate = new NCIceCandidate(); - ncIceCandidate.setSdpMid(iceCandidate.sdpMid); - ncIceCandidate.setSdpMLineIndex(iceCandidate.sdpMLineIndex); - ncIceCandidate.setCandidate(iceCandidate.sdp); - /*if (peerConnection.getRemoteDescription() == null) { - localCandidates.add(ncIceCandidate); - } else { - EventBus.getDefault().post(new SessionDescriptionSendEvent(null, sessionId, - "candidate", ncIceCandidate)); - }*/ - EventBus.getDefault().post(new SessionDescriptionSendEvent(null, sessionId, - "candidate", ncIceCandidate)); - - } - - }; - peerConnection = peerConnectionFactory.createPeerConnection(iceServerList, mediaConstraints, - magicPeerConnectionObserver); + new MagicPeerConnectionObserver()); DataChannel.Init init = new DataChannel.Init(); init.negotiated = false; @@ -98,46 +77,7 @@ public class MagicPeerConnectionWrapper { this.sessionId = sessionId; this.mediaConstraints = mediaConstraints; - magicSdpObserver = new MagicSdpObserver() { - @Override - public void onCreateFailure(String s) { - Log.d(TAG, s); - } - - @Override - public void onSetFailure(String s) { - Log.d(TAG, s); - } - - @Override - public void onCreateSuccess(SessionDescription sessionDescription) { - super.onCreateSuccess(sessionDescription); - - peerConnection.setLocalDescription(magicSdpObserver, sessionDescription); - } - - @Override - public void onSetSuccess() { - if (peerConnection.getRemoteDescription() == null) { - EventBus.getDefault().post(new SessionDescriptionSendEvent(peerConnection.getLocalDescription(), sessionId, - peerConnection.getLocalDescription().type.canonicalForm(), null)); - - } else if (peerConnection.getLocalDescription() == null && peerConnection.getRemoteDescription().type - .canonicalForm().equals - ("offer")) { - peerConnection.createAnswer(magicSdpObserver, mediaConstraints); - } else if ((peerConnection.getLocalDescription() != null && peerConnection.getRemoteDescription().type - .canonicalForm().equals - ("offer"))) { - EventBus.getDefault().post(new SessionDescriptionSendEvent(peerConnection.getLocalDescription(), sessionId, - peerConnection.getLocalDescription().type.canonicalForm(), null)); - } else if (peerConnection.getRemoteDescription() != null) { - drainIceCandidates(); - sendLocalCandidates(); - } - } - - }; + magicSdpObserver = new MagicSdpObserver(); } @@ -236,6 +176,122 @@ public class MagicPeerConnectionWrapper { data.get(bytes); String strData = new String(bytes); Log.d(TAG, "Got msg: " + strData + " over " + TAG + " " + sessionId); + + // We use media stream to determine if audio or video is on rather than data + // channel messages + } + } + + private class MagicPeerConnectionObserver implements PeerConnection.Observer { + private final String TAG = "MagicPeerConnectionObserver"; + + @Override + public void onSignalingChange(PeerConnection.SignalingState signalingState) { + + } + + @Override + public void onIceConnectionChange(PeerConnection.IceConnectionState iceConnectionState) { + + } + + @Override + public void onIceConnectionReceivingChange(boolean b) { + + } + + @Override + public void onIceGatheringChange(PeerConnection.IceGatheringState iceGatheringState) { + + } + + @Override + public void onIceCandidate(IceCandidate iceCandidate) { + NCIceCandidate ncIceCandidate = new NCIceCandidate(); + ncIceCandidate.setSdpMid(iceCandidate.sdpMid); + ncIceCandidate.setSdpMLineIndex(iceCandidate.sdpMLineIndex); + ncIceCandidate.setCandidate(iceCandidate.sdp); + /*if (peerConnection.getRemoteDescription() == null) { + localCandidates.add(ncIceCandidate); + } else { + EventBus.getDefault().post(new SessionDescriptionSendEvent(null, sessionId, + "candidate", ncIceCandidate)); + }*/ + EventBus.getDefault().post(new SessionDescriptionSendEvent(null, sessionId, + "candidate", ncIceCandidate)); + } + + @Override + public void onIceCandidatesRemoved(IceCandidate[] iceCandidates) { + + } + + @Override + public void onAddStream(MediaStream mediaStream) { + videoOn = mediaStream.videoTracks.size() == 1; + audioOn = mediaStream.audioTracks.size() == 1; + EventBus.getDefault().post(new MediaStreamEvent(mediaStream, sessionId)); + } + + @Override + public void onRemoveStream(MediaStream mediaStream) { + videoOn = mediaStream.videoTracks.size() == 1; + audioOn = mediaStream.audioTracks.size() == 1; + } + + @Override + public void onDataChannel(DataChannel dataChannel) { + + } + + @Override + public void onRenegotiationNeeded() { + + } + + @Override + public void onAddTrack(RtpReceiver rtpReceiver, MediaStream[] mediaStreams) { + + } + } + + private class MagicSdpObserver implements SdpObserver { + private final String TAG = "MagicSdpObserver"; + + @Override + public void onCreateFailure(String s) { + Log.d(TAG, s); + } + + @Override + public void onSetFailure(String s) { + Log.d(TAG, s); + } + + @Override + public void onCreateSuccess(SessionDescription sessionDescription) { + peerConnection.setLocalDescription(magicSdpObserver, sessionDescription); + } + + @Override + public void onSetSuccess() { + if (peerConnection.getRemoteDescription() == null) { + EventBus.getDefault().post(new SessionDescriptionSendEvent(peerConnection.getLocalDescription(), sessionId, + peerConnection.getLocalDescription().type.canonicalForm(), null)); + + } else if (peerConnection.getLocalDescription() == null && peerConnection.getRemoteDescription().type + .canonicalForm().equals + ("offer")) { + peerConnection.createAnswer(magicSdpObserver, mediaConstraints); + } else if ((peerConnection.getLocalDescription() != null && peerConnection.getRemoteDescription().type + .canonicalForm().equals + ("offer"))) { + EventBus.getDefault().post(new SessionDescriptionSendEvent(peerConnection.getLocalDescription(), sessionId, + peerConnection.getLocalDescription().type.canonicalForm(), null)); + } else if (peerConnection.getRemoteDescription() != null) { + drainIceCandidates(); + sendLocalCandidates(); + } } } } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicSdpObserver.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicSdpObserver.java deleted file mode 100644 index c6cf44b79..000000000 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicSdpObserver.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nextcloud.talk.webrtc; - -import org.webrtc.SdpObserver; -import org.webrtc.SessionDescription; - -public class MagicSdpObserver implements SdpObserver { - private static final String TAG = "MagicSdpObserver"; - - @Override - public void onCreateSuccess(SessionDescription sessionDescription) { - - } - - @Override - public void onSetSuccess() { - - } - - @Override - public void onCreateFailure(String s) { - - } - - @Override - public void onSetFailure(String s) { - - } -}