@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0
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/.eslintrc.js +6 -0
- package/README.md +12 -0
- package/babel.config.js +3 -0
- package/dist/annotation/constants.js +12 -20
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +25 -10
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +2 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js +1 -2
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +1 -2
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js +1 -2
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +13 -14
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +1 -2
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js +3 -6
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
- package/dist/common/errors/webex-errors.js +35 -16
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/{types/common → common}/logs/request.d.ts +3 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +2 -4
- package/dist/common/queue.js.map +1 -1
- package/dist/{types/config.d.ts → config.d.ts} +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/{types/constants.d.ts → constants.d.ts} +72 -15
- package/dist/constants.js +254 -371
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +7 -10
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +27 -32
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interceptors/locusRetry.js +94 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +1 -2
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +2 -3
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +2 -3
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -13
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
- package/dist/locus-info/index.js +63 -38
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -4
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +16 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
- package/dist/locus-info/parser.js +48 -31
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +7 -6
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +15 -10
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +16 -7
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/mediaQualityMetrics/config.js +135 -339
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
- package/dist/meeting/in-meeting-actions.js +18 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/{types/meeting → meeting}/index.d.ts +331 -44
- package/dist/meeting/index.js +2639 -1367
- package/dist/meeting/index.js.map +1 -1
- package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +1 -2
- package/dist/meeting/locusMediaRequest.js +4 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +2 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/{types/meeting → meeting}/request.d.ts +4 -1
- package/dist/meeting/request.js +47 -32
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/{types/meeting → meeting}/util.d.ts +26 -1
- package/dist/meeting/util.js +83 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting/voicea-meeting.js +169 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
- package/dist/meeting-info/index.js +53 -27
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
- package/dist/meeting-info/meeting-info-v2.js +52 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +8 -8
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +12 -9
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
- package/dist/meetings/collection.js +21 -5
- package/dist/meetings/collection.js.map +1 -1
- package/dist/{types/meetings → meetings}/index.d.ts +45 -16
- package/dist/meetings/index.js +166 -74
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +3 -10
- package/dist/meetings/util.js.map +1 -1
- package/dist/{types/member → member}/index.d.ts +1 -0
- package/dist/member/index.js +10 -3
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +17 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.js +6 -8
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +12 -2
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +25 -8
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +2 -3
- package/dist/members/request.js.map +1 -1
- package/dist/{types/members → members}/types.d.ts +1 -0
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/{types/members → members}/util.d.ts +6 -1
- package/dist/members/util.js +18 -8
- package/dist/members/util.js.map +1 -1
- package/dist/{types/metrics → metrics}/constants.d.ts +15 -0
- package/dist/metrics/constants.js +16 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +9 -11
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -5
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +7 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +7 -6
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +9 -1
- package/dist/multistream/remoteMediaManager.js +74 -36
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +9 -6
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +1 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/clusterReachability.js +357 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.d.ts +105 -0
- package/dist/reachability/index.js +279 -436
- package/dist/reachability/index.js.map +1 -1
- package/dist/{types/reachability → reachability}/request.d.ts +1 -1
- package/dist/reachability/request.js +14 -11
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +1 -2
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +6 -8
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
- package/dist/reconnection-manager/index.js +129 -106
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +43 -51
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +1 -2
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/{types/roap → roap}/index.d.ts +2 -1
- package/dist/roap/index.js +59 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/{types/roap → roap}/request.d.ts +2 -1
- package/dist/roap/request.js +14 -22
- package/dist/roap/request.js.map +1 -1
- package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
- package/dist/roap/turnDiscovery.js +182 -89
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +1 -2
- package/dist/rtcMetrics/constants.js.map +1 -1
- package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
- package/dist/rtcMetrics/index.js +72 -12
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
- package/dist/statsAnalyzer/index.js +371 -318
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/statsAnalyzer/mqaUtil.js +295 -162
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +44 -24
- package/process +1 -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 +19 -2
- package/src/common/logs/request.ts +5 -1
- package/src/config.ts +3 -5
- package/src/constants.ts +78 -8
- package/src/index.ts +4 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/locus-info/index.ts +52 -16
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/parser.ts +47 -21
- package/src/media/index.ts +8 -6
- package/src/media/properties.ts +17 -2
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +1692 -627
- package/src/meeting/request.ts +19 -1
- package/src/meeting/util.ts +102 -1
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/index.ts +47 -20
- package/src/meeting-info/meeting-info-v2.ts +32 -16
- package/src/meeting-info/util.ts +12 -9
- package/src/meeting-info/utilv2.ts +25 -15
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +112 -31
- package/src/meetings/util.ts +2 -8
- package/src/member/index.ts +9 -1
- package/src/member/member.types.ts +13 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +29 -2
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/src/metrics/constants.ts +14 -0
- package/src/multistream/remoteMediaManager.ts +41 -4
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +221 -382
- package/src/reachability/request.ts +1 -1
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +87 -83
- package/src/roap/index.ts +60 -24
- package/src/roap/request.ts +4 -17
- package/src/roap/turnDiscovery.ts +112 -39
- package/src/rtcMetrics/index.ts +71 -5
- package/src/statsAnalyzer/index.ts +430 -427
- package/src/statsAnalyzer/mqaUtil.ts +317 -168
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +7 -7
- package/test/integration/spec/journey.js +88 -106
- package/test/integration/spec/space-meeting.js +10 -10
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/locus-info/index.js +206 -13
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
- package/test/unit/spec/locus-info/selfUtils.js +1 -1
- package/test/unit/spec/media/index.ts +25 -4
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +4354 -1285
- package/test/unit/spec/meeting/request.js +63 -12
- package/test/unit/spec/meeting/utils.js +145 -10
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +180 -61
- package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +676 -195
- package/test/unit/spec/meetings/utils.js +35 -12
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +130 -17
- package/test/unit/spec/members/utils.js +26 -0
- package/test/unit/spec/metrics/index.js +1 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +10 -2
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +505 -135
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +74 -17
- package/test/unit/spec/recording-controller/index.js +0 -1
- package/test/unit/spec/roap/index.ts +181 -61
- package/test/unit/spec/roap/request.ts +27 -3
- package/test/unit/spec/roap/turnDiscovery.ts +363 -102
- package/test/unit/spec/rtcMetrics/index.ts +57 -3
- package/test/unit/spec/stats-analyzer/index.js +1225 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +4 -4
- package/test/utils/webex-test-users.js +12 -4
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
- package/dist/types/reachability/index.d.ts +0 -158
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
- /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
- /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
- /package/dist/{types/common → common}/collection.d.ts +0 -0
- /package/dist/{types/common → common}/config.d.ts +0 -0
- /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
- /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
- /package/dist/{types/common → common}/errors/media.d.ts +0 -0
- /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
- /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
- /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
- /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
- /package/dist/{types/common → common}/events/events.d.ts +0 -0
- /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/events/util.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/queue.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
- /package/dist/{types/media → media}/index.d.ts +0 -0
- /package/dist/{types/media → media}/properties.d.ts +0 -0
- /package/dist/{types/media → media}/util.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
- /package/dist/{types/member → member}/types.d.ts +0 -0
- /package/dist/{types/member → member}/util.d.ts +0 -0
- /package/dist/{types/members → members}/collection.d.ts +0 -0
- /package/dist/{types/members → members}/index.d.ts +0 -0
- /package/dist/{types/members → members}/request.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
- /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
- /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
- /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
+
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
7
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
8
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
4
9
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
5
10
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
11
|
_Object$defineProperty(exports, "__esModule", {
|
|
@@ -17,7 +22,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
|
|
|
17
22
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
18
23
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
19
24
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
-
var
|
|
25
|
+
var _lodash = require("lodash");
|
|
21
26
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
22
27
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
23
28
|
var _constants = require("../constants");
|
|
@@ -25,16 +30,17 @@ var _config = require("../mediaQualityMetrics/config");
|
|
|
25
30
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
26
31
|
var _global = _interopRequireDefault(require("./global"));
|
|
27
32
|
var _mqaUtil = require("./mqaUtil");
|
|
33
|
+
function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
34
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
35
|
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); }; }
|
|
29
|
-
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; } }
|
|
30
|
-
var EVENTS = {
|
|
36
|
+
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; } } /* eslint-disable prefer-destructuring */
|
|
37
|
+
var EVENTS = exports.EVENTS = {
|
|
31
38
|
MEDIA_QUALITY: 'MEDIA_QUALITY',
|
|
32
39
|
LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
|
|
33
40
|
LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',
|
|
34
41
|
REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
|
|
35
42
|
REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
|
|
36
43
|
};
|
|
37
|
-
exports.EVENTS = EVENTS;
|
|
38
44
|
var emptySender = {
|
|
39
45
|
trackLabel: '',
|
|
40
46
|
maxPacketLossRatio: 0,
|
|
@@ -56,7 +62,7 @@ var emptyReceiver = {
|
|
|
56
62
|
* @class StatsAnalyzer
|
|
57
63
|
* @extends {EventsScope}
|
|
58
64
|
*/
|
|
59
|
-
var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
65
|
+
var StatsAnalyzer = exports.StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
60
66
|
(0, _inherits2.default)(StatsAnalyzer, _EventsScope);
|
|
61
67
|
var _super = _createSuper(StatsAnalyzer);
|
|
62
68
|
/**
|
|
@@ -90,7 +96,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
90
96
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsInterval", void 0);
|
|
91
97
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsResults", void 0);
|
|
92
98
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
|
|
99
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "successfulCandidatePair", void 0);
|
|
100
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localIpAddress", void 0);
|
|
101
|
+
// 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
|
|
93
102
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotCallback", void 0);
|
|
103
|
+
/**
|
|
104
|
+
* emits started/stopped events for local/remote media by checking
|
|
105
|
+
* if given values are increasing or not. The previousValue, currentValue
|
|
106
|
+
* params can be any numerical value like number of receive packets or
|
|
107
|
+
* decoded frames, etc.
|
|
108
|
+
*
|
|
109
|
+
* @private
|
|
110
|
+
* @param {string} mediaType
|
|
111
|
+
* @param {number} previousValue - value to compare
|
|
112
|
+
* @param {number} currentValue - value to compare (must be same type of value as previousValue)
|
|
113
|
+
* @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
|
|
114
|
+
* @memberof StatsAnalyzer
|
|
115
|
+
* @returns {void}
|
|
116
|
+
*/
|
|
94
117
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
|
|
95
118
|
if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
|
|
96
119
|
throw new Error("Unsupported mediaType: ".concat(mediaType));
|
|
@@ -124,57 +147,96 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
124
147
|
});
|
|
125
148
|
}
|
|
126
149
|
});
|
|
150
|
+
/**
|
|
151
|
+
* extracts the local Ip address from the statsResult object by looking at stats results candidates
|
|
152
|
+
* and matches that ID with the successful candidate pair. It looks at the type of local candidate it is
|
|
153
|
+
* and then extracts the IP address from the relatedAddress or address property based on conditions known in webrtc
|
|
154
|
+
* 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
|
|
155
|
+
* for example, firefox does not set the relayProtocol, and if the user is behind a NAT it might be the public IP
|
|
156
|
+
* @private
|
|
157
|
+
* @param {string} successfulCandidatePairId - The ID of the successful candidate pair.
|
|
158
|
+
* @param {Object} candidates - the stats result candidates
|
|
159
|
+
* @returns {void}
|
|
160
|
+
*/
|
|
161
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "extractAndSetLocalIpAddressInfoForDiagnostics", function (successfulCandidatePairId, candidates) {
|
|
162
|
+
var newIpAddress = '';
|
|
163
|
+
if (successfulCandidatePairId && !(0, _lodash.isEmpty)(candidates)) {
|
|
164
|
+
var localCandidate = candidates[successfulCandidatePairId];
|
|
165
|
+
if (localCandidate) {
|
|
166
|
+
if (localCandidate.candidateType === 'host') {
|
|
167
|
+
// if it's a host candidate, use the address property - it will be the local IP
|
|
168
|
+
newIpAddress = "".concat(localCandidate.address);
|
|
169
|
+
} else if (localCandidate.candidateType === 'prflx') {
|
|
170
|
+
// if it's a peer reflexive candidate and we're not using a relay (there is no relayProtocol set)
|
|
171
|
+
// then look at the relatedAddress - it will be the local
|
|
172
|
+
//
|
|
173
|
+
// Firefox doesn't populate the relayProtocol property
|
|
174
|
+
if (!localCandidate.relayProtocol) {
|
|
175
|
+
newIpAddress = "".concat(localCandidate.relatedAddress);
|
|
176
|
+
} else {
|
|
177
|
+
// if it's a peer reflexive candidate and we are using a relay -
|
|
178
|
+
// in that case the relatedAddress will be the IP of the TURN server (Linus),
|
|
179
|
+
// so we can only look at the address, but it might be local IP or public IP,
|
|
180
|
+
// depending on if the user is behind a NAT or not
|
|
181
|
+
newIpAddress = "".concat(localCandidate.address);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
_this.localIpAddress = newIpAddress;
|
|
187
|
+
});
|
|
188
|
+
/**
|
|
189
|
+
* Processes remote and local candidate result and stores
|
|
190
|
+
* @private
|
|
191
|
+
* @param {*} result
|
|
192
|
+
* @param {*} type
|
|
193
|
+
* @param {boolean} isSender
|
|
194
|
+
* @param {boolean} isRemote
|
|
195
|
+
*
|
|
196
|
+
* @returns {void}
|
|
197
|
+
*/
|
|
127
198
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseCandidate", function (result, type, isSender, isRemote) {
|
|
199
|
+
var _this$successfulCandi;
|
|
128
200
|
if (!result || !result.id) {
|
|
129
201
|
return;
|
|
130
202
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (!result.id) return;
|
|
136
|
-
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
137
|
-
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
138
|
-
if (!RemoteCandidateType[result.id]) {
|
|
139
|
-
RemoteCandidateType[result.id] = [];
|
|
140
|
-
}
|
|
141
|
-
if (!RemoteTransport[result.id]) {
|
|
142
|
-
RemoteTransport[result.id] = [];
|
|
143
|
-
}
|
|
144
|
-
if (!RemoteIpAddress[result.id]) {
|
|
145
|
-
RemoteIpAddress[result.id] = [];
|
|
146
|
-
}
|
|
147
|
-
if (!RemoteNetworkType[result.id]) {
|
|
148
|
-
RemoteNetworkType[result.id] = [];
|
|
149
|
-
}
|
|
150
|
-
if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
|
|
151
|
-
RemoteCandidateType[result.id].push(result.candidateType);
|
|
152
|
-
}
|
|
153
|
-
if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
|
|
154
|
-
RemoteTransport[result.id].push(result.protocol.toUpperCase());
|
|
203
|
+
|
|
204
|
+
// We only care about the successful local candidate
|
|
205
|
+
if (((_this$successfulCandi = _this.successfulCandidatePair) === null || _this$successfulCandi === void 0 ? void 0 : _this$successfulCandi.localCandidateId) !== result.id) {
|
|
206
|
+
return;
|
|
155
207
|
}
|
|
156
|
-
|
|
157
|
-
|
|
208
|
+
var transport;
|
|
209
|
+
if (result.relayProtocol) {
|
|
210
|
+
transport = result.relayProtocol.toUpperCase();
|
|
211
|
+
} else if (result.protocol) {
|
|
212
|
+
transport = result.protocol.toUpperCase();
|
|
158
213
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
214
|
+
var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
|
|
215
|
+
var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
|
|
216
|
+
if (!_this.statsResults.candidates) {
|
|
217
|
+
_this.statsResults.candidates = {};
|
|
162
218
|
}
|
|
163
|
-
_this.statsResults.
|
|
164
|
-
candidateType:
|
|
165
|
-
ipAddress:
|
|
219
|
+
_this.statsResults.candidates[result.id] = {
|
|
220
|
+
candidateType: result.candidateType,
|
|
221
|
+
ipAddress: result.ip,
|
|
222
|
+
// TODO: add ports
|
|
223
|
+
relatedAddress: result.relatedAddress,
|
|
224
|
+
relatedPort: result.relatedPort,
|
|
225
|
+
relayProtocol: result.relayProtocol,
|
|
226
|
+
protocol: result.protocol,
|
|
227
|
+
address: result.address,
|
|
166
228
|
portNumber: result.port,
|
|
167
|
-
networkType:
|
|
229
|
+
networkType: result.networkType,
|
|
168
230
|
priority: result.priority,
|
|
169
|
-
transport:
|
|
231
|
+
transport: transport,
|
|
170
232
|
timestamp: result.time,
|
|
171
233
|
id: result.id,
|
|
172
234
|
type: result.type
|
|
173
235
|
};
|
|
174
|
-
_this.statsResults.connectionType[ipType].candidateType =
|
|
175
|
-
_this.statsResults.connectionType[ipType].ipAddress =
|
|
176
|
-
_this.statsResults.connectionType[ipType].networkType =
|
|
177
|
-
_this.statsResults.connectionType[ipType].transport =
|
|
236
|
+
_this.statsResults.connectionType[ipType].candidateType = result.candidateType;
|
|
237
|
+
_this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;
|
|
238
|
+
_this.statsResults.connectionType[ipType].networkType = result.networkType === _constants.NETWORK_TYPE.VPN ? _constants.NETWORK_TYPE.UNKNOWN : result.networkType;
|
|
239
|
+
_this.statsResults.connectionType[ipType].transport = transport;
|
|
178
240
|
_this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;
|
|
179
241
|
});
|
|
180
242
|
_this.statsStarted = false;
|
|
@@ -187,6 +249,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
187
249
|
_this.lastMqaDataSent = {};
|
|
188
250
|
_this.lastEmittedStartStopEvent = {};
|
|
189
251
|
_this.receiveSlotCallback = receiveSlotCallback;
|
|
252
|
+
_this.successfulCandidatePair = {};
|
|
253
|
+
_this.localIpAddress = '';
|
|
190
254
|
return _this;
|
|
191
255
|
}
|
|
192
256
|
|
|
@@ -223,7 +287,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
223
287
|
}, {
|
|
224
288
|
key: "updateMediaStatus",
|
|
225
289
|
value: function updateMediaStatus(status) {
|
|
226
|
-
|
|
290
|
+
var _this$meetingMediaSta, _this$meetingMediaSta2;
|
|
291
|
+
this.meetingMediaStatus = {
|
|
292
|
+
actual: _objectSpread(_objectSpread({}, (_this$meetingMediaSta = this.meetingMediaStatus) === null || _this$meetingMediaSta === void 0 ? void 0 : _this$meetingMediaSta.actual), status === null || status === void 0 ? void 0 : status.actual),
|
|
293
|
+
expected: _objectSpread(_objectSpread({}, (_this$meetingMediaSta2 = this.meetingMediaStatus) === null || _this$meetingMediaSta2 === void 0 ? void 0 : _this$meetingMediaSta2.expected), status === null || status === void 0 ? void 0 : status.expected)
|
|
294
|
+
};
|
|
227
295
|
}
|
|
228
296
|
|
|
229
297
|
/**
|
|
@@ -237,65 +305,187 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
237
305
|
key: "sendMqaData",
|
|
238
306
|
value: function sendMqaData() {
|
|
239
307
|
var _this3 = this;
|
|
240
|
-
var newMqa = (0,
|
|
308
|
+
var newMqa = (0, _lodash.cloneDeep)(_config.emptyMqaInterval);
|
|
309
|
+
|
|
310
|
+
// Fill in empty stats items for lastMqaDataSent
|
|
241
311
|
(0, _keys.default)(this.statsResults).forEach(function (mediaType) {
|
|
242
|
-
if (
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
312
|
+
if (!_this3.lastMqaDataSent[mediaType]) {
|
|
313
|
+
_this3.lastMqaDataSent[mediaType] = {};
|
|
314
|
+
}
|
|
315
|
+
if (!_this3.lastMqaDataSent[mediaType].send && mediaType.includes('-send')) {
|
|
316
|
+
_this3.lastMqaDataSent[mediaType].send = {};
|
|
317
|
+
}
|
|
318
|
+
if (!_this3.lastMqaDataSent[mediaType].recv && mediaType.includes('-recv')) {
|
|
319
|
+
_this3.lastMqaDataSent[mediaType].recv = {};
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
// Create stats the first level, totals for senders and receivers
|
|
324
|
+
var audioSender = (0, _lodash.cloneDeep)(_config.emptyAudioTransmit);
|
|
325
|
+
var audioShareSender = (0, _lodash.cloneDeep)(_config.emptyAudioTransmit);
|
|
326
|
+
var audioReceiver = (0, _lodash.cloneDeep)(_config.emptyAudioReceive);
|
|
327
|
+
var audioShareReceiver = (0, _lodash.cloneDeep)(_config.emptyAudioReceive);
|
|
328
|
+
var videoSender = (0, _lodash.cloneDeep)(_config.emptyVideoTransmit);
|
|
329
|
+
var videoShareSender = (0, _lodash.cloneDeep)(_config.emptyVideoTransmit);
|
|
330
|
+
var videoReceiver = (0, _lodash.cloneDeep)(_config.emptyVideoReceive);
|
|
331
|
+
var videoShareReceiver = (0, _lodash.cloneDeep)(_config.emptyVideoReceive);
|
|
332
|
+
(0, _mqaUtil.getAudioSenderMqa)({
|
|
333
|
+
audioSender: audioSender,
|
|
334
|
+
statsResults: this.statsResults,
|
|
335
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
336
|
+
baseMediaType: 'audio-send'
|
|
337
|
+
});
|
|
338
|
+
newMqa.audioTransmit.push(audioSender);
|
|
339
|
+
(0, _mqaUtil.getAudioSenderMqa)({
|
|
340
|
+
audioSender: audioShareSender,
|
|
341
|
+
statsResults: this.statsResults,
|
|
342
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
343
|
+
baseMediaType: 'audio-share-send'
|
|
344
|
+
});
|
|
345
|
+
newMqa.audioTransmit.push(audioShareSender);
|
|
346
|
+
(0, _mqaUtil.getAudioReceiverMqa)({
|
|
347
|
+
audioReceiver: audioReceiver,
|
|
348
|
+
statsResults: this.statsResults,
|
|
349
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
350
|
+
baseMediaType: 'audio-recv'
|
|
351
|
+
});
|
|
352
|
+
newMqa.audioReceive.push(audioReceiver);
|
|
353
|
+
(0, _mqaUtil.getAudioReceiverMqa)({
|
|
354
|
+
audioReceiver: audioShareReceiver,
|
|
355
|
+
statsResults: this.statsResults,
|
|
356
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
357
|
+
baseMediaType: 'audio-share-recv'
|
|
358
|
+
});
|
|
359
|
+
newMqa.audioReceive.push(audioShareReceiver);
|
|
360
|
+
(0, _mqaUtil.getVideoSenderMqa)({
|
|
361
|
+
videoSender: videoSender,
|
|
362
|
+
statsResults: this.statsResults,
|
|
363
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
364
|
+
baseMediaType: 'video-send'
|
|
365
|
+
});
|
|
366
|
+
newMqa.videoTransmit.push(videoSender);
|
|
367
|
+
(0, _mqaUtil.getVideoSenderMqa)({
|
|
368
|
+
videoSender: videoShareSender,
|
|
369
|
+
statsResults: this.statsResults,
|
|
370
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
371
|
+
baseMediaType: 'video-share-send'
|
|
372
|
+
});
|
|
373
|
+
newMqa.videoTransmit.push(videoShareSender);
|
|
374
|
+
(0, _mqaUtil.getVideoReceiverMqa)({
|
|
375
|
+
videoReceiver: videoReceiver,
|
|
376
|
+
statsResults: this.statsResults,
|
|
377
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
378
|
+
baseMediaType: 'video-recv'
|
|
379
|
+
});
|
|
380
|
+
newMqa.videoReceive.push(videoReceiver);
|
|
381
|
+
(0, _mqaUtil.getVideoReceiverMqa)({
|
|
382
|
+
videoReceiver: videoShareReceiver,
|
|
383
|
+
statsResults: this.statsResults,
|
|
384
|
+
lastMqaDataSent: this.lastMqaDataSent,
|
|
385
|
+
baseMediaType: 'video-share-recv'
|
|
386
|
+
});
|
|
387
|
+
newMqa.videoReceive.push(videoShareReceiver);
|
|
388
|
+
|
|
389
|
+
// Add stats for individual streams
|
|
390
|
+
(0, _keys.default)(this.statsResults).forEach(function (mediaType) {
|
|
391
|
+
if (mediaType.includes('audio-send')) {
|
|
392
|
+
var audioSenderStream = (0, _lodash.cloneDeep)(_config.emptyAudioTransmitStream);
|
|
393
|
+
(0, _mqaUtil.getAudioSenderStreamMqa)({
|
|
394
|
+
audioSenderStream: audioSenderStream,
|
|
395
|
+
statsResults: _this3.statsResults,
|
|
396
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
397
|
+
mediaType: mediaType
|
|
398
|
+
});
|
|
399
|
+
newMqa.audioTransmit[0].streams.push(audioSenderStream);
|
|
400
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
|
|
401
|
+
} else if (mediaType.includes('audio-share-send')) {
|
|
402
|
+
var _audioSenderStream = (0, _lodash.cloneDeep)(_config.emptyAudioTransmitStream);
|
|
403
|
+
(0, _mqaUtil.getAudioSenderStreamMqa)({
|
|
404
|
+
audioSenderStream: _audioSenderStream,
|
|
405
|
+
statsResults: _this3.statsResults,
|
|
406
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
407
|
+
mediaType: mediaType
|
|
408
|
+
});
|
|
409
|
+
newMqa.audioTransmit[1].streams.push(_audioSenderStream);
|
|
410
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
|
|
411
|
+
} else if (mediaType.includes('audio-recv')) {
|
|
412
|
+
var audioReceiverStream = (0, _lodash.cloneDeep)(_config.emptyAudioReceiveStream);
|
|
413
|
+
(0, _mqaUtil.getAudioReceiverStreamMqa)({
|
|
414
|
+
audioReceiverStream: audioReceiverStream,
|
|
246
415
|
statsResults: _this3.statsResults,
|
|
247
416
|
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
248
417
|
mediaType: mediaType
|
|
249
418
|
});
|
|
250
|
-
newMqa.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
(0,
|
|
254
|
-
|
|
419
|
+
newMqa.audioReceive[0].streams.push(audioReceiverStream);
|
|
420
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
|
|
421
|
+
} else if (mediaType.includes('audio-share-recv')) {
|
|
422
|
+
var _audioReceiverStream = (0, _lodash.cloneDeep)(_config.emptyAudioReceiveStream);
|
|
423
|
+
(0, _mqaUtil.getAudioReceiverStreamMqa)({
|
|
424
|
+
audioReceiverStream: _audioReceiverStream,
|
|
255
425
|
statsResults: _this3.statsResults,
|
|
256
426
|
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
257
427
|
mediaType: mediaType
|
|
258
428
|
});
|
|
259
|
-
newMqa.audioReceive.push(
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
(0,
|
|
263
|
-
|
|
429
|
+
newMqa.audioReceive[1].streams.push(_audioReceiverStream);
|
|
430
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
|
|
431
|
+
} else if (mediaType.includes('video-send')) {
|
|
432
|
+
var videoSenderStream = (0, _lodash.cloneDeep)(_config.emptyVideoTransmitStream);
|
|
433
|
+
(0, _mqaUtil.getVideoSenderStreamMqa)({
|
|
434
|
+
videoSenderStream: videoSenderStream,
|
|
264
435
|
statsResults: _this3.statsResults,
|
|
265
436
|
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
266
437
|
mediaType: mediaType
|
|
267
438
|
});
|
|
268
|
-
newMqa.videoTransmit.push(
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
(0,
|
|
272
|
-
|
|
439
|
+
newMqa.videoTransmit[0].streams.push(videoSenderStream);
|
|
440
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
|
|
441
|
+
} else if (mediaType.includes('video-share-send')) {
|
|
442
|
+
var _videoSenderStream = (0, _lodash.cloneDeep)(_config.emptyVideoTransmitStream);
|
|
443
|
+
(0, _mqaUtil.getVideoSenderStreamMqa)({
|
|
444
|
+
videoSenderStream: _videoSenderStream,
|
|
273
445
|
statsResults: _this3.statsResults,
|
|
274
446
|
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
275
447
|
mediaType: mediaType
|
|
276
448
|
});
|
|
277
|
-
newMqa.
|
|
449
|
+
newMqa.videoTransmit[1].streams.push(_videoSenderStream);
|
|
450
|
+
_this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
|
|
451
|
+
} else if (mediaType.includes('video-recv')) {
|
|
452
|
+
var videoReceiverStream = (0, _lodash.cloneDeep)(_config.emptyVideoReceiveStream);
|
|
453
|
+
(0, _mqaUtil.getVideoReceiverStreamMqa)({
|
|
454
|
+
videoReceiverStream: videoReceiverStream,
|
|
455
|
+
statsResults: _this3.statsResults,
|
|
456
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
457
|
+
mediaType: mediaType
|
|
458
|
+
});
|
|
459
|
+
newMqa.videoReceive[0].streams.push(videoReceiverStream);
|
|
460
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
|
|
461
|
+
} else if (mediaType.includes('video-share-recv')) {
|
|
462
|
+
var _videoReceiverStream = (0, _lodash.cloneDeep)(_config.emptyVideoReceiveStream);
|
|
463
|
+
(0, _mqaUtil.getVideoReceiverStreamMqa)({
|
|
464
|
+
videoReceiverStream: _videoReceiverStream,
|
|
465
|
+
statsResults: _this3.statsResults,
|
|
466
|
+
lastMqaDataSent: _this3.lastMqaDataSent,
|
|
467
|
+
mediaType: mediaType
|
|
468
|
+
});
|
|
469
|
+
newMqa.videoReceive[1].streams.push(_videoReceiverStream);
|
|
470
|
+
_this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
|
|
278
471
|
}
|
|
279
472
|
});
|
|
280
|
-
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress
|
|
473
|
+
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
|
|
281
474
|
|
|
282
475
|
// Adding peripheral information
|
|
283
|
-
newMqa.intervalMetadata.peripherals = [];
|
|
284
476
|
newMqa.intervalMetadata.peripherals.push({
|
|
285
477
|
information: _constants._UNKNOWN_,
|
|
286
478
|
name: _constants.MEDIA_DEVICES.SPEAKER
|
|
287
479
|
});
|
|
288
480
|
if (this.statsResults['audio-send']) {
|
|
289
|
-
var _this$statsResults$au;
|
|
290
481
|
newMqa.intervalMetadata.peripherals.push({
|
|
291
|
-
information:
|
|
482
|
+
information: this.statsResults['audio-send'].trackLabel || _constants._UNKNOWN_,
|
|
292
483
|
name: _constants.MEDIA_DEVICES.MICROPHONE
|
|
293
484
|
});
|
|
294
485
|
}
|
|
295
486
|
if (this.statsResults['video-send']) {
|
|
296
|
-
var _this$statsResults$vi;
|
|
297
487
|
newMqa.intervalMetadata.peripherals.push({
|
|
298
|
-
information:
|
|
488
|
+
information: this.statsResults['video-send'].trackLabel || _constants._UNKNOWN_,
|
|
299
489
|
name: _constants.MEDIA_DEVICES.CAMERA
|
|
300
490
|
});
|
|
301
491
|
}
|
|
@@ -327,6 +517,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
327
517
|
this.mediaConnection = mediaConnection;
|
|
328
518
|
}
|
|
329
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Returns the local IP address for diagnostics.
|
|
522
|
+
* this is the local IP of the interface used for the current media connection
|
|
523
|
+
* a host can have many local Ip Addresses
|
|
524
|
+
* @returns {string | undefined} The local IP address.
|
|
525
|
+
*/
|
|
526
|
+
}, {
|
|
527
|
+
key: "getLocalIpAddress",
|
|
528
|
+
value: function getLocalIpAddress() {
|
|
529
|
+
return this.localIpAddress;
|
|
530
|
+
}
|
|
531
|
+
|
|
330
532
|
/**
|
|
331
533
|
* Starts the stats analyzer on interval
|
|
332
534
|
*
|
|
@@ -350,7 +552,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
350
552
|
_this4.sendMqaData();
|
|
351
553
|
_this4.mqaInterval = setInterval(function () {
|
|
352
554
|
_this4.sendMqaData();
|
|
353
|
-
}, _constants.
|
|
555
|
+
}, _constants.MQA_INTERVAL);
|
|
354
556
|
});
|
|
355
557
|
}
|
|
356
558
|
return _promise.default.resolve();
|
|
@@ -407,25 +609,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
407
609
|
this.statsResults[type] = {};
|
|
408
610
|
}
|
|
409
611
|
if (isSender && !this.statsResults[type].send) {
|
|
410
|
-
this.statsResults[type].send = (0,
|
|
612
|
+
this.statsResults[type].send = (0, _lodash.cloneDeep)(emptySender);
|
|
411
613
|
} else if (!isSender && !this.statsResults[type].recv) {
|
|
412
|
-
this.statsResults[type].recv = (0,
|
|
413
|
-
}
|
|
414
|
-
if (!this.statsResults.resolutions[type]) {
|
|
415
|
-
this.statsResults.resolutions[type] = {};
|
|
416
|
-
}
|
|
417
|
-
if (isSender && !this.statsResults.resolutions[type].send) {
|
|
418
|
-
this.statsResults.resolutions[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
419
|
-
} else if (!isSender && !this.statsResults.resolutions[type].recv) {
|
|
420
|
-
this.statsResults.resolutions[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
421
|
-
}
|
|
422
|
-
if (!this.statsResults.internal[type]) {
|
|
423
|
-
this.statsResults.internal[type] = {};
|
|
424
|
-
}
|
|
425
|
-
if (isSender && !this.statsResults.internal[type].send) {
|
|
426
|
-
this.statsResults.internal[type].send = (0, _cloneDeep2.default)(emptySender);
|
|
427
|
-
} else if (!isSender && !this.statsResults.internal[type].recv) {
|
|
428
|
-
this.statsResults.internal[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
|
|
614
|
+
this.statsResults[type].recv = (0, _lodash.cloneDeep)(emptyReceiver);
|
|
429
615
|
}
|
|
430
616
|
switch (getStatsResult.type) {
|
|
431
617
|
case 'outbound-rtp':
|
|
@@ -434,13 +620,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
434
620
|
case 'inbound-rtp':
|
|
435
621
|
this.processInboundRTPResult(getStatsResult, type);
|
|
436
622
|
break;
|
|
437
|
-
case 'track':
|
|
438
|
-
this.processTrackResult(getStatsResult, type);
|
|
439
|
-
break;
|
|
440
623
|
case 'remote-inbound-rtp':
|
|
441
624
|
case 'remote-outbound-rtp':
|
|
442
|
-
|
|
443
|
-
this.compareSentAndReceived(getStatsResult, type, isSender);
|
|
625
|
+
this.compareSentAndReceived(getStatsResult, type);
|
|
444
626
|
break;
|
|
445
627
|
case 'remotecandidate':
|
|
446
628
|
case 'remote-candidate':
|
|
@@ -450,7 +632,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
450
632
|
this.parseCandidate(getStatsResult, type, isSender, false);
|
|
451
633
|
break;
|
|
452
634
|
case 'media-source':
|
|
453
|
-
// @ts-ignore
|
|
454
635
|
this.parseAudioSource(getStatsResult, type);
|
|
455
636
|
break;
|
|
456
637
|
default:
|
|
@@ -471,15 +652,26 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
471
652
|
value: function filterAndParseGetStatsResults(statsItem, type, isSender) {
|
|
472
653
|
var _this6 = this;
|
|
473
654
|
var types = _constants.DEFAULT_GET_STATS_FILTER.types;
|
|
655
|
+
|
|
656
|
+
// get the successful candidate pair before parsing stats.
|
|
657
|
+
statsItem.report.forEach(function (report) {
|
|
658
|
+
if (report.type === 'candidate-pair' && report.state === 'succeeded') {
|
|
659
|
+
_this6.successfulCandidatePair = report;
|
|
660
|
+
}
|
|
661
|
+
});
|
|
474
662
|
statsItem.report.forEach(function (result) {
|
|
475
663
|
if (types.includes(result.type)) {
|
|
476
664
|
_this6.parseGetStatsResult(result, type, isSender);
|
|
477
665
|
}
|
|
478
666
|
});
|
|
479
667
|
if (this.statsResults[type]) {
|
|
668
|
+
var _this$successfulCandi2, _this$statsResults;
|
|
480
669
|
this.statsResults[type].direction = statsItem.currentDirection;
|
|
481
670
|
this.statsResults[type].trackLabel = statsItem.localTrackLabel;
|
|
482
671
|
this.statsResults[type].csi = statsItem.csi;
|
|
672
|
+
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);
|
|
673
|
+
// reset the successful candidate pair.
|
|
674
|
+
this.successfulCandidatePair = {};
|
|
483
675
|
}
|
|
484
676
|
}
|
|
485
677
|
|
|
@@ -500,21 +692,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
500
692
|
this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
|
|
501
693
|
}
|
|
502
694
|
}
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* emits started/stopped events for local/remote media by checking
|
|
506
|
-
* if given values are increasing or not. The previousValue, currentValue
|
|
507
|
-
* params can be any numerical value like number of receive packets or
|
|
508
|
-
* decoded frames, etc.
|
|
509
|
-
*
|
|
510
|
-
* @private
|
|
511
|
-
* @param {string} mediaType
|
|
512
|
-
* @param {number} previousValue - value to compare
|
|
513
|
-
* @param {number} currentValue - value to compare (must be same type of value as previousValue)
|
|
514
|
-
* @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
|
|
515
|
-
* @memberof StatsAnalyzer
|
|
516
|
-
* @returns {void}
|
|
517
|
-
*/
|
|
518
695
|
}, {
|
|
519
696
|
key: "compareLastStatsResult",
|
|
520
697
|
value:
|
|
@@ -544,138 +721,77 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
544
721
|
return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
|
|
545
722
|
}, 0);
|
|
546
723
|
};
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
}).reduce(function (prev, cur) {
|
|
551
|
-
var _this7$statsResults$r;
|
|
552
|
-
return prev + (((_this7$statsResults$r = _this7.statsResults.resolutions[cur]) === null || _this7$statsResults$r === void 0 ? void 0 : _this7$statsResults$r.recv[value]) || 0);
|
|
553
|
-
}, 0);
|
|
554
|
-
};
|
|
555
|
-
var getPreviousResolutionsStatsTotals = function getPreviousResolutionsStatsTotals(keyPrefix, value) {
|
|
556
|
-
return (0, _keys.default)(_this7.statsResults).filter(function (key) {
|
|
557
|
-
return key.startsWith(keyPrefix);
|
|
558
|
-
}).reduce(function (prev, cur) {
|
|
559
|
-
var _this7$lastStatsResul2;
|
|
560
|
-
return prev + (((_this7$lastStatsResul2 = _this7.lastStatsResults.resolutions[cur]) === null || _this7$lastStatsResul2 === void 0 ? void 0 : _this7$lastStatsResul2.recv[value]) || 0);
|
|
561
|
-
}, 0);
|
|
562
|
-
};
|
|
563
|
-
if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {
|
|
724
|
+
|
|
725
|
+
// Audio Transmit
|
|
726
|
+
if (this.lastStatsResults['audio-send']) {
|
|
564
727
|
// compare audio stats sent
|
|
565
728
|
// NOTE: relies on there being only one sender.
|
|
566
729
|
var currentStats = this.statsResults['audio-send'].send;
|
|
567
730
|
var previousStats = this.lastStatsResults['audio-send'].send;
|
|
568
|
-
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
731
|
+
if (this.meetingMediaStatus.expected.sendAudio && currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
569
732
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
|
|
570
733
|
} else {
|
|
571
|
-
if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
|
|
734
|
+
if (this.meetingMediaStatus.expected.sendAudio && currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
|
|
572
735
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
|
|
573
736
|
}
|
|
574
|
-
if (currentStats.audioLevel === 0) {
|
|
737
|
+
if (this.meetingMediaStatus.expected.sendAudio && currentStats.audioLevel === 0) {
|
|
575
738
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
|
|
576
739
|
}
|
|
577
740
|
}
|
|
578
741
|
this.emitStartStopEvents('audio', previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
|
|
579
742
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
} else if (currentSamplesReceived === previousSamplesReceived || currentSamplesReceived === 0) {
|
|
589
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No audio samples received", currentSamplesReceived);
|
|
590
|
-
}
|
|
591
|
-
this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);
|
|
592
|
-
}
|
|
593
|
-
if (this.meetingMediaStatus.expected.sendVideo && this.lastStatsResults['video-send']) {
|
|
743
|
+
|
|
744
|
+
// Audio Receive
|
|
745
|
+
var currentAudioPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');
|
|
746
|
+
var previousAudioPacketsReceived = getPreviousStatsTotals('audio-recv', 'totalPacketsReceived');
|
|
747
|
+
this.emitStartStopEvents('audio', previousAudioPacketsReceived, currentAudioPacketsReceived, false);
|
|
748
|
+
|
|
749
|
+
// Video Transmit
|
|
750
|
+
if (this.lastStatsResults['video-send']) {
|
|
594
751
|
// compare video stats sent
|
|
595
752
|
var _currentStats = this.statsResults['video-send'].send;
|
|
596
753
|
var _previousStats = this.lastStatsResults['video-send'].send;
|
|
597
|
-
if (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0) {
|
|
754
|
+
if (this.meetingMediaStatus.expected.sendVideo && (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0)) {
|
|
598
755
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
|
|
599
756
|
} else {
|
|
600
|
-
if (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0) {
|
|
757
|
+
if (this.meetingMediaStatus.expected.sendVideo && (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0)) {
|
|
601
758
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
|
|
602
759
|
}
|
|
603
|
-
if (this.statsResults
|
|
604
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults
|
|
760
|
+
if (this.meetingMediaStatus.expected.sendVideo && (this.statsResults['video-send'].send.framesSent === this.lastStatsResults['video-send'].send.framesSent || this.statsResults['video-send'].send.framesSent === 0)) {
|
|
761
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults['video-send'].send.framesSent);
|
|
605
762
|
}
|
|
606
763
|
}
|
|
607
764
|
this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
|
|
608
765
|
}
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
var currentFramesDropped = getCurrentResolutionsStatsTotals('video-recv', 'framesDropped');
|
|
618
|
-
var previousFramesDropped = getPreviousResolutionsStatsTotals('video-recv', 'framesDropped');
|
|
619
|
-
if (_currentPacketsReceived === _previousPacketsReceived || _currentPacketsReceived === 0) {
|
|
620
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received", _currentPacketsReceived);
|
|
621
|
-
} else {
|
|
622
|
-
if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {
|
|
623
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames received", currentFramesReceived);
|
|
624
|
-
}
|
|
625
|
-
if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {
|
|
626
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded", currentFramesDecoded);
|
|
627
|
-
}
|
|
628
|
-
if (currentFramesDropped - previousFramesDropped > 10) {
|
|
629
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped", currentFramesDropped - previousFramesDropped);
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);
|
|
633
|
-
}
|
|
634
|
-
if (this.meetingMediaStatus.expected.sendShare && this.lastStatsResults['video-share-send']) {
|
|
766
|
+
|
|
767
|
+
// Video Receive
|
|
768
|
+
var currentVideoFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');
|
|
769
|
+
var previousVideoFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');
|
|
770
|
+
this.emitStartStopEvents('video', previousVideoFramesDecoded, currentVideoFramesDecoded, false);
|
|
771
|
+
|
|
772
|
+
// Share Transmit
|
|
773
|
+
if (this.lastStatsResults['video-share-send']) {
|
|
635
774
|
// compare share stats sent
|
|
636
775
|
|
|
637
776
|
var _currentStats2 = this.statsResults['video-share-send'].send;
|
|
638
777
|
var _previousStats2 = this.lastStatsResults['video-share-send'].send;
|
|
639
|
-
if (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0) {
|
|
778
|
+
if (this.meetingMediaStatus.expected.sendShare && (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0)) {
|
|
640
779
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
|
|
641
780
|
} else {
|
|
642
|
-
if (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0) {
|
|
781
|
+
if (this.meetingMediaStatus.expected.sendShare && (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0)) {
|
|
643
782
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
|
|
644
783
|
}
|
|
645
|
-
if (this.statsResults
|
|
646
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults
|
|
784
|
+
if (this.meetingMediaStatus.expected.sendShare && (this.statsResults['video-share-send'].send.framesSent === this.lastStatsResults['video-share-send'].send.framesSent || this.statsResults['video-share-send'].send.framesSent === 0)) {
|
|
785
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults['video-share-send'].send.framesSent);
|
|
647
786
|
}
|
|
648
787
|
}
|
|
788
|
+
this.emitStartStopEvents('share', _previousStats2.framesSent, _currentStats2.framesSent, true);
|
|
649
789
|
}
|
|
650
|
-
if (this.meetingMediaStatus.expected.sendShare) {
|
|
651
|
-
// TODO:need to check receive share value
|
|
652
|
-
// compare share stats received
|
|
653
|
-
var _currentPacketsReceived2 = getCurrentStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
654
|
-
var _previousPacketsReceived2 = getPreviousStatsTotals('video-share-recv', 'totalPacketsReceived');
|
|
655
|
-
var _currentFramesReceived = getCurrentResolutionsStatsTotals('video-share-recv', 'framesReceived');
|
|
656
|
-
var _previousFramesReceived = getPreviousResolutionsStatsTotals('video-share-recv', 'framesReceived');
|
|
657
|
-
var _currentFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');
|
|
658
|
-
var _previousFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');
|
|
659
|
-
var _currentFramesDropped = getCurrentResolutionsStatsTotals('video-share-recv', 'framesDropped');
|
|
660
|
-
var _previousFramesDropped = getPreviousResolutionsStatsTotals('video-share-recv', 'framesDropped');
|
|
661
|
-
if (_currentPacketsReceived2 === _previousPacketsReceived2 || _currentPacketsReceived2 === 0) {
|
|
662
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received", _currentPacketsReceived2);
|
|
663
|
-
} else {
|
|
664
|
-
if (_currentFramesReceived === _previousFramesReceived || _currentFramesReceived === 0) {
|
|
665
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames received", _currentFramesReceived);
|
|
666
|
-
}
|
|
667
|
-
if (_currentFramesDecoded === _previousFramesDecoded || _currentFramesDecoded === 0) {
|
|
668
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded", _currentFramesDecoded);
|
|
669
|
-
}
|
|
670
|
-
if (_currentFramesDropped - _previousFramesDropped > 10) {
|
|
671
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped", _currentFramesDropped - _previousFramesDropped);
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
790
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
791
|
+
// Share receive
|
|
792
|
+
var currentShareFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');
|
|
793
|
+
var previousShareFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');
|
|
794
|
+
this.emitStartStopEvents('share', previousShareFramesDecoded, currentShareFramesDecoded, false);
|
|
679
795
|
}
|
|
680
796
|
}
|
|
681
797
|
|
|
@@ -758,33 +874,15 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
758
874
|
if (result.bytesSent) {
|
|
759
875
|
var kilobytes = 0;
|
|
760
876
|
if (result.frameWidth && result.frameHeight) {
|
|
761
|
-
this.statsResults
|
|
762
|
-
this.statsResults
|
|
763
|
-
this.statsResults
|
|
764
|
-
this.statsResults
|
|
765
|
-
}
|
|
766
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
|
|
767
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
877
|
+
this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
|
|
878
|
+
this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
|
|
879
|
+
this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
880
|
+
this.statsResults[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
768
881
|
}
|
|
769
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
|
|
770
|
-
this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
771
|
-
}
|
|
772
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
|
|
773
|
-
this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
774
|
-
}
|
|
775
|
-
var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
|
|
776
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
|
|
777
|
-
kilobytes = bytes / 1024;
|
|
778
882
|
this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
|
|
779
|
-
this.statsResults[mediaType].
|
|
780
|
-
this.statsResults[mediaType][sendrecvType].
|
|
781
|
-
this.statsResults[mediaType][sendrecvType].
|
|
782
|
-
this.statsResults.internal[mediaType].outboundRtpId = result.id;
|
|
783
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
|
|
784
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
785
|
-
}
|
|
786
|
-
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
|
|
787
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
883
|
+
this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
|
|
884
|
+
this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
|
|
885
|
+
this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent;
|
|
788
886
|
|
|
789
887
|
// Data saved to send MQA metrics
|
|
790
888
|
|
|
@@ -819,50 +917,53 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
819
917
|
if (result.bytesReceived) {
|
|
820
918
|
var kilobytes = 0;
|
|
821
919
|
var receiveSlot = this.receiveSlotCallback(result.ssrc);
|
|
920
|
+
var sourceState = receiveSlot === null || receiveSlot === void 0 ? void 0 : receiveSlot.sourceState;
|
|
822
921
|
var idAndCsi = receiveSlot ? "id: \"".concat(receiveSlot.id || '', "\"").concat(receiveSlot.csi ? " and csi: ".concat(receiveSlot.csi) : '') : '';
|
|
823
|
-
|
|
824
|
-
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
825
|
-
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
826
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
827
|
-
}
|
|
828
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
|
|
829
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
830
|
-
}
|
|
831
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
|
|
832
|
-
this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
|
|
833
|
-
}
|
|
834
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
|
|
835
|
-
this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
|
|
836
|
-
}
|
|
837
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
|
|
838
|
-
this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
839
|
-
}
|
|
840
|
-
if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
|
|
841
|
-
this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
|
|
842
|
-
}
|
|
843
|
-
var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
|
|
844
|
-
this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
|
|
922
|
+
var bytes = result.bytesReceived - this.statsResults[mediaType][sendrecvType].totalBytesReceived;
|
|
845
923
|
kilobytes = bytes / 1024;
|
|
846
924
|
this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
|
|
847
|
-
this.statsResults[mediaType].
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
|
|
851
|
-
this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
|
|
925
|
+
var currentPacketsLost = result.packetsLost - this.statsResults[mediaType][sendrecvType].totalPacketsLost;
|
|
926
|
+
if (currentPacketsLost < 0) {
|
|
927
|
+
currentPacketsLost = 0;
|
|
852
928
|
}
|
|
853
|
-
|
|
854
|
-
this.statsResults
|
|
855
|
-
if (
|
|
856
|
-
if (receiveSlot) {
|
|
857
|
-
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ".concat(idAndCsi),
|
|
929
|
+
var packetsReceivedDiff = result.packetsReceived - this.statsResults[mediaType][sendrecvType].totalPacketsReceived;
|
|
930
|
+
this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
931
|
+
if (packetsReceivedDiff === 0) {
|
|
932
|
+
if (receiveSlot && sourceState === 'live') {
|
|
933
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for mediaType: ".concat(mediaType, ", receive slot ").concat(idAndCsi, ". Total packets received on slot: "), result.packetsReceived);
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
if (mediaType.startsWith('video') || mediaType.startsWith('share')) {
|
|
937
|
+
var videoFramesReceivedDiff = result.framesReceived - this.statsResults[mediaType][sendrecvType].framesReceived;
|
|
938
|
+
if (videoFramesReceivedDiff === 0) {
|
|
939
|
+
if (receiveSlot && sourceState === 'live') {
|
|
940
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No frames received for mediaType: ".concat(mediaType, ", receive slot ").concat(idAndCsi, ". Total frames received on slot: "), result.framesReceived);
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
var videoFramesDecodedDiff = result.framesDecoded - this.statsResults[mediaType][sendrecvType].framesDecoded;
|
|
944
|
+
if (videoFramesDecodedDiff === 0) {
|
|
945
|
+
if (receiveSlot && sourceState === 'live') {
|
|
946
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No frames decoded for mediaType: ".concat(mediaType, ", receive slot ").concat(idAndCsi, ". Total frames decoded on slot: "), result.framesDecoded);
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
var videoFramesDroppedDiff = result.framesDropped - this.statsResults[mediaType][sendrecvType].framesDropped;
|
|
950
|
+
if (videoFramesDroppedDiff > 10) {
|
|
951
|
+
if (receiveSlot && sourceState === 'live') {
|
|
952
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Frames dropped for mediaType: ".concat(mediaType, ", receive slot ").concat(idAndCsi, ". Total frames dropped on slot: "), result.framesDropped);
|
|
953
|
+
}
|
|
858
954
|
}
|
|
859
955
|
}
|
|
860
956
|
|
|
861
957
|
// Check the over all packet Lost ratio
|
|
862
|
-
this.statsResults[mediaType][sendrecvType].currentPacketLossRatio =
|
|
958
|
+
this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = currentPacketsLost > 0 ? currentPacketsLost / (packetsReceivedDiff + currentPacketsLost) : 0;
|
|
863
959
|
if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
|
|
864
960
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(idAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
|
|
865
961
|
}
|
|
962
|
+
if (result.frameWidth && result.frameHeight) {
|
|
963
|
+
this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
|
|
964
|
+
this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
|
|
965
|
+
this.statsResults[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
966
|
+
}
|
|
866
967
|
|
|
867
968
|
// TODO: check the packet loss value is negative values here
|
|
868
969
|
|
|
@@ -878,6 +979,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
878
979
|
this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
|
|
879
980
|
this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
880
981
|
this.statsResults[mediaType][sendrecvType].keyFramesDecoded = result.keyFramesDecoded;
|
|
982
|
+
this.statsResults[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
881
983
|
this.statsResults[mediaType][sendrecvType].decoderImplementation = result.decoderImplementation;
|
|
882
984
|
this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
|
|
883
985
|
this.statsResults[mediaType][sendrecvType].fecPacketsDiscarded = result.fecPacketsDiscarded;
|
|
@@ -895,51 +997,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
895
997
|
this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
|
|
896
998
|
}
|
|
897
999
|
}
|
|
898
|
-
|
|
899
|
-
/**
|
|
900
|
-
* Processes remote and local candidate result and stores
|
|
901
|
-
* @private
|
|
902
|
-
* @param {*} result
|
|
903
|
-
* @param {*} type
|
|
904
|
-
* @param {boolean} isSender
|
|
905
|
-
* @param {boolean} isRemote
|
|
906
|
-
*
|
|
907
|
-
* @returns {void}
|
|
908
|
-
*/
|
|
909
1000
|
}, {
|
|
910
|
-
key: "
|
|
1001
|
+
key: "compareSentAndReceived",
|
|
911
1002
|
value:
|
|
912
|
-
/**
|
|
913
|
-
* Process Track results
|
|
914
|
-
*
|
|
915
|
-
* @private
|
|
916
|
-
* @param {*} result
|
|
917
|
-
* @param {*} mediaType
|
|
918
|
-
* @returns {void}
|
|
919
|
-
* @memberof StatsAnalyzer
|
|
920
|
-
*/
|
|
921
|
-
function processTrackResult(result, mediaType) {
|
|
922
|
-
if (!result || result.type !== 'track') {
|
|
923
|
-
return;
|
|
924
|
-
}
|
|
925
|
-
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
926
|
-
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
927
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
928
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
929
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
930
|
-
}
|
|
931
|
-
if (result.trackIdentifier && !mediaType.includes('audio')) {
|
|
932
|
-
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|
|
933
|
-
var jitterBufferDelay = result && result.jitterBufferDelay;
|
|
934
|
-
var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
|
|
935
|
-
this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
|
|
936
|
-
|
|
937
|
-
// Used to calculate the jitter
|
|
938
|
-
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
|
|
939
|
-
this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
|
|
940
|
-
}
|
|
941
|
-
}
|
|
942
|
-
|
|
943
1003
|
/**
|
|
944
1004
|
*
|
|
945
1005
|
* @private
|
|
@@ -948,19 +1008,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
948
1008
|
* @returns {void}
|
|
949
1009
|
* @memberof StatsAnalyzer
|
|
950
1010
|
*/
|
|
951
|
-
|
|
952
|
-
key: "compareSentAndReceived",
|
|
953
|
-
value: function compareSentAndReceived(result, type) {
|
|
1011
|
+
function compareSentAndReceived(result, type) {
|
|
954
1012
|
// Don't compare on transceivers without a sender.
|
|
955
|
-
if (!type || !this.statsResults
|
|
1013
|
+
if (!type || !this.statsResults[type].send) {
|
|
956
1014
|
return;
|
|
957
1015
|
}
|
|
958
1016
|
var mediaType = type;
|
|
959
|
-
|
|
960
|
-
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
961
|
-
}
|
|
962
|
-
var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
|
|
963
|
-
this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
1017
|
+
var currentPacketLoss = result.packetsLost - this.statsResults[mediaType].send.totalPacketsLostOnReceiver;
|
|
964
1018
|
this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
|
|
965
1019
|
this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
|
|
966
1020
|
this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);
|
|
@@ -986,5 +1040,4 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
986
1040
|
}]);
|
|
987
1041
|
return StatsAnalyzer;
|
|
988
1042
|
}(_eventsScope.default);
|
|
989
|
-
exports.StatsAnalyzer = StatsAnalyzer;
|
|
990
1043
|
//# sourceMappingURL=index.js.map
|