mediasoup-client 3.13.0 → 3.14.1
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.
- package/lib/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +3 -0
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +8 -8
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +8 -7
- package/lib/Device.d.ts +2 -2
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +53 -70
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +3 -0
- package/lib/RtpParameters.d.ts +8 -8
- package/lib/RtpParameters.d.ts.map +1 -1
- package/lib/Transport.d.ts +4 -4
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +9 -7
- package/lib/enhancedEvents.d.ts +4 -0
- package/lib/enhancedEvents.d.ts.map +1 -1
- package/lib/enhancedEvents.js +7 -0
- package/lib/handlers/Chrome111.d.ts +13 -13
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +175 -124
- package/lib/handlers/Chrome74.d.ts +13 -13
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +175 -120
- package/lib/handlers/FakeHandler.d.ts +8 -10
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +204 -61
- package/lib/handlers/Firefox120.d.ts +13 -13
- package/lib/handlers/Firefox120.d.ts.map +1 -1
- package/lib/handlers/Firefox120.js +200 -147
- package/lib/handlers/HandlerInterface.d.ts +11 -9
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.d.ts +13 -13
- package/lib/handlers/ReactNative106.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.js +181 -127
- package/lib/handlers/Safari12.d.ts +13 -13
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +178 -116
- package/lib/handlers/sdp/MediaSection.d.ts +5 -5
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
- package/lib/handlers/sdp/MediaSection.js +43 -45
- package/lib/handlers/sdp/RemoteSdp.d.ts +5 -6
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
- package/lib/handlers/sdp/RemoteSdp.js +5 -8
- package/lib/handlers/sdp/commonUtils.d.ts +5 -4
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +2 -2
- package/lib/handlers/sdp/plainRtpUtils.d.ts +4 -3
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/plainRtpUtils.js +2 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +3 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/unifiedPlanUtils.js +10 -8
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/ortc.d.ts +7 -6
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +13 -14
- package/lib/privateTypes.d.ts +27 -0
- package/lib/privateTypes.d.ts.map +1 -0
- package/lib/privateTypes.js +2 -0
- package/lib/test/test.js +22 -3
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +5 -4
- package/package.json +8 -9
package/lib/handlers/Safari12.js
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Safari12 = void 0;
|
|
4
4
|
const sdpTransform = require("sdp-transform");
|
|
5
|
+
const enhancedEvents_1 = require("../enhancedEvents");
|
|
5
6
|
const Logger_1 = require("../Logger");
|
|
6
7
|
const utils = require("../utils");
|
|
7
8
|
const ortc = require("../ortc");
|
|
9
|
+
const errors_1 = require("../errors");
|
|
10
|
+
const scalabilityModes_1 = require("../scalabilityModes");
|
|
11
|
+
const RemoteSdp_1 = require("./sdp/RemoteSdp");
|
|
8
12
|
const sdpCommonUtils = require("./sdp/commonUtils");
|
|
9
13
|
const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
|
|
10
14
|
const ortcUtils = require("./ortc/utils");
|
|
11
|
-
const errors_1 = require("../errors");
|
|
12
|
-
const HandlerInterface_1 = require("./HandlerInterface");
|
|
13
|
-
const RemoteSdp_1 = require("./sdp/RemoteSdp");
|
|
14
|
-
const scalabilityModes_1 = require("../scalabilityModes");
|
|
15
15
|
const logger = new Logger_1.Logger('Safari12');
|
|
16
16
|
const NAME = 'Safari12';
|
|
17
17
|
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
|
|
18
|
-
class Safari12 extends
|
|
18
|
+
class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
19
19
|
// Closed flag.
|
|
20
20
|
_closed = false;
|
|
21
21
|
// Handler direction.
|
|
@@ -46,70 +46,54 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
46
46
|
* Creates a factory function.
|
|
47
47
|
*/
|
|
48
48
|
static createFactory() {
|
|
49
|
-
return () => new Safari12();
|
|
50
|
-
}
|
|
51
|
-
constructor() {
|
|
52
|
-
super();
|
|
53
|
-
}
|
|
54
|
-
get name() {
|
|
55
|
-
return NAME;
|
|
56
|
-
}
|
|
57
|
-
close() {
|
|
58
|
-
logger.debug('close()');
|
|
59
|
-
if (this._closed) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
this._closed = true;
|
|
63
|
-
// Close RTCPeerConnection.
|
|
64
|
-
if (this._pc) {
|
|
65
|
-
try {
|
|
66
|
-
this._pc.close();
|
|
67
|
-
}
|
|
68
|
-
catch (error) { }
|
|
69
|
-
}
|
|
70
|
-
this.emit('@close');
|
|
71
|
-
}
|
|
72
|
-
async getNativeRtpCapabilities() {
|
|
73
|
-
logger.debug('getNativeRtpCapabilities()');
|
|
74
|
-
const pc = new RTCPeerConnection({
|
|
75
|
-
iceServers: [],
|
|
76
|
-
iceTransportPolicy: 'all',
|
|
77
|
-
bundlePolicy: 'max-bundle',
|
|
78
|
-
rtcpMuxPolicy: 'require',
|
|
79
|
-
});
|
|
80
|
-
try {
|
|
81
|
-
pc.addTransceiver('audio');
|
|
82
|
-
pc.addTransceiver('video');
|
|
83
|
-
const offer = await pc.createOffer();
|
|
84
|
-
try {
|
|
85
|
-
pc.close();
|
|
86
|
-
}
|
|
87
|
-
catch (error) { }
|
|
88
|
-
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
89
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
90
|
-
sdpObject,
|
|
91
|
-
});
|
|
92
|
-
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
93
|
-
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
94
|
-
return nativeRtpCapabilities;
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
try {
|
|
98
|
-
pc.close();
|
|
99
|
-
}
|
|
100
|
-
catch (error2) { }
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async getNativeSctpCapabilities() {
|
|
105
|
-
logger.debug('getNativeSctpCapabilities()');
|
|
106
49
|
return {
|
|
107
|
-
|
|
50
|
+
name: NAME,
|
|
51
|
+
factory: (options) => new Safari12(options),
|
|
52
|
+
getNativeRtpCapabilities: async () => {
|
|
53
|
+
logger.debug('getNativeRtpCapabilities()');
|
|
54
|
+
let pc = new RTCPeerConnection({
|
|
55
|
+
iceServers: [],
|
|
56
|
+
iceTransportPolicy: 'all',
|
|
57
|
+
bundlePolicy: 'max-bundle',
|
|
58
|
+
rtcpMuxPolicy: 'require',
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
pc.addTransceiver('audio');
|
|
62
|
+
pc.addTransceiver('video');
|
|
63
|
+
const offer = await pc.createOffer();
|
|
64
|
+
try {
|
|
65
|
+
pc.close();
|
|
66
|
+
}
|
|
67
|
+
catch (error) { }
|
|
68
|
+
pc = undefined;
|
|
69
|
+
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
70
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
71
|
+
sdpObject,
|
|
72
|
+
});
|
|
73
|
+
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
74
|
+
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
75
|
+
return nativeRtpCapabilities;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
try {
|
|
79
|
+
pc?.close();
|
|
80
|
+
}
|
|
81
|
+
catch (error2) { }
|
|
82
|
+
pc = undefined;
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
getNativeSctpCapabilities: async () => {
|
|
87
|
+
logger.debug('getNativeSctpCapabilities()');
|
|
88
|
+
return {
|
|
89
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
90
|
+
};
|
|
91
|
+
},
|
|
108
92
|
};
|
|
109
93
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
logger.debug('
|
|
94
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, extendedRtpCapabilities, }) {
|
|
95
|
+
super();
|
|
96
|
+
logger.debug('constructor()');
|
|
113
97
|
this._direction = direction;
|
|
114
98
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
115
99
|
iceParameters,
|
|
@@ -135,46 +119,44 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
135
119
|
bundlePolicy: 'max-bundle',
|
|
136
120
|
rtcpMuxPolicy: 'require',
|
|
137
121
|
...additionalSettings,
|
|
138
|
-
}
|
|
122
|
+
});
|
|
139
123
|
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
140
124
|
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
141
125
|
});
|
|
142
126
|
this._pc.addEventListener('icecandidateerror', (event) => {
|
|
143
127
|
this.emit('@icecandidateerror', event);
|
|
144
128
|
});
|
|
129
|
+
this._pc.addEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
|
|
130
|
+
this._pc.addEventListener('icecandidateerror', this.onIceCandidateError);
|
|
145
131
|
if (this._pc.connectionState) {
|
|
146
|
-
this._pc.addEventListener('connectionstatechange',
|
|
147
|
-
this.emit('@connectionstatechange', this._pc.connectionState);
|
|
148
|
-
});
|
|
132
|
+
this._pc.addEventListener('connectionstatechange', this.onConnectionStateChange);
|
|
149
133
|
}
|
|
150
134
|
else {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
case 'disconnected': {
|
|
168
|
-
this.emit('@connectionstatechange', 'disconnected');
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
case 'closed': {
|
|
172
|
-
this.emit('@connectionstatechange', 'closed');
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
});
|
|
135
|
+
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
136
|
+
this._pc.addEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
get name() {
|
|
140
|
+
return NAME;
|
|
141
|
+
}
|
|
142
|
+
close() {
|
|
143
|
+
logger.debug('close()');
|
|
144
|
+
if (this._closed) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this._closed = true;
|
|
148
|
+
// Close RTCPeerConnection.
|
|
149
|
+
try {
|
|
150
|
+
this._pc.close();
|
|
177
151
|
}
|
|
152
|
+
catch (error) { }
|
|
153
|
+
this._pc.removeEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
|
|
154
|
+
this._pc.removeEventListener('icecandidateerror', this.onIceCandidateError);
|
|
155
|
+
this._pc.removeEventListener('connectionstatechange', this.onConnectionStateChange);
|
|
156
|
+
this._pc.removeEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
|
|
157
|
+
this.emit('@close');
|
|
158
|
+
// Invoke close() in EnhancedEventEmitter classes.
|
|
159
|
+
super.close();
|
|
178
160
|
}
|
|
179
161
|
async updateIceServers(iceServers) {
|
|
180
162
|
this.assertNotClosed();
|
|
@@ -195,12 +177,18 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
195
177
|
const offer = await this._pc.createOffer({ iceRestart: true });
|
|
196
178
|
logger.debug('restartIce() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
197
179
|
await this._pc.setLocalDescription(offer);
|
|
198
|
-
const answer = {
|
|
180
|
+
const answer = {
|
|
181
|
+
type: 'answer',
|
|
182
|
+
sdp: this._remoteSdp.getSdp(),
|
|
183
|
+
};
|
|
199
184
|
logger.debug('restartIce() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
200
185
|
await this._pc.setRemoteDescription(answer);
|
|
201
186
|
}
|
|
202
187
|
else {
|
|
203
|
-
const offer = {
|
|
188
|
+
const offer = {
|
|
189
|
+
type: 'offer',
|
|
190
|
+
sdp: this._remoteSdp.getSdp(),
|
|
191
|
+
};
|
|
204
192
|
logger.debug('restartIce() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
205
193
|
await this._pc.setRemoteDescription(offer);
|
|
206
194
|
const answer = await this._pc.createAnswer();
|
|
@@ -232,8 +220,6 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
232
220
|
}
|
|
233
221
|
let offer = await this._pc.createOffer();
|
|
234
222
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
235
|
-
// @ts-expect-error --- sdpTransform.SessionDescription type doesn't
|
|
236
|
-
// define extmapAllowMixed field.
|
|
237
223
|
if (localSdpObject.extmapAllowMixed) {
|
|
238
224
|
this._remoteSdp.setSessionExtmapAllowMixed();
|
|
239
225
|
}
|
|
@@ -253,7 +239,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
253
239
|
offerMediaObject,
|
|
254
240
|
numStreams: encodings.length,
|
|
255
241
|
});
|
|
256
|
-
offer = {
|
|
242
|
+
offer = {
|
|
243
|
+
type: 'offer',
|
|
244
|
+
sdp: sdpTransform.write(localSdpObject),
|
|
245
|
+
};
|
|
257
246
|
}
|
|
258
247
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
259
248
|
await this._pc.setLocalDescription(offer);
|
|
@@ -300,7 +289,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
300
289
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
301
290
|
codecOptions,
|
|
302
291
|
});
|
|
303
|
-
const answer = {
|
|
292
|
+
const answer = {
|
|
293
|
+
type: 'answer',
|
|
294
|
+
sdp: this._remoteSdp.getSdp(),
|
|
295
|
+
};
|
|
304
296
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
305
297
|
await this._pc.setRemoteDescription(answer);
|
|
306
298
|
// Store in the map.
|
|
@@ -333,7 +325,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
333
325
|
const offer = await this._pc.createOffer();
|
|
334
326
|
logger.debug('stopSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
335
327
|
await this._pc.setLocalDescription(offer);
|
|
336
|
-
const answer = {
|
|
328
|
+
const answer = {
|
|
329
|
+
type: 'answer',
|
|
330
|
+
sdp: this._remoteSdp.getSdp(),
|
|
331
|
+
};
|
|
337
332
|
logger.debug('stopSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
338
333
|
await this._pc.setRemoteDescription(answer);
|
|
339
334
|
this._mapMidTransceiver.delete(localId);
|
|
@@ -351,7 +346,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
351
346
|
const offer = await this._pc.createOffer();
|
|
352
347
|
logger.debug('pauseSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
353
348
|
await this._pc.setLocalDescription(offer);
|
|
354
|
-
const answer = {
|
|
349
|
+
const answer = {
|
|
350
|
+
type: 'answer',
|
|
351
|
+
sdp: this._remoteSdp.getSdp(),
|
|
352
|
+
};
|
|
355
353
|
logger.debug('pauseSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
356
354
|
await this._pc.setRemoteDescription(answer);
|
|
357
355
|
}
|
|
@@ -368,7 +366,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
368
366
|
const offer = await this._pc.createOffer();
|
|
369
367
|
logger.debug('resumeSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
370
368
|
await this._pc.setLocalDescription(offer);
|
|
371
|
-
const answer = {
|
|
369
|
+
const answer = {
|
|
370
|
+
type: 'answer',
|
|
371
|
+
sdp: this._remoteSdp.getSdp(),
|
|
372
|
+
};
|
|
372
373
|
logger.debug('resumeSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
373
374
|
await this._pc.setRemoteDescription(answer);
|
|
374
375
|
}
|
|
@@ -409,7 +410,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
409
410
|
const offer = await this._pc.createOffer();
|
|
410
411
|
logger.debug('setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
411
412
|
await this._pc.setLocalDescription(offer);
|
|
412
|
-
const answer = {
|
|
413
|
+
const answer = {
|
|
414
|
+
type: 'answer',
|
|
415
|
+
sdp: this._remoteSdp.getSdp(),
|
|
416
|
+
};
|
|
413
417
|
logger.debug('setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
414
418
|
await this._pc.setRemoteDescription(answer);
|
|
415
419
|
}
|
|
@@ -430,7 +434,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
430
434
|
const offer = await this._pc.createOffer();
|
|
431
435
|
logger.debug('setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
432
436
|
await this._pc.setLocalDescription(offer);
|
|
433
|
-
const answer = {
|
|
437
|
+
const answer = {
|
|
438
|
+
type: 'answer',
|
|
439
|
+
sdp: this._remoteSdp.getSdp(),
|
|
440
|
+
};
|
|
434
441
|
logger.debug('setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
435
442
|
await this._pc.setRemoteDescription(answer);
|
|
436
443
|
}
|
|
@@ -464,7 +471,7 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
464
471
|
if (!this._hasDataChannelMediaSection) {
|
|
465
472
|
const offer = await this._pc.createOffer();
|
|
466
473
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
467
|
-
const offerMediaObject = localSdpObject.media.find(
|
|
474
|
+
const offerMediaObject = localSdpObject.media.find(m => m.type === 'application');
|
|
468
475
|
if (!this._transportReady) {
|
|
469
476
|
await this.setupTransport({
|
|
470
477
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -474,7 +481,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
474
481
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
475
482
|
await this._pc.setLocalDescription(offer);
|
|
476
483
|
this._remoteSdp.sendSctpAssociation({ offerMediaObject });
|
|
477
|
-
const answer = {
|
|
484
|
+
const answer = {
|
|
485
|
+
type: 'answer',
|
|
486
|
+
sdp: this._remoteSdp.getSdp(),
|
|
487
|
+
};
|
|
478
488
|
logger.debug('sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
479
489
|
await this._pc.setRemoteDescription(answer);
|
|
480
490
|
this._hasDataChannelMediaSection = true;
|
|
@@ -505,7 +515,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
505
515
|
trackId,
|
|
506
516
|
});
|
|
507
517
|
}
|
|
508
|
-
const offer = {
|
|
518
|
+
const offer = {
|
|
519
|
+
type: 'offer',
|
|
520
|
+
sdp: this._remoteSdp.getSdp(),
|
|
521
|
+
};
|
|
509
522
|
logger.debug('receive() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
510
523
|
await this._pc.setRemoteDescription(offer);
|
|
511
524
|
for (const options of optionsList) {
|
|
@@ -526,7 +539,7 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
526
539
|
for (const options of optionsList) {
|
|
527
540
|
const { trackId, rtpParameters } = options;
|
|
528
541
|
const localId = mapLocalId.get(trackId);
|
|
529
|
-
const answerMediaObject = localSdpObject.media.find(
|
|
542
|
+
const answerMediaObject = localSdpObject.media.find(m => String(m.mid) === localId);
|
|
530
543
|
// May need to modify codec parameters in the answer based on codec
|
|
531
544
|
// parameters in the offer.
|
|
532
545
|
sdpCommonUtils.applyCodecParameters({
|
|
@@ -534,7 +547,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
534
547
|
answerMediaObject,
|
|
535
548
|
});
|
|
536
549
|
}
|
|
537
|
-
answer = {
|
|
550
|
+
answer = {
|
|
551
|
+
type: 'answer',
|
|
552
|
+
sdp: sdpTransform.write(localSdpObject),
|
|
553
|
+
};
|
|
538
554
|
if (!this._transportReady) {
|
|
539
555
|
await this.setupTransport({
|
|
540
556
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -575,7 +591,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
575
591
|
}
|
|
576
592
|
this._remoteSdp.closeMediaSection(transceiver.mid);
|
|
577
593
|
}
|
|
578
|
-
const offer = {
|
|
594
|
+
const offer = {
|
|
595
|
+
type: 'offer',
|
|
596
|
+
sdp: this._remoteSdp.getSdp(),
|
|
597
|
+
};
|
|
579
598
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
580
599
|
await this._pc.setRemoteDescription(offer);
|
|
581
600
|
const answer = await this._pc.createAnswer();
|
|
@@ -597,7 +616,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
597
616
|
transceiver.direction = 'inactive';
|
|
598
617
|
this._remoteSdp.pauseMediaSection(localId);
|
|
599
618
|
}
|
|
600
|
-
const offer = {
|
|
619
|
+
const offer = {
|
|
620
|
+
type: 'offer',
|
|
621
|
+
sdp: this._remoteSdp.getSdp(),
|
|
622
|
+
};
|
|
601
623
|
logger.debug('pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
602
624
|
await this._pc.setRemoteDescription(offer);
|
|
603
625
|
const answer = await this._pc.createAnswer();
|
|
@@ -616,7 +638,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
616
638
|
transceiver.direction = 'recvonly';
|
|
617
639
|
this._remoteSdp.resumeReceivingMediaSection(localId);
|
|
618
640
|
}
|
|
619
|
-
const offer = {
|
|
641
|
+
const offer = {
|
|
642
|
+
type: 'offer',
|
|
643
|
+
sdp: this._remoteSdp.getSdp(),
|
|
644
|
+
};
|
|
620
645
|
logger.debug('resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
621
646
|
await this._pc.setRemoteDescription(offer);
|
|
622
647
|
const answer = await this._pc.createAnswer();
|
|
@@ -650,7 +675,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
650
675
|
// m=application section.
|
|
651
676
|
if (!this._hasDataChannelMediaSection) {
|
|
652
677
|
this._remoteSdp.receiveSctpAssociation();
|
|
653
|
-
const offer = {
|
|
678
|
+
const offer = {
|
|
679
|
+
type: 'offer',
|
|
680
|
+
sdp: this._remoteSdp.getSdp(),
|
|
681
|
+
};
|
|
654
682
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
655
683
|
await this._pc.setRemoteDescription(offer);
|
|
656
684
|
const answer = await this._pc.createAnswer();
|
|
@@ -685,6 +713,40 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
|
|
|
685
713
|
});
|
|
686
714
|
this._transportReady = true;
|
|
687
715
|
}
|
|
716
|
+
onIceGatheringStateChange = () => {
|
|
717
|
+
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
718
|
+
};
|
|
719
|
+
onIceCandidateError = (event) => {
|
|
720
|
+
this.emit('@icecandidateerror', event);
|
|
721
|
+
};
|
|
722
|
+
onConnectionStateChange = () => {
|
|
723
|
+
this.emit('@connectionstatechange', this._pc.connectionState);
|
|
724
|
+
};
|
|
725
|
+
onIceConnectionStateChange = () => {
|
|
726
|
+
switch (this._pc.iceConnectionState) {
|
|
727
|
+
case 'checking': {
|
|
728
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
729
|
+
break;
|
|
730
|
+
}
|
|
731
|
+
case 'connected':
|
|
732
|
+
case 'completed': {
|
|
733
|
+
this.emit('@connectionstatechange', 'connected');
|
|
734
|
+
break;
|
|
735
|
+
}
|
|
736
|
+
case 'failed': {
|
|
737
|
+
this.emit('@connectionstatechange', 'failed');
|
|
738
|
+
break;
|
|
739
|
+
}
|
|
740
|
+
case 'disconnected': {
|
|
741
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
742
|
+
break;
|
|
743
|
+
}
|
|
744
|
+
case 'closed': {
|
|
745
|
+
this.emit('@connectionstatechange', 'closed');
|
|
746
|
+
break;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
};
|
|
688
750
|
assertNotClosed() {
|
|
689
751
|
if (this._closed) {
|
|
690
752
|
throw new errors_1.InvalidStateError('method called in a closed handler');
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type * as SdpTransform from 'sdp-transform';
|
|
1
2
|
import type { IceParameters, IceCandidate, DtlsParameters, DtlsRole, PlainRtpParameters } from '../../Transport';
|
|
2
3
|
import type { ProducerCodecOptions } from '../../Producer';
|
|
3
4
|
import type { MediaKind, RtpParameters } from '../../RtpParameters';
|
|
4
5
|
import type { SctpParameters } from '../../SctpParameters';
|
|
5
6
|
export declare abstract class MediaSection {
|
|
6
|
-
protected readonly _mediaObject:
|
|
7
|
+
protected readonly _mediaObject: SdpTransform.MediaDescription;
|
|
7
8
|
constructor({ iceParameters, iceCandidates, dtlsParameters, }: {
|
|
8
9
|
iceParameters?: IceParameters;
|
|
9
10
|
iceCandidates?: IceCandidate[];
|
|
@@ -12,7 +13,7 @@ export declare abstract class MediaSection {
|
|
|
12
13
|
abstract setDtlsRole(role: DtlsRole): void;
|
|
13
14
|
get mid(): string;
|
|
14
15
|
get closed(): boolean;
|
|
15
|
-
getObject():
|
|
16
|
+
getObject(): SdpTransform.MediaDescription;
|
|
16
17
|
setIceParameters(iceParameters: IceParameters): void;
|
|
17
18
|
pause(): void;
|
|
18
19
|
abstract resume(): void;
|
|
@@ -26,7 +27,7 @@ export declare class AnswerMediaSection extends MediaSection {
|
|
|
26
27
|
dtlsParameters?: DtlsParameters;
|
|
27
28
|
sctpParameters?: SctpParameters;
|
|
28
29
|
plainRtpParameters?: PlainRtpParameters;
|
|
29
|
-
offerMediaObject:
|
|
30
|
+
offerMediaObject: SdpTransform.MediaDescription;
|
|
30
31
|
offerRtpParameters?: RtpParameters;
|
|
31
32
|
answerRtpParameters?: RtpParameters;
|
|
32
33
|
codecOptions?: ProducerCodecOptions;
|
|
@@ -36,7 +37,7 @@ export declare class AnswerMediaSection extends MediaSection {
|
|
|
36
37
|
muxSimulcastStreams(encodings: RTCRtpEncodingParameters[]): void;
|
|
37
38
|
}
|
|
38
39
|
export declare class OfferMediaSection extends MediaSection {
|
|
39
|
-
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, mid, kind, offerRtpParameters, streamId, trackId,
|
|
40
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, mid, kind, offerRtpParameters, streamId, trackId, }: {
|
|
40
41
|
iceParameters?: IceParameters;
|
|
41
42
|
iceCandidates?: IceCandidate[];
|
|
42
43
|
dtlsParameters?: DtlsParameters;
|
|
@@ -47,7 +48,6 @@ export declare class OfferMediaSection extends MediaSection {
|
|
|
47
48
|
offerRtpParameters?: RtpParameters;
|
|
48
49
|
streamId?: string;
|
|
49
50
|
trackId?: string;
|
|
50
|
-
oldDataChannelSpec?: boolean;
|
|
51
51
|
});
|
|
52
52
|
setDtlsRole(role: DtlsRole): void;
|
|
53
53
|
resume(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,8BAAsB,YAAY;IAEjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC;gBAEnD,EACX,aAAa,EACb,aAAa,EACb,cAAc,GACd,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;KAChC;IAmDD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE1C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,YAAY,CAAC,gBAAgB;IAI1C,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAKpD,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB,OAAO,IAAI,IAAI;IAYf,KAAK,IAAI,IAAI;CAKb;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACvC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACZ,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAAC;QAChD,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,mBAAmB,CAAC,EAAE,aAAa,CAAC;QACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;KACpC;IAiQD,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAsBjC,MAAM,IAAI,IAAI;IAId,mBAAmB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,IAAI;CA6BhE;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACtC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,GAAG,EACH,IAAI,EACJ,kBAAkB,EAClB,QAAQ,EACR,OAAO,GACP,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;QAChC,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IA4ID,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKjC,MAAM,IAAI,IAAI;CAGd"}
|