mediasoup-client 3.24.3 → 3.24.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"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"}
@@ -238,6 +238,26 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
238
238
  this.assertNotClosed();
239
239
  this.assertSendDirection();
240
240
  logger.debug('send() [kind:%s, track.id:%s, streamId:%s]', track.kind, track.id, streamId);
241
+ if (encodings && encodings.length > 1) {
242
+ // Set rid and verify scalabilityMode in each encoding.
243
+ // NOTE: Even if WebRTC allows different scalabilityMode (different number
244
+ // of temporal layers) per simulcast stream, we need that those are the
245
+ // same in all them, so let's pick up the highest value.
246
+ // NOTE: If scalabilityMode is not given, Safari will use L1T3.
247
+ let maxTemporalLayers = 1;
248
+ for (const encoding of encodings) {
249
+ const temporalLayers = encoding.scalabilityMode
250
+ ? (0, scalabilityModes_1.parse)(encoding.scalabilityMode).temporalLayers
251
+ : 3;
252
+ if (temporalLayers > maxTemporalLayers) {
253
+ maxTemporalLayers = temporalLayers;
254
+ }
255
+ }
256
+ encodings.forEach((encoding, idx) => {
257
+ encoding.rid = `r${idx}`;
258
+ encoding.scalabilityMode = `L1T${maxTemporalLayers}`;
259
+ });
260
+ }
241
261
  const mediaSectionIdx = this._remoteSdp.getNextMediaSectionIdx();
242
262
  const transceiver = this._pc.addTransceiver(track, {
243
263
  direction: 'sendonly',
@@ -251,7 +271,7 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
251
271
  if (onRtpSender) {
252
272
  onRtpSender(transceiver.sender);
253
273
  }
254
- let offer = await this._pc.createOffer();
274
+ const offer = await this._pc.createOffer();
255
275
  let localSdpObject = sdpTransform.parse(offer.sdp);
256
276
  if (localSdpObject.extmapAllowMixed) {
257
277
  this._remoteSdp.setSessionExtmapAllowMixed();
@@ -266,27 +286,12 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
266
286
  const sendingRemoteRtpParameters = ortc.getSendingRemoteRtpParameters(track.kind, sendExtendedRtpCapabilities);
267
287
  // This may throw.
268
288
  sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
269
- let offerMediaObject;
270
289
  if (!this._transportReady) {
271
290
  await this.setupTransport({
272
291
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
273
292
  localSdpObject,
274
293
  });
275
294
  }
276
- const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode);
277
- if (encodings && encodings.length > 1) {
278
- logger.debug('send() | enabling legacy simulcast');
279
- localSdpObject = sdpTransform.parse(offer.sdp);
280
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
281
- sdpUnifiedPlanUtils.addLegacySimulcast({
282
- offerMediaObject,
283
- numStreams: encodings.length,
284
- });
285
- offer = {
286
- type: 'offer',
287
- sdp: sdpTransform.write(localSdpObject),
288
- };
289
- }
290
295
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
291
296
  await this._pc.setLocalDescription(offer);
292
297
  // We can now get the transceiver.mid.
@@ -294,41 +299,33 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
294
299
  // Set MID.
295
300
  sendingRtpParameters.mid = localId;
296
301
  localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
297
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
302
+ const offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
298
303
  // Set RTCP CNAME.
299
304
  sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
300
305
  offerMediaObject,
301
306
  });
302
307
  // Set msid.
303
308
  sendingRtpParameters.msid = `${streamId ?? this._sendStream.id} ${track.id}`;
304
- // Set RTP encodings.
305
- sendingRtpParameters.encodings = sdpUnifiedPlanUtils.getRtpEncodings({
306
- offerMediaObject,
307
- codecs: sendingRtpParameters.codecs,
308
- });
309
- // Complete encodings with given values.
310
- if (encodings) {
311
- for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
312
- if (encodings[idx]) {
313
- Object.assign(sendingRtpParameters.encodings[idx], encodings[idx]);
314
- }
315
- }
309
+ // Set RTP encodings by parsing the SDP offer if no encodings are given.
310
+ if (!encodings) {
311
+ sendingRtpParameters.encodings = sdpUnifiedPlanUtils.getRtpEncodings({
312
+ offerMediaObject,
313
+ codecs: sendingRtpParameters.codecs,
314
+ });
316
315
  }
317
- // If VP8 or H264 and there is effective simulcast, add scalabilityMode to
318
- // each encoding.
319
- if (sendingRtpParameters.encodings.length > 1 &&
320
- (sendingRtpParameters.codecs[0].mimeType.toLowerCase() ===
321
- 'video/vp8' ||
322
- sendingRtpParameters.codecs[0].mimeType.toLowerCase() ===
323
- 'video/h264')) {
324
- for (const encoding of sendingRtpParameters.encodings) {
325
- if (encoding.scalabilityMode) {
326
- encoding.scalabilityMode = `L1T${layers.temporalLayers}`;
327
- }
328
- else {
329
- encoding.scalabilityMode = 'L1T3';
330
- }
331
- }
316
+ // Set RTP encodings by parsing the SDP offer and complete them with given
317
+ // one if just a single encoding has been given.
318
+ else if (encodings.length === 1) {
319
+ const newEncodings = sdpUnifiedPlanUtils.getRtpEncodings({
320
+ offerMediaObject,
321
+ codecs: sendingRtpParameters.codecs,
322
+ });
323
+ Object.assign(newEncodings[0], encodings[0]);
324
+ sendingRtpParameters.encodings = newEncodings;
325
+ }
326
+ // Otherwise if more than 1 encoding are given use them verbatim.
327
+ else {
328
+ sendingRtpParameters.encodings = encodings;
332
329
  }
333
330
  this._remoteSdp.send({
334
331
  offerMediaObject,
package/lib/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export * as types from './types';
6
6
  /**
7
7
  * Expose mediasoup-client version.
8
8
  */
9
- export declare const version = "3.24.3";
9
+ export declare const version = "3.24.5";
10
10
  /**
11
11
  * Expose Device class and device detector helpers.
12
12
  */
package/lib/index.js CHANGED
@@ -46,7 +46,7 @@ exports.types = __importStar(require("./types"));
46
46
  /**
47
47
  * Expose mediasoup-client version.
48
48
  */
49
- exports.version = '3.24.3';
49
+ exports.version = '3.24.5';
50
50
  /**
51
51
  * Expose Device class and device detector helpers.
52
52
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mediasoup-client",
3
- "version": "3.24.3",
3
+ "version": "3.24.5",
4
4
  "description": "mediasoup client side TypeScript library",
5
5
  "contributors": [
6
6
  "Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
@@ -87,17 +87,17 @@
87
87
  "@eslint/js": "^10.0.1",
88
88
  "@types/jest": "^30.0.0",
89
89
  "@types/sdp-transform": "^3.0.0",
90
- "eslint": "^10.11.0",
90
+ "eslint": "^10.12.0",
91
91
  "eslint-config-prettier": "^10.1.8",
92
92
  "eslint-plugin-jest": "^29.16.6",
93
93
  "eslint-plugin-prettier": "^5.5.6",
94
- "globals": "^17.12.0",
94
+ "globals": "^17.13.0",
95
95
  "jest": "^30.5.2",
96
- "knip": "^6.38.0",
96
+ "knip": "^6.40.0",
97
97
  "open-cli": "^9.0.0",
98
98
  "prettier": "^3.9.9",
99
99
  "ts-jest": "^29.4.14",
100
100
  "typescript": "^6.0.3",
101
- "typescript-eslint": "^8.71.0"
101
+ "typescript-eslint": "^8.71.1"
102
102
  }
103
103
  }