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
|
@@ -85,19 +85,21 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
85
85
|
iceTransportPolicy: 'all',
|
|
86
86
|
bundlePolicy: 'max-bundle',
|
|
87
87
|
rtcpMuxPolicy: 'require',
|
|
88
|
-
sdpSemantics: 'plan-b'
|
|
88
|
+
sdpSemantics: 'plan-b',
|
|
89
89
|
});
|
|
90
90
|
try {
|
|
91
91
|
const offer = await pc.createOffer({
|
|
92
92
|
offerToReceiveAudio: true,
|
|
93
|
-
offerToReceiveVideo: true
|
|
93
|
+
offerToReceiveVideo: true,
|
|
94
94
|
});
|
|
95
95
|
try {
|
|
96
96
|
pc.close();
|
|
97
97
|
}
|
|
98
98
|
catch (error) { }
|
|
99
99
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
100
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
100
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
101
|
+
sdpObject,
|
|
102
|
+
});
|
|
101
103
|
return nativeRtpCapabilities;
|
|
102
104
|
}
|
|
103
105
|
catch (error) {
|
|
@@ -111,10 +113,10 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
111
113
|
async getNativeSctpCapabilities() {
|
|
112
114
|
logger.debug('getNativeSctpCapabilities()');
|
|
113
115
|
return {
|
|
114
|
-
numStreams: SCTP_NUM_STREAMS
|
|
116
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
115
117
|
};
|
|
116
118
|
}
|
|
117
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }) {
|
|
119
|
+
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }) {
|
|
118
120
|
logger.debug('run()');
|
|
119
121
|
this._direction = direction;
|
|
120
122
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
@@ -122,22 +124,19 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
122
124
|
iceCandidates,
|
|
123
125
|
dtlsParameters,
|
|
124
126
|
sctpParameters,
|
|
125
|
-
planB: true
|
|
127
|
+
planB: true,
|
|
126
128
|
});
|
|
127
|
-
this._sendingRtpParametersByKind =
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
|
|
136
|
-
};
|
|
129
|
+
this._sendingRtpParametersByKind = {
|
|
130
|
+
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
131
|
+
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
132
|
+
};
|
|
133
|
+
this._sendingRemoteRtpParametersByKind = {
|
|
134
|
+
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
135
|
+
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
136
|
+
};
|
|
137
137
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
138
|
-
this._forcedLocalDtlsRole =
|
|
139
|
-
? 'client'
|
|
140
|
-
: 'server';
|
|
138
|
+
this._forcedLocalDtlsRole =
|
|
139
|
+
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
141
140
|
}
|
|
142
141
|
this._pc = new RTCPeerConnection({
|
|
143
142
|
iceServers: iceServers || [],
|
|
@@ -145,7 +144,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
145
144
|
bundlePolicy: 'max-bundle',
|
|
146
145
|
rtcpMuxPolicy: 'require',
|
|
147
146
|
sdpSemantics: 'plan-b',
|
|
148
|
-
...additionalSettings
|
|
147
|
+
...additionalSettings,
|
|
149
148
|
}, proprietaryConstraints);
|
|
150
149
|
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
151
150
|
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
@@ -159,22 +158,27 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
159
158
|
this._pc.addEventListener('iceconnectionstatechange', () => {
|
|
160
159
|
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
161
160
|
switch (this._pc.iceConnectionState) {
|
|
162
|
-
case 'checking':
|
|
161
|
+
case 'checking': {
|
|
163
162
|
this.emit('@connectionstatechange', 'connecting');
|
|
164
163
|
break;
|
|
164
|
+
}
|
|
165
165
|
case 'connected':
|
|
166
|
-
case 'completed':
|
|
166
|
+
case 'completed': {
|
|
167
167
|
this.emit('@connectionstatechange', 'connected');
|
|
168
168
|
break;
|
|
169
|
-
|
|
169
|
+
}
|
|
170
|
+
case 'failed': {
|
|
170
171
|
this.emit('@connectionstatechange', 'failed');
|
|
171
172
|
break;
|
|
172
|
-
|
|
173
|
+
}
|
|
174
|
+
case 'disconnected': {
|
|
173
175
|
this.emit('@connectionstatechange', 'disconnected');
|
|
174
176
|
break;
|
|
175
|
-
|
|
177
|
+
}
|
|
178
|
+
case 'closed': {
|
|
176
179
|
this.emit('@connectionstatechange', 'closed');
|
|
177
180
|
break;
|
|
181
|
+
}
|
|
178
182
|
}
|
|
179
183
|
});
|
|
180
184
|
}
|
|
@@ -212,7 +216,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
212
216
|
async getTransportStats() {
|
|
213
217
|
return this._pc.getStats();
|
|
214
218
|
}
|
|
215
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
219
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
216
220
|
this.assertSendDirection();
|
|
217
221
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
218
222
|
if (codec) {
|
|
@@ -224,40 +228,39 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
224
228
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
225
229
|
let offerMediaObject;
|
|
226
230
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
227
|
-
sendingRtpParameters.codecs =
|
|
228
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
231
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
229
232
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
230
|
-
sendingRemoteRtpParameters.codecs =
|
|
231
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
233
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
232
234
|
if (!this._transportReady) {
|
|
233
235
|
await this.setupTransport({
|
|
234
236
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
235
|
-
localSdpObject
|
|
237
|
+
localSdpObject,
|
|
236
238
|
});
|
|
237
239
|
}
|
|
238
240
|
if (track.kind === 'video' && encodings && encodings.length > 1) {
|
|
239
241
|
logger.debug('send() | enabling simulcast');
|
|
240
242
|
localSdpObject = sdpTransform.parse(offer.sdp);
|
|
241
|
-
offerMediaObject = localSdpObject.media
|
|
242
|
-
.find((m) => m.type === 'video');
|
|
243
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === 'video');
|
|
243
244
|
sdpPlanBUtils.addLegacySimulcast({
|
|
244
245
|
offerMediaObject,
|
|
245
246
|
track,
|
|
246
|
-
numStreams: encodings.length
|
|
247
|
+
numStreams: encodings.length,
|
|
247
248
|
});
|
|
248
249
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
249
250
|
}
|
|
250
251
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
251
252
|
await this._pc.setLocalDescription(offer);
|
|
252
253
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
253
|
-
offerMediaObject = localSdpObject.media
|
|
254
|
-
.find((m) => m.type === track.kind);
|
|
254
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === track.kind);
|
|
255
255
|
// Set RTCP CNAME.
|
|
256
|
-
sendingRtpParameters.rtcp.cname =
|
|
257
|
-
|
|
256
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
257
|
+
offerMediaObject,
|
|
258
|
+
});
|
|
258
259
|
// Set RTP encodings.
|
|
259
|
-
sendingRtpParameters.encodings =
|
|
260
|
-
|
|
260
|
+
sendingRtpParameters.encodings = sdpPlanBUtils.getRtpEncodings({
|
|
261
|
+
offerMediaObject,
|
|
262
|
+
track,
|
|
263
|
+
});
|
|
261
264
|
// Complete encodings with given values.
|
|
262
265
|
if (encodings) {
|
|
263
266
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -279,7 +282,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
279
282
|
offerMediaObject,
|
|
280
283
|
offerRtpParameters: sendingRtpParameters,
|
|
281
284
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
282
|
-
codecOptions
|
|
285
|
+
codecOptions,
|
|
283
286
|
});
|
|
284
287
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
285
288
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -290,7 +293,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
290
293
|
this._mapSendLocalIdTrack.set(localId, track);
|
|
291
294
|
return {
|
|
292
295
|
localId: localId,
|
|
293
|
-
rtpParameters: sendingRtpParameters
|
|
296
|
+
rtpParameters: sendingRtpParameters,
|
|
294
297
|
};
|
|
295
298
|
}
|
|
296
299
|
async stopSending(localId) {
|
|
@@ -334,11 +337,16 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
334
337
|
}
|
|
335
338
|
async replaceTrack(
|
|
336
339
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
337
|
-
localId,
|
|
340
|
+
localId,
|
|
341
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
342
|
+
track) {
|
|
338
343
|
throw new errors_1.UnsupportedError('not implemented');
|
|
339
344
|
}
|
|
345
|
+
async setMaxSpatialLayer(
|
|
346
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
347
|
+
localId,
|
|
340
348
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
341
|
-
|
|
349
|
+
spatialLayer) {
|
|
342
350
|
throw new errors_1.UnsupportedError('not implemented');
|
|
343
351
|
}
|
|
344
352
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -349,16 +357,16 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
349
357
|
async getSenderStats(localId) {
|
|
350
358
|
throw new errors_1.UnsupportedError('not implemented');
|
|
351
359
|
}
|
|
352
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
360
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
353
361
|
this.assertSendDirection();
|
|
354
362
|
const options = {
|
|
355
363
|
negotiated: true,
|
|
356
364
|
id: this._nextSendSctpStreamId,
|
|
357
365
|
ordered,
|
|
358
366
|
maxPacketLifeTime,
|
|
359
|
-
maxRetransmitTime: maxPacketLifeTime,
|
|
367
|
+
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
360
368
|
maxRetransmits,
|
|
361
|
-
protocol
|
|
369
|
+
protocol,
|
|
362
370
|
};
|
|
363
371
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
364
372
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -370,12 +378,11 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
370
378
|
if (!this._hasDataChannelMediaSection) {
|
|
371
379
|
const offer = await this._pc.createOffer();
|
|
372
380
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
373
|
-
const offerMediaObject = localSdpObject.media
|
|
374
|
-
.find((m) => m.type === 'application');
|
|
381
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
375
382
|
if (!this._transportReady) {
|
|
376
383
|
await this.setupTransport({
|
|
377
384
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
378
|
-
localSdpObject
|
|
385
|
+
localSdpObject,
|
|
379
386
|
});
|
|
380
387
|
}
|
|
381
388
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -390,7 +397,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
390
397
|
streamId: options.id,
|
|
391
398
|
ordered: options.ordered,
|
|
392
399
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
393
|
-
maxRetransmits: options.maxRetransmits
|
|
400
|
+
maxRetransmits: options.maxRetransmits,
|
|
394
401
|
};
|
|
395
402
|
return { dataChannel, sctpStreamParameters };
|
|
396
403
|
}
|
|
@@ -416,7 +423,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
416
423
|
kind,
|
|
417
424
|
offerRtpParameters: rtpParameters,
|
|
418
425
|
streamId,
|
|
419
|
-
trackId
|
|
426
|
+
trackId,
|
|
420
427
|
});
|
|
421
428
|
}
|
|
422
429
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -427,20 +434,19 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
427
434
|
for (const options of optionsList) {
|
|
428
435
|
const { kind, rtpParameters } = options;
|
|
429
436
|
const mid = kind;
|
|
430
|
-
const answerMediaObject = localSdpObject.media
|
|
431
|
-
.find((m) => String(m.mid) === mid);
|
|
437
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === mid);
|
|
432
438
|
// May need to modify codec parameters in the answer based on codec
|
|
433
439
|
// parameters in the offer.
|
|
434
440
|
sdpCommonUtils.applyCodecParameters({
|
|
435
441
|
offerRtpParameters: rtpParameters,
|
|
436
|
-
answerMediaObject
|
|
442
|
+
answerMediaObject,
|
|
437
443
|
});
|
|
438
444
|
}
|
|
439
445
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
440
446
|
if (!this._transportReady) {
|
|
441
447
|
await this.setupTransport({
|
|
442
448
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
443
|
-
localSdpObject
|
|
449
|
+
localSdpObject,
|
|
444
450
|
});
|
|
445
451
|
}
|
|
446
452
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -450,7 +456,8 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
450
456
|
const localId = trackId;
|
|
451
457
|
const mid = kind;
|
|
452
458
|
const streamId = mapStreamId.get(trackId);
|
|
453
|
-
const stream = this._pc
|
|
459
|
+
const stream = this._pc
|
|
460
|
+
.getRemoteStreams()
|
|
454
461
|
.find((s) => s.id === streamId);
|
|
455
462
|
const track = stream.getTrackById(localId);
|
|
456
463
|
if (!track) {
|
|
@@ -469,7 +476,10 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
469
476
|
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
|
|
470
477
|
// Remove from the map.
|
|
471
478
|
this._mapRecvLocalIdInfo.delete(localId);
|
|
472
|
-
this._remoteSdp.planBStopReceiving({
|
|
479
|
+
this._remoteSdp.planBStopReceiving({
|
|
480
|
+
mid: mid,
|
|
481
|
+
offerRtpParameters: rtpParameters,
|
|
482
|
+
});
|
|
473
483
|
}
|
|
474
484
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
475
485
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
@@ -492,7 +502,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
492
502
|
async getReceiverStats(localId) {
|
|
493
503
|
throw new errors_1.UnsupportedError('not implemented');
|
|
494
504
|
}
|
|
495
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
505
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
496
506
|
this.assertRecvDirection();
|
|
497
507
|
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
498
508
|
const options = {
|
|
@@ -500,9 +510,9 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
500
510
|
id: streamId,
|
|
501
511
|
ordered,
|
|
502
512
|
maxPacketLifeTime,
|
|
503
|
-
maxRetransmitTime: maxPacketLifeTime,
|
|
513
|
+
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
504
514
|
maxRetransmits,
|
|
505
|
-
protocol
|
|
515
|
+
protocol,
|
|
506
516
|
};
|
|
507
517
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
508
518
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -518,7 +528,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
518
528
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
519
529
|
await this.setupTransport({
|
|
520
530
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
521
|
-
localSdpObject
|
|
531
|
+
localSdpObject,
|
|
522
532
|
});
|
|
523
533
|
}
|
|
524
534
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -527,12 +537,14 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
527
537
|
}
|
|
528
538
|
return { dataChannel };
|
|
529
539
|
}
|
|
530
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
540
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
531
541
|
if (!localSdpObject) {
|
|
532
542
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
533
543
|
}
|
|
534
544
|
// Get our local DTLS parameters.
|
|
535
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
545
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
546
|
+
sdpObject: localSdpObject,
|
|
547
|
+
});
|
|
536
548
|
// Set our DTLS role.
|
|
537
549
|
dtlsParameters.role = localDtlsRole;
|
|
538
550
|
// Update the remote DTLS role in the SDP.
|
|
@@ -24,11 +24,11 @@ export declare class ReactNativeUnifiedPlan 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 ReactNativeUnifiedPlan 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":"ReactNativeUnifiedPlan.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNativeUnifiedPlan.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,sBAAuB,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ReactNativeUnifiedPlan.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNativeUnifiedPlan.ts"],"names":[],"mappings":"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"}
|