@webex/plugin-meetings 3.0.0-beta.34 → 3.0.0-beta.340
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/README.md +46 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +94 -15
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +709 -35
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +45 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +48 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +233 -29
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +14 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +109 -15
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +309 -18
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +112 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +383 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +57 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +249 -72
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -116
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +73 -124
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +1 -204
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +86 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +3927 -2960
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +224 -131
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +260 -196
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +601 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +73 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +192 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +39 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +424 -116
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +72 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +132 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +102 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +326 -232
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +16 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -446
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +228 -58
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +29 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +39 -36
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +209 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +273 -391
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +17 -8
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reconnection-manager/index.js +214 -170
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +62 -35
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +112 -97
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +95 -38
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +142 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +181 -214
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +22 -18
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +14 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +25 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +2 -7
- package/dist/types/constants.d.ts +201 -30
- package/dist/types/controls-options-manager/enums.d.ts +11 -1
- package/dist/types/controls-options-manager/index.d.ts +17 -1
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -7
- package/dist/types/index.d.ts +6 -4
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +57 -4
- package/dist/types/locus-info/parser.d.ts +66 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -48
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -128
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +506 -512
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +93 -25
- package/dist/types/meeting/request.d.ts +72 -43
- package/dist/types/meeting/util.d.ts +101 -1
- package/dist/types/meeting-info/index.d.ts +13 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/types/meetings/collection.d.ts +17 -0
- package/dist/types/meetings/index.d.ts +91 -21
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +14 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/members/collection.d.ts +5 -0
- package/dist/types/members/index.d.ts +35 -2
- package/dist/types/members/request.d.ts +73 -9
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +214 -1
- package/dist/types/metrics/constants.d.ts +15 -4
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
- package/dist/types/multistream/receiveSlot.d.ts +13 -11
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +8 -29
- package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
- package/dist/types/multistream/sendSlotManager.d.ts +61 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +60 -95
- package/dist/types/reachability/request.d.ts +7 -3
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reconnection-manager/index.d.ts +19 -0
- package/dist/types/recording-controller/index.d.ts +15 -1
- package/dist/types/recording-controller/util.d.ts +5 -4
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +15 -11
- package/dist/types/roap/turnDiscovery.d.ts +21 -3
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +54 -0
- package/dist/types/statsAnalyzer/index.d.ts +29 -11
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +22 -19
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +42 -12
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +592 -20
- package/src/breakouts/utils.ts +42 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +44 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +224 -20
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +413 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +102 -122
- package/src/media/properties.ts +87 -110
- package/src/mediaQualityMetrics/config.ts +0 -135
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3276 -2555
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +223 -136
- package/src/meeting/request.ts +177 -121
- package/src/meeting/util.ts +588 -394
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +170 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +454 -125
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +80 -11
- package/src/member/index.ts +58 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +141 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +134 -8
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +15 -4
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +277 -82
- package/src/multistream/receiveSlot.ts +31 -17
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +148 -30
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +236 -342
- package/src/reachability/request.ts +17 -8
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -106
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +63 -32
- package/src/roap/request.ts +100 -104
- package/src/roap/turnDiscovery.ts +48 -26
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/index.ts +218 -289
- package/src/statsAnalyzer/mqaUtil.ts +28 -30
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +320 -261
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +118 -28
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1395 -69
- package/test/unit/spec/breakouts/utils.js +52 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1304 -33
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +120 -37
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
- package/test/unit/spec/meeting/index.js +5849 -2014
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +402 -213
- package/test/unit/spec/meeting/request.js +483 -49
- package/test/unit/spec/meeting/utils.js +679 -64
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1231 -212
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +61 -6
- package/test/unit/spec/member/util.js +510 -34
- package/test/unit/spec/members/index.js +432 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
- package/test/unit/spec/multistream/receiveSlot.ts +28 -20
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +486 -13
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +117 -11
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +174 -63
- package/test/unit/spec/roap/request.ts +226 -85
- package/test/unit/spec/roap/turnDiscovery.ts +76 -34
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +231 -7
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -52
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/meeting/effectsState.d.ts +0 -42
- package/dist/types/metrics/config.d.ts +0 -169
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -485
- package/test/unit/spec/meeting/effectsState.js +0 -285
|
@@ -17,6 +17,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
|
|
|
17
17
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
18
18
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
19
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
+
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
|
|
20
21
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
21
22
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
22
23
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
@@ -49,7 +50,6 @@ var emptyReceiver = {
|
|
|
49
50
|
meanRtpJitter: [],
|
|
50
51
|
meanRoundTripTime: []
|
|
51
52
|
};
|
|
52
|
-
|
|
53
53
|
/**
|
|
54
54
|
* Stats Analyzer class that will emit events based on detected quality
|
|
55
55
|
*
|
|
@@ -60,18 +60,24 @@ var emptyReceiver = {
|
|
|
60
60
|
var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
61
61
|
(0, _inherits2.default)(StatsAnalyzer, _EventsScope);
|
|
62
62
|
var _super = _createSuper(StatsAnalyzer);
|
|
63
|
+
// Returns the local IP address for diagnostics. this is the local IP of the interface used for the current media connection a host can have many local Ip Addresses
|
|
64
|
+
|
|
63
65
|
/**
|
|
64
66
|
* Creates a new instance of StatsAnalyzer
|
|
65
67
|
* @constructor
|
|
66
68
|
* @public
|
|
67
69
|
* @param {Object} config SDK Configuration Object
|
|
70
|
+
* @param {Function} receiveSlotCallback Callback used to access receive slots.
|
|
68
71
|
* @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
|
|
69
72
|
* @param {Object} statsResults Default properties for stats
|
|
70
73
|
*/
|
|
71
74
|
function StatsAnalyzer(config) {
|
|
72
75
|
var _this;
|
|
73
|
-
var
|
|
74
|
-
|
|
76
|
+
var receiveSlotCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
|
|
77
|
+
return undefined;
|
|
78
|
+
};
|
|
79
|
+
var networkQualityMonitor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
80
|
+
var statsResults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _global.default;
|
|
75
81
|
(0, _classCallCheck2.default)(this, StatsAnalyzer);
|
|
76
82
|
_this = _super.call(this);
|
|
77
83
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
|
|
@@ -87,6 +93,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
87
93
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsInterval", void 0);
|
|
88
94
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsResults", void 0);
|
|
89
95
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
|
|
96
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "successfulCandidatePair", void 0);
|
|
97
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localIpAddress", void 0);
|
|
98
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotCallback", void 0);
|
|
90
99
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
|
|
91
100
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
92
101
|
throw new Error("Unsupported mediaType: ".concat(mediaType));
|
|
@@ -120,57 +129,75 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
120
129
|
});
|
|
121
130
|
}
|
|
122
131
|
});
|
|
132
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "extractAndSetLocalIpAddressInfoForDiagnostics", function (successfulCandidatePairId, candidates) {
|
|
133
|
+
var newIpAddress = '';
|
|
134
|
+
if (successfulCandidatePairId && !(0, _isEmpty2.default)(candidates)) {
|
|
135
|
+
var localCandidate = candidates[successfulCandidatePairId];
|
|
136
|
+
if (localCandidate) {
|
|
137
|
+
if (localCandidate.candidateType === 'host') {
|
|
138
|
+
// if it's a host candidate, use the address property - it will be the local IP
|
|
139
|
+
newIpAddress = "".concat(localCandidate.address);
|
|
140
|
+
} else if (localCandidate.candidateType === 'prflx') {
|
|
141
|
+
// if it's a peer reflexive candidate and we're not using a relay (there is no relayProtocol set)
|
|
142
|
+
// then look at the relatedAddress - it will be the local
|
|
143
|
+
//
|
|
144
|
+
// Firefox doesn't populate the relayProtocol property
|
|
145
|
+
if (!localCandidate.relayProtocol) {
|
|
146
|
+
newIpAddress = "".concat(localCandidate.relatedAddress);
|
|
147
|
+
} else {
|
|
148
|
+
// if it's a peer reflexive candidate and we are using a relay -
|
|
149
|
+
// in that case the relatedAddress will be the IP of the TURN server (Linus),
|
|
150
|
+
// so we can only look at the address, but it might be local IP or public IP,
|
|
151
|
+
// depending on if the user is behind a NAT or not
|
|
152
|
+
newIpAddress = "".concat(localCandidate.address);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
_this.localIpAddress = newIpAddress;
|
|
158
|
+
});
|
|
123
159
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseCandidate", function (result, type, isSender, isRemote) {
|
|
160
|
+
var _this$successfulCandi;
|
|
124
161
|
if (!result || !result.id) {
|
|
125
162
|
return;
|
|
126
163
|
}
|
|
127
|
-
var RemoteCandidateType = {};
|
|
128
|
-
var RemoteTransport = {};
|
|
129
|
-
var RemoteIpAddress = {};
|
|
130
|
-
var RemoteNetworkType = {};
|
|
131
|
-
if (!result.id) return;
|
|
132
|
-
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
133
|
-
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
134
|
-
if (!RemoteCandidateType[result.id]) {
|
|
135
|
-
RemoteCandidateType[result.id] = [];
|
|
136
|
-
}
|
|
137
|
-
if (!RemoteTransport[result.id]) {
|
|
138
|
-
RemoteTransport[result.id] = [];
|
|
139
|
-
}
|
|
140
|
-
if (!RemoteIpAddress[result.id]) {
|
|
141
|
-
RemoteIpAddress[result.id] = [];
|
|
142
|
-
}
|
|
143
|
-
if (!RemoteNetworkType[result.id]) {
|
|
144
|
-
RemoteNetworkType[result.id] = [];
|
|
145
|
-
}
|
|
146
|
-
if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
|
|
147
|
-
RemoteCandidateType[result.id].push(result.candidateType);
|
|
148
|
-
}
|
|
149
|
-
if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
|
|
150
|
-
RemoteTransport[result.id].push(result.protocol.toUpperCase());
|
|
151
|
-
}
|
|
152
|
-
if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
|
|
153
|
-
RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
|
|
154
|
-
}
|
|
155
164
|
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
// We only care about the successful local candidate
|
|
166
|
+
if (((_this$successfulCandi = _this.successfulCandidatePair) === null || _this$successfulCandi === void 0 ? void 0 : _this$successfulCandi.localCandidateId) !== result.id) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
var transport;
|
|
170
|
+
if (result.relayProtocol) {
|
|
171
|
+
transport = result.relayProtocol.toUpperCase();
|
|
172
|
+
} else if (result.protocol) {
|
|
173
|
+
transport = result.protocol.toUpperCase();
|
|
158
174
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
175
|
+
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
176
|
+
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
177
|
+
if (!_this.statsResults.candidates) {
|
|
178
|
+
_this.statsResults.candidates = {};
|
|
179
|
+
}
|
|
180
|
+
_this.statsResults.candidates[result.id] = {
|
|
181
|
+
candidateType: result.candidateType,
|
|
182
|
+
ipAddress: result.ip,
|
|
183
|
+
// TODO: add ports
|
|
184
|
+
relatedAddress: result.relatedAddress,
|
|
185
|
+
relatedPort: result.relatedPort,
|
|
186
|
+
relayProtocol: result.relayProtocol,
|
|
187
|
+
protocol: result.protocol,
|
|
188
|
+
address: result.address,
|
|
162
189
|
portNumber: result.port,
|
|
163
|
-
networkType:
|
|
190
|
+
networkType: result.networkType,
|
|
164
191
|
priority: result.priority,
|
|
165
|
-
transport:
|
|
192
|
+
transport: transport,
|
|
166
193
|
timestamp: result.time,
|
|
167
194
|
id: result.id,
|
|
168
195
|
type: result.type
|
|
169
196
|
};
|
|
170
|
-
_this.statsResults.connectionType[ipType].candidateType =
|
|
171
|
-
_this.statsResults.connectionType[ipType].ipAddress =
|
|
172
|
-
_this.statsResults.connectionType[ipType].networkType =
|
|
173
|
-
_this.statsResults.connectionType[ipType].transport =
|
|
197
|
+
_this.statsResults.connectionType[ipType].candidateType = result.candidateType;
|
|
198
|
+
_this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;
|
|
199
|
+
_this.statsResults.connectionType[ipType].networkType = result.networkType === _constants.NETWORK_TYPE.VPN ? _constants.NETWORK_TYPE.UNKNOWN : result.networkType;
|
|
200
|
+
_this.statsResults.connectionType[ipType].transport = transport;
|
|
174
201
|
_this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;
|
|
175
202
|
});
|
|
176
203
|
_this.statsStarted = false;
|
|
@@ -182,6 +209,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
182
209
|
_this.mqaSentCount = -1;
|
|
183
210
|
_this.lastMqaDataSent = {};
|
|
184
211
|
_this.lastEmittedStartStopEvent = {};
|
|
212
|
+
_this.receiveSlotCallback = receiveSlotCallback;
|
|
213
|
+
_this.successfulCandidatePair = {};
|
|
214
|
+
_this.localIpAddress = '';
|
|
185
215
|
return _this;
|
|
186
216
|
}
|
|
187
217
|
|
|
@@ -234,6 +264,15 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
234
264
|
var _this3 = this;
|
|
235
265
|
var newMqa = (0, _cloneDeep2.default)(_config.emptyMqaInterval);
|
|
236
266
|
(0, _keys.default)(this.statsResults).forEach(function (mediaType) {
|
|
267
|
+
if (!_this3.lastMqaDataSent[mediaType]) {
|
|
268
|
+
_this3.lastMqaDataSent[mediaType] = {};
|
|
269
|
+
}
|
|
270
|
+
if (!_this3.lastMqaDataSent[mediaType].send && mediaType.includes('-send')) {
|
|
271
|
+
_this3.lastMqaDataSent[mediaType].send = {};
|
|
272
|
+
}
|
|
273
|
+
if (!_this3.lastMqaDataSent[mediaType].recv && mediaType.includes('-recv')) {
|
|
274
|
+
_this3.lastMqaDataSent[mediaType].recv = {};
|
|
275
|
+
}
|
|
237
276
|
if (mediaType.includes('audio-send') || mediaType.includes('audio-share-send')) {
|
|
238
277
|
var audioSender = (0, _cloneDeep2.default)(_config.emptyAudioTransmit);
|
|
239
278
|
(0, _mqaUtil.getAudioSenderMqa)({
|
|
@@ -243,6 +282,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
243
282
|
mediaType: mediaType
|
|
244
283
|
});
|
|
245
284
|
newMqa.audioTransmit.push(audioSender);
|
|
285
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
|
|
246
286
|
} else if (mediaType.includes('audio-recv') || mediaType.includes('audio-share-recv')) {
|
|
247
287
|
var audioReceiver = (0, _cloneDeep2.default)(_config.emptyAudioReceive);
|
|
248
288
|
(0, _mqaUtil.getAudioReceiverMqa)({
|
|
@@ -252,6 +292,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
252
292
|
mediaType: mediaType
|
|
253
293
|
});
|
|
254
294
|
newMqa.audioReceive.push(audioReceiver);
|
|
295
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
|
|
255
296
|
} else if (mediaType.includes('video-send') || mediaType.includes('video-share-send')) {
|
|
256
297
|
var videoSender = (0, _cloneDeep2.default)(_config.emptyVideoTransmit);
|
|
257
298
|
(0, _mqaUtil.getVideoSenderMqa)({
|
|
@@ -261,6 +302,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
261
302
|
mediaType: mediaType
|
|
262
303
|
});
|
|
263
304
|
newMqa.videoTransmit.push(videoSender);
|
|
305
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
|
|
264
306
|
} else if (mediaType.includes('video-recv') || mediaType.includes('video-share-recv')) {
|
|
265
307
|
var videoReceiver = (0, _cloneDeep2.default)(_config.emptyVideoReceive);
|
|
266
308
|
(0, _mqaUtil.getVideoReceiverMqa)({
|
|
@@ -270,27 +312,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
270
312
|
mediaType: mediaType
|
|
271
313
|
});
|
|
272
314
|
newMqa.videoReceive.push(videoReceiver);
|
|
315
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
|
|
273
316
|
}
|
|
274
317
|
});
|
|
275
|
-
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress
|
|
318
|
+
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
|
|
276
319
|
|
|
277
320
|
// Adding peripheral information
|
|
278
|
-
newMqa.intervalMetadata.peripherals = [];
|
|
279
321
|
newMqa.intervalMetadata.peripherals.push({
|
|
280
322
|
information: _constants._UNKNOWN_,
|
|
281
323
|
name: _constants.MEDIA_DEVICES.SPEAKER
|
|
282
324
|
});
|
|
283
325
|
if (this.statsResults['audio-send']) {
|
|
284
|
-
var _this$statsResults$au;
|
|
285
326
|
newMqa.intervalMetadata.peripherals.push({
|
|
286
|
-
information:
|
|
327
|
+
information: this.statsResults['audio-send'].trackLabel || _constants._UNKNOWN_,
|
|
287
328
|
name: _constants.MEDIA_DEVICES.MICROPHONE
|
|
288
329
|
});
|
|
289
330
|
}
|
|
290
331
|
if (this.statsResults['video-send']) {
|
|
291
|
-
var _this$statsResults$vi;
|
|
292
332
|
newMqa.intervalMetadata.peripherals.push({
|
|
293
|
-
information:
|
|
333
|
+
information: this.statsResults['video-send'].trackLabel || _constants._UNKNOWN_,
|
|
294
334
|
name: _constants.MEDIA_DEVICES.CAMERA
|
|
295
335
|
});
|
|
296
336
|
}
|
|
@@ -322,6 +362,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
322
362
|
this.mediaConnection = mediaConnection;
|
|
323
363
|
}
|
|
324
364
|
|
|
365
|
+
/**
|
|
366
|
+
* Returns the local IP address for diagnostics.
|
|
367
|
+
* this is the local IP of the interface used for the current media connection
|
|
368
|
+
* a host can have many local Ip Addresses
|
|
369
|
+
* @returns {string | undefined} The local IP address.
|
|
370
|
+
*/
|
|
371
|
+
}, {
|
|
372
|
+
key: "getLocalIpAddress",
|
|
373
|
+
value: function getLocalIpAddress() {
|
|
374
|
+
return this.localIpAddress;
|
|
375
|
+
}
|
|
376
|
+
|
|
325
377
|
/**
|
|
326
378
|
* Starts the stats analyzer on interval
|
|
327
379
|
*
|
|
@@ -377,7 +429,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
377
429
|
_this5.mediaConnection = null;
|
|
378
430
|
});
|
|
379
431
|
}
|
|
380
|
-
this.mediaConnection = null;
|
|
381
432
|
return _promise.default.resolve();
|
|
382
433
|
}
|
|
383
434
|
|
|
@@ -407,22 +458,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
407
458
|
} else if (!isSender && !this.statsResults[type].recv) {
|
|
408
459
|
this.statsResults[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
409
460
|
}
|
|
410
|
-
if (!this.statsResults.resolutions[type]) {
|
|
411
|
-
this.statsResults.resolutions[type] = {};
|
|
412
|
-
}
|
|
413
|
-
if (isSender && !this.statsResults.resolutions[type].send) {
|
|
414
|
-
this.statsResults.resolutions[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
415
|
-
} else if (!isSender && !this.statsResults.resolutions[type].recv) {
|
|
416
|
-
this.statsResults.resolutions[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
417
|
-
}
|
|
418
|
-
if (!this.statsResults.internal[type]) {
|
|
419
|
-
this.statsResults.internal[type] = {};
|
|
420
|
-
}
|
|
421
|
-
if (isSender && !this.statsResults.internal[type].send) {
|
|
422
|
-
this.statsResults.internal[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
423
|
-
} else if (!isSender && !this.statsResults.internal[type].recv) {
|
|
424
|
-
this.statsResults.internal[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
425
|
-
}
|
|
426
461
|
switch (getStatsResult.type) {
|
|
427
462
|
case 'outbound-rtp':
|
|
428
463
|
this.processOutboundRTPResult(getStatsResult, type);
|
|
@@ -430,13 +465,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
430
465
|
case 'inbound-rtp':
|
|
431
466
|
this.processInboundRTPResult(getStatsResult, type);
|
|
432
467
|
break;
|
|
433
|
-
case 'track':
|
|
434
|
-
this.processTrackResult(getStatsResult, type);
|
|
435
|
-
break;
|
|
436
468
|
case 'remote-inbound-rtp':
|
|
437
469
|
case 'remote-outbound-rtp':
|
|
438
|
-
|
|
439
|
-
this.compareSentAndReceived(getStatsResult, type, isSender);
|
|
470
|
+
this.compareSentAndReceived(getStatsResult, type);
|
|
440
471
|
break;
|
|
441
472
|
case 'remotecandidate':
|
|
442
473
|
case 'remote-candidate':
|
|
@@ -467,15 +498,26 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
467
498
|
value: function filterAndParseGetStatsResults(statsItem, type, isSender) {
|
|
468
499
|
var _this6 = this;
|
|
469
500
|
var types = _constants.DEFAULT_GET_STATS_FILTER.types;
|
|
501
|
+
|
|
502
|
+
// get the successful candidate pair before parsing stats.
|
|
503
|
+
statsItem.report.forEach(function (report) {
|
|
504
|
+
if (report.type === 'candidate-pair' && report.state === 'succeeded') {
|
|
505
|
+
_this6.successfulCandidatePair = report;
|
|
506
|
+
}
|
|
507
|
+
});
|
|
470
508
|
statsItem.report.forEach(function (result) {
|
|
471
509
|
if (types.includes(result.type)) {
|
|
472
510
|
_this6.parseGetStatsResult(result, type, isSender);
|
|
473
511
|
}
|
|
474
512
|
});
|
|
475
513
|
if (this.statsResults[type]) {
|
|
514
|
+
var _this$successfulCandi2, _this$statsResults;
|
|
476
515
|
this.statsResults[type].direction = statsItem.currentDirection;
|
|
477
516
|
this.statsResults[type].trackLabel = statsItem.localTrackLabel;
|
|
478
517
|
this.statsResults[type].csi = statsItem.csi;
|
|
518
|
+
this.extractAndSetLocalIpAddressInfoForDiagnostics((_this$successfulCandi2 = this.successfulCandidatePair) === null || _this$successfulCandi2 === void 0 ? void 0 : _this$successfulCandi2.localCandidateId, (_this$statsResults = this.statsResults) === null || _this$statsResults === void 0 ? void 0 : _this$statsResults.candidates);
|
|
519
|
+
// reset the successful candidate pair.
|
|
520
|
+
this.successfulCandidatePair = {};
|
|
479
521
|
}
|
|
480
522
|
}
|
|
481
523
|
|
|
@@ -528,28 +570,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
528
570
|
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
529
571
|
return key.startsWith(keyPrefix);
|
|
530
572
|
}).reduce(function (prev, cur) {
|
|
531
|
-
|
|
573
|
+
var _this7$statsResults$c;
|
|
574
|
+
return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c.recv[value]) || 0);
|
|
532
575
|
}, 0);
|
|
533
576
|
};
|
|
534
577
|
var getPreviousStatsTotals = function getPreviousStatsTotals(keyPrefix, value) {
|
|
535
578
|
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
536
579
|
return key.startsWith(keyPrefix);
|
|
537
580
|
}).reduce(function (prev, cur) {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
};
|
|
541
|
-
var getCurrentResolutionsStatsTotals = function getCurrentResolutionsStatsTotals(keyPrefix, value) {
|
|
542
|
-
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
543
|
-
return key.startsWith(keyPrefix);
|
|
544
|
-
}).reduce(function (prev, cur) {
|
|
545
|
-
return prev + (_this7.statsResults.resolutions[cur].recv[value] || 0);
|
|
546
|
-
}, 0);
|
|
547
|
-
};
|
|
548
|
-
var getPreviousResolutionsStatsTotals = function getPreviousResolutionsStatsTotals(keyPrefix, value) {
|
|
549
|
-
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
550
|
-
return key.startsWith(keyPrefix);
|
|
551
|
-
}).reduce(function (prev, cur) {
|
|
552
|
-
return prev + (_this7.lastStatsResults.resolutions[cur].recv[value] || 0);
|
|
581
|
+
var _this7$lastStatsResul;
|
|
582
|
+
return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
|
|
553
583
|
}, 0);
|
|
554
584
|
};
|
|
555
585
|
if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {
|
|
@@ -558,10 +588,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
558
588
|
var currentStats = this.statsResults['audio-send'].send;
|
|
559
589
|
var previousStats = this.lastStatsResults['audio-send'].send;
|
|
560
590
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
561
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent");
|
|
591
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
|
|
562
592
|
} else {
|
|
563
593
|
if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
|
|
564
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present");
|
|
594
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
|
|
565
595
|
}
|
|
566
596
|
if (currentStats.audioLevel === 0) {
|
|
567
597
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
|
|
@@ -576,9 +606,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
576
606
|
var currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');
|
|
577
607
|
var previousSamplesReceived = getPreviousStatsTotals('audio-recv', 'totalSamplesReceived');
|
|
578
608
|
if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {
|
|
579
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received");
|
|
609
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received", currentPacketsReceived);
|
|
580
610
|
} else if (currentSamplesReceived === previousSamplesReceived || currentSamplesReceived === 0) {
|
|
581
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received");
|
|
611
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received", currentSamplesReceived);
|
|
582
612
|
}
|
|
583
613
|
this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);
|
|
584
614
|
}
|
|
@@ -587,13 +617,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
587
617
|
var _currentStats = this.statsResults['video-send'].send;
|
|
588
618
|
var _previousStats = this.lastStatsResults['video-send'].send;
|
|
589
619
|
if (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0) {
|
|
590
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent");
|
|
620
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
|
|
591
621
|
} else {
|
|
592
622
|
if (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0) {
|
|
593
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded");
|
|
623
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
|
|
594
624
|
}
|
|
595
|
-
if (this.statsResults
|
|
596
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent");
|
|
625
|
+
if (this.statsResults['video-send'].send.framesSent === this.lastStatsResults['video-send'].send.framesSent || this.statsResults['video-send'].send.framesSent === 0) {
|
|
626
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults['video-send'].send.framesSent);
|
|
597
627
|
}
|
|
598
628
|
}
|
|
599
629
|
this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
|
|
@@ -602,23 +632,23 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
602
632
|
// compare video stats received
|
|
603
633
|
var _currentPacketsReceived = getCurrentStatsTotals('video-recv', 'totalPacketsReceived');
|
|
604
634
|
var _previousPacketsReceived = getPreviousStatsTotals('video-recv', 'totalPacketsReceived');
|
|
605
|
-
var currentFramesReceived =
|
|
606
|
-
var previousFramesReceived =
|
|
635
|
+
var currentFramesReceived = getCurrentStatsTotals('video-recv', 'framesReceived');
|
|
636
|
+
var previousFramesReceived = getPreviousStatsTotals('video-recv', 'framesReceived');
|
|
607
637
|
var currentFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');
|
|
608
638
|
var previousFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');
|
|
609
|
-
var currentFramesDropped =
|
|
610
|
-
var previousFramesDropped =
|
|
639
|
+
var currentFramesDropped = getCurrentStatsTotals('video-recv', 'framesDropped');
|
|
640
|
+
var previousFramesDropped = getPreviousStatsTotals('video-recv', 'framesDropped');
|
|
611
641
|
if (_currentPacketsReceived === _previousPacketsReceived || _currentPacketsReceived === 0) {
|
|
612
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received");
|
|
642
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received", _currentPacketsReceived);
|
|
613
643
|
} else {
|
|
614
644
|
if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {
|
|
615
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received");
|
|
645
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received", currentFramesReceived);
|
|
616
646
|
}
|
|
617
647
|
if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {
|
|
618
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded");
|
|
648
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded", currentFramesDecoded);
|
|
619
649
|
}
|
|
620
650
|
if (currentFramesDropped - previousFramesDropped > 10) {
|
|
621
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped");
|
|
651
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped", currentFramesDropped - previousFramesDropped);
|
|
622
652
|
}
|
|
623
653
|
}
|
|
624
654
|
this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);
|
|
@@ -629,13 +659,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
629
659
|
var _currentStats2 = this.statsResults['video-share-send'].send;
|
|
630
660
|
var _previousStats2 = this.lastStatsResults['video-share-send'].send;
|
|
631
661
|
if (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0) {
|
|
632
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent");
|
|
662
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
|
|
633
663
|
} else {
|
|
634
664
|
if (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0) {
|
|
635
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded");
|
|
665
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
|
|
636
666
|
}
|
|
637
|
-
if (this.statsResults
|
|
638
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent");
|
|
667
|
+
if (this.statsResults['video-share-send'].send.framesSent === this.lastStatsResults['video-share-send'].send.framesSent || this.statsResults['video-share-send'].send.framesSent === 0) {
|
|
668
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults['video-share-send'].send.framesSent);
|
|
639
669
|
}
|
|
640
670
|
}
|
|
641
671
|
}
|
|
@@ -644,23 +674,23 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
644
674
|
// compare share stats received
|
|
645
675
|
var _currentPacketsReceived2 = getCurrentStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
646
676
|
var _previousPacketsReceived2 = getPreviousStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
647
|
-
var _currentFramesReceived =
|
|
648
|
-
var _previousFramesReceived =
|
|
677
|
+
var _currentFramesReceived = getCurrentStatsTotals('video-share-recv', 'framesReceived');
|
|
678
|
+
var _previousFramesReceived = getPreviousStatsTotals('video-share-recv', 'framesReceived');
|
|
649
679
|
var _currentFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');
|
|
650
680
|
var _previousFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');
|
|
651
|
-
var _currentFramesDropped =
|
|
652
|
-
var _previousFramesDropped =
|
|
681
|
+
var _currentFramesDropped = getCurrentStatsTotals('video-share-recv', 'framesDropped');
|
|
682
|
+
var _previousFramesDropped = getPreviousStatsTotals('video-share-recv', 'framesDropped');
|
|
653
683
|
if (_currentPacketsReceived2 === _previousPacketsReceived2 || _currentPacketsReceived2 === 0) {
|
|
654
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received");
|
|
684
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received", _currentPacketsReceived2);
|
|
655
685
|
} else {
|
|
656
686
|
if (_currentFramesReceived === _previousFramesReceived || _currentFramesReceived === 0) {
|
|
657
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received");
|
|
687
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received", _currentFramesReceived);
|
|
658
688
|
}
|
|
659
689
|
if (_currentFramesDecoded === _previousFramesDecoded || _currentFramesDecoded === 0) {
|
|
660
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded");
|
|
690
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded", _currentFramesDecoded);
|
|
661
691
|
}
|
|
662
692
|
if (_currentFramesDropped - _previousFramesDropped > 10) {
|
|
663
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped");
|
|
693
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped", _currentFramesDropped - _previousFramesDropped);
|
|
664
694
|
}
|
|
665
695
|
}
|
|
666
696
|
|
|
@@ -749,28 +779,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
749
779
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
750
780
|
if (result.bytesSent) {
|
|
751
781
|
var kilobytes = 0;
|
|
752
|
-
if (
|
|
753
|
-
this.statsResults
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
this.statsResults
|
|
757
|
-
}
|
|
758
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
|
|
759
|
-
this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
782
|
+
if (result.frameWidth && result.frameHeight) {
|
|
783
|
+
this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
|
|
784
|
+
this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
|
|
785
|
+
this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
786
|
+
this.statsResults[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
760
787
|
}
|
|
761
|
-
var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
|
|
762
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
763
|
-
kilobytes = bytes / 1024;
|
|
764
788
|
this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
|
|
765
|
-
this.statsResults[mediaType].
|
|
766
|
-
this.statsResults[mediaType][sendrecvType].
|
|
767
|
-
this.statsResults[mediaType][sendrecvType].
|
|
768
|
-
this.statsResults.internal[mediaType].outboundRtpId = result.id;
|
|
769
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
|
|
770
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
771
|
-
}
|
|
772
|
-
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
|
|
773
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
789
|
+
this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
790
|
+
this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
791
|
+
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
774
792
|
|
|
775
793
|
// Data saved to send MQA metrics
|
|
776
794
|
|
|
@@ -804,41 +822,32 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
804
822
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
805
823
|
if (result.bytesReceived) {
|
|
806
824
|
var kilobytes = 0;
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
this.statsResults
|
|
812
|
-
|
|
813
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
|
|
814
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
|
|
815
|
-
}
|
|
816
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
|
|
817
|
-
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
818
|
-
}
|
|
819
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
|
|
820
|
-
this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
825
|
+
var receiveSlot = this.receiveSlotCallback(result.ssrc);
|
|
826
|
+
var idAndCsi = receiveSlot ? "id: \"".concat(receiveSlot.id || '', "\"").concat(receiveSlot.csi ? " and csi: ".concat(receiveSlot.csi) : '') : '';
|
|
827
|
+
if (result.frameWidth && result.frameHeight) {
|
|
828
|
+
this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
|
|
829
|
+
this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
|
|
830
|
+
this.statsResults[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
821
831
|
}
|
|
822
|
-
var bytes = result.bytesReceived - this.statsResults
|
|
823
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
832
|
+
var bytes = result.bytesReceived - this.statsResults[mediaType][sendrecvType].totalBytesReceived;
|
|
824
833
|
kilobytes = bytes / 1024;
|
|
825
834
|
this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
|
|
826
|
-
this.statsResults[mediaType].
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
|
|
830
|
-
this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
|
|
835
|
+
var currentPacketsLost = result.packetsLost - this.statsResults[mediaType][sendrecvType].totalPacketsLost;
|
|
836
|
+
if (currentPacketsLost < 0) {
|
|
837
|
+
currentPacketsLost = 0;
|
|
831
838
|
}
|
|
832
|
-
|
|
833
|
-
this.statsResults
|
|
834
|
-
if (
|
|
835
|
-
|
|
839
|
+
var currentPacketsReceived = result.packetsReceived - this.statsResults[mediaType][sendrecvType].totalPacketsReceived;
|
|
840
|
+
this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
841
|
+
if (currentPacketsReceived === 0) {
|
|
842
|
+
if (receiveSlot) {
|
|
843
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ".concat(idAndCsi), currentPacketsReceived);
|
|
844
|
+
}
|
|
836
845
|
}
|
|
837
846
|
|
|
838
847
|
// Check the over all packet Lost ratio
|
|
839
|
-
this.statsResults[mediaType][sendrecvType].currentPacketLossRatio =
|
|
848
|
+
this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = currentPacketsLost > 0 ? currentPacketsLost / (currentPacketsReceived + currentPacketsLost) : 0;
|
|
840
849
|
if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
|
|
841
|
-
_loggerProxy.default.logger.info(
|
|
850
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
|
|
842
851
|
}
|
|
843
852
|
|
|
844
853
|
// TODO: check the packet loss value is negative values here
|
|
@@ -874,55 +883,19 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
874
883
|
}
|
|
875
884
|
|
|
876
885
|
/**
|
|
877
|
-
*
|
|
886
|
+
* extracts the local Ip address from the statsResult object by looking at stats results candidates
|
|
887
|
+
* and matches that ID with the successful candidate pair. It looks at the type of local candidate it is
|
|
888
|
+
* and then extracts the IP address from the relatedAddress or address property based on conditions known in webrtc
|
|
889
|
+
* note, there are known incompatibilities and it is possible for this to set undefined, or for the IP address to be the public IP address
|
|
890
|
+
* for example, firefox does not set the relayProtocol, and if the user is behind a NAT it might be the public IP
|
|
878
891
|
* @private
|
|
879
|
-
* @param {
|
|
880
|
-
* @param {
|
|
881
|
-
* @param {boolean} isSender
|
|
882
|
-
* @param {boolean} isRemote
|
|
883
|
-
*
|
|
892
|
+
* @param {string} successfulCandidatePairId - The ID of the successful candidate pair.
|
|
893
|
+
* @param {Object} candidates - the stats result candidates
|
|
884
894
|
* @returns {void}
|
|
885
895
|
*/
|
|
886
896
|
}, {
|
|
887
|
-
key: "
|
|
897
|
+
key: "compareSentAndReceived",
|
|
888
898
|
value:
|
|
889
|
-
/**
|
|
890
|
-
* Process Track results
|
|
891
|
-
*
|
|
892
|
-
* @private
|
|
893
|
-
* @param {*} result
|
|
894
|
-
* @param {*} mediaType
|
|
895
|
-
* @returns {void}
|
|
896
|
-
* @memberof StatsAnalyzer
|
|
897
|
-
*/
|
|
898
|
-
function processTrackResult(result, mediaType) {
|
|
899
|
-
if (!result || result.type !== 'track') {
|
|
900
|
-
return;
|
|
901
|
-
}
|
|
902
|
-
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
903
|
-
if (result.frameWidth && result.frameHeight) {
|
|
904
|
-
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
905
|
-
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
906
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
907
|
-
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
908
|
-
}
|
|
909
|
-
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
910
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
911
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
912
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
913
|
-
}
|
|
914
|
-
if (result.trackIdentifier && !mediaType.includes('audio')) {
|
|
915
|
-
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|
|
916
|
-
var jitterBufferDelay = result && result.jitterBufferDelay;
|
|
917
|
-
var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
|
|
918
|
-
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
919
|
-
|
|
920
|
-
// Used to calculate the jitter
|
|
921
|
-
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
|
|
922
|
-
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
|
|
926
899
|
/**
|
|
927
900
|
*
|
|
928
901
|
* @private
|
|
@@ -931,19 +904,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
931
904
|
* @returns {void}
|
|
932
905
|
* @memberof StatsAnalyzer
|
|
933
906
|
*/
|
|
934
|
-
|
|
935
|
-
key: "compareSentAndReceived",
|
|
936
|
-
value: function compareSentAndReceived(result, type) {
|
|
907
|
+
function compareSentAndReceived(result, type) {
|
|
937
908
|
// Don't compare on transceivers without a sender.
|
|
938
|
-
if (!type || !this.statsResults
|
|
909
|
+
if (!type || !this.statsResults[type].send) {
|
|
939
910
|
return;
|
|
940
911
|
}
|
|
941
912
|
var mediaType = type;
|
|
942
|
-
|
|
943
|
-
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
944
|
-
}
|
|
945
|
-
var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
|
|
946
|
-
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
913
|
+
var currentPacketLoss = result.packetsLost - this.statsResults[mediaType].send.totalPacketsLostOnReceiver;
|
|
947
914
|
this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
|
|
948
915
|
this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
949
916
|
this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);
|