@webex/plugin-meetings 3.3.1 → 3.4.0-next.2

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 (131) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +7 -2
  3. package/dist/breakouts/index.js.map +1 -1
  4. package/dist/constants.js +11 -4
  5. package/dist/constants.js.map +1 -1
  6. package/dist/interpretation/index.js +1 -1
  7. package/dist/interpretation/siLanguage.js +1 -1
  8. package/dist/locus-info/selfUtils.js +0 -5
  9. package/dist/locus-info/selfUtils.js.map +1 -1
  10. package/dist/media/MediaConnectionAwaiter.js +70 -15
  11. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  12. package/dist/media/index.js +12 -0
  13. package/dist/media/index.js.map +1 -1
  14. package/dist/meeting/connectionStateHandler.js +67 -0
  15. package/dist/meeting/connectionStateHandler.js.map +1 -0
  16. package/dist/meeting/index.js +554 -358
  17. package/dist/meeting/index.js.map +1 -1
  18. package/dist/meeting/locusMediaRequest.js +7 -0
  19. package/dist/meeting/locusMediaRequest.js.map +1 -1
  20. package/dist/meeting/muteState.js +6 -1
  21. package/dist/meeting/muteState.js.map +1 -1
  22. package/dist/meeting/util.js +1 -0
  23. package/dist/meeting/util.js.map +1 -1
  24. package/dist/meeting-info/index.js +4 -4
  25. package/dist/meeting-info/index.js.map +1 -1
  26. package/dist/meeting-info/meeting-info-v2.js +2 -2
  27. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  28. package/dist/meeting-info/util.js +17 -17
  29. package/dist/meeting-info/util.js.map +1 -1
  30. package/dist/meeting-info/utilv2.js +16 -16
  31. package/dist/meeting-info/utilv2.js.map +1 -1
  32. package/dist/meetings/collection.js +1 -1
  33. package/dist/meetings/collection.js.map +1 -1
  34. package/dist/meetings/index.js +37 -33
  35. package/dist/meetings/index.js.map +1 -1
  36. package/dist/meetings/meetings.types.js +8 -0
  37. package/dist/meetings/meetings.types.js.map +1 -1
  38. package/dist/meetings/util.js +3 -2
  39. package/dist/meetings/util.js.map +1 -1
  40. package/dist/metrics/constants.js +2 -1
  41. package/dist/metrics/constants.js.map +1 -1
  42. package/dist/metrics/index.js +57 -0
  43. package/dist/metrics/index.js.map +1 -1
  44. package/dist/personal-meeting-room/index.js +1 -1
  45. package/dist/personal-meeting-room/index.js.map +1 -1
  46. package/dist/reachability/clusterReachability.js +108 -53
  47. package/dist/reachability/clusterReachability.js.map +1 -1
  48. package/dist/reachability/index.js +415 -56
  49. package/dist/reachability/index.js.map +1 -1
  50. package/dist/types/constants.d.ts +11 -3
  51. package/dist/types/media/MediaConnectionAwaiter.d.ts +24 -4
  52. package/dist/types/meeting/connectionStateHandler.d.ts +30 -0
  53. package/dist/types/meeting/index.d.ts +27 -8
  54. package/dist/types/meeting/locusMediaRequest.d.ts +2 -0
  55. package/dist/types/meeting-info/index.d.ts +3 -2
  56. package/dist/types/meeting-info/meeting-info-v2.d.ts +3 -2
  57. package/dist/types/meeting-info/util.d.ts +5 -4
  58. package/dist/types/meeting-info/utilv2.d.ts +3 -2
  59. package/dist/types/meetings/collection.d.ts +3 -2
  60. package/dist/types/meetings/index.d.ts +4 -3
  61. package/dist/types/meetings/meetings.types.d.ts +9 -0
  62. package/dist/types/metrics/constants.d.ts +1 -0
  63. package/dist/types/metrics/index.d.ts +15 -0
  64. package/dist/types/reachability/clusterReachability.d.ts +31 -3
  65. package/dist/types/reachability/index.d.ts +93 -2
  66. package/dist/webinar/index.js +1 -1
  67. package/package.json +23 -23
  68. package/src/breakouts/index.ts +7 -1
  69. package/src/constants.ts +13 -17
  70. package/src/locus-info/selfUtils.ts +0 -5
  71. package/src/media/MediaConnectionAwaiter.ts +89 -14
  72. package/src/media/index.ts +13 -0
  73. package/src/meeting/connectionStateHandler.ts +65 -0
  74. package/src/meeting/index.ts +532 -295
  75. package/src/meeting/locusMediaRequest.ts +5 -0
  76. package/src/meeting/muteState.ts +6 -1
  77. package/src/meeting/util.ts +1 -0
  78. package/src/meeting-info/index.ts +9 -6
  79. package/src/meeting-info/meeting-info-v2.ts +4 -4
  80. package/src/meeting-info/util.ts +23 -28
  81. package/src/meeting-info/utilv2.ts +18 -24
  82. package/src/meetings/collection.ts +3 -3
  83. package/src/meetings/index.ts +39 -40
  84. package/src/meetings/meetings.types.ts +11 -0
  85. package/src/meetings/util.ts +5 -4
  86. package/src/metrics/constants.ts +1 -0
  87. package/src/metrics/index.ts +44 -0
  88. package/src/personal-meeting-room/index.ts +2 -2
  89. package/src/reachability/clusterReachability.ts +86 -25
  90. package/src/reachability/index.ts +316 -27
  91. package/test/unit/spec/breakouts/index.ts +51 -32
  92. package/test/unit/spec/locus-info/selfUtils.js +25 -23
  93. package/test/unit/spec/media/MediaConnectionAwaiter.ts +131 -32
  94. package/test/unit/spec/media/index.ts +42 -27
  95. package/test/unit/spec/meeting/connectionStateHandler.ts +102 -0
  96. package/test/unit/spec/meeting/index.js +762 -179
  97. package/test/unit/spec/meeting/locusMediaRequest.ts +7 -0
  98. package/test/unit/spec/meeting/muteState.js +24 -0
  99. package/test/unit/spec/meeting-info/index.js +4 -4
  100. package/test/unit/spec/meeting-info/meetinginfov2.js +24 -28
  101. package/test/unit/spec/meeting-info/request.js +2 -2
  102. package/test/unit/spec/meeting-info/utilv2.js +41 -49
  103. package/test/unit/spec/meetings/index.js +14 -0
  104. package/test/unit/spec/metrics/index.js +126 -0
  105. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -2
  106. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -2
  107. package/test/unit/spec/reachability/clusterReachability.ts +116 -22
  108. package/test/unit/spec/reachability/index.ts +1153 -84
  109. package/test/unit/spec/rtcMetrics/index.ts +1 -0
  110. package/dist/mediaQualityMetrics/config.js +0 -321
  111. package/dist/mediaQualityMetrics/config.js.map +0 -1
  112. package/dist/networkQualityMonitor/index.js +0 -227
  113. package/dist/networkQualityMonitor/index.js.map +0 -1
  114. package/dist/statsAnalyzer/global.js +0 -44
  115. package/dist/statsAnalyzer/global.js.map +0 -1
  116. package/dist/statsAnalyzer/index.js +0 -1072
  117. package/dist/statsAnalyzer/index.js.map +0 -1
  118. package/dist/statsAnalyzer/mqaUtil.js +0 -368
  119. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  120. package/dist/types/mediaQualityMetrics/config.d.ts +0 -247
  121. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  122. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  123. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  124. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  125. package/src/mediaQualityMetrics/config.ts +0 -255
  126. package/src/networkQualityMonitor/index.ts +0 -211
  127. package/src/statsAnalyzer/global.ts +0 -37
  128. package/src/statsAnalyzer/index.ts +0 -1318
  129. package/src/statsAnalyzer/mqaUtil.ts +0 -463
  130. package/test/unit/spec/networkQualityMonitor/index.js +0 -99
  131. package/test/unit/spec/stats-analyzer/index.js +0 -1819
@@ -1,48 +0,0 @@
1
- export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
2
- audioReceiver: any;
3
- statsResults: any;
4
- lastMqaDataSent: any;
5
- baseMediaType: any;
6
- }) => void;
7
- export declare const getAudioReceiverStreamMqa: ({ audioReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
8
- audioReceiverStream: any;
9
- statsResults: any;
10
- lastMqaDataSent: any;
11
- mediaType: any;
12
- }) => void;
13
- export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, baseMediaType }: {
14
- audioSender: any;
15
- statsResults: any;
16
- lastMqaDataSent: any;
17
- baseMediaType: any;
18
- }) => void;
19
- export declare const getAudioSenderStreamMqa: ({ audioSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
20
- audioSenderStream: any;
21
- statsResults: any;
22
- lastMqaDataSent: any;
23
- mediaType: any;
24
- }) => void;
25
- export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
26
- videoReceiver: any;
27
- statsResults: any;
28
- lastMqaDataSent: any;
29
- baseMediaType: any;
30
- }) => void;
31
- export declare const getVideoReceiverStreamMqa: ({ videoReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
32
- videoReceiverStream: any;
33
- statsResults: any;
34
- lastMqaDataSent: any;
35
- mediaType: any;
36
- }) => void;
37
- export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, baseMediaType }: {
38
- videoSender: any;
39
- statsResults: any;
40
- lastMqaDataSent: any;
41
- baseMediaType: any;
42
- }) => void;
43
- export declare const getVideoSenderStreamMqa: ({ videoSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
44
- videoSenderStream: any;
45
- statsResults: any;
46
- lastMqaDataSent: any;
47
- mediaType: any;
48
- }) => void;
@@ -1,255 +0,0 @@
1
- export const emptyMqaInterval = {
2
- audioReceive: [],
3
- audioTransmit: [],
4
- intervalMetadata: {
5
- peerReflexiveIP: '0.0.0.0',
6
- peripherals: [],
7
- processAverageCPU: 0,
8
- processMaximumCPU: 0,
9
- systemAverageCPU: 0,
10
- systemMaximumCPU: 0,
11
- },
12
- networkType: '',
13
- intervalNumber: 0,
14
- videoReceive: [],
15
- videoTransmit: [],
16
- };
17
-
18
- export const emptyAudioReceive = {
19
- common: {
20
- common: {
21
- direction: 'inactive',
22
- isMain: true,
23
- mariFecEnabled: false,
24
- mariRtxEnabled: false,
25
- mariQosEnabled: false,
26
- mariLiteEnabled: false,
27
- multistreamEnabled: false,
28
- },
29
- dtlsBitrate: 0,
30
- dtlsPackets: 0,
31
- fecBitrate: 0,
32
- fecPackets: 0,
33
- maxBitrate: 0,
34
- mediaHopByHopLost: 0,
35
- rtcpBitrate: 0,
36
- rtcpPackets: 0,
37
- rtpBitrate: 0,
38
- rtpHopByHopLost: 0,
39
- rtpPackets: 0,
40
- rtpRecovered: 0,
41
- rtxBitrate: 0,
42
- rtxPackets: 0,
43
- srtcpUnprotectErrors: 0,
44
- srtpUnprotectErrors: 0,
45
- stunBitrate: 0,
46
- stunPackets: 0,
47
- transportType: 'UDP',
48
- },
49
- streams: [],
50
- };
51
-
52
- export const emptyAudioReceiveStream = {
53
- common: {
54
- codec: 'opus',
55
- concealedFrames: 0,
56
- csi: [],
57
- maxConcealRunLength: 0,
58
- optimalBitrate: 0,
59
- optimalFrameRate: 0,
60
- receivedBitrate: 0,
61
- receivedFrameRate: 0,
62
- renderedFrameRate: 0,
63
- requestedBitrate: 0,
64
- requestedFrameRate: 0,
65
- rtpEndToEndLost: 0,
66
- maxRtpJitter: 0,
67
- meanRtpJitter: 0,
68
- rtpPackets: 0,
69
- ssci: 0,
70
- },
71
- };
72
-
73
- export const emptyAudioTransmit = {
74
- common: {
75
- availableBitrate: 0,
76
- common: {
77
- direction: 'inactive',
78
- isMain: true,
79
- mariFecEnabled: false,
80
- mariRtxEnabled: false,
81
- mariQosEnabled: false,
82
- mariLiteEnabled: false,
83
- multistreamEnabled: false,
84
- },
85
- dtlsBitrate: 0,
86
- dtlsPackets: 0,
87
- fecBitrate: 0,
88
- fecPackets: 0,
89
- maxBitrate: 0,
90
- queueDelay: 0,
91
- remoteJitter: 0,
92
- remoteLossRate: 0,
93
- roundTripTime: 0,
94
- rtcpBitrate: 0,
95
- rtcpPackets: 0,
96
- rtpBitrate: 0,
97
- rtpPackets: 0,
98
- rtxBitrate: 0,
99
- rtxPackets: 0,
100
- stunBitrate: 0,
101
- stunPackets: 0,
102
- transportType: 'UDP',
103
- },
104
- streams: [],
105
- };
106
-
107
- export const emptyAudioTransmitStream = {
108
- common: {
109
- codec: 'opus',
110
- csi: [],
111
- requestedBitrate: 0,
112
- requestedFrames: 0,
113
- rtpPackets: 0,
114
- ssci: 0,
115
- transmittedBitrate: 0,
116
- transmittedFrameRate: 0,
117
- },
118
- };
119
-
120
- export const emptyVideoReceive = {
121
- common: {
122
- common: {
123
- direction: 'inactive',
124
- isMain: true, // Not avaliable
125
- mariFecEnabled: false,
126
- mariRtxEnabled: false,
127
- mariQosEnabled: false,
128
- mariLiteEnabled: false,
129
- multistreamEnabled: true, // Not avaliable
130
- },
131
- dtlsBitrate: 0, // Not avaliable
132
- dtlsPackets: 0, // Not avaliable
133
- fecBitrate: 0, // Not avaliable
134
- fecPackets: 0, // Not avaliable
135
- maxBitrate: 0,
136
- mediaHopByHopLost: 0,
137
- rtcpBitrate: 0, // Not avaliable
138
- rtcpPackets: 0, // Not avaliable
139
- rtpBitrate: 0,
140
- rtpHopByHopLost: 0,
141
- rtpPackets: 0,
142
- rtpRecovered: 0, // Not avaliable
143
- rtxBitrate: 0, // Not avaliable
144
- rtxPackets: 0, // Not avaliable
145
- srtcpUnprotectErrors: 0, // Not avaliable
146
- srtpUnprotectErrors: 0, // Not avaliable
147
- stunBitrate: 0, // Not avaliable
148
- stunPackets: 0, // Not avaliable
149
- transportType: 'UDP',
150
- },
151
- streams: [],
152
- };
153
-
154
- export const emptyVideoReceiveStream = {
155
- common: {
156
- codec: 'H264',
157
- concealedFrames: 0, // Not avaliable
158
- csi: [],
159
- maxConcealRunLength: 0, // Not avaliable
160
- optimalBitrate: 0,
161
- optimalFrameRate: 0,
162
- receivedBitrate: 0,
163
- receivedFrameRate: 0,
164
- renderedFrameRate: 0, // Not avaliable
165
- requestedBitrate: 0,
166
- requestedFrameRate: 0,
167
- rtpEndToEndLost: 0,
168
- rtpJitter: 0,
169
- rtpPackets: 0,
170
- ssci: 0, // Not avaliable
171
- },
172
- h264CodecProfile: 'BP',
173
- isActiveSpeaker: true,
174
- optimalFrameSize: 0, // Not avaliable
175
- receivedFrameSize: 0,
176
- receivedHeight: 0,
177
- receivedKeyFrames: 0,
178
- receivedKeyFramesForRequest: 0,
179
- receivedKeyFramesSourceChange: 0,
180
- receivedKeyFramesUnknown: 0,
181
- receivedWidth: 0,
182
- requestedFrameSize: 0,
183
- requestedKeyFrames: 0,
184
- };
185
-
186
- export const emptyVideoTransmit = {
187
- common: {
188
- availableBitrate: 0, // Not avaliable currently hardcoded
189
- common: {
190
- direction: 'inactive',
191
- isMain: true,
192
- mariFecEnabled: false,
193
- mariRtxEnabled: false,
194
- mariQosEnabled: false,
195
- mariLiteEnabled: false,
196
- multistreamEnabled: false, // Not avaliable
197
- },
198
- dtlsBitrate: 0, // Not avaliable
199
- dtlsPackets: 0, // Not avaliable
200
- fecBitrate: 0, // Not avaliable
201
- fecPackets: 0, // TODO: check inbound-rtp// Not avaliable
202
- maxBitrate: 0, // Currently hardcoded
203
- queueDelay: 0,
204
- remoteJitter: 0, // remoteInboundRtp.jitter
205
- remoteLossRate: 0, // comparedResults.lossRate
206
- roundTripTime: 0, // compareResults.roundTripTime
207
- rtcpBitrate: 0, // Dont have access to it
208
- rtcpPackets: 0, // Dont have access to rtcp
209
- rtpBitrate: 0, // Dont have access
210
- rtpPackets: 0, // outboundRtp.packetsSent
211
- rtxBitrate: 0, // Dont have access to it
212
- rtxPackets: 0, // Dont have access to it
213
- stunBitrate: 0, // Dont have access to it
214
- stunPackets: 0, // Dont have access to it
215
- transportType: 'UDP', // TODO: need to calculate
216
- },
217
- streams: [],
218
- };
219
-
220
- export const emptyVideoTransmitStream = {
221
- common: {
222
- codec: 'H264',
223
- csi: [],
224
- duplicateSsci: 0, // Not Avaliable
225
- requestedBitrate: 0, // TODO: from remote SDP
226
- requestedFrames: 0, // TODO: from remote SDP
227
- rtpPackets: 0, // same as rtp packets
228
- ssci: 0,
229
- transmittedBitrate: 0, // TODO: get in the candidate pair
230
- transmittedFrameRate: 0, // TODO: from track info
231
- },
232
- h264CodecProfile: 'BP', // TODO: from localSDP
233
- isAvatar: false, // Not Avaliable
234
- isHardwareEncoded: false, // Not Avaliable
235
- localConfigurationChanges: 2, // Not Avaliable
236
- maxFrameQp: 0, // Not Avaliable
237
- maxNoiseLevel: 0, // Not Avaliable
238
- minRegionQp: 0, // Not Avaliable
239
- remoteConfigurationChanges: 0, // Not Avaliable
240
- requestedFrameSize: 0, // TODO: from remote SDP
241
- requestedKeyFrames: 0, // outbound Fir request
242
- transmittedFrameSize: 0, // Not Avaliable
243
- transmittedHeight: 0,
244
- transmittedKeyFrames: 0, // Key frames encoded
245
- transmittedKeyFramesClient: 0, // Not Avaliable
246
- transmittedKeyFramesConfigurationChange: 0, // Not Avaliable
247
- transmittedKeyFramesFeedback: 0, // Not Avaliable
248
- transmittedKeyFramesLocalDrop: 0, // Not Avaliable
249
- transmittedKeyFramesOtherLayer: 0, // Not Avaliable
250
- transmittedKeyFramesPeriodic: 0, // Not Avaliable
251
- transmittedKeyFramesSceneChange: 0, // Not Avaliable
252
- transmittedKeyFramesStartup: 0, // Not Avaliable
253
- transmittedKeyFramesUnknown: 0, // Not Avaliable
254
- transmittedWidth: 0,
255
- };
@@ -1,211 +0,0 @@
1
- import EventsScope from '../common/events/events-scope';
2
- import {EVENT_TRIGGERS} from '../constants';
3
-
4
- /**
5
- * Meeting - network quality event
6
- * Emitted on each interval of retrieving stats Analyzer data
7
- * @event network:quality
8
- * @type {Object}
9
- * @property {string} mediaType {video|audio}
10
- * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
11
- * @memberof NetworkQualityMonitor
12
- */
13
- /**
14
- * NetworkQualityMonitor class that will emit events based on detected quality
15
- *
16
- * @class NetworkQualityMonitor
17
- * @extends {EventsScope}
18
- */
19
- export default class NetworkQualityMonitor extends EventsScope {
20
- config: any;
21
- frequencyTypes: any;
22
- indicatorTypes: any;
23
- mediaType: any;
24
- networkQualityScore: any;
25
- networkQualityStatus: any;
26
-
27
- /**
28
- * Creates a new instance of NetworkQualityMonitor
29
- * @constructor
30
- * @public
31
- * @param {Object} config
32
- * @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants
33
- * @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}
34
- * @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown
35
- * @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
36
- * @property {string} mediaType - audio|video
37
- */
38
- constructor(config: any) {
39
- super();
40
- this.config = config;
41
- this.indicatorTypes = Object.freeze({
42
- PACKETLOSS: 'packetLoss',
43
- LATENCY: 'latency',
44
- JITTER: 'jitter',
45
- });
46
- this.frequencyTypes = Object.freeze({
47
- UPLINK: 'uplink',
48
- DOWNLINK: 'downlink',
49
- });
50
- this.networkQualityScore = 1;
51
- this.networkQualityStatus = {
52
- [this.frequencyTypes.UPLINK]: {},
53
- };
54
- this.mediaType = null;
55
- }
56
-
57
- /**
58
- * emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score
59
- *
60
- * @memberof NetworkQualityMonitor
61
- * @returns {void}
62
- */
63
- emitNetworkQuality() {
64
- this.emit(
65
- {
66
- file: 'networkQualityMonitor',
67
- function: 'emitNetworkQuality',
68
- },
69
- EVENT_TRIGGERS.NETWORK_QUALITY,
70
- {
71
- mediaType: this.mediaType,
72
- networkQualityScore: this.networkQualityScore,
73
- }
74
- );
75
- }
76
-
77
- /**
78
- * invokes emitNetworkQuality method resets values back to default
79
- * @returns {void}
80
- * @memberof NetworkQualityMonitor
81
- */
82
- updateNetworkQualityStatus() {
83
- this.emitNetworkQuality();
84
-
85
- // reset values
86
- this.networkQualityScore = 1;
87
- this.mediaType = null;
88
- }
89
-
90
- /**
91
- * filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
92
- * @param {Object} configObj
93
- * @param {string} configObj.mediaType {audio|video}
94
- * @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj
95
- * @param {Object} configObj.statsAnalyzerCurrentStats statsResults
96
- * @returns {void}
97
- * @public
98
- * @memberof NetworkQualityMonitor
99
- */
100
- public determineUplinkNetworkQuality({
101
- mediaType,
102
- remoteRtpResults,
103
- statsAnalyzerCurrentStats,
104
- }: {
105
- mediaType: string;
106
- remoteRtpResults: any;
107
- statsAnalyzerCurrentStats: object;
108
- }) {
109
- const roundTripTimeInMilliseconds = remoteRtpResults.roundTripTime * 1000;
110
- const jitterInMilliseconds = remoteRtpResults.jitter * 1000;
111
- const {currentPacketLossRatio} = statsAnalyzerCurrentStats[mediaType].send;
112
-
113
- this.mediaType = mediaType;
114
-
115
- const {JITTER, PACKETLOSS, LATENCY} = this.indicatorTypes;
116
- const {UPLINK} = this.frequencyTypes;
117
-
118
- /**
119
- * determines if packetLoss ratio is over threshold set in config
120
- * sets networkQualityScore to 0 if over threshold
121
- * @returns {boolean}
122
- */
123
- const determinePacketLoss = () => {
124
- if (currentPacketLossRatio > this.config.videoPacketLossRatioThreshold) {
125
- this.networkQualityScore = 0;
126
-
127
- return false;
128
- }
129
-
130
- return true;
131
- };
132
-
133
- /**
134
- * determines if round trip time value is over threshold set in config
135
- * sets networkQualityScore to 0 if over threshold
136
- * @returns {boolean}
137
- */
138
- const determineLatency = () => {
139
- if (roundTripTimeInMilliseconds > this.config.rttThreshold) {
140
- this.networkQualityScore = 0;
141
-
142
- return false;
143
- }
144
-
145
- return true;
146
- };
147
-
148
- /**
149
- * determines if jitter value is over threshold in config
150
- * sets networkQualityScore to 0 if over threshold
151
- * @returns {boolean}
152
- */
153
- const deterMineJitter = () => {
154
- if (jitterInMilliseconds > this.config.jitterThreshold) {
155
- this.networkQualityScore = 0;
156
-
157
- return false;
158
- }
159
-
160
- return true;
161
- };
162
-
163
- /**
164
- * returns null if val is specifically undefined
165
- * @param {(number|undefined)} value
166
- * @returns {(number|null)}
167
- */
168
- const determineIfUndefined = (value: number | undefined) =>
169
- typeof value === 'undefined' ? null : value;
170
-
171
- if (!this.networkQualityStatus[UPLINK][mediaType]) {
172
- this.networkQualityStatus[UPLINK][mediaType] = {};
173
- }
174
-
175
- /**
176
- * Values for some browsers specifically Safari will be undefined we explicitly set to null
177
- * https://bugs.webkit.org/show_bug.cgi?id=206645
178
- * https://bugs.webkit.org/show_bug.cgi?id=212668
179
- */
180
- // PACKET LOSS
181
- this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {
182
- acceptable: determinePacketLoss(),
183
- value: determineIfUndefined(currentPacketLossRatio),
184
- };
185
-
186
- // LATENCY measured in Round trip time
187
- this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {
188
- acceptable: determineLatency(),
189
- value: determineIfUndefined(remoteRtpResults.roundTripTime),
190
- };
191
-
192
- // JITTER
193
- this.networkQualityStatus[UPLINK][mediaType][JITTER] = {
194
- acceptable: deterMineJitter(),
195
- value: determineIfUndefined(remoteRtpResults.jitter),
196
- };
197
-
198
- this.updateNetworkQualityStatus();
199
- }
200
-
201
- /**
202
- * Get the current status of network quaility object - networkQualityStatus
203
- * @returns {Object}
204
- * @public
205
- */
206
- get networkQualityStats() {
207
- const {UPLINK} = this.frequencyTypes;
208
-
209
- return this.networkQualityStatus[UPLINK];
210
- }
211
- }
@@ -1,37 +0,0 @@
1
- const STATS_DEFAULT = {
2
- encryption: 'sha-256',
3
- bandwidth: {
4
- systemBandwidth: 0,
5
- sentPerSecond: 0,
6
- encodedPerSecond: 0,
7
- helper: {
8
- audioBytesSent: 0,
9
- videoBytestSent: 0,
10
- },
11
- speed: 0,
12
- },
13
- results: {},
14
- connectionType: {
15
- systemNetworkType: 'unknown',
16
- systemIpAddress: '0.0.0.0',
17
- local: {
18
- candidateType: [],
19
- transport: [],
20
- ipAddress: [],
21
- networkType: [],
22
- },
23
- remote: {
24
- candidateType: [],
25
- transport: [],
26
- ipAddress: [],
27
- networkType: [],
28
- },
29
- },
30
- resolutions: {},
31
- internal: {
32
- remote: {},
33
- candidates: {},
34
- },
35
- };
36
-
37
- export default STATS_DEFAULT;