UNPKG

sinch-rtc

Version:

RTC JavaScript/Web SDK

45 lines 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZeroAudioLevelDetector = void 0; const WebRtcStatsUtils_1 = require("../../../WebRtcStatsUtils"); const CallQualityWarningEventType_1 = require("../../CallQualityWarningEventType"); const StatsBuffer_1 = require("../../StatsBuffer"); const WebRtcStatsDetector_1 = require("../WebRtcStatsDetector"); class ZeroAudioLevelDetector extends WebRtcStatsDetector_1.WebRtcStatsDetector { constructor(statsIntervalMs, handler, fanout) { super(fanout); this.handler = handler; this.lastStatTimestamp = -1; this.statsBuffer = new StatsBuffer_1.StatsBuffer((0, WebRtcStatsUtils_1.calculateBufferSize)(ZeroAudioLevelDetector.AUDIO_STATS_COVERED_TIME_SPAN_MS, statsIntervalMs)); } onNewWebRtcStats(report) { const audioStats = this.handler.getAudioLevelStats(report); const audioLevelValue = audioStats === null || audioStats === void 0 ? void 0 : audioStats[ZeroAudioLevelDetector.AUDIO_LEVEL_KEY]; const statsTimestamp = audioStats === null || audioStats === void 0 ? void 0 : audioStats[WebRtcStatsDetector_1.WebRtcStatsDetector.TIMESTAMP_KEY]; if (audioLevelValue === undefined || statsTimestamp === undefined || statsTimestamp <= this.lastStatTimestamp) { return; } this.lastStatTimestamp = statsTimestamp; this.handleNewAudioLevelValue(audioLevelValue); } handleNewAudioLevelValue(audioLevelValue) { this.statsBuffer.add(audioLevelValue); if (!this.statsBuffer.isFull) { return; } if (this.statsBuffer.allZeros) { if (!this.isInTriggeredState) { this.emitWarning(this.handler.createWarningEvent(CallQualityWarningEventType_1.CallQualityWarningEventType.Trigger)); } } else if (this.isInTriggeredState) { this.emitWarning(this.handler.createWarningEvent(CallQualityWarningEventType_1.CallQualityWarningEventType.Recover)); } } } exports.ZeroAudioLevelDetector = ZeroAudioLevelDetector; ZeroAudioLevelDetector.AUDIO_LEVEL_KEY = "audioLevel"; ZeroAudioLevelDetector.AUDIO_STATS_COVERED_TIME_SPAN_MS = 2000; //# sourceMappingURL=ZeroAudioLevelDetector.js.map