@webex/plugin-meetings 3.8.0 → 3.8.1-next.10
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 +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/common/errors/webex-errors.js +12 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +28 -123
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +3 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +78 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +4 -4
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +37 -11
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +92 -12
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +432 -418
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +17 -17
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +94 -6
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +9 -2
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +21 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +678 -344
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +21 -22
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +4 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +13 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +373 -68
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +136 -1
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +14 -0
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +55 -9
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +3 -0
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +335 -353
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +137 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +38 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +36 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +10 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +40 -8
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/reachability/clusterReachability.js +63 -27
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +107 -47
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +14 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/request.js +19 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/util.js +5 -5
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/turnDiscovery.js +45 -27
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js +17 -0
- package/dist/roap/types.js.map +1 -0
- package/dist/types/common/errors/webex-errors.d.ts +7 -1
- package/dist/types/config.d.ts +3 -0
- package/dist/types/constants.d.ts +20 -85
- package/dist/types/controls-options-manager/enums.d.ts +4 -1
- package/dist/types/controls-options-manager/types.d.ts +10 -1
- package/dist/types/locus-info/index.d.ts +3 -3
- package/dist/types/locus-info/selfUtils.d.ts +216 -1
- package/dist/types/media/properties.d.ts +15 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +20 -0
- package/dist/types/meeting/index.d.ts +65 -1
- package/dist/types/meeting/muteState.d.ts +0 -1
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +82 -1
- package/dist/types/meetings/index.d.ts +57 -0
- package/dist/types/member/index.d.ts +21 -6
- package/dist/types/member/types.d.ts +73 -14
- package/dist/types/member/util.d.ts +156 -1
- package/dist/types/members/collection.d.ts +6 -5
- package/dist/types/members/index.d.ts +32 -43
- package/dist/types/members/request.d.ts +26 -0
- package/dist/types/members/util.d.ts +27 -0
- package/dist/types/metrics/constants.d.ts +10 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +10 -1
- package/dist/types/reachability/clusterReachability.d.ts +15 -7
- package/dist/types/reachability/index.d.ts +10 -1
- package/dist/types/reachability/reachability.types.d.ts +5 -0
- package/dist/types/roap/index.d.ts +3 -2
- package/dist/types/roap/turnDiscovery.d.ts +5 -17
- package/dist/types/roap/types.d.ts +16 -0
- package/dist/webinar/index.js +2 -2
- package/dist/webinar/index.js.map +1 -1
- package/package.json +24 -23
- package/src/breakouts/index.ts +69 -0
- package/src/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +3 -0
- package/src/constants.ts +30 -90
- package/src/controls-options-manager/enums.ts +3 -0
- package/src/controls-options-manager/types.ts +16 -1
- package/src/controls-options-manager/util.ts +93 -0
- package/src/interpretation/index.ts +3 -3
- package/src/locus-info/controlsUtils.ts +59 -14
- package/src/locus-info/index.ts +97 -13
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +23 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +11 -2
- package/src/meeting/in-meeting-actions.ts +40 -0
- package/src/meeting/index.ts +470 -105
- package/src/meeting/locusMediaRequest.ts +27 -22
- package/src/meeting/muteState.ts +4 -4
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +11 -2
- package/src/meeting-info/meeting-info-v2.ts +254 -8
- package/src/meeting-info/utilv2.ts +5 -0
- package/src/meetings/index.ts +148 -1
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +68 -22
- package/src/member/types.ts +82 -16
- package/src/member/util.ts +357 -350
- package/src/members/collection.ts +4 -3
- package/src/members/index.ts +137 -18
- package/src/members/request.ts +44 -0
- package/src/members/util.ts +43 -1
- package/src/metrics/constants.ts +10 -0
- package/src/multistream/remoteMediaManager.ts +32 -10
- package/src/reachability/clusterReachability.ts +73 -26
- package/src/reachability/index.ts +62 -1
- package/src/reachability/reachability.types.ts +6 -0
- package/src/reachability/request.ts +7 -0
- package/src/reconnection-manager/index.ts +2 -2
- package/src/recording-controller/util.ts +17 -13
- package/src/roap/index.ts +3 -7
- package/src/roap/turnDiscovery.ts +34 -39
- package/src/roap/types.ts +23 -0
- package/src/webinar/index.ts +1 -1
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/controls-options-manager/util.js +178 -0
- package/test/unit/spec/interpretation/index.ts +39 -1
- package/test/unit/spec/locus-info/controlsUtils.js +155 -9
- package/test/unit/spec/locus-info/index.js +209 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +150 -18
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +40 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +23 -4
- package/test/unit/spec/meeting/index.js +804 -139
- package/test/unit/spec/meeting/locusMediaRequest.ts +95 -87
- package/test/unit/spec/meeting/muteState.js +73 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +119 -18
- package/test/unit/spec/meeting-info/meetinginfov2.js +484 -114
- package/test/unit/spec/meeting-info/utilv2.js +19 -0
- package/test/unit/spec/meetings/index.js +146 -2
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/index.js +304 -78
- package/test/unit/spec/members/request.js +68 -22
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +397 -118
- package/test/unit/spec/reachability/clusterReachability.ts +88 -56
- package/test/unit/spec/reachability/index.ts +97 -0
- package/test/unit/spec/reachability/request.js +47 -2
- package/test/unit/spec/reconnection-manager/index.js +4 -4
- package/test/unit/spec/roap/turnDiscovery.ts +110 -28
- package/test/unit/spec/webinar/index.ts +5 -0
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.js +0 -149
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -33
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -93
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -36
- package/dist/common/queue.d.ts +0 -34
- package/dist/config.d.ts +0 -72
- package/dist/constants.d.ts +0 -1088
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -15
- package/dist/controls-options-manager/index.d.ts +0 -136
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -322
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -272
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -34
- package/dist/media/properties.d.ts +0 -93
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/mediaQualityMetrics/config.js +0 -502
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -167
- package/dist/meeting/index.d.ts +0 -1825
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -178
- package/dist/meeting/request.d.ts +0 -295
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -119
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -69
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -40
- package/dist/meetings/index.d.ts +0 -390
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -160
- package/dist/member/member.types.js +0 -17
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -29
- package/dist/members/index.d.ts +0 -353
- package/dist/members/request.d.ts +0 -114
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -215
- package/dist/metrics/config.js +0 -276
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -70
- package/dist/metrics/index.d.ts +0 -45
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -221
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -109
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -105
- package/dist/reachability/request.d.ts +0 -39
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -52
- package/dist/reconnection-manager/index.d.ts +0 -136
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -207
- package/dist/recording-controller/util.d.ts +0 -14
- package/dist/roap/collection.js +0 -62
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -275
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -86
- package/dist/roap/request.d.ts +0 -39
- package/dist/roap/state.js +0 -126
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -155
- package/dist/roap/util.js +0 -75
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -36
- package/dist/statsAnalyzer/global.js +0 -126
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -217
- package/dist/statsAnalyzer/index.js +0 -1013
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/statsAnalyzer/mqaUtil.js +0 -179
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_eventsScope","_interopRequireDefault","require","_constants","_config","_loggerProxy","_global","_mqaUtil","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","EVENTS","exports","MEDIA_QUALITY","NO_FRAMES_SENT","NO_VIDEO_ENCODED","LOCAL_MEDIA_STARTED","LOCAL_MEDIA_STOPPED","REMOTE_MEDIA_STARTED","REMOTE_MEDIA_STOPPED","StatsAnalyzer","_EventsScope","config","_this","networkQualityMonitor","arguments","length","undefined","statsResults","defaultStats","_classCallCheck2","_defineProperty2","mediaType","previousValue","currentValue","isLocal","Error","concat","lastEmittedEvent","lastEmittedStartStopEvent","local","remote","newEvent","emit","file","function","type","result","isSender","isRemote","id","RemoteCandidateType","RemoteTransport","RemoteIpAddress","RemoteNetworkType","sendRecvType","STATS","SEND_DIRECTION","RECEIVE_DIRECTION","ipType","REMOTE","LOCAL","candidateType","indexOf","push","protocol","toUpperCase","ip","portNumber","networkType","internal","candidates","ipAddress","port","priority","transport","timestamp","time","connectionType","NETWORK_TYPE","VPN","UNKNOWN","totalRoundTripTime","statsStarted","lastStatsResults","correlationId","mqaSentCount","lastMqaDataSent","resolutions","video","send","recv","audio","share","localMQEStats","RX","packetsLost","jitter","latency","bitRate","TX","frameRate","resolutionWidth","resolutionHeight","requestedKeyFrame","receivedKeyFrame","_inherits2","_createClass2","key","value","populateResults","lastMqa","audioReceive","common","mediaHopByHopLost","streams","rtpJitter","roundTripTime","receivedBitrate","audioTransmit","remoteLossRate","remoteJitter","transmittedBitrate","videoReceive","receivedFrameRate","receivedWidth","receivedHeight","videoTransmit","transmittedFrameRate","transmittedWidth","transmittedHeight","requestedKeyFrames","resetStatsResults","meanRemoteJitter","meanRtpJitter","meanRoundTripTime","updateMediaStatus","status","meetingMediaStatus","sendMqaData","_this$peerConnection","_this$peerConnection$","_this$peerConnection$2","_this$peerConnection$3","_this$peerConnection2","_this$peerConnection3","_this$peerConnection4","_this$peerConnection5","audioReceiver","mqaData","intervals","audioSender","videoReceiver","videoSender","shareSender","shareReceiver","getAudioSenderMqa","getAudioReceiverMqa","getVideoReceiverMqa","getVideoSenderMqa","isShareStream","intervalMetadata","peerReflexiveIP","peripherals","information","_UNKNOWN_","name","MEDIA_DEVICES","SPEAKER","peerConnection","audioTransceiver","sender","track","label","MICROPHONE","videoTransceiver","CAMERA","intervalNumber","_cloneDeep2","data","updatePeerconnection","startAnalyzer","_this2","getStatsAndParse","then","statsInterval","setInterval","analyzerInterval","mqaInterval","MQA_INTEVAL","_promise","resolve","stopAnalyzer","_this3","sendOneLastMqa","clearInterval","parseGetStatsResult","getStatsResult","processOutboundRTPResult","processInboundRTPResult","compareSentAndReceived","parseCandidate","parseAudioSource","filterAndParseGetStatsResults","getStatsResults","_this4","types","DEFAULT_GET_STATS_FILTER","forEach","includes","AUDIO_CORRELATE","audioLevel","totalAudioEnergy","compareLastStatsResult","currentStats","previousStats","expected","sendAudio","totalPacketsSent","LoggerProxy","logger","info","emitStartStopEvents","receiveAudio","totalPacketsReceived","totalSamplesReceived","VIDEO_CORRELATE","sendVideo","framesEncoded","framesSent","receiveVideo","framesReceived","framesDecoded","framesDropped","SHARE_CORRELATE","sendShare","_this5","connectionState","CONNECTION_STATE","FAILED","trace","all","getStats","res","receiver","shareTransceiver","direction","currentDirection","JSON","parse","_stringify","sendrecvType","processTrackResult","bytesSent","kilobytes","prevBytesSent","keyFramesEncoded","bytes","availableBandwidth","toFixed","outboundRtpId","packetsSent","totalKeyFramesEncoded","totalNackCount","nackCount","totalPliCount","pliCount","totalFirCount","firCount","encoderImplementation","qualityLimitationReason","qualityLimitationResolutionChanges","retransmittedPacketsSent","totalBytesSent","headerBytesSent","retransmittedBytesSent","bytesReceived","prevBytesReceived","packetsReceived","lastPacketReceivedTimestamp","currentPacketsLost","currentPacketLossRatio","totalPacketsLost","keyFramesDecoded","decoderImplementation","fecPacketsDiscarded","fecPacketsReceived","totalBytesReceived","headerBytesReceived","totalSamplesDecoded","concealedSamples","frameWidth","frameHeight","width","height","hugeFramesSent","trackIdentifier","jitterBufferDelay","jitterBufferEmittedCount","avgJitterDelay","totalPacketsLostOnReceiver","currentPacketLoss","packetsLostOnReceiver","ssrc","reportsReceived","overAllPacketLossRatio","maxPacketLossRatio","determineUplinkNetworkQuality","remoteRtpResults","statsAnalyzerCurrentStats","EventsScope"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {cloneDeep} from 'lodash';\n\nimport EventsScope from '../common/events/events-scope';\nimport {\n DEFAULT_GET_STATS_FILTER,\n CONNECTION_STATE,\n STATS,\n MQA_INTEVAL,\n NETWORK_TYPE,\n MEDIA_DEVICES,\n _UNKNOWN_,\n} from '../constants';\nimport mqaData from '../mediaQualityMetrics/config';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport defaultStats from './global';\nimport {\n getAudioSenderMqa,\n getAudioReceiverMqa,\n getVideoSenderMqa,\n getVideoReceiverMqa,\n} from './mqaUtil';\n\nexport const EVENTS = {\n MEDIA_QUALITY: 'MEDIA_QUALITY',\n NO_FRAMES_SENT: 'NO_FRAMES_SENT',\n NO_VIDEO_ENCODED: 'NO_VIDEO_ENCODED',\n LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',\n LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',\n REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',\n REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED',\n};\n\n/**\n * Stats Analyzer class that will emit events based on detected quality\n *\n * @export\n * @class StatsAnalyzer\n * @extends {EventsScope}\n */\nexport class StatsAnalyzer extends EventsScope {\n config: any;\n correlationId: any;\n lastEmittedStartStopEvent: any;\n lastMqaDataSent: any;\n lastStatsResults: any;\n localMQEStats: any;\n meetingMediaStatus: any;\n mqaInterval: NodeJS.Timeout;\n mqaSentCount: any;\n networkQualityMonitor: any;\n peerConnection: any;\n statsInterval: NodeJS.Timeout;\n statsResults: any;\n statsStarted: any;\n\n /**\n * Creates a new instance of StatsAnalyzer\n * @constructor\n * @public\n * @param {Object} config SDK Configuration Object\n * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)\n * @param {Object} statsResults Default properties for stats\n */\n constructor(\n config: any,\n networkQualityMonitor: object = {},\n statsResults: object = defaultStats\n ) {\n super();\n this.statsStarted = false;\n this.statsResults = statsResults;\n this.lastStatsResults = null;\n this.config = config;\n this.networkQualityMonitor = networkQualityMonitor;\n this.correlationId = config.correlationId;\n this.mqaSentCount = -1;\n this.lastMqaDataSent = {\n resolutions: {\n video: {send: {}, recv: {}},\n audio: {send: {}, recv: {}},\n share: {send: {}, recv: {}},\n },\n video: {send: {}, recv: {}},\n audio: {send: {}, recv: {}},\n share: {send: {}, recv: {}},\n };\n this.localMQEStats = {\n audio: {\n RX: {\n packetsLost: [],\n jitter: [],\n latency: [],\n bitRate: [],\n },\n TX: {\n packetsLost: [],\n jitter: [],\n latency: [],\n bitRate: [],\n },\n },\n video: {\n RX: {\n packetsLost: [],\n jitter: [],\n latency: [],\n bitRate: [],\n frameRate: [],\n resolutionWidth: [],\n resolutionHeight: [],\n requestedKeyFrame: [],\n receivedKeyFrame: [],\n },\n TX: {\n packetsLost: [],\n jitter: [],\n latency: [],\n bitRate: [],\n frameRate: [],\n resolutionWidth: [],\n resolutionHeight: [],\n requestedKeyFrame: [],\n receivedKeyFrame: [],\n },\n },\n };\n this.lastEmittedStartStopEvent = {\n audio: {\n local: undefined,\n remote: undefined,\n },\n video: {\n local: undefined,\n remote: undefined,\n },\n share: {\n local: undefined,\n remote: undefined,\n },\n };\n }\n\n populateResults(lastMqa) {\n // Audio\n\n this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);\n this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);\n this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);\n this.localMQEStats.audio.RX.bitRate.push(\n lastMqa.audioReceive[0].streams[0].common.receivedBitrate\n );\n\n this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);\n this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);\n this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);\n this.localMQEStats.audio.TX.bitRate.push(\n lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate\n );\n\n // Video\n\n this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);\n this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);\n this.localMQEStats.video.RX.latency.push(\n lastMqa.videoReceive[0].streams[0].common.roundTripTime\n );\n this.localMQEStats.video.RX.bitRate.push(\n lastMqa.videoReceive[0].streams[0].common.receivedBitrate\n );\n this.localMQEStats.video.RX.frameRate.push(\n lastMqa.videoReceive[0].streams[0].common.receivedFrameRate\n );\n this.localMQEStats.video.RX.resolutionWidth.push(\n lastMqa.videoReceive[0].streams[0].receivedWidth\n );\n this.localMQEStats.video.RX.resolutionHeight.push(\n lastMqa.videoReceive[0].streams[0].receivedHeight\n );\n this.localMQEStats.video.RX.requestedKeyFrame.push();\n this.localMQEStats.video.RX.receivedKeyFrame.push();\n\n this.localMQEStats.video.TX.packetsLost.push(lastMqa.videoTransmit[0].common.remoteLossRate);\n this.localMQEStats.video.TX.jitter.push(lastMqa.videoTransmit[0].common.remoteJitter);\n this.localMQEStats.video.TX.latency.push(lastMqa.videoTransmit[0].common.roundTripTime);\n this.localMQEStats.video.TX.bitRate.push(\n lastMqa.videoTransmit[0].streams[0].common.transmittedBitrate\n );\n this.localMQEStats.video.TX.frameRate.push(\n lastMqa.videoTransmit[0].streams[0].common.transmittedFrameRate\n );\n this.localMQEStats.video.TX.resolutionWidth.push(\n lastMqa.videoTransmit[0].streams[0].transmittedWidth\n );\n this.localMQEStats.video.TX.resolutionHeight.push(\n lastMqa.videoTransmit[0].streams[0].transmittedHeight\n );\n this.localMQEStats.video.TX.requestedKeyFrame.push(\n lastMqa.videoTransmit[0].streams[0].requestedKeyFrames\n );\n this.localMQEStats.video.TX.receivedKeyFrame.push();\n }\n\n resetStatsResults() {\n this.statsResults.audio.send.meanRemoteJitter = [];\n this.statsResults.video.send.meanRemoteJitter = [];\n this.statsResults.share.send.meanRemoteJitter = [];\n\n this.statsResults.audio.recv.meanRtpJitter = [];\n\n // TODO: currently no values are present\n this.statsResults.video.recv.meanRtpJitter = [];\n this.statsResults.share.recv.meanRtpJitter = [];\n\n // Reset the roundTripTime\n this.statsResults.audio.send.meanRoundTripTime = [];\n this.statsResults.video.send.meanRoundTripTime = [];\n this.statsResults.share.send.meanRoundTripTime = [];\n }\n\n /**\n * sets mediaStatus status for analyzing metrics\n *\n * @public\n * @param {Object} status for the audio and video\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public updateMediaStatus(status: object) {\n this.meetingMediaStatus = status;\n }\n\n /**\n * captures MQA data from peerconnection\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public sendMqaData() {\n const audioReceiver = mqaData.intervals[0].audioReceive[0];\n const audioSender = mqaData.intervals[0].audioTransmit[0];\n const videoReceiver = mqaData.intervals[0].videoReceive[0];\n const videoSender = mqaData.intervals[0].videoTransmit[0];\n const shareSender = mqaData.intervals[0].videoTransmit[1];\n const shareReceiver = mqaData.intervals[0].videoReceive[1];\n\n getAudioSenderMqa({\n audioSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n });\n getAudioReceiverMqa({\n audioReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n });\n\n getVideoReceiverMqa({\n videoReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n });\n getVideoSenderMqa({\n videoSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n });\n\n // Capture mqa for share scenario\n\n getVideoSenderMqa({\n videoSender: shareSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n isShareStream: true,\n });\n\n getVideoReceiverMqa({\n videoReceiver: shareReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n isShareStream: true,\n });\n mqaData.intervals[0].intervalMetadata.peerReflexiveIP =\n this.statsResults.connectionType.local.ipAddress[0];\n\n // Adding peripheral information\n mqaData.intervals[0].intervalMetadata.peripherals = [];\n mqaData.intervals[0].intervalMetadata.peripherals.push({\n information: _UNKNOWN_,\n name: MEDIA_DEVICES.SPEAKER,\n });\n mqaData.intervals[0].intervalMetadata.peripherals.push({\n information: this.peerConnection?.audioTransceiver?.sender?.track?.label || _UNKNOWN_,\n name: MEDIA_DEVICES.MICROPHONE,\n });\n mqaData.intervals[0].intervalMetadata.peripherals.push({\n information: this.peerConnection?.videoTransceiver?.sender?.track?.label || _UNKNOWN_,\n name: MEDIA_DEVICES.CAMERA,\n });\n\n // @ts-ignore\n mqaData.networkType = this.statsResults.connectionType.local.networkType;\n\n this.mqaSentCount += 1;\n\n mqaData.intervals[0].intervalNumber = this.mqaSentCount;\n\n // DO Deep copy, for some reason it takes the reference all the time rather then old value set\n this.lastMqaDataSent = cloneDeep(this.statsResults);\n\n this.populateResults(mqaData.intervals[0]);\n\n this.resetStatsResults();\n\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'sendMqaData',\n },\n EVENTS.MEDIA_QUALITY,\n {\n data: mqaData.intervals[0],\n // @ts-ignore\n networkType: mqaData.networkType,\n }\n );\n }\n\n /**\n * updated the peerconnection when changed\n *\n * @private\n * @memberof updatePeerconnection\n * @param {PeerConnection} peerConnection\n * @returns {void}\n */\n updatePeerconnection(peerConnection: any) {\n this.peerConnection = peerConnection;\n }\n\n /**\n * Starts the stats analyzer on interval\n *\n * @public\n * @memberof StatsAnalyzer\n * @param {PeerConnection} peerConnection\n * @returns {Promise}\n */\n public startAnalyzer(peerConnection: any) {\n if (!this.statsStarted) {\n this.statsStarted = true;\n this.peerConnection = peerConnection;\n\n return this.getStatsAndParse().then(() => {\n this.statsInterval = setInterval(() => {\n this.getStatsAndParse();\n }, this.config.analyzerInterval);\n // Trigger initial fetch\n this.sendMqaData();\n this.mqaInterval = setInterval(() => {\n this.sendMqaData();\n }, MQA_INTEVAL);\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Cleans up the analyzer when done\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public stopAnalyzer() {\n const sendOneLastMqa = this.mqaInterval && this.statsInterval;\n\n if (this.statsInterval) {\n clearInterval(this.statsInterval);\n this.statsInterval = undefined;\n }\n\n if (this.mqaInterval) {\n clearInterval(this.mqaInterval);\n this.mqaInterval = undefined;\n }\n\n if (sendOneLastMqa) {\n return this.getStatsAndParse().then(() => {\n this.sendMqaData();\n this.peerConnection = null;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Parse a single result of get stats\n *\n * @private\n * @param {*} getStatsResult\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private parseGetStatsResult(getStatsResult: any, type: string, isSender: boolean) {\n if (!getStatsResult) {\n return;\n }\n\n switch (getStatsResult.type) {\n case 'outbound-rtp':\n this.processOutboundRTPResult(getStatsResult, type);\n break;\n case 'inbound-rtp':\n this.processInboundRTPResult(getStatsResult, type);\n break;\n case 'remote-inbound-rtp':\n case 'remote-outbound-rtp':\n // @ts-ignore\n this.compareSentAndReceived(getStatsResult, type, isSender);\n break;\n case 'remotecandidate':\n case 'remote-candidate':\n this.parseCandidate(getStatsResult, type, isSender, true);\n break;\n case 'local-candidate':\n this.parseCandidate(getStatsResult, type, isSender, false);\n break;\n case 'media-source':\n // @ts-ignore\n this.parseAudioSource(getStatsResult, type);\n break;\n default:\n break;\n }\n }\n\n /**\n * Filters the get stats results for types\n * @private\n * @param {Array} getStatsResults\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n */\n private filterAndParseGetStatsResults(\n getStatsResults: Array<any>,\n type: string,\n isSender: boolean\n ) {\n const {types} = DEFAULT_GET_STATS_FILTER;\n\n getStatsResults.forEach((result) => {\n if (types.includes(result.type)) {\n this.parseGetStatsResult(result, type, isSender);\n }\n });\n }\n\n /**\n * parse the audio\n * @param {String} result\n * @param {boolean} type\n * @returns {void}\n */\n parseAudioSource(result: any, type: any) {\n if (!result) {\n return;\n }\n\n if (type === STATS.AUDIO_CORRELATE) {\n this.statsResults[type].send.audioLevel = result.audioLevel;\n this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;\n }\n }\n\n /**\n * emits started/stopped events for local/remote media by checking\n * if given values are increasing or not. The previousValue, currentValue\n * params can be any numerical value like number of receive packets or\n * decoded frames, etc.\n *\n * @private\n * @param {string} mediaType\n * @param {number} previousValue - value to compare\n * @param {number} currentValue - value to compare (must be same type of value as previousValue)\n * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n emitStartStopEvents = (\n mediaType: string,\n previousValue: number,\n currentValue: number,\n isLocal: boolean\n ) => {\n if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {\n throw new Error(`Unsupported mediaType: ${mediaType}`);\n }\n\n // eslint-disable-next-line no-param-reassign\n if (previousValue === undefined) previousValue = 0;\n // eslint-disable-next-line no-param-reassign\n if (currentValue === undefined) currentValue = 0;\n\n const lastEmittedEvent = isLocal\n ? this.lastEmittedStartStopEvent[mediaType].local\n : this.lastEmittedStartStopEvent[mediaType].remote;\n\n let newEvent;\n\n if (currentValue - previousValue > 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;\n } else if (currentValue === previousValue && currentValue >= 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;\n }\n\n if (newEvent && lastEmittedEvent !== newEvent) {\n if (isLocal) {\n this.lastEmittedStartStopEvent[mediaType].local = newEvent;\n } else {\n this.lastEmittedStartStopEvent[mediaType].remote = newEvent;\n }\n this.emit(\n {\n file: 'statsAnalyzer/index',\n function: 'compareLastStatsResult',\n },\n newEvent,\n {\n type: mediaType,\n }\n );\n }\n };\n\n /**\n * compares current and previous stats to check if packets are not sent\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n private compareLastStatsResult() {\n if (this.lastStatsResults !== null && this.meetingMediaStatus) {\n // compare audio stats sent\n let mediaType = STATS.AUDIO_CORRELATE;\n let currentStats = null;\n let previousStats = null;\n\n if (this.meetingMediaStatus.expected.sendAudio) {\n currentStats = this.statsResults[mediaType].send;\n previousStats = this.lastStatsResults[mediaType].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets sent`\n );\n } else {\n if (\n currentStats.totalAudioEnergy === previousStats.totalAudioEnergy ||\n currentStats.totalAudioEnergy === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Energy present`\n );\n }\n\n if (currentStats.audioLevel === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> ${mediaType} level is 0 for the user`\n );\n }\n }\n\n this.emitStartStopEvents(\n mediaType,\n previousStats.totalPacketsSent,\n currentStats.totalPacketsSent,\n true\n );\n }\n\n if (this.meetingMediaStatus.expected.receiveAudio) {\n // compare audio stats received\n currentStats = this.statsResults[mediaType].recv;\n previousStats = this.lastStatsResults[mediaType].recv;\n\n if (\n currentStats.totalPacketsReceived === previousStats.totalPacketsReceived ||\n currentStats.totalPacketsReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets received`\n );\n } else if (\n currentStats.totalSamplesReceived === previousStats.totalSamplesReceived ||\n currentStats.totalSamplesReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} samples received`\n );\n }\n\n this.emitStartStopEvents(\n mediaType,\n previousStats.totalPacketsReceived,\n currentStats.totalPacketsReceived,\n false\n );\n }\n\n mediaType = STATS.VIDEO_CORRELATE;\n if (this.meetingMediaStatus.expected.sendVideo) {\n // compare video stats sent\n currentStats = this.statsResults[mediaType].send;\n previousStats = this.lastStatsResults[mediaType].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets sent`\n );\n } else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames Encoded`\n );\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'compareLastStatsResult',\n },\n EVENTS.NO_VIDEO_ENCODED,\n {\n mediaType,\n }\n );\n }\n\n if (\n this.statsResults.resolutions[mediaType].send.framesSent ===\n this.lastStatsResults.resolutions[mediaType].send.framesSent ||\n this.statsResults.resolutions[mediaType].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames sent`\n );\n }\n\n // Video is encoded but frames are not sent\n if (\n currentStats.framesEncoded !== previousStats.framesEncoded &&\n (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)\n ) {\n this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames sent even though frames are encoded`\n );\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'compareLastStatsResult',\n },\n EVENTS.NO_FRAMES_SENT,\n {\n mediaType,\n }\n );\n }\n }\n this.emitStartStopEvents(\n mediaType,\n previousStats.framesSent,\n currentStats.framesSent,\n true\n );\n }\n\n if (this.meetingMediaStatus.expected.receiveVideo) {\n // compare video stats reveived\n\n currentStats = this.statsResults[mediaType].recv;\n previousStats = this.lastStatsResults[mediaType].recv;\n\n if (\n currentStats.totalPacketsReceived === previousStats.totalPacketsReceived ||\n currentStats.totalPacketsReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets received`\n );\n } else {\n if (\n this.statsResults.resolutions[mediaType].recv.framesReceived ===\n this.lastStatsResults.resolutions[mediaType].recv.framesReceived ||\n this.statsResults.resolutions[mediaType].recv.framesReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames received`\n );\n }\n\n if (\n this.statsResults[mediaType].recv.framesDecoded ===\n this.lastStatsResults[mediaType].recv.framesDecoded ||\n this.statsResults.resolutions[mediaType].send.framesDecoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames decoded`\n );\n }\n\n if (\n this.statsResults.resolutions[mediaType].recv.framesDropped -\n this.lastStatsResults.resolutions[mediaType].recv.framesDropped >\n 10\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> ${mediaType} frames are getting dropped`\n );\n }\n }\n\n this.emitStartStopEvents(\n mediaType,\n previousStats.framesDecoded,\n currentStats.framesDecoded,\n false\n );\n }\n\n mediaType = STATS.SHARE_CORRELATE;\n if (this.meetingMediaStatus.expected.sendShare) {\n // compare share stats sent\n\n currentStats = this.statsResults[mediaType].send;\n previousStats = this.lastStatsResults[mediaType].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets sent`\n );\n } else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames getting encoded`\n );\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'compareLastStatsResult',\n },\n EVENTS.NO_VIDEO_ENCODED,\n {\n mediaType,\n }\n );\n }\n\n if (\n this.statsResults.resolutions[mediaType].send.framesSent ===\n this.lastStatsResults.resolutions[mediaType].send.framesSent ||\n this.statsResults.resolutions[mediaType].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames sent`\n );\n }\n\n // Share video is encoded but frames are not sent\n if (\n currentStats.framesEncoded !== previousStats.framesEncoded &&\n (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)\n ) {\n this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames sent even though frames are being encoded`\n );\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'compareLastStatsResult',\n },\n EVENTS.NO_FRAMES_SENT,\n {\n mediaType,\n }\n );\n }\n }\n\n // TODO:need to check receive share value\n // compare share stats reveived\n currentStats = this.statsResults[mediaType].recv;\n previousStats = this.lastStatsResults[mediaType].recv;\n\n if (\n currentStats.totalPacketsReceived === previousStats.totalPacketsReceived ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets received`\n );\n } else {\n if (\n this.statsResults.resolutions[mediaType].recv.framesReceived ===\n this.lastStatsResults.resolutions[mediaType].recv.framesReceived ||\n this.statsResults.resolutions[mediaType].recv.framesReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames received`\n );\n }\n\n if (\n this.statsResults[mediaType].recv.framesDecoded ===\n this.lastStatsResults[mediaType].recv.framesDecoded ||\n this.statsResults.resolutions[mediaType].send.framesDecoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames decoded`\n );\n }\n\n if (\n this.statsResults.resolutions[mediaType].recv.framesDropped -\n this.lastStatsResults.resolutions[mediaType].recv.framesDropped >\n 10\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> ${mediaType} frames are getting dropped`\n );\n }\n }\n\n // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped\n // in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow\n // so we would send \"sharing stopped\" events incorrectly\n }\n }\n }\n\n /**\n * Does a `getStats` on all the transceivers and parses the results\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {Promise}\n */\n private getStatsAndParse() {\n if (!this.peerConnection) {\n return Promise.resolve();\n }\n\n if (this.peerConnection && this.peerConnection.connectionState === CONNECTION_STATE.FAILED) {\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> PeerConnection is in failed state'\n );\n\n return Promise.resolve();\n }\n\n LoggerProxy.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');\n\n return Promise.all([\n this.peerConnection.videoTransceiver.sender.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.VIDEO_CORRELATE, true);\n }),\n\n this.peerConnection.videoTransceiver.receiver.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.VIDEO_CORRELATE, false);\n }),\n\n this.peerConnection.audioTransceiver.sender.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.AUDIO_CORRELATE, true);\n }),\n\n this.peerConnection.audioTransceiver.receiver.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.AUDIO_CORRELATE, false);\n }),\n\n // TODO: add checks for screen share\n this.peerConnection.shareTransceiver.sender.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.SHARE_CORRELATE, true);\n }),\n\n this.peerConnection.shareTransceiver.receiver.getStats().then((res) => {\n this.filterAndParseGetStatsResults(res, STATS.SHARE_CORRELATE, false);\n }),\n ]).then(() => {\n this.statsResults[STATS.AUDIO_CORRELATE].direction =\n this.peerConnection.audioTransceiver.currentDirection;\n this.statsResults[STATS.VIDEO_CORRELATE].direction =\n this.peerConnection.videoTransceiver.currentDirection;\n this.statsResults[STATS.SHARE_CORRELATE].direction =\n this.peerConnection.shareTransceiver.currentDirection;\n\n // Process Stats results every 5 seconds\n this.compareLastStatsResult();\n\n // Save the last results to compare with the current\n this.lastStatsResults = JSON.parse(JSON.stringify(this.statsResults));\n\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats'\n );\n });\n }\n\n /**\n * Processes OutboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} type\n * @returns {void}\n */\n private processOutboundRTPResult(result: any, type: any) {\n const mediaType = type || STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n this.processTrackResult(result, type, sendrecvType);\n if (result.bytesSent) {\n let kilobytes = 0;\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded;\n }\n\n const bytes =\n result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n\n kilobytes = bytes / 1024;\n\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesSent = kilobytes;\n this.statsResults[mediaType][sendrecvType].framesEncoded =\n result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;\n this.statsResults[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded -\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;\n this.statsResults.internal[mediaType].outboundRtpId = result.id;\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsSent =\n result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n\n // Data saved to send MQA metrics\n\n this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].totalPacketsSent = result.packetsSent;\n this.statsResults[mediaType][sendrecvType].totalFirCount = result.firCount;\n this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n this.statsResults[mediaType][sendrecvType].encoderImplementation =\n result.encoderImplementation;\n this.statsResults[mediaType][sendrecvType].qualityLimitationReason =\n result.qualityLimitationReason;\n this.statsResults[mediaType][sendrecvType].qualityLimitationResolutionChanges =\n result.qualityLimitationResolutionChanges;\n this.statsResults[mediaType][sendrecvType].retransmittedPacketsSent =\n result.retransmittedPacketsSent;\n this.statsResults[mediaType][sendrecvType].totalBytesSent = result.bytesSent;\n this.statsResults[mediaType][sendrecvType].headerBytesSent = result.headerBytesSent;\n this.statsResults[mediaType][sendrecvType].retransmittedBytesSent =\n result.retransmittedBytesSent;\n }\n }\n\n /**\n * Processes InboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} type\n * @returns {void}\n */\n private processInboundRTPResult(result: any, type: any) {\n const mediaType = type || STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n this.processTrackResult(result, type, sendrecvType);\n if (result.bytesReceived) {\n let kilobytes = 0;\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived =\n result.bytesReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {\n this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {\n this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {\n this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n }\n\n const bytes =\n result.bytesReceived -\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;\n\n kilobytes = bytes / 1024;\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);\n\n this.statsResults[mediaType][sendrecvType].pliCount =\n result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;\n this.statsResults[mediaType][sendrecvType].currentPacketsLost =\n result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;\n if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {\n this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsReceived =\n result.packetsReceived -\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n\n if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#processInboundRTPResult --> No packets received for ${mediaType} `,\n this.statsResults[mediaType][sendrecvType].packetsReceived\n );\n }\n\n // Check the over all packet Lost ratio\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio =\n this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0\n ? this.statsResults[mediaType][sendrecvType].currentPacketsLost /\n (this.statsResults[mediaType][sendrecvType].packetsReceived +\n this.statsResults[mediaType][sendrecvType].currentPacketsLost)\n : 0;\n if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {\n LoggerProxy.logger.info(\n 'StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ',\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio\n );\n }\n\n // TODO: check the packet loss value is negative values here\n\n if (result.packetsLost) {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost =\n result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;\n } else {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n\n // From Thin\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults[mediaType][sendrecvType].keyFramesDecoded = result.keyFramesDecoded;\n\n this.statsResults[mediaType][sendrecvType].decoderImplementation =\n result.decoderImplementation;\n this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;\n\n this.statsResults[mediaType][sendrecvType].fecPacketsDiscarded = result.fecPacketsDiscarded;\n this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;\n this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;\n this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;\n\n this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);\n\n // Audio stats\n\n this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;\n this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;\n this.statsResults[mediaType][sendrecvType].totalSamplesReceived =\n result.totalSamplesReceived || 0;\n this.statsResults[mediaType][sendrecvType].totalSamplesDecoded =\n result.totalSamplesDecoded || 0;\n this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;\n }\n }\n\n /**\n * Processes remote and local candidate result and stores\n * @private\n * @param {*} result\n * @param {*} type\n * @param {boolean} isSender\n * @param {boolean} isRemote\n *\n * @returns {void}\n */\n parseCandidate = (result: any, type: any, isSender: boolean, isRemote: boolean) => {\n if (!result || !result.id) {\n return;\n }\n const RemoteCandidateType = {};\n const RemoteTransport = {};\n const RemoteIpAddress = {};\n const RemoteNetworkType = {};\n\n if (!result.id) return;\n\n const sendRecvType = isSender ? STATS.SEND_DIRECTION : STATS.RECEIVE_DIRECTION;\n const ipType = isRemote ? STATS.REMOTE : STATS.LOCAL;\n\n if (!RemoteCandidateType[result.id]) {\n RemoteCandidateType[result.id] = [];\n }\n\n if (!RemoteTransport[result.id]) {\n RemoteTransport[result.id] = [];\n }\n\n if (!RemoteIpAddress[result.id]) {\n RemoteIpAddress[result.id] = [];\n }\n if (!RemoteNetworkType[result.id]) {\n RemoteNetworkType[result.id] = [];\n }\n\n if (\n result.candidateType &&\n RemoteCandidateType[result.id].indexOf(result.candidateType) === -1\n ) {\n RemoteCandidateType[result.id].push(result.candidateType);\n }\n\n if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {\n RemoteTransport[result.id].push(result.protocol.toUpperCase());\n }\n\n if (\n result.ip &&\n RemoteIpAddress[result.id].indexOf(`${result.ip}:${result.portNumber}`) === -1\n ) {\n RemoteIpAddress[result.id].push(`${result.ip}`); // TODO: Add ports\n }\n\n if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {\n RemoteNetworkType[result.id].push(result.networkType);\n }\n\n this.statsResults.internal.candidates[result.id] = {\n candidateType: RemoteCandidateType[result.id],\n ipAddress: RemoteIpAddress[result.id],\n portNumber: result.port,\n networkType: RemoteNetworkType[result.id],\n priority: result.priority,\n transport: RemoteTransport[result.id],\n timestamp: result.time,\n id: result.id,\n type: result.type,\n };\n\n this.statsResults.connectionType[ipType].candidateType = RemoteCandidateType[result.id];\n this.statsResults.connectionType[ipType].ipAddress = RemoteIpAddress[result.id];\n\n this.statsResults.connectionType[ipType].networkType =\n RemoteNetworkType[result.id][0] === NETWORK_TYPE.VPN\n ? NETWORK_TYPE.UNKNOWN\n : RemoteNetworkType[result.id][0];\n this.statsResults.connectionType[ipType].transport = RemoteTransport[result.id];\n\n this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;\n };\n\n /**\n * Process Track results\n *\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @param {*} sendrecvType\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private processTrackResult(result: any, mediaType: any, sendrecvType: any) {\n if (!result || mediaType === STATS.AUDIO_CORRELATE) {\n return;\n }\n if (result.type !== 'inbound-rtp' && result.type !== 'outbound-rtp') {\n return;\n }\n if (result.frameWidth && result.frameHeight) {\n this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;\n this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;\n }\n\n if (sendrecvType === STATS.RECEIVE_DIRECTION) {\n this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;\n } else if (sendrecvType === STATS.SEND_DIRECTION) {\n this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;\n }\n\n if (result.trackIdentifier && mediaType !== STATS.AUDIO_CORRELATE) {\n this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier =\n result.trackIdentifier;\n\n const jitterBufferDelay = result && result.jitterBufferDelay;\n const jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;\n\n this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay =\n jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;\n\n // Used to calculate the jitter\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay =\n result.jitterBufferDelay;\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount =\n result.jitterBufferEmittedCount;\n }\n }\n\n /**\n *\n * @private\n * @param {*} result\n * @param {*} type\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private compareSentAndReceived(result: any, type: any) {\n if (!type) {\n return;\n }\n\n const mediaType = type;\n\n if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n }\n\n const currentPacketLoss =\n result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;\n\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n\n this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);\n this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);\n\n this.statsResults[mediaType].send.timestamp = result.timestamp;\n this.statsResults[mediaType].send.ssrc = result.ssrc;\n this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;\n\n // Total packloss ratio on this video section of the call\n this.statsResults[mediaType].send.overAllPacketLossRatio =\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0\n ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver /\n this.statsResults[mediaType].send.totalPacketsSent\n : 0;\n this.statsResults[mediaType].send.currentPacketLossRatio =\n this.statsResults[mediaType].send.packetsLostOnReceiver > 0\n ? (this.statsResults[mediaType].send.packetsLostOnReceiver * 100) /\n (this.statsResults[mediaType].send.packetsSent +\n this.statsResults[mediaType].send.packetsLostOnReceiver)\n : 0;\n\n if (\n this.statsResults[mediaType].send.maxPacketLossRatio <\n this.statsResults[mediaType].send.currentPacketLossRatio\n ) {\n this.statsResults[mediaType].send.maxPacketLossRatio =\n this.statsResults[mediaType].send.currentPacketLossRatio;\n }\n\n if (result.type === 'remote-inbound-rtp') {\n this.networkQualityMonitor.determineUplinkNetworkQuality({\n mediaType,\n remoteRtpResults: result,\n statsAnalyzerCurrentStats: this.statsResults,\n });\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
|
2
|
-
audioReceiver: any;
|
3
|
-
statsResults: any;
|
4
|
-
lastMqaDataSent: any;
|
5
|
-
baseMediaType: any;
|
6
|
-
}) => void;
|
7
|
-
export declare const getAudioReceiverStreamMqa: ({ audioReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
|
8
|
-
audioReceiverStream: any;
|
9
|
-
statsResults: any;
|
10
|
-
lastMqaDataSent: any;
|
11
|
-
mediaType: any;
|
12
|
-
}) => void;
|
13
|
-
export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, baseMediaType }: {
|
14
|
-
audioSender: any;
|
15
|
-
statsResults: any;
|
16
|
-
lastMqaDataSent: any;
|
17
|
-
baseMediaType: any;
|
18
|
-
}) => void;
|
19
|
-
export declare const getAudioSenderStreamMqa: ({ audioSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
|
20
|
-
audioSenderStream: any;
|
21
|
-
statsResults: any;
|
22
|
-
lastMqaDataSent: any;
|
23
|
-
mediaType: any;
|
24
|
-
}) => void;
|
25
|
-
export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
|
26
|
-
videoReceiver: any;
|
27
|
-
statsResults: any;
|
28
|
-
lastMqaDataSent: any;
|
29
|
-
baseMediaType: any;
|
30
|
-
}) => void;
|
31
|
-
export declare const getVideoReceiverStreamMqa: ({ videoReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
|
32
|
-
videoReceiverStream: any;
|
33
|
-
statsResults: any;
|
34
|
-
lastMqaDataSent: any;
|
35
|
-
mediaType: any;
|
36
|
-
}) => void;
|
37
|
-
export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, baseMediaType }: {
|
38
|
-
videoSender: any;
|
39
|
-
statsResults: any;
|
40
|
-
lastMqaDataSent: any;
|
41
|
-
baseMediaType: any;
|
42
|
-
}) => void;
|
43
|
-
export declare const getVideoSenderStreamMqa: ({ videoSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
|
44
|
-
videoSenderStream: any;
|
45
|
-
statsResults: any;
|
46
|
-
lastMqaDataSent: any;
|
47
|
-
mediaType: any;
|
48
|
-
}) => void;
|
@@ -1,179 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.getVideoSenderMqa = exports.getVideoReceiverMqa = exports.getAudioSenderMqa = exports.getAudioReceiverMqa = void 0;
|
9
|
-
var _max2 = _interopRequireDefault(require("lodash/max"));
|
10
|
-
var _mean2 = _interopRequireDefault(require("lodash/mean"));
|
11
|
-
var _constants = require("../constants");
|
12
|
-
/* eslint-disable prefer-destructuring */
|
13
|
-
|
14
|
-
var getAudioReceiverMqa = exports.getAudioReceiverMqa = function getAudioReceiverMqa(_ref) {
|
15
|
-
var audioReceiver = _ref.audioReceiver,
|
16
|
-
statsResults = _ref.statsResults,
|
17
|
-
lastMqaDataSent = _ref.lastMqaDataSent;
|
18
|
-
var mediaType = _constants.STATS.AUDIO_CORRELATE;
|
19
|
-
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
20
|
-
audioReceiver.common.common.direction = statsResults[mediaType].direction;
|
21
|
-
audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
|
22
|
-
// add rtpPacket info inside common as also for call analyzer
|
23
|
-
audioReceiver.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;
|
24
|
-
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
25
|
-
// collect the packets received for the last min
|
26
|
-
audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
|
27
|
-
audioReceiver.common.mediaHopByHopLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;
|
28
|
-
audioReceiver.common.rtpHopByHopLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;
|
29
|
-
|
30
|
-
// @ts-ignore
|
31
|
-
audioReceiver.streams[0].common.maxRtpJitter =
|
32
|
-
// @ts-ignore
|
33
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
34
|
-
audioReceiver.streams[0].common.meanRtpJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
35
|
-
audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;
|
36
|
-
|
37
|
-
// Fec packets do come in as part of the FEC only for audio
|
38
|
-
var fecRecovered = statsResults[mediaType][sendrecvType].fecPacketsReceived - lastMqaDataSent[mediaType][sendrecvType].fecPacketsReceived - (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastMqaDataSent[mediaType][sendrecvType].fecPacketsDiscarded);
|
39
|
-
audioReceiver.streams[0].common.rtpEndToEndLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost - fecRecovered || 0;
|
40
|
-
audioReceiver.streams[0].common.framesDropped = statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastMqaDataSent[mediaType][sendrecvType].totalSamplesDecoded || 0;
|
41
|
-
audioReceiver.streams[0].common.renderedFrameRate = audioReceiver.streams[0].common.framesDropped * 100 / 60 || 0;
|
42
|
-
audioReceiver.streams[0].common.framesReceived = statsResults[mediaType][sendrecvType].totalSamplesReceived - lastMqaDataSent[mediaType][sendrecvType].totalSamplesReceived || 0;
|
43
|
-
audioReceiver.streams[0].common.concealedFrames = statsResults[mediaType][sendrecvType].concealedSamples - lastMqaDataSent[mediaType][sendrecvType].concealedSamples || 0;
|
44
|
-
audioReceiver.streams[0].common.receivedBitrate = (statsResults[mediaType][sendrecvType].totalBytesReceived - lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived) * 8 / 60 || 0;
|
45
|
-
audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;
|
46
|
-
};
|
47
|
-
var getAudioSenderMqa = exports.getAudioSenderMqa = function getAudioSenderMqa(_ref2) {
|
48
|
-
var audioSender = _ref2.audioSender,
|
49
|
-
statsResults = _ref2.statsResults,
|
50
|
-
lastMqaDataSent = _ref2.lastMqaDataSent;
|
51
|
-
var mediaType = _constants.STATS.AUDIO_CORRELATE;
|
52
|
-
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
53
|
-
audioSender.common.common.direction = statsResults[mediaType].direction;
|
54
|
-
audioSender.common.transportType = statsResults.connectionType.local.transport[0];
|
55
|
-
|
56
|
-
// @ts-ignore
|
57
|
-
audioSender.common.maxRemoteJitter =
|
58
|
-
// @ts-ignore
|
59
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
60
|
-
audioSender.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
61
|
-
audioSender.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;
|
62
|
-
audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
|
63
|
-
// From candidate-pair
|
64
|
-
audioSender.common.availableBitrate = statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
|
65
|
-
// Calculate based on how much packets lost of received compated to how to the client sent
|
66
|
-
|
67
|
-
var totalpacketsLostForaMin = statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;
|
68
|
-
audioSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? totalpacketsLostForaMin * 100 / audioSender.common.rtpPackets : 0; // This is the packets sent with in last min || 0;
|
69
|
-
|
70
|
-
// @ts-ignore
|
71
|
-
audioSender.common.maxRoundTripTime =
|
72
|
-
// @ts-ignore
|
73
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
74
|
-
audioSender.common.meanRoundTripTime = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
75
|
-
audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
|
76
|
-
|
77
|
-
// Calculate the outgoing bitrate
|
78
|
-
var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;
|
79
|
-
audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
80
|
-
audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;
|
81
|
-
audioSender.streams[0].transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;
|
82
|
-
audioSender.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;
|
83
|
-
};
|
84
|
-
var getVideoReceiverMqa = exports.getVideoReceiverMqa = function getVideoReceiverMqa(_ref3) {
|
85
|
-
var videoReceiver = _ref3.videoReceiver,
|
86
|
-
statsResults = _ref3.statsResults,
|
87
|
-
lastMqaDataSent = _ref3.lastMqaDataSent,
|
88
|
-
_ref3$isShareStream = _ref3.isShareStream,
|
89
|
-
isShareStream = _ref3$isShareStream === void 0 ? false : _ref3$isShareStream;
|
90
|
-
var mediaType = isShareStream ? _constants.STATS.SHARE_CORRELATE : _constants.STATS.VIDEO_CORRELATE;
|
91
|
-
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
92
|
-
videoReceiver.common.common.direction = statsResults[mediaType].direction;
|
93
|
-
videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
|
94
|
-
// collect the packets received for the last min
|
95
|
-
videoReceiver.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;
|
96
|
-
videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
|
97
|
-
var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;
|
98
|
-
|
99
|
-
// Hope by hop are numbers and not percentage so we compare on what we sent the last min
|
100
|
-
// this is including packet lost
|
101
|
-
videoReceiver.common.mediaHopByHopLost = totalPacketLoss;
|
102
|
-
videoReceiver.common.rtpHopByHopLost = totalPacketLoss;
|
103
|
-
|
104
|
-
// End to end packetloss is after recovery
|
105
|
-
videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;
|
106
|
-
|
107
|
-
// calculate this values
|
108
|
-
|
109
|
-
// @ts-ignore
|
110
|
-
videoReceiver.common.maxRemoteJitter =
|
111
|
-
// @ts-ignore
|
112
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
113
|
-
videoReceiver.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
114
|
-
videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;
|
115
|
-
// videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount) * 1000 || 0;
|
116
|
-
|
117
|
-
// Calculate the outgoing bitrate
|
118
|
-
var totalBytesReceivedInaMin = statsResults[mediaType][sendrecvType].totalBytesReceived - lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived;
|
119
|
-
videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
|
120
|
-
videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;
|
121
|
-
|
122
|
-
// From tracks //TODO: calculate a proper one
|
123
|
-
var totalFrameReceivedInaMin = statsResults.resolutions[mediaType][sendrecvType].framesReceived - lastMqaDataSent.resolutions[mediaType][sendrecvType].framesReceived;
|
124
|
-
var totalFrameDecodedInaMin = statsResults.resolutions[mediaType][sendrecvType].framesDecoded - lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDecoded;
|
125
|
-
videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin ? totalFrameReceivedInaMin * 100 / 60 : 0;
|
126
|
-
videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin ? totalFrameDecodedInaMin * 100 / 60 : 0;
|
127
|
-
videoReceiver.streams[0].common.framesDropped = statsResults.resolutions[mediaType][sendrecvType].framesDropped - lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDropped;
|
128
|
-
videoReceiver.streams[0].receivedHeight = statsResults.resolutions[mediaType][sendrecvType].height;
|
129
|
-
videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width;
|
130
|
-
videoReceiver.streams[0].receivedFrameSize = statsResults.resolutions[mediaType][sendrecvType].height * statsResults.resolutions[mediaType][sendrecvType].height / 256;
|
131
|
-
videoReceiver.streams[0].receivedKeyFrames = statsResults[mediaType][sendrecvType].keyFramesDecoded - lastMqaDataSent[mediaType][sendrecvType].keyFramesDecoded || 0;
|
132
|
-
videoReceiver.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalPliCount - lastMqaDataSent[mediaType][sendrecvType].totalPliCount || 0;
|
133
|
-
};
|
134
|
-
var getVideoSenderMqa = exports.getVideoSenderMqa = function getVideoSenderMqa(_ref4) {
|
135
|
-
var videoSender = _ref4.videoSender,
|
136
|
-
statsResults = _ref4.statsResults,
|
137
|
-
lastMqaDataSent = _ref4.lastMqaDataSent,
|
138
|
-
_ref4$isShareStream = _ref4.isShareStream,
|
139
|
-
isShareStream = _ref4$isShareStream === void 0 ? false : _ref4$isShareStream;
|
140
|
-
var mediaType = isShareStream ? _constants.STATS.SHARE_CORRELATE : _constants.STATS.VIDEO_CORRELATE;
|
141
|
-
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
142
|
-
videoSender.common.common.direction = statsResults[mediaType].direction;
|
143
|
-
videoSender.common.transportType = statsResults.connectionType.local.transport[0];
|
144
|
-
|
145
|
-
// @ts-ignore
|
146
|
-
videoSender.common.maxRemoteJitter =
|
147
|
-
// @ts-ignore
|
148
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
149
|
-
videoSender.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
150
|
-
videoSender.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;
|
151
|
-
videoSender.common.availableBitrate = statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
|
152
|
-
// Calculate based on how much packets lost of received compated to how to the client sent
|
153
|
-
|
154
|
-
var totalpacketsLostForaMin = statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;
|
155
|
-
videoSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? totalpacketsLostForaMin * 100 / (videoSender.common.rtpPackets + totalpacketsLostForaMin) : 0; // This is the packets sent with in last min || 0;
|
156
|
-
|
157
|
-
// @ts-ignore
|
158
|
-
videoSender.common.maxRoundTripTime =
|
159
|
-
// @ts-ignore
|
160
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
161
|
-
videoSender.common.meanRoundTripTime = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
162
|
-
videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
|
163
|
-
videoSender.streams[0].common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;
|
164
|
-
|
165
|
-
// Calculate the outgoing bitrate
|
166
|
-
var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;
|
167
|
-
videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
168
|
-
videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;
|
169
|
-
videoSender.streams[0].transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;
|
170
|
-
videoSender.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;
|
171
|
-
|
172
|
-
// From tracks //TODO: calculate a proper one
|
173
|
-
var totalFrameSentInaMin = statsResults.resolutions[mediaType][sendrecvType].framesSent - (lastMqaDataSent.resolutions[mediaType][sendrecvType].framesSent || 0);
|
174
|
-
videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin ? totalFrameSentInaMin * 100 / 60 : 0;
|
175
|
-
videoSender.streams[0].transmittedHeight = statsResults.resolutions[mediaType][sendrecvType].height;
|
176
|
-
videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width;
|
177
|
-
videoSender.streams[0].transmittedFrameSize = statsResults.resolutions[mediaType][sendrecvType].height * statsResults.resolutions[mediaType][sendrecvType].width / 254;
|
178
|
-
};
|
179
|
-
//# sourceMappingURL=mqaUtil.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_constants","require","getAudioReceiverMqa","exports","_ref","audioReceiver","statsResults","lastMqaDataSent","mediaType","STATS","AUDIO_CORRELATE","sendrecvType","RECEIVE_DIRECTION","common","direction","transportType","connectionType","remote","transport","rtpPackets","totalPacketsReceived","streams","mediaHopByHopLost","totalPacketsLost","rtpHopByHopLost","maxRtpJitter","_max2","default","meanRtpJitter","_mean2","rtpJitter","fecRecovered","fecPacketsReceived","fecPacketsDiscarded","rtpEndToEndLost","framesDropped","totalSamplesDecoded","renderedFrameRate","framesReceived","totalSamplesReceived","concealedFrames","concealedSamples","receivedBitrate","totalBytesReceived","rtpBitrate","getAudioSenderMqa","_ref2","audioSender","SEND_DIRECTION","local","maxRemoteJitter","meanRemoteJitter","totalPacketsSent","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","totalPacketsLostOnReceiver","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","totalBytesSent","transmittedBitrate","transmittedKeyFrames","totalKeyFramesEncoded","requestedKeyFrames","totalFirCount","getVideoReceiverMqa","_ref3","videoReceiver","_ref3$isShareStream","isShareStream","SHARE_CORRELATE","VIDEO_CORRELATE","totalPacketLoss","totalBytesReceivedInaMin","totalFrameReceivedInaMin","resolutions","totalFrameDecodedInaMin","framesDecoded","receivedFrameRate","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","keyFramesDecoded","totalPliCount","getVideoSenderMqa","_ref4","videoSender","_ref4$isShareStream","totalFrameSentInaMin","framesSent","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n audioReceiver.common.mediaHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n audioReceiver.common.rtpHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // @ts-ignore\n audioReceiver.streams[0].common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsDiscarded);\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost -\n fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples -\n lastMqaDataSent[mediaType][sendrecvType].concealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived) *\n 8) /\n 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n audioSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n audioSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n audioSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;\n\n audioSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // Hope by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n videoReceiver.common.mediaHopByHopLost = totalPacketLoss;\n videoReceiver.common.rtpHopByHopLost = totalPacketLoss;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;\n\n // calculate this values\n\n // @ts-ignore\n videoReceiver.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;\n // videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived;\n\n videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameReceivedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesReceived -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesReceived;\n const totalFrameDecodedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesDecoded -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin\n ? (totalFrameReceivedInaMin * 100) / 60\n : 0;\n videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin\n ? (totalFrameDecodedInaMin * 100) / 60\n : 0;\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults.resolutions[mediaType][sendrecvType].framesDropped -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDropped;\n videoReceiver.streams[0].receivedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoReceiver.streams[0].receivedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].height) /\n 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].keyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount -\n lastMqaDataSent[mediaType][sendrecvType].totalPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n videoSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n videoSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n videoSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n videoSender.streams[0].common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;\n\n videoSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesSent -\n (lastMqaDataSent.resolutions[mediaType][sendrecvType].framesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin\n ? (totalFrameSentInaMin * 100) / 60\n : 0;\n videoSender.streams[0].transmittedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoSender.streams[0].transmittedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].width) /\n 254;\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,64 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @description Meeting Webex assistance transcription feature.
|
3
|
-
* @exports
|
4
|
-
* @class Transcription
|
5
|
-
*/
|
6
|
-
export default class Transcription {
|
7
|
-
webSocketUrl: any;
|
8
|
-
sessionID: any;
|
9
|
-
members: any;
|
10
|
-
memberCSIs: any;
|
11
|
-
webSocket: any;
|
12
|
-
/**
|
13
|
-
* @param {string} webSocketUrl
|
14
|
-
* @param {sessionID} sessionId
|
15
|
-
* @param {object} members
|
16
|
-
* @constructor
|
17
|
-
* @memberof Transcription
|
18
|
-
*/
|
19
|
-
constructor(webSocketUrl: string, sessionId: any, members: object);
|
20
|
-
/**
|
21
|
-
* open the Low Latency Mercury connection
|
22
|
-
* An event parameter will be send to the callback.
|
23
|
-
*
|
24
|
-
* @param {string} token
|
25
|
-
* @param {string} sessionID
|
26
|
-
* @returns {void}
|
27
|
-
*/
|
28
|
-
connect(token: string): void;
|
29
|
-
/**
|
30
|
-
* Sets callback to invoke when the web socket connection is closed.
|
31
|
-
*
|
32
|
-
* @param {Function} callback
|
33
|
-
* @returns {void}
|
34
|
-
*/
|
35
|
-
onCloseSocket(callback: any): void;
|
36
|
-
/**
|
37
|
-
* Sets callback to invoke when a web socket connection error occurs.
|
38
|
-
* An event parameter will be send to the callback.
|
39
|
-
*
|
40
|
-
* @param {Function} callback
|
41
|
-
* @returns {void}
|
42
|
-
*/
|
43
|
-
onErrorSocket(callback: any): void;
|
44
|
-
/**
|
45
|
-
* Get current speaker from the given csis payload and update the global csis map
|
46
|
-
*
|
47
|
-
* @private
|
48
|
-
* @param {object} csis
|
49
|
-
* @returns {object}
|
50
|
-
*/
|
51
|
-
private getSpeaker;
|
52
|
-
/**
|
53
|
-
* Sends transcription data to given callback as it arrives.
|
54
|
-
*
|
55
|
-
* @param {Function} callback
|
56
|
-
* @returns {void}
|
57
|
-
*/
|
58
|
-
subscribe(callback: any): void;
|
59
|
-
/**
|
60
|
-
* Close the LLM web socket connection
|
61
|
-
* @returns {void}
|
62
|
-
*/
|
63
|
-
closeSocket(): void;
|
64
|
-
}
|