diff --git a/static/js/mediastream/peercall.js b/static/js/mediastream/peercall.js index 0c1c2041..97a09f3f 100644 --- a/static/js/mediastream/peercall.js +++ b/static/js/mediastream/peercall.js @@ -171,6 +171,8 @@ define(['jquery', 'underscore', 'mediastream/utils', 'mediastream/peerconnection sessionDescription.sdp = utils.maybePreferVideoReceiveCodec(sessionDescription.sdp, params); sessionDescription.sdp = utils.maybeSetAudioReceiveBitRate(sessionDescription.sdp, params); sessionDescription.sdp = utils.maybeSetVideoReceiveBitRate(sessionDescription.sdp, params); + // Apply workarounds. + sessionDescription.sdp = utils.fixLocal(sessionDescription.sdp, params); }; @@ -183,6 +185,8 @@ define(['jquery', 'underscore', 'mediastream/utils', 'mediastream/peerconnection sessionDescription.sdp = utils.maybeSetAudioSendBitRate(sessionDescription.sdp, params); sessionDescription.sdp = utils.maybeSetVideoSendBitRate(sessionDescription.sdp, params); sessionDescription.sdp = utils.maybeSetVideoSendInitialBitRate(sessionDescription.sdp, params); + // Apply workarounds. + sessionDescription.sdp = utils.fixRemote(sessionDescription.sdp, params); }; diff --git a/static/js/mediastream/utils.js b/static/js/mediastream/utils.js index 5cc1b696..d5bd62b1 100644 --- a/static/js/mediastream/utils.js +++ b/static/js/mediastream/utils.js @@ -425,7 +425,21 @@ define([], function() { maybePreferAudioSendCodec: maybePreferAudioSendCodec, maybePreferAudioReceiveCodec: maybePreferAudioReceiveCodec, maybePreferVideoSendCodec: maybePreferVideoSendCodec, - maybePreferVideoReceiveCodec: maybePreferVideoReceiveCodec + maybePreferVideoReceiveCodec: maybePreferVideoReceiveCodec, + fixLocal: function(sdp) { + if (window.webrtcDetectedBrowser === "chrome") { + // Remove all rtx support from locally generated sdp. Chrome + // does create this sometimes wrong. + // TODO(longsleep): Limit to Chrome version, once it is fixed upstream. + // See https://code.google.com/p/webrtc/issues/detail?id=3962 + sdp = sdp.replace(/a=rtpmap:\d+ rtx\/\d+\r\n/i, ""); + sdp = sdp.replace(/a=fmtp:\d+ apt=\d+\r\n/i, ""); + } + return sdp; + }, + fixRemote: function(sdp) { + return sdp; + } } });