@webex/plugin-meetings 3.3.1-next.34 → 3.3.1-next.35

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.
@@ -209,7 +209,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
209
209
  sessionId: this.sessionId
210
210
  });
211
211
  },
212
- version: "3.3.1-next.34"
212
+ version: "3.3.1-next.35"
213
213
  });
214
214
  var _default = exports.default = Breakout;
215
215
  //# sourceMappingURL=breakout.js.map
@@ -1046,7 +1046,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
1046
1046
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1047
1047
  }
1048
1048
  },
1049
- version: "3.3.1-next.34"
1049
+ version: "3.3.1-next.35"
1050
1050
  });
1051
1051
  var _default = exports.default = Breakouts;
1052
1052
  //# sourceMappingURL=index.js.map
@@ -373,7 +373,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
373
373
  throw error;
374
374
  });
375
375
  },
376
- version: "3.3.1-next.34"
376
+ version: "3.3.1-next.35"
377
377
  });
378
378
  var _default = exports.default = SimultaneousInterpretation;
379
379
  //# sourceMappingURL=index.js.map
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
18
18
  languageCode: 'number',
19
19
  languageName: 'string'
20
20
  },
21
- version: "3.3.1-next.34"
21
+ version: "3.3.1-next.35"
22
22
  });
23
23
  var _default = exports.default = SILanguage;
24
24
  //# sourceMappingURL=siLanguage.js.map
@@ -269,8 +269,8 @@ var getVideoReceiverStreamMqa = exports.getVideoReceiverStreamMqa = function get
269
269
  videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
270
270
  var totalFrameReceivedInaMin = statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;
271
271
  var totalFrameDecodedInaMin = statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
272
- videoReceiverStream.common.receivedFrameRate = Math.round(totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0);
273
- videoReceiverStream.common.renderedFrameRate = Math.round(totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0);
272
+ videoReceiverStream.common.receivedFrameRate = Math.round(totalFrameReceivedInaMin ? totalFrameReceivedInaMin * 100 / 60 : 0);
273
+ videoReceiverStream.common.renderedFrameRate = Math.round(totalFrameDecodedInaMin ? totalFrameDecodedInaMin * 100 / 60 : 0);
274
274
  videoReceiverStream.common.framesDropped = statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;
275
275
  videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;
276
276
  videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;
@@ -368,7 +368,7 @@ var getVideoSenderStreamMqa = exports.getVideoSenderStreamMqa = function getVide
368
368
 
369
369
  // From tracks //TODO: calculate a proper one
370
370
  var totalFrameSentInaMin = statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
371
- videoSenderStream.common.transmittedFrameRate = Math.round(totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0);
371
+ videoSenderStream.common.transmittedFrameRate = Math.round(totalFrameSentInaMin ? totalFrameSentInaMin * 100 / 60 : 0);
372
372
  videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;
373
373
  videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;
374
374
  videoSenderStream.transmittedFrameSize = videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth / 256;
@@ -1 +1 @@
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","isMultistream","STATS","RECEIVE_DIRECTION","getLastTotalValue","getTotalValue","lastPacketsReceived","lastPacketsLost","lastBytesReceived","lastFecPacketsReceived","lastFecPacketsDiscarded","totalPacketsReceived","packetsLost","totalBytesReceived","totalFecPacketsReceived","totalFecPacketsDiscarded","common","direction","find","mediaType","isMain","multistreamEnabled","transportType","connectionType","local","transport","rtpPackets","totalPacketsLost","mediaHopByHopLost","rtpHopByHopLost","fecRecovered","fecPackets","rtpRecovered","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","maxRemoteLossRate","maxRoundTripTime","roundTripTime","totalBytesSentInaMin","getAudioSenderStreamMqa","_ref4","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","audioSenderStream","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","requestedBitrate","getVideoReceiverMqa","_ref5","_statsResults$Object$3","videoReceiver","lastRtxPacketsReceived","lastRtxBytesReceived","totalRtxPacketsReceived","totalRtxBytesReceived","totalBytesReceivedInaMin","totalRtxBytesReceivedInaMin","rtxPackets","rtxBitrate","getVideoReceiverStreamMqa","_ref6","_lastMqaDataSent$medi13","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_statsResults$mediaTy","_statsResults$mediaTy2","videoReceiverStream","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","isActiveSpeaker","lastActiveSpeakerTimestamp","performance","now","timeOrigin","MQA_INTERVAL","getVideoSenderMqa","_ref7","_statsResults$Object$4","videoSender","lastRtxPacketsSent","lastRtxBytesSent","availableOutgoingBitrate","totalRtxPacketsSent","totalRtxBytesSent","totalRtxBytesSentInaMin","getVideoSenderStreamMqa","_ref8","_lastMqaDataSent$medi21","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","videoSenderStream","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize","requestedFrameSize","isStreamRequested","_statsResults$mediaTy3","_statsResults$mediaTy4","lastUpdateTimestamp","lastRequestedUpdateTimestamp","isRequested"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {MQA_INTERVAL, 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 isMultistream,\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.common.multistreamEnabled = isMultistream;\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 = totalFecPacketsReceived - lastFecPacketsReceived;\n\n audioReceiver.common.rtpRecovered = 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 = ({\n audioSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\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.common.multistreamEnabled = isMultistream;\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\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n audioSender.common.maxRemoteLossRate =\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 audioSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\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 lastRtxPacketsReceived = getLastTotalValue('totalRtxPacketsReceived');\n const lastRtxBytesReceived = getLastTotalValue('totalRtxBytesReceived');\n\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n\n const totalRtxPacketsReceived = getTotalValue('totalRtxPacketsReceived');\n const totalRtxBytesReceived = getTotalValue('totalRtxBytesReceived');\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.multistreamEnabled = isMultistream;\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 const totalRtxBytesReceivedInaMin = totalRtxBytesReceived - lastRtxBytesReceived;\n\n videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtxPackets = totalRtxPacketsReceived - lastRtxPacketsReceived;\n videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin\n ? (totalRtxBytesReceivedInaMin * 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 videoReceiverStream.isActiveSpeaker =\n statsResults[mediaType][sendrecvType].isActiveSpeaker ||\n ((statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) > 0 &&\n performance.now() +\n performance.timeOrigin -\n (statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) <\n MQA_INTERVAL);\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\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 const lastRtxPacketsSent = getLastTotalValue('totalRtxPacketsSent');\n const lastRtxBytesSent = getLastTotalValue('totalRtxBytesSent');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n const totalBytesSent = getTotalValue('totalBytesSent');\n const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');\n const totalRtxPacketsSent = getTotalValue('totalRtxPacketsSent');\n const totalRtxBytesSent = getTotalValue('totalRtxBytesSent');\n\n videoSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoSender.common.common.multistreamEnabled = isMultistream;\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.maxRemoteLossRate =\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 const totalRtxBytesSentInaMin = totalRtxBytesSent - lastRtxBytesSent;\n\n videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n videoSender.common.rtxPackets = totalRtxPacketsSent - lastRtxPacketsSent;\n videoSender.common.rtxBitrate = totalRtxBytesSentInaMin ? (totalRtxBytesSentInaMin * 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 videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n videoSenderStream.requestedFrameSize =\n statsResults[mediaType][sendrecvType].requestedFrameSize || 0;\n};\n\n/**\n * Checks if stream stats should be updated based on request status and elapsed time.\n *\n * @param {Object} statsResults - Stats results object.\n * @param {string} mediaType - Media type (e.g., 'audio', 'video').\n * @param {string} direction - Stats direction (e.g., 'send', 'receive').\n * @returns {boolean} Whether stats should be updated.\n */\nexport const isStreamRequested = (\n statsResults: any,\n mediaType: string,\n direction: string\n): boolean => {\n const now = performance.timeOrigin + performance.now();\n const lastUpdateTimestamp = statsResults[mediaType][direction]?.lastRequestedUpdateTimestamp;\n const isRequested = statsResults[mediaType][direction]?.isRequested;\n\n return isRequested || (lastUpdateTimestamp && now - lastUpdateTimestamp < MQA_INTERVAL);\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","isMultistream","STATS","RECEIVE_DIRECTION","getLastTotalValue","getTotalValue","lastPacketsReceived","lastPacketsLost","lastBytesReceived","lastFecPacketsReceived","lastFecPacketsDiscarded","totalPacketsReceived","packetsLost","totalBytesReceived","totalFecPacketsReceived","totalFecPacketsDiscarded","common","direction","find","mediaType","isMain","multistreamEnabled","transportType","connectionType","local","transport","rtpPackets","totalPacketsLost","mediaHopByHopLost","rtpHopByHopLost","fecRecovered","fecPackets","rtpRecovered","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","maxRemoteLossRate","maxRoundTripTime","roundTripTime","totalBytesSentInaMin","getAudioSenderStreamMqa","_ref4","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","audioSenderStream","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","requestedBitrate","getVideoReceiverMqa","_ref5","_statsResults$Object$3","videoReceiver","lastRtxPacketsReceived","lastRtxBytesReceived","totalRtxPacketsReceived","totalRtxBytesReceived","totalBytesReceivedInaMin","totalRtxBytesReceivedInaMin","rtxPackets","rtxBitrate","getVideoReceiverStreamMqa","_ref6","_lastMqaDataSent$medi13","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_statsResults$mediaTy","_statsResults$mediaTy2","videoReceiverStream","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","isActiveSpeaker","lastActiveSpeakerTimestamp","performance","now","timeOrigin","MQA_INTERVAL","getVideoSenderMqa","_ref7","_statsResults$Object$4","videoSender","lastRtxPacketsSent","lastRtxBytesSent","availableOutgoingBitrate","totalRtxPacketsSent","totalRtxBytesSent","totalRtxBytesSentInaMin","getVideoSenderStreamMqa","_ref8","_lastMqaDataSent$medi21","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","videoSenderStream","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize","requestedFrameSize","isStreamRequested","_statsResults$mediaTy3","_statsResults$mediaTy4","lastUpdateTimestamp","lastRequestedUpdateTimestamp","isRequested"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {MQA_INTERVAL, 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 isMultistream,\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.common.multistreamEnabled = isMultistream;\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 = totalFecPacketsReceived - lastFecPacketsReceived;\n\n audioReceiver.common.rtpRecovered = 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 = ({\n audioSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\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.common.multistreamEnabled = isMultistream;\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\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n audioSender.common.maxRemoteLossRate =\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 audioSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\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 lastRtxPacketsReceived = getLastTotalValue('totalRtxPacketsReceived');\n const lastRtxBytesReceived = getLastTotalValue('totalRtxBytesReceived');\n\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n\n const totalRtxPacketsReceived = getTotalValue('totalRtxPacketsReceived');\n const totalRtxBytesReceived = getTotalValue('totalRtxBytesReceived');\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.multistreamEnabled = isMultistream;\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 const totalRtxBytesReceivedInaMin = totalRtxBytesReceived - lastRtxBytesReceived;\n\n videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtxPackets = totalRtxPacketsReceived - lastRtxPacketsReceived;\n videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin\n ? (totalRtxBytesReceivedInaMin * 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 * 100) / 60 : 0\n );\n videoReceiverStream.common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? (totalFrameDecodedInaMin * 100) / 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 videoReceiverStream.isActiveSpeaker =\n statsResults[mediaType][sendrecvType].isActiveSpeaker ||\n ((statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) > 0 &&\n performance.now() +\n performance.timeOrigin -\n (statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) <\n MQA_INTERVAL);\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\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 const lastRtxPacketsSent = getLastTotalValue('totalRtxPacketsSent');\n const lastRtxBytesSent = getLastTotalValue('totalRtxBytesSent');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n const totalBytesSent = getTotalValue('totalBytesSent');\n const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');\n const totalRtxPacketsSent = getTotalValue('totalRtxPacketsSent');\n const totalRtxBytesSent = getTotalValue('totalRtxBytesSent');\n\n videoSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoSender.common.common.multistreamEnabled = isMultistream;\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.maxRemoteLossRate =\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 const totalRtxBytesSentInaMin = totalRtxBytesSent - lastRtxBytesSent;\n\n videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n videoSender.common.rtxPackets = totalRtxPacketsSent - lastRtxPacketsSent;\n videoSender.common.rtxBitrate = totalRtxBytesSentInaMin ? (totalRtxBytesSentInaMin * 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 * 100) / 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 videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n videoSenderStream.requestedFrameSize =\n statsResults[mediaType][sendrecvType].requestedFrameSize || 0;\n};\n\n/**\n * Checks if stream stats should be updated based on request status and elapsed time.\n *\n * @param {Object} statsResults - Stats results object.\n * @param {string} mediaType - Media type (e.g., 'audio', 'video').\n * @param {string} direction - Stats direction (e.g., 'send', 'receive').\n * @returns {boolean} Whether stats should be updated.\n */\nexport const isStreamRequested = (\n statsResults: any,\n mediaType: string,\n direction: string\n): boolean => {\n const now = performance.timeOrigin + performance.now();\n const lastUpdateTimestamp = statsResults[mediaType][direction]?.lastRequestedUpdateTimestamp;\n const isRequested = statsResults[mediaType][direction]?.isRequested;\n\n return isRequested || (lastUpdateTimestamp && now - lastUpdateTimestamp < MQA_INTERVAL);\n};\n"],"mappings":"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"}
@@ -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: "3.3.1-next.34"
65
+ version: "3.3.1-next.35"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,7 +43,7 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.3.1-next.34",
46
+ "@webex/plugin-meetings": "3.3.1-next.35",
47
47
  "@webex/plugin-rooms": "3.3.1-next.9",
48
48
  "@webex/test-helper-chai": "3.3.1-next.8",
49
49
  "@webex/test-helper-mocha": "3.3.1-next.8",
@@ -70,7 +70,7 @@
70
70
  "@webex/internal-plugin-metrics": "3.3.1-next.8",
71
71
  "@webex/internal-plugin-support": "3.3.1-next.9",
72
72
  "@webex/internal-plugin-user": "3.3.1-next.8",
73
- "@webex/internal-plugin-voicea": "3.3.1-next.34",
73
+ "@webex/internal-plugin-voicea": "3.3.1-next.35",
74
74
  "@webex/media-helpers": "3.3.1-next.14",
75
75
  "@webex/plugin-people": "3.3.1-next.9",
76
76
  "@webex/plugin-rooms": "3.3.1-next.9",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.3.1-next.34"
94
+ "version": "3.3.1-next.35"
95
95
  }
@@ -343,10 +343,10 @@ export const getVideoReceiverStreamMqa = ({
343
343
  statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
344
344
 
345
345
  videoReceiverStream.common.receivedFrameRate = Math.round(
346
- totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0
346
+ totalFrameReceivedInaMin ? (totalFrameReceivedInaMin * 100) / 60 : 0
347
347
  );
348
348
  videoReceiverStream.common.renderedFrameRate = Math.round(
349
- totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0
349
+ totalFrameDecodedInaMin ? (totalFrameDecodedInaMin * 100) / 60 : 0
350
350
  );
351
351
 
352
352
  videoReceiverStream.common.framesDropped =
@@ -479,7 +479,7 @@ export const getVideoSenderStreamMqa = ({
479
479
  statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
480
480
 
481
481
  videoSenderStream.common.transmittedFrameRate = Math.round(
482
- totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0
482
+ totalFrameSentInaMin ? (totalFrameSentInaMin * 100) / 60 : 0
483
483
  );
484
484
  videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;
485
485
  videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;
@@ -941,8 +941,8 @@ describe('plugin-meetings', () => {
941
941
  await progressTime(MQA_INTERVAL);
942
942
 
943
943
  // 300 frames in 60 seconds = 5 frames per second
944
- assert.strictEqual(mqeData.videoTransmit[0].streams[0].common.transmittedFrameRate, 5);
945
- assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 5);
944
+ assert.strictEqual(mqeData.videoTransmit[0].streams[0].common.transmittedFrameRate, 500);
945
+ assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 500);
946
946
  });
947
947
  });
948
948
 
@@ -1925,7 +1925,7 @@ describe('plugin-meetings', () => {
1925
1925
  rtpPackets: 0,
1926
1926
  ssci: 0,
1927
1927
  transmittedBitrate: 133.33333333333334,
1928
- transmittedFrameRate: 0,
1928
+ transmittedFrameRate: 2,
1929
1929
  },
1930
1930
  h264CodecProfile: 'BP',
1931
1931
  isAvatar: false,