@wireapp/avs 10.0.4 → 10.0.7

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/avs_pc.js CHANGED
@@ -182,26 +182,34 @@ function replace_track(pc, newTrack) {
182
182
  var senders = rtc.getSenders();
183
183
  if (!senders)
184
184
  return false;
185
- for (var _i = 0, senders_1 = senders; _i < senders_1.length; _i++) {
186
- var sender = senders_1[_i];
185
+ var _loop_1 = function (sender) {
187
186
  if (!sender)
188
- continue;
187
+ return "continue";
189
188
  if (!sender.track)
190
- continue;
189
+ return "continue";
191
190
  if (sender.track.kind === newTrack.kind) {
192
191
  var oldTrack = sender.track;
193
192
  if (!oldTrack) {
194
193
  pc_log(LOG_LEVEL_INFO, 'replace_track: oldtrack null');
195
194
  }
196
195
  else {
197
- var enabled = oldTrack.enabled;
198
- newTrack.enabled = enabled;
199
- sender.replaceTrack(newTrack);
200
- sender.track.enabled = enabled;
201
- pc_log(LOG_LEVEL_INFO, "replace_track: kind=".concat(newTrack.kind, " enabled=").concat(sender.track.enabled));
202
- return true;
196
+ var enabled_1 = oldTrack.enabled;
197
+ // newTrack.enabled = enabled;
198
+ sender.replaceTrack(newTrack).then(function () {
199
+ if (!!sender && !!sender.track) {
200
+ sender.track.enabled = enabled_1;
201
+ pc_log(LOG_LEVEL_INFO, "replace_track: kind=".concat(newTrack.kind, " enabled=").concat(sender.track.enabled));
202
+ }
203
+ });
204
+ return { value: true };
203
205
  }
204
206
  }
207
+ };
208
+ for (var _i = 0, senders_1 = senders; _i < senders_1.length; _i++) {
209
+ var sender = senders_1[_i];
210
+ var state_1 = _loop_1(sender);
211
+ if (typeof state_1 === "object")
212
+ return state_1.value;
205
213
  }
206
214
  return false;
207
215
  }
@@ -255,43 +263,24 @@ function update_tracks(pc, stream) {
255
263
  pc_log(LOG_LEVEL_INFO, "update_tracks: adding track of kind=".concat(track.kind, ", id=").concat(track.id));
256
264
  if (track.kind === 'video' && pc.conv_type !== CONV_TYPE_ONEONONE) {
257
265
  var transceivers = rtc.getTransceivers();
258
- var _loop_1 = function (trans) {
259
- if (trans.mid === 'video') {
266
+ var _loop_2 = function (trans) {
267
+ if (trans.mid === 'video' && !!trans.sender) {
260
268
  pc_log(LOG_LEVEL_INFO, "update_tracks: adjust");
261
- var params = trans.sender.getParameters();
262
- if (!params.encodings) {
263
- pc_log(LOG_LEVEL_INFO, "update_tracks: no params");
264
- params.encodings = [];
265
- }
266
- var layerFound_1 = false;
267
- params.encodings.forEach(function (coding) {
268
- if (coding.rid === 'l') {
269
- //@ts-ignore
270
- coding.scalabilityMode = 'L1T1';
271
- coding.scaleResolutionDownBy = 4;
272
- coding.active = true;
273
- layerFound_1 = true;
274
- }
275
- if (coding.rid === 'h') {
276
- //@ts-ignore
277
- coding.scalabilityMode = 'L1T1';
278
- coding.scaleResolutionDownBy = 1;
279
- coding.active = true;
280
- layerFound_1 = true;
281
- }
282
- });
269
+ var _a = getEncodingParameter(trans.sender, pc.vstate === PC_VIDEO_STATE_SCREENSHARE), params_1 = _a.params, layerFound = _a.layerFound;
270
+ pc_log(LOG_LEVEL_INFO, 'add track: ' + layerFound);
283
271
  rtc.addTrack(track, stream);
284
- if (layerFound_1) {
285
- videoSenderUpdates.push(trans.sender.setParameters(params).catch(function (e) { return pc_log(LOG_LEVEL_ERROR, "update_tracks: set params ".concat(e)); })
286
- // Reinsert the track so that the changes are transferred to the track (needed for FF)
287
- .then(function () { return trans.sender.replaceTrack(track); })
272
+ if (layerFound) {
273
+ videoSenderUpdates.push(trans.sender.setParameters(params_1).catch(function (e) { return pc_log(LOG_LEVEL_ERROR, "update_tracks: set params ".concat(e)); })
274
+ .then(function () {
275
+ pc_log(LOG_LEVEL_INFO, 'setParameters: ' + JSON.stringify(params_1));
276
+ })
288
277
  .then());
289
278
  }
290
279
  }
291
280
  };
292
281
  for (var _i = 0, transceivers_1 = transceivers; _i < transceivers_1.length; _i++) {
293
282
  var trans = transceivers_1[_i];
294
- _loop_1(trans);
283
+ _loop_2(trans);
295
284
  }
296
285
  }
297
286
  else {
@@ -309,6 +298,41 @@ function update_tracks(pc, stream) {
309
298
  pc_log(LOG_LEVEL_ERROR, "update_tracks: error=".concat(e));
310
299
  }).then();
311
300
  }
301
+ function getEncodingParameter(sender, isScreenShare) {
302
+ pc_log(LOG_LEVEL_INFO, "update_tracks: adjust");
303
+ var params = sender.getParameters();
304
+ if (!params.encodings) {
305
+ pc_log(LOG_LEVEL_INFO, "update_tracks: no params");
306
+ params.encodings = [];
307
+ }
308
+ var layerFound = false;
309
+ params.encodings.forEach(function (coding) {
310
+ if (coding.rid === 'l') {
311
+ if (pc_env !== ENV_FIREFOX) {
312
+ //@ts-ignore
313
+ coding.scalabilityMode = 'L1T1';
314
+ }
315
+ if (pc_env === ENV_FIREFOX && isScreenShare) {
316
+ coding.active = false;
317
+ }
318
+ else {
319
+ coding.active = true;
320
+ }
321
+ coding.scaleResolutionDownBy = 4;
322
+ layerFound = true;
323
+ }
324
+ if (coding.rid === 'h') {
325
+ if (pc_env !== ENV_FIREFOX) {
326
+ //@ts-ignore
327
+ coding.scalabilityMode = 'L1T1';
328
+ }
329
+ coding.scaleResolutionDownBy = 1;
330
+ coding.active = true;
331
+ layerFound = true;
332
+ }
333
+ });
334
+ return { params: params, layerFound: layerFound };
335
+ }
312
336
  function sigState(stateStr) {
313
337
  var state = PC_SIG_STATE_UNKNOWN;
314
338
  switch (stateStr) {
@@ -768,6 +792,36 @@ function sdpCbrMap(sdp) {
768
792
  outline = null;
769
793
  }
770
794
  }
795
+ // reorder rids for firefox
796
+ else if (sdpLine.startsWith('a=simulcast:recv l;h') && pc_env === ENV_FIREFOX) {
797
+ outline = 'a=simulcast:recv h;l';
798
+ }
799
+ else if (sdpLine.startsWith('a=rid:l recv') && pc_env === ENV_FIREFOX) {
800
+ outline = 'a=rid:h recv';
801
+ }
802
+ else if (sdpLine.startsWith('a=rid:h recv') && pc_env === ENV_FIREFOX) {
803
+ outline = 'a=rid:l recv';
804
+ }
805
+ if (outline != null) {
806
+ sdpLines.push(outline);
807
+ }
808
+ });
809
+ return sdpLines.join('\r\n');
810
+ }
811
+ function sdpRidReOrder(sdp) {
812
+ var sdpLines = [];
813
+ sdp.split('\r\n').forEach(function (sdpLine) {
814
+ var outline;
815
+ outline = sdpLine;
816
+ if (sdpLine.startsWith('a=simulcast:send h;l') && pc_env === ENV_FIREFOX) {
817
+ outline = 'a=simulcast:send l;h';
818
+ }
819
+ else if (sdpLine.startsWith('a=rid:h send') && pc_env === ENV_FIREFOX) {
820
+ outline = 'a=rid:l send';
821
+ }
822
+ else if (sdpLine.startsWith('a=rid:l send') && pc_env === ENV_FIREFOX) {
823
+ outline = 'a=rid:h send';
824
+ }
771
825
  if (outline != null) {
772
826
  sdpLines.push(outline);
773
827
  }
@@ -1099,6 +1153,11 @@ function pc_LocalDescription(hnd, typePtr) {
1099
1153
  sdpStr = sdp.replace(' UDP/DTLS/SCTP', ' DTLS/SCTP');
1100
1154
  sdpStr = sdpMap(sdpStr, true, false);
1101
1155
  }
1156
+ /* Ensure that we force CBR on the offer */
1157
+ if (pc_env === ENV_FIREFOX && pc.conv_type == CONV_TYPE_CONFERENCE) {
1158
+ sdpStr = sdpRidReOrder(sdpStr);
1159
+ }
1160
+ pc_log(LOG_LEVEL_INFO, "pc_LocalDescription: hnd=".concat(sdpStr));
1102
1161
  var sdpLen = em_module.lengthBytesUTF8(sdpStr) + 1; // +1 for '\0'
1103
1162
  var ptr = em_module._malloc(sdpLen);
1104
1163
  em_module.stringToUTF8(sdpStr, ptr, sdpLen);
@@ -1331,14 +1390,14 @@ function pc_ReplaceTrack(convid, newTrack) {
1331
1390
  function pc_GetStats(convid) {
1332
1391
  var pcs = connectionsStore.getPeerConnectionByConvid(convid);
1333
1392
  var statsPromises = [];
1334
- var _loop_2 = function (pc) {
1393
+ var _loop_3 = function (pc) {
1335
1394
  var rtc = pc.rtc;
1336
1395
  if (rtc)
1337
1396
  statsPromises.push(rtc.getStats().then(function (stats) { return ({ userid: pc.remote_userid, stats: stats }); }));
1338
1397
  };
1339
1398
  for (var _i = 0, pcs_2 = pcs; _i < pcs_2.length; _i++) {
1340
1399
  var pc = pcs_2[_i];
1341
- _loop_2(pc);
1400
+ _loop_3(pc);
1342
1401
  }
1343
1402
  return Promise.all(statsPromises);
1344
1403
  }
package/package.json CHANGED
@@ -21,5 +21,5 @@
21
21
  "prepack": "prettier -w src/avs_wcall.ts && tsc && cp src/*.js src/*.d.ts dist/",
22
22
  "test": "karma start"
23
23
  },
24
- "version": "10.0.4"
24
+ "version": "10.0.7"
25
25
  }