diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2021-06-07 15:26:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-07 15:26:34 +0200 |
commit | 0cd2c2247131d62a995063dc0264bc9a56795ebc (patch) | |
tree | dec205d31cc3a477b69d3e7128ee5b9bb9287560 | |
parent | 1b4e1d121751e33cf0edc9d6ee5108c551817100 (diff) | |
parent | e8225cce7603169c8c609bbf72217022cac1e5a6 (diff) |
Merge pull request #5659 from nextcloud/do-not-add-tracks-for-receiver-only-peers
Do not add tracks for receiver only peers
-rw-r--r-- | src/utils/webrtc/simplewebrtc/peer.js | 38 | ||||
-rw-r--r-- | src/utils/webrtc/simplewebrtc/simplewebrtc.js | 1 |
2 files changed, 21 insertions, 18 deletions
diff --git a/src/utils/webrtc/simplewebrtc/peer.js b/src/utils/webrtc/simplewebrtc/peer.js index 3fdfd1864..7acaf4cb8 100644 --- a/src/utils/webrtc/simplewebrtc/peer.js +++ b/src/utils/webrtc/simplewebrtc/peer.js @@ -61,26 +61,28 @@ function Peer(options) { this.pc.addEventListener('signalingstatechange', this.emit.bind(this, 'signalingStateChange')) this.logger = this.parent.logger - // handle screensharing/broadcast mode - if (options.type === 'screen') { - if (this.parent.localScreen && this.sharemyscreen) { - this.logger.log('adding local screen stream to peer connection') - this.pc.addStream(this.parent.localScreen) - this.broadcaster = options.broadcaster - } - } else { - this.parent.localStreams.forEach(function(stream) { - stream.getTracks().forEach(function(track) { - if (track.kind !== 'video' || self.sendVideoIfAvailable) { - self.pc.addTrack(track, stream) - } + if (!options.receiverOnly) { + // handle screensharing/broadcast mode + if (options.type === 'screen') { + if (this.parent.localScreen && this.sharemyscreen) { + this.logger.log('adding local screen stream to peer connection') + this.pc.addStream(this.parent.localScreen) + this.broadcaster = options.broadcaster + } + } else { + this.parent.localStreams.forEach(function(stream) { + stream.getTracks().forEach(function(track) { + if (track.kind !== 'video' || self.sendVideoIfAvailable) { + self.pc.addTrack(track, stream) + } + }) }) - }) - this.handleLocalTrackReplacedBound = this.handleLocalTrackReplaced.bind(this) - // TODO What would happen if the track is replaced while the peer is - // still negotiating the offer and answer? - this.parent.on('localTrackReplaced', this.handleLocalTrackReplacedBound) + this.handleLocalTrackReplacedBound = this.handleLocalTrackReplaced.bind(this) + // TODO What would happen if the track is replaced while the peer is + // still negotiating the offer and answer? + this.parent.on('localTrackReplaced', this.handleLocalTrackReplacedBound) + } } // proxy events to parent diff --git a/src/utils/webrtc/simplewebrtc/simplewebrtc.js b/src/utils/webrtc/simplewebrtc/simplewebrtc.js index b70baa8b2..ab919828e 100644 --- a/src/utils/webrtc/simplewebrtc/simplewebrtc.js +++ b/src/utils/webrtc/simplewebrtc/simplewebrtc.js @@ -104,6 +104,7 @@ function SimpleWebRTC(opts) { sharemyscreen: message.roomType === 'screen' && !message.broadcaster, broadcaster: message.roomType === 'screen' && !message.broadcaster ? self.connection.getSessionId() : null, sendVideoIfAvailable: self.connection.getSendVideoIfAvailable(), + receiverOnly: self.connection.hasFeature('mcu'), }) self.emit('createdPeer', peer) } |