@webex/plugin-meetings 2.37.0 → 2.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +7 -46
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +1 -5
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -42
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +10 -28
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +101 -193
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +87 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +16 -81
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +74 -137
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +64 -110
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +3 -17
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +120 -192
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +0 -13
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +812 -1487
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +31 -78
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +157 -227
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +25 -169
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +179 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +3 -21
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +451 -570
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +7 -30
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +94 -148
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -89
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +17 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +2 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +68 -184
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +21 -56
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +48 -136
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +28 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +60 -190
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js +10 -24
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +100 -166
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js +0 -2
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +0 -5
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +294 -468
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js +1 -12
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +15 -85
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +42 -94
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +81 -148
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +2 -39
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +8 -52
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js +0 -26
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +68 -168
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +54 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +17 -17
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +11 -11
- package/src/constants.ts +138 -119
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +118 -109
- package/src/media/properties.ts +26 -20
- package/src/media/util.ts +2 -2
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1435 -1210
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +160 -113
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +131 -90
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +513 -441
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +26 -23
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +172 -121
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/networkQualityMonitor/index.ts +20 -23
- package/src/peer-connection-manager/index.ts +321 -241
- package/src/peer-connection-manager/util.ts +4 -2
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +2 -3
- package/src/reconnection-manager/index.ts +159 -98
- package/src/roap/collection.ts +2 -4
- package/src/roap/handler.ts +63 -32
- package/src/roap/index.ts +78 -58
- package/src/roap/request.ts +69 -54
- package/src/roap/state.ts +17 -11
- package/src/roap/turnDiscovery.ts +60 -31
- package/src/roap/util.ts +39 -31
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +397 -169
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +666 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +24 -31
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +33 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1141 -649
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +56 -45
- package/test/unit/spec/meeting/utils.js +66 -49
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +438 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +5 -6
- package/test/unit/spec/members/index.js +84 -35
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/peerconnection-manager/index.js +88 -58
- package/test/unit/spec/peerconnection-manager/utils.js +5 -4
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +9 -11
- package/test/unit/spec/reconnection-manager/index.js +14 -17
- package/test/unit/spec/roap/index.ts +18 -8
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/roap/util.js +3 -3
- package/test/unit/spec/stats-analyzer/index.js +29 -24
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +53 -50
|
@@ -1,53 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
|
|
5
4
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
|
|
7
5
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
|
|
9
6
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
|
-
|
|
13
9
|
exports.StatsAnalyzer = exports.EVENTS = void 0;
|
|
14
|
-
|
|
15
10
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
16
|
-
|
|
17
11
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
18
|
-
|
|
19
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
-
|
|
21
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
22
|
-
|
|
23
14
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
24
|
-
|
|
25
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
26
|
-
|
|
27
16
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
28
|
-
|
|
29
17
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
30
|
-
|
|
31
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
32
|
-
|
|
33
19
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
34
|
-
|
|
35
20
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
36
|
-
|
|
37
21
|
var _constants = require("../constants");
|
|
38
|
-
|
|
39
22
|
var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
|
|
40
|
-
|
|
41
23
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
42
|
-
|
|
43
24
|
var _global = _interopRequireDefault(require("./global"));
|
|
44
|
-
|
|
45
25
|
var _mqaUtil = require("./mqaUtil");
|
|
46
|
-
|
|
47
26
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
48
|
-
|
|
49
27
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
50
|
-
|
|
51
28
|
var EVENTS = {
|
|
52
29
|
MEDIA_QUALITY: 'MEDIA_QUALITY',
|
|
53
30
|
LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
|
|
@@ -55,6 +32,7 @@ var EVENTS = {
|
|
|
55
32
|
REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
|
|
56
33
|
REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
|
|
57
34
|
};
|
|
35
|
+
|
|
58
36
|
/**
|
|
59
37
|
* Stats Analyzer class that will emit events based on detected quality
|
|
60
38
|
*
|
|
@@ -62,14 +40,10 @@ var EVENTS = {
|
|
|
62
40
|
* @class StatsAnalyzer
|
|
63
41
|
* @extends {EventsScope}
|
|
64
42
|
*/
|
|
65
|
-
|
|
66
43
|
exports.EVENTS = EVENTS;
|
|
67
|
-
|
|
68
44
|
var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
69
45
|
(0, _inherits2.default)(StatsAnalyzer, _EventsScope);
|
|
70
|
-
|
|
71
46
|
var _super = _createSuper(StatsAnalyzer);
|
|
72
|
-
|
|
73
47
|
/**
|
|
74
48
|
* Creates a new instance of StatsAnalyzer
|
|
75
49
|
* @constructor
|
|
@@ -80,7 +54,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
80
54
|
*/
|
|
81
55
|
function StatsAnalyzer(config) {
|
|
82
56
|
var _this;
|
|
83
|
-
|
|
84
57
|
var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
85
58
|
var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
|
|
86
59
|
(0, _classCallCheck2.default)(this, StatsAnalyzer);
|
|
@@ -102,28 +75,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
102
75
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
|
|
103
76
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
104
77
|
throw new Error("Unsupported mediaType: ".concat(mediaType));
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
|
|
78
|
+
}
|
|
109
79
|
|
|
80
|
+
// eslint-disable-next-line no-param-reassign
|
|
81
|
+
if (previousValue === undefined) previousValue = 0;
|
|
82
|
+
// eslint-disable-next-line no-param-reassign
|
|
110
83
|
if (currentValue === undefined) currentValue = 0;
|
|
111
84
|
var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
|
|
112
85
|
var newEvent;
|
|
113
|
-
|
|
114
86
|
if (currentValue - previousValue > 0) {
|
|
115
87
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
|
|
116
88
|
} else if (currentValue === previousValue && currentValue > 0) {
|
|
117
89
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
|
|
118
90
|
}
|
|
119
|
-
|
|
120
91
|
if (newEvent && lastEmittedEvent !== newEvent) {
|
|
121
92
|
if (isLocal) {
|
|
122
93
|
_this.lastEmittedStartStopEvent[mediaType].local = newEvent;
|
|
123
94
|
} else {
|
|
124
95
|
_this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
|
|
125
96
|
}
|
|
126
|
-
|
|
127
97
|
_this.emit({
|
|
128
98
|
file: 'statsAnalyzer/index',
|
|
129
99
|
function: 'compareLastStatsResult'
|
|
@@ -136,7 +106,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
136
106
|
if (!result || !result.id) {
|
|
137
107
|
return;
|
|
138
108
|
}
|
|
139
|
-
|
|
140
109
|
var RemoteCandidateType = {};
|
|
141
110
|
var RemoteTransport = {};
|
|
142
111
|
var RemoteIpAddress = {};
|
|
@@ -144,31 +113,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
144
113
|
if (!result.id) return;
|
|
145
114
|
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
146
115
|
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
147
|
-
|
|
148
116
|
if (!RemoteCandidateType[result.id]) {
|
|
149
117
|
RemoteCandidateType[result.id] = [];
|
|
150
118
|
}
|
|
151
|
-
|
|
152
119
|
if (!RemoteTransport[result.id]) {
|
|
153
120
|
RemoteTransport[result.id] = [];
|
|
154
121
|
}
|
|
155
|
-
|
|
156
122
|
if (!RemoteIpAddress[result.id]) {
|
|
157
123
|
RemoteIpAddress[result.id] = [];
|
|
158
124
|
}
|
|
159
|
-
|
|
160
125
|
if (!RemoteNetworkType[result.id]) {
|
|
161
126
|
RemoteNetworkType[result.id] = [];
|
|
162
127
|
}
|
|
163
|
-
|
|
164
128
|
if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
|
|
165
129
|
RemoteCandidateType[result.id].push(result.candidateType);
|
|
166
130
|
}
|
|
167
|
-
|
|
168
131
|
if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
|
|
169
132
|
RemoteTransport[result.id].push(result.protocol.toUpperCase());
|
|
170
133
|
}
|
|
171
|
-
|
|
172
134
|
if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
|
|
173
135
|
RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
|
|
174
136
|
}
|
|
@@ -176,7 +138,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
176
138
|
if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
|
|
177
139
|
RemoteNetworkType[result.id].push(result.networkType);
|
|
178
140
|
}
|
|
179
|
-
|
|
180
141
|
_this.statsResults.internal.candidates[result.id] = {
|
|
181
142
|
candidateType: RemoteCandidateType[result.id],
|
|
182
143
|
ipAddress: RemoteIpAddress[result.id],
|
|
@@ -285,11 +246,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
285
246
|
};
|
|
286
247
|
return _this;
|
|
287
248
|
}
|
|
288
|
-
|
|
289
249
|
(0, _createClass2.default)(StatsAnalyzer, [{
|
|
290
250
|
key: "populateResults",
|
|
291
251
|
value: function populateResults(lastMqa) {
|
|
292
252
|
// Audio
|
|
253
|
+
|
|
293
254
|
this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
|
|
294
255
|
this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
|
|
295
256
|
this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
|
|
@@ -297,7 +258,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
297
258
|
this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
|
|
298
259
|
this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
|
|
299
260
|
this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
|
|
300
|
-
this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
|
|
261
|
+
this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
|
|
262
|
+
|
|
263
|
+
// Video
|
|
301
264
|
|
|
302
265
|
this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
|
|
303
266
|
this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
|
|
@@ -324,15 +287,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
324
287
|
this.statsResults.audio.send.meanRemoteJitter = [];
|
|
325
288
|
this.statsResults.video.send.meanRemoteJitter = [];
|
|
326
289
|
this.statsResults.share.send.meanRemoteJitter = [];
|
|
327
|
-
this.statsResults.audio.recv.meanRtpJitter = [];
|
|
290
|
+
this.statsResults.audio.recv.meanRtpJitter = [];
|
|
328
291
|
|
|
292
|
+
// TODO: currently no values are present
|
|
329
293
|
this.statsResults.video.recv.meanRtpJitter = [];
|
|
330
|
-
this.statsResults.share.recv.meanRtpJitter = [];
|
|
294
|
+
this.statsResults.share.recv.meanRtpJitter = [];
|
|
331
295
|
|
|
296
|
+
// Reset the roundTripTime
|
|
332
297
|
this.statsResults.audio.send.meanRoundTripTime = [];
|
|
333
298
|
this.statsResults.video.send.meanRoundTripTime = [];
|
|
334
299
|
this.statsResults.share.send.meanRoundTripTime = [];
|
|
335
300
|
}
|
|
301
|
+
|
|
336
302
|
/**
|
|
337
303
|
* sets mediaStatus status for analyzing metrics
|
|
338
304
|
*
|
|
@@ -341,12 +307,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
341
307
|
* @memberof StatsAnalyzer
|
|
342
308
|
* @returns {void}
|
|
343
309
|
*/
|
|
344
|
-
|
|
345
310
|
}, {
|
|
346
311
|
key: "updateMediaStatus",
|
|
347
312
|
value: function updateMediaStatus(status) {
|
|
348
313
|
this.meetingMediaStatus = status;
|
|
349
314
|
}
|
|
315
|
+
|
|
350
316
|
/**
|
|
351
317
|
* captures MQA data from peerconnection
|
|
352
318
|
*
|
|
@@ -354,12 +320,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
354
320
|
* @memberof StatsAnalyzer
|
|
355
321
|
* @returns {void}
|
|
356
322
|
*/
|
|
357
|
-
|
|
358
323
|
}, {
|
|
359
324
|
key: "sendMqaData",
|
|
360
325
|
value: function sendMqaData() {
|
|
361
326
|
var _this$peerConnection, _this$peerConnection$, _this$peerConnection$2, _this$peerConnection$3, _this$peerConnection2, _this$peerConnection3, _this$peerConnection4, _this$peerConnection5;
|
|
362
|
-
|
|
363
327
|
var audioReceiver = _config.default.intervals[0].audioReceive[0];
|
|
364
328
|
var audioSender = _config.default.intervals[0].audioTransmit[0];
|
|
365
329
|
var videoReceiver = _config.default.intervals[0].videoReceive[0];
|
|
@@ -385,7 +349,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
385
349
|
videoSender: videoSender,
|
|
386
350
|
statsResults: this.statsResults,
|
|
387
351
|
lastMqaDataSent: this.lastMqaDataSent
|
|
388
|
-
});
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// Capture mqa for share scenario
|
|
389
355
|
|
|
390
356
|
(0, _mqaUtil.getVideoSenderMqa)({
|
|
391
357
|
videoSender: shareSender,
|
|
@@ -399,30 +365,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
399
365
|
lastMqaDataSent: this.lastMqaDataSent,
|
|
400
366
|
isShareStream: true
|
|
401
367
|
});
|
|
402
|
-
_config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
|
|
368
|
+
_config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
|
|
403
369
|
|
|
370
|
+
// Adding peripheral information
|
|
404
371
|
_config.default.intervals[0].intervalMetadata.peripherals = [];
|
|
405
|
-
|
|
406
372
|
_config.default.intervals[0].intervalMetadata.peripherals.push({
|
|
407
373
|
information: _constants._UNKNOWN_,
|
|
408
374
|
name: _constants.MEDIA_DEVICES.SPEAKER
|
|
409
375
|
});
|
|
410
|
-
|
|
411
376
|
_config.default.intervals[0].intervalMetadata.peripherals.push({
|
|
412
377
|
information: ((_this$peerConnection = this.peerConnection) === null || _this$peerConnection === void 0 ? void 0 : (_this$peerConnection$ = _this$peerConnection.audioTransceiver) === null || _this$peerConnection$ === void 0 ? void 0 : (_this$peerConnection$2 = _this$peerConnection$.sender) === null || _this$peerConnection$2 === void 0 ? void 0 : (_this$peerConnection$3 = _this$peerConnection$2.track) === null || _this$peerConnection$3 === void 0 ? void 0 : _this$peerConnection$3.label) || _constants._UNKNOWN_,
|
|
413
378
|
name: _constants.MEDIA_DEVICES.MICROPHONE
|
|
414
379
|
});
|
|
415
|
-
|
|
416
380
|
_config.default.intervals[0].intervalMetadata.peripherals.push({
|
|
417
381
|
information: ((_this$peerConnection2 = this.peerConnection) === null || _this$peerConnection2 === void 0 ? void 0 : (_this$peerConnection3 = _this$peerConnection2.videoTransceiver) === null || _this$peerConnection3 === void 0 ? void 0 : (_this$peerConnection4 = _this$peerConnection3.sender) === null || _this$peerConnection4 === void 0 ? void 0 : (_this$peerConnection5 = _this$peerConnection4.track) === null || _this$peerConnection5 === void 0 ? void 0 : _this$peerConnection5.label) || _constants._UNKNOWN_,
|
|
418
382
|
name: _constants.MEDIA_DEVICES.CAMERA
|
|
419
|
-
});
|
|
420
|
-
|
|
383
|
+
});
|
|
421
384
|
|
|
385
|
+
// @ts-ignore
|
|
422
386
|
_config.default.networkType = this.statsResults.connectionType.local.networkType;
|
|
423
387
|
this.mqaSentCount += 1;
|
|
424
|
-
_config.default.intervals[0].intervalNumber = this.mqaSentCount;
|
|
388
|
+
_config.default.intervals[0].intervalNumber = this.mqaSentCount;
|
|
425
389
|
|
|
390
|
+
// DO Deep copy, for some reason it takes the reference all the time rather then old value set
|
|
426
391
|
this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
|
|
427
392
|
this.populateResults(_config.default.intervals[0]);
|
|
428
393
|
this.resetStatsResults();
|
|
@@ -435,6 +400,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
435
400
|
networkType: _config.default.networkType
|
|
436
401
|
});
|
|
437
402
|
}
|
|
403
|
+
|
|
438
404
|
/**
|
|
439
405
|
* updated the peerconnection when changed
|
|
440
406
|
*
|
|
@@ -443,12 +409,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
443
409
|
* @param {PeerConnection} peerConnection
|
|
444
410
|
* @returns {void}
|
|
445
411
|
*/
|
|
446
|
-
|
|
447
412
|
}, {
|
|
448
413
|
key: "updatePeerconnection",
|
|
449
414
|
value: function updatePeerconnection(peerConnection) {
|
|
450
415
|
this.peerConnection = peerConnection;
|
|
451
416
|
}
|
|
417
|
+
|
|
452
418
|
/**
|
|
453
419
|
* Starts the stats analyzer on interval
|
|
454
420
|
*
|
|
@@ -457,30 +423,27 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
457
423
|
* @param {PeerConnection} peerConnection
|
|
458
424
|
* @returns {Promise}
|
|
459
425
|
*/
|
|
460
|
-
|
|
461
426
|
}, {
|
|
462
427
|
key: "startAnalyzer",
|
|
463
428
|
value: function startAnalyzer(peerConnection) {
|
|
464
429
|
var _this2 = this;
|
|
465
|
-
|
|
466
430
|
if (!this.statsStarted) {
|
|
467
431
|
this.statsStarted = true;
|
|
468
432
|
this.peerConnection = peerConnection;
|
|
469
433
|
return this.getStatsAndParse().then(function () {
|
|
470
434
|
_this2.statsInterval = setInterval(function () {
|
|
471
435
|
_this2.getStatsAndParse();
|
|
472
|
-
}, _this2.config.analyzerInterval);
|
|
473
|
-
|
|
436
|
+
}, _this2.config.analyzerInterval);
|
|
437
|
+
// Trigger initial fetch
|
|
474
438
|
_this2.sendMqaData();
|
|
475
|
-
|
|
476
439
|
_this2.mqaInterval = setInterval(function () {
|
|
477
440
|
_this2.sendMqaData();
|
|
478
441
|
}, _constants.MQA_INTEVAL);
|
|
479
442
|
});
|
|
480
443
|
}
|
|
481
|
-
|
|
482
444
|
return _promise.default.resolve();
|
|
483
445
|
}
|
|
446
|
+
|
|
484
447
|
/**
|
|
485
448
|
* Cleans up the analyzer when done
|
|
486
449
|
*
|
|
@@ -488,35 +451,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
488
451
|
* @memberof StatsAnalyzer
|
|
489
452
|
* @returns {void}
|
|
490
453
|
*/
|
|
491
|
-
|
|
492
454
|
}, {
|
|
493
455
|
key: "stopAnalyzer",
|
|
494
456
|
value: function stopAnalyzer() {
|
|
495
457
|
var _this3 = this;
|
|
496
|
-
|
|
497
458
|
var sendOneLastMqa = this.mqaInterval && this.statsInterval;
|
|
498
|
-
|
|
499
459
|
if (this.statsInterval) {
|
|
500
460
|
clearInterval(this.statsInterval);
|
|
501
461
|
this.statsInterval = undefined;
|
|
502
462
|
}
|
|
503
|
-
|
|
504
463
|
if (this.mqaInterval) {
|
|
505
464
|
clearInterval(this.mqaInterval);
|
|
506
465
|
this.mqaInterval = undefined;
|
|
507
466
|
}
|
|
508
|
-
|
|
509
467
|
if (sendOneLastMqa) {
|
|
510
468
|
return this.getStatsAndParse().then(function () {
|
|
511
469
|
_this3.sendMqaData();
|
|
512
|
-
|
|
513
470
|
_this3.peerConnection = null;
|
|
514
471
|
});
|
|
515
472
|
}
|
|
516
|
-
|
|
517
473
|
this.peerConnection = null;
|
|
518
474
|
return _promise.default.resolve();
|
|
519
475
|
}
|
|
476
|
+
|
|
520
477
|
/**
|
|
521
478
|
* Parse a single result of get stats
|
|
522
479
|
*
|
|
@@ -527,51 +484,43 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
527
484
|
* @returns {void}
|
|
528
485
|
* @memberof StatsAnalyzer
|
|
529
486
|
*/
|
|
530
|
-
|
|
531
487
|
}, {
|
|
532
488
|
key: "parseGetStatsResult",
|
|
533
489
|
value: function parseGetStatsResult(getStatsResult, type, isSender) {
|
|
534
490
|
if (!getStatsResult) {
|
|
535
491
|
return;
|
|
536
492
|
}
|
|
537
|
-
|
|
538
493
|
switch (getStatsResult.type) {
|
|
539
494
|
case 'outbound-rtp':
|
|
540
495
|
this.processOutboundRTPResult(getStatsResult, type);
|
|
541
496
|
break;
|
|
542
|
-
|
|
543
497
|
case 'inbound-rtp':
|
|
544
498
|
this.processInboundRTPResult(getStatsResult, type);
|
|
545
499
|
break;
|
|
546
|
-
|
|
547
500
|
case 'track':
|
|
548
501
|
this.processTrackResult(getStatsResult, type);
|
|
549
502
|
break;
|
|
550
|
-
|
|
551
503
|
case 'remote-inbound-rtp':
|
|
552
504
|
case 'remote-outbound-rtp':
|
|
553
505
|
// @ts-ignore
|
|
554
506
|
this.compareSentAndReceived(getStatsResult, type, isSender);
|
|
555
507
|
break;
|
|
556
|
-
|
|
557
508
|
case 'remotecandidate':
|
|
558
509
|
case 'remote-candidate':
|
|
559
510
|
this.parseCandidate(getStatsResult, type, isSender, true);
|
|
560
511
|
break;
|
|
561
|
-
|
|
562
512
|
case 'local-candidate':
|
|
563
513
|
this.parseCandidate(getStatsResult, type, isSender, false);
|
|
564
514
|
break;
|
|
565
|
-
|
|
566
515
|
case 'media-source':
|
|
567
516
|
// @ts-ignore
|
|
568
517
|
this.parseAudioSource(getStatsResult, type);
|
|
569
518
|
break;
|
|
570
|
-
|
|
571
519
|
default:
|
|
572
520
|
break;
|
|
573
521
|
}
|
|
574
522
|
}
|
|
523
|
+
|
|
575
524
|
/**
|
|
576
525
|
* Filters the get stats results for types
|
|
577
526
|
* @private
|
|
@@ -580,12 +529,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
580
529
|
* @param {boolean} isSender
|
|
581
530
|
* @returns {void}
|
|
582
531
|
*/
|
|
583
|
-
|
|
584
532
|
}, {
|
|
585
533
|
key: "filterAndParseGetStatsResults",
|
|
586
534
|
value: function filterAndParseGetStatsResults(getStatsResults, type, isSender) {
|
|
587
535
|
var _this4 = this;
|
|
588
|
-
|
|
589
536
|
var types = _constants.DEFAULT_GET_STATS_FILTER.types;
|
|
590
537
|
getStatsResults.forEach(function (result) {
|
|
591
538
|
if (types.includes(result.type)) {
|
|
@@ -593,25 +540,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
593
540
|
}
|
|
594
541
|
});
|
|
595
542
|
}
|
|
543
|
+
|
|
596
544
|
/**
|
|
597
545
|
* parse the audio
|
|
598
546
|
* @param {String} result
|
|
599
547
|
* @param {boolean} type
|
|
600
548
|
* @returns {void}
|
|
601
549
|
*/
|
|
602
|
-
|
|
603
550
|
}, {
|
|
604
551
|
key: "parseAudioSource",
|
|
605
552
|
value: function parseAudioSource(result, type) {
|
|
606
553
|
if (!result) {
|
|
607
554
|
return;
|
|
608
555
|
}
|
|
609
|
-
|
|
610
556
|
if (type === _constants.STATS.AUDIO_CORRELATE) {
|
|
611
557
|
this.statsResults[type].send.audioLevel = result.audioLevel;
|
|
612
558
|
this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
|
|
613
559
|
}
|
|
614
560
|
}
|
|
561
|
+
|
|
615
562
|
/**
|
|
616
563
|
* emits started/stopped events for local/remote media by checking
|
|
617
564
|
* if given values are increasing or not. The previousValue, currentValue
|
|
@@ -626,7 +573,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
626
573
|
* @memberof StatsAnalyzer
|
|
627
574
|
* @returns {void}
|
|
628
575
|
*/
|
|
629
|
-
|
|
630
576
|
}, {
|
|
631
577
|
key: "compareLastStatsResult",
|
|
632
578
|
value:
|
|
@@ -643,131 +589,111 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
643
589
|
var mediaType = _constants.STATS.AUDIO_CORRELATE;
|
|
644
590
|
var currentStats = null;
|
|
645
591
|
var previousStats = null;
|
|
646
|
-
|
|
647
592
|
if (this.meetingMediaStatus.expected.sendAudio) {
|
|
648
593
|
currentStats = this.statsResults[mediaType].send;
|
|
649
594
|
previousStats = this.lastStatsResults[mediaType].send;
|
|
650
|
-
|
|
651
595
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
652
596
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
653
597
|
} else {
|
|
654
598
|
if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
|
|
655
599
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Energy present"));
|
|
656
600
|
}
|
|
657
|
-
|
|
658
601
|
if (currentStats.audioLevel === 0) {
|
|
659
602
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " level is 0 for the user"));
|
|
660
603
|
}
|
|
661
604
|
}
|
|
662
|
-
|
|
663
605
|
this.emitStartStopEvents(mediaType, previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
|
|
664
606
|
}
|
|
665
|
-
|
|
666
607
|
if (this.meetingMediaStatus.expected.receiveAudio) {
|
|
667
608
|
// compare audio stats received
|
|
668
609
|
currentStats = this.statsResults[mediaType].recv;
|
|
669
610
|
previousStats = this.lastStatsResults[mediaType].recv;
|
|
670
|
-
|
|
671
611
|
if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
|
|
672
612
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
|
|
673
613
|
} else if (currentStats.totalSamplesReceived === previousStats.totalSamplesReceived || currentStats.totalSamplesReceived === 0) {
|
|
674
614
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " samples received"));
|
|
675
615
|
}
|
|
676
|
-
|
|
677
616
|
this.emitStartStopEvents(mediaType, previousStats.totalPacketsReceived, currentStats.totalPacketsReceived, false);
|
|
678
617
|
}
|
|
679
|
-
|
|
680
618
|
mediaType = _constants.STATS.VIDEO_CORRELATE;
|
|
681
|
-
|
|
682
619
|
if (this.meetingMediaStatus.expected.sendVideo) {
|
|
683
620
|
// compare video stats sent
|
|
684
621
|
currentStats = this.statsResults[mediaType].send;
|
|
685
622
|
previousStats = this.lastStatsResults[mediaType].send;
|
|
686
|
-
|
|
687
623
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
688
624
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
689
625
|
} else {
|
|
690
626
|
if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
|
|
691
627
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames Encoded"));
|
|
692
628
|
}
|
|
693
|
-
|
|
694
629
|
if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
|
|
695
630
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent"));
|
|
696
631
|
}
|
|
697
632
|
}
|
|
698
|
-
|
|
699
633
|
this.emitStartStopEvents(mediaType, previousStats.framesSent, currentStats.framesSent, true);
|
|
700
634
|
}
|
|
701
|
-
|
|
702
635
|
if (this.meetingMediaStatus.expected.receiveVideo) {
|
|
703
636
|
// compare video stats reveived
|
|
637
|
+
|
|
704
638
|
currentStats = this.statsResults[mediaType].recv;
|
|
705
639
|
previousStats = this.lastStatsResults[mediaType].recv;
|
|
706
|
-
|
|
707
640
|
if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
|
|
708
641
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
|
|
709
642
|
} else {
|
|
710
643
|
if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
|
|
711
644
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
|
|
712
645
|
}
|
|
713
|
-
|
|
714
646
|
if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
|
|
715
647
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
|
|
716
648
|
}
|
|
717
|
-
|
|
718
649
|
if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
|
|
719
650
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
|
|
720
651
|
}
|
|
721
652
|
}
|
|
722
|
-
|
|
723
653
|
this.emitStartStopEvents(mediaType, previousStats.framesDecoded, currentStats.framesDecoded, false);
|
|
724
654
|
}
|
|
725
|
-
|
|
726
655
|
mediaType = _constants.STATS.SHARE_CORRELATE;
|
|
727
|
-
|
|
728
656
|
if (this.meetingMediaStatus.expected.sendShare) {
|
|
729
657
|
// compare share stats sent
|
|
658
|
+
|
|
730
659
|
currentStats = this.statsResults[mediaType].send;
|
|
731
660
|
previousStats = this.lastStatsResults[mediaType].send;
|
|
732
|
-
|
|
733
661
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
734
662
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
735
663
|
} else {
|
|
736
664
|
if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
|
|
737
665
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames getting encoded"));
|
|
738
666
|
}
|
|
739
|
-
|
|
740
667
|
if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
|
|
741
668
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent"));
|
|
742
669
|
}
|
|
743
|
-
}
|
|
744
|
-
// compare share stats reveived
|
|
745
|
-
|
|
670
|
+
}
|
|
746
671
|
|
|
672
|
+
// TODO:need to check receive share value
|
|
673
|
+
// compare share stats reveived
|
|
747
674
|
currentStats = this.statsResults[mediaType].recv;
|
|
748
675
|
previousStats = this.lastStatsResults[mediaType].recv;
|
|
749
|
-
|
|
750
676
|
if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsSent === 0) {
|
|
751
677
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
|
|
752
678
|
} else {
|
|
753
679
|
if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
|
|
754
680
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
|
|
755
681
|
}
|
|
756
|
-
|
|
757
682
|
if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
|
|
758
683
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
|
|
759
684
|
}
|
|
760
|
-
|
|
761
685
|
if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
|
|
762
686
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
|
|
763
687
|
}
|
|
764
|
-
}
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
// we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
|
|
765
691
|
// in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow
|
|
766
692
|
// so we would send "sharing stopped" events incorrectly
|
|
767
|
-
|
|
768
693
|
}
|
|
769
694
|
}
|
|
770
695
|
}
|
|
696
|
+
|
|
771
697
|
/**
|
|
772
698
|
* Does a `getStats` on all the transceivers and parses the results
|
|
773
699
|
*
|
|
@@ -775,24 +701,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
775
701
|
* @memberof StatsAnalyzer
|
|
776
702
|
* @returns {Promise}
|
|
777
703
|
*/
|
|
778
|
-
|
|
779
704
|
}, {
|
|
780
705
|
key: "getStatsAndParse",
|
|
781
706
|
value: function getStatsAndParse() {
|
|
782
707
|
var _this5 = this;
|
|
783
|
-
|
|
784
708
|
if (!this.peerConnection) {
|
|
785
709
|
return _promise.default.resolve();
|
|
786
710
|
}
|
|
787
|
-
|
|
788
711
|
if (this.peerConnection && this.peerConnection.connectionState === _constants.CONNECTION_STATE.FAILED) {
|
|
789
712
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> PeerConnection is in failed state');
|
|
790
|
-
|
|
791
713
|
return _promise.default.resolve();
|
|
792
714
|
}
|
|
793
|
-
|
|
794
715
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');
|
|
795
|
-
|
|
796
716
|
return _promise.default.all([this.peerConnection.videoTransceiver.sender.getStats().then(function (res) {
|
|
797
717
|
_this5.filterAndParseGetStatsResults(res, _constants.STATS.VIDEO_CORRELATE, true);
|
|
798
718
|
}), this.peerConnection.videoTransceiver.receiver.getStats().then(function (res) {
|
|
@@ -801,7 +721,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
801
721
|
_this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, true);
|
|
802
722
|
}), this.peerConnection.audioTransceiver.receiver.getStats().then(function (res) {
|
|
803
723
|
_this5.filterAndParseGetStatsResults(res, _constants.STATS.AUDIO_CORRELATE, false);
|
|
804
|
-
}),
|
|
724
|
+
}),
|
|
725
|
+
// TODO: add checks for screen share
|
|
805
726
|
this.peerConnection.shareTransceiver.sender.getStats().then(function (res) {
|
|
806
727
|
_this5.filterAndParseGetStatsResults(res, _constants.STATS.SHARE_CORRELATE, true);
|
|
807
728
|
}), this.peerConnection.shareTransceiver.receiver.getStats().then(function (res) {
|
|
@@ -809,16 +730,17 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
809
730
|
})]).then(function () {
|
|
810
731
|
_this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = _this5.peerConnection.audioTransceiver.currentDirection;
|
|
811
732
|
_this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = _this5.peerConnection.videoTransceiver.currentDirection;
|
|
812
|
-
_this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = _this5.peerConnection.shareTransceiver.currentDirection;
|
|
813
|
-
|
|
814
|
-
_this5.compareLastStatsResult(); // Save the last results to compare with the current
|
|
733
|
+
_this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = _this5.peerConnection.shareTransceiver.currentDirection;
|
|
815
734
|
|
|
735
|
+
// Process Stats results every 5 seconds
|
|
736
|
+
_this5.compareLastStatsResult();
|
|
816
737
|
|
|
738
|
+
// Save the last results to compare with the current
|
|
817
739
|
_this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
|
|
818
|
-
|
|
819
740
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
|
|
820
741
|
});
|
|
821
742
|
}
|
|
743
|
+
|
|
822
744
|
/**
|
|
823
745
|
* Processes OutboundRTP stats result and stores
|
|
824
746
|
* @private
|
|
@@ -826,28 +748,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
826
748
|
* @param {*} type
|
|
827
749
|
* @returns {void}
|
|
828
750
|
*/
|
|
829
|
-
|
|
830
751
|
}, {
|
|
831
752
|
key: "processOutboundRTPResult",
|
|
832
753
|
value: function processOutboundRTPResult(result, type) {
|
|
833
754
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
834
755
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
835
|
-
|
|
836
756
|
if (result.bytesSent) {
|
|
837
757
|
var kilobytes = 0;
|
|
838
|
-
|
|
839
758
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
|
|
840
759
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
841
760
|
}
|
|
842
|
-
|
|
843
761
|
if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
|
|
844
762
|
this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
845
763
|
}
|
|
846
|
-
|
|
847
764
|
if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
|
|
848
765
|
this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
849
766
|
}
|
|
850
|
-
|
|
851
767
|
var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
|
|
852
768
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
853
769
|
kilobytes = bytes / 1024;
|
|
@@ -856,13 +772,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
856
772
|
this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
|
|
857
773
|
this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
|
|
858
774
|
this.statsResults.internal[mediaType].outboundRtpId = result.id;
|
|
859
|
-
|
|
860
775
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
|
|
861
776
|
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
862
777
|
}
|
|
863
|
-
|
|
864
778
|
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
|
|
865
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
779
|
+
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
780
|
+
|
|
781
|
+
// Data saved to send MQA metrics
|
|
866
782
|
|
|
867
783
|
this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
|
|
868
784
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
@@ -880,6 +796,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
880
796
|
this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
|
|
881
797
|
}
|
|
882
798
|
}
|
|
799
|
+
|
|
883
800
|
/**
|
|
884
801
|
* Processes InboundRTP stats result and stores
|
|
885
802
|
* @private
|
|
@@ -887,36 +804,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
887
804
|
* @param {*} type
|
|
888
805
|
* @returns {void}
|
|
889
806
|
*/
|
|
890
|
-
|
|
891
807
|
}, {
|
|
892
808
|
key: "processInboundRTPResult",
|
|
893
809
|
value: function processInboundRTPResult(result, type) {
|
|
894
810
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
895
811
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
896
|
-
|
|
897
812
|
if (result.bytesReceived) {
|
|
898
813
|
var kilobytes = 0;
|
|
899
|
-
|
|
900
814
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
|
|
901
815
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
902
816
|
}
|
|
903
|
-
|
|
904
817
|
if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
|
|
905
818
|
this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
|
|
906
819
|
}
|
|
907
|
-
|
|
908
820
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
|
|
909
821
|
this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
|
|
910
822
|
}
|
|
911
|
-
|
|
912
823
|
if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
|
|
913
824
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
914
825
|
}
|
|
915
|
-
|
|
916
826
|
if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
|
|
917
827
|
this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
918
828
|
}
|
|
919
|
-
|
|
920
829
|
var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
|
|
921
830
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
922
831
|
kilobytes = bytes / 1024;
|
|
@@ -924,34 +833,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
924
833
|
this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
|
|
925
834
|
this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
|
|
926
835
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
|
|
927
|
-
|
|
928
836
|
if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
|
|
929
837
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
|
|
930
838
|
}
|
|
931
|
-
|
|
932
839
|
this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
|
|
933
840
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
934
|
-
|
|
935
841
|
if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
|
|
936
842
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
|
|
937
|
-
}
|
|
938
|
-
|
|
843
|
+
}
|
|
939
844
|
|
|
845
|
+
// Check the over all packet Lost ratio
|
|
940
846
|
this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0 ? this.statsResults[mediaType][sendrecvType].currentPacketsLost / (this.statsResults[mediaType][sendrecvType].packetsReceived + this.statsResults[mediaType][sendrecvType].currentPacketsLost) : 0;
|
|
941
|
-
|
|
942
847
|
if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
|
|
943
848
|
_loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
|
|
944
|
-
}
|
|
849
|
+
}
|
|
945
850
|
|
|
851
|
+
// TODO: check the packet loss value is negative values here
|
|
946
852
|
|
|
947
853
|
if (result.packetsLost) {
|
|
948
854
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
|
|
949
855
|
} else {
|
|
950
856
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
|
|
951
857
|
}
|
|
858
|
+
this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
952
859
|
|
|
953
|
-
|
|
954
|
-
|
|
860
|
+
// From Thin
|
|
955
861
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
956
862
|
this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
|
|
957
863
|
this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
@@ -962,7 +868,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
962
868
|
this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
|
|
963
869
|
this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
|
|
964
870
|
this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
|
|
965
|
-
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
871
|
+
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
872
|
+
|
|
873
|
+
// Audio stats
|
|
966
874
|
|
|
967
875
|
this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
|
|
968
876
|
this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
|
|
@@ -971,6 +879,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
971
879
|
this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
|
|
972
880
|
}
|
|
973
881
|
}
|
|
882
|
+
|
|
974
883
|
/**
|
|
975
884
|
* Processes remote and local candidate result and stores
|
|
976
885
|
* @private
|
|
@@ -981,7 +890,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
981
890
|
*
|
|
982
891
|
* @returns {void}
|
|
983
892
|
*/
|
|
984
|
-
|
|
985
893
|
}, {
|
|
986
894
|
key: "processTrackResult",
|
|
987
895
|
value:
|
|
@@ -998,33 +906,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
998
906
|
if (!result || result.type !== 'track') {
|
|
999
907
|
return;
|
|
1000
908
|
}
|
|
1001
|
-
|
|
1002
909
|
if (result.type !== 'track') return;
|
|
1003
910
|
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
1004
|
-
|
|
1005
911
|
if (result.frameWidth && result.frameHeight) {
|
|
1006
912
|
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
1007
913
|
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
1008
914
|
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
1009
915
|
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
1010
916
|
}
|
|
1011
|
-
|
|
1012
917
|
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
1013
918
|
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
1014
919
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
1015
920
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
1016
921
|
}
|
|
1017
|
-
|
|
1018
922
|
if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
|
|
1019
923
|
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|
|
1020
924
|
var jitterBufferDelay = result && result.jitterBufferDelay;
|
|
1021
925
|
var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
|
|
1022
|
-
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
926
|
+
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
1023
927
|
|
|
928
|
+
// Used to calculate the jitter
|
|
1024
929
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
|
|
1025
930
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
|
|
1026
931
|
}
|
|
1027
932
|
}
|
|
933
|
+
|
|
1028
934
|
/**
|
|
1029
935
|
*
|
|
1030
936
|
* @private
|
|
@@ -1033,20 +939,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1033
939
|
* @returns {void}
|
|
1034
940
|
* @memberof StatsAnalyzer
|
|
1035
941
|
*/
|
|
1036
|
-
|
|
1037
942
|
}, {
|
|
1038
943
|
key: "compareSentAndReceived",
|
|
1039
944
|
value: function compareSentAndReceived(result, type) {
|
|
1040
945
|
if (!type) {
|
|
1041
946
|
return;
|
|
1042
947
|
}
|
|
1043
|
-
|
|
1044
948
|
var mediaType = type;
|
|
1045
|
-
|
|
1046
949
|
if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
|
|
1047
950
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1048
951
|
}
|
|
1049
|
-
|
|
1050
952
|
var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
|
|
1051
953
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1052
954
|
this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
|
|
@@ -1055,15 +957,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1055
957
|
this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
|
|
1056
958
|
this.statsResults[mediaType].send.timestamp = result.timestamp;
|
|
1057
959
|
this.statsResults[mediaType].send.ssrc = result.ssrc;
|
|
1058
|
-
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
960
|
+
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
1059
961
|
|
|
962
|
+
// Total packloss ratio on this video section of the call
|
|
1060
963
|
this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
|
|
1061
964
|
this.statsResults[mediaType].send.currentPacketLossRatio = this.statsResults[mediaType].send.packetsLostOnReceiver > 0 ? this.statsResults[mediaType].send.packetsLostOnReceiver * 100 / (this.statsResults[mediaType].send.packetsSent + this.statsResults[mediaType].send.packetsLostOnReceiver) : 0;
|
|
1062
|
-
|
|
1063
965
|
if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
|
|
1064
966
|
this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
|
|
1065
967
|
}
|
|
1066
|
-
|
|
1067
968
|
if (result.type === 'remote-inbound-rtp') {
|
|
1068
969
|
this.networkQualityMonitor.determineUplinkNetworkQuality({
|
|
1069
970
|
mediaType: mediaType,
|
|
@@ -1075,6 +976,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1075
976
|
}]);
|
|
1076
977
|
return StatsAnalyzer;
|
|
1077
978
|
}(_eventsScope.default);
|
|
1078
|
-
|
|
1079
979
|
exports.StatsAnalyzer = StatsAnalyzer;
|
|
1080
980
|
//# sourceMappingURL=index.js.map
|