@webex/plugin-meetings 2.59.4 → 2.59.6-next.1

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.
Files changed (148) hide show
  1. package/dist/common/browser-detection.js +2 -2
  2. package/dist/common/browser-detection.js.map +1 -1
  3. package/dist/common/collection.js +2 -2
  4. package/dist/common/collection.js.map +1 -1
  5. package/dist/config.js +2 -2
  6. package/dist/config.js.map +1 -1
  7. package/dist/constants.js +0 -2
  8. package/dist/constants.js.map +1 -1
  9. package/dist/controls-options-manager/index.js +2 -2
  10. package/dist/controls-options-manager/index.js.map +1 -1
  11. package/dist/locus-info/controlsUtils.js +6 -6
  12. package/dist/locus-info/controlsUtils.js.map +1 -1
  13. package/dist/locus-info/index.js +18 -18
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/locus-info/parser.js +2 -2
  16. package/dist/locus-info/parser.js.map +1 -1
  17. package/dist/meeting/index.js +28 -51
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/request.js +2 -2
  20. package/dist/meeting/request.js.map +1 -1
  21. package/dist/meeting/util.js +4 -4
  22. package/dist/meeting/util.js.map +1 -1
  23. package/dist/meeting-info/collection.js +2 -2
  24. package/dist/meeting-info/collection.js.map +1 -1
  25. package/dist/meeting-info/meeting-info-v2.js +7 -1
  26. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  27. package/dist/meetings/collection.js +2 -2
  28. package/dist/meetings/collection.js.map +1 -1
  29. package/dist/members/index.js +2 -2
  30. package/dist/members/index.js.map +1 -1
  31. package/dist/metrics/constants.js +0 -2
  32. package/dist/metrics/constants.js.map +1 -1
  33. package/dist/metrics/index.js +2 -2
  34. package/dist/metrics/index.js.map +1 -1
  35. package/dist/reachability/index.js +9 -2
  36. package/dist/reachability/index.js.map +1 -1
  37. package/dist/statsAnalyzer/global.js +12 -4
  38. package/dist/statsAnalyzer/global.js.map +1 -1
  39. package/dist/statsAnalyzer/index.js +14 -56
  40. package/dist/statsAnalyzer/index.js.map +1 -1
  41. package/dist/statsAnalyzer/mqaUtil.js +15 -15
  42. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  43. package/package.json +22 -21
  44. package/src/config.ts +2 -2
  45. package/src/constants.ts +0 -2
  46. package/src/meeting/index.ts +0 -35
  47. package/src/meeting-info/meeting-info-v2.ts +1 -1
  48. package/src/metrics/constants.ts +0 -2
  49. package/src/statsAnalyzer/global.ts +10 -2
  50. package/src/statsAnalyzer/index.ts +17 -80
  51. package/test/unit/spec/meeting/index.js +6 -77
  52. package/test/unit/spec/meeting-info/meetinginfov2.js +1 -1
  53. package/test/unit/spec/stats-analyzer/index.js +0 -151
  54. package/dist/common/browser-detection.d.ts +0 -9
  55. package/dist/common/collection.d.ts +0 -48
  56. package/dist/common/config.d.ts +0 -2
  57. package/dist/common/errors/captcha-error.d.ts +0 -15
  58. package/dist/common/errors/intent-to-join.d.ts +0 -16
  59. package/dist/common/errors/join-meeting.d.ts +0 -17
  60. package/dist/common/errors/media.d.ts +0 -15
  61. package/dist/common/errors/parameter.d.ts +0 -15
  62. package/dist/common/errors/password-error.d.ts +0 -15
  63. package/dist/common/errors/permission.d.ts +0 -14
  64. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  65. package/dist/common/errors/reconnection.d.ts +0 -15
  66. package/dist/common/errors/stats.d.ts +0 -15
  67. package/dist/common/errors/webex-errors.d.ts +0 -81
  68. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  69. package/dist/common/events/events-scope.d.ts +0 -17
  70. package/dist/common/events/events.d.ts +0 -12
  71. package/dist/common/events/trigger-proxy.d.ts +0 -2
  72. package/dist/common/events/util.d.ts +0 -2
  73. package/dist/common/logs/logger-config.d.ts +0 -2
  74. package/dist/common/logs/logger-proxy.d.ts +0 -2
  75. package/dist/common/logs/request.d.ts +0 -34
  76. package/dist/common/queue.d.ts +0 -32
  77. package/dist/config.d.ts +0 -73
  78. package/dist/constants.d.ts +0 -926
  79. package/dist/controls-options-manager/constants.d.ts +0 -4
  80. package/dist/controls-options-manager/enums.d.ts +0 -5
  81. package/dist/controls-options-manager/index.d.ts +0 -120
  82. package/dist/controls-options-manager/util.d.ts +0 -7
  83. package/dist/index.d.ts +0 -4
  84. package/dist/locus-info/controlsUtils.d.ts +0 -2
  85. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  86. package/dist/locus-info/fullState.d.ts +0 -2
  87. package/dist/locus-info/hostUtils.d.ts +0 -2
  88. package/dist/locus-info/index.d.ts +0 -269
  89. package/dist/locus-info/infoUtils.d.ts +0 -2
  90. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  91. package/dist/locus-info/parser.d.ts +0 -212
  92. package/dist/locus-info/selfUtils.d.ts +0 -2
  93. package/dist/media/index.d.ts +0 -32
  94. package/dist/media/properties.d.ts +0 -108
  95. package/dist/media/util.d.ts +0 -2
  96. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  97. package/dist/meeting/effectsState.d.ts +0 -42
  98. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  99. package/dist/meeting/index.d.ts +0 -1621
  100. package/dist/meeting/muteState.d.ts +0 -116
  101. package/dist/meeting/request.d.ts +0 -255
  102. package/dist/meeting/state.d.ts +0 -9
  103. package/dist/meeting/util.d.ts +0 -2
  104. package/dist/meeting-info/collection.d.ts +0 -20
  105. package/dist/meeting-info/index.d.ts +0 -57
  106. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  107. package/dist/meeting-info/request.d.ts +0 -22
  108. package/dist/meeting-info/util.d.ts +0 -2
  109. package/dist/meeting-info/utilv2.d.ts +0 -2
  110. package/dist/meetings/collection.d.ts +0 -23
  111. package/dist/meetings/index.d.ts +0 -296
  112. package/dist/meetings/request.d.ts +0 -27
  113. package/dist/meetings/util.d.ts +0 -18
  114. package/dist/member/index.d.ts +0 -147
  115. package/dist/member/member.types.d.ts +0 -11
  116. package/dist/member/util.d.ts +0 -2
  117. package/dist/members/collection.d.ts +0 -24
  118. package/dist/members/index.d.ts +0 -298
  119. package/dist/members/request.d.ts +0 -50
  120. package/dist/members/util.d.ts +0 -2
  121. package/dist/metrics/config.d.ts +0 -169
  122. package/dist/metrics/constants.d.ts +0 -59
  123. package/dist/metrics/index.d.ts +0 -152
  124. package/dist/networkQualityMonitor/index.d.ts +0 -70
  125. package/dist/peer-connection-manager/index.d.ts +0 -6
  126. package/dist/peer-connection-manager/util.d.ts +0 -6
  127. package/dist/personal-meeting-room/index.d.ts +0 -47
  128. package/dist/personal-meeting-room/request.d.ts +0 -14
  129. package/dist/personal-meeting-room/util.d.ts +0 -2
  130. package/dist/reachability/index.d.ts +0 -139
  131. package/dist/reachability/request.d.ts +0 -35
  132. package/dist/reactions/reactions.d.ts +0 -4
  133. package/dist/reactions/reactions.type.d.ts +0 -32
  134. package/dist/reconnection-manager/index.d.ts +0 -112
  135. package/dist/recording-controller/enums.d.ts +0 -7
  136. package/dist/recording-controller/index.d.ts +0 -193
  137. package/dist/recording-controller/util.d.ts +0 -13
  138. package/dist/roap/collection.d.ts +0 -10
  139. package/dist/roap/handler.d.ts +0 -47
  140. package/dist/roap/index.d.ts +0 -116
  141. package/dist/roap/request.d.ts +0 -35
  142. package/dist/roap/state.d.ts +0 -9
  143. package/dist/roap/turnDiscovery.d.ts +0 -67
  144. package/dist/roap/util.d.ts +0 -2
  145. package/dist/statsAnalyzer/global.d.ts +0 -118
  146. package/dist/statsAnalyzer/index.d.ts +0 -193
  147. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  148. package/dist/transcription/index.d.ts +0 -64
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","getAudioReceiverMqa","_ref","audioReceiver","statsResults","lastMqaDataSent","mediaType","STATS","AUDIO_CORRELATE","sendrecvType","RECEIVE_DIRECTION","common","direction","transportType","connectionType","remote","transport","rtpPackets","totalPacketsReceived","streams","mediaHopByHopLost","totalPacketsLost","rtpHopByHopLost","maxRtpJitter","_max2","default","meanRtpJitter","_mean2","rtpJitter","fecRecovered","fecPacketsReceived","fecPacketsDiscarded","rtpEndToEndLost","framesDropped","totalSamplesDecoded","renderedFrameRate","framesReceived","totalSamplesReceived","concealedFrames","concealedSamples","receivedBitrate","totalBytesReceived","rtpBitrate","exports","getAudioSenderMqa","_ref2","audioSender","SEND_DIRECTION","local","maxRemoteJitter","meanRemoteJitter","totalPacketsSent","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","totalPacketsLostOnReceiver","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","totalBytesSent","transmittedBitrate","transmittedKeyFrames","totalKeyFramesEncoded","requestedKeyFrames","totalFirCount","getVideoReceiverMqa","_ref3","videoReceiver","_ref3$isShareStream","isShareStream","SHARE_CORRELATE","VIDEO_CORRELATE","totalPacketLoss","totalBytesReceivedInaMin","totalFrameReceivedInaMin","resolutions","totalFrameDecodedInaMin","framesDecoded","receivedFrameRate","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","keyFramesDecoded","totalPliCount","getVideoSenderMqa","_ref4","videoSender","_ref4$isShareStream","totalFrameSentInaMin","framesSent","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n audioReceiver.common.mediaHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n audioReceiver.common.rtpHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // @ts-ignore\n audioReceiver.streams[0].common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsDiscarded);\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost -\n fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples -\n lastMqaDataSent[mediaType][sendrecvType].concealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived) *\n 8) /\n 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n audioSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n audioSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n audioSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;\n\n audioSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // Hope by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n videoReceiver.common.mediaHopByHopLost = totalPacketLoss;\n videoReceiver.common.rtpHopByHopLost = totalPacketLoss;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;\n\n // calculate this values\n\n // @ts-ignore\n videoReceiver.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;\n // videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived;\n\n videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameReceivedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesReceived -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesReceived;\n const totalFrameDecodedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesDecoded -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin\n ? (totalFrameReceivedInaMin * 100) / 60\n : 0;\n videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin\n ? (totalFrameDecodedInaMin * 100) / 60\n : 0;\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults.resolutions[mediaType][sendrecvType].framesDropped -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDropped;\n videoReceiver.streams[0].receivedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoReceiver.streams[0].receivedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].height) /\n 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].keyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount -\n lastMqaDataSent[mediaType][sendrecvType].totalPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n videoSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n videoSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n videoSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n videoSender.streams[0].common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;\n\n videoSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesSent -\n (lastMqaDataSent.resolutions[mediaType][sendrecvType].framesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin\n ? (totalFrameSentInaMin * 100) / 60\n : 0;\n videoSender.streams[0].transmittedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoSender.streams[0].transmittedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].width) /\n 254;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_constants","getAudioReceiverMqa","_ref","audioReceiver","statsResults","lastMqaDataSent","mediaType","STATS","AUDIO_CORRELATE","sendrecvType","RECEIVE_DIRECTION","common","direction","transportType","connectionType","remote","transport","rtpPackets","totalPacketsReceived","streams","mediaHopByHopLost","totalPacketsLost","rtpHopByHopLost","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","fecRecovered","fecPacketsReceived","fecPacketsDiscarded","rtpEndToEndLost","framesDropped","totalSamplesDecoded","renderedFrameRate","framesReceived","totalSamplesReceived","concealedFrames","concealedSamples","receivedBitrate","totalBytesReceived","rtpBitrate","exports","getAudioSenderMqa","_ref2","audioSender","SEND_DIRECTION","local","maxRemoteJitter","meanRemoteJitter","totalPacketsSent","availableBitrate","availableOutgoingBitrate","totalpacketsLostForaMin","totalPacketsLostOnReceiver","remoteLossRate","maxRoundTripTime","meanRoundTripTime","roundTripTime","totalBytesSentInaMin","totalBytesSent","transmittedBitrate","transmittedKeyFrames","totalKeyFramesEncoded","requestedKeyFrames","totalFirCount","getVideoReceiverMqa","_ref3","videoReceiver","_ref3$isShareStream","isShareStream","SHARE_CORRELATE","VIDEO_CORRELATE","totalPacketLoss","totalBytesReceivedInaMin","totalFrameReceivedInaMin","resolutions","totalFrameDecodedInaMin","framesDecoded","receivedFrameRate","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","keyFramesDecoded","totalPliCount","getVideoSenderMqa","_ref4","videoSender","_ref4$isShareStream","totalFrameSentInaMin","framesSent","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\nexport const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n audioReceiver.common.common.direction = statsResults[mediaType].direction;\n audioReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;\n audioReceiver.common.mediaHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n audioReceiver.common.rtpHopByHopLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // @ts-ignore\n audioReceiver.streams[0].common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded -\n lastMqaDataSent[mediaType][sendrecvType].fecPacketsDiscarded);\n\n audioReceiver.streams[0].common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost -\n fecRecovered || 0;\n\n audioReceiver.streams[0].common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesDecoded || 0;\n audioReceiver.streams[0].common.renderedFrameRate =\n (audioReceiver.streams[0].common.framesDropped * 100) / 60 || 0;\n audioReceiver.streams[0].common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalSamplesReceived || 0;\n audioReceiver.streams[0].common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples -\n lastMqaDataSent[mediaType][sendrecvType].concealedSamples || 0;\n audioReceiver.streams[0].common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived) *\n 8) /\n 60 || 0;\n\n audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent}) => {\n const mediaType = STATS.AUDIO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n audioSender.common.common.direction = statsResults[mediaType].direction;\n audioSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n audioSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n audioSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n audioSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;\n\n audioSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n audioSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n videoReceiver.common.common.direction = statsResults[mediaType].direction;\n videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsReceived || 0;\n videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLost || 0;\n\n // Hope by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n videoReceiver.common.mediaHopByHopLost = totalPacketLoss;\n videoReceiver.common.rtpHopByHopLost = totalPacketLoss;\n\n // End to end packetloss is after recovery\n videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;\n\n // calculate this values\n\n // @ts-ignore\n videoReceiver.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;\n // videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesReceived;\n\n videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameReceivedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesReceived -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesReceived;\n const totalFrameDecodedInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesDecoded -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDecoded;\n\n videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin\n ? (totalFrameReceivedInaMin * 100) / 60\n : 0;\n videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin\n ? (totalFrameDecodedInaMin * 100) / 60\n : 0;\n\n videoReceiver.streams[0].common.framesDropped =\n statsResults.resolutions[mediaType][sendrecvType].framesDropped -\n lastMqaDataSent.resolutions[mediaType][sendrecvType].framesDropped;\n videoReceiver.streams[0].receivedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoReceiver.streams[0].receivedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].height) /\n 256;\n\n videoReceiver.streams[0].receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded -\n lastMqaDataSent[mediaType][sendrecvType].keyFramesDecoded || 0;\n videoReceiver.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount -\n lastMqaDataSent[mediaType][sendrecvType].totalPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n isShareStream = false,\n}) => {\n const mediaType = isShareStream ? STATS.SHARE_CORRELATE : STATS.VIDEO_CORRELATE;\n const sendrecvType = STATS.SEND_DIRECTION;\n\n videoSender.common.common.direction = statsResults[mediaType].direction;\n videoSender.common.transportType = statsResults.connectionType.local.transport[0];\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter =\n mean(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n videoSender.common.availableBitrate =\n statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalpacketsLostForaMin =\n statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsLostOnReceiver;\n\n videoSender.common.remoteLossRate =\n totalpacketsLostForaMin > 0\n ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)\n : 0; // This is the packets sent with in last min || 0;\n\n // @ts-ignore\n videoSender.common.maxRoundTripTime =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime =\n mean(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n videoSender.streams[0].common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent -\n lastMqaDataSent[mediaType][sendrecvType].totalPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n statsResults[mediaType][sendrecvType].totalBytesSent -\n lastMqaDataSent[mediaType][sendrecvType].totalBytesSent;\n\n videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;\n\n videoSender.streams[0].transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded -\n lastMqaDataSent[mediaType][sendrecvType].totalKeyFramesEncoded || 0;\n videoSender.streams[0].requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount -\n lastMqaDataSent[mediaType][sendrecvType].totalFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults.resolutions[mediaType][sendrecvType].framesSent -\n (lastMqaDataSent.resolutions[mediaType][sendrecvType].framesSent || 0);\n\n videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin\n ? (totalFrameSentInaMin * 100) / 60\n : 0;\n videoSender.streams[0].transmittedHeight =\n statsResults.resolutions[mediaType][sendrecvType].height;\n videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width;\n videoSender.streams[0].transmittedFrameSize =\n (statsResults.resolutions[mediaType][sendrecvType].height *\n statsResults.resolutions[mediaType][sendrecvType].width) /\n 254;\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "2.59.4",
4
3
  "description": "",
5
4
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
5
  "contributors": [
@@ -30,6 +29,7 @@
30
29
  "scripts": {
31
30
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist",
32
31
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
32
+ "deploy:npm": "yarn npm publish",
33
33
  "test:broken": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
34
34
  "test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
35
35
  "test:integration:broken": "webex-legacy-tools test --integration --runner mocha",
@@ -39,17 +39,17 @@
39
39
  "devDependencies": {
40
40
  "@babel/core": "^7.17.10",
41
41
  "@types/jsdom": "^21",
42
- "@webex/babel-config-legacy": "2.59.4",
43
- "@webex/eslint-config-legacy": "2.59.4",
44
- "@webex/jest-config-legacy": "2.59.4",
45
- "@webex/legacy-tools": "2.59.4",
46
- "@webex/plugin-meetings": "2.59.4",
47
- "@webex/plugin-rooms": "2.59.4",
48
- "@webex/test-helper-chai": "2.59.4",
49
- "@webex/test-helper-mocha": "2.59.4",
50
- "@webex/test-helper-mock-webex": "2.59.4",
51
- "@webex/test-helper-retry": "2.59.4",
52
- "@webex/test-helper-test-users": "2.59.4",
42
+ "@webex/babel-config-legacy": "^0.0.0",
43
+ "@webex/eslint-config-legacy": "^0.0.0",
44
+ "@webex/jest-config-legacy": "^0.0.0",
45
+ "@webex/legacy-tools": "^0.0.0",
46
+ "@webex/plugin-meetings": "^2.59.6-next.1",
47
+ "@webex/plugin-rooms": "^2.59.4-next.1",
48
+ "@webex/test-helper-chai": "^2.59.4-next.1",
49
+ "@webex/test-helper-mocha": "^2.59.4-next.1",
50
+ "@webex/test-helper-mock-webex": "^2.59.4-next.1",
51
+ "@webex/test-helper-retry": "^2.59.4-next.1",
52
+ "@webex/test-helper-test-users": "^2.59.4-next.1",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -60,15 +60,15 @@
60
60
  "typescript": "^4.7.4"
61
61
  },
62
62
  "dependencies": {
63
- "@webex/common": "2.59.4",
63
+ "@webex/common": "^2.59.4-next.1",
64
64
  "@webex/internal-media-core": "0.0.7-beta",
65
- "@webex/internal-plugin-device": "2.59.4",
66
- "@webex/internal-plugin-metrics": "2.59.4",
67
- "@webex/internal-plugin-support": "2.59.4",
68
- "@webex/internal-plugin-user": "2.59.4",
69
- "@webex/plugin-people": "2.59.4",
65
+ "@webex/internal-plugin-device": "^2.59.4-next.1",
66
+ "@webex/internal-plugin-metrics": "^2.59.4-next.1",
67
+ "@webex/internal-plugin-support": "^2.59.4-next.1",
68
+ "@webex/internal-plugin-user": "^2.59.4-next.1",
69
+ "@webex/plugin-people": "^2.59.4-next.1",
70
70
  "@webex/ts-sdp": "1.0.1",
71
- "@webex/webex-core": "2.59.4",
71
+ "@webex/webex-core": "^2.59.4-next.1",
72
72
  "bowser": "^2.11.0",
73
73
  "btoa": "^1.2.1",
74
74
  "dotenv": "^4.0.0",
@@ -79,5 +79,6 @@
79
79
  "sdp-transform": "^2.12.0",
80
80
  "uuid": "^3.3.2",
81
81
  "webrtc-adapter": "^7.7.0"
82
- }
83
- }
82
+ },
83
+ "version": "2.59.6-next.1"
84
+ }
package/src/config.ts CHANGED
@@ -88,8 +88,8 @@ export default {
88
88
  enableExtmap: false,
89
89
  experimental: {
90
90
  enableMediaNegotiatedEvent: false,
91
- enableUnifiedMeetings: true,
92
- enableAdhocMeetings: true,
91
+ enableUnifiedMeetings: false,
92
+ enableAdhocMeetings: false,
93
93
  enableTurnDiscovery: true,
94
94
  },
95
95
  },
package/src/constants.ts CHANGED
@@ -308,8 +308,6 @@ export const EVENT_TRIGGERS = {
308
308
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
309
309
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
310
310
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
311
- MEETING_NO_FRAMES_SENT: 'meeting:noFramesSent',
312
- MEETING_NO_VIDEO_ENCODED: 'meeting:noVideoEncoded',
313
311
  MEMBERS_UPDATE: 'members:update',
314
312
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
315
313
  MEMBERS_HOST_UPDATE: 'members:host:update',
@@ -3760,12 +3760,6 @@ export default class Meeting extends StatelessWebexPlugin {
3760
3760
  opened LLM web socket connection successfully.`
3761
3761
  );
3762
3762
 
3763
- if (!this.inMeetingActions.isClosedCaptionActive) {
3764
- LoggerProxy.logger.error(
3765
- `Meeting:index#receiveTranscription --> Transcription cannot be started until a licensed user enables it`
3766
- );
3767
- }
3768
-
3769
3763
  // retrieve and pass the payload
3770
3764
  this.transcription.subscribe((payload) => {
3771
3765
  Trigger.trigger(
@@ -4520,35 +4514,6 @@ export default class Meeting extends StatelessWebexPlugin {
4520
4514
  },
4521
4515
  });
4522
4516
  });
4523
- this.statsAnalyzer.on(StatsAnalyzerEvents.NO_VIDEO_ENCODED, (data) => {
4524
- Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.NO_VIDEO_ENCODED);
4525
- Trigger.trigger(
4526
- this,
4527
- {
4528
- file: 'meeting/index',
4529
- function: 'compareLastStatsResult',
4530
- },
4531
- EVENT_TRIGGERS.MEETING_NO_VIDEO_ENCODED,
4532
- data
4533
- );
4534
- });
4535
- this.statsAnalyzer.on(StatsAnalyzerEvents.NO_FRAMES_SENT, (data) => {
4536
- if (
4537
- (this.mediaProperties.mediaDirection?.sendVideo && data.mediaType === 'video') ||
4538
- (this.mediaProperties.mediaDirection?.sendShare && data.mediaType === 'share')
4539
- ) {
4540
- Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.NO_FRAMES_SENT);
4541
- Trigger.trigger(
4542
- this,
4543
- {
4544
- file: 'meeting/index',
4545
- function: 'compareLastStatsResult',
4546
- },
4547
- EVENT_TRIGGERS.MEETING_NO_FRAMES_SENT,
4548
- data
4549
- );
4550
- }
4551
- });
4552
4517
  };
4553
4518
 
4554
4519
  /**
@@ -151,7 +151,7 @@ export default class MeetingInfoV2 {
151
151
  };
152
152
 
153
153
  return this.webex
154
- .request(conversationUrl)
154
+ .request({uri: conversationUrl, qs: {includeParticipants: true}, disableTransform: true})
155
155
  .then(({body: conversation}) => {
156
156
  const body = {
157
157
  title: conversation.displayName,
@@ -1,8 +1,6 @@
1
1
  // Metrics constants ----------------------------------------------------------
2
2
 
3
3
  const BEHAVIORAL_METRICS = {
4
- NO_FRAMES_SENT: 'js_sdk_meetings_no_frames_sent',
5
- NO_VIDEO_ENCODED: 'js_sdk_meetings_no_video_encoded',
6
4
  MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',
7
5
  MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',
8
6
  MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',
@@ -76,11 +76,20 @@ const STATS_DEFAULT = {
76
76
  },
77
77
  },
78
78
  resolutions: {
79
+ audio: {
80
+ send: {
81
+ width: 0,
82
+ height: 0,
83
+ },
84
+ recv: {
85
+ width: 0,
86
+ height: 0,
87
+ },
88
+ },
79
89
  video: {
80
90
  send: {
81
91
  width: 0,
82
92
  height: 0,
83
- framesSent: 0,
84
93
  },
85
94
  recv: {
86
95
  width: 0,
@@ -91,7 +100,6 @@ const STATS_DEFAULT = {
91
100
  send: {
92
101
  width: 0,
93
102
  height: 0,
94
- framesSent: 0,
95
103
  },
96
104
  recv: {
97
105
  width: 0,
@@ -25,8 +25,6 @@ import {
25
25
 
26
26
  export const EVENTS = {
27
27
  MEDIA_QUALITY: 'MEDIA_QUALITY',
28
- NO_FRAMES_SENT: 'NO_FRAMES_SENT',
29
- NO_VIDEO_ENCODED: 'NO_VIDEO_ENCODED',
30
28
  LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
31
29
  LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',
32
30
  REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
@@ -422,6 +420,9 @@ export class StatsAnalyzer extends EventsScope {
422
420
  case 'inbound-rtp':
423
421
  this.processInboundRTPResult(getStatsResult, type);
424
422
  break;
423
+ case 'track':
424
+ this.processTrackResult(getStatsResult, type);
425
+ break;
425
426
  case 'remote-inbound-rtp':
426
427
  case 'remote-outbound-rtp':
427
428
  // @ts-ignore
@@ -519,7 +520,7 @@ export class StatsAnalyzer extends EventsScope {
519
520
 
520
521
  if (currentValue - previousValue > 0) {
521
522
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
522
- } else if (currentValue === previousValue && currentValue >= 0) {
523
+ } else if (currentValue === previousValue && currentValue > 0) {
523
524
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
524
525
  }
525
526
 
@@ -634,25 +635,14 @@ export class StatsAnalyzer extends EventsScope {
634
635
  LoggerProxy.logger.info(
635
636
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets sent`
636
637
  );
637
- } else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {
638
+ } else {
638
639
  if (
639
640
  currentStats.framesEncoded === previousStats.framesEncoded ||
640
641
  currentStats.framesEncoded === 0
641
642
  ) {
642
- this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;
643
643
  LoggerProxy.logger.info(
644
644
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames Encoded`
645
645
  );
646
- this.emit(
647
- {
648
- file: 'statsAnalyzer',
649
- function: 'compareLastStatsResult',
650
- },
651
- EVENTS.NO_VIDEO_ENCODED,
652
- {
653
- mediaType,
654
- }
655
- );
656
646
  }
657
647
 
658
648
  if (
@@ -664,28 +654,8 @@ export class StatsAnalyzer extends EventsScope {
664
654
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames sent`
665
655
  );
666
656
  }
667
-
668
- // Video is encoded but frames are not sent
669
- if (
670
- currentStats.framesEncoded !== previousStats.framesEncoded &&
671
- (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)
672
- ) {
673
- this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;
674
- LoggerProxy.logger.info(
675
- `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames sent even though frames are encoded`
676
- );
677
- this.emit(
678
- {
679
- file: 'statsAnalyzer',
680
- function: 'compareLastStatsResult',
681
- },
682
- EVENTS.NO_FRAMES_SENT,
683
- {
684
- mediaType,
685
- }
686
- );
687
- }
688
657
  }
658
+
689
659
  this.emitStartStopEvents(
690
660
  mediaType,
691
661
  previousStats.framesSent,
@@ -761,25 +731,14 @@ export class StatsAnalyzer extends EventsScope {
761
731
  LoggerProxy.logger.info(
762
732
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} RTP packets sent`
763
733
  );
764
- } else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {
734
+ } else {
765
735
  if (
766
736
  currentStats.framesEncoded === previousStats.framesEncoded ||
767
737
  currentStats.framesEncoded === 0
768
738
  ) {
769
- this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;
770
739
  LoggerProxy.logger.info(
771
740
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames getting encoded`
772
741
  );
773
- this.emit(
774
- {
775
- file: 'statsAnalyzer',
776
- function: 'compareLastStatsResult',
777
- },
778
- EVENTS.NO_VIDEO_ENCODED,
779
- {
780
- mediaType,
781
- }
782
- );
783
742
  }
784
743
 
785
744
  if (
@@ -791,27 +750,6 @@ export class StatsAnalyzer extends EventsScope {
791
750
  `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} frames sent`
792
751
  );
793
752
  }
794
-
795
- // Share video is encoded but frames are not sent
796
- if (
797
- currentStats.framesEncoded !== previousStats.framesEncoded &&
798
- (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)
799
- ) {
800
- this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;
801
- LoggerProxy.logger.info(
802
- `StatsAnalyzer:index#compareLastStatsResult --> No ${mediaType} Frames sent even though frames are being encoded`
803
- );
804
- this.emit(
805
- {
806
- file: 'statsAnalyzer',
807
- function: 'compareLastStatsResult',
808
- },
809
- EVENTS.NO_FRAMES_SENT,
810
- {
811
- mediaType,
812
- }
813
- );
814
- }
815
753
  }
816
754
 
817
755
  // TODO:need to check receive share value
@@ -943,7 +881,6 @@ export class StatsAnalyzer extends EventsScope {
943
881
  const mediaType = type || STATS.AUDIO_CORRELATE;
944
882
  const sendrecvType = STATS.SEND_DIRECTION;
945
883
 
946
- this.processTrackResult(result, type, sendrecvType);
947
884
  if (result.bytesSent) {
948
885
  let kilobytes = 0;
949
886
 
@@ -967,6 +904,7 @@ export class StatsAnalyzer extends EventsScope {
967
904
 
968
905
  this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
969
906
  this.statsResults[mediaType].bytesSent = kilobytes;
907
+
970
908
  this.statsResults[mediaType][sendrecvType].framesEncoded =
971
909
  result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
972
910
  this.statsResults[mediaType][sendrecvType].keyFramesEncoded =
@@ -1017,7 +955,6 @@ export class StatsAnalyzer extends EventsScope {
1017
955
  const mediaType = type || STATS.AUDIO_CORRELATE;
1018
956
  const sendrecvType = STATS.RECEIVE_DIRECTION;
1019
957
 
1020
- this.processTrackResult(result, type, sendrecvType);
1021
958
  if (result.bytesReceived) {
1022
959
  let kilobytes = 0;
1023
960
 
@@ -1221,29 +1158,29 @@ export class StatsAnalyzer extends EventsScope {
1221
1158
  * @private
1222
1159
  * @param {*} result
1223
1160
  * @param {*} mediaType
1224
- * @param {*} sendrecvType
1225
1161
  * @returns {void}
1226
1162
  * @memberof StatsAnalyzer
1227
1163
  */
1228
- private processTrackResult(result: any, mediaType: any, sendrecvType: any) {
1229
- if (!result || mediaType === STATS.AUDIO_CORRELATE) {
1230
- return;
1231
- }
1232
- if (result.type !== 'inbound-rtp' && result.type !== 'outbound-rtp') {
1164
+ private processTrackResult(result: any, mediaType: any) {
1165
+ if (!result || result.type !== 'track') {
1233
1166
  return;
1234
1167
  }
1168
+ if (result.type !== 'track') return;
1169
+
1170
+ const sendrecvType =
1171
+ result.remoteSource === true ? STATS.RECEIVE_DIRECTION : STATS.SEND_DIRECTION;
1172
+
1235
1173
  if (result.frameWidth && result.frameHeight) {
1236
1174
  this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
1237
1175
  this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
1176
+ this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
1177
+ this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
1238
1178
  }
1239
1179
 
1240
1180
  if (sendrecvType === STATS.RECEIVE_DIRECTION) {
1241
1181
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
1242
1182
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
1243
1183
  this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
1244
- } else if (sendrecvType === STATS.SEND_DIRECTION) {
1245
- this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
1246
- this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
1247
1184
  }
1248
1185
 
1249
1186
  if (result.trackIdentifier && mediaType !== STATS.AUDIO_CORRELATE) {
@@ -1329,71 +1329,6 @@ describe('plugin-meetings', () => {
1329
1329
  data: {intervalData: fakeData, networkType: 'wifi'},
1330
1330
  });
1331
1331
  });
1332
- it('NO_FRAMES_SENT triggers "meeting:noFramesSent" event and sends metrics', async () => {
1333
- meeting.mediaProperties.mediaDirection = {sendVideo: true};
1334
- statsAnalyzerStub.emit(
1335
- {file: 'test', function: 'test'},
1336
- StatsAnalyzerModule.EVENTS.NO_FRAMES_SENT,
1337
- {mediaType: 'video'}
1338
- );
1339
-
1340
- assert.calledWith(
1341
- TriggerProxy.trigger,
1342
- sinon.match.instanceOf(Meeting),
1343
- {
1344
- file: 'meeting/index',
1345
- function: 'compareLastStatsResult',
1346
- },
1347
- EVENT_TRIGGERS.MEETING_NO_FRAMES_SENT,
1348
- {
1349
- mediaType: 'video',
1350
- }
1351
- );
1352
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.NO_FRAMES_SENT);
1353
- });
1354
- it('NO_FRAMES_SENT triggers "meeting:noFramesSent" event and sends metrics for share', async () => {
1355
- meeting.mediaProperties.mediaDirection = {sendShare: true};
1356
- statsAnalyzerStub.emit(
1357
- {file: 'test', function: 'test'},
1358
- StatsAnalyzerModule.EVENTS.NO_FRAMES_SENT,
1359
- {mediaType: 'share'}
1360
- );
1361
-
1362
- assert.calledWith(
1363
- TriggerProxy.trigger,
1364
- sinon.match.instanceOf(Meeting),
1365
- {
1366
- file: 'meeting/index',
1367
- function: 'compareLastStatsResult',
1368
- },
1369
- EVENT_TRIGGERS.MEETING_NO_FRAMES_SENT,
1370
- {
1371
- mediaType: 'share',
1372
- }
1373
- );
1374
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.NO_FRAMES_SENT);
1375
- });
1376
- it('NO_VIDEO_ENCODED triggers "meeting:noVideoEncoded" event and sends metrics', async () => {
1377
- statsAnalyzerStub.emit(
1378
- {file: 'test', function: 'test'},
1379
- StatsAnalyzerModule.EVENTS.NO_VIDEO_ENCODED,
1380
- {mediaType: 'video'}
1381
- );
1382
-
1383
- assert.calledWith(
1384
- TriggerProxy.trigger,
1385
- sinon.match.instanceOf(Meeting),
1386
- {
1387
- file: 'meeting/index',
1388
- function: 'compareLastStatsResult',
1389
- },
1390
- EVENT_TRIGGERS.MEETING_NO_VIDEO_ENCODED,
1391
- {
1392
- mediaType: 'video',
1393
- }
1394
- );
1395
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.NO_VIDEO_ENCODED);
1396
- });
1397
1332
  });
1398
1333
  });
1399
1334
  describe('#acknowledge', () => {
@@ -3670,17 +3605,14 @@ describe('plugin-meetings', () => {
3670
3605
  describe('#setUpLocusServicesListener', () => {
3671
3606
  it('listens to the locus services update event', (done) => {
3672
3607
  const newLocusServices = {
3673
- services: {
3674
- record: {
3675
- url: 'url',
3608
+ services: {
3609
+ record: {
3610
+ url: 'url',
3611
+ }
3676
3612
  },
3677
- },
3678
3613
  };
3679
3614
 
3680
- meeting.recordingController = {
3681
- setServiceUrl: sinon.stub().returns(undefined),
3682
- setSessionId: sinon.stub().returns(undefined),
3683
- };
3615
+ meeting.recordingController = {setServiceUrl: sinon.stub().returns(undefined), setSessionId: sinon.stub().returns(undefined)};
3684
3616
 
3685
3617
  meeting.locusInfo.emit(
3686
3618
  {function: 'test', file: 'test'},
@@ -3688,10 +3620,7 @@ describe('plugin-meetings', () => {
3688
3620
  newLocusServices
3689
3621
  );
3690
3622
 
3691
- assert.calledWith(
3692
- meeting.recordingController.setServiceUrl,
3693
- newLocusServices.services.record.url
3694
- );
3623
+ assert.calledWith(meeting.recordingController.setServiceUrl, newLocusServices.services.record.url);
3695
3624
  assert.calledOnce(meeting.recordingController.setSessionId);
3696
3625
  done();
3697
3626
  });
@@ -354,7 +354,7 @@ describe('plugin-meetings', () => {
354
354
 
355
355
  assert.calledWith(
356
356
  webex.request,
357
- conversationUrl,
357
+ {uri:conversationUrl, qs: {includeParticipants: true}, disableTransform: true}
358
358
  )
359
359
 
360
360
  assert.calledWith(webex.request, {