mediasoup-client 3.20.0 → 3.22.0

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 (61) hide show
  1. package/README.md +9 -0
  2. package/lib/Consumer.d.ts.map +1 -1
  3. package/lib/Consumer.js +3 -0
  4. package/lib/DataConsumer.d.ts.map +1 -1
  5. package/lib/DataConsumer.js +8 -1
  6. package/lib/DataProducer.d.ts.map +1 -1
  7. package/lib/DataProducer.js +8 -1
  8. package/lib/Device.d.ts +0 -8
  9. package/lib/Device.d.ts.map +1 -1
  10. package/lib/Device.js +36 -21
  11. package/lib/Logger.d.ts +1 -0
  12. package/lib/Logger.d.ts.map +1 -1
  13. package/lib/Logger.js +4 -1
  14. package/lib/Producer.d.ts.map +1 -1
  15. package/lib/Producer.js +3 -0
  16. package/lib/RtpParameters.d.ts.map +1 -1
  17. package/lib/SctpParameters.d.ts +9 -22
  18. package/lib/SctpParameters.d.ts.map +1 -1
  19. package/lib/Transport.d.ts +1 -1
  20. package/lib/Transport.d.ts.map +1 -1
  21. package/lib/Transport.js +85 -25
  22. package/lib/handlers/Chrome111.d.ts +1 -0
  23. package/lib/handlers/Chrome111.d.ts.map +1 -1
  24. package/lib/handlers/Chrome111.js +56 -20
  25. package/lib/handlers/Chrome74.d.ts +1 -0
  26. package/lib/handlers/Chrome74.d.ts.map +1 -1
  27. package/lib/handlers/Chrome74.js +56 -20
  28. package/lib/handlers/FakeHandler.d.ts +0 -2
  29. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  30. package/lib/handlers/FakeHandler.js +35 -6
  31. package/lib/handlers/Firefox120.d.ts +1 -0
  32. package/lib/handlers/Firefox120.d.ts.map +1 -1
  33. package/lib/handlers/Firefox120.js +49 -15
  34. package/lib/handlers/HandlerInterface.d.ts +2 -3
  35. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  36. package/lib/handlers/ReactNative106.d.ts +1 -0
  37. package/lib/handlers/ReactNative106.d.ts.map +1 -1
  38. package/lib/handlers/ReactNative106.js +56 -20
  39. package/lib/handlers/Safari12.d.ts +1 -0
  40. package/lib/handlers/Safari12.d.ts.map +1 -1
  41. package/lib/handlers/Safari12.js +56 -20
  42. package/lib/handlers/fakeEvents/FakeEventListener.d.ts.map +1 -1
  43. package/lib/handlers/sdp/{MediaSection.d.ts → RemoteMediaSection.d.ts} +4 -4
  44. package/lib/handlers/sdp/RemoteMediaSection.d.ts.map +1 -0
  45. package/lib/handlers/sdp/{MediaSection.js → RemoteMediaSection.js} +47 -12
  46. package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
  47. package/lib/handlers/sdp/RemoteSdp.js +41 -8
  48. package/lib/handlers/sdp/commonUtils.js +34 -1
  49. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
  50. package/lib/index.d.ts +1 -1
  51. package/lib/index.js +42 -6
  52. package/lib/ortc.d.ts +1 -6
  53. package/lib/ortc.d.ts.map +1 -1
  54. package/lib/ortc.js +35 -34
  55. package/lib/test/fakeParameters.d.ts +0 -1
  56. package/lib/test/fakeParameters.d.ts.map +1 -1
  57. package/lib/test/fakeParameters.js +36 -10
  58. package/lib/test/test.js +39 -10
  59. package/npm-scripts.mjs +157 -36
  60. package/package.json +17 -15
  61. package/lib/handlers/sdp/MediaSection.d.ts.map +0 -1
package/lib/Transport.js CHANGED
@@ -1,12 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Transport = void 0;
4
37
  const awaitqueue_1 = require("awaitqueue");
5
38
  const Logger_1 = require("./Logger");
6
39
  const enhancedEvents_1 = require("./enhancedEvents");
7
40
  const errors_1 = require("./errors");
8
- const utils = require("./utils");
9
- const ortc = require("./ortc");
41
+ const utils = __importStar(require("./utils"));
42
+ const ortc = __importStar(require("./ortc"));
10
43
  const Producer_1 = require("./Producer");
11
44
  const Consumer_1 = require("./Consumer");
12
45
  const DataProducer_1 = require("./DataProducer");
@@ -40,8 +73,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
40
73
  // Whether we can produce audio/video based on computed extended RTP
41
74
  // capabilities.
42
75
  _canProduceByKind;
43
- // SCTP max message size if enabled.
44
- _maxSctpMessageSize;
76
+ // SCTP parameters of the mediasoup transport.
77
+ _sctpParameters;
45
78
  // RTC handler isntance.
46
79
  _handler;
47
80
  // Transport ICE gathering state.
@@ -88,7 +121,17 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
88
121
  this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
89
122
  this._recvRtpCapabilities = recvRtpCapabilities;
90
123
  this._canProduceByKind = canProduceByKind;
91
- this._maxSctpMessageSize = sctpParameters?.maxMessageSize;
124
+ // NOTE: Let's clone received SctpParameters and adapt them to be backwards
125
+ // compatible with old mediasoup server versions.
126
+ this._sctpParameters = utils.clone(sctpParameters);
127
+ if (this._sctpParameters) {
128
+ this._sctpParameters.maxSendMessageSize =
129
+ this._sctpParameters.maxSendMessageSize ??
130
+ this._sctpParameters.maxMessageSize;
131
+ this._sctpParameters.maxReceiveMessageSize =
132
+ this._sctpParameters.maxReceiveMessageSize ??
133
+ this._sctpParameters.maxMessageSize;
134
+ }
92
135
  // Clone and sanitize additionalSettings.
93
136
  const clonedAdditionalSettings = utils.clone(additionalSettings) ?? {};
94
137
  delete clonedAdditionalSettings.iceServers;
@@ -100,7 +143,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
100
143
  iceParameters,
101
144
  iceCandidates,
102
145
  dtlsParameters,
103
- sctpParameters,
146
+ sctpParameters: this._sctpParameters,
104
147
  iceServers,
105
148
  iceTransportPolicy,
106
149
  additionalSettings: clonedAdditionalSettings,
@@ -225,7 +268,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
225
268
  throw new TypeError('missing iceParameters');
226
269
  }
227
270
  // Enqueue command.
228
- return this._awaitQueue.push(async () => await this._handler.restartIce(iceParameters), 'transport.restartIce()');
271
+ await this._awaitQueue.push(async () => {
272
+ await this._handler.restartIce(iceParameters);
273
+ }, 'transport.restartIce()');
229
274
  }
230
275
  /**
231
276
  * Update ICE servers.
@@ -239,7 +284,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
239
284
  throw new TypeError('missing iceServers');
240
285
  }
241
286
  // Enqueue command.
242
- return this._awaitQueue.push(async () => this._handler.updateIceServers(iceServers), 'transport.updateIceServers()');
287
+ await this._awaitQueue.push(async () => {
288
+ await this._handler.updateIceServers(iceServers);
289
+ }, 'transport.updateIceServers()');
243
290
  }
244
291
  /**
245
292
  * Create a Producer.
@@ -253,7 +300,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
253
300
  throw new TypeError('missing track');
254
301
  }
255
302
  else if (this._direction !== 'send') {
256
- throw new errors_1.UnsupportedError('not a sending Transport');
303
+ throw new errors_1.UnsupportedError('not a sending transport');
257
304
  }
258
305
  else if (!this._canProduceByKind[track.kind]) {
259
306
  throw new errors_1.UnsupportedError(`cannot produce ${track.kind}`);
@@ -379,7 +426,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
379
426
  throw new errors_1.InvalidStateError('closed');
380
427
  }
381
428
  else if (this._direction !== 'recv') {
382
- throw new errors_1.UnsupportedError('not a receiving Transport');
429
+ throw new errors_1.UnsupportedError('not a receiving transport');
383
430
  }
384
431
  else if (typeof id !== 'string') {
385
432
  throw new TypeError('missing id');
@@ -435,10 +482,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
435
482
  throw new errors_1.InvalidStateError('closed');
436
483
  }
437
484
  else if (this._direction !== 'send') {
438
- throw new errors_1.UnsupportedError('not a sending Transport');
485
+ throw new errors_1.UnsupportedError('not a sending transport');
439
486
  }
440
- else if (!this._maxSctpMessageSize) {
441
- throw new errors_1.UnsupportedError('SCTP not enabled by remote Transport');
487
+ else if (!this._sctpParameters) {
488
+ throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
442
489
  }
443
490
  else if (this.listenerCount('connect') === 0 &&
444
491
  this._connectionState === 'new') {
@@ -496,10 +543,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
496
543
  throw new errors_1.InvalidStateError('closed');
497
544
  }
498
545
  else if (this._direction !== 'recv') {
499
- throw new errors_1.UnsupportedError('not a receiving Transport');
546
+ throw new errors_1.UnsupportedError('not a receiving transport');
500
547
  }
501
- else if (!this._maxSctpMessageSize) {
502
- throw new errors_1.UnsupportedError('SCTP not enabled by remote Transport');
548
+ else if (!this._sctpParameters) {
549
+ throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
503
550
  }
504
551
  else if (typeof id !== 'string') {
505
552
  throw new TypeError('missing id');
@@ -521,7 +568,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
521
568
  // Enqueue command.
522
569
  return this._awaitQueue.push(async () => {
523
570
  const { dataChannel } = await this._handler.receiveDataChannel({
524
- maxMessageSize: this._maxSctpMessageSize,
571
+ // NOTE: Mirror it.
572
+ maxMessageSize: this._sctpParameters?.maxSendMessageSize,
525
573
  sctpStreamParameters: clonedSctpStreamParameters,
526
574
  label,
527
575
  protocol,
@@ -739,7 +787,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
739
787
  }
740
788
  });
741
789
  handler.on('@icecandidateerror', (event) => {
742
- logger.warn(`ICE candidate error [url:${event.url}, localAddress:${event.address}, localPort:${event.port}]: ${event.errorCode} "${event.errorText}"`);
790
+ logger.debug(`ICE candidate error [url:${event.url}, localAddress:${event.address}, localPort:${event.port}]: ${event.errorCode} "${event.errorText}"`);
743
791
  this.safeEmit('icecandidateerror', event);
744
792
  });
745
793
  handler.on('@connectionstatechange', (connectionState) => {
@@ -760,36 +808,48 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
760
808
  return;
761
809
  }
762
810
  this._awaitQueue
763
- .push(async () => await this._handler.stopSending(producer.localId), 'producer @close event')
764
- .catch((error) => logger.warn('producer.close() failed:%o', error));
811
+ .push(async () => {
812
+ await this._handler.stopSending(producer.localId);
813
+ }, 'producer @close event')
814
+ .catch((error) => logger.warn('producer closure failed:%o', error));
765
815
  });
766
816
  producer.on('@pause', (callback, errback) => {
767
817
  this._awaitQueue
768
- .push(async () => await this._handler.pauseSending(producer.localId), 'producer @pause event')
818
+ .push(async () => {
819
+ await this._handler.pauseSending(producer.localId);
820
+ }, 'producer @pause event')
769
821
  .then(callback)
770
822
  .catch(errback);
771
823
  });
772
824
  producer.on('@resume', (callback, errback) => {
773
825
  this._awaitQueue
774
- .push(async () => await this._handler.resumeSending(producer.localId), 'producer @resume event')
826
+ .push(async () => {
827
+ await this._handler.resumeSending(producer.localId);
828
+ }, 'producer @resume event')
775
829
  .then(callback)
776
830
  .catch(errback);
777
831
  });
778
832
  producer.on('@replacetrack', (track, callback, errback) => {
779
833
  this._awaitQueue
780
- .push(async () => await this._handler.replaceTrack(producer.localId, track), 'producer @replacetrack event')
834
+ .push(async () => {
835
+ await this._handler.replaceTrack(producer.localId, track);
836
+ }, 'producer @replacetrack event')
781
837
  .then(callback)
782
838
  .catch(errback);
783
839
  });
784
840
  producer.on('@setmaxspatiallayer', (spatialLayer, callback, errback) => {
785
841
  this._awaitQueue
786
- .push(async () => await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer), 'producer @setmaxspatiallayer event')
842
+ .push(async () => {
843
+ await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer);
844
+ }, 'producer @setmaxspatiallayer event')
787
845
  .then(callback)
788
846
  .catch(errback);
789
847
  });
790
848
  producer.on('@setrtpencodingparameters', (params, callback, errback) => {
791
849
  this._awaitQueue
792
- .push(async () => await this._handler.setRtpEncodingParameters(producer.localId, params), 'producer @setrtpencodingparameters event')
850
+ .push(async () => {
851
+ await this._handler.setRtpEncodingParameters(producer.localId, params);
852
+ }, 'producer @setrtpencodingparameters event')
793
853
  .then(callback)
794
854
  .catch(errback);
795
855
  });
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
4
4
  export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _forcedLocalDtlsRole?;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Chrome111 = void 0;
4
- const sdpTransform = require("sdp-transform");
37
+ const sdpTransform = __importStar(require("sdp-transform"));
5
38
  const enhancedEvents_1 = require("../enhancedEvents");
6
39
  const Logger_1 = require("../Logger");
7
- const ortc = require("../ortc");
40
+ const ortc = __importStar(require("../ortc"));
8
41
  const errors_1 = require("../errors");
9
42
  const scalabilityModes_1 = require("../scalabilityModes");
10
43
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
11
- const sdpCommonUtils = require("./sdp/commonUtils");
12
- const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
13
- const ortcUtils = require("./ortc/utils");
44
+ const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
45
+ const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
46
+ const ortcUtils = __importStar(require("./ortc/utils"));
14
47
  const logger = new Logger_1.Logger('Chrome111');
15
48
  const NAME = 'Chrome111';
16
- const SCTP_NUM_STREAMS = { OS: 65535, MIS: 65535 };
17
49
  class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
18
50
  // Closed flag.
19
51
  _closed = false;
20
52
  // Handler direction.
21
53
  _direction;
54
+ // DataChannel max receive message size.
55
+ _sctpMaxReceiveMessageSize;
22
56
  // Remote SDP handler.
23
57
  _remoteSdp;
24
58
  // Callback to request sending extended RTP capabilities on demand.
@@ -81,12 +115,6 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
81
115
  throw error;
82
116
  }
83
117
  },
84
- getNativeSctpCapabilities: async () => {
85
- logger.debug('getNativeSctpCapabilities()');
86
- return {
87
- numStreams: SCTP_NUM_STREAMS,
88
- };
89
- },
90
118
  };
91
119
  }
92
120
  static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
@@ -106,6 +134,8 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
106
134
  super();
107
135
  logger.debug('constructor()');
108
136
  this._direction = direction;
137
+ // NOTE: Mirror it.
138
+ this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
109
139
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
110
140
  iceParameters,
111
141
  iceCandidates,
@@ -237,11 +267,13 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
237
267
  this._remoteSdp.setSessionExtmapAllowMixed();
238
268
  }
239
269
  const extraHeaderExtensions = [];
240
- extraHeaderExtensions.push({
241
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
242
- kind: track.kind,
243
- direction: 'sendonly',
244
- });
270
+ if (headerExtensionOptions?.absCaptureTime) {
271
+ extraHeaderExtensions.push({
272
+ uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
273
+ kind: track.kind,
274
+ direction: 'sendonly',
275
+ });
276
+ }
245
277
  const nativeRtpCapabilities = Chrome111.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
246
278
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
247
279
  // Generic sending RTP parameters.
@@ -490,7 +522,7 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
490
522
  const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
491
523
  // Increase next id.
492
524
  this._nextSendSctpStreamId =
493
- ++this._nextSendSctpStreamId % SCTP_NUM_STREAMS.MIS;
525
+ ++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
494
526
  // If this is the first DataChannel we need to create the SDP answer with
495
527
  // m=application section.
496
528
  if (!this._hasDataChannelMediaSection) {
@@ -714,7 +746,9 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
714
746
  let answer = await this._pc.createAnswer();
715
747
  const localSdpObject = sdpTransform.parse(answer.sdp);
716
748
  const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
717
- answerMediaObject.maxMessageSize = maxMessageSize;
749
+ if (typeof maxMessageSize === 'number') {
750
+ answerMediaObject.maxMessageSize = maxMessageSize;
751
+ }
718
752
  if (!this._transportReady) {
719
753
  await this.setupTransport({
720
754
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -732,7 +766,9 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
732
766
  return { dataChannel };
733
767
  }
734
768
  getDataChannelMaxMessageSize() {
735
- return this._pc.sctp?.maxMessageSize;
769
+ return this._direction === 'send'
770
+ ? this._pc.sctp?.maxMessageSize
771
+ : this._sctpMaxReceiveMessageSize;
736
772
  }
737
773
  async setupTransport({ localDtlsRole, localSdpObject, }) {
738
774
  if (!localSdpObject) {
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerEvents, HandlerInterface, HandlerSendOption
4
4
  export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _forcedLocalDtlsRole?;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAc5D,OAAO,KAAK,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAGhB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAO5B,qBAAa,QACZ,SAAQ,oBAAoB,CAAC,aAAa,CAC1C,YAAW,gBAAgB;IAG3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,+BAA+B,CAEV;IAG7B,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CACxB;IAEX,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;IAsDtC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA4BtC,OAAO;IA+DP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEQ,KAAK,IAAI,IAAI;IAqChB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM5C,IAAI,CAAC,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,KAAK,GACL,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsO5C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC7C,YAAY,CACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAuBV,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAsDV,wBAAwB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAkDV,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAaxD,eAAe,CAAC,EACrB,oBAAoB,GACpB,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA0ElE,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAwG5B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ChD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAa1D,kBAAkB,CAAC,EACxB,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,QAAQ,GACR,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA0E9E,4BAA4B,IAAI,MAAM,GAAG,SAAS;YAIpC,cAAc;IAgC5B,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,uBAAuB,CAE7B;IAEF,OAAO,CAAC,0BAA0B,CAiChC;IAEF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;CAO3B"}
1
+ {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Chrome74 = void 0;
4
- const sdpTransform = require("sdp-transform");
37
+ const sdpTransform = __importStar(require("sdp-transform"));
5
38
  const Logger_1 = require("../Logger");
6
39
  const enhancedEvents_1 = require("../enhancedEvents");
7
- const ortc = require("../ortc");
40
+ const ortc = __importStar(require("../ortc"));
8
41
  const errors_1 = require("../errors");
9
42
  const scalabilityModes_1 = require("../scalabilityModes");
10
43
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
11
- const sdpCommonUtils = require("./sdp/commonUtils");
12
- const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
13
- const ortcUtils = require("./ortc/utils");
44
+ const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
45
+ const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
46
+ const ortcUtils = __importStar(require("./ortc/utils"));
14
47
  const logger = new Logger_1.Logger('Chrome74');
15
48
  const NAME = 'Chrome74';
16
- const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
17
49
  class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
18
50
  // Closed flag.
19
51
  _closed = false;
20
52
  // Handler direction.
21
53
  _direction;
54
+ // DataChannel max receive message size.
55
+ _sctpMaxReceiveMessageSize;
22
56
  // Remote SDP handler.
23
57
  _remoteSdp;
24
58
  // Callback to request sending extended RTP capabilities on demand.
@@ -76,12 +110,6 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
76
110
  throw error;
77
111
  }
78
112
  },
79
- getNativeSctpCapabilities: async () => {
80
- logger.debug('getNativeSctpCapabilities()');
81
- return {
82
- numStreams: SCTP_NUM_STREAMS,
83
- };
84
- },
85
113
  };
86
114
  }
87
115
  static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
@@ -101,6 +129,8 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
101
129
  super();
102
130
  logger.debug('constructor()');
103
131
  this._direction = direction;
132
+ // NOTE: Mirror it.
133
+ this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
104
134
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
105
135
  iceParameters,
106
136
  iceCandidates,
@@ -214,11 +244,13 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
214
244
  this._remoteSdp.setSessionExtmapAllowMixed();
215
245
  }
216
246
  const extraHeaderExtensions = [];
217
- extraHeaderExtensions.push({
218
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
219
- kind: track.kind,
220
- direction: 'sendonly',
221
- });
247
+ if (headerExtensionOptions?.absCaptureTime) {
248
+ extraHeaderExtensions.push({
249
+ uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
250
+ kind: track.kind,
251
+ direction: 'sendonly',
252
+ });
253
+ }
222
254
  const nativeRtpCapabilities = Chrome74.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
223
255
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
224
256
  // Generic sending RTP parameters.
@@ -505,7 +537,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
505
537
  const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
506
538
  // Increase next id.
507
539
  this._nextSendSctpStreamId =
508
- ++this._nextSendSctpStreamId % SCTP_NUM_STREAMS.MIS;
540
+ ++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
509
541
  // If this is the first DataChannel we need to create the SDP answer with
510
542
  // m=application section.
511
543
  if (!this._hasDataChannelMediaSection) {
@@ -716,7 +748,9 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
716
748
  let answer = await this._pc.createAnswer();
717
749
  const localSdpObject = sdpTransform.parse(answer.sdp);
718
750
  const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
719
- answerMediaObject.maxMessageSize = maxMessageSize;
751
+ if (typeof maxMessageSize === 'number') {
752
+ answerMediaObject.maxMessageSize = maxMessageSize;
753
+ }
720
754
  if (!this._transportReady) {
721
755
  await this.setupTransport({
722
756
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -734,7 +768,9 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
734
768
  return { dataChannel };
735
769
  }
736
770
  getDataChannelMaxMessageSize() {
737
- return this._pc.sctp?.maxMessageSize;
771
+ return this._direction === 'send'
772
+ ? this._pc.sctp?.maxMessageSize
773
+ : this._sctpMaxReceiveMessageSize;
738
774
  }
739
775
  async setupTransport({ localDtlsRole, localSdpObject, }) {
740
776
  if (!localSdpObject) {
@@ -1,11 +1,9 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters, DtlsParameters, IceGatheringState, ConnectionState } from '../Transport';
3
3
  import type { RtpCapabilities } from '../RtpParameters';
4
- import type { SctpCapabilities } from '../SctpParameters';
5
4
  import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
6
5
  export type FakeParameters = {
7
6
  generateNativeRtpCapabilities: () => RtpCapabilities;
8
- generateNativeSctpCapabilities: () => SctpCapabilities;
9
7
  generateLocalDtlsParameters: () => DtlsParameters;
10
8
  };
11
9
  export declare class FakeHandler extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
@@ -1 +1 @@
1
- {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.FakeHandler = void 0;
4
37
  const fake_mediastreamtrack_1 = require("fake-mediastreamtrack");
5
38
  const enhancedEvents_1 = require("../enhancedEvents");
6
39
  const Logger_1 = require("../Logger");
7
- const utils = require("../utils");
8
- const ortc = require("../ortc");
40
+ const utils = __importStar(require("../utils"));
41
+ const ortc = __importStar(require("../ortc"));
9
42
  const errors_1 = require("../errors");
10
43
  const FakeEventTarget_1 = require("./fakeEvents/FakeEventTarget");
11
44
  const logger = new Logger_1.Logger('FakeHandler');
@@ -40,10 +73,6 @@ class FakeHandler extends enhancedEvents_1.EnhancedEventEmitter {
40
73
  logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
41
74
  return FakeHandler.getLocalRtpCapabilities(fakeParameters);
42
75
  },
43
- getNativeSctpCapabilities: async () => {
44
- logger.debug('getNativeSctpCapabilities()');
45
- return fakeParameters.generateNativeSctpCapabilities();
46
- },
47
76
  };
48
77
  }
49
78
  static getLocalRtpCapabilities(fakeParameters) {
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
4
4
  export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _pc;