diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2022-05-02 09:18:54 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 09:18:54 +0300 |
commit | 18fd7541a9c1866bf4a56d83baf9221ff894b271 (patch) | |
tree | 489515650a8853059367445050f4a18e531196a7 | |
parent | 0aec76a2833bbc85850bd2f8962ab0b472620d3f (diff) | |
parent | 5fb3e546ab5becd0058854efde987f33cac421a2 (diff) |
Merge pull request #7262 from nextcloud/fix-setting-sender-kind-from-transceiver-kind
Fix setting sender kind from transceiver kind
-rw-r--r-- | src/utils/webrtc/simplewebrtc/peer.js | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/utils/webrtc/simplewebrtc/peer.js b/src/utils/webrtc/simplewebrtc/peer.js index 6b0a987a8..97b146447 100644 --- a/src/utils/webrtc/simplewebrtc/peer.js +++ b/src/utils/webrtc/simplewebrtc/peer.js @@ -427,6 +427,24 @@ Peer.prototype.handleOffer = function(offer) { }) } +Peer.prototype._getTransceiverKind = function(transceiver) { + // Transceivers for HPB subscribers have the transceiver kind in its mid. + if (transceiver.mid === 'audio' || transceiver.mid === 'video') { + return transceiver.mid + } + + // In general, the transceiver kind can be got from the receiver track, as + // it will always be there, even if the transceiver is inactive or the + // remote sender never had a track. + if (transceiver.receiver && transceiver.receiver.track) { + return transceiver.receiver.track.kind + } + + console.debug('Transceiver kind could not be determined: ', transceiver) + + return null +} + /** * Blocks remote video based on "_remoteVideoShouldBeBlocked". * @@ -777,7 +795,7 @@ Peer.prototype._replaceTrack = async function(newTrack, oldTrack, stream) { } else if (!sender.kind) { this.pc.getTransceivers().forEach(transceiver => { if (transceiver.sender === sender) { - sender.kind = transceiver.mid + sender.kind = this._getTransceiverKind(transceiver) } }) } |