diff options
-rw-r--r-- | src/utils/webrtc/simplewebrtc/localmedia.js | 16 | ||||
-rw-r--r-- | src/utils/webrtc/simplewebrtc/simplewebrtc.js | 6 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/utils/webrtc/simplewebrtc/localmedia.js b/src/utils/webrtc/simplewebrtc/localmedia.js index b49a4d744..35b77a0b3 100644 --- a/src/utils/webrtc/simplewebrtc/localmedia.js +++ b/src/utils/webrtc/simplewebrtc/localmedia.js @@ -39,6 +39,9 @@ function LocalMedia(opts) { this._log = this.logger.log.bind(this.logger, 'LocalMedia:') this._logerror = this.logger.error.bind(this.logger, 'LocalMedia:') + this._audioEnabled = true + this._videoEnabled = true + this.localStreams = [] this._audioMonitorStreams = [] this.localScreens = [] @@ -120,6 +123,11 @@ LocalMedia.prototype.start = function(mediaConstraints, cb, context) { self._audioMonitorStreams.push(audioMonitorStream) stream.getTracks().forEach(function(track) { + if ((track.kind === 'audio' && !self._audioEnabled) + || (track.kind === 'video' && !self._videoEnabled)) { + track.enabled = false + } + track.addEventListener('ended', function() { if (isAllTracksEnded(stream)) { self._removeStream(stream) @@ -267,11 +275,11 @@ LocalMedia.prototype.unmute = function() { // Video controls LocalMedia.prototype.pauseVideo = function() { - this._videoEnabled(false) + this._setVideoEnabled(false) this.emit('videoOff') } LocalMedia.prototype.resumeVideo = function() { - this._videoEnabled(true) + this._setVideoEnabled(true) this.emit('videoOn') } @@ -295,7 +303,9 @@ LocalMedia.prototype._setAudioEnabled = function(bool) { }) }) } -LocalMedia.prototype._videoEnabled = function(bool) { +LocalMedia.prototype._setVideoEnabled = function(bool) { + this._videoEnabled = bool + this.localStreams.forEach(function(stream) { stream.getVideoTracks().forEach(function(track) { track.enabled = !!bool diff --git a/src/utils/webrtc/simplewebrtc/simplewebrtc.js b/src/utils/webrtc/simplewebrtc/simplewebrtc.js index bd1aa8bf1..4306111b8 100644 --- a/src/utils/webrtc/simplewebrtc/simplewebrtc.js +++ b/src/utils/webrtc/simplewebrtc/simplewebrtc.js @@ -111,8 +111,10 @@ function SimpleWebRTC(opts) { } else if (message.type === 'control') { if (message.payload.action === 'forceMute') { if (message.payload.peerId === self.connection.getSessionId()) { - self.mute() - self.emit('forcedMute') + if (self.webrtc.isAudioEnabled()) { + self.mute() + self.emit('forcedMute') + } } else { self.emit('mute', { id: message.payload.peerId }) } |