mediasoup-client 3.7.0 → 3.7.2

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 (105) hide show
  1. package/README.md +85 -112
  2. package/lib/Consumer.d.ts +1 -1
  3. package/lib/Consumer.d.ts.map +1 -1
  4. package/lib/Consumer.js +1 -1
  5. package/lib/DataConsumer.d.ts +1 -1
  6. package/lib/DataConsumer.d.ts.map +1 -1
  7. package/lib/DataConsumer.js +1 -1
  8. package/lib/DataProducer.d.ts +1 -1
  9. package/lib/DataProducer.d.ts.map +1 -1
  10. package/lib/DataProducer.js +1 -1
  11. package/lib/Device.d.ts +3 -3
  12. package/lib/Device.d.ts.map +1 -1
  13. package/lib/Device.js +43 -42
  14. package/lib/EnhancedEventEmitter.d.ts.map +1 -1
  15. package/lib/Logger.d.ts.map +1 -1
  16. package/lib/Producer.d.ts +5 -15
  17. package/lib/Producer.d.ts.map +1 -1
  18. package/lib/Producer.js +2 -2
  19. package/lib/RtpParameters.d.ts.map +1 -1
  20. package/lib/SctpParameters.d.ts.map +1 -1
  21. package/lib/Transport.d.ts +14 -10
  22. package/lib/Transport.d.ts.map +1 -1
  23. package/lib/Transport.js +71 -53
  24. package/lib/errors.d.ts.map +1 -1
  25. package/lib/errors.js +6 -6
  26. package/lib/handlers/Chrome111.d.ts +4 -4
  27. package/lib/handlers/Chrome111.d.ts.map +1 -1
  28. package/lib/handlers/Chrome111.js +64 -57
  29. package/lib/handlers/Chrome55.d.ts +4 -4
  30. package/lib/handlers/Chrome55.d.ts.map +1 -1
  31. package/lib/handlers/Chrome55.js +75 -62
  32. package/lib/handlers/Chrome67.d.ts +4 -4
  33. package/lib/handlers/Chrome67.d.ts.map +1 -1
  34. package/lib/handlers/Chrome67.js +77 -65
  35. package/lib/handlers/Chrome70.d.ts +4 -4
  36. package/lib/handlers/Chrome70.d.ts.map +1 -1
  37. package/lib/handlers/Chrome70.js +68 -60
  38. package/lib/handlers/Chrome74.d.ts +4 -4
  39. package/lib/handlers/Chrome74.d.ts.map +1 -1
  40. package/lib/handlers/Chrome74.js +65 -58
  41. package/lib/handlers/Edge11.d.ts +1 -1
  42. package/lib/handlers/Edge11.d.ts.map +1 -1
  43. package/lib/handlers/Edge11.js +43 -37
  44. package/lib/handlers/FakeHandler.d.ts +3 -3
  45. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  46. package/lib/handlers/FakeHandler.js +19 -22
  47. package/lib/handlers/Firefox60.d.ts +4 -4
  48. package/lib/handlers/Firefox60.d.ts.map +1 -1
  49. package/lib/handlers/Firefox60.js +65 -52
  50. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  51. package/lib/handlers/ReactNative.d.ts +4 -4
  52. package/lib/handlers/ReactNative.d.ts.map +1 -1
  53. package/lib/handlers/ReactNative.js +76 -64
  54. package/lib/handlers/ReactNativeUnifiedPlan.d.ts +4 -4
  55. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
  56. package/lib/handlers/ReactNativeUnifiedPlan.js +65 -58
  57. package/lib/handlers/Safari11.d.ts +4 -4
  58. package/lib/handlers/Safari11.d.ts.map +1 -1
  59. package/lib/handlers/Safari11.js +74 -61
  60. package/lib/handlers/Safari12.d.ts +4 -4
  61. package/lib/handlers/Safari12.d.ts.map +1 -1
  62. package/lib/handlers/Safari12.js +65 -57
  63. package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -1
  64. package/lib/handlers/ortc/utils.d.ts.map +1 -1
  65. package/lib/handlers/ortc/utils.js +2 -2
  66. package/lib/handlers/sdp/MediaSection.d.ts +5 -5
  67. package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
  68. package/lib/handlers/sdp/MediaSection.js +287 -305
  69. package/lib/handlers/sdp/RemoteSdp.d.ts +5 -5
  70. package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
  71. package/lib/handlers/sdp/RemoteSdp.js +28 -30
  72. package/lib/handlers/sdp/commonUtils.d.ts +4 -4
  73. package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
  74. package/lib/handlers/sdp/commonUtils.js +41 -46
  75. package/lib/handlers/sdp/plainRtpUtils.d.ts +2 -2
  76. package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
  77. package/lib/handlers/sdp/plainRtpUtils.js +5 -7
  78. package/lib/handlers/sdp/planBUtils.d.ts +2 -2
  79. package/lib/handlers/sdp/planBUtils.d.ts.map +1 -1
  80. package/lib/handlers/sdp/planBUtils.js +11 -14
  81. package/lib/handlers/sdp/unifiedPlanUtils.d.ts +2 -2
  82. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
  83. package/lib/handlers/sdp/unifiedPlanUtils.js +11 -14
  84. package/lib/index.d.ts +1 -1
  85. package/lib/index.js +1 -1
  86. package/lib/ortc.d.ts.map +1 -1
  87. package/lib/ortc.js +90 -92
  88. package/lib/scalabilityModes.d.ts.map +1 -1
  89. package/lib/scalabilityModes.js +2 -2
  90. package/lib/{tests → test}/fakeParameters.d.ts +2 -2
  91. package/lib/test/fakeParameters.d.ts.map +1 -0
  92. package/lib/test/fakeParameters.js +645 -0
  93. package/lib/{tests → test}/test.d.ts.map +1 -1
  94. package/lib/{tests → test}/test.js +466 -495
  95. package/lib/test/uaTestCases.d.ts.map +1 -0
  96. package/lib/{tests → test}/uaTestCases.js +17 -17
  97. package/lib/types.d.ts.map +1 -1
  98. package/lib/utils.d.ts.map +1 -1
  99. package/npm-scripts.mjs +72 -98
  100. package/package.json +93 -90
  101. package/lib/tests/fakeParameters.d.ts.map +0 -1
  102. package/lib/tests/fakeParameters.js +0 -662
  103. package/lib/tests/uaTestCases.d.ts.map +0 -1
  104. /package/lib/{tests → test}/test.d.ts +0 -0
  105. /package/lib/{tests → test}/uaTestCases.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addLegacySimulcast = exports.getRtpEncodings = void 0;
4
- function getRtpEncodings({ offerMediaObject }) {
4
+ function getRtpEncodings({ offerMediaObject, }) {
5
5
  const ssrcs = new Set();
6
6
  for (const line of offerMediaObject.ssrcs || []) {
7
7
  const ssrc = line.id;
@@ -48,13 +48,12 @@ exports.getRtpEncodings = getRtpEncodings;
48
48
  /**
49
49
  * Adds multi-ssrc based simulcast into the given SDP media section offer.
50
50
  */
51
- function addLegacySimulcast({ offerMediaObject, numStreams }) {
51
+ function addLegacySimulcast({ offerMediaObject, numStreams, }) {
52
52
  if (numStreams <= 1) {
53
53
  throw new TypeError('numStreams must be greater than 1');
54
54
  }
55
55
  // Get the SSRC.
56
- const ssrcMsidLine = (offerMediaObject.ssrcs || [])
57
- .find((line) => line.attribute === 'msid');
56
+ const ssrcMsidLine = (offerMediaObject.ssrcs || []).find((line) => line.attribute === 'msid');
58
57
  if (!ssrcMsidLine) {
59
58
  throw new Error('a=ssrc line with msid information not found');
60
59
  }
@@ -62,8 +61,7 @@ function addLegacySimulcast({ offerMediaObject, numStreams }) {
62
61
  const firstSsrc = ssrcMsidLine.id;
63
62
  let firstRtxSsrc;
64
63
  // Get the SSRC for RTX.
65
- (offerMediaObject.ssrcGroups || [])
66
- .some((line) => {
64
+ (offerMediaObject.ssrcGroups || []).some((line) => {
67
65
  if (line.semantics !== 'FID') {
68
66
  return false;
69
67
  }
@@ -76,8 +74,7 @@ function addLegacySimulcast({ offerMediaObject, numStreams }) {
76
74
  return false;
77
75
  }
78
76
  });
79
- const ssrcCnameLine = offerMediaObject.ssrcs
80
- .find((line) => line.attribute === 'cname');
77
+ const ssrcCnameLine = offerMediaObject.ssrcs.find((line) => line.attribute === 'cname');
81
78
  if (!ssrcCnameLine) {
82
79
  throw new Error('a=ssrc line with cname information not found');
83
80
  }
@@ -94,19 +91,19 @@ function addLegacySimulcast({ offerMediaObject, numStreams }) {
94
91
  offerMediaObject.ssrcs = [];
95
92
  offerMediaObject.ssrcGroups.push({
96
93
  semantics: 'SIM',
97
- ssrcs: ssrcs.join(' ')
94
+ ssrcs: ssrcs.join(' '),
98
95
  });
99
96
  for (let i = 0; i < ssrcs.length; ++i) {
100
97
  const ssrc = ssrcs[i];
101
98
  offerMediaObject.ssrcs.push({
102
99
  id: ssrc,
103
100
  attribute: 'cname',
104
- value: cname
101
+ value: cname,
105
102
  });
106
103
  offerMediaObject.ssrcs.push({
107
104
  id: ssrc,
108
105
  attribute: 'msid',
109
- value: `${streamId} ${trackId}`
106
+ value: `${streamId} ${trackId}`,
110
107
  });
111
108
  }
112
109
  for (let i = 0; i < rtxSsrcs.length; ++i) {
@@ -115,16 +112,16 @@ function addLegacySimulcast({ offerMediaObject, numStreams }) {
115
112
  offerMediaObject.ssrcs.push({
116
113
  id: rtxSsrc,
117
114
  attribute: 'cname',
118
- value: cname
115
+ value: cname,
119
116
  });
120
117
  offerMediaObject.ssrcs.push({
121
118
  id: rtxSsrc,
122
119
  attribute: 'msid',
123
- value: `${streamId} ${trackId}`
120
+ value: `${streamId} ${trackId}`,
124
121
  });
125
122
  offerMediaObject.ssrcGroups.push({
126
123
  semantics: 'FID',
127
- ssrcs: `${ssrc} ${rtxSsrc}`
124
+ ssrcs: `${ssrc} ${rtxSsrc}`,
128
125
  });
129
126
  }
130
127
  }
package/lib/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { types };
8
8
  /**
9
9
  * Expose mediasoup-client version.
10
10
  */
11
- export declare const version = "3.7.0";
11
+ export declare const version = "3.7.2";
12
12
  /**
13
13
  * Expose Device class and detectDevice() helper.
14
14
  */
package/lib/index.js CHANGED
@@ -37,7 +37,7 @@ exports.types = types;
37
37
  /**
38
38
  * Expose mediasoup-client version.
39
39
  */
40
- exports.version = '3.7.0';
40
+ exports.version = '3.7.2';
41
41
  /**
42
42
  * Expose parseScalabilityMode() function.
43
43
  */
package/lib/ortc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ortc.d.ts","sourceRoot":"","sources":["../src/ortc.ts"],"names":[],"mappings":"AACA,OAAO,EACN,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAM,kBAAkB,CAAC;AAO1B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAoCnE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA4F1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkB3D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CA6CxE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAiEjE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA2F1E;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,4BAA4B,GAC/B,IAAI,CAmDN;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CA4CnF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAkBjE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAcrE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAkBvE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA8BnE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAkE/E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,eAAe,GACzB,GAAG,CA6GL;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,uBAAuB,EAAE,GAAG,GAAG,eAAe,CAuEpF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,GAAG,GAC1B,aAAa,CA2Ef;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,GAAG,GAC1B,aAAa,CAiHf;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,kBAAkB,EAAE,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,GAC3B,kBAAkB,EAAE,CAuCtB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,kBAAkB,EAAE,aAAa,GAC/B,aAAa,CAsBf;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,GAAG,OAAO,CAI9E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACzB,aAAa,EAAE,aAAa,EAC5B,uBAAuB,EAAE,GAAG,GAC1B,OAAO,CAcT"}
1
+ {"version":3,"file":"ortc.d.ts","sourceRoot":"","sources":["../src/ortc.ts"],"names":[],"mappings":"AACA,OAAO,EACN,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAM,kBAAkB,CAAC;AAO1B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA0BnE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA8E1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAc3D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAiCxE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAiDjE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA0E1E;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,4BAA4B,GAC/B,IAAI,CAuCN;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,qBAAqB,GAC7B,IAAI,CAqCN;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAcjE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAWrE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAcvE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAwBnE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,oBAAoB,GAC1B,IAAI,CA8DN;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,eAAe,GACzB,GAAG,CA8GL;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,uBAAuB,EAAE,GAAG,GAC1B,eAAe,CA6DjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,GAAG,GAC1B,aAAa,CA8Df;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,GAAG,GAC1B,aAAa,CAgGf;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,kBAAkB,EAAE,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,GAC3B,kBAAkB,EAAE,CA+BtB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,kBAAkB,EAAE,aAAa,GAC/B,aAAa,CAoBf;AAED;;GAEG;AACH,wBAAgB,OAAO,CACtB,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,GAAG,GAC1B,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACzB,aAAa,EAAE,aAAa,EAC5B,uBAAuB,EAAE,GAAG,GAC1B,OAAO,CAaT"}
package/lib/ortc.js CHANGED
@@ -81,7 +81,8 @@ function validateRtpCodecCapability(codec) {
81
81
  // Just override kind with media component of mimeType.
82
82
  codec.kind = mimeTypeMatch[1].toLowerCase();
83
83
  // preferredPayloadType is optional.
84
- if (codec.preferredPayloadType && typeof codec.preferredPayloadType !== 'number') {
84
+ if (codec.preferredPayloadType &&
85
+ typeof codec.preferredPayloadType !== 'number') {
85
86
  throw new TypeError('invalid codec.preferredPayloadType');
86
87
  }
87
88
  // clockRate is mandatory.
@@ -369,7 +370,8 @@ function validateRtpEncodingParameters(encoding) {
369
370
  encoding.dtx = false;
370
371
  }
371
372
  // scalabilityMode is optional.
372
- if (encoding.scalabilityMode && typeof encoding.scalabilityMode !== 'string') {
373
+ if (encoding.scalabilityMode &&
374
+ typeof encoding.scalabilityMode !== 'string') {
373
375
  throw new TypeError('invalid encoding.scalabilityMode');
374
376
  }
375
377
  }
@@ -477,7 +479,8 @@ function validateSctpStreamParameters(params) {
477
479
  params.ordered = true;
478
480
  }
479
481
  // maxPacketLifeTime is optional.
480
- if (params.maxPacketLifeTime && typeof params.maxPacketLifeTime !== 'number') {
482
+ if (params.maxPacketLifeTime &&
483
+ typeof params.maxPacketLifeTime !== 'number') {
481
484
  throw new TypeError('invalid params.maxPacketLifeTime');
482
485
  }
483
486
  // maxRetransmits is optional.
@@ -492,7 +495,8 @@ function validateSctpStreamParameters(params) {
492
495
  (params.maxPacketLifeTime || params.maxRetransmits)) {
493
496
  throw new TypeError('cannot be ordered with maxPacketLifeTime or maxRetransmits');
494
497
  }
495
- else if (!orderedGiven && (params.maxPacketLifeTime || params.maxRetransmits)) {
498
+ else if (!orderedGiven &&
499
+ (params.maxPacketLifeTime || params.maxRetransmits)) {
496
500
  params.ordered = false;
497
501
  }
498
502
  // label is optional.
@@ -511,15 +515,14 @@ exports.validateSctpStreamParameters = validateSctpStreamParameters;
511
515
  function getExtendedRtpCapabilities(localCaps, remoteCaps) {
512
516
  const extendedRtpCapabilities = {
513
517
  codecs: [],
514
- headerExtensions: []
518
+ headerExtensions: [],
515
519
  };
516
520
  // Match media codecs and keep the order preferred by remoteCaps.
517
521
  for (const remoteCodec of remoteCaps.codecs || []) {
518
522
  if (isRtxCodec(remoteCodec)) {
519
523
  continue;
520
524
  }
521
- const matchingLocalCodec = (localCaps.codecs || [])
522
- .find((localCodec) => (matchCodecs(localCodec, remoteCodec, { strict: true, modify: true })));
525
+ const matchingLocalCodec = (localCaps.codecs || []).find((localCodec) => matchCodecs(localCodec, remoteCodec, { strict: true, modify: true }));
523
526
  if (!matchingLocalCodec) {
524
527
  continue;
525
528
  }
@@ -534,27 +537,26 @@ function getExtendedRtpCapabilities(localCaps, remoteCaps) {
534
537
  remoteRtxPayloadType: undefined,
535
538
  localParameters: matchingLocalCodec.parameters,
536
539
  remoteParameters: remoteCodec.parameters,
537
- rtcpFeedback: reduceRtcpFeedback(matchingLocalCodec, remoteCodec)
540
+ rtcpFeedback: reduceRtcpFeedback(matchingLocalCodec, remoteCodec),
538
541
  };
539
542
  extendedRtpCapabilities.codecs.push(extendedCodec);
540
543
  }
541
544
  // Match RTX codecs.
542
545
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
543
- const matchingLocalRtxCodec = localCaps.codecs
544
- .find((localCodec) => (isRtxCodec(localCodec) &&
545
- localCodec.parameters.apt === extendedCodec.localPayloadType));
546
- const matchingRemoteRtxCodec = remoteCaps.codecs
547
- .find((remoteCodec) => (isRtxCodec(remoteCodec) &&
548
- remoteCodec.parameters.apt === extendedCodec.remotePayloadType));
546
+ const matchingLocalRtxCodec = localCaps.codecs.find((localCodec) => isRtxCodec(localCodec) &&
547
+ localCodec.parameters.apt === extendedCodec.localPayloadType);
548
+ const matchingRemoteRtxCodec = remoteCaps.codecs.find((remoteCodec) => isRtxCodec(remoteCodec) &&
549
+ remoteCodec.parameters.apt === extendedCodec.remotePayloadType);
549
550
  if (matchingLocalRtxCodec && matchingRemoteRtxCodec) {
550
- extendedCodec.localRtxPayloadType = matchingLocalRtxCodec.preferredPayloadType;
551
- extendedCodec.remoteRtxPayloadType = matchingRemoteRtxCodec.preferredPayloadType;
551
+ extendedCodec.localRtxPayloadType =
552
+ matchingLocalRtxCodec.preferredPayloadType;
553
+ extendedCodec.remoteRtxPayloadType =
554
+ matchingRemoteRtxCodec.preferredPayloadType;
552
555
  }
553
556
  }
554
557
  // Match header extensions.
555
558
  for (const remoteExt of remoteCaps.headerExtensions) {
556
- const matchingLocalExt = localCaps.headerExtensions
557
- .find((localExt) => (matchHeaderExtensions(localExt, remoteExt)));
559
+ const matchingLocalExt = localCaps.headerExtensions.find((localExt) => matchHeaderExtensions(localExt, remoteExt));
558
560
  if (!matchingLocalExt) {
559
561
  continue;
560
562
  }
@@ -564,21 +566,25 @@ function getExtendedRtpCapabilities(localCaps, remoteCaps) {
564
566
  sendId: matchingLocalExt.preferredId,
565
567
  recvId: remoteExt.preferredId,
566
568
  encrypt: matchingLocalExt.preferredEncrypt,
567
- direction: 'sendrecv'
569
+ direction: 'sendrecv',
568
570
  };
569
571
  switch (remoteExt.direction) {
570
- case 'sendrecv':
572
+ case 'sendrecv': {
571
573
  extendedExt.direction = 'sendrecv';
572
574
  break;
573
- case 'recvonly':
575
+ }
576
+ case 'recvonly': {
574
577
  extendedExt.direction = 'sendonly';
575
578
  break;
576
- case 'sendonly':
579
+ }
580
+ case 'sendonly': {
577
581
  extendedExt.direction = 'recvonly';
578
582
  break;
579
- case 'inactive':
583
+ }
584
+ case 'inactive': {
580
585
  extendedExt.direction = 'inactive';
581
586
  break;
587
+ }
582
588
  }
583
589
  extendedRtpCapabilities.headerExtensions.push(extendedExt);
584
590
  }
@@ -592,7 +598,7 @@ exports.getExtendedRtpCapabilities = getExtendedRtpCapabilities;
592
598
  function getRecvRtpCapabilities(extendedRtpCapabilities) {
593
599
  const rtpCapabilities = {
594
600
  codecs: [],
595
- headerExtensions: []
601
+ headerExtensions: [],
596
602
  };
597
603
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
598
604
  const codec = {
@@ -602,7 +608,7 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
602
608
  clockRate: extendedCodec.clockRate,
603
609
  channels: extendedCodec.channels,
604
610
  parameters: extendedCodec.localParameters,
605
- rtcpFeedback: extendedCodec.rtcpFeedback
611
+ rtcpFeedback: extendedCodec.rtcpFeedback,
606
612
  };
607
613
  rtpCapabilities.codecs.push(codec);
608
614
  // Add RTX codec.
@@ -615,9 +621,9 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
615
621
  preferredPayloadType: extendedCodec.remoteRtxPayloadType,
616
622
  clockRate: extendedCodec.clockRate,
617
623
  parameters: {
618
- apt: extendedCodec.remotePayloadType
624
+ apt: extendedCodec.remotePayloadType,
619
625
  },
620
- rtcpFeedback: []
626
+ rtcpFeedback: [],
621
627
  };
622
628
  rtpCapabilities.codecs.push(rtxCodec);
623
629
  // TODO: In the future, we need to add FEC, CN, etc, codecs.
@@ -633,7 +639,7 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
633
639
  uri: extendedExtension.uri,
634
640
  preferredId: extendedExtension.recvId,
635
641
  preferredEncrypt: extendedExtension.encrypt,
636
- direction: extendedExtension.direction
642
+ direction: extendedExtension.direction,
637
643
  };
638
644
  rtpCapabilities.headerExtensions.push(ext);
639
645
  }
@@ -650,7 +656,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
650
656
  codecs: [],
651
657
  headerExtensions: [],
652
658
  encodings: [],
653
- rtcp: {}
659
+ rtcp: {},
654
660
  };
655
661
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
656
662
  if (extendedCodec.kind !== kind) {
@@ -662,7 +668,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
662
668
  clockRate: extendedCodec.clockRate,
663
669
  channels: extendedCodec.channels,
664
670
  parameters: extendedCodec.localParameters,
665
- rtcpFeedback: extendedCodec.rtcpFeedback
671
+ rtcpFeedback: extendedCodec.rtcpFeedback,
666
672
  };
667
673
  rtpParameters.codecs.push(codec);
668
674
  // Add RTX codec.
@@ -672,9 +678,9 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
672
678
  payloadType: extendedCodec.localRtxPayloadType,
673
679
  clockRate: extendedCodec.clockRate,
674
680
  parameters: {
675
- apt: extendedCodec.localPayloadType
681
+ apt: extendedCodec.localPayloadType,
676
682
  },
677
- rtcpFeedback: []
683
+ rtcpFeedback: [],
678
684
  };
679
685
  rtpParameters.codecs.push(rtxCodec);
680
686
  }
@@ -690,7 +696,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
690
696
  uri: extendedExtension.uri,
691
697
  id: extendedExtension.sendId,
692
698
  encrypt: extendedExtension.encrypt,
693
- parameters: {}
699
+ parameters: {},
694
700
  };
695
701
  rtpParameters.headerExtensions.push(ext);
696
702
  }
@@ -706,7 +712,7 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
706
712
  codecs: [],
707
713
  headerExtensions: [],
708
714
  encodings: [],
709
- rtcp: {}
715
+ rtcp: {},
710
716
  };
711
717
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
712
718
  if (extendedCodec.kind !== kind) {
@@ -718,7 +724,7 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
718
724
  clockRate: extendedCodec.clockRate,
719
725
  channels: extendedCodec.channels,
720
726
  parameters: extendedCodec.remoteParameters,
721
- rtcpFeedback: extendedCodec.rtcpFeedback
727
+ rtcpFeedback: extendedCodec.rtcpFeedback,
722
728
  };
723
729
  rtpParameters.codecs.push(codec);
724
730
  // Add RTX codec.
@@ -728,9 +734,9 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
728
734
  payloadType: extendedCodec.localRtxPayloadType,
729
735
  clockRate: extendedCodec.clockRate,
730
736
  parameters: {
731
- apt: extendedCodec.localPayloadType
737
+ apt: extendedCodec.localPayloadType,
732
738
  },
733
- rtcpFeedback: []
739
+ rtcpFeedback: [],
734
740
  };
735
741
  rtpParameters.codecs.push(rtxCodec);
736
742
  }
@@ -746,28 +752,26 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
746
752
  uri: extendedExtension.uri,
747
753
  id: extendedExtension.sendId,
748
754
  encrypt: extendedExtension.encrypt,
749
- parameters: {}
755
+ parameters: {},
750
756
  };
751
757
  rtpParameters.headerExtensions.push(ext);
752
758
  }
753
759
  // Reduce codecs' RTCP feedback. Use Transport-CC if available, REMB otherwise.
754
- if (rtpParameters.headerExtensions.some((ext) => (ext.uri === 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01'))) {
760
+ if (rtpParameters.headerExtensions.some(ext => ext.uri ===
761
+ 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01')) {
755
762
  for (const codec of rtpParameters.codecs) {
756
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
757
- .filter((fb) => fb.type !== 'goog-remb');
763
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'goog-remb');
758
764
  }
759
765
  }
760
- else if (rtpParameters.headerExtensions.some((ext) => (ext.uri === 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time'))) {
766
+ else if (rtpParameters.headerExtensions.some(ext => ext.uri ===
767
+ 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time')) {
761
768
  for (const codec of rtpParameters.codecs) {
762
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
763
- .filter((fb) => fb.type !== 'transport-cc');
769
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter(fb => fb.type !== 'transport-cc');
764
770
  }
765
771
  }
766
772
  else {
767
773
  for (const codec of rtpParameters.codecs) {
768
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
769
- .filter((fb) => (fb.type !== 'transport-cc' &&
770
- fb.type !== 'goog-remb'));
774
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb');
771
775
  }
772
776
  }
773
777
  return rtpParameters;
@@ -823,7 +827,7 @@ function generateProbatorRtpParameters(videoRtpParameters) {
823
827
  codecs: [],
824
828
  headerExtensions: [],
825
829
  encodings: [{ ssrc: RTP_PROBATOR_SSRC }],
826
- rtcp: { cname: 'probator' }
830
+ rtcp: { cname: 'probator' },
827
831
  };
828
832
  rtpParameters.codecs.push(videoRtpParameters.codecs[0]);
829
833
  rtpParameters.codecs[0].payloadType = RTP_PROBATOR_CODEC_PAYLOAD_TYPE;
@@ -835,8 +839,7 @@ exports.generateProbatorRtpParameters = generateProbatorRtpParameters;
835
839
  * Whether media can be sent based on the given RTP capabilities.
836
840
  */
837
841
  function canSend(kind, extendedRtpCapabilities) {
838
- return extendedRtpCapabilities.codecs.
839
- some((codec) => codec.kind === kind);
842
+ return extendedRtpCapabilities.codecs.some((codec) => codec.kind === kind);
840
843
  }
841
844
  exports.canSend = canSend;
842
845
  /**
@@ -850,8 +853,7 @@ function canReceive(rtpParameters, extendedRtpCapabilities) {
850
853
  return false;
851
854
  }
852
855
  const firstMediaCodec = rtpParameters.codecs[0];
853
- return extendedRtpCapabilities.codecs
854
- .some((codec) => codec.remotePayloadType === firstMediaCodec.payloadType);
856
+ return extendedRtpCapabilities.codecs.some((codec) => codec.remotePayloadType === firstMediaCodec.payloadType);
855
857
  }
856
858
  exports.canReceive = canReceive;
857
859
  function isRtxCodec(codec) {
@@ -874,49 +876,46 @@ function matchCodecs(aCodec, bCodec, { strict = false, modify = false } = {}) {
874
876
  }
875
877
  // Per codec special checks.
876
878
  switch (aMimeType) {
877
- case 'video/h264':
878
- {
879
- if (strict) {
880
- const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
881
- const bPacketizationMode = bCodec.parameters['packetization-mode'] || 0;
882
- if (aPacketizationMode !== bPacketizationMode) {
883
- return false;
884
- }
885
- if (!h264.isSameProfile(aCodec.parameters, bCodec.parameters)) {
886
- return false;
887
- }
888
- let selectedProfileLevelId;
889
- try {
890
- selectedProfileLevelId =
891
- h264.generateProfileLevelIdForAnswer(aCodec.parameters, bCodec.parameters);
892
- }
893
- catch (error) {
894
- return false;
879
+ case 'video/h264': {
880
+ if (strict) {
881
+ const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
882
+ const bPacketizationMode = bCodec.parameters['packetization-mode'] || 0;
883
+ if (aPacketizationMode !== bPacketizationMode) {
884
+ return false;
885
+ }
886
+ if (!h264.isSameProfile(aCodec.parameters, bCodec.parameters)) {
887
+ return false;
888
+ }
889
+ let selectedProfileLevelId;
890
+ try {
891
+ selectedProfileLevelId = h264.generateProfileLevelIdStringForAnswer(aCodec.parameters, bCodec.parameters);
892
+ }
893
+ catch (error) {
894
+ return false;
895
+ }
896
+ if (modify) {
897
+ if (selectedProfileLevelId) {
898
+ aCodec.parameters['profile-level-id'] = selectedProfileLevelId;
899
+ bCodec.parameters['profile-level-id'] = selectedProfileLevelId;
895
900
  }
896
- if (modify) {
897
- if (selectedProfileLevelId) {
898
- aCodec.parameters['profile-level-id'] = selectedProfileLevelId;
899
- bCodec.parameters['profile-level-id'] = selectedProfileLevelId;
900
- }
901
- else {
902
- delete aCodec.parameters['profile-level-id'];
903
- delete bCodec.parameters['profile-level-id'];
904
- }
901
+ else {
902
+ delete aCodec.parameters['profile-level-id'];
903
+ delete bCodec.parameters['profile-level-id'];
905
904
  }
906
905
  }
907
- break;
908
906
  }
909
- case 'video/vp9':
910
- {
911
- if (strict) {
912
- const aProfileId = aCodec.parameters['profile-id'] || 0;
913
- const bProfileId = bCodec.parameters['profile-id'] || 0;
914
- if (aProfileId !== bProfileId) {
915
- return false;
916
- }
907
+ break;
908
+ }
909
+ case 'video/vp9': {
910
+ if (strict) {
911
+ const aProfileId = aCodec.parameters['profile-id'] || 0;
912
+ const bProfileId = bCodec.parameters['profile-id'] || 0;
913
+ if (aProfileId !== bProfileId) {
914
+ return false;
917
915
  }
918
- break;
919
916
  }
917
+ break;
918
+ }
920
919
  }
921
920
  return true;
922
921
  }
@@ -932,9 +931,8 @@ function matchHeaderExtensions(aExt, bExt) {
932
931
  function reduceRtcpFeedback(codecA, codecB) {
933
932
  const reducedRtcpFeedback = [];
934
933
  for (const aFb of codecA.rtcpFeedback || []) {
935
- const matchingBFb = (codecB.rtcpFeedback || [])
936
- .find((bFb) => (bFb.type === aFb.type &&
937
- (bFb.parameter === aFb.parameter || (!bFb.parameter && !aFb.parameter))));
934
+ const matchingBFb = (codecB.rtcpFeedback || []).find((bFb) => bFb.type === aFb.type &&
935
+ (bFb.parameter === aFb.parameter || (!bFb.parameter && !aFb.parameter)));
938
936
  if (matchingBFb) {
939
937
  reducedRtcpFeedback.push(matchingBFb);
940
938
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scalabilityModes.d.ts","sourceRoot":"","sources":["../src/scalabilityModes.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAC3B;IACC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,eAAe,CAkB/D"}
1
+ {"version":3,"file":"scalabilityModes.d.ts","sourceRoot":"","sources":["../src/scalabilityModes.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,eAAe,CAc/D"}
@@ -7,13 +7,13 @@ function parse(scalabilityMode) {
7
7
  if (match) {
8
8
  return {
9
9
  spatialLayers: Number(match[1]),
10
- temporalLayers: Number(match[2])
10
+ temporalLayers: Number(match[2]),
11
11
  };
12
12
  }
13
13
  else {
14
14
  return {
15
15
  spatialLayers: 1,
16
- temporalLayers: 1
16
+ temporalLayers: 1,
17
17
  };
18
18
  }
19
19
  }
@@ -7,14 +7,14 @@ export declare function generateTransportRemoteParameters(): mediasoupClient.typ
7
7
  export declare function generateProducerRemoteParameters(): {
8
8
  id: string;
9
9
  };
10
- export declare function generateConsumerRemoteParameters({ id, codecMimeType }?: {
10
+ export declare function generateConsumerRemoteParameters({ id, codecMimeType, }?: {
11
11
  id?: string;
12
12
  codecMimeType?: string;
13
13
  }): mediasoupClient.types.ConsumerOptions;
14
14
  export declare function generateDataProducerRemoteParameters(): {
15
15
  id: string;
16
16
  };
17
- export declare function generateDataConsumerRemoteParameters({ id }?: {
17
+ export declare function generateDataConsumerRemoteParameters({ id, }?: {
18
18
  id?: string;
19
19
  }): mediasoupClient.types.DataConsumerOptions;
20
20
  //# sourceMappingURL=fakeParameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fakeParameters.d.ts","sourceRoot":"","sources":["../../src/test/fakeParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,KAAK,CAAC;AAOvC,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAoKrF;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAoHrF;AAED,wBAAgB,8BAA8B,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAIvF;AAED,wBAAgB,2BAA2B,IAAI,eAAe,CAAC,KAAK,CAAC,cAAc,CAWlF;AAED,wBAAgB,iCAAiC,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAuD1F;AAED,wBAAgB,gCAAgC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIjE;AAED,wBAAgB,gCAAgC,CAAC,EAChD,EAAE,EACF,aAAa,GACb,GAAE;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CA6O7C;AAED,wBAAgB,oCAAoC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIrE;AAED,wBAAgB,oCAAoC,CAAC,EACpD,EAAE,GACF,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAUlE"}