Improve WebRTC audio quality

pull/2302/head
Rodrigo Nascimento 9 years ago
parent 3d997eabe7
commit 341896b6a8
  1. 29
      packages/rocketchat-webrtc/WebRTCClass.coffee
  2. 3
      packages/rocketchat-webrtc/adapter.js

@ -324,9 +324,30 @@ class WebRTCClass
return peerConnection
_getUserMedia: (media, onSuccess, onError) ->
onSuccessLocal = (stream) ->
if AudioContext? and stream.getAudioTracks().length > 0
audioContext = new AudioContext
source = audioContext.createMediaStreamSource(stream)
volume = audioContext.createGain()
source.connect(volume)
peer = audioContext.createMediaStreamDestination()
volume.connect(peer)
volume.gain.value = 0.6
stream.removeTrack(stream.getAudioTracks()[0])
stream.addTrack(peer.stream.getAudioTracks()[0])
stream.volume = volume
onSuccess(stream)
navigator.getUserMedia media, onSuccessLocal, onError
getUserMedia: (media, onSuccess, onError=@onError) ->
if media.desktop isnt true
navigator.getUserMedia media, onSuccess, onError
@_getUserMedia media, onSuccess, onError
return
if @screenShareAvailable isnt true
@ -371,7 +392,7 @@ class WebRTCClass
video:
mozMediaSource: 'window'
mediaSource: 'window'
navigator.getUserMedia media, getScreenSuccess, onError
@_getUserMedia media, getScreenSuccess, onError
else
ChromeScreenShare.getSourceId (id) =>
console.log id
@ -384,7 +405,7 @@ class WebRTCClass
maxWidth: 1280
maxHeight: 720
navigator.getUserMedia media, getScreenSuccess, onError
@_getUserMedia media, getScreenSuccess, onError
if @navigator is 'firefox' or not media.audio? or media.audio is false
getScreen()
@ -395,7 +416,7 @@ class WebRTCClass
getAudioError = =>
getScreen()
navigator.getUserMedia {audio: media.audio}, getAudioSuccess, getAudioError
@_getUserMedia {audio: media.audio}, getAudioSuccess, getAudioError
###

@ -2,4 +2,5 @@ window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnecti
window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;
window.RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate || window.webkitRTCIceCandidate;
window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
window.AudioContext = window.AudioContext || window.mozAudioContext || window.webkitAudioContext;
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;

Loading…
Cancel
Save