|
@@ -79,7 +79,7 @@ export default class VADTalkMutedDetection extends EventEmitter {
|
79
|
79
|
* we destroy it ( when changing the device for instance), or when we use it from an external point of entry
|
80
|
80
|
* i.e. (TRACK_MUTE_CHANGED event callback).
|
81
|
81
|
*/
|
82
|
|
- this._vadInitTracker = null;
|
|
82
|
+ this._vadInitTracker = Promise.resolve();
|
83
|
83
|
|
84
|
84
|
/**
|
85
|
85
|
* Listens for {@link TrackVADEmitter} events and processes them.
|
|
@@ -189,7 +189,7 @@ export default class VADTalkMutedDetection extends EventEmitter {
|
189
|
189
|
if (track.isLocalAudioTrack()) {
|
190
|
190
|
// Keep a track promise so we take into account successive TRACK_ADD events being generated so that we
|
191
|
191
|
// destroy/create the processing context in the proper order.
|
192
|
|
- this._vadInitTracker = this._createVADProcessor()
|
|
192
|
+ this._vadInitTracker = this._vadInitTracker.then(() => this._createVADProcessor())
|
193
|
193
|
.then(vadProcessor =>
|
194
|
194
|
TrackVADEmitter.create(track.getDeviceId(), VAD_EMITTER_SAMPLE_RATE, vadProcessor)
|
195
|
195
|
)
|
|
@@ -214,9 +214,9 @@ export default class VADTalkMutedDetection extends EventEmitter {
|
214
|
214
|
* @listens TRACK_MUTE_CHANGED
|
215
|
215
|
*/
|
216
|
216
|
_trackMuteChanged(track) {
|
217
|
|
- if (track.isLocalAudioTrack() && this._vadInitTracker) {
|
|
217
|
+ if (track.isLocalAudioTrack()) {
|
218
|
218
|
// On a mute toggle reset the state.
|
219
|
|
- this._vadInitTracker.then(() => {
|
|
219
|
+ this._vadInitTracker = this._vadInitTracker.then(() => {
|
220
|
220
|
|
221
|
221
|
// Reset the processing context in between muted states so that each individual mute phase can generate
|
222
|
222
|
// it's own event.
|
|
@@ -239,9 +239,9 @@ export default class VADTalkMutedDetection extends EventEmitter {
|
239
|
239
|
* @listens TRACK_REMOVED
|
240
|
240
|
*/
|
241
|
241
|
_trackRemoved(track) {
|
242
|
|
- if (track.isLocalAudioTrack() && this._vadInitTracker) {
|
|
242
|
+ if (track.isLocalAudioTrack()) {
|
243
|
243
|
// Use the promise to make sure operations are in sequence.
|
244
|
|
- this._vadInitTracker.then(() => {
|
|
244
|
+ this._vadInitTracker = this._vadInitTracker.then(() => {
|
245
|
245
|
logger.debug('Removing track from VAD detection - ', track.getTrackLabel());
|
246
|
246
|
|
247
|
247
|
if (this._vadEmitter) {
|
|
@@ -250,8 +250,6 @@ export default class VADTalkMutedDetection extends EventEmitter {
|
250
|
250
|
this._vadEmitter.destroy();
|
251
|
251
|
this._vadEmitter = null;
|
252
|
252
|
}
|
253
|
|
-
|
254
|
|
- this._vadInitTracker = null;
|
255
|
253
|
});
|
256
|
254
|
}
|
257
|
255
|
}
|