@webex/plugin-meetings 3.1.0-next.2 → 3.1.0-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/{reconnection-in-progress.js → reconnection-not-started.js} +27 -15
- package/dist/common/errors/reconnection-not-started.js.map +1 -0
- package/dist/constants.js +16 -5
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +7 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +10 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/media/properties.js +102 -57
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -10
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +6 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +543 -467
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +27 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/util.js +9 -16
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +37 -49
- package/dist/meeting/voicea-meeting.js.map +1 -1
- package/dist/meetings/index.js +12 -28
- package/dist/meetings/index.js.map +1 -1
- package/dist/reachability/index.js +88 -9
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +138 -109
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/request.js +3 -27
- package/dist/roap/request.js.map +1 -1
- package/dist/statsAnalyzer/index.js +8 -2
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +17 -0
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/common/errors/reconnection-not-started.d.ts +13 -0
- package/dist/types/constants.d.ts +13 -3
- package/dist/types/media/properties.d.ts +26 -2
- package/dist/types/mediaQualityMetrics/config.d.ts +8 -2
- package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
- package/dist/types/meeting/index.d.ts +5 -6
- package/dist/types/meeting/locusMediaRequest.d.ts +1 -0
- package/dist/types/meeting/util.d.ts +3 -0
- package/dist/types/meeting/voicea-meeting.d.ts +3 -2
- package/dist/types/meetings/index.d.ts +1 -16
- package/dist/types/reachability/index.d.ts +11 -0
- package/dist/types/reconnection-manager/index.d.ts +4 -14
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/common/errors/reconnection-not-started.ts +25 -0
- package/src/constants.ts +14 -5
- package/src/locus-info/controlsUtils.ts +11 -0
- package/src/locus-info/index.ts +16 -0
- package/src/media/properties.ts +67 -15
- package/src/mediaQualityMetrics/config.ts +13 -7
- package/src/meeting/in-meeting-actions.ts +12 -0
- package/src/meeting/index.ts +121 -98
- package/src/meeting/locusMediaRequest.ts +31 -0
- package/src/meeting/util.ts +9 -16
- package/src/meeting/voicea-meeting.ts +44 -46
- package/src/meetings/index.ts +15 -27
- package/src/reachability/index.ts +60 -0
- package/src/reconnection-manager/index.ts +128 -105
- package/src/roap/request.ts +1 -24
- package/src/statsAnalyzer/index.ts +10 -3
- package/src/statsAnalyzer/mqaUtil.ts +23 -0
- package/test/unit/spec/locus-info/controlsUtils.js +20 -0
- package/test/unit/spec/locus-info/index.js +21 -0
- package/test/unit/spec/media/properties.ts +145 -140
- package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
- package/test/unit/spec/meeting/index.js +243 -97
- package/test/unit/spec/meeting/locusMediaRequest.ts +49 -0
- package/test/unit/spec/meeting/utils.js +3 -10
- package/test/unit/spec/meeting/voicea-meeting.ts +5 -14
- package/test/unit/spec/meetings/index.js +59 -17
- package/test/unit/spec/reachability/index.ts +266 -0
- package/test/unit/spec/reconnection-manager/index.js +127 -39
- package/test/unit/spec/roap/request.ts +0 -37
- package/test/unit/spec/stats-analyzer/index.js +100 -8
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/src/common/errors/reconnection-in-progress.ts +0 -8
|
@@ -64,7 +64,7 @@ describe('plugin-meetings', () => {
|
|
|
64
64
|
assert(calledSpy.calledOnce);
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
it('processOutboundRTPResult should create the correct stats results', () => {
|
|
67
|
+
it('processOutboundRTPResult should create the correct stats results for audio', () => {
|
|
68
68
|
// establish the `statsResults` object.
|
|
69
69
|
statsAnalyzer.parseGetStatsResult({type: 'none'}, 'audio-send', true);
|
|
70
70
|
|
|
@@ -80,14 +80,13 @@ describe('plugin-meetings', () => {
|
|
|
80
80
|
nackCount: 1,
|
|
81
81
|
packetsSent: 3600,
|
|
82
82
|
remoteId: 'RTCRemoteInboundRtpAudioStream_123456789',
|
|
83
|
-
retransmittedBytesSent: 100,
|
|
84
|
-
retransmittedPacketsSent: 2,
|
|
85
83
|
ssrc: 123456789,
|
|
86
84
|
targetBitrate: 256000,
|
|
87
85
|
timestamp: 1707341489336,
|
|
88
86
|
trackId: 'RTCMediaStreamTrack_sender_2',
|
|
89
87
|
transportId: 'RTCTransport_0_1',
|
|
90
88
|
type: 'outbound-rtp',
|
|
89
|
+
requestedBitrate: 10000,
|
|
91
90
|
},
|
|
92
91
|
'audio-send',
|
|
93
92
|
true
|
|
@@ -97,17 +96,55 @@ describe('plugin-meetings', () => {
|
|
|
97
96
|
assert.strictEqual(statsAnalyzer.statsResults['audio-send'].send.totalBytesSent, 50000);
|
|
98
97
|
assert.strictEqual(statsAnalyzer.statsResults['audio-send'].send.totalNackCount, 1);
|
|
99
98
|
assert.strictEqual(statsAnalyzer.statsResults['audio-send'].send.totalPacketsSent, 3600);
|
|
99
|
+
assert.strictEqual(statsAnalyzer.statsResults['audio-send'].send.requestedBitrate, 10000);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('processOutboundRTPResult should create the correct stats results for video', () => {
|
|
103
|
+
// establish the `statsResults` object for video.
|
|
104
|
+
statsAnalyzer.parseGetStatsResult({type: 'none'}, 'video-send', true);
|
|
105
|
+
|
|
106
|
+
statsAnalyzer.processOutboundRTPResult(
|
|
107
|
+
{
|
|
108
|
+
bytesSent: 250000,
|
|
109
|
+
codecId: 'RTCCodec_1_Outbound_107',
|
|
110
|
+
headerBytesSent: 50000,
|
|
111
|
+
id: 'RTCOutboundRTPVideoStream_987654321',
|
|
112
|
+
kind: 'video',
|
|
113
|
+
mediaSourceId: 'RTCVideoSource_3',
|
|
114
|
+
mediaType: 'video',
|
|
115
|
+
nackCount: 5,
|
|
116
|
+
packetsSent: 15000,
|
|
117
|
+
remoteId: 'RTCRemoteInboundRtpVideoStream_987654321',
|
|
118
|
+
retransmittedBytesSent: 500,
|
|
119
|
+
retransmittedPacketsSent: 10,
|
|
120
|
+
ssrc: 987654321,
|
|
121
|
+
targetBitrate: 1024000,
|
|
122
|
+
timestamp: 1707341489336,
|
|
123
|
+
trackId: 'RTCMediaStreamTrack_sender_3',
|
|
124
|
+
transportId: 'RTCTransport_0_2',
|
|
125
|
+
type: 'outbound-rtp',
|
|
126
|
+
requestedBitrate: 50000,
|
|
127
|
+
},
|
|
128
|
+
'video-send',
|
|
129
|
+
true
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-send'].send.headerBytesSent, 50000);
|
|
133
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-send'].send.totalBytesSent, 250000);
|
|
134
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-send'].send.totalNackCount, 5);
|
|
135
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-send'].send.totalPacketsSent, 15000);
|
|
136
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-send'].send.requestedBitrate, 50000);
|
|
100
137
|
assert.strictEqual(
|
|
101
|
-
statsAnalyzer.statsResults['
|
|
102
|
-
|
|
138
|
+
statsAnalyzer.statsResults['video-send'].send.totalRtxPacketsSent,
|
|
139
|
+
10
|
|
103
140
|
);
|
|
104
141
|
assert.strictEqual(
|
|
105
|
-
statsAnalyzer.statsResults['
|
|
106
|
-
|
|
142
|
+
statsAnalyzer.statsResults['video-send'].send.totalRtxBytesSent,
|
|
143
|
+
500
|
|
107
144
|
);
|
|
108
145
|
});
|
|
109
146
|
|
|
110
|
-
it('processInboundRTPResult should create the correct stats results', () => {
|
|
147
|
+
it('processInboundRTPResult should create the correct stats results for audio', () => {
|
|
111
148
|
// establish the `statsResults` object.
|
|
112
149
|
statsAnalyzer.parseGetStatsResult({type: 'none'}, 'audio-recv-1', false);
|
|
113
150
|
|
|
@@ -143,6 +180,7 @@ describe('plugin-meetings', () => {
|
|
|
143
180
|
trackId: 'RTCMediaStreamTrack_receiver_76',
|
|
144
181
|
transportId: 'RTCTransport_0_1',
|
|
145
182
|
type: 'inbound-rtp',
|
|
183
|
+
requestedBitrate: 10000,
|
|
146
184
|
},
|
|
147
185
|
'audio-recv-1',
|
|
148
186
|
false
|
|
@@ -155,6 +193,7 @@ describe('plugin-meetings', () => {
|
|
|
155
193
|
assert.strictEqual(statsAnalyzer.statsResults['audio-recv-1'].recv.fecPacketsDiscarded, 1);
|
|
156
194
|
assert.strictEqual(statsAnalyzer.statsResults['audio-recv-1'].recv.fecPacketsReceived, 1);
|
|
157
195
|
assert.strictEqual(statsAnalyzer.statsResults['audio-recv-1'].recv.totalBytesReceived, 509);
|
|
196
|
+
assert.strictEqual(statsAnalyzer.statsResults['audio-recv-1'].recv.requestedBitrate, 10000);
|
|
158
197
|
assert.strictEqual(
|
|
159
198
|
statsAnalyzer.statsResults['audio-recv-1'].recv.headerBytesReceived,
|
|
160
199
|
250
|
|
@@ -172,6 +211,52 @@ describe('plugin-meetings', () => {
|
|
|
172
211
|
);
|
|
173
212
|
});
|
|
174
213
|
|
|
214
|
+
it('processInboundRTPResult should create the correct stats results for video', () => {
|
|
215
|
+
// establish the `statsResults` object for video.
|
|
216
|
+
statsAnalyzer.parseGetStatsResult({type: 'none'}, 'video-recv', false);
|
|
217
|
+
|
|
218
|
+
statsAnalyzer.processInboundRTPResult(
|
|
219
|
+
{
|
|
220
|
+
bytesReceived: 100000,
|
|
221
|
+
codecId: 'RTCCodec_6_Inbound_107',
|
|
222
|
+
fecPacketsDiscarded: 2,
|
|
223
|
+
fecPacketsReceived: 2,
|
|
224
|
+
headerBytesReceived: 10000,
|
|
225
|
+
id: 'RTCInboundRTPVideoStream_987654321',
|
|
226
|
+
jitter: 0.05,
|
|
227
|
+
jitterBufferDelay: 5000,
|
|
228
|
+
jitterBufferEmittedCount: 50000,
|
|
229
|
+
kind: 'video',
|
|
230
|
+
lastPacketReceivedTimestamp: 1707341488529,
|
|
231
|
+
mediaType: 'video',
|
|
232
|
+
packetsDiscarded: 5,
|
|
233
|
+
packetsLost: 10,
|
|
234
|
+
packetsReceived: 1500,
|
|
235
|
+
remoteId: 'RTCRemoteOutboundRTPVideoStream_987654321',
|
|
236
|
+
ssrc: 987654321,
|
|
237
|
+
timestamp: 1707341489419,
|
|
238
|
+
trackId: 'RTCMediaStreamTrack_receiver_3',
|
|
239
|
+
transportId: 'RTCTransport_0_2',
|
|
240
|
+
type: 'inbound-rtp',
|
|
241
|
+
requestedBitrate: 50000,
|
|
242
|
+
retransmittedBytesReceived: 500,
|
|
243
|
+
retransmittedPacketsReceived: 10,
|
|
244
|
+
},
|
|
245
|
+
'video-recv',
|
|
246
|
+
false
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.totalPacketsReceived, 1500);
|
|
250
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.fecPacketsDiscarded, 2);
|
|
251
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.fecPacketsReceived, 2);
|
|
252
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.totalBytesReceived, 100000);
|
|
253
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.requestedBitrate, 50000);
|
|
254
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.headerBytesReceived, 10000);
|
|
255
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.totalRtxBytesReceived, 500);
|
|
256
|
+
assert.strictEqual(statsAnalyzer.statsResults['video-recv'].recv.totalRtxPacketsReceived, 10);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
|
|
175
260
|
it('parseAudioSource should create the correct stats results', () => {
|
|
176
261
|
// establish the `statsResults` object.
|
|
177
262
|
statsAnalyzer.parseGetStatsResult({type: 'none'}, 'audio-send', true);
|
|
@@ -1202,6 +1287,7 @@ describe('plugin-meetings', () => {
|
|
|
1202
1287
|
},
|
|
1203
1288
|
transmittedKeyFrames: 0,
|
|
1204
1289
|
requestedKeyFrames: 0,
|
|
1290
|
+
requestedBitrate: 0,
|
|
1205
1291
|
},
|
|
1206
1292
|
]);
|
|
1207
1293
|
assert.deepEqual(mqeData.audioTransmit[1].streams, [
|
|
@@ -1218,6 +1304,7 @@ describe('plugin-meetings', () => {
|
|
|
1218
1304
|
},
|
|
1219
1305
|
transmittedKeyFrames: 0,
|
|
1220
1306
|
requestedKeyFrames: 0,
|
|
1307
|
+
requestedBitrate: 0,
|
|
1221
1308
|
},
|
|
1222
1309
|
]);
|
|
1223
1310
|
assert.deepEqual(mqeData.audioReceive[0].streams, [
|
|
@@ -1306,6 +1393,7 @@ describe('plugin-meetings', () => {
|
|
|
1306
1393
|
transmittedKeyFramesStartup: 0,
|
|
1307
1394
|
transmittedKeyFramesUnknown: 0,
|
|
1308
1395
|
transmittedWidth: 0,
|
|
1396
|
+
requestedBitrate: 0,
|
|
1309
1397
|
},
|
|
1310
1398
|
]);
|
|
1311
1399
|
assert.deepEqual(mqeData.videoTransmit[1].streams, [
|
|
@@ -1329,6 +1417,7 @@ describe('plugin-meetings', () => {
|
|
|
1329
1417
|
maxNoiseLevel: 0,
|
|
1330
1418
|
minRegionQp: 0,
|
|
1331
1419
|
remoteConfigurationChanges: 0,
|
|
1420
|
+
requestedBitrate: 0,
|
|
1332
1421
|
requestedFrameSize: 0,
|
|
1333
1422
|
requestedKeyFrames: 0,
|
|
1334
1423
|
transmittedFrameSize: 0,
|
|
@@ -1647,6 +1736,7 @@ describe('plugin-meetings', () => {
|
|
|
1647
1736
|
transmittedKeyFramesStartup: 0,
|
|
1648
1737
|
transmittedKeyFramesUnknown: 0,
|
|
1649
1738
|
transmittedWidth: 0,
|
|
1739
|
+
requestedBitrate: 0,
|
|
1650
1740
|
},
|
|
1651
1741
|
{
|
|
1652
1742
|
common: {
|
|
@@ -1683,6 +1773,7 @@ describe('plugin-meetings', () => {
|
|
|
1683
1773
|
transmittedKeyFramesStartup: 0,
|
|
1684
1774
|
transmittedKeyFramesUnknown: 0,
|
|
1685
1775
|
transmittedWidth: 0,
|
|
1776
|
+
requestedBitrate: 0,
|
|
1686
1777
|
},
|
|
1687
1778
|
{
|
|
1688
1779
|
common: {
|
|
@@ -1719,6 +1810,7 @@ describe('plugin-meetings', () => {
|
|
|
1719
1810
|
transmittedKeyFramesStartup: 0,
|
|
1720
1811
|
transmittedKeyFramesUnknown: 0,
|
|
1721
1812
|
transmittedWidth: 0,
|
|
1813
|
+
requestedBitrate: 0,
|
|
1722
1814
|
}
|
|
1723
1815
|
]);
|
|
1724
1816
|
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ReconnectInProgress","exports","default","_Error","_inherits2","_super","_createSuper","_classCallCheck2","apply","arguments","_createClass2","_wrapNativeSuper2","Error"],"sources":["reconnection-in-progress.ts"],"sourcesContent":["/**\n *\n *\n * @export\n * @class ReconnectInProgress\n * @extends {Error}\n */\nexport default class ReconnectInProgress extends Error {}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOqBA,mBAAmB,GAAAC,OAAA,CAAAC,OAAA,0BAAAC,MAAA;EAAA,IAAAC,UAAA,CAAAF,OAAA,EAAAF,mBAAA,EAAAG,MAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAN,mBAAA;EAAA,SAAAA,oBAAA;IAAA,IAAAO,gBAAA,CAAAL,OAAA,QAAAF,mBAAA;IAAA,OAAAK,MAAA,CAAAG,KAAA,OAAAC,SAAA;EAAA;EAAA,WAAAC,aAAA,CAAAR,OAAA,EAAAF,mBAAA;AAAA,oBAAAW,iBAAA,CAAAT,OAAA,EAASU,KAAK"}
|