mediasoup-client 3.6.42 → 3.6.46

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 (55) hide show
  1. package/lib/DataConsumer.d.ts +2 -2
  2. package/lib/DataConsumer.d.ts.map +1 -1
  3. package/lib/Device.d.ts.map +1 -1
  4. package/lib/Device.js +7 -3
  5. package/lib/Logger.js +6 -6
  6. package/lib/Transport.d.ts +3 -3
  7. package/lib/Transport.js +1 -1
  8. package/lib/handlers/Chrome55.d.ts +1 -0
  9. package/lib/handlers/Chrome55.d.ts.map +1 -1
  10. package/lib/handlers/Chrome55.js +40 -9
  11. package/lib/handlers/Chrome67.d.ts +1 -0
  12. package/lib/handlers/Chrome67.d.ts.map +1 -1
  13. package/lib/handlers/Chrome67.js +41 -10
  14. package/lib/handlers/Chrome70.d.ts +1 -0
  15. package/lib/handlers/Chrome70.d.ts.map +1 -1
  16. package/lib/handlers/Chrome70.js +44 -11
  17. package/lib/handlers/Chrome74.d.ts +1 -0
  18. package/lib/handlers/Chrome74.d.ts.map +1 -1
  19. package/lib/handlers/Chrome74.js +44 -11
  20. package/lib/handlers/Edge11.d.ts.map +1 -1
  21. package/lib/handlers/Edge11.js +3 -2
  22. package/lib/handlers/FakeHandler.js +1 -1
  23. package/lib/handlers/Firefox60.d.ts.map +1 -1
  24. package/lib/handlers/Firefox60.js +12 -4
  25. package/lib/handlers/ReactNative.d.ts +1 -0
  26. package/lib/handlers/ReactNative.d.ts.map +1 -1
  27. package/lib/handlers/ReactNative.js +40 -9
  28. package/lib/handlers/Safari11.d.ts +1 -0
  29. package/lib/handlers/Safari11.d.ts.map +1 -1
  30. package/lib/handlers/Safari11.js +40 -10
  31. package/lib/handlers/Safari12.d.ts +1 -0
  32. package/lib/handlers/Safari12.d.ts.map +1 -1
  33. package/lib/handlers/Safari12.js +42 -10
  34. package/lib/handlers/ortc/edgeUtils.js +1 -1
  35. package/lib/handlers/sdp/MediaSection.js +1 -1
  36. package/lib/handlers/sdp/RemoteSdp.js +1 -1
  37. package/lib/handlers/sdp/commonUtils.js +1 -1
  38. package/lib/index.d.ts +1 -1
  39. package/lib/index.js +3 -3
  40. package/lib/ortc.js +1 -1
  41. package/lib/types.js +1 -1
  42. package/package.json +9 -9
  43. package/src/DataConsumer.ts +2 -2
  44. package/src/Device.ts +7 -2
  45. package/src/Transport.ts +3 -3
  46. package/src/handlers/Chrome55.ts +37 -5
  47. package/src/handlers/Chrome67.ts +37 -5
  48. package/src/handlers/Chrome70.ts +40 -4
  49. package/src/handlers/Chrome74.ts +40 -4
  50. package/src/handlers/Edge11.ts +3 -1
  51. package/src/handlers/Firefox60.ts +5 -1
  52. package/src/handlers/ReactNative.ts +37 -5
  53. package/src/handlers/Safari11.ts +37 -5
  54. package/src/handlers/Safari12.ts +40 -4
  55. package/tsconfig.json +1 -1
@@ -42,6 +42,9 @@ export class Chrome74 extends HandlerInterface
42
42
  // Generic sending RTP parameters for audio and video suitable for the SDP
43
43
  // remote answer.
44
44
  private _sendingRemoteRtpParametersByKind?: { [key: string]: RtpParameters };
45
+ // Initial server side DTLS role. If not 'auto', it will force the opposite
46
+ // value in client side.
47
+ private _forcedLocalDtlsRole?: DtlsRole;
45
48
  // RTCPeerConnection instance.
46
49
  private _pc: any;
47
50
  // Map of RTCTransceivers indexed by MID.
@@ -172,6 +175,13 @@ export class Chrome74 extends HandlerInterface
172
175
  video : ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
173
176
  };
174
177
 
178
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto')
179
+ {
180
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
181
+ ? 'client'
182
+ : 'server';
183
+ }
184
+
175
185
  this._pc = new (RTCPeerConnection as any)(
176
186
  {
177
187
  iceServers : iceServers || [],
@@ -315,7 +325,13 @@ export class Chrome74 extends HandlerInterface
315
325
  let offerMediaObject;
316
326
 
317
327
  if (!this._transportReady)
318
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
328
+ {
329
+ await this._setupTransport(
330
+ {
331
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
332
+ localSdpObject
333
+ });
334
+ }
319
335
 
320
336
  // Special case for VP9 with SVC.
321
337
  let hackVp9Svc = false;
@@ -465,6 +481,8 @@ export class Chrome74 extends HandlerInterface
465
481
  answer);
466
482
 
467
483
  await this._pc.setRemoteDescription(answer);
484
+
485
+ this._mapMidTransceiver.delete(localId);
468
486
  }
469
487
 
470
488
  async replaceTrack(
@@ -592,7 +610,13 @@ export class Chrome74 extends HandlerInterface
592
610
  .find((m: any) => m.type === 'application');
593
611
 
594
612
  if (!this._transportReady)
595
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
613
+ {
614
+ await this._setupTransport(
615
+ {
616
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
617
+ localSdpObject
618
+ });
619
+ }
596
620
 
597
621
  logger.debug(
598
622
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -667,7 +691,13 @@ export class Chrome74 extends HandlerInterface
667
691
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
668
692
 
669
693
  if (!this._transportReady)
670
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
694
+ {
695
+ await this._setupTransport(
696
+ {
697
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
698
+ localSdpObject
699
+ });
700
+ }
671
701
 
672
702
  logger.debug(
673
703
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -719,6 +749,8 @@ export class Chrome74 extends HandlerInterface
719
749
  answer);
720
750
 
721
751
  await this._pc.setLocalDescription(answer);
752
+
753
+ this._mapMidTransceiver.delete(localId);
722
754
  }
723
755
 
724
756
  async pauseReceiving(localId: string): Promise<void>
@@ -840,7 +872,11 @@ export class Chrome74 extends HandlerInterface
840
872
  {
841
873
  const localSdpObject = sdpTransform.parse(answer.sdp);
842
874
 
843
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
875
+ await this._setupTransport(
876
+ {
877
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
878
+ localSdpObject
879
+ });
844
880
  }
845
881
 
846
882
  logger.debug(
@@ -461,6 +461,7 @@ export class Edge11 extends HandlerInterface
461
461
  { iceServers?: any[]; iceTransportPolicy?: RTCIceTransportPolicy }
462
462
  ): void
463
463
  {
464
+ // @ts-ignore
464
465
  const iceGatherer = new (RTCIceGatherer as any)(
465
466
  {
466
467
  iceServers : iceServers || [],
@@ -480,7 +481,8 @@ export class Edge11 extends HandlerInterface
480
481
  catch (error)
481
482
  {
482
483
  logger.debug(
483
- '_setIceGatherer() | iceGatherer.gather() failed: %s', error.toString());
484
+ '_setIceGatherer() | iceGatherer.gather() failed: %s',
485
+ (error as Error).toString());
484
486
  }
485
487
 
486
488
  this._iceGatherer = iceGatherer;
@@ -477,6 +477,8 @@ export class Firefox60 extends HandlerInterface
477
477
  answer);
478
478
 
479
479
  await this._pc.setRemoteDescription(answer);
480
+
481
+ this._mapMidTransceiver.delete(localId);
480
482
  }
481
483
 
482
484
  async replaceTrack(
@@ -608,7 +610,7 @@ export class Firefox60 extends HandlerInterface
608
610
  .find((m: any) => m.type === 'application');
609
611
 
610
612
  if (!this._transportReady)
611
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
613
+ await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
612
614
 
613
615
  logger.debug(
614
616
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -735,6 +737,8 @@ export class Firefox60 extends HandlerInterface
735
737
  answer);
736
738
 
737
739
  await this._pc.setLocalDescription(answer);
740
+
741
+ this._mapMidTransceiver.delete(localId);
738
742
  }
739
743
 
740
744
  async pauseReceiving(localId: string): Promise<void>
@@ -38,6 +38,9 @@ export class ReactNative extends HandlerInterface
38
38
  // Generic sending RTP parameters for audio and video suitable for the SDP
39
39
  // remote answer.
40
40
  private _sendingRemoteRtpParametersByKind?: { [key: string]: RtpParameters };
41
+ // Initial server side DTLS role. If not 'auto', it will force the opposite
42
+ // value in client side.
43
+ private _forcedLocalDtlsRole?: DtlsRole;
41
44
  // RTCPeerConnection instance.
42
45
  private _pc: any;
43
46
  // Local stream for sending.
@@ -186,6 +189,13 @@ export class ReactNative extends HandlerInterface
186
189
  video : ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
187
190
  };
188
191
 
192
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto')
193
+ {
194
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
195
+ ? 'client'
196
+ : 'server';
197
+ }
198
+
189
199
  this._pc = new (RTCPeerConnection as any)(
190
200
  {
191
201
  iceServers : iceServers || [],
@@ -320,7 +330,13 @@ export class ReactNative extends HandlerInterface
320
330
  ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
321
331
 
322
332
  if (!this._transportReady)
323
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
333
+ {
334
+ await this._setupTransport(
335
+ {
336
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
337
+ localSdpObject
338
+ });
339
+ }
324
340
 
325
341
  if (track.kind === 'video' && encodings && encodings.length > 1)
326
342
  {
@@ -446,7 +462,7 @@ export class ReactNative extends HandlerInterface
446
462
  {
447
463
  logger.warn(
448
464
  'stopSending() | ignoring expected error due no sending tracks: %s',
449
- error.toString());
465
+ (error as Error).toString());
450
466
 
451
467
  return;
452
468
  }
@@ -533,7 +549,13 @@ export class ReactNative extends HandlerInterface
533
549
  .find((m: any) => m.type === 'application');
534
550
 
535
551
  if (!this._transportReady)
536
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
552
+ {
553
+ await this._setupTransport(
554
+ {
555
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
556
+ localSdpObject
557
+ });
558
+ }
537
559
 
538
560
  logger.debug(
539
561
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -619,7 +641,13 @@ export class ReactNative extends HandlerInterface
619
641
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
620
642
 
621
643
  if (!this._transportReady)
622
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
644
+ {
645
+ await this._setupTransport(
646
+ {
647
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
648
+ localSdpObject
649
+ });
650
+ }
623
651
 
624
652
  logger.debug(
625
653
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -739,7 +767,11 @@ export class ReactNative extends HandlerInterface
739
767
  {
740
768
  const localSdpObject = sdpTransform.parse(answer.sdp);
741
769
 
742
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
770
+ await this._setupTransport(
771
+ {
772
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
773
+ localSdpObject
774
+ });
743
775
  }
744
776
 
745
777
  logger.debug(
@@ -37,6 +37,9 @@ export class Safari11 extends HandlerInterface
37
37
  // Generic sending RTP parameters for audio and video suitable for the SDP
38
38
  // remote answer.
39
39
  private _sendingRemoteRtpParametersByKind?: { [key: string]: RtpParameters };
40
+ // Initial server side DTLS role. If not 'auto', it will force the opposite
41
+ // value in client side.
42
+ private _forcedLocalDtlsRole?: DtlsRole;
40
43
  // RTCPeerConnection instance.
41
44
  private _pc: any;
42
45
  // Local stream for sending.
@@ -182,6 +185,13 @@ export class Safari11 extends HandlerInterface
182
185
  video : ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
183
186
  };
184
187
 
188
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto')
189
+ {
190
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
191
+ ? 'client'
192
+ : 'server';
193
+ }
194
+
185
195
  this._pc = new (RTCPeerConnection as any)(
186
196
  {
187
197
  iceServers : iceServers || [],
@@ -315,7 +325,13 @@ export class Safari11 extends HandlerInterface
315
325
  ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
316
326
 
317
327
  if (!this._transportReady)
318
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
328
+ {
329
+ await this._setupTransport(
330
+ {
331
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
332
+ localSdpObject
333
+ });
334
+ }
319
335
 
320
336
  if (track.kind === 'video' && encodings && encodings.length > 1)
321
337
  {
@@ -441,7 +457,7 @@ export class Safari11 extends HandlerInterface
441
457
  {
442
458
  logger.warn(
443
459
  'stopSending() | ignoring expected error due no sending tracks: %s',
444
- error.toString());
460
+ (error as Error).toString());
445
461
 
446
462
  return;
447
463
  }
@@ -596,7 +612,13 @@ export class Safari11 extends HandlerInterface
596
612
  .find((m: any) => m.type === 'application');
597
613
 
598
614
  if (!this._transportReady)
599
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
615
+ {
616
+ await this._setupTransport(
617
+ {
618
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
619
+ localSdpObject
620
+ });
621
+ }
600
622
 
601
623
  logger.debug(
602
624
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -672,7 +694,13 @@ export class Safari11 extends HandlerInterface
672
694
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
673
695
 
674
696
  if (!this._transportReady)
675
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
697
+ {
698
+ await this._setupTransport(
699
+ {
700
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
701
+ localSdpObject
702
+ });
703
+ }
676
704
 
677
705
  logger.debug(
678
706
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -800,7 +828,11 @@ export class Safari11 extends HandlerInterface
800
828
  {
801
829
  const localSdpObject = sdpTransform.parse(answer.sdp);
802
830
 
803
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
831
+ await this._setupTransport(
832
+ {
833
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
834
+ localSdpObject
835
+ });
804
836
  }
805
837
 
806
838
  logger.debug(
@@ -37,6 +37,9 @@ export class Safari12 extends HandlerInterface
37
37
  // Generic sending RTP parameters for audio and video suitable for the SDP
38
38
  // remote answer.
39
39
  private _sendingRemoteRtpParametersByKind?: { [key: string]: RtpParameters };
40
+ // Initial server side DTLS role. If not 'auto', it will force the opposite
41
+ // value in client side.
42
+ private _forcedLocalDtlsRole?: DtlsRole;
40
43
  // RTCPeerConnection instance.
41
44
  private _pc: any;
42
45
  // Map of RTCTransceivers indexed by MID.
@@ -166,6 +169,13 @@ export class Safari12 extends HandlerInterface
166
169
  video : ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
167
170
  };
168
171
 
172
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto')
173
+ {
174
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
175
+ ? 'client'
176
+ : 'server';
177
+ }
178
+
169
179
  this._pc = new (RTCPeerConnection as any)(
170
180
  {
171
181
  iceServers : iceServers || [],
@@ -295,7 +305,13 @@ export class Safari12 extends HandlerInterface
295
305
  let offerMediaObject;
296
306
 
297
307
  if (!this._transportReady)
298
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
308
+ {
309
+ await this._setupTransport(
310
+ {
311
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
312
+ localSdpObject
313
+ });
314
+ }
299
315
 
300
316
  if (encodings && encodings.length > 1)
301
317
  {
@@ -419,6 +435,8 @@ export class Safari12 extends HandlerInterface
419
435
  answer);
420
436
 
421
437
  await this._pc.setRemoteDescription(answer);
438
+
439
+ this._mapMidTransceiver.delete(localId);
422
440
  }
423
441
 
424
442
  async replaceTrack(
@@ -546,7 +564,13 @@ export class Safari12 extends HandlerInterface
546
564
  .find((m: any) => m.type === 'application');
547
565
 
548
566
  if (!this._transportReady)
549
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
567
+ {
568
+ await this._setupTransport(
569
+ {
570
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
571
+ localSdpObject
572
+ });
573
+ }
550
574
 
551
575
  logger.debug(
552
576
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -621,7 +645,13 @@ export class Safari12 extends HandlerInterface
621
645
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
622
646
 
623
647
  if (!this._transportReady)
624
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
648
+ {
649
+ await this._setupTransport(
650
+ {
651
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
652
+ localSdpObject
653
+ });
654
+ }
625
655
 
626
656
  logger.debug(
627
657
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -673,6 +703,8 @@ export class Safari12 extends HandlerInterface
673
703
  answer);
674
704
 
675
705
  await this._pc.setLocalDescription(answer);
706
+
707
+ this._mapMidTransceiver.delete(localId);
676
708
  }
677
709
 
678
710
  async pauseReceiving(localId: string): Promise<void>
@@ -794,7 +826,11 @@ export class Safari12 extends HandlerInterface
794
826
  {
795
827
  const localSdpObject = sdpTransform.parse(answer.sdp);
796
828
 
797
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
829
+ await this._setupTransport(
830
+ {
831
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
832
+ localSdpObject
833
+ });
798
834
  }
799
835
 
800
836
  logger.debug(
package/tsconfig.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "compilerOptions":
4
4
  {
5
5
  "lib": [ "es2018", "dom" ],
6
- "target": "es2017",
6
+ "target": "es2018",
7
7
  "module": "commonjs",
8
8
  "moduleResolution": "node",
9
9
  "esModuleInterop": true,