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
|
@@ -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,32 +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':
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
161
|
+
case 'checking': {
|
|
162
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
167
165
|
case 'connected':
|
|
168
|
-
case 'completed':
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
{
|
|
185
|
-
this.emit('@connectionstatechange', 'closed');
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
166
|
+
case 'completed': {
|
|
167
|
+
this.emit('@connectionstatechange', 'connected');
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 'failed': {
|
|
171
|
+
this.emit('@connectionstatechange', 'failed');
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case 'disconnected': {
|
|
175
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'closed': {
|
|
179
|
+
this.emit('@connectionstatechange', 'closed');
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
188
182
|
}
|
|
189
183
|
});
|
|
190
184
|
}
|
|
@@ -222,7 +216,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
222
216
|
async getTransportStats() {
|
|
223
217
|
return this._pc.getStats();
|
|
224
218
|
}
|
|
225
|
-
async send({ track, encodings, codecOptions, codec }) {
|
|
219
|
+
async send({ track, encodings, codecOptions, codec, }) {
|
|
226
220
|
this.assertSendDirection();
|
|
227
221
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
228
222
|
if (codec) {
|
|
@@ -234,40 +228,39 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
234
228
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
235
229
|
let offerMediaObject;
|
|
236
230
|
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
237
|
-
sendingRtpParameters.codecs =
|
|
238
|
-
ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
231
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs);
|
|
239
232
|
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
240
|
-
sendingRemoteRtpParameters.codecs =
|
|
241
|
-
ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
233
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
|
|
242
234
|
if (!this._transportReady) {
|
|
243
235
|
await this.setupTransport({
|
|
244
236
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
245
|
-
localSdpObject
|
|
237
|
+
localSdpObject,
|
|
246
238
|
});
|
|
247
239
|
}
|
|
248
240
|
if (track.kind === 'video' && encodings && encodings.length > 1) {
|
|
249
241
|
logger.debug('send() | enabling simulcast');
|
|
250
242
|
localSdpObject = sdpTransform.parse(offer.sdp);
|
|
251
|
-
offerMediaObject = localSdpObject.media
|
|
252
|
-
.find((m) => m.type === 'video');
|
|
243
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === 'video');
|
|
253
244
|
sdpPlanBUtils.addLegacySimulcast({
|
|
254
245
|
offerMediaObject,
|
|
255
246
|
track,
|
|
256
|
-
numStreams: encodings.length
|
|
247
|
+
numStreams: encodings.length,
|
|
257
248
|
});
|
|
258
249
|
offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
|
|
259
250
|
}
|
|
260
251
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
261
252
|
await this._pc.setLocalDescription(offer);
|
|
262
253
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
263
|
-
offerMediaObject = localSdpObject.media
|
|
264
|
-
.find((m) => m.type === track.kind);
|
|
254
|
+
offerMediaObject = localSdpObject.media.find((m) => m.type === track.kind);
|
|
265
255
|
// Set RTCP CNAME.
|
|
266
|
-
sendingRtpParameters.rtcp.cname =
|
|
267
|
-
|
|
256
|
+
sendingRtpParameters.rtcp.cname = sdpCommonUtils.getCname({
|
|
257
|
+
offerMediaObject,
|
|
258
|
+
});
|
|
268
259
|
// Set RTP encodings.
|
|
269
|
-
sendingRtpParameters.encodings =
|
|
270
|
-
|
|
260
|
+
sendingRtpParameters.encodings = sdpPlanBUtils.getRtpEncodings({
|
|
261
|
+
offerMediaObject,
|
|
262
|
+
track,
|
|
263
|
+
});
|
|
271
264
|
// Complete encodings with given values.
|
|
272
265
|
if (encodings) {
|
|
273
266
|
for (let idx = 0; idx < sendingRtpParameters.encodings.length; ++idx) {
|
|
@@ -289,7 +282,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
289
282
|
offerMediaObject,
|
|
290
283
|
offerRtpParameters: sendingRtpParameters,
|
|
291
284
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
292
|
-
codecOptions
|
|
285
|
+
codecOptions,
|
|
293
286
|
});
|
|
294
287
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
295
288
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -300,7 +293,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
300
293
|
this._mapSendLocalIdTrack.set(localId, track);
|
|
301
294
|
return {
|
|
302
295
|
localId: localId,
|
|
303
|
-
rtpParameters: sendingRtpParameters
|
|
296
|
+
rtpParameters: sendingRtpParameters,
|
|
304
297
|
};
|
|
305
298
|
}
|
|
306
299
|
async stopSending(localId) {
|
|
@@ -344,11 +337,16 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
344
337
|
}
|
|
345
338
|
async replaceTrack(
|
|
346
339
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
347
|
-
localId,
|
|
340
|
+
localId,
|
|
341
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
342
|
+
track) {
|
|
348
343
|
throw new errors_1.UnsupportedError('not implemented');
|
|
349
344
|
}
|
|
345
|
+
async setMaxSpatialLayer(
|
|
350
346
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
351
|
-
|
|
347
|
+
localId,
|
|
348
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
349
|
+
spatialLayer) {
|
|
352
350
|
throw new errors_1.UnsupportedError('not implemented');
|
|
353
351
|
}
|
|
354
352
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -359,7 +357,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
359
357
|
async getSenderStats(localId) {
|
|
360
358
|
throw new errors_1.UnsupportedError('not implemented');
|
|
361
359
|
}
|
|
362
|
-
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
|
|
360
|
+
async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) {
|
|
363
361
|
this.assertSendDirection();
|
|
364
362
|
const options = {
|
|
365
363
|
negotiated: true,
|
|
@@ -368,7 +366,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
368
366
|
maxPacketLifeTime,
|
|
369
367
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
370
368
|
maxRetransmits,
|
|
371
|
-
protocol
|
|
369
|
+
protocol,
|
|
372
370
|
};
|
|
373
371
|
logger.debug('sendDataChannel() [options:%o]', options);
|
|
374
372
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -380,12 +378,11 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
380
378
|
if (!this._hasDataChannelMediaSection) {
|
|
381
379
|
const offer = await this._pc.createOffer();
|
|
382
380
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
383
|
-
const offerMediaObject = localSdpObject.media
|
|
384
|
-
.find((m) => m.type === 'application');
|
|
381
|
+
const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
|
|
385
382
|
if (!this._transportReady) {
|
|
386
383
|
await this.setupTransport({
|
|
387
384
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
388
|
-
localSdpObject
|
|
385
|
+
localSdpObject,
|
|
389
386
|
});
|
|
390
387
|
}
|
|
391
388
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
@@ -400,7 +397,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
400
397
|
streamId: options.id,
|
|
401
398
|
ordered: options.ordered,
|
|
402
399
|
maxPacketLifeTime: options.maxPacketLifeTime,
|
|
403
|
-
maxRetransmits: options.maxRetransmits
|
|
400
|
+
maxRetransmits: options.maxRetransmits,
|
|
404
401
|
};
|
|
405
402
|
return { dataChannel, sctpStreamParameters };
|
|
406
403
|
}
|
|
@@ -426,7 +423,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
426
423
|
kind,
|
|
427
424
|
offerRtpParameters: rtpParameters,
|
|
428
425
|
streamId,
|
|
429
|
-
trackId
|
|
426
|
+
trackId,
|
|
430
427
|
});
|
|
431
428
|
}
|
|
432
429
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
@@ -437,20 +434,19 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
437
434
|
for (const options of optionsList) {
|
|
438
435
|
const { kind, rtpParameters } = options;
|
|
439
436
|
const mid = kind;
|
|
440
|
-
const answerMediaObject = localSdpObject.media
|
|
441
|
-
.find((m) => String(m.mid) === mid);
|
|
437
|
+
const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === mid);
|
|
442
438
|
// May need to modify codec parameters in the answer based on codec
|
|
443
439
|
// parameters in the offer.
|
|
444
440
|
sdpCommonUtils.applyCodecParameters({
|
|
445
441
|
offerRtpParameters: rtpParameters,
|
|
446
|
-
answerMediaObject
|
|
442
|
+
answerMediaObject,
|
|
447
443
|
});
|
|
448
444
|
}
|
|
449
445
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
450
446
|
if (!this._transportReady) {
|
|
451
447
|
await this.setupTransport({
|
|
452
448
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
453
|
-
localSdpObject
|
|
449
|
+
localSdpObject,
|
|
454
450
|
});
|
|
455
451
|
}
|
|
456
452
|
logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
|
|
@@ -460,7 +456,8 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
460
456
|
const localId = trackId;
|
|
461
457
|
const mid = kind;
|
|
462
458
|
const streamId = mapStreamId.get(trackId);
|
|
463
|
-
const stream = this._pc
|
|
459
|
+
const stream = this._pc
|
|
460
|
+
.getRemoteStreams()
|
|
464
461
|
.find((s) => s.id === streamId);
|
|
465
462
|
const track = stream.getTrackById(localId);
|
|
466
463
|
if (!track) {
|
|
@@ -479,7 +476,10 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
479
476
|
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
|
|
480
477
|
// Remove from the map.
|
|
481
478
|
this._mapRecvLocalIdInfo.delete(localId);
|
|
482
|
-
this._remoteSdp.planBStopReceiving({
|
|
479
|
+
this._remoteSdp.planBStopReceiving({
|
|
480
|
+
mid: mid,
|
|
481
|
+
offerRtpParameters: rtpParameters,
|
|
482
|
+
});
|
|
483
483
|
}
|
|
484
484
|
const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
|
|
485
485
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
@@ -502,7 +502,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
502
502
|
async getReceiverStats(localId) {
|
|
503
503
|
throw new errors_1.UnsupportedError('not implemented');
|
|
504
504
|
}
|
|
505
|
-
async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
|
|
505
|
+
async receiveDataChannel({ sctpStreamParameters, label, protocol, }) {
|
|
506
506
|
this.assertRecvDirection();
|
|
507
507
|
const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
|
|
508
508
|
const options = {
|
|
@@ -512,7 +512,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
512
512
|
maxPacketLifeTime,
|
|
513
513
|
maxRetransmitTime: maxPacketLifeTime, // NOTE: Old spec.
|
|
514
514
|
maxRetransmits,
|
|
515
|
-
protocol
|
|
515
|
+
protocol,
|
|
516
516
|
};
|
|
517
517
|
logger.debug('receiveDataChannel() [options:%o]', options);
|
|
518
518
|
const dataChannel = this._pc.createDataChannel(label, options);
|
|
@@ -528,7 +528,7 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
528
528
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
529
529
|
await this.setupTransport({
|
|
530
530
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
531
|
-
localSdpObject
|
|
531
|
+
localSdpObject,
|
|
532
532
|
});
|
|
533
533
|
}
|
|
534
534
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
@@ -537,19 +537,25 @@ class ReactNative extends HandlerInterface_1.HandlerInterface {
|
|
|
537
537
|
}
|
|
538
538
|
return { dataChannel };
|
|
539
539
|
}
|
|
540
|
-
async setupTransport({ localDtlsRole, localSdpObject }) {
|
|
540
|
+
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
541
541
|
if (!localSdpObject) {
|
|
542
542
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
543
543
|
}
|
|
544
|
+
// Get our local ICE parameters.
|
|
545
|
+
const iceParameters = sdpCommonUtils.extractIceParameters({
|
|
546
|
+
sdpObject: localSdpObject,
|
|
547
|
+
});
|
|
544
548
|
// Get our local DTLS parameters.
|
|
545
|
-
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
549
|
+
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
|
|
550
|
+
sdpObject: localSdpObject,
|
|
551
|
+
});
|
|
546
552
|
// Set our DTLS role.
|
|
547
553
|
dtlsParameters.role = localDtlsRole;
|
|
548
554
|
// Update the remote DTLS role in the SDP.
|
|
549
555
|
this._remoteSdp.updateDtlsRole(localDtlsRole === 'client' ? 'server' : 'client');
|
|
550
556
|
// Need to tell the remote transport about our parameters.
|
|
551
557
|
await new Promise((resolve, reject) => {
|
|
552
|
-
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
|
|
558
|
+
this.safeEmit('@connect', { iceParameters, dtlsParameters }, resolve, reject);
|
|
553
559
|
});
|
|
554
560
|
this._transportReady = true;
|
|
555
561
|
}
|
|
@@ -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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"}
|