mediasoup-client 3.6.43 → 3.6.47

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 +42 -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 +42 -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.js +10 -4
  24. package/lib/handlers/ReactNative.d.ts +1 -0
  25. package/lib/handlers/ReactNative.d.ts.map +1 -1
  26. package/lib/handlers/ReactNative.js +40 -9
  27. package/lib/handlers/Safari11.d.ts +1 -0
  28. package/lib/handlers/Safari11.d.ts.map +1 -1
  29. package/lib/handlers/Safari11.js +40 -10
  30. package/lib/handlers/Safari12.d.ts +1 -0
  31. package/lib/handlers/Safari12.d.ts.map +1 -1
  32. package/lib/handlers/Safari12.js +40 -10
  33. package/lib/handlers/ortc/edgeUtils.js +1 -1
  34. package/lib/handlers/sdp/MediaSection.js +1 -1
  35. package/lib/handlers/sdp/RemoteSdp.js +1 -1
  36. package/lib/handlers/sdp/commonUtils.js +1 -1
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.js +3 -3
  39. package/lib/ortc.js +5 -5
  40. package/lib/types.js +1 -1
  41. package/package.json +9 -9
  42. package/src/DataConsumer.ts +2 -2
  43. package/src/Device.ts +7 -2
  44. package/src/Transport.ts +3 -3
  45. package/src/handlers/Chrome55.ts +37 -5
  46. package/src/handlers/Chrome67.ts +37 -5
  47. package/src/handlers/Chrome70.ts +36 -4
  48. package/src/handlers/Chrome74.ts +36 -4
  49. package/src/handlers/Edge11.ts +3 -1
  50. package/src/handlers/Firefox60.ts +1 -1
  51. package/src/handlers/ReactNative.ts +37 -5
  52. package/src/handlers/Safari11.ts +37 -5
  53. package/src/handlers/Safari12.ts +36 -4
  54. package/src/ortc.ts +6 -6
  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;
@@ -594,7 +610,13 @@ export class Chrome74 extends HandlerInterface
594
610
  .find((m: any) => m.type === 'application');
595
611
 
596
612
  if (!this._transportReady)
597
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
613
+ {
614
+ await this._setupTransport(
615
+ {
616
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
617
+ localSdpObject
618
+ });
619
+ }
598
620
 
599
621
  logger.debug(
600
622
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -669,7 +691,13 @@ export class Chrome74 extends HandlerInterface
669
691
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
670
692
 
671
693
  if (!this._transportReady)
672
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
694
+ {
695
+ await this._setupTransport(
696
+ {
697
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
698
+ localSdpObject
699
+ });
700
+ }
673
701
 
674
702
  logger.debug(
675
703
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -844,7 +872,11 @@ export class Chrome74 extends HandlerInterface
844
872
  {
845
873
  const localSdpObject = sdpTransform.parse(answer.sdp);
846
874
 
847
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
875
+ await this._setupTransport(
876
+ {
877
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
878
+ localSdpObject
879
+ });
848
880
  }
849
881
 
850
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;
@@ -610,7 +610,7 @@ export class Firefox60 extends HandlerInterface
610
610
  .find((m: any) => m.type === 'application');
611
611
 
612
612
  if (!this._transportReady)
613
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
613
+ await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
614
614
 
615
615
  logger.debug(
616
616
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -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
  {
@@ -548,7 +564,13 @@ export class Safari12 extends HandlerInterface
548
564
  .find((m: any) => m.type === 'application');
549
565
 
550
566
  if (!this._transportReady)
551
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
567
+ {
568
+ await this._setupTransport(
569
+ {
570
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
571
+ localSdpObject
572
+ });
573
+ }
552
574
 
553
575
  logger.debug(
554
576
  'sendDataChannel() | calling pc.setLocalDescription() [offer:%o]',
@@ -623,7 +645,13 @@ export class Safari12 extends HandlerInterface
623
645
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
624
646
 
625
647
  if (!this._transportReady)
626
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
648
+ {
649
+ await this._setupTransport(
650
+ {
651
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
652
+ localSdpObject
653
+ });
654
+ }
627
655
 
628
656
  logger.debug(
629
657
  'receive() | calling pc.setLocalDescription() [answer:%o]',
@@ -798,7 +826,11 @@ export class Safari12 extends HandlerInterface
798
826
  {
799
827
  const localSdpObject = sdpTransform.parse(answer.sdp);
800
828
 
801
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
829
+ await this._setupTransport(
830
+ {
831
+ localDtlsRole : this._forcedLocalDtlsRole ?? 'client',
832
+ localSdpObject
833
+ });
802
834
  }
803
835
 
804
836
  logger.debug(
package/src/ortc.ts CHANGED
@@ -1073,15 +1073,15 @@ function matchCodecs(
1073
1073
  {
1074
1074
  case 'video/h264':
1075
1075
  {
1076
- const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
1077
- const bPacketizationMode = bCodec.parameters['packetization-mode'] || 0;
1078
-
1079
- if (aPacketizationMode !== bPacketizationMode)
1080
- return false;
1081
-
1082
1076
  // If strict matching check profile-level-id.
1083
1077
  if (strict)
1084
1078
  {
1079
+ const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
1080
+ const bPacketizationMode = bCodec.parameters['packetization-mode'] || 0;
1081
+
1082
+ if (aPacketizationMode !== bPacketizationMode)
1083
+ return false;
1084
+
1085
1085
  if (!h264.isSameProfile(aCodec.parameters, bCodec.parameters))
1086
1086
  return false;
1087
1087
 
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,