@webex/plugin-meetings 3.0.0-beta.14 → 3.0.0-beta.16
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 +6 -41
- 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 +45 -40
- 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 -38
- 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 +43 -97
- package/dist/media/index.js.map +1 -1
- package/dist/media/internal-media-core-wrapper.js +0 -4
- package/dist/media/internal-media-core-wrapper.js.map +1 -1
- package/dist/media/properties.js +64 -110
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- 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 +819 -1591
- 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 +160 -230
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +0 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +19 -158
- 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 +450 -582
- 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 +99 -155
- 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 +72 -194
- 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/multistream/mediaRequestManager.js +12 -28
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +11 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +7 -47
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +38 -77
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +11 -56
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +221 -380
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +28 -57
- package/dist/networkQualityMonitor/index.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 +2 -6
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +294 -459
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +18 -53
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +13 -55
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +10 -52
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +66 -174
- 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 +18 -18
- 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 +1 -1
- 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 +123 -135
- package/src/media/internal-media-core-wrapper.ts +2 -2
- package/src/media/properties.ts +30 -20
- package/src/media/util.ts +1 -1
- 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 +1559 -1292
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +155 -116
- package/src/meeting/request.type.ts +8 -8
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +101 -70
- 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 +512 -440
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +29 -29
- 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 +182 -126
- 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/multistream/multistreamMedia.ts +1 -0
- package/src/multistream/receiveSlot.ts +1 -0
- package/src/multistream/receiveSlotManager.ts +1 -0
- package/src/multistream/remoteMedia.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +2 -1
- package/src/multistream/remoteMediaManager.ts +3 -0
- package/src/networkQualityMonitor/index.ts +20 -23
- 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 +4 -3
- package/src/reconnection-manager/index.ts +139 -84
- package/src/roap/index.ts +46 -38
- package/src/roap/request.ts +44 -31
- package/src/roap/turnDiscovery.ts +59 -30
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +432 -175
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +319 -204
- package/test/integration/spec/transcription.js +7 -8
- 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 +26 -33
- 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 +36 -46
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1279 -685
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +57 -46
- package/test/unit/spec/meeting/utils.js +78 -53
- 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 +104 -54
- 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/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 +16 -18
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/stats-analyzer/index.js +25 -20
- 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,55 +1,31 @@
|
|
|
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 _internalMediaCore = require("@webex/internal-media-core");
|
|
36
|
-
|
|
37
21
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
38
|
-
|
|
39
22
|
var _constants = require("../constants");
|
|
40
|
-
|
|
41
23
|
var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
|
|
42
|
-
|
|
43
24
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
44
|
-
|
|
45
25
|
var _global = _interopRequireDefault(require("./global"));
|
|
46
|
-
|
|
47
26
|
var _mqaUtil = require("./mqaUtil");
|
|
48
|
-
|
|
49
27
|
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); }; }
|
|
50
|
-
|
|
51
28
|
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; } }
|
|
52
|
-
|
|
53
29
|
var EVENTS = {
|
|
54
30
|
MEDIA_QUALITY: 'MEDIA_QUALITY',
|
|
55
31
|
LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
|
|
@@ -57,6 +33,7 @@ var EVENTS = {
|
|
|
57
33
|
REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
|
|
58
34
|
REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
|
|
59
35
|
};
|
|
36
|
+
|
|
60
37
|
/**
|
|
61
38
|
* Stats Analyzer class that will emit events based on detected quality
|
|
62
39
|
*
|
|
@@ -64,14 +41,10 @@ var EVENTS = {
|
|
|
64
41
|
* @class StatsAnalyzer
|
|
65
42
|
* @extends {EventsScope}
|
|
66
43
|
*/
|
|
67
|
-
|
|
68
44
|
exports.EVENTS = EVENTS;
|
|
69
|
-
|
|
70
45
|
var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
71
46
|
(0, _inherits2.default)(StatsAnalyzer, _EventsScope);
|
|
72
|
-
|
|
73
47
|
var _super = _createSuper(StatsAnalyzer);
|
|
74
|
-
|
|
75
48
|
/**
|
|
76
49
|
* Creates a new instance of StatsAnalyzer
|
|
77
50
|
* @constructor
|
|
@@ -82,7 +55,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
82
55
|
*/
|
|
83
56
|
function StatsAnalyzer(config) {
|
|
84
57
|
var _this;
|
|
85
|
-
|
|
86
58
|
var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
87
59
|
var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
|
|
88
60
|
(0, _classCallCheck2.default)(this, StatsAnalyzer);
|
|
@@ -104,28 +76,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
104
76
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
|
|
105
77
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
106
78
|
throw new Error("Unsupported mediaType: ".concat(mediaType));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
|
|
79
|
+
}
|
|
111
80
|
|
|
81
|
+
// eslint-disable-next-line no-param-reassign
|
|
82
|
+
if (previousValue === undefined) previousValue = 0;
|
|
83
|
+
// eslint-disable-next-line no-param-reassign
|
|
112
84
|
if (currentValue === undefined) currentValue = 0;
|
|
113
85
|
var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
|
|
114
86
|
var newEvent;
|
|
115
|
-
|
|
116
87
|
if (currentValue - previousValue > 0) {
|
|
117
88
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
|
|
118
89
|
} else if (currentValue === previousValue && currentValue > 0) {
|
|
119
90
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
|
|
120
91
|
}
|
|
121
|
-
|
|
122
92
|
if (newEvent && lastEmittedEvent !== newEvent) {
|
|
123
93
|
if (isLocal) {
|
|
124
94
|
_this.lastEmittedStartStopEvent[mediaType].local = newEvent;
|
|
125
95
|
} else {
|
|
126
96
|
_this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
|
|
127
97
|
}
|
|
128
|
-
|
|
129
98
|
_this.emit({
|
|
130
99
|
file: 'statsAnalyzer/index',
|
|
131
100
|
function: 'compareLastStatsResult'
|
|
@@ -138,7 +107,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
138
107
|
if (!result || !result.id) {
|
|
139
108
|
return;
|
|
140
109
|
}
|
|
141
|
-
|
|
142
110
|
var RemoteCandidateType = {};
|
|
143
111
|
var RemoteTransport = {};
|
|
144
112
|
var RemoteIpAddress = {};
|
|
@@ -146,31 +114,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
146
114
|
if (!result.id) return;
|
|
147
115
|
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
148
116
|
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
149
|
-
|
|
150
117
|
if (!RemoteCandidateType[result.id]) {
|
|
151
118
|
RemoteCandidateType[result.id] = [];
|
|
152
119
|
}
|
|
153
|
-
|
|
154
120
|
if (!RemoteTransport[result.id]) {
|
|
155
121
|
RemoteTransport[result.id] = [];
|
|
156
122
|
}
|
|
157
|
-
|
|
158
123
|
if (!RemoteIpAddress[result.id]) {
|
|
159
124
|
RemoteIpAddress[result.id] = [];
|
|
160
125
|
}
|
|
161
|
-
|
|
162
126
|
if (!RemoteNetworkType[result.id]) {
|
|
163
127
|
RemoteNetworkType[result.id] = [];
|
|
164
128
|
}
|
|
165
|
-
|
|
166
129
|
if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
|
|
167
130
|
RemoteCandidateType[result.id].push(result.candidateType);
|
|
168
131
|
}
|
|
169
|
-
|
|
170
132
|
if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
|
|
171
133
|
RemoteTransport[result.id].push(result.protocol.toUpperCase());
|
|
172
134
|
}
|
|
173
|
-
|
|
174
135
|
if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
|
|
175
136
|
RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
|
|
176
137
|
}
|
|
@@ -178,7 +139,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
178
139
|
if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
|
|
179
140
|
RemoteNetworkType[result.id].push(result.networkType);
|
|
180
141
|
}
|
|
181
|
-
|
|
182
142
|
_this.statsResults.internal.candidates[result.id] = {
|
|
183
143
|
candidateType: RemoteCandidateType[result.id],
|
|
184
144
|
ipAddress: RemoteIpAddress[result.id],
|
|
@@ -287,11 +247,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
287
247
|
};
|
|
288
248
|
return _this;
|
|
289
249
|
}
|
|
290
|
-
|
|
291
250
|
(0, _createClass2.default)(StatsAnalyzer, [{
|
|
292
251
|
key: "populateResults",
|
|
293
252
|
value: function populateResults(lastMqa) {
|
|
294
253
|
// Audio
|
|
254
|
+
|
|
295
255
|
this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
|
|
296
256
|
this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
|
|
297
257
|
this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
|
|
@@ -299,7 +259,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
299
259
|
this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
|
|
300
260
|
this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
|
|
301
261
|
this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
|
|
302
|
-
this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
|
|
262
|
+
this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
|
|
263
|
+
|
|
264
|
+
// Video
|
|
303
265
|
|
|
304
266
|
this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
|
|
305
267
|
this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
|
|
@@ -326,15 +288,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
326
288
|
this.statsResults.audio.send.meanRemoteJitter = [];
|
|
327
289
|
this.statsResults.video.send.meanRemoteJitter = [];
|
|
328
290
|
this.statsResults.share.send.meanRemoteJitter = [];
|
|
329
|
-
this.statsResults.audio.recv.meanRtpJitter = [];
|
|
291
|
+
this.statsResults.audio.recv.meanRtpJitter = [];
|
|
330
292
|
|
|
293
|
+
// TODO: currently no values are present
|
|
331
294
|
this.statsResults.video.recv.meanRtpJitter = [];
|
|
332
|
-
this.statsResults.share.recv.meanRtpJitter = [];
|
|
295
|
+
this.statsResults.share.recv.meanRtpJitter = [];
|
|
333
296
|
|
|
297
|
+
// Reset the roundTripTime
|
|
334
298
|
this.statsResults.audio.send.meanRoundTripTime = [];
|
|
335
299
|
this.statsResults.video.send.meanRoundTripTime = [];
|
|
336
300
|
this.statsResults.share.send.meanRoundTripTime = [];
|
|
337
301
|
}
|
|
302
|
+
|
|
338
303
|
/**
|
|
339
304
|
* sets mediaStatus status for analyzing metrics
|
|
340
305
|
*
|
|
@@ -343,12 +308,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
343
308
|
* @memberof StatsAnalyzer
|
|
344
309
|
* @returns {void}
|
|
345
310
|
*/
|
|
346
|
-
|
|
347
311
|
}, {
|
|
348
312
|
key: "updateMediaStatus",
|
|
349
313
|
value: function updateMediaStatus(status) {
|
|
350
314
|
this.meetingMediaStatus = status;
|
|
351
315
|
}
|
|
316
|
+
|
|
352
317
|
/**
|
|
353
318
|
* captures MQA data from media connection
|
|
354
319
|
*
|
|
@@ -356,7 +321,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
356
321
|
* @memberof StatsAnalyzer
|
|
357
322
|
* @returns {void}
|
|
358
323
|
*/
|
|
359
|
-
|
|
360
324
|
}, {
|
|
361
325
|
key: "sendMqaData",
|
|
362
326
|
value: function sendMqaData() {
|
|
@@ -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.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _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.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _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 media connection when changed
|
|
440
406
|
*
|
|
@@ -443,12 +409,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
443
409
|
* @param {MC.RoapMediaConnection} mediaConnection
|
|
444
410
|
* @returns {void}
|
|
445
411
|
*/
|
|
446
|
-
|
|
447
412
|
}, {
|
|
448
413
|
key: "updateMediaConnection",
|
|
449
414
|
value: function updateMediaConnection(mediaConnection) {
|
|
450
415
|
this.mediaConnection = mediaConnection;
|
|
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 {MC.RoapMediaConnection} mediaConnection
|
|
458
424
|
* @returns {Promise}
|
|
459
425
|
*/
|
|
460
|
-
|
|
461
426
|
}, {
|
|
462
427
|
key: "startAnalyzer",
|
|
463
428
|
value: function startAnalyzer(mediaConnection) {
|
|
464
429
|
var _this2 = this;
|
|
465
|
-
|
|
466
430
|
if (!this.statsStarted) {
|
|
467
431
|
this.statsStarted = true;
|
|
468
432
|
this.mediaConnection = mediaConnection;
|
|
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.mediaConnection = null;
|
|
514
471
|
});
|
|
515
472
|
}
|
|
516
|
-
|
|
517
473
|
this.mediaConnection = 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,53 +701,41 @@ 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.mediaConnection) {
|
|
785
709
|
return _promise.default.resolve();
|
|
786
710
|
}
|
|
787
|
-
|
|
788
711
|
if (this.mediaConnection && this.mediaConnection.getConnectionState() === _internalMediaCore.MediaConnection.ConnectionState.Failed) {
|
|
789
712
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> media connection 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 this.mediaConnection.getTransceiverStats().then(function (transceiverStats) {
|
|
797
717
|
_this5.filterAndParseGetStatsResults(transceiverStats.video.sender, _constants.STATS.VIDEO_CORRELATE, true);
|
|
798
|
-
|
|
799
718
|
_this5.filterAndParseGetStatsResults(transceiverStats.video.receiver, _constants.STATS.VIDEO_CORRELATE, false);
|
|
800
|
-
|
|
801
719
|
_this5.filterAndParseGetStatsResults(transceiverStats.audio.sender, _constants.STATS.AUDIO_CORRELATE, true);
|
|
802
|
-
|
|
803
720
|
_this5.filterAndParseGetStatsResults(transceiverStats.audio.receiver, _constants.STATS.AUDIO_CORRELATE, false);
|
|
804
|
-
|
|
805
721
|
_this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.sender, _constants.STATS.SHARE_CORRELATE, true);
|
|
722
|
+
_this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.receiver, _constants.STATS.SHARE_CORRELATE, false);
|
|
806
723
|
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
724
|
+
// updates the current direction of media
|
|
810
725
|
_this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = transceiverStats.audio.currentDirection;
|
|
811
726
|
_this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = transceiverStats.video.currentDirection;
|
|
812
727
|
_this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = transceiverStats.screenShareVideo.currentDirection;
|
|
813
728
|
_this5.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.audio.localTrackLabel;
|
|
814
729
|
_this5.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.video.localTrackLabel;
|
|
730
|
+
_this5.compareLastStatsResult();
|
|
815
731
|
|
|
816
|
-
|
|
732
|
+
// Save the last results to compare with the current
|
|
817
733
|
// DO Deep copy, for some reason it takes the reference all the time rather then old value set
|
|
818
|
-
|
|
819
|
-
|
|
820
734
|
_this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
|
|
821
|
-
|
|
822
735
|
_loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
|
|
823
736
|
});
|
|
824
737
|
}
|
|
738
|
+
|
|
825
739
|
/**
|
|
826
740
|
* Processes OutboundRTP stats result and stores
|
|
827
741
|
* @private
|
|
@@ -829,28 +743,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
829
743
|
* @param {*} type
|
|
830
744
|
* @returns {void}
|
|
831
745
|
*/
|
|
832
|
-
|
|
833
746
|
}, {
|
|
834
747
|
key: "processOutboundRTPResult",
|
|
835
748
|
value: function processOutboundRTPResult(result, type) {
|
|
836
749
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
837
750
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
838
|
-
|
|
839
751
|
if (result.bytesSent) {
|
|
840
752
|
var kilobytes = 0;
|
|
841
|
-
|
|
842
753
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
|
|
843
754
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
844
755
|
}
|
|
845
|
-
|
|
846
756
|
if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
|
|
847
757
|
this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
848
758
|
}
|
|
849
|
-
|
|
850
759
|
if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
|
|
851
760
|
this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
852
761
|
}
|
|
853
|
-
|
|
854
762
|
var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
|
|
855
763
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
856
764
|
kilobytes = bytes / 1024;
|
|
@@ -859,13 +767,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
859
767
|
this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
|
|
860
768
|
this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
|
|
861
769
|
this.statsResults.internal[mediaType].outboundRtpId = result.id;
|
|
862
|
-
|
|
863
770
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
|
|
864
771
|
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
865
772
|
}
|
|
866
|
-
|
|
867
773
|
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
|
|
868
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
774
|
+
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
775
|
+
|
|
776
|
+
// Data saved to send MQA metrics
|
|
869
777
|
|
|
870
778
|
this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
|
|
871
779
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
@@ -883,6 +791,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
883
791
|
this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
|
|
884
792
|
}
|
|
885
793
|
}
|
|
794
|
+
|
|
886
795
|
/**
|
|
887
796
|
* Processes InboundRTP stats result and stores
|
|
888
797
|
* @private
|
|
@@ -890,36 +799,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
890
799
|
* @param {*} type
|
|
891
800
|
* @returns {void}
|
|
892
801
|
*/
|
|
893
|
-
|
|
894
802
|
}, {
|
|
895
803
|
key: "processInboundRTPResult",
|
|
896
804
|
value: function processInboundRTPResult(result, type) {
|
|
897
805
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
898
806
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
899
|
-
|
|
900
807
|
if (result.bytesReceived) {
|
|
901
808
|
var kilobytes = 0;
|
|
902
|
-
|
|
903
809
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
|
|
904
810
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
905
811
|
}
|
|
906
|
-
|
|
907
812
|
if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
|
|
908
813
|
this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
|
|
909
814
|
}
|
|
910
|
-
|
|
911
815
|
if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
|
|
912
816
|
this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
|
|
913
817
|
}
|
|
914
|
-
|
|
915
818
|
if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
|
|
916
819
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
917
820
|
}
|
|
918
|
-
|
|
919
821
|
if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
|
|
920
822
|
this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
921
823
|
}
|
|
922
|
-
|
|
923
824
|
var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
|
|
924
825
|
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
925
826
|
kilobytes = bytes / 1024;
|
|
@@ -927,34 +828,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
927
828
|
this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
|
|
928
829
|
this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
|
|
929
830
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
|
|
930
|
-
|
|
931
831
|
if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
|
|
932
832
|
this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
|
|
933
833
|
}
|
|
934
|
-
|
|
935
834
|
this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
|
|
936
835
|
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
937
|
-
|
|
938
836
|
if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
|
|
939
837
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
|
|
940
|
-
}
|
|
941
|
-
|
|
838
|
+
}
|
|
942
839
|
|
|
840
|
+
// Check the over all packet Lost ratio
|
|
943
841
|
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;
|
|
944
|
-
|
|
945
842
|
if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
|
|
946
843
|
_loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
|
|
947
|
-
}
|
|
844
|
+
}
|
|
948
845
|
|
|
846
|
+
// TODO: check the packet loss value is negative values here
|
|
949
847
|
|
|
950
848
|
if (result.packetsLost) {
|
|
951
849
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
|
|
952
850
|
} else {
|
|
953
851
|
this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
|
|
954
852
|
}
|
|
853
|
+
this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
955
854
|
|
|
956
|
-
|
|
957
|
-
|
|
855
|
+
// From Thin
|
|
958
856
|
this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
|
|
959
857
|
this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
|
|
960
858
|
this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
@@ -965,7 +863,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
965
863
|
this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
|
|
966
864
|
this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
|
|
967
865
|
this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
|
|
968
|
-
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
866
|
+
this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
|
|
867
|
+
|
|
868
|
+
// Audio stats
|
|
969
869
|
|
|
970
870
|
this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
|
|
971
871
|
this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
|
|
@@ -974,6 +874,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
974
874
|
this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
|
|
975
875
|
}
|
|
976
876
|
}
|
|
877
|
+
|
|
977
878
|
/**
|
|
978
879
|
* Processes remote and local candidate result and stores
|
|
979
880
|
* @private
|
|
@@ -984,7 +885,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
984
885
|
*
|
|
985
886
|
* @returns {void}
|
|
986
887
|
*/
|
|
987
|
-
|
|
988
888
|
}, {
|
|
989
889
|
key: "processTrackResult",
|
|
990
890
|
value:
|
|
@@ -1001,33 +901,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1001
901
|
if (!result || result.type !== 'track') {
|
|
1002
902
|
return;
|
|
1003
903
|
}
|
|
1004
|
-
|
|
1005
904
|
if (result.type !== 'track') return;
|
|
1006
905
|
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
1007
|
-
|
|
1008
906
|
if (result.frameWidth && result.frameHeight) {
|
|
1009
907
|
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
1010
908
|
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
1011
909
|
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
1012
910
|
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
1013
911
|
}
|
|
1014
|
-
|
|
1015
912
|
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
1016
913
|
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
1017
914
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
1018
915
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
1019
916
|
}
|
|
1020
|
-
|
|
1021
917
|
if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
|
|
1022
918
|
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|
|
1023
919
|
var jitterBufferDelay = result && result.jitterBufferDelay;
|
|
1024
920
|
var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
|
|
1025
|
-
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
921
|
+
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
1026
922
|
|
|
923
|
+
// Used to calculate the jitter
|
|
1027
924
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
|
|
1028
925
|
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
|
|
1029
926
|
}
|
|
1030
927
|
}
|
|
928
|
+
|
|
1031
929
|
/**
|
|
1032
930
|
*
|
|
1033
931
|
* @private
|
|
@@ -1036,20 +934,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1036
934
|
* @returns {void}
|
|
1037
935
|
* @memberof StatsAnalyzer
|
|
1038
936
|
*/
|
|
1039
|
-
|
|
1040
937
|
}, {
|
|
1041
938
|
key: "compareSentAndReceived",
|
|
1042
939
|
value: function compareSentAndReceived(result, type) {
|
|
1043
940
|
if (!type) {
|
|
1044
941
|
return;
|
|
1045
942
|
}
|
|
1046
|
-
|
|
1047
943
|
var mediaType = type;
|
|
1048
|
-
|
|
1049
944
|
if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
|
|
1050
945
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1051
946
|
}
|
|
1052
|
-
|
|
1053
947
|
var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
|
|
1054
948
|
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1055
949
|
this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
|
|
@@ -1058,15 +952,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1058
952
|
this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
|
|
1059
953
|
this.statsResults[mediaType].send.timestamp = result.timestamp;
|
|
1060
954
|
this.statsResults[mediaType].send.ssrc = result.ssrc;
|
|
1061
|
-
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
955
|
+
this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
|
|
1062
956
|
|
|
957
|
+
// Total packloss ratio on this video section of the call
|
|
1063
958
|
this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
|
|
1064
959
|
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;
|
|
1065
|
-
|
|
1066
960
|
if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
|
|
1067
961
|
this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
|
|
1068
962
|
}
|
|
1069
|
-
|
|
1070
963
|
if (result.type === 'remote-inbound-rtp') {
|
|
1071
964
|
this.networkQualityMonitor.determineUplinkNetworkQuality({
|
|
1072
965
|
mediaType: mediaType,
|
|
@@ -1078,6 +971,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
1078
971
|
}]);
|
|
1079
972
|
return StatsAnalyzer;
|
|
1080
973
|
}(_eventsScope.default);
|
|
1081
|
-
|
|
1082
974
|
exports.StatsAnalyzer = StatsAnalyzer;
|
|
1083
975
|
//# sourceMappingURL=index.js.map
|