|
|
@@ -18,6 +18,7 @@ var GlobalOnErrorHandler = require("./modules/util/GlobalOnErrorHandler");
|
|
18
|
18
|
var JitsiConferenceEventManager = require("./JitsiConferenceEventManager");
|
|
19
|
19
|
var VideoType = require('./service/RTC/VideoType');
|
|
20
|
20
|
var Transcriber = require("./modules/transcription/transcriber");
|
|
|
21
|
+var TalkMutedDetection = require("./modules/talkmuted/TalkMutedDetection");
|
|
21
|
22
|
var ParticipantConnectionStatus
|
|
22
|
23
|
= require("./modules/connectivity/ParticipantConnectionStatus");
|
|
23
|
24
|
|
|
|
@@ -114,6 +115,16 @@ JitsiConference.prototype._init = function (options) {
|
|
114
|
115
|
// Always add listeners because on reload we are executing leave and the
|
|
115
|
116
|
// listeners are removed from statistics module.
|
|
116
|
117
|
this.eventManager.setupStatisticsListeners();
|
|
|
118
|
+
|
|
|
119
|
+ this.talkMutedDetection = new TalkMutedDetection(function () {
|
|
|
120
|
+ this.eventEmitter.emit(JitsiConferenceEvents.TALK_WHILE_MUTED);
|
|
|
121
|
+ }.bind(this));
|
|
|
122
|
+ this.statistics.addAudioLevelListener(
|
|
|
123
|
+ this.talkMutedDetection.audioLevelListener
|
|
|
124
|
+ .bind(this.talkMutedDetection));
|
|
|
125
|
+ this.eventEmitter.on(
|
|
|
126
|
+ JitsiConferenceEvents.TRACK_MUTE_CHANGED,
|
|
|
127
|
+ this.talkMutedDetection.muteChanged.bind(this.talkMutedDetection));
|
|
117
|
128
|
}
|
|
118
|
129
|
|
|
119
|
130
|
/**
|
|
|
@@ -456,6 +467,9 @@ JitsiConference.prototype.addTrack = function (track) {
|
|
456
|
467
|
this.room.setVideoMute(track.isMuted());
|
|
457
|
468
|
}
|
|
458
|
469
|
|
|
|
470
|
+ if (this.talkMutedDetection && track.isAudioTrack())
|
|
|
471
|
+ this.talkMutedDetection.addTrack(track);
|
|
|
472
|
+
|
|
459
|
473
|
track.muteHandler = this._fireMuteChangeEvent.bind(this, track);
|
|
460
|
474
|
track.audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
|
|
461
|
475
|
track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED,
|