mediasoup-client 3.14.1 → 3.15.0
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/lib/Device.d.ts +1 -1
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +22 -25
- package/lib/Transport.d.ts +6 -4
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +10 -6
- package/lib/enhancedEvents.d.ts.map +1 -1
- package/lib/handlers/Chrome111.d.ts +2 -2
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +23 -26
- package/lib/handlers/Chrome74.d.ts +2 -2
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +24 -27
- package/lib/handlers/FakeHandler.d.ts +2 -1
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +20 -16
- package/lib/handlers/Firefox120.d.ts +2 -2
- package/lib/handlers/Firefox120.d.ts.map +1 -1
- package/lib/handlers/Firefox120.js +21 -24
- package/lib/handlers/HandlerInterface.d.ts +1 -1
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.d.ts +2 -2
- package/lib/handlers/ReactNative106.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.js +24 -27
- package/lib/handlers/Safari12.d.ts +3 -3
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +23 -26
- package/lib/handlers/sdp/commonUtils.d.ts +4 -2
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +13 -21
- package/lib/index.d.ts +5 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -2
- package/lib/ortc.d.ts +4 -5
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +11 -13
- package/lib/privateTypes.d.ts +10 -1
- package/lib/privateTypes.d.ts.map +1 -1
- package/lib/test/fakeParameters.d.ts.map +1 -1
- package/lib/test/fakeParameters.js +37 -0
- package/lib/test/test.js +3 -26
- package/lib/types.d.ts +11 -10
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +0 -24
- package/package.json +5 -1
|
@@ -5,8 +5,7 @@ export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> impl
|
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
7
|
private _remoteSdp;
|
|
8
|
-
private
|
|
9
|
-
private _sendingRemoteRtpParametersByKind;
|
|
8
|
+
private _getSendExtendedRtpCapabilities;
|
|
10
9
|
private _pc;
|
|
11
10
|
private readonly _mapMidTransceiver;
|
|
12
11
|
private readonly _sendStream;
|
|
@@ -17,6 +16,7 @@ export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> impl
|
|
|
17
16
|
* Creates a factory function.
|
|
18
17
|
*/
|
|
19
18
|
static createFactory(): HandlerFactory;
|
|
19
|
+
private static getLocalRtpCapabilities;
|
|
20
20
|
private constructor();
|
|
21
21
|
get name(): string;
|
|
22
22
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Firefox120.d.ts","sourceRoot":"","sources":["../../src/handlers/Firefox120.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Firefox120.d.ts","sourceRoot":"","sources":["../../src/handlers/Firefox120.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ const sdpTransform = require("sdp-transform");
|
|
|
5
5
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
6
6
|
const Logger_1 = require("../Logger");
|
|
7
7
|
const errors_1 = require("../errors");
|
|
8
|
-
const utils = require("../utils");
|
|
9
8
|
const ortc = require("../ortc");
|
|
10
9
|
const scalabilityModes_1 = require("../scalabilityModes");
|
|
11
10
|
const sdpCommonUtils = require("./sdp/commonUtils");
|
|
@@ -21,11 +20,8 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
21
20
|
_direction;
|
|
22
21
|
// Remote SDP handler.
|
|
23
22
|
_remoteSdp;
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
// Generic sending RTP parameters for audio and video suitable for the SDP
|
|
27
|
-
// remote answer.
|
|
28
|
-
_sendingRemoteRtpParametersByKind;
|
|
23
|
+
// Callback to request sending extended RTP capabilities on demand.
|
|
24
|
+
_getSendExtendedRtpCapabilities;
|
|
29
25
|
// RTCPeerConnection instance.
|
|
30
26
|
_pc;
|
|
31
27
|
// Map of RTCTransceivers indexed by MID.
|
|
@@ -84,9 +80,7 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
84
80
|
catch (error) { }
|
|
85
81
|
pc = undefined;
|
|
86
82
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
87
|
-
const nativeRtpCapabilities =
|
|
88
|
-
sdpObject,
|
|
89
|
-
});
|
|
83
|
+
const nativeRtpCapabilities = Firefox120.getLocalRtpCapabilities(sdpObject);
|
|
90
84
|
return nativeRtpCapabilities;
|
|
91
85
|
}
|
|
92
86
|
catch (error) {
|
|
@@ -114,7 +108,13 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
114
108
|
},
|
|
115
109
|
};
|
|
116
110
|
}
|
|
117
|
-
|
|
111
|
+
static getLocalRtpCapabilities(localSdpObject) {
|
|
112
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
113
|
+
sdpObject: localSdpObject,
|
|
114
|
+
});
|
|
115
|
+
return nativeRtpCapabilities;
|
|
116
|
+
}
|
|
117
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
|
|
118
118
|
super();
|
|
119
119
|
logger.debug('constructor()');
|
|
120
120
|
this._direction = direction;
|
|
@@ -124,14 +124,7 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
124
124
|
dtlsParameters,
|
|
125
125
|
sctpParameters,
|
|
126
126
|
});
|
|
127
|
-
this.
|
|
128
|
-
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
129
|
-
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
130
|
-
};
|
|
131
|
-
this._sendingRemoteRtpParametersByKind = {
|
|
132
|
-
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
133
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
134
|
-
};
|
|
127
|
+
this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
|
|
135
128
|
this._pc = new RTCPeerConnection({
|
|
136
129
|
iceServers: iceServers ?? [],
|
|
137
130
|
iceTransportPolicy: iceTransportPolicy ?? 'all',
|
|
@@ -221,12 +214,6 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
221
214
|
encoding.rid = `r${idx}`;
|
|
222
215
|
});
|
|
223
216
|
}
|
|
224
|
-
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
225
|
-
// This may throw.
|
|
226
|
-
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
227
|
-
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
228
|
-
// This may throw.
|
|
229
|
-
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
230
217
|
// NOTE: Firefox fails sometimes to properly anticipate the closed media
|
|
231
218
|
// section that it should use, so don't reuse closed media sections.
|
|
232
219
|
// https://github.com/versatica/mediasoup-client/issues/104
|
|
@@ -245,6 +232,16 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
245
232
|
if (localSdpObject.extmapAllowMixed) {
|
|
246
233
|
this._remoteSdp.setSessionExtmapAllowMixed();
|
|
247
234
|
}
|
|
235
|
+
const nativeRtpCapabilities = Firefox120.getLocalRtpCapabilities(localSdpObject);
|
|
236
|
+
const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
|
|
237
|
+
// Generic sending RTP parameters.
|
|
238
|
+
const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
239
|
+
// This may throw.
|
|
240
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
241
|
+
// Generic sending RTP parameters suitable for the SDP remote answer.
|
|
242
|
+
const sendingRemoteRtpParameters = ortc.getSendingRemoteRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
243
|
+
// This may throw.
|
|
244
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
248
245
|
// In Firefox use DTLS role client even if we are the "offerer" since
|
|
249
246
|
// Firefox does not respect ICE-Lite.
|
|
250
247
|
if (!this._transportReady) {
|
|
@@ -14,7 +14,7 @@ export type HandlerOptions = {
|
|
|
14
14
|
iceServers?: RTCIceServer[];
|
|
15
15
|
iceTransportPolicy?: RTCIceTransportPolicy;
|
|
16
16
|
additionalSettings?: Partial<RTCConfiguration>;
|
|
17
|
-
|
|
17
|
+
getSendExtendedRtpCapabilities: (nativeRtpCapabilities: RtpCapabilities) => ExtendedRtpCapabilities;
|
|
18
18
|
};
|
|
19
19
|
export type HandlerFactory = {
|
|
20
20
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerInterface.d.ts","sourceRoot":"","sources":["../../src/handlers/HandlerInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACX,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/C,
|
|
1
|
+
{"version":3,"file":"HandlerInterface.d.ts","sourceRoot":"","sources":["../../src/handlers/HandlerInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACX,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/C,8BAA8B,EAAE,CAC/B,qBAAqB,EAAE,eAAe,KAClC,uBAAuB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,gBAAgB,CAAC;IACvD,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAEjE,MAAM,MAAM,4BAA4B,GAAG;IAC1C,WAAW,EAAE,cAAc,CAAC;IAC5B,oBAAoB,EAAE,oBAAoB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC9C,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,WAAW,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,EAAE,CAAC;IACb,UAAU,EAAE;QACX;YAAE,cAAc,EAAE,cAAc,CAAA;SAAE;QAClC,MAAM,IAAI;QACV,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;KACtB,CAAC;IACF,0BAA0B,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAChD,oBAAoB,EAAE,CAAC,8BAA8B,CAAC,CAAC;IACvD,wBAAwB,EAAE,CAAC,eAAe,CAAC,CAAC;CAC5C,CAAC;AAEF,8BAAsB,gBAAiB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;;IAKjF,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;aAEV,KAAK,IAAI,IAAI;IAE/B,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpE,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhE,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAErD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAEtE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAErD,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtD,QAAQ,CAAC,YAAY,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,kBAAkB,CAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,wBAAwB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEjE,QAAQ,CAAC,eAAe,CACvB,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,4BAA4B,CAAC;IAExC,QAAQ,CAAC,OAAO,CACf,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAElC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1D,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEnE,QAAQ,CAAC,kBAAkB,CAC1B,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,+BAA+B,CAAC;CAC3C"}
|
|
@@ -5,8 +5,7 @@ export declare class ReactNative106 extends EnhancedEventEmitter<HandlerEvents>
|
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
7
|
private _remoteSdp;
|
|
8
|
-
private
|
|
9
|
-
private _sendingRemoteRtpParametersByKind;
|
|
8
|
+
private _getSendExtendedRtpCapabilities;
|
|
10
9
|
private _forcedLocalDtlsRole?;
|
|
11
10
|
private _pc;
|
|
12
11
|
private readonly _mapMidTransceiver;
|
|
@@ -18,6 +17,7 @@ export declare class ReactNative106 extends EnhancedEventEmitter<HandlerEvents>
|
|
|
18
17
|
* Creates a factory function.
|
|
19
18
|
*/
|
|
20
19
|
static createFactory(): HandlerFactory;
|
|
20
|
+
private static getLocalRtpCapabilities;
|
|
21
21
|
private constructor();
|
|
22
22
|
get name(): string;
|
|
23
23
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNative106.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNative106.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactNative106.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNative106.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ exports.ReactNative106 = void 0;
|
|
|
4
4
|
const sdpTransform = require("sdp-transform");
|
|
5
5
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
6
6
|
const Logger_1 = require("../Logger");
|
|
7
|
-
const utils = require("../utils");
|
|
8
7
|
const ortc = require("../ortc");
|
|
9
8
|
const errors_1 = require("../errors");
|
|
10
9
|
const scalabilityModes_1 = require("../scalabilityModes");
|
|
@@ -22,11 +21,8 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
22
21
|
_direction;
|
|
23
22
|
// Remote SDP handler.
|
|
24
23
|
_remoteSdp;
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
// Generic sending RTP parameters for audio and video suitable for the SDP
|
|
28
|
-
// remote answer.
|
|
29
|
-
_sendingRemoteRtpParametersByKind;
|
|
24
|
+
// Callback to request sending extended RTP capabilities on demand.
|
|
25
|
+
_getSendExtendedRtpCapabilities;
|
|
30
26
|
// Initial server side DTLS role. If not 'auto', it will force the opposite
|
|
31
27
|
// value in client side.
|
|
32
28
|
_forcedLocalDtlsRole;
|
|
@@ -67,11 +63,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
67
63
|
catch (error) { }
|
|
68
64
|
pc = undefined;
|
|
69
65
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
70
|
-
const nativeRtpCapabilities =
|
|
71
|
-
sdpObject,
|
|
72
|
-
});
|
|
73
|
-
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
74
|
-
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
66
|
+
const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(sdpObject);
|
|
75
67
|
return nativeRtpCapabilities;
|
|
76
68
|
}
|
|
77
69
|
catch (error) {
|
|
@@ -91,7 +83,15 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
91
83
|
},
|
|
92
84
|
};
|
|
93
85
|
}
|
|
94
|
-
|
|
86
|
+
static getLocalRtpCapabilities(localSdpObject) {
|
|
87
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
88
|
+
sdpObject: localSdpObject,
|
|
89
|
+
});
|
|
90
|
+
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
91
|
+
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
92
|
+
return nativeRtpCapabilities;
|
|
93
|
+
}
|
|
94
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
|
|
95
95
|
super();
|
|
96
96
|
logger.debug('constructor()');
|
|
97
97
|
this._direction = direction;
|
|
@@ -101,14 +101,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
101
101
|
dtlsParameters,
|
|
102
102
|
sctpParameters,
|
|
103
103
|
});
|
|
104
|
-
this.
|
|
105
|
-
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
106
|
-
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
107
|
-
};
|
|
108
|
-
this._sendingRemoteRtpParametersByKind = {
|
|
109
|
-
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
110
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
111
|
-
};
|
|
104
|
+
this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
|
|
112
105
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
113
106
|
this._forcedLocalDtlsRole =
|
|
114
107
|
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
@@ -207,12 +200,6 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
207
200
|
encoding.rid = `r${idx}`;
|
|
208
201
|
});
|
|
209
202
|
}
|
|
210
|
-
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
211
|
-
// This may throw.
|
|
212
|
-
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
213
|
-
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
214
|
-
// This may throw.
|
|
215
|
-
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
216
203
|
const mediaSectionIdx = this._remoteSdp.getNextMediaSectionIdx();
|
|
217
204
|
const transceiver = this._pc.addTransceiver(track, {
|
|
218
205
|
direction: 'sendonly',
|
|
@@ -227,7 +214,16 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
227
214
|
if (localSdpObject.extmapAllowMixed) {
|
|
228
215
|
this._remoteSdp.setSessionExtmapAllowMixed();
|
|
229
216
|
}
|
|
230
|
-
|
|
217
|
+
const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(localSdpObject);
|
|
218
|
+
const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
|
|
219
|
+
// Generic sending RTP parameters.
|
|
220
|
+
const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
221
|
+
// This may throw.
|
|
222
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
223
|
+
// Generic sending RTP parameters suitable for the SDP remote answer.
|
|
224
|
+
const sendingRemoteRtpParameters = ortc.getSendingRemoteRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
225
|
+
// This may throw.
|
|
226
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
231
227
|
if (!this._transportReady) {
|
|
232
228
|
await this.setupTransport({
|
|
233
229
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -237,6 +233,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
237
233
|
// Special case for VP9 with SVC.
|
|
238
234
|
let hackVp9Svc = false;
|
|
239
235
|
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode);
|
|
236
|
+
let offerMediaObject;
|
|
240
237
|
if (encodings &&
|
|
241
238
|
encodings.length === 1 &&
|
|
242
239
|
layers.spatialLayers > 1 &&
|
|
@@ -5,8 +5,7 @@ export declare class Safari12 extends EnhancedEventEmitter<HandlerEvents> implem
|
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
7
|
private _remoteSdp;
|
|
8
|
-
private
|
|
9
|
-
private _sendingRemoteRtpParametersByKind;
|
|
8
|
+
private _getSendExtendedRtpCapabilities;
|
|
10
9
|
private _forcedLocalDtlsRole?;
|
|
11
10
|
private _pc;
|
|
12
11
|
private readonly _mapMidTransceiver;
|
|
@@ -18,7 +17,8 @@ export declare class Safari12 extends EnhancedEventEmitter<HandlerEvents> implem
|
|
|
18
17
|
* Creates a factory function.
|
|
19
18
|
*/
|
|
20
19
|
static createFactory(): HandlerFactory;
|
|
21
|
-
|
|
20
|
+
private static getLocalRtpCapabilities;
|
|
21
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }: HandlerOptions);
|
|
22
22
|
get name(): string;
|
|
23
23
|
close(): void;
|
|
24
24
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"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"}
|
package/lib/handlers/Safari12.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.Safari12 = void 0;
|
|
|
4
4
|
const sdpTransform = require("sdp-transform");
|
|
5
5
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
6
6
|
const Logger_1 = require("../Logger");
|
|
7
|
-
const utils = require("../utils");
|
|
8
7
|
const ortc = require("../ortc");
|
|
9
8
|
const errors_1 = require("../errors");
|
|
10
9
|
const scalabilityModes_1 = require("../scalabilityModes");
|
|
@@ -22,11 +21,8 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
22
21
|
_direction;
|
|
23
22
|
// Remote SDP handler.
|
|
24
23
|
_remoteSdp;
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
// Generic sending RTP parameters for audio and video suitable for the SDP
|
|
28
|
-
// remote answer.
|
|
29
|
-
_sendingRemoteRtpParametersByKind;
|
|
24
|
+
// Callback to request sending extended RTP capabilities on demand.
|
|
25
|
+
_getSendExtendedRtpCapabilities;
|
|
30
26
|
// Initial server side DTLS role. If not 'auto', it will force the opposite
|
|
31
27
|
// value in client side.
|
|
32
28
|
_forcedLocalDtlsRole;
|
|
@@ -67,11 +63,7 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
67
63
|
catch (error) { }
|
|
68
64
|
pc = undefined;
|
|
69
65
|
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
70
|
-
const nativeRtpCapabilities =
|
|
71
|
-
sdpObject,
|
|
72
|
-
});
|
|
73
|
-
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
74
|
-
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
66
|
+
const nativeRtpCapabilities = Safari12.getLocalRtpCapabilities(sdpObject);
|
|
75
67
|
return nativeRtpCapabilities;
|
|
76
68
|
}
|
|
77
69
|
catch (error) {
|
|
@@ -91,7 +83,15 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
91
83
|
},
|
|
92
84
|
};
|
|
93
85
|
}
|
|
94
|
-
|
|
86
|
+
static getLocalRtpCapabilities(localSdpObject) {
|
|
87
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
88
|
+
sdpObject: localSdpObject,
|
|
89
|
+
});
|
|
90
|
+
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
91
|
+
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
92
|
+
return nativeRtpCapabilities;
|
|
93
|
+
}
|
|
94
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
|
|
95
95
|
super();
|
|
96
96
|
logger.debug('constructor()');
|
|
97
97
|
this._direction = direction;
|
|
@@ -101,14 +101,7 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
101
101
|
dtlsParameters,
|
|
102
102
|
sctpParameters,
|
|
103
103
|
});
|
|
104
|
-
this.
|
|
105
|
-
audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
|
|
106
|
-
video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities),
|
|
107
|
-
};
|
|
108
|
-
this._sendingRemoteRtpParametersByKind = {
|
|
109
|
-
audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
|
|
110
|
-
video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities),
|
|
111
|
-
};
|
|
104
|
+
this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
|
|
112
105
|
if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
|
|
113
106
|
this._forcedLocalDtlsRole =
|
|
114
107
|
dtlsParameters.role === 'server' ? 'client' : 'server';
|
|
@@ -204,12 +197,6 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
204
197
|
this.assertNotClosed();
|
|
205
198
|
this.assertSendDirection();
|
|
206
199
|
logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
|
|
207
|
-
const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]);
|
|
208
|
-
// This may throw.
|
|
209
|
-
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
210
|
-
const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind]);
|
|
211
|
-
// This may throw.
|
|
212
|
-
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
213
200
|
const mediaSectionIdx = this._remoteSdp.getNextMediaSectionIdx();
|
|
214
201
|
const transceiver = this._pc.addTransceiver(track, {
|
|
215
202
|
direction: 'sendonly',
|
|
@@ -223,6 +210,16 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
223
210
|
if (localSdpObject.extmapAllowMixed) {
|
|
224
211
|
this._remoteSdp.setSessionExtmapAllowMixed();
|
|
225
212
|
}
|
|
213
|
+
const nativeRtpCapabilities = Safari12.getLocalRtpCapabilities(localSdpObject);
|
|
214
|
+
const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
|
|
215
|
+
// Generic sending RTP parameters.
|
|
216
|
+
const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
217
|
+
// This may throw.
|
|
218
|
+
sendingRtpParameters.codecs = ortc.reduceCodecs(sendingRtpParameters.codecs, codec);
|
|
219
|
+
// Generic sending RTP parameters suitable for the SDP remote answer.
|
|
220
|
+
const sendingRemoteRtpParameters = ortc.getSendingRemoteRtpParameters(track.kind, sendExtendedRtpCapabilities);
|
|
221
|
+
// This may throw.
|
|
222
|
+
sendingRemoteRtpParameters.codecs = ortc.reduceCodecs(sendingRemoteRtpParameters.codecs, codec);
|
|
226
223
|
let offerMediaObject;
|
|
227
224
|
if (!this._transportReady) {
|
|
228
225
|
await this.setupTransport({
|
|
@@ -2,8 +2,10 @@ import type * as SdpTransform from 'sdp-transform';
|
|
|
2
2
|
import type { DtlsParameters } from '../../Transport';
|
|
3
3
|
import type { RtpCapabilities, RtpParameters } from '../../RtpParameters';
|
|
4
4
|
/**
|
|
5
|
-
* This function
|
|
6
|
-
*
|
|
5
|
+
* This function extracs RTP capabilities from the given SDP.
|
|
6
|
+
*
|
|
7
|
+
* BUNDLE is assumed so, as per spec, all media sections in the SDP must share
|
|
8
|
+
* same ids for codecs and RTP extensions.
|
|
7
9
|
*/
|
|
8
10
|
export declare function extractRtpCapabilities({ sdpObject, }: {
|
|
9
11
|
sdpObject: SdpTransform.SessionDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/commonUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EACX,cAAc,EAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACX,eAAe,EAIf,aAAa,EAEb,MAAM,qBAAqB,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"commonUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/commonUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EACX,cAAc,EAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACX,eAAe,EAIf,aAAa,EAEb,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACtC,SAAS,GACT,EAAE;IACF,SAAS,EAAE,YAAY,CAAC,kBAAkB,CAAC;CAC3C,GAAG,eAAe,CAgHlB;AAED,wBAAgB,qBAAqB,CAAC,EACrC,SAAS,GACT,EAAE;IACF,SAAS,EAAE,YAAY,CAAC,kBAAkB,CAAC;CAC3C,GAAG,cAAc,CAsDjB;AAED,wBAAgB,QAAQ,CAAC,EACxB,gBAAgB,GAChB,EAAE;IACF,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAAC;CAChD,GAAG,MAAM,CAUT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACpC,kBAAkB,EAClB,iBAAiB,GACjB,EAAE;IACF,kBAAkB,EAAE,aAAa,CAAC;IAClC,iBAAiB,EAAE,YAAY,CAAC,gBAAgB,CAAC;CACjD,GAAG,IAAI,CAsDP"}
|
|
@@ -6,32 +6,21 @@ exports.getCname = getCname;
|
|
|
6
6
|
exports.applyCodecParameters = applyCodecParameters;
|
|
7
7
|
const sdpTransform = require("sdp-transform");
|
|
8
8
|
/**
|
|
9
|
-
* This function
|
|
10
|
-
*
|
|
9
|
+
* This function extracs RTP capabilities from the given SDP.
|
|
10
|
+
*
|
|
11
|
+
* BUNDLE is assumed so, as per spec, all media sections in the SDP must share
|
|
12
|
+
* same ids for codecs and RTP extensions.
|
|
11
13
|
*/
|
|
12
14
|
function extractRtpCapabilities({ sdpObject, }) {
|
|
13
15
|
// Map of RtpCodecParameters indexed by payload type.
|
|
14
16
|
const codecsMap = new Map();
|
|
15
|
-
//
|
|
16
|
-
const
|
|
17
|
-
// Whether a m=audio/video section has been already found.
|
|
18
|
-
let gotAudio = false;
|
|
19
|
-
let gotVideo = false;
|
|
17
|
+
// Map of RtpHeaderExtensions indexed by preferred id.
|
|
18
|
+
const headerExtensionMap = new Map();
|
|
20
19
|
for (const m of sdpObject.media) {
|
|
21
20
|
const kind = m.type;
|
|
22
21
|
switch (kind) {
|
|
23
|
-
case 'audio':
|
|
24
|
-
if (gotAudio) {
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
gotAudio = true;
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
22
|
+
case 'audio':
|
|
30
23
|
case 'video': {
|
|
31
|
-
if (gotVideo) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
gotVideo = true;
|
|
35
24
|
break;
|
|
36
25
|
}
|
|
37
26
|
default: {
|
|
@@ -58,10 +47,13 @@ function extractRtpCapabilities({ sdpObject, }) {
|
|
|
58
47
|
if (!codec) {
|
|
59
48
|
continue;
|
|
60
49
|
}
|
|
61
|
-
// Specials
|
|
50
|
+
// Specials cases to convert parameter value to string.
|
|
62
51
|
if (parameters?.hasOwnProperty('profile-level-id')) {
|
|
63
52
|
parameters['profile-level-id'] = String(parameters['profile-level-id']);
|
|
64
53
|
}
|
|
54
|
+
if (parameters?.hasOwnProperty('profile-id')) {
|
|
55
|
+
parameters['profile-id'] = String(parameters['profile-id']);
|
|
56
|
+
}
|
|
65
57
|
codec.parameters = parameters;
|
|
66
58
|
}
|
|
67
59
|
// Get RTCP feedback for each codec.
|
|
@@ -103,12 +95,12 @@ function extractRtpCapabilities({ sdpObject, }) {
|
|
|
103
95
|
uri: ext.uri,
|
|
104
96
|
preferredId: ext.value,
|
|
105
97
|
};
|
|
106
|
-
|
|
98
|
+
headerExtensionMap.set(headerExtension.preferredId, headerExtension);
|
|
107
99
|
}
|
|
108
100
|
}
|
|
109
101
|
const rtpCapabilities = {
|
|
110
102
|
codecs: Array.from(codecsMap.values()),
|
|
111
|
-
headerExtensions:
|
|
103
|
+
headerExtensions: Array.from(headerExtensionMap.values()),
|
|
112
104
|
};
|
|
113
105
|
return rtpCapabilities;
|
|
114
106
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export * as types from './types';
|
|
|
6
6
|
/**
|
|
7
7
|
* Expose mediasoup-client version.
|
|
8
8
|
*/
|
|
9
|
-
export declare const version = "3.
|
|
9
|
+
export declare const version = "3.15.0";
|
|
10
10
|
/**
|
|
11
11
|
* Expose Device class and device detector helpers.
|
|
12
12
|
*/
|
|
@@ -19,6 +19,10 @@ export { parse as parseScalabilityMode } from './scalabilityModes';
|
|
|
19
19
|
* Expose all ORTC functions.
|
|
20
20
|
*/
|
|
21
21
|
export * as ortc from './ortc';
|
|
22
|
+
/**
|
|
23
|
+
* Expose enhanced events.
|
|
24
|
+
*/
|
|
25
|
+
export * as enhancedEvents from './enhancedEvents';
|
|
22
26
|
/**
|
|
23
27
|
* Expose FakeHandler.
|
|
24
28
|
*/
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,OAAO,iCAAiC,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEnE;;GAEG;AACH,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,OAAO,iCAAiC,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEnE;;GAEG;AACH,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.debug = exports.testFakeParameters = exports.FakeHandler = exports.ortc = exports.parseScalabilityMode = exports.detectDeviceAsync = exports.detectDevice = exports.Device = exports.version = exports.types = void 0;
|
|
3
|
+
exports.debug = exports.testFakeParameters = exports.FakeHandler = exports.enhancedEvents = exports.ortc = exports.parseScalabilityMode = exports.detectDeviceAsync = exports.detectDevice = exports.Device = exports.version = exports.types = void 0;
|
|
4
4
|
const debug_1 = require("debug");
|
|
5
5
|
exports.debug = debug_1.default;
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ exports.types = require("./types");
|
|
|
10
10
|
/**
|
|
11
11
|
* Expose mediasoup-client version.
|
|
12
12
|
*/
|
|
13
|
-
exports.version = '3.
|
|
13
|
+
exports.version = '3.15.0';
|
|
14
14
|
/**
|
|
15
15
|
* Expose Device class and device detector helpers.
|
|
16
16
|
*/
|
|
@@ -27,6 +27,10 @@ Object.defineProperty(exports, "parseScalabilityMode", { enumerable: true, get:
|
|
|
27
27
|
* Expose all ORTC functions.
|
|
28
28
|
*/
|
|
29
29
|
exports.ortc = require("./ortc");
|
|
30
|
+
/**
|
|
31
|
+
* Expose enhanced events.
|
|
32
|
+
*/
|
|
33
|
+
exports.enhancedEvents = require("./enhancedEvents");
|
|
30
34
|
/**
|
|
31
35
|
* Expose FakeHandler.
|
|
32
36
|
*/
|
package/lib/ortc.d.ts
CHANGED
|
@@ -20,15 +20,14 @@ export declare function validateRtpParameters(params: RtpParameters): void;
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function validateSctpStreamParameters(params: SctpStreamParameters): void;
|
|
22
22
|
/**
|
|
23
|
-
* Validates SctpCapabilities.
|
|
24
|
-
* fields with default values.
|
|
23
|
+
* Validates SctpCapabilities.
|
|
25
24
|
* It throws if invalid.
|
|
26
25
|
*/
|
|
27
26
|
export declare function validateSctpCapabilities(caps: SctpCapabilities): void;
|
|
28
27
|
/**
|
|
29
28
|
* Generate extended RTP capabilities for sending and receiving.
|
|
30
29
|
*
|
|
31
|
-
* Resulting codecs keep order
|
|
30
|
+
* Resulting codecs keep order preferred by local or remote capabilities
|
|
32
31
|
* depending on `preferLocalCodecsOrder`.
|
|
33
32
|
*/
|
|
34
33
|
export declare function getExtendedRtpCapabilities(localCaps: RtpCapabilities, remoteCaps: RtpCapabilities, preferLocalCodecsOrder: boolean): ExtendedRtpCapabilities;
|
|
@@ -64,10 +63,10 @@ export declare function generateProbatorRtpParameters(videoRtpParameters: RtpPar
|
|
|
64
63
|
/**
|
|
65
64
|
* Whether media can be sent based on the given RTP capabilities.
|
|
66
65
|
*/
|
|
67
|
-
export declare function canSend(kind: MediaKind,
|
|
66
|
+
export declare function canSend(kind: MediaKind, rtpCapabilities: RtpCapabilities): boolean;
|
|
68
67
|
/**
|
|
69
68
|
* Whether the given RTP parameters can be received with the given RTP
|
|
70
69
|
* capabilities.
|
|
71
70
|
*/
|
|
72
|
-
export declare function canReceive(rtpParameters: RtpParameters,
|
|
71
|
+
export declare function canReceive(rtpParameters: RtpParameters, rtpCapabilities: RtpCapabilities): boolean;
|
|
73
72
|
//# sourceMappingURL=ortc.d.ts.map
|
package/lib/ortc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ortc.d.ts","sourceRoot":"","sources":["../src/ortc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,eAAe,EACf,SAAS,EACT,kBAAkB,EAElB,aAAa,EACb,kBAAkB,EAKlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACX,gBAAgB,EAEhB,oBAAoB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACX,uBAAuB,EAGvB,MAAM,gBAAgB,CAAC;AAOxB;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA0BnE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAiDjE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,oBAAoB,GAC1B,IAAI,CA8DN;AAED
|
|
1
|
+
{"version":3,"file":"ortc.d.ts","sourceRoot":"","sources":["../src/ortc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,eAAe,EACf,SAAS,EACT,kBAAkB,EAElB,aAAa,EACb,kBAAkB,EAKlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACX,gBAAgB,EAEhB,oBAAoB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACX,uBAAuB,EAGvB,MAAM,gBAAgB,CAAC;AAOxB;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA0BnE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAiDjE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,oBAAoB,GAC1B,IAAI,CA8DN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAWrE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,eAAe,EAC3B,sBAAsB,EAAE,OAAO,GAC7B,uBAAuB,CAiJzB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,uBAAuB,EAAE,uBAAuB,GAC9C,eAAe,CA6DjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,uBAAuB,GAC9C,aAAa,CA8Df;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,uBAAuB,GAC9C,aAAa,CA+Ff;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,kBAAkB,EAAE,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,GAC3B,kBAAkB,EAAE,CA+BtB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,kBAAkB,EAAE,aAAa,GAC/B,aAAa,CAoBf;AAED;;GAEG;AACH,wBAAgB,OAAO,CACtB,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,eAAe,GAC9B,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACzB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,GAC9B,OAAO,CAaT"}
|