mediasoup-client 3.7.1 → 3.7.3
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/README.md +85 -112
- package/lib/Consumer.d.ts +1 -1
- package/lib/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +1 -1
- package/lib/DataConsumer.d.ts +1 -1
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +1 -1
- package/lib/DataProducer.d.ts +1 -1
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +1 -1
- package/lib/Device.d.ts +3 -3
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +66 -89
- package/lib/EnhancedEventEmitter.d.ts.map +1 -1
- package/lib/Logger.d.ts.map +1 -1
- package/lib/Producer.d.ts +5 -15
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +2 -2
- package/lib/RtpParameters.d.ts.map +1 -1
- package/lib/SctpParameters.d.ts.map +1 -1
- package/lib/Transport.d.ts +21 -11
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +73 -55
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +6 -6
- package/lib/handlers/Chrome111.d.ts +4 -4
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +79 -78
- package/lib/handlers/Chrome55.d.ts +4 -4
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +88 -81
- package/lib/handlers/Chrome67.d.ts +4 -4
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +90 -84
- package/lib/handlers/Chrome70.d.ts +4 -4
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +81 -79
- package/lib/handlers/Chrome74.d.ts +4 -4
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +80 -79
- package/lib/handlers/Edge11.d.ts +1 -1
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +66 -78
- package/lib/handlers/FakeHandler.d.ts +3 -3
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +20 -22
- package/lib/handlers/Firefox60.d.ts +4 -4
- package/lib/handlers/Firefox60.d.ts.map +1 -1
- package/lib/handlers/Firefox60.js +80 -73
- package/lib/handlers/HandlerInterface.d.ts +1 -0
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative.d.ts +4 -4
- package/lib/handlers/ReactNative.d.ts.map +1 -1
- package/lib/handlers/ReactNative.js +89 -83
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +4 -4
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
- package/lib/handlers/ReactNativeUnifiedPlan.js +80 -79
- package/lib/handlers/Safari11.d.ts +4 -4
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +89 -82
- package/lib/handlers/Safari12.d.ts +4 -4
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +80 -78
- package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -1
- package/lib/handlers/ortc/utils.d.ts.map +1 -1
- package/lib/handlers/ortc/utils.js +2 -2
- 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 +296 -318
- package/lib/handlers/sdp/RemoteSdp.d.ts +5 -5
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
- package/lib/handlers/sdp/RemoteSdp.js +28 -30
- package/lib/handlers/sdp/commonUtils.d.ts +8 -5
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +71 -59
- package/lib/handlers/sdp/plainRtpUtils.d.ts +2 -2
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/plainRtpUtils.js +5 -7
- package/lib/handlers/sdp/planBUtils.d.ts +2 -2
- package/lib/handlers/sdp/planBUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/planBUtils.js +11 -14
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +2 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/unifiedPlanUtils.js +11 -14
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/ortc.d.ts +4 -58
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +432 -478
- package/lib/scalabilityModes.d.ts.map +1 -1
- package/lib/scalabilityModes.js +2 -2
- package/lib/{tests → test}/fakeParameters.d.ts +3 -2
- package/lib/test/fakeParameters.d.ts.map +1 -0
- package/lib/test/fakeParameters.js +654 -0
- package/lib/{tests → test}/test.d.ts.map +1 -1
- package/lib/{tests → test}/test.js +469 -496
- package/lib/test/uaTestCases.d.ts.map +1 -0
- package/lib/{tests → test}/uaTestCases.js +17 -17
- package/lib/types.d.ts.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/npm-scripts.mjs +75 -103
- package/package.json +93 -90
- package/lib/tests/fakeParameters.d.ts.map +0 -1
- package/lib/tests/fakeParameters.js +0 -662
- package/lib/tests/uaTestCases.d.ts.map +0 -1
- /package/lib/{tests → test}/test.d.ts +0 -0
- /package/lib/{tests → test}/uaTestCases.d.ts +0 -0
package/lib/handlers/Chrome70.js
CHANGED
|
@@ -76,7 +76,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
76
76
|
iceTransportPolicy: 'all',
|
|
77
77
|
bundlePolicy: 'max-bundle',
|
|
78
78
|
rtcpMuxPolicy: 'require',
|
|
79
|
-
sdpSemantics: 'unified-plan'
|
|
79
|
+
sdpSemantics: 'unified-plan',
|
|
80
80
|
});
|
|
81
81
|
try {
|
|
82
82
|
pc.addTransceiver('audio');
|
|
@@ -87,7 +87,9 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
87
87
|
}
|
|
88
88
|
catch (error) { }
|
|
89
89
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
90
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
90
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
91
|
+
sdpObject,
|
|
92
|
+
});
|
|
91
93
|
return nativeRtpCapabilities;
|
|
92
94
|
}
|
|
93
95
|
catch (error) {
|
|
@@ -101,32 +103,29 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
101
103
|
async getNativeSctpCapabilities() {
|
|
102
104
|
logger.debug('getNativeSctpCapabilities()');
|
|
103
105
|
return {
|
|
104
|
-
numStreams: SCTP_NUM_STREAMS
|
|
106
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
105
107
|
};
|
|
106
108
|
}
|
|
107
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }) {
|
|
109
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }) {
|
|
108
110
|
logger.debug('run()');
|
|
109
111
|
this._direction = direction;
|
|
110
112
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
111
113
|
iceParameters,
|
|
112
114
|
iceCandidates,
|
|
113
115
|
dtlsParameters,
|
|
114
|
-
sctpParameters
|
|
116
|
+
sctpParameters,
|
|
115
117
|
});
|
|
116
|
-
this._sendingRtpParametersByKind =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
|
|
125
|
-
};
|
|
118
|
+
this._sendingRtpParametersByKind = {
|
|
119
|
+
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
120
|
+
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
121
|
+
};
|
|
122
|
+
this._sendingRemoteRtpParametersByKind = {
|
|
123
|
+
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
124
|
+
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
125
|
+
};
|
|
126
126
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
127
|
-
this._forcedLocalDtlsRole =
|
|
128
|
-
? 'client'
|
|
129
|
-
: 'server';
|
|
127
|
+
this._forcedLocalDtlsRole =
|
|
128
|
+
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
130
129
|
}
|
|
131
130
|
this._pc = new RTCPeerConnection({
|
|
132
131
|
iceServers: iceServers || [],
|
|
@@ -134,7 +133,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
134
133
|
bundlePolicy: 'max-bundle',
|
|
135
134
|
rtcpMuxPolicy: 'require',
|
|
136
135
|
sdpSemantics: 'unified-plan',
|
|
137
|
-
...additionalSettings
|
|
136
|
+
...additionalSettings,
|
|
138
137
|
}, proprietaryConstraints);
|
|
139
138
|
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
140
139
|
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
@@ -148,32 +147,27 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
148
147
|
this._pc.addEventListener('iceconnectionstatechange', () => {
|
|
149
148
|
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
150
149
|
switch (this._pc.iceConnectionState) {
|
|
151
|
-
case 'checking':
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
150
|
+
case 'checking': {
|
|
151
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
156
154
|
case 'connected':
|
|
157
|
-
case 'completed':
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
{
|
|
174
|
-
this.emit('@connectionstatechange', 'closed');
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
155
|
+
case 'completed': {
|
|
156
|
+
this.emit('@connectionstatechange', 'connected');
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case 'failed': {
|
|
160
|
+
this.emit('@connectionstatechange', 'failed');
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case 'disconnected': {
|
|
164
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case 'closed': {
|
|
168
|
+
this.emit('@connectionstatechange', 'closed');
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
177
171
|
}
|
|
178
172
|
});
|
|
179
173
|
}
|
|
@@ -211,26 +205,27 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
211
205
|
async getTransportStats() {
|
|
212
206
|
return this._pc.getStats();
|
|
213
207
|
}
|
|
214
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
208
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
215
209
|
this.assertSendDirection();
|
|
216
210
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
217
211
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
218
212
|
// This may throw.
|
|
219
|
-
sendingRtpParameters.codecs =
|
|
220
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
213
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
221
214
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
222
215
|
// This may throw.
|
|
223
|
-
sendingRemoteRtpParameters.codecs =
|
|
224
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
216
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
225
217
|
const mediaSectionIdx = this._remoteSdp.getNextMediaSectionIdx();
|
|
226
|
-
const transceiver = this._pc.addTransceiver(track, {
|
|
218
|
+
const transceiver = this._pc.addTransceiver(track, {
|
|
219
|
+
direction: 'sendonly',
|
|
220
|
+
streams: [this._sendStream],
|
|
221
|
+
});
|
|
227
222
|
let offer = await this._pc.createOffer();
|
|
228
223
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
229
224
|
let offerMediaObject;
|
|
230
225
|
if (!this._transportReady) {
|
|
231
226
|
await this.setupTransport({
|
|
232
227
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
233
|
-
localSdpObject
|
|
228
|
+
localSdpObject,
|
|
234
229
|
});
|
|
235
230
|
}
|
|
236
231
|
if (encodings && encodings.length > 1) {
|
|
@@ -239,7 +234,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
239
234
|
offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
|
|
240
235
|
sdpUnifiedPlanUtils.addLegacySimulcast({
|
|
241
236
|
offerMediaObject,
|
|
242
|
-
numStreams: encodings.length
|
|
237
|
+
numStreams: encodings.length,
|
|
243
238
|
});
|
|
244
239
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
245
240
|
}
|
|
@@ -256,7 +251,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
256
251
|
offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
|
|
257
252
|
sdpUnifiedPlanUtils.addLegacySimulcast({
|
|
258
253
|
offerMediaObject,
|
|
259
|
-
numStreams: layers.spatialLayers
|
|
254
|
+
numStreams: layers.spatialLayers,
|
|
260
255
|
});
|
|
261
256
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
262
257
|
}
|
|
@@ -284,11 +279,13 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
284
279
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
285
280
|
offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
|
|
286
281
|
// Set RTCP CNAME.
|
|
287
|
-
sendingRtpParameters.rtcp.cname =
|
|
288
|
-
|
|
282
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
283
|
+
offerMediaObject,
|
|
284
|
+
});
|
|
289
285
|
// Set RTP encodings.
|
|
290
|
-
sendingRtpParameters.encodings =
|
|
291
|
-
|
|
286
|
+
sendingRtpParameters.encodings = sdpUnifiedPlanUtils.getRtpEncodings({
|
|
287
|
+
offerMediaObject,
|
|
288
|
+
});
|
|
292
289
|
// Complete encodings with given values.
|
|
293
290
|
if (encodings) {
|
|
294
291
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -315,7 +312,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
315
312
|
reuseMid: mediaSectionIdx.reuseMid,
|
|
316
313
|
offerRtpParameters: sendingRtpParameters,
|
|
317
314
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
318
|
-
codecOptions
|
|
315
|
+
codecOptions,
|
|
319
316
|
});
|
|
320
317
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
321
318
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -325,7 +322,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
325
322
|
return {
|
|
326
323
|
localId,
|
|
327
324
|
rtpParameters: sendingRtpParameters,
|
|
328
|
-
rtpSender: transceiver.sender
|
|
325
|
+
rtpSender: transceiver.sender,
|
|
329
326
|
};
|
|
330
327
|
}
|
|
331
328
|
async stopSending(localId) {
|
|
@@ -427,7 +424,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
427
424
|
}
|
|
428
425
|
return transceiver.sender.getStats();
|
|
429
426
|
}
|
|
430
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
427
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
431
428
|
this.assertSendDirection();
|
|
432
429
|
const options = {
|
|
433
430
|
negotiated: true,
|
|
@@ -436,7 +433,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
436
433
|
maxPacketLifeTime,
|
|
437
434
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
438
435
|
maxRetransmits,
|
|
439
|
-
protocol
|
|
436
|
+
protocol,
|
|
440
437
|
};
|
|
441
438
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
442
439
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -448,12 +445,11 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
448
445
|
if (!this._hasDataChannelMediaSection) {
|
|
449
446
|
const offer = await this._pc.createOffer();
|
|
450
447
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
451
|
-
const offerMediaObject = localSdpObject.media
|
|
452
|
-
.find((m) => m.type === 'application');
|
|
448
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
453
449
|
if (!this._transportReady) {
|
|
454
450
|
await this.setupTransport({
|
|
455
451
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
456
|
-
localSdpObject
|
|
452
|
+
localSdpObject,
|
|
457
453
|
});
|
|
458
454
|
}
|
|
459
455
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -468,7 +464,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
468
464
|
streamId: options.id,
|
|
469
465
|
ordered: options.ordered,
|
|
470
466
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
471
|
-
maxRetransmits: options.maxRetransmits
|
|
467
|
+
maxRetransmits: options.maxRetransmits,
|
|
472
468
|
};
|
|
473
469
|
return { dataChannel, sctpStreamParameters };
|
|
474
470
|
}
|
|
@@ -486,7 +482,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
486
482
|
kind,
|
|
487
483
|
offerRtpParameters: rtpParameters,
|
|
488
484
|
streamId: streamId || rtpParameters.rtcp.cname,
|
|
489
|
-
trackId
|
|
485
|
+
trackId,
|
|
490
486
|
});
|
|
491
487
|
}
|
|
492
488
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -497,20 +493,19 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
497
493
|
for (const options of optionsList) {
|
|
498
494
|
const { trackId, rtpParameters } = options;
|
|
499
495
|
const localId = mapLocalId.get(trackId);
|
|
500
|
-
const answerMediaObject = localSdpObject.media
|
|
501
|
-
.find((m) => String(m.mid) === localId);
|
|
496
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === localId);
|
|
502
497
|
// May need to modify codec parameters in the answer based on codec
|
|
503
498
|
// parameters in the offer.
|
|
504
499
|
sdpCommonUtils.applyCodecParameters({
|
|
505
500
|
offerRtpParameters: rtpParameters,
|
|
506
|
-
answerMediaObject
|
|
501
|
+
answerMediaObject,
|
|
507
502
|
});
|
|
508
503
|
}
|
|
509
504
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
510
505
|
if (!this._transportReady) {
|
|
511
506
|
await this.setupTransport({
|
|
512
507
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
513
|
-
localSdpObject
|
|
508
|
+
localSdpObject,
|
|
514
509
|
});
|
|
515
510
|
}
|
|
516
511
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -518,7 +513,8 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
518
513
|
for (const options of optionsList) {
|
|
519
514
|
const { trackId } = options;
|
|
520
515
|
const localId = mapLocalId.get(trackId);
|
|
521
|
-
const transceiver = this._pc
|
|
516
|
+
const transceiver = this._pc
|
|
517
|
+
.getTransceivers()
|
|
522
518
|
.find((t) => t.mid === localId);
|
|
523
519
|
if (!transceiver) {
|
|
524
520
|
throw new Error('new RTCRtpTransceiver not found');
|
|
@@ -528,7 +524,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
528
524
|
results.push({
|
|
529
525
|
localId,
|
|
530
526
|
track: transceiver.receiver.track,
|
|
531
|
-
rtpReceiver: transceiver.receiver
|
|
527
|
+
rtpReceiver: transceiver.receiver,
|
|
532
528
|
});
|
|
533
529
|
}
|
|
534
530
|
return results;
|
|
@@ -571,9 +567,9 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
571
567
|
}
|
|
572
568
|
return transceiver.receiver.getStats();
|
|
573
569
|
}
|
|
574
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
570
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
575
571
|
this.assertRecvDirection();
|
|
576
|
-
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
572
|
+
const { streamId, ordered, maxPacketLifeTime, maxRetransmits, } = sctpStreamParameters;
|
|
577
573
|
const options = {
|
|
578
574
|
negotiated: true,
|
|
579
575
|
id: streamId,
|
|
@@ -581,7 +577,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
581
577
|
maxPacketLifeTime,
|
|
582
578
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
583
579
|
maxRetransmits,
|
|
584
|
-
protocol
|
|
580
|
+
protocol,
|
|
585
581
|
};
|
|
586
582
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
587
583
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -597,7 +593,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
597
593
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
598
594
|
await this.setupTransport({
|
|
599
595
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
600
|
-
localSdpObject
|
|
596
|
+
localSdpObject,
|
|
601
597
|
});
|
|
602
598
|
}
|
|
603
599
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -606,19 +602,25 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
|
|
|
606
602
|
}
|
|
607
603
|
return { dataChannel };
|
|
608
604
|
}
|
|
609
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
605
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
610
606
|
if (!localSdpObject) {
|
|
611
607
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
612
608
|
}
|
|
609
|
+
// Get our local ICE parameters.
|
|
610
|
+
const iceParameters = sdpCommonUtils.extractIceParameters({
|
|
611
|
+
sdpObject: localSdpObject,
|
|
612
|
+
});
|
|
613
613
|
// Get our local DTLS parameters.
|
|
614
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
614
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
615
|
+
sdpObject: localSdpObject,
|
|
616
|
+
});
|
|
615
617
|
// Set our DTLS role.
|
|
616
618
|
dtlsParameters.role = localDtlsRole;
|
|
617
619
|
// Update the remote DTLS role in the SDP.
|
|
618
620
|
this._remoteSdp.updateDtlsRole(localDtlsRole === 'client' ? 'server' : 'client');
|
|
619
621
|
// Need to tell the remote transport about our parameters.
|
|
620
622
|
await new Promise((resolve, reject) => {
|
|
621
|
-
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
|
|
623
|
+
this.safeEmit('@connect', { iceParameters, dtlsParameters }, resolve, reject);
|
|
622
624
|
});
|
|
623
625
|
this._transportReady = true;
|
|
624
626
|
}
|
|
@@ -24,11 +24,11 @@ export declare class Chrome74 extends HandlerInterface {
|
|
|
24
24
|
close(): void;
|
|
25
25
|
getNativeRtpCapabilities(): Promise<RtpCapabilities>;
|
|
26
26
|
getNativeSctpCapabilities(): Promise<SctpCapabilities>;
|
|
27
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }: HandlerRunOptions): void;
|
|
27
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
|
|
28
28
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
29
29
|
restartIce(iceParameters: IceParameters): Promise<void>;
|
|
30
30
|
getTransportStats(): Promise<RTCStatsReport>;
|
|
31
|
-
send({ track, encodings, codecOptions, codec }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
31
|
+
send({ track, encodings, codecOptions, codec, }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
32
32
|
stopSending(localId: string): Promise<void>;
|
|
33
33
|
pauseSending(localId: string): Promise<void>;
|
|
34
34
|
resumeSending(localId: string): Promise<void>;
|
|
@@ -36,13 +36,13 @@ export declare class Chrome74 extends HandlerInterface {
|
|
|
36
36
|
setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
|
|
37
37
|
setRtpEncodingParameters(localId: string, params: any): Promise<void>;
|
|
38
38
|
getSenderStats(localId: string): Promise<RTCStatsReport>;
|
|
39
|
-
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
39
|
+
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
40
40
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
41
41
|
stopReceiving(localIds: string[]): Promise<void>;
|
|
42
42
|
pauseReceiving(localIds: string[]): Promise<void>;
|
|
43
43
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
44
44
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
45
|
-
receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
45
|
+
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
46
46
|
private setupTransport;
|
|
47
47
|
private assertNotClosed;
|
|
48
48
|
private assertSendDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"AAQA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AACvD,OAAO,EACN,eAAe,EAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,QAAS,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
|