mediasoup-client 3.7.0 → 3.7.2
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 +43 -42
- 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 +14 -10
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +71 -53
- 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 +64 -57
- package/lib/handlers/Chrome55.d.ts +4 -4
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +75 -62
- package/lib/handlers/Chrome67.d.ts +4 -4
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +77 -65
- package/lib/handlers/Chrome70.d.ts +4 -4
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +68 -60
- package/lib/handlers/Chrome74.d.ts +4 -4
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +65 -58
- package/lib/handlers/Edge11.d.ts +1 -1
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +43 -37
- package/lib/handlers/FakeHandler.d.ts +3 -3
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +19 -22
- package/lib/handlers/Firefox60.d.ts +4 -4
- package/lib/handlers/Firefox60.d.ts.map +1 -1
- package/lib/handlers/Firefox60.js +65 -52
- 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 +76 -64
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +4 -4
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
- package/lib/handlers/ReactNativeUnifiedPlan.js +65 -58
- package/lib/handlers/Safari11.d.ts +4 -4
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +74 -61
- package/lib/handlers/Safari12.d.ts +4 -4
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +65 -57
- 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 +287 -305
- 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 +4 -4
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +41 -46
- 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.map +1 -1
- package/lib/ortc.js +90 -92
- package/lib/scalabilityModes.d.ts.map +1 -1
- package/lib/scalabilityModes.js +2 -2
- package/lib/{tests → test}/fakeParameters.d.ts +2 -2
- package/lib/test/fakeParameters.d.ts.map +1 -0
- package/lib/test/fakeParameters.js +645 -0
- package/lib/{tests → test}/test.d.ts.map +1 -1
- package/lib/{tests → test}/test.js +466 -495
- 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 +72 -98
- 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,22 +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':
|
|
156
|
+
case 'checking': {
|
|
158
157
|
this.emit('@connectionstatechange', 'connecting');
|
|
159
158
|
break;
|
|
159
|
+
}
|
|
160
160
|
case 'connected':
|
|
161
|
-
case 'completed':
|
|
161
|
+
case 'completed': {
|
|
162
162
|
this.emit('@connectionstatechange', 'connected');
|
|
163
163
|
break;
|
|
164
|
-
|
|
164
|
+
}
|
|
165
|
+
case 'failed': {
|
|
165
166
|
this.emit('@connectionstatechange', 'failed');
|
|
166
167
|
break;
|
|
167
|
-
|
|
168
|
+
}
|
|
169
|
+
case 'disconnected': {
|
|
168
170
|
this.emit('@connectionstatechange', 'disconnected');
|
|
169
171
|
break;
|
|
170
|
-
|
|
172
|
+
}
|
|
173
|
+
case 'closed': {
|
|
171
174
|
this.emit('@connectionstatechange', 'closed');
|
|
172
175
|
break;
|
|
176
|
+
}
|
|
173
177
|
}
|
|
174
178
|
});
|
|
175
179
|
}
|
|
@@ -207,7 +211,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
207
211
|
async getTransportStats() {
|
|
208
212
|
return this._pc.getStats();
|
|
209
213
|
}
|
|
210
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
214
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
211
215
|
this.assertSendDirection();
|
|
212
216
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
213
217
|
if (codec) {
|
|
@@ -219,40 +223,39 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
219
223
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
220
224
|
let offerMediaObject;
|
|
221
225
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
222
|
-
sendingRtpParameters.codecs =
|
|
223
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
226
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
224
227
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
225
|
-
sendingRemoteRtpParameters.codecs =
|
|
226
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
228
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
227
229
|
if (!this._transportReady) {
|
|
228
230
|
await this.setupTransport({
|
|
229
231
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
230
|
-
localSdpObject
|
|
232
|
+
localSdpObject,
|
|
231
233
|
});
|
|
232
234
|
}
|
|
233
235
|
if (track.kind === 'video' && encodings && encodings.length > 1) {
|
|
234
236
|
logger.debug('send() | enabling simulcast');
|
|
235
237
|
localSdpObject = sdpTransform.parse(offer.sdp);
|
|
236
|
-
offerMediaObject = localSdpObject.media
|
|
237
|
-
.find((m) => m.type === 'video');
|
|
238
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === 'video');
|
|
238
239
|
sdpPlanBUtils.addLegacySimulcast({
|
|
239
240
|
offerMediaObject,
|
|
240
241
|
track,
|
|
241
|
-
numStreams: encodings.length
|
|
242
|
+
numStreams: encodings.length,
|
|
242
243
|
});
|
|
243
244
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
244
245
|
}
|
|
245
246
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
246
247
|
await this._pc.setLocalDescription(offer);
|
|
247
248
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
248
|
-
offerMediaObject = localSdpObject.media
|
|
249
|
-
.find((m) => m.type === track.kind);
|
|
249
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === track.kind);
|
|
250
250
|
// Set RTCP CNAME.
|
|
251
|
-
sendingRtpParameters.rtcp.cname =
|
|
252
|
-
|
|
251
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
252
|
+
offerMediaObject,
|
|
253
|
+
});
|
|
253
254
|
// Set RTP encodings.
|
|
254
|
-
sendingRtpParameters.encodings =
|
|
255
|
-
|
|
255
|
+
sendingRtpParameters.encodings = sdpPlanBUtils.getRtpEncodings({
|
|
256
|
+
offerMediaObject,
|
|
257
|
+
track,
|
|
258
|
+
});
|
|
256
259
|
// Complete encodings with given values.
|
|
257
260
|
if (encodings) {
|
|
258
261
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -273,21 +276,22 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
273
276
|
offerMediaObject,
|
|
274
277
|
offerRtpParameters: sendingRtpParameters,
|
|
275
278
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
276
|
-
codecOptions
|
|
279
|
+
codecOptions,
|
|
277
280
|
});
|
|
278
281
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
279
282
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
280
283
|
await this._pc.setRemoteDescription(answer);
|
|
281
284
|
const localId = String(this._nextSendLocalId);
|
|
282
285
|
this._nextSendLocalId++;
|
|
283
|
-
const rtpSender = this._pc
|
|
286
|
+
const rtpSender = this._pc
|
|
287
|
+
.getSenders()
|
|
284
288
|
.find((s) => s.track === track);
|
|
285
289
|
// Insert into the map.
|
|
286
290
|
this._mapSendLocalIdRtpSender.set(localId, rtpSender);
|
|
287
291
|
return {
|
|
288
292
|
localId: localId,
|
|
289
293
|
rtpParameters: sendingRtpParameters,
|
|
290
|
-
rtpSender
|
|
294
|
+
rtpSender,
|
|
291
295
|
};
|
|
292
296
|
}
|
|
293
297
|
async stopSending(localId) {
|
|
@@ -393,16 +397,16 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
393
397
|
}
|
|
394
398
|
return rtpSender.getStats();
|
|
395
399
|
}
|
|
396
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
400
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
397
401
|
this.assertSendDirection();
|
|
398
402
|
const options = {
|
|
399
403
|
negotiated: true,
|
|
400
404
|
id: this._nextSendSctpStreamId,
|
|
401
405
|
ordered,
|
|
402
406
|
maxPacketLifeTime,
|
|
403
|
-
maxRetransmitTime: maxPacketLifeTime,
|
|
407
|
+
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
404
408
|
maxRetransmits,
|
|
405
|
-
protocol
|
|
409
|
+
protocol,
|
|
406
410
|
};
|
|
407
411
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
408
412
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -414,12 +418,11 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
414
418
|
if (!this._hasDataChannelMediaSection) {
|
|
415
419
|
const offer = await this._pc.createOffer();
|
|
416
420
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
417
|
-
const offerMediaObject = localSdpObject.media
|
|
418
|
-
.find((m) => m.type === 'application');
|
|
421
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
419
422
|
if (!this._transportReady) {
|
|
420
423
|
await this.setupTransport({
|
|
421
424
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
422
|
-
localSdpObject
|
|
425
|
+
localSdpObject,
|
|
423
426
|
});
|
|
424
427
|
}
|
|
425
428
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -434,7 +437,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
434
437
|
streamId: options.id,
|
|
435
438
|
ordered: options.ordered,
|
|
436
439
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
437
|
-
maxRetransmits: options.maxRetransmits
|
|
440
|
+
maxRetransmits: options.maxRetransmits,
|
|
438
441
|
};
|
|
439
442
|
return { dataChannel, sctpStreamParameters };
|
|
440
443
|
}
|
|
@@ -450,7 +453,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
450
453
|
kind,
|
|
451
454
|
offerRtpParameters: rtpParameters,
|
|
452
455
|
streamId: streamId || rtpParameters.rtcp.cname,
|
|
453
|
-
trackId
|
|
456
|
+
trackId,
|
|
454
457
|
});
|
|
455
458
|
}
|
|
456
459
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -461,20 +464,19 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
461
464
|
for (const options of optionsList) {
|
|
462
465
|
const { kind, rtpParameters } = options;
|
|
463
466
|
const mid = kind;
|
|
464
|
-
const answerMediaObject = localSdpObject.media
|
|
465
|
-
.find((m) => String(m.mid) === mid);
|
|
467
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === mid);
|
|
466
468
|
// May need to modify codec parameters in the answer based on codec
|
|
467
469
|
// parameters in the offer.
|
|
468
470
|
sdpCommonUtils.applyCodecParameters({
|
|
469
471
|
offerRtpParameters: rtpParameters,
|
|
470
|
-
answerMediaObject
|
|
472
|
+
answerMediaObject,
|
|
471
473
|
});
|
|
472
474
|
}
|
|
473
475
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
474
476
|
if (!this._transportReady) {
|
|
475
477
|
await this.setupTransport({
|
|
476
478
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
477
|
-
localSdpObject
|
|
479
|
+
localSdpObject,
|
|
478
480
|
});
|
|
479
481
|
}
|
|
480
482
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -483,17 +485,22 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
483
485
|
const { kind, trackId, rtpParameters } = options;
|
|
484
486
|
const localId = trackId;
|
|
485
487
|
const mid = kind;
|
|
486
|
-
const rtpReceiver = this._pc
|
|
488
|
+
const rtpReceiver = this._pc
|
|
489
|
+
.getReceivers()
|
|
487
490
|
.find((r) => r.track && r.track.id === localId);
|
|
488
491
|
if (!rtpReceiver) {
|
|
489
492
|
throw new Error('new RTCRtpReceiver not');
|
|
490
493
|
}
|
|
491
494
|
// Insert into the map.
|
|
492
|
-
this._mapRecvLocalIdInfo.set(localId, {
|
|
495
|
+
this._mapRecvLocalIdInfo.set(localId, {
|
|
496
|
+
mid,
|
|
497
|
+
rtpParameters,
|
|
498
|
+
rtpReceiver,
|
|
499
|
+
});
|
|
493
500
|
results.push({
|
|
494
501
|
localId,
|
|
495
502
|
track: rtpReceiver.track,
|
|
496
|
-
rtpReceiver
|
|
503
|
+
rtpReceiver,
|
|
497
504
|
});
|
|
498
505
|
}
|
|
499
506
|
return results;
|
|
@@ -505,7 +512,10 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
505
512
|
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
|
|
506
513
|
// Remove from the map.
|
|
507
514
|
this._mapRecvLocalIdInfo.delete(localId);
|
|
508
|
-
this._remoteSdp.planBStopReceiving({
|
|
515
|
+
this._remoteSdp.planBStopReceiving({
|
|
516
|
+
mid: mid,
|
|
517
|
+
offerRtpParameters: rtpParameters,
|
|
518
|
+
});
|
|
509
519
|
}
|
|
510
520
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
511
521
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
@@ -532,7 +542,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
532
542
|
}
|
|
533
543
|
return rtpReceiver.getStats();
|
|
534
544
|
}
|
|
535
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
545
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
536
546
|
this.assertRecvDirection();
|
|
537
547
|
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
538
548
|
const options = {
|
|
@@ -540,9 +550,9 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
540
550
|
id: streamId,
|
|
541
551
|
ordered,
|
|
542
552
|
maxPacketLifeTime,
|
|
543
|
-
maxRetransmitTime: maxPacketLifeTime,
|
|
553
|
+
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
544
554
|
maxRetransmits,
|
|
545
|
-
protocol
|
|
555
|
+
protocol,
|
|
546
556
|
};
|
|
547
557
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
548
558
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -558,7 +568,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
558
568
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
559
569
|
await this.setupTransport({
|
|
560
570
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
561
|
-
localSdpObject
|
|
571
|
+
localSdpObject,
|
|
562
572
|
});
|
|
563
573
|
}
|
|
564
574
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -567,12 +577,14 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
|
|
|
567
577
|
}
|
|
568
578
|
return { dataChannel };
|
|
569
579
|
}
|
|
570
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
580
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
571
581
|
if (!localSdpObject) {
|
|
572
582
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
573
583
|
}
|
|
574
584
|
// Get our local DTLS parameters.
|
|
575
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
585
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
586
|
+
sdpObject: localSdpObject,
|
|
587
|
+
});
|
|
576
588
|
// Set our DTLS role.
|
|
577
589
|
dtlsParameters.role = localDtlsRole;
|
|
578
590
|
// Update the remote DTLS role in the SDP.
|
|
@@ -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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"}
|