mediasoup-client 3.7.1 → 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 +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 +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 +74 -77
- package/lib/handlers/Chrome55.d.ts +4 -4
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +83 -80
- package/lib/handlers/Chrome67.d.ts +4 -4
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +85 -83
- package/lib/handlers/Chrome70.d.ts +4 -4
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +76 -78
- package/lib/handlers/Chrome74.d.ts +4 -4
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +75 -78
- package/lib/handlers/Edge11.d.ts +1 -1
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +63 -77
- 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 +75 -72
- 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 +84 -82
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +4 -4
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
- package/lib/handlers/ReactNativeUnifiedPlan.js +75 -78
- package/lib/handlers/Safari11.d.ts +4 -4
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +84 -81
- package/lib/handlers/Safari12.d.ts +4 -4
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +75 -77
- 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 +293 -317
- 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 +47 -58
- 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 +98 -108
- 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
|
@@ -14,7 +14,7 @@ export declare class RemoteSdp {
|
|
|
14
14
|
private readonly _midToIndex;
|
|
15
15
|
private _firstMid?;
|
|
16
16
|
private readonly _sdpObject;
|
|
17
|
-
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB }: {
|
|
17
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB, }: {
|
|
18
18
|
iceParameters?: IceParameters;
|
|
19
19
|
iceCandidates?: IceCandidate[];
|
|
20
20
|
dtlsParameters?: DtlsParameters;
|
|
@@ -28,7 +28,7 @@ export declare class RemoteSdp {
|
|
|
28
28
|
idx: number;
|
|
29
29
|
reuseMid?: string;
|
|
30
30
|
};
|
|
31
|
-
send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed }: {
|
|
31
|
+
send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed, }: {
|
|
32
32
|
offerMediaObject: any;
|
|
33
33
|
reuseMid?: string;
|
|
34
34
|
offerRtpParameters: RtpParameters;
|
|
@@ -36,7 +36,7 @@ export declare class RemoteSdp {
|
|
|
36
36
|
codecOptions?: ProducerCodecOptions;
|
|
37
37
|
extmapAllowMixed?: boolean;
|
|
38
38
|
}): void;
|
|
39
|
-
receive({ mid, kind, offerRtpParameters, streamId, trackId }: {
|
|
39
|
+
receive({ mid, kind, offerRtpParameters, streamId, trackId, }: {
|
|
40
40
|
mid: string;
|
|
41
41
|
kind: MediaKind;
|
|
42
42
|
offerRtpParameters: RtpParameters;
|
|
@@ -56,14 +56,14 @@ export declare class RemoteSdp {
|
|
|
56
56
|
*/
|
|
57
57
|
closeMediaSection(mid: string): boolean;
|
|
58
58
|
muxMediaSectionSimulcast(mid: string, encodings: RTCRtpEncodingParameters[]): void;
|
|
59
|
-
planBStopReceiving({ mid, offerRtpParameters }: {
|
|
59
|
+
planBStopReceiving({ mid, offerRtpParameters, }: {
|
|
60
60
|
mid: string;
|
|
61
61
|
offerRtpParameters: RtpParameters;
|
|
62
62
|
}): void;
|
|
63
63
|
sendSctpAssociation({ offerMediaObject }: {
|
|
64
64
|
offerMediaObject: any;
|
|
65
65
|
}): void;
|
|
66
|
-
receiveSctpAssociation({ oldDataChannelSpec }?: {
|
|
66
|
+
receiveSctpAssociation({ oldDataChannelSpec, }?: {
|
|
67
67
|
oldDataChannelSpec?: boolean;
|
|
68
68
|
}): void;
|
|
69
69
|
getSdp(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteSdp.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/RemoteSdp.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,YAAY,EAGZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"RemoteSdp.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/RemoteSdp.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ const Logger_1 = require("../../Logger");
|
|
|
29
29
|
const MediaSection_1 = require("./MediaSection");
|
|
30
30
|
const logger = new Logger_1.Logger('RemoteSdp');
|
|
31
31
|
class RemoteSdp {
|
|
32
|
-
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB = false }) {
|
|
32
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB = false, }) {
|
|
33
33
|
// MediaSection instances with same order as in the SDP.
|
|
34
34
|
this._mediaSections = [];
|
|
35
35
|
// MediaSection indices indexed by MID.
|
|
@@ -40,21 +40,20 @@ class RemoteSdp {
|
|
|
40
40
|
this._sctpParameters = sctpParameters;
|
|
41
41
|
this._plainRtpParameters = plainRtpParameters;
|
|
42
42
|
this._planB = planB;
|
|
43
|
-
this._sdpObject =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
};
|
|
43
|
+
this._sdpObject = {
|
|
44
|
+
version: 0,
|
|
45
|
+
origin: {
|
|
46
|
+
address: '0.0.0.0',
|
|
47
|
+
ipVer: 4,
|
|
48
|
+
netType: 'IN',
|
|
49
|
+
sessionId: 10000,
|
|
50
|
+
sessionVersion: 0,
|
|
51
|
+
username: 'mediasoup-client',
|
|
52
|
+
},
|
|
53
|
+
name: '-',
|
|
54
|
+
timing: { start: 0, stop: 0 },
|
|
55
|
+
media: [],
|
|
56
|
+
};
|
|
58
57
|
// If ICE parameters are given, add ICE-Lite indicator.
|
|
59
58
|
if (iceParameters && iceParameters.iceLite) {
|
|
60
59
|
this._sdpObject.icelite = 'ice-lite';
|
|
@@ -64,11 +63,10 @@ class RemoteSdp {
|
|
|
64
63
|
this._sdpObject.msidSemantic = { semantic: 'WMS', token: '*' };
|
|
65
64
|
// NOTE: We take the latest fingerprint.
|
|
66
65
|
const numFingerprints = this._dtlsParameters.fingerprints.length;
|
|
67
|
-
this._sdpObject.fingerprint =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
};
|
|
66
|
+
this._sdpObject.fingerprint = {
|
|
67
|
+
type: dtlsParameters.fingerprints[numFingerprints - 1].algorithm,
|
|
68
|
+
hash: dtlsParameters.fingerprints[numFingerprints - 1].value,
|
|
69
|
+
};
|
|
72
70
|
this._sdpObject.groups = [{ type: 'BUNDLE', mids: '' }];
|
|
73
71
|
}
|
|
74
72
|
// If there are plain RPT parameters, override SDP origin.
|
|
@@ -103,7 +101,7 @@ class RemoteSdp {
|
|
|
103
101
|
// If no closed media section is found, return next one.
|
|
104
102
|
return { idx: this._mediaSections.length };
|
|
105
103
|
}
|
|
106
|
-
send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed = false }) {
|
|
104
|
+
send({ offerMediaObject, reuseMid, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed = false, }) {
|
|
107
105
|
const mediaSection = new MediaSection_1.AnswerMediaSection({
|
|
108
106
|
iceParameters: this._iceParameters,
|
|
109
107
|
iceCandidates: this._iceCandidates,
|
|
@@ -114,7 +112,7 @@ class RemoteSdp {
|
|
|
114
112
|
offerRtpParameters,
|
|
115
113
|
answerRtpParameters,
|
|
116
114
|
codecOptions,
|
|
117
|
-
extmapAllowMixed
|
|
115
|
+
extmapAllowMixed,
|
|
118
116
|
});
|
|
119
117
|
// Unified-Plan with closed media section replacement.
|
|
120
118
|
if (reuseMid) {
|
|
@@ -129,7 +127,7 @@ class RemoteSdp {
|
|
|
129
127
|
this._replaceMediaSection(mediaSection);
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
|
-
receive({ mid, kind, offerRtpParameters, streamId, trackId }) {
|
|
130
|
+
receive({ mid, kind, offerRtpParameters, streamId, trackId, }) {
|
|
133
131
|
const idx = this._midToIndex.get(mid);
|
|
134
132
|
let mediaSection;
|
|
135
133
|
if (idx !== undefined) {
|
|
@@ -147,11 +145,11 @@ class RemoteSdp {
|
|
|
147
145
|
kind,
|
|
148
146
|
offerRtpParameters,
|
|
149
147
|
streamId,
|
|
150
|
-
trackId
|
|
148
|
+
trackId,
|
|
151
149
|
});
|
|
152
150
|
// Let's try to recycle a closed media section (if any).
|
|
153
151
|
// NOTE: Yes, we can recycle a closed m=audio section with a new m=video.
|
|
154
|
-
const oldMediaSection = this._mediaSections.find(
|
|
152
|
+
const oldMediaSection = this._mediaSections.find(m => m.closed);
|
|
155
153
|
if (oldMediaSection) {
|
|
156
154
|
this._replaceMediaSection(mediaSection, oldMediaSection.mid);
|
|
157
155
|
}
|
|
@@ -207,7 +205,7 @@ class RemoteSdp {
|
|
|
207
205
|
mediaSection.muxSimulcastStreams(encodings);
|
|
208
206
|
this._replaceMediaSection(mediaSection);
|
|
209
207
|
}
|
|
210
|
-
planBStopReceiving({ mid, offerRtpParameters }) {
|
|
208
|
+
planBStopReceiving({ mid, offerRtpParameters, }) {
|
|
211
209
|
const mediaSection = this._findMediaSection(mid);
|
|
212
210
|
mediaSection.planBStopReceiving({ offerRtpParameters });
|
|
213
211
|
this._replaceMediaSection(mediaSection);
|
|
@@ -219,11 +217,11 @@ class RemoteSdp {
|
|
|
219
217
|
dtlsParameters: this._dtlsParameters,
|
|
220
218
|
sctpParameters: this._sctpParameters,
|
|
221
219
|
plainRtpParameters: this._plainRtpParameters,
|
|
222
|
-
offerMediaObject
|
|
220
|
+
offerMediaObject,
|
|
223
221
|
});
|
|
224
222
|
this._addMediaSection(mediaSection);
|
|
225
223
|
}
|
|
226
|
-
receiveSctpAssociation({ oldDataChannelSpec = false } = {}) {
|
|
224
|
+
receiveSctpAssociation({ oldDataChannelSpec = false, } = {}) {
|
|
227
225
|
const mediaSection = new MediaSection_1.OfferMediaSection({
|
|
228
226
|
iceParameters: this._iceParameters,
|
|
229
227
|
iceCandidates: this._iceCandidates,
|
|
@@ -232,7 +230,7 @@ class RemoteSdp {
|
|
|
232
230
|
plainRtpParameters: this._plainRtpParameters,
|
|
233
231
|
mid: 'datachannel',
|
|
234
232
|
kind: 'application',
|
|
235
|
-
oldDataChannelSpec
|
|
233
|
+
oldDataChannelSpec,
|
|
236
234
|
});
|
|
237
235
|
this._addMediaSection(mediaSection);
|
|
238
236
|
}
|
|
@@ -4,20 +4,20 @@ import { RtpCapabilities, RtpParameters } from '../../RtpParameters';
|
|
|
4
4
|
* This function must be called with an SDP with 1 m=audio and 1 m=video
|
|
5
5
|
* sections.
|
|
6
6
|
*/
|
|
7
|
-
export declare function extractRtpCapabilities({ sdpObject }: {
|
|
7
|
+
export declare function extractRtpCapabilities({ sdpObject, }: {
|
|
8
8
|
sdpObject: any;
|
|
9
9
|
}): RtpCapabilities;
|
|
10
|
-
export declare function extractDtlsParameters({ sdpObject }: {
|
|
10
|
+
export declare function extractDtlsParameters({ sdpObject, }: {
|
|
11
11
|
sdpObject: any;
|
|
12
12
|
}): DtlsParameters;
|
|
13
|
-
export declare function getCname({ offerMediaObject }: {
|
|
13
|
+
export declare function getCname({ offerMediaObject, }: {
|
|
14
14
|
offerMediaObject: any;
|
|
15
15
|
}): string;
|
|
16
16
|
/**
|
|
17
17
|
* Apply codec parameters in the given SDP m= section answer based on the
|
|
18
18
|
* given RTP parameters of an offer.
|
|
19
19
|
*/
|
|
20
|
-
export declare function applyCodecParameters({ offerRtpParameters, answerMediaObject }: {
|
|
20
|
+
export declare function applyCodecParameters({ offerRtpParameters, answerMediaObject, }: {
|
|
21
21
|
offerRtpParameters: RtpParameters;
|
|
22
22
|
answerMediaObject: any;
|
|
23
23
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/commonUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACN,eAAe,EAGf,aAAa,EAEb,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"commonUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/commonUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACN,eAAe,EAGf,aAAa,EAEb,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACtC,SAAS,GACT,EAAE;IACF,SAAS,EAAE,GAAG,CAAC;CACf,GAAG,eAAe,CA8HlB;AAED,wBAAgB,qBAAqB,CAAC,EACrC,SAAS,GACT,EAAE;IACF,SAAS,EAAE,GAAG,CAAC;CACf,GAAG,cAAc,CAsDjB;AAED,wBAAgB,QAAQ,CAAC,EACxB,gBAAgB,GAChB,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;CACtB,GAAG,MAAM,CAUT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACpC,kBAAkB,EAClB,iBAAiB,GACjB,EAAE;IACF,kBAAkB,EAAE,aAAa,CAAC;IAClC,iBAAiB,EAAE,GAAG,CAAC;CACvB,GAAG,IAAI,CAsDP"}
|
|
@@ -29,7 +29,7 @@ const sdpTransform = __importStar(require("sdp-transform"));
|
|
|
29
29
|
* This function must be called with an SDP with 1 m=audio and 1 m=video
|
|
30
30
|
* sections.
|
|
31
31
|
*/
|
|
32
|
-
function extractRtpCapabilities({ sdpObject }) {
|
|
32
|
+
function extractRtpCapabilities({ sdpObject, }) {
|
|
33
33
|
// Map of RtpCodecParameters indexed by payload type.
|
|
34
34
|
const codecsMap = new Map();
|
|
35
35
|
// Array of RtpHeaderExtensions.
|
|
@@ -40,26 +40,23 @@ function extractRtpCapabilities({ sdpObject }) {
|
|
|
40
40
|
for (const m of sdpObject.media) {
|
|
41
41
|
const kind = m.type;
|
|
42
42
|
switch (kind) {
|
|
43
|
-
case 'audio':
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
gotAudio = true;
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
case 'video':
|
|
52
|
-
{
|
|
53
|
-
if (gotVideo) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
gotVideo = true;
|
|
57
|
-
break;
|
|
43
|
+
case 'audio': {
|
|
44
|
+
if (gotAudio) {
|
|
45
|
+
continue;
|
|
58
46
|
}
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
gotAudio = true;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case 'video': {
|
|
51
|
+
if (gotVideo) {
|
|
61
52
|
continue;
|
|
62
53
|
}
|
|
54
|
+
gotVideo = true;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
default: {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
63
60
|
}
|
|
64
61
|
// Get codecs.
|
|
65
62
|
for (const rtp of m.rtp) {
|
|
@@ -70,7 +67,7 @@ function extractRtpCapabilities({ sdpObject }) {
|
|
|
70
67
|
clockRate: rtp.rate,
|
|
71
68
|
channels: rtp.encoding,
|
|
72
69
|
parameters: {},
|
|
73
|
-
rtcpFeedback: []
|
|
70
|
+
rtcpFeedback: [],
|
|
74
71
|
};
|
|
75
72
|
codecsMap.set(codec.preferredPayloadType, codec);
|
|
76
73
|
}
|
|
@@ -91,7 +88,7 @@ function extractRtpCapabilities({ sdpObject }) {
|
|
|
91
88
|
for (const fb of m.rtcpFb || []) {
|
|
92
89
|
const feedback = {
|
|
93
90
|
type: fb.type,
|
|
94
|
-
parameter: fb.subtype
|
|
91
|
+
parameter: fb.subtype,
|
|
95
92
|
};
|
|
96
93
|
if (!feedback.parameter) {
|
|
97
94
|
delete feedback.parameter;
|
|
@@ -124,24 +121,23 @@ function extractRtpCapabilities({ sdpObject }) {
|
|
|
124
121
|
const headerExtension = {
|
|
125
122
|
kind: kind,
|
|
126
123
|
uri: ext.uri,
|
|
127
|
-
preferredId: ext.value
|
|
124
|
+
preferredId: ext.value,
|
|
128
125
|
};
|
|
129
126
|
headerExtensions.push(headerExtension);
|
|
130
127
|
}
|
|
131
128
|
}
|
|
132
129
|
const rtpCapabilities = {
|
|
133
130
|
codecs: Array.from(codecsMap.values()),
|
|
134
|
-
headerExtensions: headerExtensions
|
|
131
|
+
headerExtensions: headerExtensions,
|
|
135
132
|
};
|
|
136
133
|
return rtpCapabilities;
|
|
137
134
|
}
|
|
138
135
|
exports.extractRtpCapabilities = extractRtpCapabilities;
|
|
139
|
-
function extractDtlsParameters({ sdpObject }) {
|
|
136
|
+
function extractDtlsParameters({ sdpObject, }) {
|
|
140
137
|
let setup = sdpObject.setup;
|
|
141
138
|
let fingerprint = sdpObject.fingerprint;
|
|
142
139
|
if (!setup || !fingerprint) {
|
|
143
|
-
const mediaObject = (sdpObject.media || [])
|
|
144
|
-
.find((m) => (m.port !== 0));
|
|
140
|
+
const mediaObject = (sdpObject.media || []).find((m) => m.port !== 0);
|
|
145
141
|
if (mediaObject) {
|
|
146
142
|
setup ?? (setup = mediaObject.setup);
|
|
147
143
|
fingerprint ?? (fingerprint = mediaObject.fingerprint);
|
|
@@ -155,37 +151,33 @@ function extractDtlsParameters({ sdpObject }) {
|
|
|
155
151
|
}
|
|
156
152
|
let role;
|
|
157
153
|
switch (setup) {
|
|
158
|
-
case 'active':
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
role = 'auto';
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
154
|
+
case 'active': {
|
|
155
|
+
role = 'client';
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case 'passive': {
|
|
159
|
+
role = 'server';
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case 'actpass': {
|
|
163
|
+
role = 'auto';
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
173
166
|
}
|
|
174
167
|
const dtlsParameters = {
|
|
175
168
|
role,
|
|
176
169
|
fingerprints: [
|
|
177
170
|
{
|
|
178
171
|
algorithm: fingerprint.type,
|
|
179
|
-
value: fingerprint.hash
|
|
180
|
-
}
|
|
181
|
-
]
|
|
172
|
+
value: fingerprint.hash,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
182
175
|
};
|
|
183
176
|
return dtlsParameters;
|
|
184
177
|
}
|
|
185
178
|
exports.extractDtlsParameters = extractDtlsParameters;
|
|
186
|
-
function getCname({ offerMediaObject }) {
|
|
187
|
-
const ssrcCnameLine = (offerMediaObject.ssrcs || [])
|
|
188
|
-
.find((line) => line.attribute === 'cname');
|
|
179
|
+
function getCname({ offerMediaObject, }) {
|
|
180
|
+
const ssrcCnameLine = (offerMediaObject.ssrcs || []).find((line) => line.attribute === 'cname');
|
|
189
181
|
if (!ssrcCnameLine) {
|
|
190
182
|
return '';
|
|
191
183
|
}
|
|
@@ -196,36 +188,33 @@ exports.getCname = getCname;
|
|
|
196
188
|
* Apply codec parameters in the given SDP m= section answer based on the
|
|
197
189
|
* given RTP parameters of an offer.
|
|
198
190
|
*/
|
|
199
|
-
function applyCodecParameters({ offerRtpParameters, answerMediaObject }) {
|
|
191
|
+
function applyCodecParameters({ offerRtpParameters, answerMediaObject, }) {
|
|
200
192
|
for (const codec of offerRtpParameters.codecs) {
|
|
201
193
|
const mimeType = codec.mimeType.toLowerCase();
|
|
202
194
|
// Avoid parsing codec parameters for unhandled codecs.
|
|
203
195
|
if (mimeType !== 'audio/opus') {
|
|
204
196
|
continue;
|
|
205
197
|
}
|
|
206
|
-
const rtp = (answerMediaObject.rtp || [])
|
|
207
|
-
.find((r) => r.payload === codec.payloadType);
|
|
198
|
+
const rtp = (answerMediaObject.rtp || []).find((r) => r.payload === codec.payloadType);
|
|
208
199
|
if (!rtp) {
|
|
209
200
|
continue;
|
|
210
201
|
}
|
|
211
202
|
// Just in case.
|
|
212
203
|
answerMediaObject.fmtp = answerMediaObject.fmtp || [];
|
|
213
|
-
let fmtp = answerMediaObject.fmtp
|
|
214
|
-
.find((f) => f.payload === codec.payloadType);
|
|
204
|
+
let fmtp = answerMediaObject.fmtp.find((f) => f.payload === codec.payloadType);
|
|
215
205
|
if (!fmtp) {
|
|
216
206
|
fmtp = { payload: codec.payloadType, config: '' };
|
|
217
207
|
answerMediaObject.fmtp.push(fmtp);
|
|
218
208
|
}
|
|
219
209
|
const parameters = sdpTransform.parseParams(fmtp.config);
|
|
220
210
|
switch (mimeType) {
|
|
221
|
-
case 'audio/opus':
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
parameters.stereo = spropStereo ? 1 : 0;
|
|
226
|
-
}
|
|
227
|
-
break;
|
|
211
|
+
case 'audio/opus': {
|
|
212
|
+
const spropStereo = codec.parameters['sprop-stereo'];
|
|
213
|
+
if (spropStereo !== undefined) {
|
|
214
|
+
parameters.stereo = spropStereo ? 1 : 0;
|
|
228
215
|
}
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
229
218
|
}
|
|
230
219
|
// Write the codec fmtp.config back.
|
|
231
220
|
fmtp.config = '';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MediaKind, RtpEncodingParameters } from '../../RtpParameters';
|
|
2
|
-
export declare function extractPlainRtpParameters({ sdpObject, kind }: {
|
|
2
|
+
export declare function extractPlainRtpParameters({ sdpObject, kind, }: {
|
|
3
3
|
sdpObject: any;
|
|
4
4
|
kind: MediaKind;
|
|
5
5
|
}): {
|
|
@@ -7,7 +7,7 @@ export declare function extractPlainRtpParameters({ sdpObject, kind }: {
|
|
|
7
7
|
ipVersion: 4 | 6;
|
|
8
8
|
port: number;
|
|
9
9
|
};
|
|
10
|
-
export declare function getRtpEncodings({ sdpObject, kind }: {
|
|
10
|
+
export declare function getRtpEncodings({ sdpObject, kind, }: {
|
|
11
11
|
sdpObject: any;
|
|
12
12
|
kind: MediaKind;
|
|
13
13
|
}): RtpEncodingParameters[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plainRtpUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/plainRtpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,wBAAgB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"plainRtpUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/plainRtpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,wBAAgB,yBAAyB,CAAC,EACzC,SAAS,EACT,IAAI,GACJ,EAAE;IACF,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CAChB,GAAG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb,CAcA;AAED,wBAAgB,eAAe,CAAC,EAC/B,SAAS,EACT,IAAI,GACJ,EAAE;IACF,SAAS,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CAChB,GAAG,qBAAqB,EAAE,CAe1B"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRtpEncodings = exports.extractPlainRtpParameters = void 0;
|
|
4
|
-
function extractPlainRtpParameters({ sdpObject, kind }) {
|
|
5
|
-
const mediaObject = (sdpObject.media || [])
|
|
6
|
-
.find((m) => m.type === kind);
|
|
4
|
+
function extractPlainRtpParameters({ sdpObject, kind, }) {
|
|
5
|
+
const mediaObject = (sdpObject.media || []).find((m) => m.type === kind);
|
|
7
6
|
if (!mediaObject) {
|
|
8
7
|
throw new Error(`m=${kind} section not found`);
|
|
9
8
|
}
|
|
@@ -11,13 +10,12 @@ function extractPlainRtpParameters({ sdpObject, kind }) {
|
|
|
11
10
|
return {
|
|
12
11
|
ip: connectionObject.ip,
|
|
13
12
|
ipVersion: connectionObject.version,
|
|
14
|
-
port: mediaObject.port
|
|
13
|
+
port: mediaObject.port,
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
16
|
exports.extractPlainRtpParameters = extractPlainRtpParameters;
|
|
18
|
-
function getRtpEncodings({ sdpObject, kind }) {
|
|
19
|
-
const mediaObject = (sdpObject.media || [])
|
|
20
|
-
.find((m) => m.type === kind);
|
|
17
|
+
function getRtpEncodings({ sdpObject, kind, }) {
|
|
18
|
+
const mediaObject = (sdpObject.media || []).find((m) => m.type === kind);
|
|
21
19
|
if (!mediaObject) {
|
|
22
20
|
throw new Error(`m=${kind} section not found`);
|
|
23
21
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { RtpEncodingParameters } from '../../RtpParameters';
|
|
2
|
-
export declare function getRtpEncodings({ offerMediaObject, track }: {
|
|
2
|
+
export declare function getRtpEncodings({ offerMediaObject, track, }: {
|
|
3
3
|
offerMediaObject: any;
|
|
4
4
|
track: MediaStreamTrack;
|
|
5
5
|
}): RtpEncodingParameters[];
|
|
6
6
|
/**
|
|
7
7
|
* Adds multi-ssrc based simulcast into the given SDP media section offer.
|
|
8
8
|
*/
|
|
9
|
-
export declare function addLegacySimulcast({ offerMediaObject, track, numStreams }: {
|
|
9
|
+
export declare function addLegacySimulcast({ offerMediaObject, track, numStreams, }: {
|
|
10
10
|
offerMediaObject: any;
|
|
11
11
|
track: MediaStreamTrack;
|
|
12
12
|
numStreams: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planBUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/planBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"planBUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/planBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,EAChB,KAAK,GACL,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;CACxB,GAAG,qBAAqB,EAAE,CAyE1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,KAAK,EACL,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAqHP"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addLegacySimulcast = exports.getRtpEncodings = void 0;
|
|
4
|
-
function getRtpEncodings({ offerMediaObject, track }) {
|
|
4
|
+
function getRtpEncodings({ offerMediaObject, track, }) {
|
|
5
5
|
// First media SSRC (or the only one).
|
|
6
6
|
let firstSsrc;
|
|
7
7
|
const ssrcs = new Set();
|
|
@@ -59,7 +59,7 @@ exports.getRtpEncodings = getRtpEncodings;
|
|
|
59
59
|
/**
|
|
60
60
|
* Adds multi-ssrc based simulcast into the given SDP media section offer.
|
|
61
61
|
*/
|
|
62
|
-
function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
62
|
+
function addLegacySimulcast({ offerMediaObject, track, numStreams, }) {
|
|
63
63
|
if (numStreams <= 1) {
|
|
64
64
|
throw new TypeError('numStreams must be greater than 1');
|
|
65
65
|
}
|
|
@@ -67,8 +67,7 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
|
67
67
|
let firstRtxSsrc;
|
|
68
68
|
let streamId;
|
|
69
69
|
// Get the SSRC.
|
|
70
|
-
const ssrcMsidLine = (offerMediaObject.ssrcs || [])
|
|
71
|
-
.find((line) => {
|
|
70
|
+
const ssrcMsidLine = (offerMediaObject.ssrcs || []).find((line) => {
|
|
72
71
|
if (line.attribute !== 'msid') {
|
|
73
72
|
return false;
|
|
74
73
|
}
|
|
@@ -86,8 +85,7 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
|
86
85
|
throw new Error(`a=ssrc line with msid information not found [track.id:${track.id}]`);
|
|
87
86
|
}
|
|
88
87
|
// Get the SSRC for RTX.
|
|
89
|
-
(offerMediaObject.ssrcGroups || [])
|
|
90
|
-
.some((line) => {
|
|
88
|
+
(offerMediaObject.ssrcGroups || []).some((line) => {
|
|
91
89
|
if (line.semantics !== 'FID') {
|
|
92
90
|
return false;
|
|
93
91
|
}
|
|
@@ -100,8 +98,7 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
|
100
98
|
return false;
|
|
101
99
|
}
|
|
102
100
|
});
|
|
103
|
-
const ssrcCnameLine = offerMediaObject.ssrcs
|
|
104
|
-
.find((line) => (line.attribute === 'cname' && line.id === firstSsrc));
|
|
101
|
+
const ssrcCnameLine = offerMediaObject.ssrcs.find((line) => line.attribute === 'cname' && line.id === firstSsrc);
|
|
105
102
|
if (!ssrcCnameLine) {
|
|
106
103
|
throw new Error(`a=ssrc line with cname information not found [track.id:${track.id}]`);
|
|
107
104
|
}
|
|
@@ -118,19 +115,19 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
|
118
115
|
offerMediaObject.ssrcs = offerMediaObject.ssrcs || [];
|
|
119
116
|
offerMediaObject.ssrcGroups.push({
|
|
120
117
|
semantics: 'SIM',
|
|
121
|
-
ssrcs: ssrcs.join(' ')
|
|
118
|
+
ssrcs: ssrcs.join(' '),
|
|
122
119
|
});
|
|
123
120
|
for (let i = 0; i < ssrcs.length; ++i) {
|
|
124
121
|
const ssrc = ssrcs[i];
|
|
125
122
|
offerMediaObject.ssrcs.push({
|
|
126
123
|
id: ssrc,
|
|
127
124
|
attribute: 'cname',
|
|
128
|
-
value: cname
|
|
125
|
+
value: cname,
|
|
129
126
|
});
|
|
130
127
|
offerMediaObject.ssrcs.push({
|
|
131
128
|
id: ssrc,
|
|
132
129
|
attribute: 'msid',
|
|
133
|
-
value: `${streamId} ${track.id}
|
|
130
|
+
value: `${streamId} ${track.id}`,
|
|
134
131
|
});
|
|
135
132
|
}
|
|
136
133
|
for (let i = 0; i < rtxSsrcs.length; ++i) {
|
|
@@ -139,16 +136,16 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams }) {
|
|
|
139
136
|
offerMediaObject.ssrcs.push({
|
|
140
137
|
id: rtxSsrc,
|
|
141
138
|
attribute: 'cname',
|
|
142
|
-
value: cname
|
|
139
|
+
value: cname,
|
|
143
140
|
});
|
|
144
141
|
offerMediaObject.ssrcs.push({
|
|
145
142
|
id: rtxSsrc,
|
|
146
143
|
attribute: 'msid',
|
|
147
|
-
value: `${streamId} ${track.id}
|
|
144
|
+
value: `${streamId} ${track.id}`,
|
|
148
145
|
});
|
|
149
146
|
offerMediaObject.ssrcGroups.push({
|
|
150
147
|
semantics: 'FID',
|
|
151
|
-
ssrcs: `${ssrc} ${rtxSsrc}
|
|
148
|
+
ssrcs: `${ssrc} ${rtxSsrc}`,
|
|
152
149
|
});
|
|
153
150
|
}
|
|
154
151
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { RtpEncodingParameters } from '../../RtpParameters';
|
|
2
|
-
export declare function getRtpEncodings({ offerMediaObject }: {
|
|
2
|
+
export declare function getRtpEncodings({ offerMediaObject, }: {
|
|
3
3
|
offerMediaObject: any;
|
|
4
4
|
}): RtpEncodingParameters[];
|
|
5
5
|
/**
|
|
6
6
|
* Adds multi-ssrc based simulcast into the given SDP media section offer.
|
|
7
7
|
*/
|
|
8
|
-
export declare function addLegacySimulcast({ offerMediaObject, numStreams }: {
|
|
8
|
+
export declare function addLegacySimulcast({ offerMediaObject, numStreams, }: {
|
|
9
9
|
offerMediaObject: any;
|
|
10
10
|
numStreams: number;
|
|
11
11
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unifiedPlanUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/unifiedPlanUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"unifiedPlanUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/unifiedPlanUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,GAChB,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;CACtB,GAAG,qBAAqB,EAAE,CAyD1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAoGP"}
|