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,589 +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.OfferMediaSection = exports.AnswerMediaSection = exports.MediaSection = void 0;
27
- const sdpTransform = __importStar(require("sdp-transform"));
28
- const utils = __importStar(require("../../utils"));
29
- class MediaSection {
30
- constructor({ iceParameters, iceCandidates, dtlsParameters, planB = false }) {
31
- this._mediaObject = {};
32
- this._planB = planB;
33
- if (iceParameters) {
34
- this.setIceParameters(iceParameters);
35
- }
36
- if (iceCandidates) {
37
- this._mediaObject.candidates = [];
38
- for (const candidate of iceCandidates) {
39
- const candidateObject = {};
40
- // mediasoup does mandates rtcp-mux so candidates component is always
41
- // RTP (1).
42
- candidateObject.component = 1;
43
- candidateObject.foundation = candidate.foundation;
44
- candidateObject.ip = candidate.ip;
45
- candidateObject.port = candidate.port;
46
- candidateObject.priority = candidate.priority;
47
- candidateObject.transport = candidate.protocol;
48
- candidateObject.type = candidate.type;
49
- if (candidate.tcpType) {
50
- candidateObject.tcptype = candidate.tcpType;
51
- }
52
- this._mediaObject.candidates.push(candidateObject);
53
- }
54
- this._mediaObject.endOfCandidates = 'end-of-candidates';
55
- this._mediaObject.iceOptions = 'renomination';
56
- }
57
- if (dtlsParameters) {
58
- this.setDtlsRole(dtlsParameters.role);
59
- }
60
- }
61
- get mid() {
62
- return String(this._mediaObject.mid);
63
- }
64
- get closed() {
65
- return this._mediaObject.port === 0;
66
- }
67
- getObject() {
68
- return this._mediaObject;
69
- }
70
- setIceParameters(iceParameters) {
71
- this._mediaObject.iceUfrag = iceParameters.usernameFragment;
72
- this._mediaObject.icePwd = iceParameters.password;
73
- }
74
- pause() {
75
- this._mediaObject.direction = 'inactive';
76
- }
77
- disable() {
78
- this.pause();
79
- delete this._mediaObject.ext;
80
- delete this._mediaObject.ssrcs;
81
- delete this._mediaObject.ssrcGroups;
82
- delete this._mediaObject.simulcast;
83
- delete this._mediaObject.simulcast_03;
84
- delete this._mediaObject.rids;
85
- delete this._mediaObject.extmapAllowMixed;
86
- }
87
- close() {
88
- this.disable();
89
- this._mediaObject.port = 0;
90
- }
91
- }
92
- exports.MediaSection = MediaSection;
93
- class AnswerMediaSection extends MediaSection {
94
- constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB = false, offerMediaObject, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed = false }) {
95
- super({ iceParameters, iceCandidates, dtlsParameters, planB });
96
- this._mediaObject.mid = String(offerMediaObject.mid);
97
- this._mediaObject.type = offerMediaObject.type;
98
- this._mediaObject.protocol = offerMediaObject.protocol;
99
- if (!plainRtpParameters) {
100
- this._mediaObject.connection = { ip: '127.0.0.1', version: 4 };
101
- this._mediaObject.port = 7;
102
- }
103
- else {
104
- this._mediaObject.connection =
105
- {
106
- ip: plainRtpParameters.ip,
107
- version: plainRtpParameters.ipVersion
108
- };
109
- this._mediaObject.port = plainRtpParameters.port;
110
- }
111
- switch (offerMediaObject.type) {
112
- case 'audio':
113
- case 'video':
114
- {
115
- this._mediaObject.direction = 'recvonly';
116
- this._mediaObject.rtp = [];
117
- this._mediaObject.rtcpFb = [];
118
- this._mediaObject.fmtp = [];
119
- for (const codec of answerRtpParameters.codecs) {
120
- const rtp = {
121
- payload: codec.payloadType,
122
- codec: getCodecName(codec),
123
- rate: codec.clockRate
124
- };
125
- if (codec.channels > 1) {
126
- rtp.encoding = codec.channels;
127
- }
128
- this._mediaObject.rtp.push(rtp);
129
- const codecParameters = utils.clone(codec.parameters, {});
130
- let codecRtcpFeedback = utils.clone(codec.rtcpFeedback, []);
131
- if (codecOptions) {
132
- const { opusStereo, opusFec, opusDtx, opusMaxPlaybackRate, opusMaxAverageBitrate, opusPtime, opusNack, videoGoogleStartBitrate, videoGoogleMaxBitrate, videoGoogleMinBitrate } = codecOptions;
133
- const offerCodec = offerRtpParameters.codecs
134
- .find((c) => (c.payloadType === codec.payloadType));
135
- switch (codec.mimeType.toLowerCase()) {
136
- case 'audio/opus':
137
- case 'audio/multiopus':
138
- {
139
- if (opusStereo !== undefined) {
140
- offerCodec.parameters['sprop-stereo'] = opusStereo ? 1 : 0;
141
- codecParameters.stereo = opusStereo ? 1 : 0;
142
- }
143
- if (opusFec !== undefined) {
144
- offerCodec.parameters.useinbandfec = opusFec ? 1 : 0;
145
- codecParameters.useinbandfec = opusFec ? 1 : 0;
146
- }
147
- if (opusDtx !== undefined) {
148
- offerCodec.parameters.usedtx = opusDtx ? 1 : 0;
149
- codecParameters.usedtx = opusDtx ? 1 : 0;
150
- }
151
- if (opusMaxPlaybackRate !== undefined) {
152
- codecParameters.maxplaybackrate = opusMaxPlaybackRate;
153
- }
154
- if (opusMaxAverageBitrate !== undefined) {
155
- codecParameters.maxaveragebitrate = opusMaxAverageBitrate;
156
- }
157
- if (opusPtime !== undefined) {
158
- offerCodec.parameters.ptime = opusPtime;
159
- codecParameters.ptime = opusPtime;
160
- }
161
- // If opusNack is not set, we must remove NACK support for OPUS.
162
- // Otherwise it would be enabled for those handlers that artificially
163
- // announce it in their RTP capabilities.
164
- if (!opusNack) {
165
- offerCodec.rtcpFeedback = offerCodec
166
- .rtcpFeedback
167
- .filter((fb) => fb.type !== 'nack' || fb.parameter);
168
- codecRtcpFeedback = codecRtcpFeedback
169
- .filter((fb) => fb.type !== 'nack' || fb.parameter);
170
- }
171
- break;
172
- }
173
- case 'video/vp8':
174
- case 'video/vp9':
175
- case 'video/h264':
176
- case 'video/h265':
177
- {
178
- if (videoGoogleStartBitrate !== undefined) {
179
- codecParameters['x-google-start-bitrate'] = videoGoogleStartBitrate;
180
- }
181
- if (videoGoogleMaxBitrate !== undefined) {
182
- codecParameters['x-google-max-bitrate'] = videoGoogleMaxBitrate;
183
- }
184
- if (videoGoogleMinBitrate !== undefined) {
185
- codecParameters['x-google-min-bitrate'] = videoGoogleMinBitrate;
186
- }
187
- break;
188
- }
189
- }
190
- }
191
- const fmtp = {
192
- payload: codec.payloadType,
193
- config: ''
194
- };
195
- for (const key of Object.keys(codecParameters)) {
196
- if (fmtp.config) {
197
- fmtp.config += ';';
198
- }
199
- fmtp.config += `${key}=${codecParameters[key]}`;
200
- }
201
- if (fmtp.config) {
202
- this._mediaObject.fmtp.push(fmtp);
203
- }
204
- for (const fb of codecRtcpFeedback) {
205
- this._mediaObject.rtcpFb.push({
206
- payload: codec.payloadType,
207
- type: fb.type,
208
- subtype: fb.parameter
209
- });
210
- }
211
- }
212
- this._mediaObject.payloads = answerRtpParameters.codecs
213
- .map((codec) => codec.payloadType)
214
- .join(' ');
215
- this._mediaObject.ext = [];
216
- for (const ext of answerRtpParameters.headerExtensions) {
217
- // Don't add a header extension if not present in the offer.
218
- const found = (offerMediaObject.ext || [])
219
- .some((localExt) => localExt.uri === ext.uri);
220
- if (!found) {
221
- continue;
222
- }
223
- this._mediaObject.ext.push({
224
- uri: ext.uri,
225
- value: ext.id
226
- });
227
- }
228
- // Allow both 1 byte and 2 bytes length header extensions.
229
- if (extmapAllowMixed &&
230
- offerMediaObject.extmapAllowMixed === 'extmap-allow-mixed') {
231
- this._mediaObject.extmapAllowMixed = 'extmap-allow-mixed';
232
- }
233
- // Simulcast.
234
- if (offerMediaObject.simulcast) {
235
- this._mediaObject.simulcast =
236
- {
237
- dir1: 'recv',
238
- list1: offerMediaObject.simulcast.list1
239
- };
240
- this._mediaObject.rids = [];
241
- for (const rid of offerMediaObject.rids || []) {
242
- if (rid.direction !== 'send') {
243
- continue;
244
- }
245
- this._mediaObject.rids.push({
246
- id: rid.id,
247
- direction: 'recv'
248
- });
249
- }
250
- }
251
- // Simulcast (draft version 03).
252
- else if (offerMediaObject.simulcast_03) {
253
- // eslint-disable-next-line camelcase
254
- this._mediaObject.simulcast_03 =
255
- {
256
- value: offerMediaObject.simulcast_03.value.replace(/send/g, 'recv')
257
- };
258
- this._mediaObject.rids = [];
259
- for (const rid of offerMediaObject.rids || []) {
260
- if (rid.direction !== 'send') {
261
- continue;
262
- }
263
- this._mediaObject.rids.push({
264
- id: rid.id,
265
- direction: 'recv'
266
- });
267
- }
268
- }
269
- this._mediaObject.rtcpMux = 'rtcp-mux';
270
- this._mediaObject.rtcpRsize = 'rtcp-rsize';
271
- if (this._planB && this._mediaObject.type === 'video') {
272
- this._mediaObject.xGoogleFlag = 'conference';
273
- }
274
- break;
275
- }
276
- case 'application':
277
- {
278
- // New spec.
279
- if (typeof offerMediaObject.sctpPort === 'number') {
280
- this._mediaObject.payloads = 'webrtc-datachannel';
281
- this._mediaObject.sctpPort = sctpParameters.port;
282
- this._mediaObject.maxMessageSize = sctpParameters.maxMessageSize;
283
- }
284
- // Old spec.
285
- else if (offerMediaObject.sctpmap) {
286
- this._mediaObject.payloads = sctpParameters.port;
287
- this._mediaObject.sctpmap =
288
- {
289
- app: 'webrtc-datachannel',
290
- sctpmapNumber: sctpParameters.port,
291
- maxMessageSize: sctpParameters.maxMessageSize
292
- };
293
- }
294
- break;
295
- }
296
- }
297
- }
298
- setDtlsRole(role) {
299
- switch (role) {
300
- case 'client':
301
- this._mediaObject.setup = 'active';
302
- break;
303
- case 'server':
304
- this._mediaObject.setup = 'passive';
305
- break;
306
- case 'auto':
307
- this._mediaObject.setup = 'actpass';
308
- break;
309
- }
310
- }
311
- resume() {
312
- this._mediaObject.direction = 'recvonly';
313
- }
314
- muxSimulcastStreams(encodings) {
315
- var _a;
316
- if (!this._mediaObject.simulcast || !this._mediaObject.simulcast.list1) {
317
- return;
318
- }
319
- const layers = {};
320
- for (const encoding of encodings) {
321
- if (encoding.rid) {
322
- layers[encoding.rid] = encoding;
323
- }
324
- }
325
- const raw = this._mediaObject.simulcast.list1;
326
- const simulcastStreams = sdpTransform.parseSimulcastStreamList(raw);
327
- for (const simulcastStream of simulcastStreams) {
328
- for (const simulcastFormat of simulcastStream) {
329
- simulcastFormat.paused = !((_a = layers[simulcastFormat.scid]) === null || _a === void 0 ? void 0 : _a.active);
330
- }
331
- }
332
- this._mediaObject.simulcast.list1 = simulcastStreams.map((simulcastFormats) => simulcastFormats.map((f) => `${f.paused ? '~' : ''}${f.scid}`).join(',')).join(';');
333
- }
334
- }
335
- exports.AnswerMediaSection = AnswerMediaSection;
336
- class OfferMediaSection extends MediaSection {
337
- constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB = false, mid, kind, offerRtpParameters, streamId, trackId, oldDataChannelSpec = false }) {
338
- super({ iceParameters, iceCandidates, dtlsParameters, planB });
339
- this._mediaObject.mid = String(mid);
340
- this._mediaObject.type = kind;
341
- if (!plainRtpParameters) {
342
- this._mediaObject.connection = { ip: '127.0.0.1', version: 4 };
343
- if (!sctpParameters) {
344
- this._mediaObject.protocol = 'UDP/TLS/RTP/SAVPF';
345
- }
346
- else {
347
- this._mediaObject.protocol = 'UDP/DTLS/SCTP';
348
- }
349
- this._mediaObject.port = 7;
350
- }
351
- else {
352
- this._mediaObject.connection =
353
- {
354
- ip: plainRtpParameters.ip,
355
- version: plainRtpParameters.ipVersion
356
- };
357
- this._mediaObject.protocol = 'RTP/AVP';
358
- this._mediaObject.port = plainRtpParameters.port;
359
- }
360
- switch (kind) {
361
- case 'audio':
362
- case 'video':
363
- {
364
- this._mediaObject.direction = 'sendonly';
365
- this._mediaObject.rtp = [];
366
- this._mediaObject.rtcpFb = [];
367
- this._mediaObject.fmtp = [];
368
- if (!this._planB) {
369
- this._mediaObject.msid = `${streamId || '-'} ${trackId}`;
370
- }
371
- for (const codec of offerRtpParameters.codecs) {
372
- const rtp = {
373
- payload: codec.payloadType,
374
- codec: getCodecName(codec),
375
- rate: codec.clockRate
376
- };
377
- if (codec.channels > 1) {
378
- rtp.encoding = codec.channels;
379
- }
380
- this._mediaObject.rtp.push(rtp);
381
- const fmtp = {
382
- payload: codec.payloadType,
383
- config: ''
384
- };
385
- for (const key of Object.keys(codec.parameters)) {
386
- if (fmtp.config) {
387
- fmtp.config += ';';
388
- }
389
- fmtp.config += `${key}=${codec.parameters[key]}`;
390
- }
391
- if (fmtp.config) {
392
- this._mediaObject.fmtp.push(fmtp);
393
- }
394
- for (const fb of codec.rtcpFeedback) {
395
- this._mediaObject.rtcpFb.push({
396
- payload: codec.payloadType,
397
- type: fb.type,
398
- subtype: fb.parameter
399
- });
400
- }
401
- }
402
- this._mediaObject.payloads = offerRtpParameters.codecs
403
- .map((codec) => codec.payloadType)
404
- .join(' ');
405
- this._mediaObject.ext = [];
406
- for (const ext of offerRtpParameters.headerExtensions) {
407
- this._mediaObject.ext.push({
408
- uri: ext.uri,
409
- value: ext.id
410
- });
411
- }
412
- this._mediaObject.rtcpMux = 'rtcp-mux';
413
- this._mediaObject.rtcpRsize = 'rtcp-rsize';
414
- const encoding = offerRtpParameters.encodings[0];
415
- const ssrc = encoding.ssrc;
416
- const rtxSsrc = (encoding.rtx && encoding.rtx.ssrc)
417
- ? encoding.rtx.ssrc
418
- : undefined;
419
- this._mediaObject.ssrcs = [];
420
- this._mediaObject.ssrcGroups = [];
421
- if (offerRtpParameters.rtcp.cname) {
422
- this._mediaObject.ssrcs.push({
423
- id: ssrc,
424
- attribute: 'cname',
425
- value: offerRtpParameters.rtcp.cname
426
- });
427
- }
428
- if (this._planB) {
429
- this._mediaObject.ssrcs.push({
430
- id: ssrc,
431
- attribute: 'msid',
432
- value: `${streamId || '-'} ${trackId}`
433
- });
434
- }
435
- if (rtxSsrc) {
436
- if (offerRtpParameters.rtcp.cname) {
437
- this._mediaObject.ssrcs.push({
438
- id: rtxSsrc,
439
- attribute: 'cname',
440
- value: offerRtpParameters.rtcp.cname
441
- });
442
- }
443
- if (this._planB) {
444
- this._mediaObject.ssrcs.push({
445
- id: rtxSsrc,
446
- attribute: 'msid',
447
- value: `${streamId || '-'} ${trackId}`
448
- });
449
- }
450
- // Associate original and retransmission SSRCs.
451
- this._mediaObject.ssrcGroups.push({
452
- semantics: 'FID',
453
- ssrcs: `${ssrc} ${rtxSsrc}`
454
- });
455
- }
456
- break;
457
- }
458
- case 'application':
459
- {
460
- // New spec.
461
- if (!oldDataChannelSpec) {
462
- this._mediaObject.payloads = 'webrtc-datachannel';
463
- this._mediaObject.sctpPort = sctpParameters.port;
464
- this._mediaObject.maxMessageSize = sctpParameters.maxMessageSize;
465
- }
466
- // Old spec.
467
- else {
468
- this._mediaObject.payloads = sctpParameters.port;
469
- this._mediaObject.sctpmap =
470
- {
471
- app: 'webrtc-datachannel',
472
- sctpmapNumber: sctpParameters.port,
473
- maxMessageSize: sctpParameters.maxMessageSize
474
- };
475
- }
476
- break;
477
- }
478
- }
479
- }
480
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
481
- setDtlsRole(role) {
482
- // Always 'actpass'.
483
- this._mediaObject.setup = 'actpass';
484
- }
485
- resume() {
486
- this._mediaObject.direction = 'sendonly';
487
- }
488
- planBReceive({ offerRtpParameters, streamId, trackId }) {
489
- const encoding = offerRtpParameters.encodings[0];
490
- const ssrc = encoding.ssrc;
491
- const rtxSsrc = (encoding.rtx && encoding.rtx.ssrc)
492
- ? encoding.rtx.ssrc
493
- : undefined;
494
- const payloads = this._mediaObject.payloads.split(' ');
495
- for (const codec of offerRtpParameters.codecs) {
496
- if (payloads.includes(String(codec.payloadType))) {
497
- continue;
498
- }
499
- const rtp = {
500
- payload: codec.payloadType,
501
- codec: getCodecName(codec),
502
- rate: codec.clockRate
503
- };
504
- if (codec.channels > 1) {
505
- rtp.encoding = codec.channels;
506
- }
507
- this._mediaObject.rtp.push(rtp);
508
- const fmtp = {
509
- payload: codec.payloadType,
510
- config: ''
511
- };
512
- for (const key of Object.keys(codec.parameters)) {
513
- if (fmtp.config) {
514
- fmtp.config += ';';
515
- }
516
- fmtp.config += `${key}=${codec.parameters[key]}`;
517
- }
518
- if (fmtp.config) {
519
- this._mediaObject.fmtp.push(fmtp);
520
- }
521
- for (const fb of codec.rtcpFeedback) {
522
- this._mediaObject.rtcpFb.push({
523
- payload: codec.payloadType,
524
- type: fb.type,
525
- subtype: fb.parameter
526
- });
527
- }
528
- }
529
- this._mediaObject.payloads += ` ${offerRtpParameters
530
- .codecs
531
- .filter((codec) => !this._mediaObject.payloads.includes(codec.payloadType))
532
- .map((codec) => codec.payloadType)
533
- .join(' ')}`;
534
- this._mediaObject.payloads = this._mediaObject.payloads.trim();
535
- if (offerRtpParameters.rtcp.cname) {
536
- this._mediaObject.ssrcs.push({
537
- id: ssrc,
538
- attribute: 'cname',
539
- value: offerRtpParameters.rtcp.cname
540
- });
541
- }
542
- this._mediaObject.ssrcs.push({
543
- id: ssrc,
544
- attribute: 'msid',
545
- value: `${streamId || '-'} ${trackId}`
546
- });
547
- if (rtxSsrc) {
548
- if (offerRtpParameters.rtcp.cname) {
549
- this._mediaObject.ssrcs.push({
550
- id: rtxSsrc,
551
- attribute: 'cname',
552
- value: offerRtpParameters.rtcp.cname
553
- });
554
- }
555
- this._mediaObject.ssrcs.push({
556
- id: rtxSsrc,
557
- attribute: 'msid',
558
- value: `${streamId || '-'} ${trackId}`
559
- });
560
- // Associate original and retransmission SSRCs.
561
- this._mediaObject.ssrcGroups.push({
562
- semantics: 'FID',
563
- ssrcs: `${ssrc} ${rtxSsrc}`
564
- });
565
- }
566
- }
567
- planBStopReceiving({ offerRtpParameters }) {
568
- const encoding = offerRtpParameters.encodings[0];
569
- const ssrc = encoding.ssrc;
570
- const rtxSsrc = (encoding.rtx && encoding.rtx.ssrc)
571
- ? encoding.rtx.ssrc
572
- : undefined;
573
- this._mediaObject.ssrcs = this._mediaObject.ssrcs
574
- .filter((s) => s.id !== ssrc && s.id !== rtxSsrc);
575
- if (rtxSsrc) {
576
- this._mediaObject.ssrcGroups = this._mediaObject.ssrcGroups
577
- .filter((group) => group.ssrcs !== `${ssrc} ${rtxSsrc}`);
578
- }
579
- }
580
- }
581
- exports.OfferMediaSection = OfferMediaSection;
582
- function getCodecName(codec) {
583
- const MimeTypeRegex = new RegExp('^(audio|video)/(.+)', 'i');
584
- const mimeTypeMatch = MimeTypeRegex.exec(codec.mimeType);
585
- if (!mimeTypeMatch) {
586
- throw new TypeError('invalid codec.mimeType');
587
- }
588
- return mimeTypeMatch[2];
589
- }
@@ -1,75 +0,0 @@
1
- import { MediaSection } from './MediaSection';
2
- import { IceParameters, IceCandidate, DtlsParameters, DtlsRole, PlainRtpParameters } from '../../Transport';
3
- import { ProducerCodecOptions } from '../../Producer';
4
- import { MediaKind, RtpParameters } from '../../RtpParameters';
5
- import { SctpParameters } from '../../SctpParameters';
6
- export declare class RemoteSdp {
7
- private _iceParameters?;
8
- private readonly _iceCandidates?;
9
- private readonly _dtlsParameters?;
10
- private readonly _sctpParameters?;
11
- private readonly _plainRtpParameters?;
12
- private readonly _planB;
13
- private readonly _mediaSections;
14
- private readonly _midToIndex;
15
- private _firstMid?;
16
- private readonly _sdpObject;
17
- constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB }: {
18
- iceParameters?: IceParameters;
19
- iceCandidates?: IceCandidate[];
20
- dtlsParameters?: DtlsParameters;
21
- sctpParameters?: SctpParameters;
22
- plainRtpParameters?: PlainRtpParameters;
23
- planB?: boolean;
24
- });
25
- updateIceParameters(iceParameters: IceParameters): void;
26
- updateDtlsRole(role: DtlsRole): void;
27
- getNextMediaSectionIdx(): {
28
- idx: number;
29
- reuseMid?: string;
30
- };
31
- send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed }: {
32
- offerMediaObject: any;
33
- reuseMid?: string;
34
- offerRtpParameters: RtpParameters;
35
- answerRtpParameters: RtpParameters;
36
- codecOptions?: ProducerCodecOptions;
37
- extmapAllowMixed?: boolean;
38
- }): void;
39
- receive({ mid, kind, offerRtpParameters, streamId, trackId }: {
40
- mid: string;
41
- kind: MediaKind;
42
- offerRtpParameters: RtpParameters;
43
- streamId: string;
44
- trackId: string;
45
- }): void;
46
- pauseMediaSection(mid: string): void;
47
- resumeSendingMediaSection(mid: string): void;
48
- resumeReceivingMediaSection(mid: string): void;
49
- disableMediaSection(mid: string): void;
50
- /**
51
- * Closes media section. Returns true if the given MID corresponds to a m
52
- * section that has been indeed closed. False otherwise.
53
- *
54
- * NOTE: Closing the first m section is a pain since it invalidates the bundled
55
- * transport, so instead closing it we just disable it.
56
- */
57
- closeMediaSection(mid: string): boolean;
58
- muxMediaSectionSimulcast(mid: string, encodings: RTCRtpEncodingParameters[]): void;
59
- planBStopReceiving({ mid, offerRtpParameters }: {
60
- mid: string;
61
- offerRtpParameters: RtpParameters;
62
- }): void;
63
- sendSctpAssociation({ offerMediaObject }: {
64
- offerMediaObject: any;
65
- }): void;
66
- receiveSctpAssociation({ oldDataChannelSpec }?: {
67
- oldDataChannelSpec?: boolean;
68
- }): void;
69
- getSdp(): string;
70
- _addMediaSection(newMediaSection: MediaSection): void;
71
- _replaceMediaSection(newMediaSection: MediaSection, reuseMid?: string): void;
72
- _findMediaSection(mid: string): MediaSection;
73
- _regenerateBundleMids(): void;
74
- }
75
- //# sourceMappingURL=RemoteSdp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteSdp.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/RemoteSdp.ts"],"names":[],"mappings":"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"}