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
path: root/src
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2022-04-29 05:49:15 +0300
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2022-08-31 14:05:20 +0300
commit9036b8879eddd3c36065d58469f1335a75c30fe4 (patch)
tree9c96f762db31dd5b9a51cedc7f88f88f371cf55b /src
parent841e158f0ad3a893c7db8178a46662f8954977d2 (diff)
Disconnect received videos by toggling the video directly in Janus
Originally the HPB required a renegotiation to block the received videos. However, besides the standard WebRTC way, Janus also supports directly toggling on and off the video without any renegotiation. This is now exposed by the signaling server through the "selectStream" message, so the video is now blocked using that approach instead. The previous code to block the video using a renegotiation is still kept, though, as it could be used without HPB once all the clients support renegotiations. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/utils/webrtc/simplewebrtc/peer.js13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/utils/webrtc/simplewebrtc/peer.js b/src/utils/webrtc/simplewebrtc/peer.js
index df67298fd..fea3aa592 100644
--- a/src/utils/webrtc/simplewebrtc/peer.js
+++ b/src/utils/webrtc/simplewebrtc/peer.js
@@ -886,6 +886,19 @@ Peer.prototype.setRemoteVideoBlocked = function(remoteVideoBlocked) {
return
}
+ // If the HPB is used the remote video can be blocked through a standard
+ // WebRTC renegotiation or by toggling the video directly in Janus. The last
+ // one is preferred, as it requires less signaling messages to be exchanged
+ // and, besides that, the browser starts to decode the video faster once
+ // enabled again.
+ if (this.receiverOnly && this.parent.config.connection.hasFeature('update-sdp')) {
+ this.send('selectStream', {
+ video: !remoteVideoBlocked,
+ })
+
+ return
+ }
+
this._remoteVideoShouldBeBlocked = remoteVideoBlocked
// The "negotiationneeded" event is emitted if needed based on the direction