mediasoup-client 3.7.1 → 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 +66 -89
  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 +74 -77
  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 +83 -80
  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 +85 -83
  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 +76 -78
  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 +75 -78
  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 +63 -77
  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 +75 -72
  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 +84 -82
  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 +75 -78
  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 +84 -81
  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 +75 -77
  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 +293 -317
  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 +47 -58
  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 +98 -108
  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.1";
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.1';
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,CA6HL;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,29 +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':
571
- {
572
- extendedExt.direction = 'sendrecv';
573
- break;
574
- }
575
- case 'recvonly':
576
- {
577
- extendedExt.direction = 'sendonly';
578
- break;
579
- }
580
- case 'sendonly':
581
- {
582
- extendedExt.direction = 'recvonly';
583
- break;
584
- }
585
- case 'inactive':
586
- {
587
- extendedExt.direction = 'inactive';
588
- break;
589
- }
572
+ case 'sendrecv': {
573
+ extendedExt.direction = 'sendrecv';
574
+ break;
575
+ }
576
+ case 'recvonly': {
577
+ extendedExt.direction = 'sendonly';
578
+ break;
579
+ }
580
+ case 'sendonly': {
581
+ extendedExt.direction = 'recvonly';
582
+ break;
583
+ }
584
+ case 'inactive': {
585
+ extendedExt.direction = 'inactive';
586
+ break;
587
+ }
590
588
  }
591
589
  extendedRtpCapabilities.headerExtensions.push(extendedExt);
592
590
  }
@@ -600,7 +598,7 @@ exports.getExtendedRtpCapabilities = getExtendedRtpCapabilities;
600
598
  function getRecvRtpCapabilities(extendedRtpCapabilities) {
601
599
  const rtpCapabilities = {
602
600
  codecs: [],
603
- headerExtensions: []
601
+ headerExtensions: [],
604
602
  };
605
603
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
606
604
  const codec = {
@@ -610,7 +608,7 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
610
608
  clockRate: extendedCodec.clockRate,
611
609
  channels: extendedCodec.channels,
612
610
  parameters: extendedCodec.localParameters,
613
- rtcpFeedback: extendedCodec.rtcpFeedback
611
+ rtcpFeedback: extendedCodec.rtcpFeedback,
614
612
  };
615
613
  rtpCapabilities.codecs.push(codec);
616
614
  // Add RTX codec.
@@ -623,9 +621,9 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
623
621
  preferredPayloadType: extendedCodec.remoteRtxPayloadType,
624
622
  clockRate: extendedCodec.clockRate,
625
623
  parameters: {
626
- apt: extendedCodec.remotePayloadType
624
+ apt: extendedCodec.remotePayloadType,
627
625
  },
628
- rtcpFeedback: []
626
+ rtcpFeedback: [],
629
627
  };
630
628
  rtpCapabilities.codecs.push(rtxCodec);
631
629
  // TODO: In the future, we need to add FEC, CN, etc, codecs.
@@ -641,7 +639,7 @@ function getRecvRtpCapabilities(extendedRtpCapabilities) {
641
639
  uri: extendedExtension.uri,
642
640
  preferredId: extendedExtension.recvId,
643
641
  preferredEncrypt: extendedExtension.encrypt,
644
- direction: extendedExtension.direction
642
+ direction: extendedExtension.direction,
645
643
  };
646
644
  rtpCapabilities.headerExtensions.push(ext);
647
645
  }
@@ -658,7 +656,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
658
656
  codecs: [],
659
657
  headerExtensions: [],
660
658
  encodings: [],
661
- rtcp: {}
659
+ rtcp: {},
662
660
  };
663
661
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
664
662
  if (extendedCodec.kind !== kind) {
@@ -670,7 +668,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
670
668
  clockRate: extendedCodec.clockRate,
671
669
  channels: extendedCodec.channels,
672
670
  parameters: extendedCodec.localParameters,
673
- rtcpFeedback: extendedCodec.rtcpFeedback
671
+ rtcpFeedback: extendedCodec.rtcpFeedback,
674
672
  };
675
673
  rtpParameters.codecs.push(codec);
676
674
  // Add RTX codec.
@@ -680,9 +678,9 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
680
678
  payloadType: extendedCodec.localRtxPayloadType,
681
679
  clockRate: extendedCodec.clockRate,
682
680
  parameters: {
683
- apt: extendedCodec.localPayloadType
681
+ apt: extendedCodec.localPayloadType,
684
682
  },
685
- rtcpFeedback: []
683
+ rtcpFeedback: [],
686
684
  };
687
685
  rtpParameters.codecs.push(rtxCodec);
688
686
  }
@@ -698,7 +696,7 @@ function getSendingRtpParameters(kind, extendedRtpCapabilities) {
698
696
  uri: extendedExtension.uri,
699
697
  id: extendedExtension.sendId,
700
698
  encrypt: extendedExtension.encrypt,
701
- parameters: {}
699
+ parameters: {},
702
700
  };
703
701
  rtpParameters.headerExtensions.push(ext);
704
702
  }
@@ -714,7 +712,7 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
714
712
  codecs: [],
715
713
  headerExtensions: [],
716
714
  encodings: [],
717
- rtcp: {}
715
+ rtcp: {},
718
716
  };
719
717
  for (const extendedCodec of extendedRtpCapabilities.codecs) {
720
718
  if (extendedCodec.kind !== kind) {
@@ -726,7 +724,7 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
726
724
  clockRate: extendedCodec.clockRate,
727
725
  channels: extendedCodec.channels,
728
726
  parameters: extendedCodec.remoteParameters,
729
- rtcpFeedback: extendedCodec.rtcpFeedback
727
+ rtcpFeedback: extendedCodec.rtcpFeedback,
730
728
  };
731
729
  rtpParameters.codecs.push(codec);
732
730
  // Add RTX codec.
@@ -736,9 +734,9 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
736
734
  payloadType: extendedCodec.localRtxPayloadType,
737
735
  clockRate: extendedCodec.clockRate,
738
736
  parameters: {
739
- apt: extendedCodec.localPayloadType
737
+ apt: extendedCodec.localPayloadType,
740
738
  },
741
- rtcpFeedback: []
739
+ rtcpFeedback: [],
742
740
  };
743
741
  rtpParameters.codecs.push(rtxCodec);
744
742
  }
@@ -754,28 +752,26 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
754
752
  uri: extendedExtension.uri,
755
753
  id: extendedExtension.sendId,
756
754
  encrypt: extendedExtension.encrypt,
757
- parameters: {}
755
+ parameters: {},
758
756
  };
759
757
  rtpParameters.headerExtensions.push(ext);
760
758
  }
761
759
  // Reduce codecs' RTCP feedback. Use Transport-CC if available, REMB otherwise.
762
- 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')) {
763
762
  for (const codec of rtpParameters.codecs) {
764
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
765
- .filter((fb) => fb.type !== 'goog-remb');
763
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'goog-remb');
766
764
  }
767
765
  }
768
- 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')) {
769
768
  for (const codec of rtpParameters.codecs) {
770
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
771
- .filter((fb) => fb.type !== 'transport-cc');
769
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter(fb => fb.type !== 'transport-cc');
772
770
  }
773
771
  }
774
772
  else {
775
773
  for (const codec of rtpParameters.codecs) {
776
- codec.rtcpFeedback = (codec.rtcpFeedback || [])
777
- .filter((fb) => (fb.type !== 'transport-cc' &&
778
- fb.type !== 'goog-remb'));
774
+ codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb');
779
775
  }
780
776
  }
781
777
  return rtpParameters;
@@ -831,7 +827,7 @@ function generateProbatorRtpParameters(videoRtpParameters) {
831
827
  codecs: [],
832
828
  headerExtensions: [],
833
829
  encodings: [{ ssrc: RTP_PROBATOR_SSRC }],
834
- rtcp: { cname: 'probator' }
830
+ rtcp: { cname: 'probator' },
835
831
  };
836
832
  rtpParameters.codecs.push(videoRtpParameters.codecs[0]);
837
833
  rtpParameters.codecs[0].payloadType = RTP_PROBATOR_CODEC_PAYLOAD_TYPE;
@@ -843,8 +839,7 @@ exports.generateProbatorRtpParameters = generateProbatorRtpParameters;
843
839
  * Whether media can be sent based on the given RTP capabilities.
844
840
  */
845
841
  function canSend(kind, extendedRtpCapabilities) {
846
- return extendedRtpCapabilities.codecs.
847
- some((codec) => codec.kind === kind);
842
+ return extendedRtpCapabilities.codecs.some((codec) => codec.kind === kind);
848
843
  }
849
844
  exports.canSend = canSend;
850
845
  /**
@@ -858,8 +853,7 @@ function canReceive(rtpParameters, extendedRtpCapabilities) {
858
853
  return false;
859
854
  }
860
855
  const firstMediaCodec = rtpParameters.codecs[0];
861
- return extendedRtpCapabilities.codecs
862
- .some((codec) => codec.remotePayloadType === firstMediaCodec.payloadType);
856
+ return extendedRtpCapabilities.codecs.some((codec) => codec.remotePayloadType === firstMediaCodec.payloadType);
863
857
  }
864
858
  exports.canReceive = canReceive;
865
859
  function isRtxCodec(codec) {
@@ -882,49 +876,46 @@ function matchCodecs(aCodec, bCodec, { strict = false, modify = false } = {}) {
882
876
  }
883
877
  // Per codec special checks.
884
878
  switch (aMimeType) {
885
- case 'video/h264':
886
- {
887
- if (strict) {
888
- const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
889
- const bPacketizationMode = bCodec.parameters['packetization-mode'] || 0;
890
- if (aPacketizationMode !== bPacketizationMode) {
891
- return false;
892
- }
893
- if (!h264.isSameProfile(aCodec.parameters, bCodec.parameters)) {
894
- return false;
895
- }
896
- let selectedProfileLevelId;
897
- try {
898
- selectedProfileLevelId =
899
- h264.generateProfileLevelIdForAnswer(aCodec.parameters, bCodec.parameters);
900
- }
901
- catch (error) {
902
- 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;
903
900
  }
904
- if (modify) {
905
- if (selectedProfileLevelId) {
906
- aCodec.parameters['profile-level-id'] = selectedProfileLevelId;
907
- bCodec.parameters['profile-level-id'] = selectedProfileLevelId;
908
- }
909
- else {
910
- delete aCodec.parameters['profile-level-id'];
911
- delete bCodec.parameters['profile-level-id'];
912
- }
901
+ else {
902
+ delete aCodec.parameters['profile-level-id'];
903
+ delete bCodec.parameters['profile-level-id'];
913
904
  }
914
905
  }
915
- break;
916
906
  }
917
- case 'video/vp9':
918
- {
919
- if (strict) {
920
- const aProfileId = aCodec.parameters['profile-id'] || 0;
921
- const bProfileId = bCodec.parameters['profile-id'] || 0;
922
- if (aProfileId !== bProfileId) {
923
- return false;
924
- }
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;
925
915
  }
926
- break;
927
916
  }
917
+ break;
918
+ }
928
919
  }
929
920
  return true;
930
921
  }
@@ -940,9 +931,8 @@ function matchHeaderExtensions(aExt, bExt) {
940
931
  function reduceRtcpFeedback(codecA, codecB) {
941
932
  const reducedRtcpFeedback = [];
942
933
  for (const aFb of codecA.rtcpFeedback || []) {
943
- const matchingBFb = (codecB.rtcpFeedback || [])
944
- .find((bFb) => (bFb.type === aFb.type &&
945
- (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)));
946
936
  if (matchingBFb) {
947
937
  reducedRtcpFeedback.push(matchingBFb);
948
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"}