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/Chrome67.js
CHANGED
|
@@ -80,19 +80,21 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
80
80
|
iceTransportPolicy: 'all',
|
|
81
81
|
bundlePolicy: 'max-bundle',
|
|
82
82
|
rtcpMuxPolicy: 'require',
|
|
83
|
-
sdpSemantics: 'plan-b'
|
|
83
|
+
sdpSemantics: 'plan-b',
|
|
84
84
|
});
|
|
85
85
|
try {
|
|
86
86
|
const offer = await pc.createOffer({
|
|
87
87
|
offerToReceiveAudio: true,
|
|
88
|
-
offerToReceiveVideo: true
|
|
88
|
+
offerToReceiveVideo: true,
|
|
89
89
|
});
|
|
90
90
|
try {
|
|
91
91
|
pc.close();
|
|
92
92
|
}
|
|
93
93
|
catch (error) { }
|
|
94
94
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
95
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
95
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
96
|
+
sdpObject,
|
|
97
|
+
});
|
|
96
98
|
return nativeRtpCapabilities;
|
|
97
99
|
}
|
|
98
100
|
catch (error) {
|
|
@@ -106,10 +108,10 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
106
108
|
async getNativeSctpCapabilities() {
|
|
107
109
|
logger.debug('getNativeSctpCapabilities()');
|
|
108
110
|
return {
|
|
109
|
-
numStreams: SCTP_NUM_STREAMS
|
|
111
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
110
112
|
};
|
|
111
113
|
}
|
|
112
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }) {
|
|
114
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }) {
|
|
113
115
|
logger.debug('run()');
|
|
114
116
|
this._direction = direction;
|
|
115
117
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
@@ -117,22 +119,19 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
117
119
|
iceCandidates,
|
|
118
120
|
dtlsParameters,
|
|
119
121
|
sctpParameters,
|
|
120
|
-
planB: true
|
|
122
|
+
planB: true,
|
|
121
123
|
});
|
|
122
|
-
this._sendingRtpParametersByKind =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
|
|
131
|
-
};
|
|
124
|
+
this._sendingRtpParametersByKind = {
|
|
125
|
+
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
126
|
+
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
127
|
+
};
|
|
128
|
+
this._sendingRemoteRtpParametersByKind = {
|
|
129
|
+
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
130
|
+
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
131
|
+
};
|
|
132
132
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
133
|
-
this._forcedLocalDtlsRole =
|
|
134
|
-
? 'client'
|
|
135
|
-
: 'server';
|
|
133
|
+
this._forcedLocalDtlsRole =
|
|
134
|
+
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
136
135
|
}
|
|
137
136
|
this._pc = new RTCPeerConnection({
|
|
138
137
|
iceServers: iceServers || [],
|
|
@@ -140,7 +139,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
140
139
|
bundlePolicy: 'max-bundle',
|
|
141
140
|
rtcpMuxPolicy: 'require',
|
|
142
141
|
sdpSemantics: 'plan-b',
|
|
143
|
-
...additionalSettings
|
|
142
|
+
...additionalSettings,
|
|
144
143
|
}, proprietaryConstraints);
|
|
145
144
|
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
146
145
|
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
@@ -154,32 +153,27 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
154
153
|
this._pc.addEventListener('iceconnectionstatechange', () => {
|
|
155
154
|
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
156
155
|
switch (this._pc.iceConnectionState) {
|
|
157
|
-
case 'checking':
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
156
|
+
case 'checking': {
|
|
157
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
162
160
|
case 'connected':
|
|
163
|
-
case 'completed':
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
{
|
|
180
|
-
this.emit('@connectionstatechange', 'closed');
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
161
|
+
case 'completed': {
|
|
162
|
+
this.emit('@connectionstatechange', 'connected');
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case 'failed': {
|
|
166
|
+
this.emit('@connectionstatechange', 'failed');
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case 'disconnected': {
|
|
170
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'closed': {
|
|
174
|
+
this.emit('@connectionstatechange', 'closed');
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
183
177
|
}
|
|
184
178
|
});
|
|
185
179
|
}
|
|
@@ -217,7 +211,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
217
211
|
async getTransportStats() {
|
|
218
212
|
return this._pc.getStats();
|
|
219
213
|
}
|
|
220
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
214
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
221
215
|
this.assertSendDirection();
|
|
222
216
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
223
217
|
if (codec) {
|
|
@@ -229,40 +223,39 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
229
223
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
230
224
|
let offerMediaObject;
|
|
231
225
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
232
|
-
sendingRtpParameters.codecs =
|
|
233
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
226
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
234
227
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
235
|
-
sendingRemoteRtpParameters.codecs =
|
|
236
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
228
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
237
229
|
if (!this._transportReady) {
|
|
238
230
|
await this.setupTransport({
|
|
239
231
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
240
|
-
localSdpObject
|
|
232
|
+
localSdpObject,
|
|
241
233
|
});
|
|
242
234
|
}
|
|
243
235
|
if (track.kind === 'video' && encodings && encodings.length > 1) {
|
|
244
236
|
logger.debug('send() | enabling simulcast');
|
|
245
237
|
localSdpObject = sdpTransform.parse(offer.sdp);
|
|
246
|
-
offerMediaObject = localSdpObject.media
|
|
247
|
-
.find((m) => m.type === 'video');
|
|
238
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === 'video');
|
|
248
239
|
sdpPlanBUtils.addLegacySimulcast({
|
|
249
240
|
offerMediaObject,
|
|
250
241
|
track,
|
|
251
|
-
numStreams: encodings.length
|
|
242
|
+
numStreams: encodings.length,
|
|
252
243
|
});
|
|
253
244
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
254
245
|
}
|
|
255
246
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
256
247
|
await this._pc.setLocalDescription(offer);
|
|
257
248
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
258
|
-
offerMediaObject = localSdpObject.media
|
|
259
|
-
.find((m) => m.type === track.kind);
|
|
249
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === track.kind);
|
|
260
250
|
// Set RTCP CNAME.
|
|
261
|
-
sendingRtpParameters.rtcp.cname =
|
|
262
|
-
|
|
251
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
252
|
+
offerMediaObject,
|
|
253
|
+
});
|
|
263
254
|
// Set RTP encodings.
|
|
264
|
-
sendingRtpParameters.encodings =
|
|
265
|
-
|
|
255
|
+
sendingRtpParameters.encodings = sdpPlanBUtils.getRtpEncodings({
|
|
256
|
+
offerMediaObject,
|
|
257
|
+
track,
|
|
258
|
+
});
|
|
266
259
|
// Complete encodings with given values.
|
|
267
260
|
if (encodings) {
|
|
268
261
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -283,21 +276,22 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
283
276
|
offerMediaObject,
|
|
284
277
|
offerRtpParameters: sendingRtpParameters,
|
|
285
278
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
286
|
-
codecOptions
|
|
279
|
+
codecOptions,
|
|
287
280
|
});
|
|
288
281
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
289
282
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
290
283
|
await this._pc.setRemoteDescription(answer);
|
|
291
284
|
const localId = String(this._nextSendLocalId);
|
|
292
285
|
this._nextSendLocalId++;
|
|
293
|
-
const rtpSender = this._pc
|
|
286
|
+
const rtpSender = this._pc
|
|
287
|
+
.getSenders()
|
|
294
288
|
.find((s) => s.track === track);
|
|
295
289
|
// Insert into the map.
|
|
296
290
|
this._mapSendLocalIdRtpSender.set(localId, rtpSender);
|
|
297
291
|
return {
|
|
298
292
|
localId: localId,
|
|
299
293
|
rtpParameters: sendingRtpParameters,
|
|
300
|
-
rtpSender
|
|
294
|
+
rtpSender,
|
|
301
295
|
};
|
|
302
296
|
}
|
|
303
297
|
async stopSending(localId) {
|
|
@@ -403,7 +397,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
403
397
|
}
|
|
404
398
|
return rtpSender.getStats();
|
|
405
399
|
}
|
|
406
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
400
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
407
401
|
this.assertSendDirection();
|
|
408
402
|
const options = {
|
|
409
403
|
negotiated: true,
|
|
@@ -412,7 +406,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
412
406
|
maxPacketLifeTime,
|
|
413
407
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
414
408
|
maxRetransmits,
|
|
415
|
-
protocol
|
|
409
|
+
protocol,
|
|
416
410
|
};
|
|
417
411
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
418
412
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -424,12 +418,11 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
424
418
|
if (!this._hasDataChannelMediaSection) {
|
|
425
419
|
const offer = await this._pc.createOffer();
|
|
426
420
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
427
|
-
const offerMediaObject = localSdpObject.media
|
|
428
|
-
.find((m) => m.type === 'application');
|
|
421
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
429
422
|
if (!this._transportReady) {
|
|
430
423
|
await this.setupTransport({
|
|
431
424
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
432
|
-
localSdpObject
|
|
425
|
+
localSdpObject,
|
|
433
426
|
});
|
|
434
427
|
}
|
|
435
428
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -444,7 +437,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
444
437
|
streamId: options.id,
|
|
445
438
|
ordered: options.ordered,
|
|
446
439
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
447
|
-
maxRetransmits: options.maxRetransmits
|
|
440
|
+
maxRetransmits: options.maxRetransmits,
|
|
448
441
|
};
|
|
449
442
|
return { dataChannel, sctpStreamParameters };
|
|
450
443
|
}
|
|
@@ -460,7 +453,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
460
453
|
kind,
|
|
461
454
|
offerRtpParameters: rtpParameters,
|
|
462
455
|
streamId: streamId || rtpParameters.rtcp.cname,
|
|
463
|
-
trackId
|
|
456
|
+
trackId,
|
|
464
457
|
});
|
|
465
458
|
}
|
|
466
459
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -471,20 +464,19 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
471
464
|
for (const options of optionsList) {
|
|
472
465
|
const { kind, rtpParameters } = options;
|
|
473
466
|
const mid = kind;
|
|
474
|
-
const answerMediaObject = localSdpObject.media
|
|
475
|
-
.find((m) => String(m.mid) === mid);
|
|
467
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === mid);
|
|
476
468
|
// May need to modify codec parameters in the answer based on codec
|
|
477
469
|
// parameters in the offer.
|
|
478
470
|
sdpCommonUtils.applyCodecParameters({
|
|
479
471
|
offerRtpParameters: rtpParameters,
|
|
480
|
-
answerMediaObject
|
|
472
|
+
answerMediaObject,
|
|
481
473
|
});
|
|
482
474
|
}
|
|
483
475
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
484
476
|
if (!this._transportReady) {
|
|
485
477
|
await this.setupTransport({
|
|
486
478
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
487
|
-
localSdpObject
|
|
479
|
+
localSdpObject,
|
|
488
480
|
});
|
|
489
481
|
}
|
|
490
482
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -493,17 +485,22 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
493
485
|
const { kind, trackId, rtpParameters } = options;
|
|
494
486
|
const localId = trackId;
|
|
495
487
|
const mid = kind;
|
|
496
|
-
const rtpReceiver = this._pc
|
|
488
|
+
const rtpReceiver = this._pc
|
|
489
|
+
.getReceivers()
|
|
497
490
|
.find((r) => r.track && r.track.id === localId);
|
|
498
491
|
if (!rtpReceiver) {
|
|
499
492
|
throw new Error('new RTCRtpReceiver not');
|
|
500
493
|
}
|
|
501
494
|
// Insert into the map.
|
|
502
|
-
this._mapRecvLocalIdInfo.set(localId, {
|
|
495
|
+
this._mapRecvLocalIdInfo.set(localId, {
|
|
496
|
+
mid,
|
|
497
|
+
rtpParameters,
|
|
498
|
+
rtpReceiver,
|
|
499
|
+
});
|
|
503
500
|
results.push({
|
|
504
501
|
localId,
|
|
505
502
|
track: rtpReceiver.track,
|
|
506
|
-
rtpReceiver
|
|
503
|
+
rtpReceiver,
|
|
507
504
|
});
|
|
508
505
|
}
|
|
509
506
|
return results;
|
|
@@ -515,7 +512,10 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
515
512
|
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
|
|
516
513
|
// Remove from the map.
|
|
517
514
|
this._mapRecvLocalIdInfo.delete(localId);
|
|
518
|
-
this._remoteSdp.planBStopReceiving({
|
|
515
|
+
this._remoteSdp.planBStopReceiving({
|
|
516
|
+
mid: mid,
|
|
517
|
+
offerRtpParameters: rtpParameters,
|
|
518
|
+
});
|
|
519
519
|
}
|
|
520
520
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
521
521
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
@@ -542,7 +542,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
542
542
|
}
|
|
543
543
|
return rtpReceiver.getStats();
|
|
544
544
|
}
|
|
545
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
545
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
546
546
|
this.assertRecvDirection();
|
|
547
547
|
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
548
548
|
const options = {
|
|
@@ -552,7 +552,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
552
552
|
maxPacketLifeTime,
|
|
553
553
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
554
554
|
maxRetransmits,
|
|
555
|
-
protocol
|
|
555
|
+
protocol,
|
|
556
556
|
};
|
|
557
557
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
558
558
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -568,7 +568,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
568
568
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
569
569
|
await this.setupTransport({
|
|
570
570
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
571
|
-
localSdpObject
|
|
571
|
+
localSdpObject,
|
|
572
572
|
});
|
|
573
573
|
}
|
|
574
574
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -577,19 +577,25 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
577
577
|
}
|
|
578
578
|
return { dataChannel };
|
|
579
579
|
}
|
|
580
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
580
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
581
581
|
if (!localSdpObject) {
|
|
582
582
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
583
583
|
}
|
|
584
|
+
// Get our local ICE parameters.
|
|
585
|
+
const iceParameters = sdpCommonUtils.extractIceParameters({
|
|
586
|
+
sdpObject: localSdpObject,
|
|
587
|
+
});
|
|
584
588
|
// Get our local DTLS parameters.
|
|
585
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
589
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
590
|
+
sdpObject: localSdpObject,
|
|
591
|
+
});
|
|
586
592
|
// Set our DTLS role.
|
|
587
593
|
dtlsParameters.role = localDtlsRole;
|
|
588
594
|
// Update the remote DTLS role in the SDP.
|
|
589
595
|
this._remoteSdp.updateDtlsRole(localDtlsRole === 'client' ? 'server' : 'client');
|
|
590
596
|
// Need to tell the remote transport about our parameters.
|
|
591
597
|
await new Promise((resolve, reject) => {
|
|
592
|
-
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
|
|
598
|
+
this.safeEmit('@connect', { iceParameters, dtlsParameters }, resolve, reject);
|
|
593
599
|
});
|
|
594
600
|
this._transportReady = true;
|
|
595
601
|
}
|
|
@@ -23,11 +23,11 @@ export declare class Chrome70 extends HandlerInterface {
|
|
|
23
23
|
close(): void;
|
|
24
24
|
getNativeRtpCapabilities(): Promise<RtpCapabilities>;
|
|
25
25
|
getNativeSctpCapabilities(): Promise<SctpCapabilities>;
|
|
26
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }: HandlerRunOptions): void;
|
|
26
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
|
|
27
27
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
28
28
|
restartIce(iceParameters: IceParameters): Promise<void>;
|
|
29
29
|
getTransportStats(): Promise<RTCStatsReport>;
|
|
30
|
-
send({ track, encodings, codecOptions, codec }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
30
|
+
send({ track, encodings, codecOptions, codec, }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
31
31
|
stopSending(localId: string): Promise<void>;
|
|
32
32
|
pauseSending(localId: string): Promise<void>;
|
|
33
33
|
resumeSending(localId: string): Promise<void>;
|
|
@@ -35,13 +35,13 @@ export declare class Chrome70 extends HandlerInterface {
|
|
|
35
35
|
setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
|
|
36
36
|
setRtpEncodingParameters(localId: string, params: any): Promise<void>;
|
|
37
37
|
getSenderStats(localId: string): Promise<RTCStatsReport>;
|
|
38
|
-
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
38
|
+
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
39
39
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
40
40
|
stopReceiving(localIds: string[]): Promise<void>;
|
|
41
41
|
pauseReceiving(localIds: string[]): Promise<void>;
|
|
42
42
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
43
43
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
44
|
-
receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
44
|
+
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
45
45
|
private setupTransport;
|
|
46
46
|
private assertSendDirection;
|
|
47
47
|
private assertRecvDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome70.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome70.ts"],"names":[],"mappings":"AAMA,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,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,QAAS,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"Chrome70.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome70.ts"],"names":[],"mappings":"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"}
|