@webex/plugin-meetings 2.60.1-next.13 → 2.60.1-next.14
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +103 -99
- package/dist/mediaQualityMetrics/config.js +133 -129
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/index.js +4 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.d.ts +2 -0
- package/dist/meeting/request.js +4 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meetings/index.js +19 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/metrics/constants.d.ts +2 -0
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/index.js +14 -20
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +63 -43
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +18 -2
- package/dist/roap/turnDiscovery.js +163 -69
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/index.d.ts +7 -0
- package/dist/rtcMetrics/index.js +38 -1
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/index.js +135 -23
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +28 -4
- package/dist/statsAnalyzer/mqaUtil.js +278 -148
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/mediaQualityMetrics/config.ts +107 -107
- package/src/meeting/index.ts +2 -0
- package/src/meeting/request.ts +6 -0
- package/src/meetings/index.ts +22 -0
- package/src/meetings/util.ts +1 -1
- package/src/metrics/constants.ts +2 -0
- package/src/reachability/index.ts +0 -6
- package/src/reconnection-manager/index.ts +18 -7
- package/src/roap/turnDiscovery.ts +100 -24
- package/src/rtcMetrics/index.ts +43 -1
- package/src/statsAnalyzer/index.ts +158 -24
- package/src/statsAnalyzer/mqaUtil.ts +302 -154
- package/test/unit/spec/meeting/index.js +46 -0
- package/test/unit/spec/meeting/request.js +2 -0
- package/test/unit/spec/meetings/utils.js +35 -8
- package/test/unit/spec/reachability/index.ts +74 -0
- package/test/unit/spec/reconnection-manager/index.js +36 -1
- package/test/unit/spec/roap/turnDiscovery.ts +326 -76
- package/test/unit/spec/rtcMetrics/index.ts +32 -3
- package/test/unit/spec/stats-analyzer/index.js +439 -1
- package/test/utils/webex-test-users.js +12 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_constants","getAudioReceiverMqa","exports","_ref","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiver","statsResults","lastMqaDataSent","mediaType","sendrecvType","STATS","RECEIVE_DIRECTION","lastPacketsReceived","totalPacketsReceived","lastPacketsLost","totalPacketsLost","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","lastBytesReceived","totalBytesReceived","lastFecPacketsReceived","fecPacketsReceived","lastFecPacketsDiscarded","fecPacketsDiscarded","csi","streams","common","includes","push","direction","isMain","transportType","connectionType","local","transport","rtpPackets","mediaHopByHopLost","rtpHopByHopLost","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","fecRecovered","fecPackets","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","rtpBitrate","getAudioSenderMqa","_ref2","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","_lastMqaDataSent$medi13","audioSender","SEND_DIRECTION","lastPacketsSent","totalPacketsSent","totalPacketsLostOnReceiver","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","maxRemoteJitter","meanRemoteJitter","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","getVideoReceiverMqa","_ref3","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_lastMqaDataSent$medi21","videoReceiver","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalBytesReceivedInaMin","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","getVideoSenderMqa","_ref4","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","_lastMqaDataSent$medi26","_lastMqaDataSent$medi27","videoSender","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiver.streams[0].common.csi.includes(csi)) {\n audioReceiver.streams[0].common.csi.push(csi);\n }\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.common.isMain = !mediaType.includes('-share');\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n\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 const totalPacketsLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n audioReceiver.common.mediaHopByHopLost = totalPacketsLost;\n audioReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\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 lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n audioReceiver.common.fecPackets = fecRecovered || 0;\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSender.streams[0].common.csi.includes(csi)) {\n audioSender.streams[0].common.csi.push(csi);\n }\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.common.isMain = !mediaType.includes('-share');\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\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 - lastPacketsSent || 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 - lastPacketsLost;\n\n audioSender.common.remoteLossRate =\n audioSender.common.rtpPackets > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\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 = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\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 - lastFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiver.streams[0].common.csi.includes(csi)) {\n videoReceiver.streams[0].common.csi.push(csi);\n }\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.common.isMain = !mediaType.includes('-share');\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n const totalPacketsLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n videoReceiver.common.mediaHopByHopLost = totalPacketsLost;\n videoReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketsLost;\n\n // calculate this values\n\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\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\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[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiver.streams[0].common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped;\n videoReceiver.streams[0].receivedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoReceiver.streams[0].receivedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoReceiver.streams[0].receivedFrameSize =\n (videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth) / 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, mediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastPacketsLost =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLostOnReceiver || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;\n const {csi} = statsResults[mediaType];\n if (csi && !videoSender.streams[0].common.csi.includes(csi)) {\n videoSender.streams[0].common.csi.push(csi);\n }\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.common.isMain = !mediaType.includes('-share');\n videoSender.common.transportType = statsResults.connectionType.local.transport;\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 - lastPacketsSent || 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 - lastPacketsLost;\n\n videoSender.common.remoteLossRate =\n videoSender.common.rtpPackets > 0\n ? (totalpacketsLostForaMin * 100) / videoSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\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 - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\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 - lastKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSender.streams[0].transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoSender.streams[0].transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoSender.streams[0].transmittedFrameSize =\n (videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth) / 256;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_constants","getTotalValueFromBaseType","stats","sendrecvType","baseMediaType","value","_keys","default","filter","mt","includes","reduce","acc","_stats$mt","_stats$mt$sendrecvTyp","getAudioReceiverMqa","exports","_ref","_statsResults$Object$","audioReceiver","statsResults","lastMqaDataSent","STATS","RECEIVE_DIRECTION","getLastTotalValue","getTotalValue","lastPacketsReceived","lastPacketsLost","lastBytesReceived","lastFecPacketsReceived","lastFecPacketsDiscarded","totalPacketsReceived","packetsLost","totalBytesReceived","totalFecPacketsReceived","totalFecPacketsDiscarded","common","direction","find","mediaType","isMain","transportType","connectionType","local","transport","rtpPackets","totalPacketsLost","mediaHopByHopLost","rtpHopByHopLost","fecRecovered","fecPackets","rtpBitrate","getAudioReceiverStreamMqa","_ref2","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiverStream","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","fecPacketsReceived","fecPacketsDiscarded","csi","push","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","getAudioSenderMqa","_ref3","_statsResults$Object$2","audioSender","SEND_DIRECTION","lastPacketsSent","lastPacketsLostTotal","totalPacketsLostOnReceiver","totalPacketsSent","meanRemoteJitter","concat","meanRoundTripTime","maxRemoteJitter","availableBitrate","totalPacketsLostForaMin","remoteLossRate","maxRoundTripTime","roundTripTime","totalBytesSentInaMin","getAudioSenderStreamMqa","_ref4","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","audioSenderStream","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","getVideoReceiverMqa","_ref5","_statsResults$Object$3","videoReceiver","totalBytesReceivedInaMin","getVideoReceiverStreamMqa","_ref6","_lastMqaDataSent$medi13","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","videoReceiverStream","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","getVideoSenderMqa","_ref7","_statsResults$Object$4","videoSender","availableOutgoingBitrate","getVideoSenderStreamMqa","_ref8","_lastMqaDataSent$medi21","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","videoSenderStream","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\n/**\n * Get the totals of a certain value from a certain media type.\n *\n * @param {object} stats - The large stats object.\n * @param {string} sendrecvType - \"send\" or \"recv\".\n * @param {string} baseMediaType - audio or video _and_ share or non-share.\n * @param {string} value - The value we want to get the totals of.\n * @returns {number}\n */\nconst getTotalValueFromBaseType = (\n stats: object,\n sendrecvType: string,\n baseMediaType: string,\n value: string\n): number =>\n Object.keys(stats)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc + (stats[mt]?.[sendrecvType]?.[value] || 0), 0);\n\nexport const getAudioReceiverMqa = ({\n audioReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n const lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');\n const lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');\n\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n const totalFecPacketsReceived = getTotalValue('fecPacketsReceived');\n const totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');\n\n audioReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioReceiver.common.common.isMain = !baseMediaType.includes('-share');\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;\n\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 const totalPacketsLost = packetsLost - lastPacketsLost;\n audioReceiver.common.mediaHopByHopLost = totalPacketsLost;\n audioReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n const fecRecovered =\n totalFecPacketsReceived -\n lastFecPacketsReceived -\n (totalFecPacketsDiscarded - lastFecPacketsDiscarded);\n audioReceiver.common.fecPackets = fecRecovered;\n\n audioReceiver.common.rtpBitrate = ((totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioReceiverStreamMqa = ({\n audioReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiverStream.common.csi.includes(csi)) {\n audioReceiverStream.common.csi.push(csi);\n }\n\n audioReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n audioReceiverStream.common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.rtpJitter = audioReceiverStream.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 lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n\n audioReceiverStream.common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiverStream.common.renderedFrameRate =\n (audioReceiverStream.common.framesDropped * 100) / 60 || 0;\n\n audioReceiverStream.common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiverStream.common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiverStream.common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, baseMediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n audioSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioSender.common.common.isMain = !baseMediaType.includes('-share');\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\n audioSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;\n // audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate = getTotalValueFromBaseType(\n statsResults,\n sendrecvType,\n baseMediaType,\n 'availableOutgoingBitrate'\n );\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n audioSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min\n\n audioSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') -\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');\n\n audioSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getAudioSenderStreamMqa = ({\n audioSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSenderStream.common.csi.includes(csi)) {\n audioSenderStream.common.csi.push(csi);\n }\n\n audioSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n audioSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;\n audioSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n\n videoReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoReceiver.common.common.isMain = !baseMediaType.includes('-share');\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n const totalPacketsLost = packetsLost - lastPacketsLost;\n videoReceiver.common.mediaHopByHopLost = totalPacketsLost;\n videoReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n // calculate this values\n videoReceiver.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;\n\n videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n};\n\nexport const getVideoReceiverStreamMqa = ({\n videoReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiverStream.common.csi.includes(csi)) {\n videoReceiverStream.common.csi.push(csi);\n }\n\n videoReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n // End to end packetloss is after recovery\n videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;\n\n videoReceiverStream.common.rtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\n videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n\n const totalFrameReceivedInaMin =\n statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiverStream.common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiverStream.common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;\n videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoReceiverStream.receivedFrameSize =\n (videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth) / 256;\n\n videoReceiverStream.receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiverStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, baseMediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastBytesSent = getLastTotalValue('totalBytesSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n const totalBytesSent = getTotalValue('totalBytesSent');\n const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');\n\n videoSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoSender.common.common.isMain = !baseMediaType.includes('-share');\n videoSender.common.transportType = statsResults.connectionType.local.transport;\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;\n videoSender.common.availableBitrate = availableOutgoingBitrate;\n\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n\n videoSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min || 0;\n\n videoSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = totalBytesSent - lastBytesSent;\n\n videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getVideoSenderStreamMqa = ({\n videoSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoSenderStream.common.csi.includes(csi)) {\n videoSenderStream.common.csi.push(csi);\n }\n\n videoSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;\n videoSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSenderStream.common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoSenderStream.transmittedFrameSize =\n (videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth) / 256;\n};\n"],"mappings":"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"}
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "2.60.1-next.
|
|
65
|
+
version: "2.60.1-next.14"
|
|
66
66
|
});
|
|
67
67
|
var _default = exports.default = Webinar;
|
|
68
68
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/jest-config-legacy": "0.0.0",
|
|
46
46
|
"@webex/legacy-tools": "0.0.0",
|
|
47
|
-
"@webex/plugin-meetings": "2.60.1-next.
|
|
48
|
-
"@webex/plugin-rooms": "2.60.1-next.
|
|
49
|
-
"@webex/test-helper-chai": "2.60.1-next.
|
|
50
|
-
"@webex/test-helper-mocha": "2.60.1-next.
|
|
51
|
-
"@webex/test-helper-mock-webex": "2.60.1-next.
|
|
52
|
-
"@webex/test-helper-retry": "2.60.1-next.
|
|
53
|
-
"@webex/test-helper-test-users": "2.60.1-next.
|
|
47
|
+
"@webex/plugin-meetings": "2.60.1-next.14",
|
|
48
|
+
"@webex/plugin-rooms": "2.60.1-next.10",
|
|
49
|
+
"@webex/test-helper-chai": "2.60.1-next.10",
|
|
50
|
+
"@webex/test-helper-mocha": "2.60.1-next.10",
|
|
51
|
+
"@webex/test-helper-mock-webex": "2.60.1-next.10",
|
|
52
|
+
"@webex/test-helper-retry": "2.60.1-next.10",
|
|
53
|
+
"@webex/test-helper-test-users": "2.60.1-next.10",
|
|
54
54
|
"chai": "^4.3.4",
|
|
55
55
|
"chai-as-promised": "^7.1.1",
|
|
56
56
|
"eslint": "^8.24.0",
|
|
@@ -62,20 +62,20 @@
|
|
|
62
62
|
"typescript": "^4.7.4"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@webex/common": "2.60.1-next.
|
|
65
|
+
"@webex/common": "2.60.1-next.10",
|
|
66
66
|
"@webex/internal-media-core": "2.2.7",
|
|
67
|
-
"@webex/internal-plugin-conversation": "2.60.1-next.
|
|
68
|
-
"@webex/internal-plugin-device": "2.60.1-next.
|
|
69
|
-
"@webex/internal-plugin-llm": "2.60.1-next.
|
|
70
|
-
"@webex/internal-plugin-mercury": "2.60.1-next.
|
|
71
|
-
"@webex/internal-plugin-metrics": "2.60.1-next.
|
|
72
|
-
"@webex/internal-plugin-support": "2.60.1-next.
|
|
73
|
-
"@webex/internal-plugin-user": "2.60.1-next.
|
|
74
|
-
"@webex/internal-plugin-voicea": "2.60.1-next.
|
|
75
|
-
"@webex/media-helpers": "3.0.0-next.
|
|
76
|
-
"@webex/plugin-people": "2.60.1-next.
|
|
77
|
-
"@webex/plugin-rooms": "2.60.1-next.
|
|
78
|
-
"@webex/webex-core": "2.60.1-next.
|
|
67
|
+
"@webex/internal-plugin-conversation": "2.60.1-next.10",
|
|
68
|
+
"@webex/internal-plugin-device": "2.60.1-next.10",
|
|
69
|
+
"@webex/internal-plugin-llm": "2.60.1-next.10",
|
|
70
|
+
"@webex/internal-plugin-mercury": "2.60.1-next.10",
|
|
71
|
+
"@webex/internal-plugin-metrics": "2.60.1-next.10",
|
|
72
|
+
"@webex/internal-plugin-support": "2.60.1-next.10",
|
|
73
|
+
"@webex/internal-plugin-user": "2.60.1-next.10",
|
|
74
|
+
"@webex/internal-plugin-voicea": "2.60.1-next.14",
|
|
75
|
+
"@webex/media-helpers": "3.0.0-next.30",
|
|
76
|
+
"@webex/plugin-people": "2.60.1-next.10",
|
|
77
|
+
"@webex/plugin-rooms": "2.60.1-next.10",
|
|
78
|
+
"@webex/webex-core": "2.60.1-next.10",
|
|
79
79
|
"ampersand-collection": "^2.0.2",
|
|
80
80
|
"bowser": "^2.11.0",
|
|
81
81
|
"btoa": "^1.2.1",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"//": [
|
|
93
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
94
94
|
],
|
|
95
|
-
"version": "2.60.1-next.
|
|
95
|
+
"version": "2.60.1-next.14"
|
|
96
96
|
}
|
|
@@ -44,28 +44,28 @@ export const emptyAudioReceive = {
|
|
|
44
44
|
stunPackets: 0,
|
|
45
45
|
transportType: 'UDP',
|
|
46
46
|
},
|
|
47
|
-
streams: [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
streams: [],
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const emptyAudioReceiveStream = {
|
|
51
|
+
common: {
|
|
52
|
+
codec: 'opus',
|
|
53
|
+
concealedFrames: 0,
|
|
54
|
+
csi: [],
|
|
55
|
+
maxConcealRunLength: 0,
|
|
56
|
+
optimalBitrate: 0,
|
|
57
|
+
optimalFrameRate: 0,
|
|
58
|
+
receivedBitrate: 0,
|
|
59
|
+
receivedFrameRate: 0,
|
|
60
|
+
renderedFrameRate: 0,
|
|
61
|
+
requestedBitrate: 0,
|
|
62
|
+
requestedFrameRate: 0,
|
|
63
|
+
rtpEndToEndLost: 0,
|
|
64
|
+
maxRtpJitter: 0,
|
|
65
|
+
meanRtpJitter: 0,
|
|
66
|
+
rtpPackets: 0,
|
|
67
|
+
ssci: 0,
|
|
68
|
+
},
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
export const emptyAudioTransmit = {
|
|
@@ -98,20 +98,20 @@ export const emptyAudioTransmit = {
|
|
|
98
98
|
stunPackets: 0,
|
|
99
99
|
transportType: 'UDP',
|
|
100
100
|
},
|
|
101
|
-
streams: [
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
streams: [],
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export const emptyAudioTransmitStream = {
|
|
105
|
+
common: {
|
|
106
|
+
codec: 'opus',
|
|
107
|
+
csi: [],
|
|
108
|
+
requestedBitrate: 0,
|
|
109
|
+
requestedFrames: 0,
|
|
110
|
+
rtpPackets: 0,
|
|
111
|
+
ssci: 0,
|
|
112
|
+
transmittedBitrate: 0,
|
|
113
|
+
transmittedFrameRate: 0,
|
|
114
|
+
},
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
export const emptyVideoReceive = {
|
|
@@ -143,39 +143,39 @@ export const emptyVideoReceive = {
|
|
|
143
143
|
stunPackets: 0, // Not avaliable
|
|
144
144
|
transportType: 'UDP',
|
|
145
145
|
},
|
|
146
|
-
streams: [
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
146
|
+
streams: [],
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export const emptyVideoReceiveStream = {
|
|
150
|
+
common: {
|
|
151
|
+
codec: 'H264',
|
|
152
|
+
concealedFrames: 0, // Not avaliable
|
|
153
|
+
csi: [],
|
|
154
|
+
maxConcealRunLength: 0, // Not avaliable
|
|
155
|
+
optimalBitrate: 0,
|
|
156
|
+
optimalFrameRate: 0,
|
|
157
|
+
receivedBitrate: 0,
|
|
158
|
+
receivedFrameRate: 0,
|
|
159
|
+
renderedFrameRate: 0, // Not avaliable
|
|
160
|
+
requestedBitrate: 0,
|
|
161
|
+
requestedFrameRate: 0,
|
|
162
|
+
rtpEndToEndLost: 0,
|
|
163
|
+
rtpJitter: 0,
|
|
164
|
+
rtpPackets: 0,
|
|
165
|
+
ssci: 0, // Not avaliable
|
|
166
|
+
},
|
|
167
|
+
h264CodecProfile: 'BP',
|
|
168
|
+
isActiveSpeaker: true,
|
|
169
|
+
optimalFrameSize: 0, // Not avaliable
|
|
170
|
+
receivedFrameSize: 0,
|
|
171
|
+
receivedHeight: 0,
|
|
172
|
+
receivedKeyFrames: 0,
|
|
173
|
+
receivedKeyFramesForRequest: 0,
|
|
174
|
+
receivedKeyFramesSourceChange: 0,
|
|
175
|
+
receivedKeyFramesUnknown: 0,
|
|
176
|
+
receivedWidth: 0,
|
|
177
|
+
requestedFrameSize: 0,
|
|
178
|
+
requestedKeyFrames: 0,
|
|
179
179
|
};
|
|
180
180
|
|
|
181
181
|
export const emptyVideoTransmit = {
|
|
@@ -208,42 +208,42 @@ export const emptyVideoTransmit = {
|
|
|
208
208
|
stunPackets: 0, // Dont have access to it
|
|
209
209
|
transportType: 'UDP', // TODO: need to calculate
|
|
210
210
|
},
|
|
211
|
-
streams: [
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
211
|
+
streams: [],
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export const emptyVideoTransmitStream = {
|
|
215
|
+
common: {
|
|
216
|
+
codec: 'H264',
|
|
217
|
+
csi: [],
|
|
218
|
+
duplicateSsci: 0, // Not Avaliable
|
|
219
|
+
requestedBitrate: 0, // TODO: from remote SDP
|
|
220
|
+
requestedFrames: 0, // TODO: from remote SDP
|
|
221
|
+
rtpPackets: 0, // same as rtp packets
|
|
222
|
+
ssci: 0,
|
|
223
|
+
transmittedBitrate: 0, // TODO: get in the candidate pair
|
|
224
|
+
transmittedFrameRate: 0, // TODO: from track info
|
|
225
|
+
},
|
|
226
|
+
h264CodecProfile: 'BP', // TODO: from localSDP
|
|
227
|
+
isAvatar: false, // Not Avaliable
|
|
228
|
+
isHardwareEncoded: false, // Not Avaliable
|
|
229
|
+
localConfigurationChanges: 2, // Not Avaliable
|
|
230
|
+
maxFrameQp: 0, // Not Avaliable
|
|
231
|
+
maxNoiseLevel: 0, // Not Avaliable
|
|
232
|
+
minRegionQp: 0, // Not Avaliable
|
|
233
|
+
remoteConfigurationChanges: 0, // Not Avaliable
|
|
234
|
+
requestedFrameSize: 0, // TODO: from remote SDP
|
|
235
|
+
requestedKeyFrames: 0, // outbound Fir request
|
|
236
|
+
transmittedFrameSize: 0, // Not Avaliable
|
|
237
|
+
transmittedHeight: 0,
|
|
238
|
+
transmittedKeyFrames: 0, // Key frames encoded
|
|
239
|
+
transmittedKeyFramesClient: 0, // Not Avaliable
|
|
240
|
+
transmittedKeyFramesConfigurationChange: 0, // Not Avaliable
|
|
241
|
+
transmittedKeyFramesFeedback: 0, // Not Avaliable
|
|
242
|
+
transmittedKeyFramesLocalDrop: 0, // Not Avaliable
|
|
243
|
+
transmittedKeyFramesOtherLayer: 0, // Not Avaliable
|
|
244
|
+
transmittedKeyFramesPeriodic: 0, // Not Avaliable
|
|
245
|
+
transmittedKeyFramesSceneChange: 0, // Not Avaliable
|
|
246
|
+
transmittedKeyFramesStartup: 0, // Not Avaliable
|
|
247
|
+
transmittedKeyFramesUnknown: 0, // Not Avaliable
|
|
248
|
+
transmittedWidth: 0,
|
|
249
249
|
};
|
package/src/meeting/index.ts
CHANGED
|
@@ -7225,6 +7225,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
7225
7225
|
deviceUrl: this.deviceUrl,
|
|
7226
7226
|
uri: content.url,
|
|
7227
7227
|
resourceUrl: this.resourceUrl,
|
|
7228
|
+
shareInstanceId: this.localShareInstanceId,
|
|
7228
7229
|
})
|
|
7229
7230
|
.then(() => {
|
|
7230
7231
|
this.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
|
|
@@ -7327,6 +7328,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
7327
7328
|
deviceUrl: this.deviceUrl,
|
|
7328
7329
|
uri: content.url,
|
|
7329
7330
|
resourceUrl: this.resourceUrl,
|
|
7331
|
+
shareInstanceId: this.localShareInstanceId,
|
|
7330
7332
|
})
|
|
7331
7333
|
.catch((error) => {
|
|
7332
7334
|
LoggerProxy.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
package/src/meeting/request.ts
CHANGED
|
@@ -653,6 +653,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
653
653
|
* @param {String} options.deviceUrl Url of a device
|
|
654
654
|
* @param {String} options.resourceId Populated if you are paired to a device
|
|
655
655
|
* @param {String} options.uri floor grant uri
|
|
656
|
+
* @param {String} options.shareInstanceId id for current share
|
|
656
657
|
* @returns {Promise}
|
|
657
658
|
*/
|
|
658
659
|
changeMeetingFloor(
|
|
@@ -664,6 +665,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
664
665
|
resourceId: string;
|
|
665
666
|
uri: string;
|
|
666
667
|
annotationInfo: AnnotationInfo;
|
|
668
|
+
shareInstanceId: string;
|
|
667
669
|
}
|
|
668
670
|
| any
|
|
669
671
|
) {
|
|
@@ -694,6 +696,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
694
696
|
resourceUrl: options.resourceUrl,
|
|
695
697
|
};
|
|
696
698
|
|
|
699
|
+
if (options?.shareInstanceId) {
|
|
700
|
+
body.floor.shareInstanceId = options.shareInstanceId;
|
|
701
|
+
}
|
|
702
|
+
|
|
697
703
|
if (options?.resourceToken) {
|
|
698
704
|
body.resourceToken = options?.resourceToken;
|
|
699
705
|
}
|
package/src/meetings/index.ts
CHANGED
|
@@ -726,12 +726,20 @@ export default class Meetings extends WebexPlugin {
|
|
|
726
726
|
* @memberof Meetings
|
|
727
727
|
*/
|
|
728
728
|
public register() {
|
|
729
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
730
|
+
step: '[sdk] begin registration',
|
|
731
|
+
});
|
|
732
|
+
|
|
729
733
|
// @ts-ignore
|
|
730
734
|
if (!this.webex.canAuthorize) {
|
|
731
735
|
LoggerProxy.logger.error(
|
|
732
736
|
'Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize'
|
|
733
737
|
);
|
|
734
738
|
|
|
739
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
740
|
+
step: '[sdk] cannot authorize',
|
|
741
|
+
});
|
|
742
|
+
|
|
735
743
|
return Promise.reject(new Error('SDK cannot authorize'));
|
|
736
744
|
}
|
|
737
745
|
|
|
@@ -740,9 +748,17 @@ export default class Meetings extends WebexPlugin {
|
|
|
740
748
|
'Meetings:index#register --> INFO, Meetings plugin already registered'
|
|
741
749
|
);
|
|
742
750
|
|
|
751
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
752
|
+
step: '[sdk] already registered',
|
|
753
|
+
});
|
|
754
|
+
|
|
743
755
|
return Promise.resolve();
|
|
744
756
|
}
|
|
745
757
|
|
|
758
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
759
|
+
step: '[sdk] begin Promise.all()',
|
|
760
|
+
});
|
|
761
|
+
|
|
746
762
|
return Promise.all([
|
|
747
763
|
this.fetchUserPreferredWebexSite(),
|
|
748
764
|
this.getGeoHint(),
|
|
@@ -764,6 +780,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
764
780
|
MeetingsUtil.checkH264Support.call(this),
|
|
765
781
|
])
|
|
766
782
|
.then(() => {
|
|
783
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
784
|
+
step: '[sdk] end Promise.all()',
|
|
785
|
+
});
|
|
767
786
|
this.listenForEvents();
|
|
768
787
|
Trigger.trigger(
|
|
769
788
|
this,
|
|
@@ -773,6 +792,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
773
792
|
},
|
|
774
793
|
EVENT_TRIGGERS.MEETINGS_REGISTERED
|
|
775
794
|
);
|
|
795
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_STEP, {
|
|
796
|
+
step: '[sdk] registration complete, triggered MEETINGS_REGISTERED event',
|
|
797
|
+
});
|
|
776
798
|
this.registered = true;
|
|
777
799
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_SUCCESS);
|
|
778
800
|
})
|
package/src/meetings/util.ts
CHANGED
|
@@ -62,7 +62,7 @@ MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
|
62
62
|
if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
63
63
|
// turn discovery is not part of normal roap protocol and so we are not handling it
|
|
64
64
|
// through the usual roap state machine
|
|
65
|
-
meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);
|
|
65
|
+
meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message, 'from mercury');
|
|
66
66
|
} else {
|
|
67
67
|
const roapMessage = {
|
|
68
68
|
seq,
|
package/src/metrics/constants.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const BEHAVIORAL_METRICS = {
|
|
4
4
|
MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',
|
|
5
5
|
MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',
|
|
6
|
+
MEETINGS_REGISTRATION_STEP: 'meetings_registration_step',
|
|
6
7
|
MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',
|
|
7
8
|
MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',
|
|
8
9
|
JOIN_SUCCESS: 'js_sdk_join_success',
|
|
@@ -67,6 +68,7 @@ const BEHAVIORAL_METRICS = {
|
|
|
67
68
|
TURN_DISCOVERY_LATENCY: 'js_sdk_turn_discovery_latency',
|
|
68
69
|
ROAP_OFFER_TO_ANSWER_LATENCY: 'js_sdk_roap_offer_to_answer_latency',
|
|
69
70
|
ROAP_HTTP_RESPONSE_MISSING: 'js_sdk_roap_http_response_missing',
|
|
71
|
+
TURN_DISCOVERY_REQUIRES_OK: 'js_sdk_turn_discovery_requires_ok',
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
export {BEHAVIORAL_METRICS as default};
|