mediasoup-client 3.7.0 → 3.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -112
- package/lib/Consumer.d.ts +1 -1
- package/lib/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +1 -1
- package/lib/DataConsumer.d.ts +1 -1
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +1 -1
- package/lib/DataProducer.d.ts +1 -1
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +1 -1
- package/lib/Device.d.ts +3 -3
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +43 -42
- package/lib/EnhancedEventEmitter.d.ts.map +1 -1
- package/lib/Logger.d.ts.map +1 -1
- package/lib/Producer.d.ts +5 -15
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +2 -2
- package/lib/RtpParameters.d.ts.map +1 -1
- package/lib/SctpParameters.d.ts.map +1 -1
- package/lib/Transport.d.ts +14 -10
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +71 -53
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +6 -6
- package/lib/handlers/Chrome111.d.ts +4 -4
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +64 -57
- package/lib/handlers/Chrome55.d.ts +4 -4
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +75 -62
- package/lib/handlers/Chrome67.d.ts +4 -4
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +77 -65
- package/lib/handlers/Chrome70.d.ts +4 -4
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +68 -60
- package/lib/handlers/Chrome74.d.ts +4 -4
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +65 -58
- package/lib/handlers/Edge11.d.ts +1 -1
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +43 -37
- package/lib/handlers/FakeHandler.d.ts +3 -3
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +19 -22
- package/lib/handlers/Firefox60.d.ts +4 -4
- package/lib/handlers/Firefox60.d.ts.map +1 -1
- package/lib/handlers/Firefox60.js +65 -52
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative.d.ts +4 -4
- package/lib/handlers/ReactNative.d.ts.map +1 -1
- package/lib/handlers/ReactNative.js +76 -64
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +4 -4
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
- package/lib/handlers/ReactNativeUnifiedPlan.js +65 -58
- package/lib/handlers/Safari11.d.ts +4 -4
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +74 -61
- package/lib/handlers/Safari12.d.ts +4 -4
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +65 -57
- package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -1
- package/lib/handlers/ortc/utils.d.ts.map +1 -1
- package/lib/handlers/ortc/utils.js +2 -2
- package/lib/handlers/sdp/MediaSection.d.ts +5 -5
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
- package/lib/handlers/sdp/MediaSection.js +287 -305
- package/lib/handlers/sdp/RemoteSdp.d.ts +5 -5
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
- package/lib/handlers/sdp/RemoteSdp.js +28 -30
- package/lib/handlers/sdp/commonUtils.d.ts +4 -4
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +41 -46
- package/lib/handlers/sdp/plainRtpUtils.d.ts +2 -2
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/plainRtpUtils.js +5 -7
- package/lib/handlers/sdp/planBUtils.d.ts +2 -2
- package/lib/handlers/sdp/planBUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/planBUtils.js +11 -14
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +2 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/unifiedPlanUtils.js +11 -14
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +90 -92
- package/lib/scalabilityModes.d.ts.map +1 -1
- package/lib/scalabilityModes.js +2 -2
- package/lib/{tests → test}/fakeParameters.d.ts +2 -2
- package/lib/test/fakeParameters.d.ts.map +1 -0
- package/lib/test/fakeParameters.js +645 -0
- package/lib/{tests → test}/test.d.ts.map +1 -1
- package/lib/{tests → test}/test.js +466 -495
- package/lib/test/uaTestCases.d.ts.map +1 -0
- package/lib/{tests → test}/uaTestCases.js +17 -17
- package/lib/types.d.ts.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/npm-scripts.mjs +72 -98
- package/package.json +93 -90
- package/lib/tests/fakeParameters.d.ts.map +0 -1
- package/lib/tests/fakeParameters.js +0 -662
- package/lib/tests/uaTestCases.d.ts.map +0 -1
- /package/lib/{tests → test}/test.d.ts +0 -0
- /package/lib/{tests → test}/uaTestCases.d.ts +0 -0
|
@@ -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,31 +151,33 @@ function extractDtlsParameters({ sdpObject }) {
|
|
|
155
151
|
}
|
|
156
152
|
let role;
|
|
157
153
|
switch (setup) {
|
|
158
|
-
case 'active':
|
|
154
|
+
case 'active': {
|
|
159
155
|
role = 'client';
|
|
160
156
|
break;
|
|
161
|
-
|
|
157
|
+
}
|
|
158
|
+
case 'passive': {
|
|
162
159
|
role = 'server';
|
|
163
160
|
break;
|
|
164
|
-
|
|
161
|
+
}
|
|
162
|
+
case 'actpass': {
|
|
165
163
|
role = 'auto';
|
|
166
164
|
break;
|
|
165
|
+
}
|
|
167
166
|
}
|
|
168
167
|
const dtlsParameters = {
|
|
169
168
|
role,
|
|
170
169
|
fingerprints: [
|
|
171
170
|
{
|
|
172
171
|
algorithm: fingerprint.type,
|
|
173
|
-
value: fingerprint.hash
|
|
174
|
-
}
|
|
175
|
-
]
|
|
172
|
+
value: fingerprint.hash,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
176
175
|
};
|
|
177
176
|
return dtlsParameters;
|
|
178
177
|
}
|
|
179
178
|
exports.extractDtlsParameters = extractDtlsParameters;
|
|
180
|
-
function getCname({ offerMediaObject }) {
|
|
181
|
-
const ssrcCnameLine = (offerMediaObject.ssrcs || [])
|
|
182
|
-
.find((line) => line.attribute === 'cname');
|
|
179
|
+
function getCname({ offerMediaObject, }) {
|
|
180
|
+
const ssrcCnameLine = (offerMediaObject.ssrcs || []).find((line) => line.attribute === 'cname');
|
|
183
181
|
if (!ssrcCnameLine) {
|
|
184
182
|
return '';
|
|
185
183
|
}
|
|
@@ -190,36 +188,33 @@ exports.getCname = getCname;
|
|
|
190
188
|
* Apply codec parameters in the given SDP m= section answer based on the
|
|
191
189
|
* given RTP parameters of an offer.
|
|
192
190
|
*/
|
|
193
|
-
function applyCodecParameters({ offerRtpParameters, answerMediaObject }) {
|
|
191
|
+
function applyCodecParameters({ offerRtpParameters, answerMediaObject, }) {
|
|
194
192
|
for (const codec of offerRtpParameters.codecs) {
|
|
195
193
|
const mimeType = codec.mimeType.toLowerCase();
|
|
196
194
|
// Avoid parsing codec parameters for unhandled codecs.
|
|
197
195
|
if (mimeType !== 'audio/opus') {
|
|
198
196
|
continue;
|
|
199
197
|
}
|
|
200
|
-
const rtp = (answerMediaObject.rtp || [])
|
|
201
|
-
.find((r) => r.payload === codec.payloadType);
|
|
198
|
+
const rtp = (answerMediaObject.rtp || []).find((r) => r.payload === codec.payloadType);
|
|
202
199
|
if (!rtp) {
|
|
203
200
|
continue;
|
|
204
201
|
}
|
|
205
202
|
// Just in case.
|
|
206
203
|
answerMediaObject.fmtp = answerMediaObject.fmtp || [];
|
|
207
|
-
let fmtp = answerMediaObject.fmtp
|
|
208
|
-
.find((f) => f.payload === codec.payloadType);
|
|
204
|
+
let fmtp = answerMediaObject.fmtp.find((f) => f.payload === codec.payloadType);
|
|
209
205
|
if (!fmtp) {
|
|
210
206
|
fmtp = { payload: codec.payloadType, config: '' };
|
|
211
207
|
answerMediaObject.fmtp.push(fmtp);
|
|
212
208
|
}
|
|
213
209
|
const parameters = sdpTransform.parseParams(fmtp.config);
|
|
214
210
|
switch (mimeType) {
|
|
215
|
-
case 'audio/opus':
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
parameters.stereo = spropStereo ? 1 : 0;
|
|
220
|
-
}
|
|
221
|
-
break;
|
|
211
|
+
case 'audio/opus': {
|
|
212
|
+
const spropStereo = codec.parameters['sprop-stereo'];
|
|
213
|
+
if (spropStereo !== undefined) {
|
|
214
|
+
parameters.stereo = spropStereo ? 1 : 0;
|
|
222
215
|
}
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
223
218
|
}
|
|
224
219
|
// Write the codec fmtp.config back.
|
|
225
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"}
|