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