mediasoup-client 3.6.89 → 3.6.90

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 (125) hide show
  1. package/lib/index.d.ts +1435 -14
  2. package/lib/index.js +11884 -43
  3. package/lib/index.js.map +1 -0
  4. package/lib/index.mjs +11860 -0
  5. package/lib/index.mjs.map +1 -0
  6. package/npm-scripts.mjs +17 -11
  7. package/package.json +12 -8
  8. package/lib/Consumer.d.ts +0 -115
  9. package/lib/Consumer.d.ts.map +0 -1
  10. package/lib/Consumer.js +0 -190
  11. package/lib/DataConsumer.d.ts +0 -93
  12. package/lib/DataConsumer.d.ts.map +0 -1
  13. package/lib/DataConsumer.js +0 -162
  14. package/lib/DataProducer.d.ts +0 -97
  15. package/lib/DataProducer.d.ts.map +0 -1
  16. package/lib/DataProducer.js +0 -180
  17. package/lib/Device.d.ts +0 -92
  18. package/lib/Device.d.ts.map +0 -1
  19. package/lib/Device.js +0 -464
  20. package/lib/EnhancedEventEmitter.d.ts +0 -24
  21. package/lib/EnhancedEventEmitter.d.ts.map +0 -1
  22. package/lib/EnhancedEventEmitter.js +0 -70
  23. package/lib/Logger.d.ts +0 -11
  24. package/lib/Logger.d.ts.map +0 -1
  25. package/lib/Logger.js +0 -37
  26. package/lib/Producer.d.ts +0 -169
  27. package/lib/Producer.d.ts.map +0 -1
  28. package/lib/Producer.js +0 -287
  29. package/lib/RtpParameters.d.ts +0 -306
  30. package/lib/RtpParameters.d.ts.map +0 -1
  31. package/lib/RtpParameters.js +0 -6
  32. package/lib/SctpParameters.d.ts +0 -68
  33. package/lib/SctpParameters.d.ts.map +0 -1
  34. package/lib/SctpParameters.js +0 -2
  35. package/lib/Transport.d.ts +0 -243
  36. package/lib/Transport.d.ts.map +0 -1
  37. package/lib/Transport.js +0 -824
  38. package/lib/errors.d.ts +0 -13
  39. package/lib/errors.d.ts.map +0 -1
  40. package/lib/errors.js +0 -39
  41. package/lib/handlers/Chrome111.d.ts +0 -49
  42. package/lib/handlers/Chrome111.d.ts.map +0 -1
  43. package/lib/handlers/Chrome111.js +0 -658
  44. package/lib/handlers/Chrome55.d.ts +0 -51
  45. package/lib/handlers/Chrome55.d.ts.map +0 -1
  46. package/lib/handlers/Chrome55.js +0 -542
  47. package/lib/handlers/Chrome67.d.ts +0 -51
  48. package/lib/handlers/Chrome67.d.ts.map +0 -1
  49. package/lib/handlers/Chrome67.js +0 -598
  50. package/lib/handlers/Chrome70.d.ts +0 -49
  51. package/lib/handlers/Chrome70.d.ts.map +0 -1
  52. package/lib/handlers/Chrome70.js +0 -627
  53. package/lib/handlers/Chrome74.d.ts +0 -49
  54. package/lib/handlers/Chrome74.d.ts.map +0 -1
  55. package/lib/handlers/Chrome74.js +0 -675
  56. package/lib/handlers/Edge11.d.ts +0 -55
  57. package/lib/handlers/Edge11.d.ts.map +0 -1
  58. package/lib/handlers/Edge11.js +0 -447
  59. package/lib/handlers/FakeHandler.d.ts +0 -49
  60. package/lib/handlers/FakeHandler.d.ts.map +0 -1
  61. package/lib/handlers/FakeHandler.js +0 -276
  62. package/lib/handlers/Firefox60.d.ts +0 -48
  63. package/lib/handlers/Firefox60.d.ts.map +0 -1
  64. package/lib/handlers/Firefox60.js +0 -681
  65. package/lib/handlers/HandlerInterface.d.ts +0 -97
  66. package/lib/handlers/HandlerInterface.d.ts.map +0 -1
  67. package/lib/handlers/HandlerInterface.js +0 -10
  68. package/lib/handlers/ReactNative.d.ts +0 -51
  69. package/lib/handlers/ReactNative.d.ts.map +0 -1
  70. package/lib/handlers/ReactNative.js +0 -558
  71. package/lib/handlers/ReactNativeUnifiedPlan.d.ts +0 -49
  72. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +0 -1
  73. package/lib/handlers/ReactNativeUnifiedPlan.js +0 -694
  74. package/lib/handlers/Safari11.d.ts +0 -51
  75. package/lib/handlers/Safari11.d.ts.map +0 -1
  76. package/lib/handlers/Safari11.js +0 -592
  77. package/lib/handlers/Safari12.d.ts +0 -49
  78. package/lib/handlers/Safari12.d.ts.map +0 -1
  79. package/lib/handlers/Safari12.js +0 -648
  80. package/lib/handlers/ortc/edgeUtils.d.ts +0 -11
  81. package/lib/handlers/ortc/edgeUtils.d.ts.map +0 -1
  82. package/lib/handlers/ortc/edgeUtils.js +0 -86
  83. package/lib/handlers/ortc/utils.d.ts +0 -6
  84. package/lib/handlers/ortc/utils.d.ts.map +0 -1
  85. package/lib/handlers/ortc/utils.js +0 -20
  86. package/lib/handlers/sdp/MediaSection.d.ts +0 -68
  87. package/lib/handlers/sdp/MediaSection.d.ts.map +0 -1
  88. package/lib/handlers/sdp/MediaSection.js +0 -589
  89. package/lib/handlers/sdp/RemoteSdp.d.ts +0 -75
  90. package/lib/handlers/sdp/RemoteSdp.d.ts.map +0 -1
  91. package/lib/handlers/sdp/RemoteSdp.js +0 -303
  92. package/lib/handlers/sdp/commonUtils.d.ts +0 -24
  93. package/lib/handlers/sdp/commonUtils.d.ts.map +0 -1
  94. package/lib/handlers/sdp/commonUtils.js +0 -224
  95. package/lib/handlers/sdp/plainRtpUtils.d.ts +0 -14
  96. package/lib/handlers/sdp/plainRtpUtils.d.ts.map +0 -1
  97. package/lib/handlers/sdp/plainRtpUtils.js +0 -33
  98. package/lib/handlers/sdp/planBUtils.d.ts +0 -14
  99. package/lib/handlers/sdp/planBUtils.d.ts.map +0 -1
  100. package/lib/handlers/sdp/planBUtils.js +0 -155
  101. package/lib/handlers/sdp/unifiedPlanUtils.d.ts +0 -12
  102. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +0 -1
  103. package/lib/handlers/sdp/unifiedPlanUtils.js +0 -131
  104. package/lib/index.d.ts.map +0 -1
  105. package/lib/ortc.d.ts +0 -123
  106. package/lib/ortc.d.ts.map +0 -1
  107. package/lib/ortc.js +0 -943
  108. package/lib/scalabilityModes.d.ts +0 -6
  109. package/lib/scalabilityModes.d.ts.map +0 -1
  110. package/lib/scalabilityModes.js +0 -20
  111. package/lib/tests/fakeParameters.d.ts +0 -20
  112. package/lib/tests/fakeParameters.d.ts.map +0 -1
  113. package/lib/tests/fakeParameters.js +0 -659
  114. package/lib/tests/test.d.ts +0 -6
  115. package/lib/tests/test.d.ts.map +0 -1
  116. package/lib/tests/test.js +0 -1297
  117. package/lib/tests/uaTestCases.d.ts +0 -9
  118. package/lib/tests/uaTestCases.d.ts.map +0 -1
  119. package/lib/tests/uaTestCases.js +0 -85
  120. package/lib/types.d.ts +0 -15
  121. package/lib/types.d.ts.map +0 -1
  122. package/lib/types.js +0 -26
  123. package/lib/utils.d.ts +0 -9
  124. package/lib/utils.d.ts.map +0 -1
  125. package/lib/utils.js +0 -20
@@ -1,303 +0,0 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.RemoteSdp = void 0;
27
- const sdpTransform = __importStar(require("sdp-transform"));
28
- const Logger_1 = require("../../Logger");
29
- const MediaSection_1 = require("./MediaSection");
30
- const logger = new Logger_1.Logger('RemoteSdp');
31
- class RemoteSdp {
32
- constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB = false }) {
33
- // MediaSection instances with same order as in the SDP.
34
- this._mediaSections = [];
35
- // MediaSection indices indexed by MID.
36
- this._midToIndex = new Map();
37
- this._iceParameters = iceParameters;
38
- this._iceCandidates = iceCandidates;
39
- this._dtlsParameters = dtlsParameters;
40
- this._sctpParameters = sctpParameters;
41
- this._plainRtpParameters = plainRtpParameters;
42
- this._planB = planB;
43
- this._sdpObject =
44
- {
45
- version: 0,
46
- origin: {
47
- address: '0.0.0.0',
48
- ipVer: 4,
49
- netType: 'IN',
50
- sessionId: 10000,
51
- sessionVersion: 0,
52
- username: 'mediasoup-client'
53
- },
54
- name: '-',
55
- timing: { start: 0, stop: 0 },
56
- media: []
57
- };
58
- // If ICE parameters are given, add ICE-Lite indicator.
59
- if (iceParameters && iceParameters.iceLite) {
60
- this._sdpObject.icelite = 'ice-lite';
61
- }
62
- // If DTLS parameters are given, assume WebRTC and BUNDLE.
63
- if (dtlsParameters) {
64
- this._sdpObject.msidSemantic = { semantic: 'WMS', token: '*' };
65
- // NOTE: We take the latest fingerprint.
66
- const numFingerprints = this._dtlsParameters.fingerprints.length;
67
- this._sdpObject.fingerprint =
68
- {
69
- type: dtlsParameters.fingerprints[numFingerprints - 1].algorithm,
70
- hash: dtlsParameters.fingerprints[numFingerprints - 1].value
71
- };
72
- this._sdpObject.groups = [{ type: 'BUNDLE', mids: '' }];
73
- }
74
- // If there are plain RPT parameters, override SDP origin.
75
- if (plainRtpParameters) {
76
- this._sdpObject.origin.address = plainRtpParameters.ip;
77
- this._sdpObject.origin.ipVer = plainRtpParameters.ipVersion;
78
- }
79
- }
80
- updateIceParameters(iceParameters) {
81
- logger.debug('updateIceParameters() [iceParameters:%o]', iceParameters);
82
- this._iceParameters = iceParameters;
83
- this._sdpObject.icelite = iceParameters.iceLite ? 'ice-lite' : undefined;
84
- for (const mediaSection of this._mediaSections) {
85
- mediaSection.setIceParameters(iceParameters);
86
- }
87
- }
88
- updateDtlsRole(role) {
89
- logger.debug('updateDtlsRole() [role:%s]', role);
90
- this._dtlsParameters.role = role;
91
- for (const mediaSection of this._mediaSections) {
92
- mediaSection.setDtlsRole(role);
93
- }
94
- }
95
- getNextMediaSectionIdx() {
96
- // If a closed media section is found, return its index.
97
- for (let idx = 0; idx < this._mediaSections.length; ++idx) {
98
- const mediaSection = this._mediaSections[idx];
99
- if (mediaSection.closed) {
100
- return { idx, reuseMid: mediaSection.mid };
101
- }
102
- }
103
- // If no closed media section is found, return next one.
104
- return { idx: this._mediaSections.length };
105
- }
106
- send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed = false }) {
107
- const mediaSection = new MediaSection_1.AnswerMediaSection({
108
- iceParameters: this._iceParameters,
109
- iceCandidates: this._iceCandidates,
110
- dtlsParameters: this._dtlsParameters,
111
- plainRtpParameters: this._plainRtpParameters,
112
- planB: this._planB,
113
- offerMediaObject,
114
- offerRtpParameters,
115
- answerRtpParameters,
116
- codecOptions,
117
- extmapAllowMixed
118
- });
119
- // Unified-Plan with closed media section replacement.
120
- if (reuseMid) {
121
- this._replaceMediaSection(mediaSection, reuseMid);
122
- }
123
- // Unified-Plan or Plan-B with different media kind.
124
- else if (!this._midToIndex.has(mediaSection.mid)) {
125
- this._addMediaSection(mediaSection);
126
- }
127
- // Plan-B with same media kind.
128
- else {
129
- this._replaceMediaSection(mediaSection);
130
- }
131
- }
132
- receive({ mid, kind, offerRtpParameters, streamId, trackId }) {
133
- const idx = this._midToIndex.get(mid);
134
- let mediaSection;
135
- if (idx !== undefined) {
136
- mediaSection = this._mediaSections[idx];
137
- }
138
- // Unified-Plan or different media kind.
139
- if (!mediaSection) {
140
- mediaSection = new MediaSection_1.OfferMediaSection({
141
- iceParameters: this._iceParameters,
142
- iceCandidates: this._iceCandidates,
143
- dtlsParameters: this._dtlsParameters,
144
- plainRtpParameters: this._plainRtpParameters,
145
- planB: this._planB,
146
- mid,
147
- kind,
148
- offerRtpParameters,
149
- streamId,
150
- trackId
151
- });
152
- // Let's try to recycle a closed media section (if any).
153
- // NOTE: Yes, we can recycle a closed m=audio section with a new m=video.
154
- const oldMediaSection = this._mediaSections.find((m) => (m.closed));
155
- if (oldMediaSection) {
156
- this._replaceMediaSection(mediaSection, oldMediaSection.mid);
157
- }
158
- else {
159
- this._addMediaSection(mediaSection);
160
- }
161
- }
162
- // Plan-B.
163
- else {
164
- mediaSection.planBReceive({ offerRtpParameters, streamId, trackId });
165
- this._replaceMediaSection(mediaSection);
166
- }
167
- }
168
- pauseMediaSection(mid) {
169
- const mediaSection = this._findMediaSection(mid);
170
- mediaSection.pause();
171
- }
172
- resumeSendingMediaSection(mid) {
173
- const mediaSection = this._findMediaSection(mid);
174
- mediaSection.resume();
175
- }
176
- resumeReceivingMediaSection(mid) {
177
- const mediaSection = this._findMediaSection(mid);
178
- mediaSection.resume();
179
- }
180
- disableMediaSection(mid) {
181
- const mediaSection = this._findMediaSection(mid);
182
- mediaSection.disable();
183
- }
184
- /**
185
- * Closes media section. Returns true if the given MID corresponds to a m
186
- * section that has been indeed closed. False otherwise.
187
- *
188
- * NOTE: Closing the first m section is a pain since it invalidates the bundled
189
- * transport, so instead closing it we just disable it.
190
- */
191
- closeMediaSection(mid) {
192
- const mediaSection = this._findMediaSection(mid);
193
- // NOTE: Closing the first m section is a pain since it invalidates the
194
- // bundled transport, so let's avoid it.
195
- if (mid === this._firstMid) {
196
- logger.debug('closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]', mid);
197
- this.disableMediaSection(mid);
198
- return false;
199
- }
200
- mediaSection.close();
201
- // Regenerate BUNDLE mids.
202
- this._regenerateBundleMids();
203
- return true;
204
- }
205
- muxMediaSectionSimulcast(mid, encodings) {
206
- const mediaSection = this._findMediaSection(mid);
207
- mediaSection.muxSimulcastStreams(encodings);
208
- this._replaceMediaSection(mediaSection);
209
- }
210
- planBStopReceiving({ mid, offerRtpParameters }) {
211
- const mediaSection = this._findMediaSection(mid);
212
- mediaSection.planBStopReceiving({ offerRtpParameters });
213
- this._replaceMediaSection(mediaSection);
214
- }
215
- sendSctpAssociation({ offerMediaObject }) {
216
- const mediaSection = new MediaSection_1.AnswerMediaSection({
217
- iceParameters: this._iceParameters,
218
- iceCandidates: this._iceCandidates,
219
- dtlsParameters: this._dtlsParameters,
220
- sctpParameters: this._sctpParameters,
221
- plainRtpParameters: this._plainRtpParameters,
222
- offerMediaObject
223
- });
224
- this._addMediaSection(mediaSection);
225
- }
226
- receiveSctpAssociation({ oldDataChannelSpec = false } = {}) {
227
- const mediaSection = new MediaSection_1.OfferMediaSection({
228
- iceParameters: this._iceParameters,
229
- iceCandidates: this._iceCandidates,
230
- dtlsParameters: this._dtlsParameters,
231
- sctpParameters: this._sctpParameters,
232
- plainRtpParameters: this._plainRtpParameters,
233
- mid: 'datachannel',
234
- kind: 'application',
235
- oldDataChannelSpec
236
- });
237
- this._addMediaSection(mediaSection);
238
- }
239
- getSdp() {
240
- // Increase SDP version.
241
- this._sdpObject.origin.sessionVersion++;
242
- return sdpTransform.write(this._sdpObject);
243
- }
244
- _addMediaSection(newMediaSection) {
245
- if (!this._firstMid) {
246
- this._firstMid = newMediaSection.mid;
247
- }
248
- // Add to the vector.
249
- this._mediaSections.push(newMediaSection);
250
- // Add to the map.
251
- this._midToIndex.set(newMediaSection.mid, this._mediaSections.length - 1);
252
- // Add to the SDP object.
253
- this._sdpObject.media.push(newMediaSection.getObject());
254
- // Regenerate BUNDLE mids.
255
- this._regenerateBundleMids();
256
- }
257
- _replaceMediaSection(newMediaSection, reuseMid) {
258
- // Store it in the map.
259
- if (typeof reuseMid === 'string') {
260
- const idx = this._midToIndex.get(reuseMid);
261
- if (idx === undefined) {
262
- throw new Error(`no media section found for reuseMid '${reuseMid}'`);
263
- }
264
- const oldMediaSection = this._mediaSections[idx];
265
- // Replace the index in the vector with the new media section.
266
- this._mediaSections[idx] = newMediaSection;
267
- // Update the map.
268
- this._midToIndex.delete(oldMediaSection.mid);
269
- this._midToIndex.set(newMediaSection.mid, idx);
270
- // Update the SDP object.
271
- this._sdpObject.media[idx] = newMediaSection.getObject();
272
- // Regenerate BUNDLE mids.
273
- this._regenerateBundleMids();
274
- }
275
- else {
276
- const idx = this._midToIndex.get(newMediaSection.mid);
277
- if (idx === undefined) {
278
- throw new Error(`no media section found with mid '${newMediaSection.mid}'`);
279
- }
280
- // Replace the index in the vector with the new media section.
281
- this._mediaSections[idx] = newMediaSection;
282
- // Update the SDP object.
283
- this._sdpObject.media[idx] = newMediaSection.getObject();
284
- }
285
- }
286
- _findMediaSection(mid) {
287
- const idx = this._midToIndex.get(mid);
288
- if (idx === undefined) {
289
- throw new Error(`no media section found with mid '${mid}'`);
290
- }
291
- return this._mediaSections[idx];
292
- }
293
- _regenerateBundleMids() {
294
- if (!this._dtlsParameters) {
295
- return;
296
- }
297
- this._sdpObject.groups[0].mids = this._mediaSections
298
- .filter((mediaSection) => !mediaSection.closed)
299
- .map((mediaSection) => mediaSection.mid)
300
- .join(' ');
301
- }
302
- }
303
- exports.RemoteSdp = RemoteSdp;
@@ -1,24 +0,0 @@
1
- import { DtlsParameters } from '../../Transport';
2
- import { RtpCapabilities, RtpParameters } from '../../RtpParameters';
3
- /**
4
- * This function must be called with an SDP with 1 m=audio and 1 m=video
5
- * sections.
6
- */
7
- export declare function extractRtpCapabilities({ sdpObject }: {
8
- sdpObject: any;
9
- }): RtpCapabilities;
10
- export declare function extractDtlsParameters({ sdpObject }: {
11
- sdpObject: any;
12
- }): DtlsParameters;
13
- export declare function getCname({ offerMediaObject }: {
14
- offerMediaObject: any;
15
- }): string;
16
- /**
17
- * Apply codec parameters in the given SDP m= section answer based on the
18
- * given RTP parameters of an offer.
19
- */
20
- export declare function applyCodecParameters({ offerRtpParameters, answerMediaObject }: {
21
- offerRtpParameters: RtpParameters;
22
- answerMediaObject: any;
23
- }): void;
24
- //# sourceMappingURL=commonUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commonUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/commonUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACN,eAAe,EAGf,aAAa,EAEb,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,EAAE,SAAS,EAAE,EACb;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,GAChB,eAAe,CAqJjB;AAED,wBAAgB,qBAAqB,CACpC,EAAE,SAAS,EAAE,EACb;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,GAChB,cAAc,CAyChB;AAED,wBAAgB,QAAQ,CACvB,EAAE,gBAAgB,EAAE,EACpB;IAAE,gBAAgB,EAAE,GAAG,CAAA;CAAE,GACvB,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,EACC,kBAAkB,EAClB,iBAAiB,EACjB,EACD;IACC,kBAAkB,EAAE,aAAa,CAAC;IAClC,iBAAiB,EAAE,GAAG,CAAC;CACvB,GACC,IAAI,CA8DN"}
@@ -1,224 +0,0 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.applyCodecParameters = exports.getCname = exports.extractDtlsParameters = exports.extractRtpCapabilities = void 0;
27
- const sdpTransform = __importStar(require("sdp-transform"));
28
- /**
29
- * This function must be called with an SDP with 1 m=audio and 1 m=video
30
- * sections.
31
- */
32
- function extractRtpCapabilities({ sdpObject }) {
33
- // Map of RtpCodecParameters indexed by payload type.
34
- const codecsMap = new Map();
35
- // Array of RtpHeaderExtensions.
36
- const headerExtensions = [];
37
- // Whether a m=audio/video section has been already found.
38
- let gotAudio = false;
39
- let gotVideo = false;
40
- for (const m of sdpObject.media) {
41
- const kind = m.type;
42
- switch (kind) {
43
- case 'audio':
44
- {
45
- if (gotAudio) {
46
- continue;
47
- }
48
- gotAudio = true;
49
- break;
50
- }
51
- case 'video':
52
- {
53
- if (gotVideo) {
54
- continue;
55
- }
56
- gotVideo = true;
57
- break;
58
- }
59
- default:
60
- {
61
- continue;
62
- }
63
- }
64
- // Get codecs.
65
- for (const rtp of m.rtp) {
66
- const codec = {
67
- kind: kind,
68
- mimeType: `${kind}/${rtp.codec}`,
69
- preferredPayloadType: rtp.payload,
70
- clockRate: rtp.rate,
71
- channels: rtp.encoding,
72
- parameters: {},
73
- rtcpFeedback: []
74
- };
75
- codecsMap.set(codec.preferredPayloadType, codec);
76
- }
77
- // Get codec parameters.
78
- for (const fmtp of m.fmtp || []) {
79
- const parameters = sdpTransform.parseParams(fmtp.config);
80
- const codec = codecsMap.get(fmtp.payload);
81
- if (!codec) {
82
- continue;
83
- }
84
- // Specials case to convert parameter value to string.
85
- if (parameters && parameters.hasOwnProperty('profile-level-id')) {
86
- parameters['profile-level-id'] = String(parameters['profile-level-id']);
87
- }
88
- codec.parameters = parameters;
89
- }
90
- // Get RTCP feedback for each codec.
91
- for (const fb of m.rtcpFb || []) {
92
- const feedback = {
93
- type: fb.type,
94
- parameter: fb.subtype
95
- };
96
- if (!feedback.parameter) {
97
- delete feedback.parameter;
98
- }
99
- // rtcp-fb payload is not '*', so just apply it to its corresponding
100
- // codec.
101
- if (fb.payload !== '*') {
102
- const codec = codecsMap.get(fb.payload);
103
- if (!codec) {
104
- continue;
105
- }
106
- codec.rtcpFeedback.push(feedback);
107
- }
108
- // If rtcp-fb payload is '*' it must be applied to all codecs with same
109
- // kind (with some exceptions such as RTX codec).
110
- else {
111
- for (const codec of codecsMap.values()) {
112
- if (codec.kind === kind && !/.+\/rtx$/i.test(codec.mimeType)) {
113
- codec.rtcpFeedback.push(feedback);
114
- }
115
- }
116
- }
117
- }
118
- // Get RTP header extensions.
119
- for (const ext of m.ext || []) {
120
- // Ignore encrypted extensions (not yet supported in mediasoup).
121
- if (ext['encrypt-uri']) {
122
- continue;
123
- }
124
- const headerExtension = {
125
- kind: kind,
126
- uri: ext.uri,
127
- preferredId: ext.value
128
- };
129
- headerExtensions.push(headerExtension);
130
- }
131
- }
132
- const rtpCapabilities = {
133
- codecs: Array.from(codecsMap.values()),
134
- headerExtensions: headerExtensions
135
- };
136
- return rtpCapabilities;
137
- }
138
- exports.extractRtpCapabilities = extractRtpCapabilities;
139
- function extractDtlsParameters({ sdpObject }) {
140
- const mediaObject = (sdpObject.media || [])
141
- .find((m) => (m.iceUfrag && m.port !== 0));
142
- if (!mediaObject) {
143
- throw new Error('no active media section found');
144
- }
145
- const fingerprint = mediaObject.fingerprint || sdpObject.fingerprint;
146
- let role;
147
- switch (mediaObject.setup) {
148
- case 'active':
149
- role = 'client';
150
- break;
151
- case 'passive':
152
- role = 'server';
153
- break;
154
- case 'actpass':
155
- role = 'auto';
156
- break;
157
- }
158
- const dtlsParameters = {
159
- role,
160
- fingerprints: [
161
- {
162
- algorithm: fingerprint.type,
163
- value: fingerprint.hash
164
- }
165
- ]
166
- };
167
- return dtlsParameters;
168
- }
169
- exports.extractDtlsParameters = extractDtlsParameters;
170
- function getCname({ offerMediaObject }) {
171
- const ssrcCnameLine = (offerMediaObject.ssrcs || [])
172
- .find((line) => line.attribute === 'cname');
173
- if (!ssrcCnameLine) {
174
- return '';
175
- }
176
- return ssrcCnameLine.value;
177
- }
178
- exports.getCname = getCname;
179
- /**
180
- * Apply codec parameters in the given SDP m= section answer based on the
181
- * given RTP parameters of an offer.
182
- */
183
- function applyCodecParameters({ offerRtpParameters, answerMediaObject }) {
184
- for (const codec of offerRtpParameters.codecs) {
185
- const mimeType = codec.mimeType.toLowerCase();
186
- // Avoid parsing codec parameters for unhandled codecs.
187
- if (mimeType !== 'audio/opus') {
188
- continue;
189
- }
190
- const rtp = (answerMediaObject.rtp || [])
191
- .find((r) => r.payload === codec.payloadType);
192
- if (!rtp) {
193
- continue;
194
- }
195
- // Just in case.
196
- answerMediaObject.fmtp = answerMediaObject.fmtp || [];
197
- let fmtp = answerMediaObject.fmtp
198
- .find((f) => f.payload === codec.payloadType);
199
- if (!fmtp) {
200
- fmtp = { payload: codec.payloadType, config: '' };
201
- answerMediaObject.fmtp.push(fmtp);
202
- }
203
- const parameters = sdpTransform.parseParams(fmtp.config);
204
- switch (mimeType) {
205
- case 'audio/opus':
206
- {
207
- const spropStereo = codec.parameters['sprop-stereo'];
208
- if (spropStereo !== undefined) {
209
- parameters.stereo = spropStereo ? 1 : 0;
210
- }
211
- break;
212
- }
213
- }
214
- // Write the codec fmtp.config back.
215
- fmtp.config = '';
216
- for (const key of Object.keys(parameters)) {
217
- if (fmtp.config) {
218
- fmtp.config += ';';
219
- }
220
- fmtp.config += `${key}=${parameters[key]}`;
221
- }
222
- }
223
- }
224
- exports.applyCodecParameters = applyCodecParameters;
@@ -1,14 +0,0 @@
1
- import { MediaKind, RtpEncodingParameters } from '../../RtpParameters';
2
- export declare function extractPlainRtpParameters({ sdpObject, kind }: {
3
- sdpObject: any;
4
- kind: MediaKind;
5
- }): {
6
- ip: string;
7
- ipVersion: 4 | 6;
8
- port: number;
9
- };
10
- export declare function getRtpEncodings({ sdpObject, kind }: {
11
- sdpObject: any;
12
- kind: MediaKind;
13
- }): RtpEncodingParameters[];
14
- //# sourceMappingURL=plainRtpUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plainRtpUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/plainRtpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,wBAAgB,yBAAyB,CACxC,EACC,SAAS,EACT,IAAI,EACJ,EACD;IACC,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CAChB,GAEF;IACC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb,CAiBA;AAED,wBAAgB,eAAe,CAC9B,EACC,SAAS,EACT,IAAI,EACJ,EACD;IACC,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CAChB,GACC,qBAAqB,EAAE,CAqBzB"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRtpEncodings = exports.extractPlainRtpParameters = void 0;
4
- function extractPlainRtpParameters({ sdpObject, kind }) {
5
- const mediaObject = (sdpObject.media || [])
6
- .find((m) => m.type === kind);
7
- if (!mediaObject) {
8
- throw new Error(`m=${kind} section not found`);
9
- }
10
- const connectionObject = mediaObject.connection || sdpObject.connection;
11
- return {
12
- ip: connectionObject.ip,
13
- ipVersion: connectionObject.version,
14
- port: mediaObject.port
15
- };
16
- }
17
- exports.extractPlainRtpParameters = extractPlainRtpParameters;
18
- function getRtpEncodings({ sdpObject, kind }) {
19
- const mediaObject = (sdpObject.media || [])
20
- .find((m) => m.type === kind);
21
- if (!mediaObject) {
22
- throw new Error(`m=${kind} section not found`);
23
- }
24
- const ssrcCnameLine = (mediaObject.ssrcs || [])[0];
25
- const ssrc = ssrcCnameLine ? ssrcCnameLine.id : null;
26
- if (ssrc) {
27
- return [{ ssrc }];
28
- }
29
- else {
30
- return [];
31
- }
32
- }
33
- exports.getRtpEncodings = getRtpEncodings;
@@ -1,14 +0,0 @@
1
- import { RtpEncodingParameters } from '../../RtpParameters';
2
- export declare function getRtpEncodings({ offerMediaObject, track }: {
3
- offerMediaObject: any;
4
- track: MediaStreamTrack;
5
- }): RtpEncodingParameters[];
6
- /**
7
- * Adds multi-ssrc based simulcast into the given SDP media section offer.
8
- */
9
- export declare function addLegacySimulcast({ offerMediaObject, track, numStreams }: {
10
- offerMediaObject: any;
11
- track: MediaStreamTrack;
12
- numStreams: number;
13
- }): void;
14
- //# sourceMappingURL=planBUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planBUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/planBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAC9B,EACC,gBAAgB,EAChB,KAAK,EACL,EACD;IACC,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;CACxB,GACC,qBAAqB,EAAE,CAmFzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,EACC,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,EACD;IACC,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,GACC,IAAI,CA0IN"}