This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 118c861  [OPENMEETINGS-2041] local microphone is not connected to 
avoid ugly sound
118c861 is described below

commit 118c861ecc8cae3c3add16d5b9fadb1eeefc8248
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Mon Mar 25 14:30:51 2019 +0700

    [OPENMEETINGS-2041] local microphone is not connected to avoid ugly sound
---
 .../apache/openmeetings/web/room/raw-settings.js   | 25 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
index 835c9c3..8d76145 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
@@ -16,11 +16,11 @@ $.widget('openmeetings.iconselectmenu', $.ui.selectmenu, {
 var MicLevel = (function() {
        let ctx, mic, analyser, vol = .0;
 
-       function _meterPeer(rtcPeer, cnvs, _micActivity, _error) {
-               if (!rtcPeer || 'function' !== typeof(rtcPeer.getLocalStream)) {
+       function _meterPeer(rtcPeer, cnvs, _micActivity, _error, connectAudio) {
+               if (!rtcPeer || ('function' !== typeof(rtcPeer.getLocalStream) 
&& 'function' !== typeof(rtcPeer.getRemoteStream))) {
                        return;
                }
-               const stream = rtcPeer.getLocalStream();
+               const stream = rtcPeer.getLocalStream() || 
rtcPeer.getRemoteStream();
                if (!stream || stream.getAudioTracks().length < 1) {
                        return;
                }
@@ -34,7 +34,9 @@ var MicLevel = (function() {
                        analyser = ctx.createAnalyser();
                        mic = ctx.createMediaStreamSource(stream);
                        mic.connect(analyser);
-                       analyser.connect(ctx.destination);
+                       if (connectAudio) {
+                               analyser.connect(ctx.destination);
+                       }
                        _meter(analyser, cnvs, _micActivity, _error);
                } catch (err) {
                        _error(err);
@@ -132,6 +134,9 @@ var VideoSettings = (function() {
                        vid[0].srcObject = null;
                }
                VideoUtil.cleanPeer(rtcPeer);
+               if (!!lm) {
+                       lm.hide();
+               }
                if (!!level) {
                        level.dispose();
                        level = null;
@@ -334,7 +339,7 @@ var VideoSettings = (function() {
                                                if (cnts.audio) {
                                                        lm.show();
                                                        level = MicLevel();
-                                                       
level.meterPeer(rtcPeer, lm, function(){}, OmUtil.error);
+                                                       
level.meterPeer(rtcPeer, lm, function(){}, OmUtil.error, false);
                                                } else {
                                                        lm.hide();
                                                }
@@ -519,6 +524,16 @@ var VideoSettings = (function() {
                                        }
                                break;
                        case 'playResponse':
+                               OmUtil.log('Play SDP answer received from 
server. Processing ...');
+                               rtcPeer.processAnswer(m.sdpAnswer, 
function(error) {
+                                       if (error) {
+                                               return OmUtil.error(error);
+                                       }
+                                       lm.show();
+                                       level = MicLevel();
+                                       level.meterPeer(rtcPeer, lm, 
function(){}, OmUtil.error, true);
+                               });
+                               break;
                        case 'startResponse':
                                OmUtil.log('SDP answer received from server. 
Processing ...');
                                rtcPeer.processAnswer(m.sdpAnswer, 
function(error) {

Reply via email to