...
Для анализа исходного кода возьмем версию модуля stats.js
, которая находится здесь
Выявление скачков одного параметра
1. Инициализация обрабатываемого параметра
Threshold()
code
Здесь:
- запоминается имя параметра и максимально допустимый предел его изменения
- создается фильтр Калмана для этого параметра
...
2. Получение массива параметров WebRTC статистики и проверка параметра
Threshold.isReached()
code
Здесь:
- текущее значение параметра проходит через фильтр Калмана
- если изменение значения превышает допустимую величину, фиксируется скачок параметра
...
1. Добавление параметра в список
Thresholds.add()
code
Code Block | ||||
---|---|---|---|---|
| ||||
add: function(parameter, maxLeap) { if (!thresholds.thresholds[parameter]) { thresholds.thresholds[parameter] = new Threshold(parameter, maxLeap); } }, |
2. Удаление параметра из списка
Thresholds.remove()
code
Code Block | ||||
---|---|---|---|---|
| ||||
remove: function(parameter) { if (thresholds.thresholds[parameter]) { delete thresholds.thresholds[parameter]; } }, |
3. Получение массива параметров WebRTC статистики и проверка списка параметров
Thresholds.isReached()
code
Code Block | ||||
---|---|---|---|---|
| ||||
isReached: function(stats) { let result = false; Object.keys(thresholds.thresholds).forEach((key) => { result = result || thresholds.thresholds[key].isReached(stats); }); return result; } |