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/Chrome55.js
CHANGED
|
@@ -81,19 +81,21 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
81
81
|
iceTransportPolicy: 'all',
|
|
82
82
|
bundlePolicy: 'max-bundle',
|
|
83
83
|
rtcpMuxPolicy: 'require',
|
|
84
|
-
sdpSemantics: 'plan-b'
|
|
84
|
+
sdpSemantics: 'plan-b',
|
|
85
85
|
});
|
|
86
86
|
try {
|
|
87
87
|
const offer = await pc.createOffer({
|
|
88
88
|
offerToReceiveAudio: true,
|
|
89
|
-
offerToReceiveVideo: true
|
|
89
|
+
offerToReceiveVideo: true,
|
|
90
90
|
});
|
|
91
91
|
try {
|
|
92
92
|
pc.close();
|
|
93
93
|
}
|
|
94
94
|
catch (error) { }
|
|
95
95
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
96
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
96
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
97
|
+
sdpObject,
|
|
98
|
+
});
|
|
97
99
|
return nativeRtpCapabilities;
|
|
98
100
|
}
|
|
99
101
|
catch (error) {
|
|
@@ -107,10 +109,10 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
107
109
|
async getNativeSctpCapabilities() {
|
|
108
110
|
logger.debug('getNativeSctpCapabilities()');
|
|
109
111
|
return {
|
|
110
|
-
numStreams: SCTP_NUM_STREAMS
|
|
112
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
111
113
|
};
|
|
112
114
|
}
|
|
113
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }) {
|
|
115
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }) {
|
|
114
116
|
logger.debug('run()');
|
|
115
117
|
this._direction = direction;
|
|
116
118
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
@@ -118,22 +120,19 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
118
120
|
iceCandidates,
|
|
119
121
|
dtlsParameters,
|
|
120
122
|
sctpParameters,
|
|
121
|
-
planB: true
|
|
123
|
+
planB: true,
|
|
122
124
|
});
|
|
123
|
-
this._sendingRtpParametersByKind =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
|
|
132
|
-
};
|
|
125
|
+
this._sendingRtpParametersByKind = {
|
|
126
|
+
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
127
|
+
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
128
|
+
};
|
|
129
|
+
this._sendingRemoteRtpParametersByKind = {
|
|
130
|
+
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
131
|
+
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
132
|
+
};
|
|
133
133
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
134
|
-
this._forcedLocalDtlsRole =
|
|
135
|
-
? 'client'
|
|
136
|
-
: 'server';
|
|
134
|
+
this._forcedLocalDtlsRole =
|
|
135
|
+
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
137
136
|
}
|
|
138
137
|
this._pc = new RTCPeerConnection({
|
|
139
138
|
iceServers: iceServers || [],
|
|
@@ -141,7 +140,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
141
140
|
bundlePolicy: 'max-bundle',
|
|
142
141
|
rtcpMuxPolicy: 'require',
|
|
143
142
|
sdpSemantics: 'plan-b',
|
|
144
|
-
...additionalSettings
|
|
143
|
+
...additionalSettings,
|
|
145
144
|
}, proprietaryConstraints);
|
|
146
145
|
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
147
146
|
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
@@ -155,32 +154,27 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
155
154
|
this._pc.addEventListener('iceconnectionstatechange', () => {
|
|
156
155
|
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
157
156
|
switch (this._pc.iceConnectionState) {
|
|
158
|
-
case 'checking':
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
157
|
+
case 'checking': {
|
|
158
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
163
161
|
case 'connected':
|
|
164
|
-
case 'completed':
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
{
|
|
181
|
-
this.emit('@connectionstatechange', 'closed');
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
162
|
+
case 'completed': {
|
|
163
|
+
this.emit('@connectionstatechange', 'connected');
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case 'failed': {
|
|
167
|
+
this.emit('@connectionstatechange', 'failed');
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 'disconnected': {
|
|
171
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case 'closed': {
|
|
175
|
+
this.emit('@connectionstatechange', 'closed');
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
184
178
|
}
|
|
185
179
|
});
|
|
186
180
|
}
|
|
@@ -218,7 +212,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
218
212
|
async getTransportStats() {
|
|
219
213
|
return this._pc.getStats();
|
|
220
214
|
}
|
|
221
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
215
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
222
216
|
this.assertSendDirection();
|
|
223
217
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
224
218
|
if (codec) {
|
|
@@ -230,15 +224,13 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
230
224
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
231
225
|
let offerMediaObject;
|
|
232
226
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
233
|
-
sendingRtpParameters.codecs =
|
|
234
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
227
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
235
228
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
236
|
-
sendingRemoteRtpParameters.codecs =
|
|
237
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
229
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
238
230
|
if (!this._transportReady) {
|
|
239
231
|
await this.setupTransport({
|
|
240
232
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
241
|
-
localSdpObject
|
|
233
|
+
localSdpObject,
|
|
242
234
|
});
|
|
243
235
|
}
|
|
244
236
|
if (track.kind === 'video' && encodings && encodings.length > 1) {
|
|
@@ -248,21 +240,23 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
248
240
|
sdpPlanBUtils.addLegacySimulcast({
|
|
249
241
|
offerMediaObject,
|
|
250
242
|
track,
|
|
251
|
-
numStreams: encodings.length
|
|
243
|
+
numStreams: encodings.length,
|
|
252
244
|
});
|
|
253
245
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
254
246
|
}
|
|
255
247
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
256
248
|
await this._pc.setLocalDescription(offer);
|
|
257
249
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
258
|
-
offerMediaObject = localSdpObject.media
|
|
259
|
-
.find((m) => m.type === track.kind);
|
|
250
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === track.kind);
|
|
260
251
|
// Set RTCP CNAME.
|
|
261
|
-
sendingRtpParameters.rtcp.cname =
|
|
262
|
-
|
|
252
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
253
|
+
offerMediaObject,
|
|
254
|
+
});
|
|
263
255
|
// Set RTP encodings.
|
|
264
|
-
sendingRtpParameters.encodings =
|
|
265
|
-
|
|
256
|
+
sendingRtpParameters.encodings = sdpPlanBUtils.getRtpEncodings({
|
|
257
|
+
offerMediaObject,
|
|
258
|
+
track,
|
|
259
|
+
});
|
|
266
260
|
// Complete encodings with given values.
|
|
267
261
|
if (encodings) {
|
|
268
262
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -283,7 +277,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
283
277
|
offerMediaObject,
|
|
284
278
|
offerRtpParameters: sendingRtpParameters,
|
|
285
279
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
286
|
-
codecOptions
|
|
280
|
+
codecOptions,
|
|
287
281
|
});
|
|
288
282
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
289
283
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -294,7 +288,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
294
288
|
this._mapSendLocalIdTrack.set(localId, track);
|
|
295
289
|
return {
|
|
296
290
|
localId: localId,
|
|
297
|
-
rtpParameters: sendingRtpParameters
|
|
291
|
+
rtpParameters: sendingRtpParameters,
|
|
298
292
|
};
|
|
299
293
|
}
|
|
300
294
|
async stopSending(localId) {
|
|
@@ -338,11 +332,16 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
338
332
|
}
|
|
339
333
|
async replaceTrack(
|
|
340
334
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
341
|
-
localId,
|
|
335
|
+
localId,
|
|
336
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
337
|
+
track) {
|
|
342
338
|
throw new errors_1.UnsupportedError('not implemented');
|
|
343
339
|
}
|
|
340
|
+
async setMaxSpatialLayer(
|
|
344
341
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
345
|
-
|
|
342
|
+
localId,
|
|
343
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
344
|
+
spatialLayer) {
|
|
346
345
|
throw new errors_1.UnsupportedError(' not implemented');
|
|
347
346
|
}
|
|
348
347
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -353,7 +352,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
353
352
|
async getSenderStats(localId) {
|
|
354
353
|
throw new errors_1.UnsupportedError('not implemented');
|
|
355
354
|
}
|
|
356
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
355
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
357
356
|
this.assertSendDirection();
|
|
358
357
|
const options = {
|
|
359
358
|
negotiated: true,
|
|
@@ -362,7 +361,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
362
361
|
maxPacketLifeTime,
|
|
363
362
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
364
363
|
maxRetransmits,
|
|
365
|
-
protocol
|
|
364
|
+
protocol,
|
|
366
365
|
};
|
|
367
366
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
368
367
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -374,12 +373,11 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
374
373
|
if (!this._hasDataChannelMediaSection) {
|
|
375
374
|
const offer = await this._pc.createOffer();
|
|
376
375
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
377
|
-
const offerMediaObject = localSdpObject.media
|
|
378
|
-
.find((m) => m.type === 'application');
|
|
376
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
379
377
|
if (!this._transportReady) {
|
|
380
378
|
await this.setupTransport({
|
|
381
379
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
382
|
-
localSdpObject
|
|
380
|
+
localSdpObject,
|
|
383
381
|
});
|
|
384
382
|
}
|
|
385
383
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -394,7 +392,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
394
392
|
streamId: options.id,
|
|
395
393
|
ordered: options.ordered,
|
|
396
394
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
397
|
-
maxRetransmits: options.maxRetransmits
|
|
395
|
+
maxRetransmits: options.maxRetransmits,
|
|
398
396
|
};
|
|
399
397
|
return { dataChannel, sctpStreamParameters };
|
|
400
398
|
}
|
|
@@ -410,7 +408,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
410
408
|
kind,
|
|
411
409
|
offerRtpParameters: rtpParameters,
|
|
412
410
|
streamId: streamId || rtpParameters.rtcp.cname,
|
|
413
|
-
trackId
|
|
411
|
+
trackId,
|
|
414
412
|
});
|
|
415
413
|
}
|
|
416
414
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -421,20 +419,19 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
421
419
|
for (const options of optionsList) {
|
|
422
420
|
const { kind, rtpParameters } = options;
|
|
423
421
|
const mid = kind;
|
|
424
|
-
const answerMediaObject = localSdpObject.media
|
|
425
|
-
.find((m) => String(m.mid) === mid);
|
|
422
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === mid);
|
|
426
423
|
// May need to modify codec parameters in the answer based on codec
|
|
427
424
|
// parameters in the offer.
|
|
428
425
|
sdpCommonUtils.applyCodecParameters({
|
|
429
426
|
offerRtpParameters: rtpParameters,
|
|
430
|
-
answerMediaObject
|
|
427
|
+
answerMediaObject,
|
|
431
428
|
});
|
|
432
429
|
}
|
|
433
430
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
434
431
|
if (!this._transportReady) {
|
|
435
432
|
await this.setupTransport({
|
|
436
433
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
437
|
-
localSdpObject
|
|
434
|
+
localSdpObject,
|
|
438
435
|
});
|
|
439
436
|
}
|
|
440
437
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -444,7 +441,8 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
444
441
|
const mid = kind;
|
|
445
442
|
const localId = trackId;
|
|
446
443
|
const streamId = options.streamId || rtpParameters.rtcp.cname;
|
|
447
|
-
const stream = this._pc
|
|
444
|
+
const stream = this._pc
|
|
445
|
+
.getRemoteStreams()
|
|
448
446
|
.find((s) => s.id === streamId);
|
|
449
447
|
const track = stream.getTrackById(localId);
|
|
450
448
|
if (!track) {
|
|
@@ -463,7 +461,10 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
463
461
|
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
|
|
464
462
|
// Remove from the map.
|
|
465
463
|
this._mapRecvLocalIdInfo.delete(localId);
|
|
466
|
-
this._remoteSdp.planBStopReceiving({
|
|
464
|
+
this._remoteSdp.planBStopReceiving({
|
|
465
|
+
mid: mid,
|
|
466
|
+
offerRtpParameters: rtpParameters,
|
|
467
|
+
});
|
|
467
468
|
}
|
|
468
469
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
469
470
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
@@ -486,7 +487,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
486
487
|
async getReceiverStats(localId) {
|
|
487
488
|
throw new errors_1.UnsupportedError('not implemented');
|
|
488
489
|
}
|
|
489
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
490
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
490
491
|
this.assertRecvDirection();
|
|
491
492
|
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
492
493
|
const options = {
|
|
@@ -496,7 +497,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
496
497
|
maxPacketLifeTime,
|
|
497
498
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
498
499
|
maxRetransmits,
|
|
499
|
-
protocol
|
|
500
|
+
protocol,
|
|
500
501
|
};
|
|
501
502
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
502
503
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -512,7 +513,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
512
513
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
513
514
|
await this.setupTransport({
|
|
514
515
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
515
|
-
localSdpObject
|
|
516
|
+
localSdpObject,
|
|
516
517
|
});
|
|
517
518
|
}
|
|
518
519
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -521,19 +522,25 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
521
522
|
}
|
|
522
523
|
return { dataChannel };
|
|
523
524
|
}
|
|
524
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
525
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
525
526
|
if (!localSdpObject) {
|
|
526
527
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
527
528
|
}
|
|
529
|
+
// Get our local ICE parameters.
|
|
530
|
+
const iceParameters = sdpCommonUtils.extractIceParameters({
|
|
531
|
+
sdpObject: localSdpObject,
|
|
532
|
+
});
|
|
528
533
|
// Get our local DTLS parameters.
|
|
529
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
534
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
535
|
+
sdpObject: localSdpObject,
|
|
536
|
+
});
|
|
530
537
|
// Set our DTLS role.
|
|
531
538
|
dtlsParameters.role = localDtlsRole;
|
|
532
539
|
// Update the remote DTLS role in the SDP.
|
|
533
540
|
this._remoteSdp.updateDtlsRole(localDtlsRole === 'client' ? 'server' : 'client');
|
|
534
541
|
// Need to tell the remote transport about our parameters.
|
|
535
542
|
await new Promise((resolve, reject) => {
|
|
536
|
-
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
|
|
543
|
+
this.safeEmit('@connect', { iceParameters, dtlsParameters }, resolve, reject);
|
|
537
544
|
});
|
|
538
545
|
this._transportReady = true;
|
|
539
546
|
}
|
|
@@ -25,11 +25,11 @@ export declare class Chrome67 extends HandlerInterface {
|
|
|
25
25
|
close(): void;
|
|
26
26
|
getNativeRtpCapabilities(): Promise<RtpCapabilities>;
|
|
27
27
|
getNativeSctpCapabilities(): Promise<SctpCapabilities>;
|
|
28
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }: HandlerRunOptions): void;
|
|
28
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
|
|
29
29
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
30
30
|
restartIce(iceParameters: IceParameters): Promise<void>;
|
|
31
31
|
getTransportStats(): Promise<RTCStatsReport>;
|
|
32
|
-
send({ track, encodings, codecOptions, codec }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
32
|
+
send({ track, encodings, codecOptions, codec, }: HandlerSendOptions): Promise<HandlerSendResult>;
|
|
33
33
|
stopSending(localId: string): Promise<void>;
|
|
34
34
|
pauseSending(localId: string): Promise<void>;
|
|
35
35
|
resumeSending(localId: string): Promise<void>;
|
|
@@ -37,13 +37,13 @@ export declare class Chrome67 extends HandlerInterface {
|
|
|
37
37
|
setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
|
|
38
38
|
setRtpEncodingParameters(localId: string, params: any): Promise<void>;
|
|
39
39
|
getSenderStats(localId: string): Promise<RTCStatsReport>;
|
|
40
|
-
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
40
|
+
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
41
41
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
42
42
|
stopReceiving(localIds: string[]): Promise<void>;
|
|
43
43
|
pauseReceiving(localIds: string[]): Promise<void>;
|
|
44
44
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
45
45
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
46
|
-
receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
46
|
+
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
47
47
|
private setupTransport;
|
|
48
48
|
private assertSendDirection;
|
|
49
49
|
private assertRecvDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.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;AAE5B,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":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.ts"],"names":[],"mappings":"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"}
|