Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/utils/webrtc/simplewebrtc/localmedia.js16
-rw-r--r--src/utils/webrtc/simplewebrtc/simplewebrtc.js6
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 })
}