mediasoup-client 3.6.90 → 3.6.92
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/Consumer.d.ts +115 -0
- package/lib/Consumer.d.ts.map +1 -0
- package/lib/Consumer.js +190 -0
- package/lib/DataConsumer.d.ts +93 -0
- package/lib/DataConsumer.d.ts.map +1 -0
- package/lib/DataConsumer.js +162 -0
- package/lib/DataProducer.d.ts +97 -0
- package/lib/DataProducer.d.ts.map +1 -0
- package/lib/DataProducer.js +180 -0
- package/lib/Device.d.ts +92 -0
- package/lib/Device.d.ts.map +1 -0
- package/lib/Device.js +464 -0
- package/lib/EnhancedEventEmitter.d.ts +24 -0
- package/lib/EnhancedEventEmitter.d.ts.map +1 -0
- package/lib/EnhancedEventEmitter.js +70 -0
- package/lib/Logger.d.ts +11 -0
- package/lib/Logger.d.ts.map +1 -0
- package/lib/Logger.js +37 -0
- package/lib/Producer.d.ts +169 -0
- package/lib/Producer.d.ts.map +1 -0
- package/lib/Producer.js +287 -0
- package/lib/RtpParameters.d.ts +306 -0
- package/lib/RtpParameters.d.ts.map +1 -0
- package/lib/RtpParameters.js +6 -0
- package/lib/SctpParameters.d.ts +68 -0
- package/lib/SctpParameters.d.ts.map +1 -0
- package/lib/SctpParameters.js +2 -0
- package/lib/Transport.d.ts +243 -0
- package/lib/Transport.d.ts.map +1 -0
- package/lib/Transport.js +824 -0
- package/lib/errors.d.ts +13 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +39 -0
- package/lib/handlers/Chrome111.d.ts +49 -0
- package/lib/handlers/Chrome111.d.ts.map +1 -0
- package/lib/handlers/Chrome111.js +658 -0
- package/lib/handlers/Chrome55.d.ts +51 -0
- package/lib/handlers/Chrome55.d.ts.map +1 -0
- package/lib/handlers/Chrome55.js +542 -0
- package/lib/handlers/Chrome67.d.ts +51 -0
- package/lib/handlers/Chrome67.d.ts.map +1 -0
- package/lib/handlers/Chrome67.js +598 -0
- package/lib/handlers/Chrome70.d.ts +49 -0
- package/lib/handlers/Chrome70.d.ts.map +1 -0
- package/lib/handlers/Chrome70.js +627 -0
- package/lib/handlers/Chrome74.d.ts +49 -0
- package/lib/handlers/Chrome74.d.ts.map +1 -0
- package/lib/handlers/Chrome74.js +675 -0
- package/lib/handlers/Edge11.d.ts +55 -0
- package/lib/handlers/Edge11.d.ts.map +1 -0
- package/lib/handlers/Edge11.js +447 -0
- package/lib/handlers/FakeHandler.d.ts +49 -0
- package/lib/handlers/FakeHandler.d.ts.map +1 -0
- package/lib/handlers/FakeHandler.js +276 -0
- package/lib/handlers/Firefox60.d.ts +48 -0
- package/lib/handlers/Firefox60.d.ts.map +1 -0
- package/lib/handlers/Firefox60.js +681 -0
- package/lib/handlers/HandlerInterface.d.ts +97 -0
- package/lib/handlers/HandlerInterface.d.ts.map +1 -0
- package/lib/handlers/HandlerInterface.js +10 -0
- package/lib/handlers/ReactNative.d.ts +51 -0
- package/lib/handlers/ReactNative.d.ts.map +1 -0
- package/lib/handlers/ReactNative.js +558 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +49 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -0
- package/lib/handlers/ReactNativeUnifiedPlan.js +697 -0
- package/lib/handlers/Safari11.d.ts +51 -0
- package/lib/handlers/Safari11.d.ts.map +1 -0
- package/lib/handlers/Safari11.js +592 -0
- package/lib/handlers/Safari12.d.ts +49 -0
- package/lib/handlers/Safari12.d.ts.map +1 -0
- package/lib/handlers/Safari12.js +648 -0
- package/lib/handlers/ortc/edgeUtils.d.ts +11 -0
- package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -0
- package/lib/handlers/ortc/edgeUtils.js +86 -0
- package/lib/handlers/ortc/utils.d.ts +6 -0
- package/lib/handlers/ortc/utils.d.ts.map +1 -0
- package/lib/handlers/ortc/utils.js +20 -0
- package/lib/handlers/sdp/MediaSection.d.ts +68 -0
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -0
- package/lib/handlers/sdp/MediaSection.js +589 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts +75 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -0
- package/lib/handlers/sdp/RemoteSdp.js +303 -0
- package/lib/handlers/sdp/commonUtils.d.ts +24 -0
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/commonUtils.js +224 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts +14 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/plainRtpUtils.js +33 -0
- package/lib/handlers/sdp/planBUtils.d.ts +14 -0
- package/lib/handlers/sdp/planBUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/planBUtils.js +155 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +12 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/unifiedPlanUtils.js +131 -0
- package/lib/index.d.ts +14 -1435
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +43 -11884
- package/lib/ortc.d.ts +123 -0
- package/lib/ortc.d.ts.map +1 -0
- package/lib/ortc.js +943 -0
- package/lib/scalabilityModes.d.ts +6 -0
- package/lib/scalabilityModes.d.ts.map +1 -0
- package/lib/scalabilityModes.js +20 -0
- package/lib/tests/fakeParameters.d.ts +20 -0
- package/lib/tests/fakeParameters.d.ts.map +1 -0
- package/lib/tests/fakeParameters.js +659 -0
- package/lib/tests/test.d.ts +6 -0
- package/lib/tests/test.d.ts.map +1 -0
- package/lib/tests/test.js +1297 -0
- package/lib/tests/uaTestCases.d.ts +9 -0
- package/lib/tests/uaTestCases.d.ts.map +1 -0
- package/lib/tests/uaTestCases.js +85 -0
- package/lib/types.d.ts +15 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +26 -0
- package/lib/utils.d.ts +9 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +20 -0
- package/npm-scripts.mjs +2 -3
- package/package.json +4 -9
- package/lib/index.js.map +0 -1
- package/lib/index.mjs +0 -11860
- package/lib/index.mjs.map +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.mangleRtpParameters = exports.getCapabilities = void 0;
|
|
27
|
+
const utils = __importStar(require("../../utils"));
|
|
28
|
+
/**
|
|
29
|
+
* Normalize ORTC based Edge's RTCRtpReceiver.getCapabilities() to produce a full
|
|
30
|
+
* compliant ORTC RTCRtpCapabilities.
|
|
31
|
+
*/
|
|
32
|
+
function getCapabilities() {
|
|
33
|
+
const nativeCaps = RTCRtpReceiver.getCapabilities();
|
|
34
|
+
const caps = utils.clone(nativeCaps, {});
|
|
35
|
+
for (const codec of caps.codecs) {
|
|
36
|
+
// Rename numChannels to channels.
|
|
37
|
+
codec.channels = codec.numChannels;
|
|
38
|
+
delete codec.numChannels;
|
|
39
|
+
// Add mimeType.
|
|
40
|
+
codec.mimeType = codec.mimeType || `${codec.kind}/${codec.name}`;
|
|
41
|
+
// NOTE: Edge sets some numeric parameters as string rather than number. Fix them.
|
|
42
|
+
if (codec.parameters) {
|
|
43
|
+
const parameters = codec.parameters;
|
|
44
|
+
if (parameters.apt) {
|
|
45
|
+
parameters.apt = Number(parameters.apt);
|
|
46
|
+
}
|
|
47
|
+
if (parameters['packetization-mode']) {
|
|
48
|
+
parameters['packetization-mode'] = Number(parameters['packetization-mode']);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Delete emty parameter String in rtcpFeedback.
|
|
52
|
+
for (const feedback of codec.rtcpFeedback || []) {
|
|
53
|
+
if (!feedback.parameter) {
|
|
54
|
+
feedback.parameter = '';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return caps;
|
|
59
|
+
}
|
|
60
|
+
exports.getCapabilities = getCapabilities;
|
|
61
|
+
/**
|
|
62
|
+
* Generate RTCRtpParameters as ORTC based Edge likes.
|
|
63
|
+
*/
|
|
64
|
+
function mangleRtpParameters(rtpParameters) {
|
|
65
|
+
const params = utils.clone(rtpParameters, {});
|
|
66
|
+
// Rename mid to muxId.
|
|
67
|
+
if (params.mid) {
|
|
68
|
+
params.muxId = params.mid;
|
|
69
|
+
delete params.mid;
|
|
70
|
+
}
|
|
71
|
+
for (const codec of params.codecs) {
|
|
72
|
+
// Rename channels to numChannels.
|
|
73
|
+
if (codec.channels) {
|
|
74
|
+
codec.numChannels = codec.channels;
|
|
75
|
+
delete codec.channels;
|
|
76
|
+
}
|
|
77
|
+
// Add codec.name (requried by Edge).
|
|
78
|
+
if (codec.mimeType && !codec.name) {
|
|
79
|
+
codec.name = codec.mimeType.split('/')[1];
|
|
80
|
+
}
|
|
81
|
+
// Remove mimeType.
|
|
82
|
+
delete codec.mimeType;
|
|
83
|
+
}
|
|
84
|
+
return params;
|
|
85
|
+
}
|
|
86
|
+
exports.mangleRtpParameters = mangleRtpParameters;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RtpCapabilities } from '../../RtpParameters';
|
|
2
|
+
/**
|
|
3
|
+
* This function adds RTCP NACK support for OPUS codec in given capabilities.
|
|
4
|
+
*/
|
|
5
|
+
export declare function addNackSuppportForOpus(rtpCapabilities: RtpCapabilities): void;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/handlers/ortc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAoB7E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addNackSuppportForOpus = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* This function adds RTCP NACK support for OPUS codec in given capabilities.
|
|
6
|
+
*/
|
|
7
|
+
function addNackSuppportForOpus(rtpCapabilities) {
|
|
8
|
+
var _a;
|
|
9
|
+
for (const codec of (rtpCapabilities.codecs || [])) {
|
|
10
|
+
if ((codec.mimeType.toLowerCase() === 'audio/opus' ||
|
|
11
|
+
codec.mimeType.toLowerCase() === 'audio/multiopus') &&
|
|
12
|
+
!((_a = codec.rtcpFeedback) === null || _a === void 0 ? void 0 : _a.some((fb) => fb.type === 'nack' && !fb.parameter))) {
|
|
13
|
+
if (!codec.rtcpFeedback) {
|
|
14
|
+
codec.rtcpFeedback = [];
|
|
15
|
+
}
|
|
16
|
+
codec.rtcpFeedback.push({ type: 'nack' });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.addNackSuppportForOpus = addNackSuppportForOpus;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { IceParameters, IceCandidate, DtlsParameters, DtlsRole, PlainRtpParameters } from '../../Transport';
|
|
2
|
+
import { ProducerCodecOptions } from '../../Producer';
|
|
3
|
+
import { MediaKind, RtpParameters } from '../../RtpParameters';
|
|
4
|
+
import { SctpParameters } from '../../SctpParameters';
|
|
5
|
+
export declare abstract class MediaSection {
|
|
6
|
+
protected readonly _mediaObject: any;
|
|
7
|
+
protected readonly _planB: boolean;
|
|
8
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, planB }: {
|
|
9
|
+
iceParameters?: IceParameters;
|
|
10
|
+
iceCandidates?: IceCandidate[];
|
|
11
|
+
dtlsParameters?: DtlsParameters;
|
|
12
|
+
planB: boolean;
|
|
13
|
+
});
|
|
14
|
+
abstract setDtlsRole(role: DtlsRole): void;
|
|
15
|
+
get mid(): string;
|
|
16
|
+
get closed(): boolean;
|
|
17
|
+
getObject(): object;
|
|
18
|
+
setIceParameters(iceParameters: IceParameters): void;
|
|
19
|
+
pause(): void;
|
|
20
|
+
abstract resume(): void;
|
|
21
|
+
disable(): void;
|
|
22
|
+
close(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class AnswerMediaSection extends MediaSection {
|
|
25
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB, offerMediaObject, offerRtpParameters, answerRtpParameters, codecOptions, extmapAllowMixed }: {
|
|
26
|
+
iceParameters?: IceParameters;
|
|
27
|
+
iceCandidates?: IceCandidate[];
|
|
28
|
+
dtlsParameters?: DtlsParameters;
|
|
29
|
+
sctpParameters?: SctpParameters;
|
|
30
|
+
plainRtpParameters?: PlainRtpParameters;
|
|
31
|
+
planB?: boolean;
|
|
32
|
+
offerMediaObject: any;
|
|
33
|
+
offerRtpParameters?: RtpParameters;
|
|
34
|
+
answerRtpParameters?: RtpParameters;
|
|
35
|
+
codecOptions?: ProducerCodecOptions;
|
|
36
|
+
extmapAllowMixed?: boolean;
|
|
37
|
+
});
|
|
38
|
+
setDtlsRole(role: DtlsRole): void;
|
|
39
|
+
resume(): void;
|
|
40
|
+
muxSimulcastStreams(encodings: RTCRtpEncodingParameters[]): void;
|
|
41
|
+
}
|
|
42
|
+
export declare class OfferMediaSection extends MediaSection {
|
|
43
|
+
constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, planB, mid, kind, offerRtpParameters, streamId, trackId, oldDataChannelSpec }: {
|
|
44
|
+
iceParameters?: IceParameters;
|
|
45
|
+
iceCandidates?: IceCandidate[];
|
|
46
|
+
dtlsParameters?: DtlsParameters;
|
|
47
|
+
sctpParameters?: SctpParameters;
|
|
48
|
+
plainRtpParameters?: PlainRtpParameters;
|
|
49
|
+
planB?: boolean;
|
|
50
|
+
mid: string;
|
|
51
|
+
kind: MediaKind | 'application';
|
|
52
|
+
offerRtpParameters?: RtpParameters;
|
|
53
|
+
streamId?: string;
|
|
54
|
+
trackId?: string;
|
|
55
|
+
oldDataChannelSpec?: boolean;
|
|
56
|
+
});
|
|
57
|
+
setDtlsRole(role: DtlsRole): void;
|
|
58
|
+
resume(): void;
|
|
59
|
+
planBReceive({ offerRtpParameters, streamId, trackId }: {
|
|
60
|
+
offerRtpParameters: RtpParameters;
|
|
61
|
+
streamId: string;
|
|
62
|
+
trackId: string;
|
|
63
|
+
}): void;
|
|
64
|
+
planBStopReceiving({ offerRtpParameters }: {
|
|
65
|
+
offerRtpParameters: RtpParameters;
|
|
66
|
+
}): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=MediaSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"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"}
|