mediasoup-client 3.12.4 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/lib/Device.d.ts +1 -1
  2. package/lib/Device.d.ts.map +1 -1
  3. package/lib/Device.js +8 -81
  4. package/lib/RtpParameters.d.ts +1 -1
  5. package/lib/RtpParameters.d.ts.map +1 -1
  6. package/lib/handlers/{ReactNativeUnifiedPlan.d.ts → ReactNative106.d.ts} +2 -2
  7. package/lib/handlers/ReactNative106.d.ts.map +1 -0
  8. package/lib/handlers/{ReactNativeUnifiedPlan.js → ReactNative106.js} +6 -6
  9. package/lib/handlers/sdp/MediaSection.d.ts +3 -15
  10. package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
  11. package/lib/handlers/sdp/MediaSection.js +6 -113
  12. package/lib/handlers/sdp/RemoteSdp.d.ts +1 -7
  13. package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
  14. package/lib/handlers/sdp/RemoteSdp.js +18 -41
  15. package/lib/index.d.ts +1 -1
  16. package/lib/index.js +1 -1
  17. package/lib/test/fakeParameters.d.ts.map +1 -1
  18. package/lib/test/fakeParameters.js +0 -14
  19. package/lib/test/test.js +0 -112
  20. package/lib/test/uaTestCases.d.ts.map +1 -1
  21. package/lib/test/uaTestCases.js +0 -25
  22. package/npm-scripts.mjs +26 -14
  23. package/package.json +8 -8
  24. package/lib/handlers/Chrome55.d.ts +0 -51
  25. package/lib/handlers/Chrome55.d.ts.map +0 -1
  26. package/lib/handlers/Chrome55.js +0 -554
  27. package/lib/handlers/Chrome67.d.ts +0 -51
  28. package/lib/handlers/Chrome67.d.ts.map +0 -1
  29. package/lib/handlers/Chrome67.js +0 -609
  30. package/lib/handlers/Chrome70.d.ts +0 -49
  31. package/lib/handlers/Chrome70.d.ts.map +0 -1
  32. package/lib/handlers/Chrome70.js +0 -634
  33. package/lib/handlers/Edge11.d.ts +0 -55
  34. package/lib/handlers/Edge11.d.ts.map +0 -1
  35. package/lib/handlers/Edge11.js +0 -447
  36. package/lib/handlers/Firefox60.d.ts +0 -50
  37. package/lib/handlers/Firefox60.d.ts.map +0 -1
  38. package/lib/handlers/Firefox60.js +0 -721
  39. package/lib/handlers/ReactNative.d.ts +0 -51
  40. package/lib/handlers/ReactNative.d.ts.map +0 -1
  41. package/lib/handlers/ReactNative.js +0 -569
  42. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +0 -1
  43. package/lib/handlers/Safari11.d.ts +0 -51
  44. package/lib/handlers/Safari11.d.ts.map +0 -1
  45. package/lib/handlers/Safari11.js +0 -604
  46. package/lib/handlers/ortc/edgeUtils.d.ts +0 -11
  47. package/lib/handlers/ortc/edgeUtils.d.ts.map +0 -1
  48. package/lib/handlers/ortc/edgeUtils.js +0 -70
  49. package/lib/handlers/sdp/planBUtils.d.ts +0 -14
  50. package/lib/handlers/sdp/planBUtils.d.ts.map +0 -1
  51. package/lib/handlers/sdp/planBUtils.js +0 -150
@@ -1 +0,0 @@
1
- {"version":3,"file":"Edge11.d.ts","sourceRoot":"","sources":["../../src/handlers/Edge11.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACX,aAAa,EAIb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,qBAAa,MAAO,SAAQ,gBAAgB;IAE3C,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAEvE,OAAO,CAAC,oBAAoB,CAAC,CAAgB;IAE7C,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAE/C,OAAO,CAAC,YAAY,CAAC,CAAM;IAE3B,OAAO,CAAC,aAAa,CAAC,CAAM;IAE5B,OAAO,CAAC,cAAc,CAAC,CAAM;IAE7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IAEpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAQtC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAoCP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAMpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAQ5D,GAAG,CAAC,EACH,SAAS,EAAE,wDAAwD;IACnE,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EAAE,wDAAwD;IACxE,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAAE,wDAAwD;IAC5E,sBAAsB,EAAE,wDAAwD;IAChF,uBAAuB,GACvB,EAAE,iBAAiB,GAAG,IAAI;IAmBrB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C,IAAI,CAET,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;IA8DvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,YAAY,CACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAoBV,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA0BV,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAUxD,eAAe,CAEpB,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,4BAA4B,CAAC;IAIlC,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqD5B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhD,cAAc,CAEnB,QAAQ,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAIV,eAAe,CAEpB,QAAQ,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAIV,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU1D,kBAAkB,CAEvB,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,+BAA+B,CAAC;IAI3C,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,eAAe;IAqFvB,OAAO,CAAC,gBAAgB;YA8BV,cAAc;CAkD5B"}
@@ -1,447 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Edge11 = void 0;
4
- const Logger_1 = require("../Logger");
5
- const errors_1 = require("../errors");
6
- const utils = require("../utils");
7
- const ortc = require("../ortc");
8
- const edgeUtils = require("./ortc/edgeUtils");
9
- const HandlerInterface_1 = require("./HandlerInterface");
10
- const logger = new Logger_1.Logger('Edge11');
11
- const NAME = 'Edge11';
12
- class Edge11 extends HandlerInterface_1.HandlerInterface {
13
- // Generic sending RTP parameters for audio and video.
14
- _sendingRtpParametersByKind;
15
- // Transport remote ICE parameters.
16
- _remoteIceParameters;
17
- // Transport remote ICE candidates.
18
- _remoteIceCandidates;
19
- // Transport remote DTLS parameters.
20
- _remoteDtlsParameters;
21
- // ICE gatherer.
22
- _iceGatherer;
23
- // ICE transport.
24
- _iceTransport;
25
- // DTLS transport.
26
- _dtlsTransport;
27
- // Map of RTCRtpSenders indexed by id.
28
- _rtpSenders = new Map();
29
- // Map of RTCRtpReceivers indexed by id.
30
- _rtpReceivers = new Map();
31
- // Next localId for sending tracks.
32
- _nextSendLocalId = 0;
33
- // Local RTCP CNAME.
34
- _cname;
35
- // Got transport local and remote parameters.
36
- _transportReady = false;
37
- /**
38
- * Creates a factory function.
39
- */
40
- static createFactory() {
41
- return () => new Edge11();
42
- }
43
- constructor() {
44
- super();
45
- }
46
- get name() {
47
- return NAME;
48
- }
49
- close() {
50
- logger.debug('close()');
51
- // Close the ICE gatherer.
52
- // NOTE: Not yet implemented by Edge.
53
- try {
54
- this._iceGatherer.close();
55
- }
56
- catch (error) { }
57
- // Close the ICE transport.
58
- try {
59
- this._iceTransport.stop();
60
- }
61
- catch (error) { }
62
- // Close the DTLS transport.
63
- try {
64
- this._dtlsTransport.stop();
65
- }
66
- catch (error) { }
67
- // Close RTCRtpSenders.
68
- for (const rtpSender of this._rtpSenders.values()) {
69
- try {
70
- rtpSender.stop();
71
- }
72
- catch (error) { }
73
- }
74
- // Close RTCRtpReceivers.
75
- for (const rtpReceiver of this._rtpReceivers.values()) {
76
- try {
77
- rtpReceiver.stop();
78
- }
79
- catch (error) { }
80
- }
81
- this.emit('@close');
82
- }
83
- async getNativeRtpCapabilities() {
84
- logger.debug('getNativeRtpCapabilities()');
85
- return edgeUtils.getCapabilities();
86
- }
87
- async getNativeSctpCapabilities() {
88
- logger.debug('getNativeSctpCapabilities()');
89
- return {
90
- numStreams: { OS: 0, MIS: 0 },
91
- };
92
- }
93
- run({ direction, // eslint-disable-line @typescript-eslint/no-unused-vars
94
- iceParameters, iceCandidates, dtlsParameters, sctpParameters, // eslint-disable-line @typescript-eslint/no-unused-vars
95
- iceServers, iceTransportPolicy, additionalSettings, // eslint-disable-line @typescript-eslint/no-unused-vars
96
- proprietaryConstraints, // eslint-disable-line @typescript-eslint/no-unused-vars
97
- extendedRtpCapabilities, }) {
98
- logger.debug('run()');
99
- this._sendingRtpParametersByKind = {
100
- audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
101
- video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
102
- };
103
- this._remoteIceParameters = iceParameters;
104
- this._remoteIceCandidates = iceCandidates;
105
- this._remoteDtlsParameters = dtlsParameters;
106
- this._cname = `CNAME-${utils.generateRandomNumber()}`;
107
- this.setIceGatherer({ iceServers, iceTransportPolicy });
108
- this.setIceTransport();
109
- this.setDtlsTransport();
110
- }
111
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
- async updateIceServers(iceServers) {
113
- // NOTE: Edge 11 does not implement iceGatherer.gater().
114
- throw new errors_1.UnsupportedError('not supported');
115
- }
116
- async restartIce(iceParameters) {
117
- logger.debug('restartIce()');
118
- this._remoteIceParameters = iceParameters;
119
- if (!this._transportReady) {
120
- return;
121
- }
122
- logger.debug('restartIce() | calling iceTransport.start()');
123
- this._iceTransport.start(this._iceGatherer, iceParameters, 'controlling');
124
- for (const candidate of this._remoteIceCandidates) {
125
- this._iceTransport.addRemoteCandidate(candidate);
126
- }
127
- this._iceTransport.addRemoteCandidate({});
128
- }
129
- async getTransportStats() {
130
- return this._iceTransport.getStats();
131
- }
132
- async send(
133
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
134
- { track, encodings, codecOptions, codec }) {
135
- logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
136
- if (!this._transportReady) {
137
- await this.setupTransport({ localDtlsRole: 'server' });
138
- }
139
- logger.debug('send() | calling new RTCRtpSender()');
140
- const rtpSender = new RTCRtpSender(track, this._dtlsTransport);
141
- const rtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
142
- rtpParameters.codecs = ortc.reduceCodecs(rtpParameters.codecs, codec);
143
- const useRtx = rtpParameters.codecs.some((_codec) => /.+\/rtx$/i.test(_codec.mimeType));
144
- if (!encodings) {
145
- encodings = [{}];
146
- }
147
- for (const encoding of encodings) {
148
- encoding.ssrc = utils.generateRandomNumber();
149
- if (useRtx) {
150
- encoding.rtx = { ssrc: utils.generateRandomNumber() };
151
- }
152
- }
153
- rtpParameters.encodings = encodings;
154
- // Fill RTCRtpParameters.rtcp.
155
- rtpParameters.rtcp = {
156
- cname: this._cname,
157
- reducedSize: true,
158
- mux: true,
159
- };
160
- // NOTE: Convert our standard RTCRtpParameters into those that Edge
161
- // expects.
162
- const edgeRtpParameters = edgeUtils.mangleRtpParameters(rtpParameters);
163
- logger.debug('send() | calling rtpSender.send() [params:%o]', edgeRtpParameters);
164
- await rtpSender.send(edgeRtpParameters);
165
- const localId = String(this._nextSendLocalId);
166
- this._nextSendLocalId++;
167
- // Store it.
168
- this._rtpSenders.set(localId, rtpSender);
169
- return { localId, rtpParameters, rtpSender };
170
- }
171
- async stopSending(localId) {
172
- logger.debug('stopSending() [localId:%s]', localId);
173
- const rtpSender = this._rtpSenders.get(localId);
174
- if (!rtpSender) {
175
- throw new Error('RTCRtpSender not found');
176
- }
177
- this._rtpSenders.delete(localId);
178
- try {
179
- logger.debug('stopSending() | calling rtpSender.stop()');
180
- rtpSender.stop();
181
- }
182
- catch (error) {
183
- logger.warn('stopSending() | rtpSender.stop() failed:%o', error);
184
- throw error;
185
- }
186
- }
187
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
188
- async pauseSending(localId) {
189
- // Unimplemented.
190
- }
191
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
192
- async resumeSending(localId) {
193
- // Unimplemented.
194
- }
195
- async replaceTrack(localId, track) {
196
- if (track) {
197
- logger.debug('replaceTrack() [localId:%s, track.id:%s]', localId, track.id);
198
- }
199
- else {
200
- logger.debug('replaceTrack() [localId:%s, no track]', localId);
201
- }
202
- const rtpSender = this._rtpSenders.get(localId);
203
- if (!rtpSender) {
204
- throw new Error('RTCRtpSender not found');
205
- }
206
- rtpSender.setTrack(track);
207
- }
208
- async setMaxSpatialLayer(localId, spatialLayer) {
209
- logger.debug('setMaxSpatialLayer() [localId:%s, spatialLayer:%s]', localId, spatialLayer);
210
- const rtpSender = this._rtpSenders.get(localId);
211
- if (!rtpSender) {
212
- throw new Error('RTCRtpSender not found');
213
- }
214
- const parameters = rtpSender.getParameters();
215
- parameters.encodings.forEach((encoding, idx) => {
216
- if (idx <= spatialLayer) {
217
- encoding.active = true;
218
- }
219
- else {
220
- encoding.active = false;
221
- }
222
- });
223
- await rtpSender.setParameters(parameters);
224
- }
225
- async setRtpEncodingParameters(localId, params) {
226
- logger.debug('setRtpEncodingParameters() [localId:%s, params:%o]', localId, params);
227
- const rtpSender = this._rtpSenders.get(localId);
228
- if (!rtpSender) {
229
- throw new Error('RTCRtpSender not found');
230
- }
231
- const parameters = rtpSender.getParameters();
232
- parameters.encodings.forEach((encoding, idx) => {
233
- parameters.encodings[idx] = { ...encoding, ...params };
234
- });
235
- await rtpSender.setParameters(parameters);
236
- }
237
- async getSenderStats(localId) {
238
- const rtpSender = this._rtpSenders.get(localId);
239
- if (!rtpSender) {
240
- throw new Error('RTCRtpSender not found');
241
- }
242
- return rtpSender.getStats();
243
- }
244
- async sendDataChannel(
245
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
246
- options) {
247
- throw new errors_1.UnsupportedError('not implemented');
248
- }
249
- async receive(optionsList) {
250
- const results = [];
251
- for (const options of optionsList) {
252
- const { trackId, kind } = options;
253
- logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
254
- }
255
- if (!this._transportReady) {
256
- await this.setupTransport({ localDtlsRole: 'server' });
257
- }
258
- for (const options of optionsList) {
259
- const { trackId, kind, rtpParameters } = options;
260
- logger.debug('receive() | calling new RTCRtpReceiver()');
261
- const rtpReceiver = new RTCRtpReceiver(this._dtlsTransport, kind);
262
- rtpReceiver.addEventListener('error', (event) => {
263
- logger.error('rtpReceiver "error" event [event:%o]', event);
264
- });
265
- // NOTE: Convert our standard RTCRtpParameters into those that Edge
266
- // expects.
267
- const edgeRtpParameters = edgeUtils.mangleRtpParameters(rtpParameters);
268
- logger.debug('receive() | calling rtpReceiver.receive() [params:%o]', edgeRtpParameters);
269
- await rtpReceiver.receive(edgeRtpParameters);
270
- const localId = trackId;
271
- // Store it.
272
- this._rtpReceivers.set(localId, rtpReceiver);
273
- results.push({
274
- localId,
275
- track: rtpReceiver.track,
276
- rtpReceiver,
277
- });
278
- }
279
- return results;
280
- }
281
- async stopReceiving(localIds) {
282
- for (const localId of localIds) {
283
- logger.debug('stopReceiving() [localId:%s]', localId);
284
- const rtpReceiver = this._rtpReceivers.get(localId);
285
- if (!rtpReceiver) {
286
- throw new Error('RTCRtpReceiver not found');
287
- }
288
- this._rtpReceivers.delete(localId);
289
- try {
290
- logger.debug('stopReceiving() | calling rtpReceiver.stop()');
291
- rtpReceiver.stop();
292
- }
293
- catch (error) {
294
- logger.warn('stopReceiving() | rtpReceiver.stop() failed:%o', error);
295
- }
296
- }
297
- }
298
- async pauseReceiving(
299
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
300
- localIds) {
301
- // Unimplemented.
302
- }
303
- async resumeReceiving(
304
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
305
- localIds) {
306
- // Unimplemented.
307
- }
308
- async getReceiverStats(localId) {
309
- const rtpReceiver = this._rtpReceivers.get(localId);
310
- if (!rtpReceiver) {
311
- throw new Error('RTCRtpReceiver not found');
312
- }
313
- return rtpReceiver.getStats();
314
- }
315
- async receiveDataChannel(
316
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
317
- options) {
318
- throw new errors_1.UnsupportedError('not implemented');
319
- }
320
- setIceGatherer({ iceServers, iceTransportPolicy, }) {
321
- // @ts-expect-error --- On purpose
322
- const iceGatherer = new RTCIceGatherer({
323
- iceServers: iceServers ?? [],
324
- gatherPolicy: iceTransportPolicy ?? 'all',
325
- });
326
- iceGatherer.addEventListener('error', (event) => {
327
- logger.error('iceGatherer "error" event [event:%o]', event);
328
- });
329
- // NOTE: Not yet implemented by Edge, which starts gathering automatically.
330
- try {
331
- iceGatherer.gather();
332
- }
333
- catch (error) {
334
- logger.debug('setIceGatherer() | iceGatherer.gather() failed: %s', error.toString());
335
- }
336
- this._iceGatherer = iceGatherer;
337
- }
338
- setIceTransport() {
339
- const iceTransport = new RTCIceTransport(this._iceGatherer);
340
- // NOTE: Not yet implemented by Edge.
341
- iceTransport.addEventListener('statechange', () => {
342
- switch (iceTransport.state) {
343
- case 'checking': {
344
- this.emit('@connectionstatechange', 'connecting');
345
- break;
346
- }
347
- case 'connected':
348
- case 'completed': {
349
- this.emit('@connectionstatechange', 'connected');
350
- break;
351
- }
352
- case 'failed': {
353
- this.emit('@connectionstatechange', 'failed');
354
- break;
355
- }
356
- case 'disconnected': {
357
- this.emit('@connectionstatechange', 'disconnected');
358
- break;
359
- }
360
- case 'closed': {
361
- this.emit('@connectionstatechange', 'closed');
362
- break;
363
- }
364
- }
365
- });
366
- // NOTE: Not standard, but implemented by Edge.
367
- iceTransport.addEventListener('icestatechange', () => {
368
- switch (iceTransport.state) {
369
- case 'checking': {
370
- this.emit('@connectionstatechange', 'connecting');
371
- break;
372
- }
373
- case 'connected':
374
- case 'completed': {
375
- this.emit('@connectionstatechange', 'connected');
376
- break;
377
- }
378
- case 'failed': {
379
- this.emit('@connectionstatechange', 'failed');
380
- break;
381
- }
382
- case 'disconnected': {
383
- this.emit('@connectionstatechange', 'disconnected');
384
- break;
385
- }
386
- case 'closed': {
387
- this.emit('@connectionstatechange', 'closed');
388
- break;
389
- }
390
- }
391
- });
392
- iceTransport.addEventListener('candidatepairchange', (event) => {
393
- logger.debug('iceTransport "candidatepairchange" event [pair:%o]', event.pair);
394
- });
395
- this._iceTransport = iceTransport;
396
- }
397
- setDtlsTransport() {
398
- const dtlsTransport = new RTCDtlsTransport(this._iceTransport);
399
- // NOTE: Not yet implemented by Edge.
400
- dtlsTransport.addEventListener('statechange', () => {
401
- logger.debug('dtlsTransport "statechange" event [state:%s]', dtlsTransport.state);
402
- });
403
- // NOTE: Not standard, but implemented by Edge.
404
- dtlsTransport.addEventListener('dtlsstatechange', () => {
405
- logger.debug('dtlsTransport "dtlsstatechange" event [state:%s]', dtlsTransport.state);
406
- if (dtlsTransport.state === 'closed') {
407
- this.emit('@connectionstatechange', 'closed');
408
- }
409
- });
410
- dtlsTransport.addEventListener('error', (event) => {
411
- logger.error('dtlsTransport "error" event [event:%o]', event);
412
- });
413
- this._dtlsTransport = dtlsTransport;
414
- }
415
- async setupTransport({ localDtlsRole, }) {
416
- logger.debug('setupTransport()');
417
- // Get our local DTLS parameters.
418
- const dtlsParameters = this._dtlsTransport.getLocalParameters();
419
- dtlsParameters.role = localDtlsRole;
420
- // Need to tell the remote transport about our parameters.
421
- await new Promise((resolve, reject) => {
422
- this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
423
- });
424
- // Start the RTCIceTransport.
425
- this._iceTransport.start(this._iceGatherer, this._remoteIceParameters, 'controlling');
426
- // Add remote ICE candidates.
427
- for (const candidate of this._remoteIceCandidates) {
428
- this._iceTransport.addRemoteCandidate(candidate);
429
- }
430
- // Also signal a 'complete' candidate as per spec.
431
- // NOTE: It should be {complete: true} but Edge prefers {}.
432
- // NOTE: If we don't signal end of candidates, the Edge RTCIceTransport
433
- // won't enter the 'completed' state.
434
- this._iceTransport.addRemoteCandidate({});
435
- // NOTE: Edge does not like SHA less than 256.
436
- this._remoteDtlsParameters.fingerprints =
437
- this._remoteDtlsParameters.fingerprints.filter((fingerprint) => {
438
- return (fingerprint.algorithm === 'sha-256' ||
439
- fingerprint.algorithm === 'sha-384' ||
440
- fingerprint.algorithm === 'sha-512');
441
- });
442
- // Start the RTCDtlsTransport.
443
- this._dtlsTransport.start(this._remoteDtlsParameters);
444
- this._transportReady = true;
445
- }
446
- }
447
- exports.Edge11 = Edge11;
@@ -1,50 +0,0 @@
1
- import { type HandlerFactory, HandlerInterface, type HandlerRunOptions, type HandlerSendOptions, type HandlerSendResult, type HandlerReceiveOptions, type HandlerReceiveResult, type HandlerSendDataChannelOptions, type HandlerSendDataChannelResult, type HandlerReceiveDataChannelOptions, type HandlerReceiveDataChannelResult } from './HandlerInterface';
2
- import type { IceParameters } from '../Transport';
3
- import type { RtpCapabilities } from '../RtpParameters';
4
- import type { SctpCapabilities } from '../SctpParameters';
5
- export declare class Firefox60 extends HandlerInterface {
6
- private _closed;
7
- private _direction?;
8
- private _remoteSdp?;
9
- private _sendingRtpParametersByKind?;
10
- private _sendingRemoteRtpParametersByKind?;
11
- private _pc;
12
- private readonly _mapMidTransceiver;
13
- private readonly _sendStream;
14
- private _hasDataChannelMediaSection;
15
- private _nextSendSctpStreamId;
16
- private _transportReady;
17
- /**
18
- * Creates a factory function.
19
- */
20
- static createFactory(): HandlerFactory;
21
- constructor();
22
- get name(): string;
23
- close(): void;
24
- getNativeRtpCapabilities(): Promise<RtpCapabilities>;
25
- getNativeSctpCapabilities(): Promise<SctpCapabilities>;
26
- run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
27
- updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
28
- restartIce(iceParameters: IceParameters): Promise<void>;
29
- getTransportStats(): Promise<RTCStatsReport>;
30
- send({ track, encodings, codecOptions, codec, }: HandlerSendOptions): Promise<HandlerSendResult>;
31
- stopSending(localId: string): Promise<void>;
32
- pauseSending(localId: string): Promise<void>;
33
- resumeSending(localId: string): Promise<void>;
34
- replaceTrack(localId: string, track: MediaStreamTrack | null): Promise<void>;
35
- setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
36
- setRtpEncodingParameters(localId: string, params: any): Promise<void>;
37
- getSenderStats(localId: string): Promise<RTCStatsReport>;
38
- sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
39
- receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
40
- stopReceiving(localIds: string[]): Promise<void>;
41
- pauseReceiving(localIds: string[]): Promise<void>;
42
- resumeReceiving(localIds: string[]): Promise<void>;
43
- getReceiverStats(localId: string): Promise<RTCStatsReport>;
44
- receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
45
- private setupTransport;
46
- private assertNotClosed;
47
- private assertSendDirection;
48
- private assertRecvDirection;
49
- }
50
- //# sourceMappingURL=Firefox60.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Firefox60.d.ts","sourceRoot":"","sources":["../../src/handlers/Firefox60.ts"],"names":[],"mappings":"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"}