@whereby.com/media 2.9.0 → 2.9.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/dist/index.cjs +76 -89
- package/dist/index.d.cts +5 -7
- package/dist/index.d.mts +5 -7
- package/dist/index.d.ts +5 -7
- package/dist/index.mjs +77 -88
- package/dist/legacy-esm.js +77 -88
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -2091,29 +2091,6 @@ function cleanSdp(sdp) {
|
|
|
2091
2091
|
catch (_) { }
|
|
2092
2092
|
return sdp;
|
|
2093
2093
|
}
|
|
2094
|
-
function maybeRejectNoH264(sdp) {
|
|
2095
|
-
if (browserName$2 !== "safari") {
|
|
2096
|
-
return sdp;
|
|
2097
|
-
}
|
|
2098
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2099
|
-
for (let i = 1; i < sections.length; i++) {
|
|
2100
|
-
if (SDPUtils.getKind(sections[i]) !== "video") {
|
|
2101
|
-
continue;
|
|
2102
|
-
}
|
|
2103
|
-
const codecs = SDPUtils.matchPrefix(sections[i], "a=rtpmap:")
|
|
2104
|
-
.map((line) => {
|
|
2105
|
-
return SDPUtils.parseRtpMap(line);
|
|
2106
|
-
})
|
|
2107
|
-
.map((codec) => {
|
|
2108
|
-
return codec.name.toUpperCase();
|
|
2109
|
-
});
|
|
2110
|
-
if (codecs.indexOf("H264") === -1 &&
|
|
2111
|
-
sections[i][8] === "9") {
|
|
2112
|
-
sections[i] = sections[i].replace("m=video 9 ", "m=video 0 ");
|
|
2113
|
-
}
|
|
2114
|
-
}
|
|
2115
|
-
return sections.join("");
|
|
2116
|
-
}
|
|
2117
2094
|
function deprioritizeH264(sdp) {
|
|
2118
2095
|
return SDPUtils.splitSections(sdp)
|
|
2119
2096
|
.map((section) => {
|
|
@@ -2138,8 +2115,7 @@ function deprioritizeH264(sdp) {
|
|
|
2138
2115
|
.join("");
|
|
2139
2116
|
}
|
|
2140
2117
|
function filterMidExtension(sdp) {
|
|
2141
|
-
if (browserName$2 !== "
|
|
2142
|
-
(browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60)) {
|
|
2118
|
+
if (browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60) {
|
|
2143
2119
|
return sdp;
|
|
2144
2120
|
}
|
|
2145
2121
|
return (SDPUtils.splitLines(sdp.trim())
|
|
@@ -2153,23 +2129,13 @@ function filterMidExtension(sdp) {
|
|
|
2153
2129
|
.join("\r\n") + "\r\n");
|
|
2154
2130
|
}
|
|
2155
2131
|
function filterMsidSemantic(sdp) {
|
|
2156
|
-
if (browserName$2 !== "firefox") {
|
|
2132
|
+
if (browserName$2 !== "firefox" && browserVersion$1 < 68) {
|
|
2157
2133
|
return sdp;
|
|
2158
2134
|
}
|
|
2159
2135
|
return (SDPUtils.splitLines(sdp.trim())
|
|
2160
2136
|
.map((line) => (line.startsWith("a=msid-semantic:") ? "a=msid-semantic: WMS *" : line))
|
|
2161
2137
|
.join("\r\n") + "\r\n");
|
|
2162
2138
|
}
|
|
2163
|
-
function changeMediaDirection(sdp, active) {
|
|
2164
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2165
|
-
return (sections.shift() +
|
|
2166
|
-
sections
|
|
2167
|
-
.map((section) => {
|
|
2168
|
-
const currentDirection = SDPUtils.getDirection(section, SDPUtils.getKind(section));
|
|
2169
|
-
return section.replace("a=" + currentDirection, "a=" + (active ? "recvonly" : "inactive"));
|
|
2170
|
-
})
|
|
2171
|
-
.join(""));
|
|
2172
|
-
}
|
|
2173
2139
|
function addExtMap(sdp, extmapUri, modifyAudio = false, modifyVideo = false) {
|
|
2174
2140
|
var _a, _b;
|
|
2175
2141
|
try {
|
|
@@ -2532,6 +2498,39 @@ class Session {
|
|
|
2532
2498
|
|
|
2533
2499
|
const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
2534
2500
|
|
|
2501
|
+
var _a$3;
|
|
2502
|
+
const adapter$3 = (_a$3 = adapterRaw.default) !== null && _a$3 !== void 0 ? _a$3 : adapterRaw;
|
|
2503
|
+
function detectMicrophoneNotWorking(pc) {
|
|
2504
|
+
var _a, _b;
|
|
2505
|
+
if (((_a = adapter$3.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
2506
|
+
((_b = adapter$3.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
2507
|
+
pc.signalingState === "closed") {
|
|
2508
|
+
return Promise.resolve("");
|
|
2509
|
+
}
|
|
2510
|
+
const sendingAudio = pc.getSenders().some((sender) => { var _a; return ((_a = sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2511
|
+
const receivingAudio = pc.getReceivers().some((receiver) => { var _a; return ((_a = receiver.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2512
|
+
return pc.getStats(null).then((result) => {
|
|
2513
|
+
let microphoneFailed = "";
|
|
2514
|
+
result.forEach((report) => {
|
|
2515
|
+
if (report.type === "outbound-rtp" &&
|
|
2516
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2517
|
+
sendingAudio) {
|
|
2518
|
+
if (report.bytesSent === 0) {
|
|
2519
|
+
microphoneFailed = "outbound";
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
else if (report.type === "inbound-rtp" &&
|
|
2523
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2524
|
+
receivingAudio) {
|
|
2525
|
+
if (report.bytesReceived === 0) {
|
|
2526
|
+
microphoneFailed = "inbound";
|
|
2527
|
+
}
|
|
2528
|
+
}
|
|
2529
|
+
});
|
|
2530
|
+
return microphoneFailed;
|
|
2531
|
+
});
|
|
2532
|
+
}
|
|
2533
|
+
|
|
2535
2534
|
const EVENTS = {
|
|
2536
2535
|
CLIENT_CONNECTION_STATUS_CHANGED: "client_connection_status_changed",
|
|
2537
2536
|
STREAM_ADDED: "stream_added",
|
|
@@ -2569,15 +2568,12 @@ const STREAM_TYPES = {
|
|
|
2569
2568
|
screenshare: "screenshare",
|
|
2570
2569
|
};
|
|
2571
2570
|
|
|
2572
|
-
var _a$
|
|
2573
|
-
const adapter$
|
|
2571
|
+
var _a$2, _b$1;
|
|
2572
|
+
const adapter$2 = (_a$2 = adapterRaw.default) !== null && _a$2 !== void 0 ? _a$2 : adapterRaw;
|
|
2574
2573
|
const logger$6 = new Logger();
|
|
2575
2574
|
const ICE_PUBLIC_IP_GATHERING_TIMEOUT = 3 * 1000;
|
|
2576
|
-
const browserName$1 = (_b$1 = adapter$
|
|
2577
|
-
const browserVersion = adapter$
|
|
2578
|
-
if (browserName$1 === "firefox" && adapter$3.browserShim && "shimGetDisplayMedia" in adapter$3.browserShim) {
|
|
2579
|
-
(_c = adapter$3.browserShim) === null || _c === void 0 ? void 0 : _c.shimGetDisplayMedia(window, "screen");
|
|
2580
|
-
}
|
|
2575
|
+
const browserName$1 = (_b$1 = adapter$2.browserDetails) === null || _b$1 === void 0 ? void 0 : _b$1.browser;
|
|
2576
|
+
const browserVersion = adapter$2.browserDetails.version;
|
|
2581
2577
|
let unloading$1 = false;
|
|
2582
2578
|
if (browserName$1 === "chrome") {
|
|
2583
2579
|
window.document.addEventListener("beforeunload", () => {
|
|
@@ -2641,15 +2637,15 @@ class P2pRtcManager {
|
|
|
2641
2637
|
P2PReplaceTrackNewTrackEnded: 0,
|
|
2642
2638
|
P2PReplaceTrackNewTrackNotInStream: 0,
|
|
2643
2639
|
P2PReplaceTrackOldTrackNotFound: 0,
|
|
2644
|
-
P2PReplaceTrackToPCsPendingActionsNull: 0,
|
|
2645
|
-
P2PReplaceTrackReturnedFalse: 0,
|
|
2646
2640
|
P2PReplaceTrackWithoutPC: 0,
|
|
2647
2641
|
P2PReplaceTrackSourceKindNotFound: 0,
|
|
2648
|
-
P2PRemoveStreamNoPC: 0,
|
|
2649
2642
|
P2POnTrackNoStream: 0,
|
|
2650
2643
|
P2PSetCodecPreferenceError: 0,
|
|
2651
2644
|
P2PCreateOfferNoSDP: 0,
|
|
2652
2645
|
P2PCreateAnswerNoSDP: 0,
|
|
2646
|
+
P2PMicNotWorking: 0,
|
|
2647
|
+
P2PLocalNetworkFailed: 0,
|
|
2648
|
+
P2PRelayedIceCandidate: 0,
|
|
2653
2649
|
};
|
|
2654
2650
|
}
|
|
2655
2651
|
numberOfPeerconnections() {
|
|
@@ -3016,7 +3012,12 @@ class P2pRtcManager {
|
|
|
3016
3012
|
if (currentStatus !== newStatus) {
|
|
3017
3013
|
this._maybeRestartIce(clientId, session);
|
|
3018
3014
|
}
|
|
3019
|
-
if (session.relayCandidateSeen
|
|
3015
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
3016
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
3017
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
3018
|
+
from: "iceConnectionStateChange",
|
|
3019
|
+
clientId,
|
|
3020
|
+
});
|
|
3020
3021
|
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3021
3022
|
}
|
|
3022
3023
|
break;
|
|
@@ -3029,10 +3030,26 @@ class P2pRtcManager {
|
|
|
3029
3030
|
var _a;
|
|
3030
3031
|
switch (pc.connectionState) {
|
|
3031
3032
|
case "connected":
|
|
3033
|
+
setTimeout(() => {
|
|
3034
|
+
detectMicrophoneNotWorking(session.pc).then((failureDirection) => {
|
|
3035
|
+
if (failureDirection) {
|
|
3036
|
+
this.analytics.P2PMicNotWorking++;
|
|
3037
|
+
rtcStats.sendEvent("P2PMicNotWorking", { clientId, failureDirection });
|
|
3038
|
+
}
|
|
3039
|
+
});
|
|
3040
|
+
}, 3000);
|
|
3032
3041
|
(_a = session.registerConnected) === null || _a === void 0 ? void 0 : _a.call(session, {});
|
|
3033
3042
|
break;
|
|
3034
3043
|
case "failed":
|
|
3035
3044
|
const newStatus = TYPES.CONNECTION_FAILED;
|
|
3045
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
3046
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
3047
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
3048
|
+
from: "connectionStateChange",
|
|
3049
|
+
clientId,
|
|
3050
|
+
});
|
|
3051
|
+
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3052
|
+
}
|
|
3036
3053
|
this._setConnectionStatus(session, newStatus, clientId);
|
|
3037
3054
|
break;
|
|
3038
3055
|
case "closed":
|
|
@@ -3384,11 +3401,16 @@ class P2pRtcManager {
|
|
|
3384
3401
|
}
|
|
3385
3402
|
};
|
|
3386
3403
|
pc.onicecandidate = (event) => {
|
|
3387
|
-
var _a, _b;
|
|
3388
3404
|
if (event.candidate) {
|
|
3389
|
-
|
|
3405
|
+
if (event.candidate.type === "relayed") {
|
|
3406
|
+
this.analytics.P2PRelayedIceCandidate++;
|
|
3407
|
+
}
|
|
3408
|
+
switch (event.candidate.type) {
|
|
3390
3409
|
case "host":
|
|
3391
|
-
const address =
|
|
3410
|
+
const address = event.candidate.address;
|
|
3411
|
+
if (!address) {
|
|
3412
|
+
break;
|
|
3413
|
+
}
|
|
3392
3414
|
try {
|
|
3393
3415
|
if (ipRegex.v4({ exact: true }).test(address)) {
|
|
3394
3416
|
const ipv4 = checkIp(address);
|
|
@@ -3422,8 +3444,8 @@ class P2pRtcManager {
|
|
|
3422
3444
|
case "srflx":
|
|
3423
3445
|
session.serverReflexiveCandidateSeen = true;
|
|
3424
3446
|
break;
|
|
3425
|
-
case "relay":
|
|
3426
3447
|
case "relayed":
|
|
3448
|
+
case "relay":
|
|
3427
3449
|
session.relayCandidateSeen = true;
|
|
3428
3450
|
break;
|
|
3429
3451
|
}
|
|
@@ -4408,10 +4430,10 @@ function createVegaConnectionManager(config) {
|
|
|
4408
4430
|
return { connect, updateHostList, networkIsUp, networkIsPossiblyDown };
|
|
4409
4431
|
}
|
|
4410
4432
|
|
|
4411
|
-
var _a$
|
|
4412
|
-
const adapter$
|
|
4433
|
+
var _a$1;
|
|
4434
|
+
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
4413
4435
|
const logger$2 = new Logger();
|
|
4414
|
-
const browserName = adapter$
|
|
4436
|
+
const browserName = adapter$1.browserDetails.browser;
|
|
4415
4437
|
let unloading = false;
|
|
4416
4438
|
const RESTARTICE_ERROR_RETRY_THRESHOLD_IN_MS = 3500;
|
|
4417
4439
|
const RESTARTICE_ERROR_MAX_RETRY_COUNT = 5;
|
|
@@ -7022,39 +7044,6 @@ class BandwidthTester extends EventEmitter {
|
|
|
7022
7044
|
}
|
|
7023
7045
|
}
|
|
7024
7046
|
|
|
7025
|
-
var _a$1;
|
|
7026
|
-
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
7027
|
-
function detectMicrophoneNotWorking(pc) {
|
|
7028
|
-
var _a, _b;
|
|
7029
|
-
if (((_a = adapter$1.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
7030
|
-
((_b = adapter$1.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
7031
|
-
pc.signalingState === "closed") {
|
|
7032
|
-
return Promise.resolve(false);
|
|
7033
|
-
}
|
|
7034
|
-
const sendingAudio = pc.getSenders().some((sender) => sender.track && sender.track.kind === "audio");
|
|
7035
|
-
const receivingAudio = pc.getReceivers().some((receiver) => receiver.track && receiver.track.kind === "audio");
|
|
7036
|
-
return pc.getStats(null).then((result) => {
|
|
7037
|
-
let microphoneFailed = false;
|
|
7038
|
-
result.forEach((report) => {
|
|
7039
|
-
if (report.type === "outbound-rtp" &&
|
|
7040
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7041
|
-
sendingAudio) {
|
|
7042
|
-
if (report.bytesSent === 0) {
|
|
7043
|
-
microphoneFailed = "outbound";
|
|
7044
|
-
}
|
|
7045
|
-
}
|
|
7046
|
-
else if (report.type === "inbound-rtp" &&
|
|
7047
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7048
|
-
receivingAudio) {
|
|
7049
|
-
if (report.bytesReceived === 0) {
|
|
7050
|
-
microphoneFailed = "inbound";
|
|
7051
|
-
}
|
|
7052
|
-
}
|
|
7053
|
-
});
|
|
7054
|
-
return microphoneFailed;
|
|
7055
|
-
});
|
|
7056
|
-
}
|
|
7057
|
-
|
|
7058
7047
|
var _a, _b;
|
|
7059
7048
|
const adapter = (_a = adapterRaw.default) !== null && _a !== void 0 ? _a : adapterRaw;
|
|
7060
7049
|
const isSafari = ((_b = adapter.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) === "safari";
|
|
@@ -7496,7 +7485,6 @@ exports.captureCandidatePairInfoMetrics = captureCandidatePairInfoMetrics;
|
|
|
7496
7485
|
exports.captureCommonSsrcMetrics = captureCommonSsrcMetrics;
|
|
7497
7486
|
exports.captureSsrcInfo = captureSsrcInfo;
|
|
7498
7487
|
exports.captureVideoSsrcMetrics = captureVideoSsrcMetrics;
|
|
7499
|
-
exports.changeMediaDirection = changeMediaDirection;
|
|
7500
7488
|
exports.cleanSdp = cleanSdp;
|
|
7501
7489
|
exports.compareLocalDevices = compareLocalDevices;
|
|
7502
7490
|
exports.createACFCalculator = createACFCalculator;
|
|
@@ -7531,7 +7519,6 @@ exports.hasGetDisplayMedia = hasGetDisplayMedia;
|
|
|
7531
7519
|
exports.ipRegex = ipRegex;
|
|
7532
7520
|
exports.isMobile = isMobile;
|
|
7533
7521
|
exports.issueDetectorOrMetricEnabled = issueDetectorOrMetricEnabled;
|
|
7534
|
-
exports.maybeRejectNoH264 = maybeRejectNoH264;
|
|
7535
7522
|
exports.maybeTurnOnly = maybeTurnOnly;
|
|
7536
7523
|
exports.modifyMediaCapabilities = modifyMediaCapabilities;
|
|
7537
7524
|
exports.removePeerConnection = removePeerConnection;
|
package/dist/index.d.cts
CHANGED
|
@@ -311,7 +311,7 @@ declare class BandwidthTester extends EventEmitter {
|
|
|
311
311
|
_clearTimeouts(): void;
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
-
declare function detectMicrophoneNotWorking(pc:
|
|
314
|
+
declare function detectMicrophoneNotWorking(pc: RTCPeerConnection): Promise<string>;
|
|
315
315
|
|
|
316
316
|
declare const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
317
317
|
|
|
@@ -1245,15 +1245,15 @@ type P2PAnalytics = {
|
|
|
1245
1245
|
P2PReplaceTrackNewTrackEnded: number;
|
|
1246
1246
|
P2PReplaceTrackNewTrackNotInStream: number;
|
|
1247
1247
|
P2PReplaceTrackOldTrackNotFound: number;
|
|
1248
|
-
P2PReplaceTrackToPCsPendingActionsNull: number;
|
|
1249
|
-
P2PReplaceTrackReturnedFalse: number;
|
|
1250
1248
|
P2PReplaceTrackWithoutPC: number;
|
|
1251
1249
|
P2PReplaceTrackSourceKindNotFound: number;
|
|
1252
|
-
P2PRemoveStreamNoPC: number;
|
|
1253
1250
|
P2POnTrackNoStream: number;
|
|
1254
1251
|
P2PSetCodecPreferenceError: number;
|
|
1255
1252
|
P2PCreateOfferNoSDP: number;
|
|
1256
1253
|
P2PCreateAnswerNoSDP: number;
|
|
1254
|
+
P2PMicNotWorking: number;
|
|
1255
|
+
P2PLocalNetworkFailed: number;
|
|
1256
|
+
P2PRelayedIceCandidate: number;
|
|
1257
1257
|
};
|
|
1258
1258
|
type P2PAnalyticMetric = keyof P2PAnalytics;
|
|
1259
1259
|
type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
|
|
@@ -1417,11 +1417,9 @@ interface SetCodecPreferenceSDPOptions {
|
|
|
1417
1417
|
}
|
|
1418
1418
|
declare function setCodecPreferenceSDP({ sdp, redOn, incrementAnalyticMetric }: SetCodecPreferenceSDPOptions): string;
|
|
1419
1419
|
declare function cleanSdp(sdp: string): string;
|
|
1420
|
-
declare function maybeRejectNoH264(sdp: any): any;
|
|
1421
1420
|
declare function deprioritizeH264(sdp: any): string;
|
|
1422
1421
|
declare function filterMidExtension(sdp: any): any;
|
|
1423
1422
|
declare function filterMsidSemantic(sdp: any): any;
|
|
1424
|
-
declare function changeMediaDirection(sdp: any, active: any): string;
|
|
1425
1423
|
declare function addExtMap(sdp: any, extmapUri: any, modifyAudio?: any, modifyVideo?: any): any;
|
|
1426
1424
|
declare function addAbsCaptureTimeExtMap(sdp: any): any;
|
|
1427
1425
|
|
|
@@ -1921,5 +1919,5 @@ declare const STREAM_TYPES: {
|
|
|
1921
1919
|
screenshare: string;
|
|
1922
1920
|
};
|
|
1923
1921
|
|
|
1924
|
-
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics,
|
|
1922
|
+
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
|
|
1925
1923
|
export type { AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RTCSessionDescription, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomFullError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, SDPRelayMessage, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRequests, SignalRoom, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.d.mts
CHANGED
|
@@ -311,7 +311,7 @@ declare class BandwidthTester extends EventEmitter {
|
|
|
311
311
|
_clearTimeouts(): void;
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
-
declare function detectMicrophoneNotWorking(pc:
|
|
314
|
+
declare function detectMicrophoneNotWorking(pc: RTCPeerConnection): Promise<string>;
|
|
315
315
|
|
|
316
316
|
declare const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
317
317
|
|
|
@@ -1245,15 +1245,15 @@ type P2PAnalytics = {
|
|
|
1245
1245
|
P2PReplaceTrackNewTrackEnded: number;
|
|
1246
1246
|
P2PReplaceTrackNewTrackNotInStream: number;
|
|
1247
1247
|
P2PReplaceTrackOldTrackNotFound: number;
|
|
1248
|
-
P2PReplaceTrackToPCsPendingActionsNull: number;
|
|
1249
|
-
P2PReplaceTrackReturnedFalse: number;
|
|
1250
1248
|
P2PReplaceTrackWithoutPC: number;
|
|
1251
1249
|
P2PReplaceTrackSourceKindNotFound: number;
|
|
1252
|
-
P2PRemoveStreamNoPC: number;
|
|
1253
1250
|
P2POnTrackNoStream: number;
|
|
1254
1251
|
P2PSetCodecPreferenceError: number;
|
|
1255
1252
|
P2PCreateOfferNoSDP: number;
|
|
1256
1253
|
P2PCreateAnswerNoSDP: number;
|
|
1254
|
+
P2PMicNotWorking: number;
|
|
1255
|
+
P2PLocalNetworkFailed: number;
|
|
1256
|
+
P2PRelayedIceCandidate: number;
|
|
1257
1257
|
};
|
|
1258
1258
|
type P2PAnalyticMetric = keyof P2PAnalytics;
|
|
1259
1259
|
type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
|
|
@@ -1417,11 +1417,9 @@ interface SetCodecPreferenceSDPOptions {
|
|
|
1417
1417
|
}
|
|
1418
1418
|
declare function setCodecPreferenceSDP({ sdp, redOn, incrementAnalyticMetric }: SetCodecPreferenceSDPOptions): string;
|
|
1419
1419
|
declare function cleanSdp(sdp: string): string;
|
|
1420
|
-
declare function maybeRejectNoH264(sdp: any): any;
|
|
1421
1420
|
declare function deprioritizeH264(sdp: any): string;
|
|
1422
1421
|
declare function filterMidExtension(sdp: any): any;
|
|
1423
1422
|
declare function filterMsidSemantic(sdp: any): any;
|
|
1424
|
-
declare function changeMediaDirection(sdp: any, active: any): string;
|
|
1425
1423
|
declare function addExtMap(sdp: any, extmapUri: any, modifyAudio?: any, modifyVideo?: any): any;
|
|
1426
1424
|
declare function addAbsCaptureTimeExtMap(sdp: any): any;
|
|
1427
1425
|
|
|
@@ -1921,5 +1919,5 @@ declare const STREAM_TYPES: {
|
|
|
1921
1919
|
screenshare: string;
|
|
1922
1920
|
};
|
|
1923
1921
|
|
|
1924
|
-
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics,
|
|
1922
|
+
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
|
|
1925
1923
|
export type { AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RTCSessionDescription, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomFullError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, SDPRelayMessage, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRequests, SignalRoom, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -311,7 +311,7 @@ declare class BandwidthTester extends EventEmitter {
|
|
|
311
311
|
_clearTimeouts(): void;
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
-
declare function detectMicrophoneNotWorking(pc:
|
|
314
|
+
declare function detectMicrophoneNotWorking(pc: RTCPeerConnection): Promise<string>;
|
|
315
315
|
|
|
316
316
|
declare const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
317
317
|
|
|
@@ -1245,15 +1245,15 @@ type P2PAnalytics = {
|
|
|
1245
1245
|
P2PReplaceTrackNewTrackEnded: number;
|
|
1246
1246
|
P2PReplaceTrackNewTrackNotInStream: number;
|
|
1247
1247
|
P2PReplaceTrackOldTrackNotFound: number;
|
|
1248
|
-
P2PReplaceTrackToPCsPendingActionsNull: number;
|
|
1249
|
-
P2PReplaceTrackReturnedFalse: number;
|
|
1250
1248
|
P2PReplaceTrackWithoutPC: number;
|
|
1251
1249
|
P2PReplaceTrackSourceKindNotFound: number;
|
|
1252
|
-
P2PRemoveStreamNoPC: number;
|
|
1253
1250
|
P2POnTrackNoStream: number;
|
|
1254
1251
|
P2PSetCodecPreferenceError: number;
|
|
1255
1252
|
P2PCreateOfferNoSDP: number;
|
|
1256
1253
|
P2PCreateAnswerNoSDP: number;
|
|
1254
|
+
P2PMicNotWorking: number;
|
|
1255
|
+
P2PLocalNetworkFailed: number;
|
|
1256
|
+
P2PRelayedIceCandidate: number;
|
|
1257
1257
|
};
|
|
1258
1258
|
type P2PAnalyticMetric = keyof P2PAnalytics;
|
|
1259
1259
|
type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
|
|
@@ -1417,11 +1417,9 @@ interface SetCodecPreferenceSDPOptions {
|
|
|
1417
1417
|
}
|
|
1418
1418
|
declare function setCodecPreferenceSDP({ sdp, redOn, incrementAnalyticMetric }: SetCodecPreferenceSDPOptions): string;
|
|
1419
1419
|
declare function cleanSdp(sdp: string): string;
|
|
1420
|
-
declare function maybeRejectNoH264(sdp: any): any;
|
|
1421
1420
|
declare function deprioritizeH264(sdp: any): string;
|
|
1422
1421
|
declare function filterMidExtension(sdp: any): any;
|
|
1423
1422
|
declare function filterMsidSemantic(sdp: any): any;
|
|
1424
|
-
declare function changeMediaDirection(sdp: any, active: any): string;
|
|
1425
1423
|
declare function addExtMap(sdp: any, extmapUri: any, modifyAudio?: any, modifyVideo?: any): any;
|
|
1426
1424
|
declare function addAbsCaptureTimeExtMap(sdp: any): any;
|
|
1427
1425
|
|
|
@@ -1921,5 +1919,5 @@ declare const STREAM_TYPES: {
|
|
|
1921
1919
|
screenshare: string;
|
|
1922
1920
|
};
|
|
1923
1921
|
|
|
1924
|
-
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics,
|
|
1922
|
+
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
|
|
1925
1923
|
export type { AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RTCSessionDescription, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomFullError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, SDPRelayMessage, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRequests, SignalRoom, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.mjs
CHANGED
|
@@ -2070,29 +2070,6 @@ function cleanSdp(sdp) {
|
|
|
2070
2070
|
catch (_) { }
|
|
2071
2071
|
return sdp;
|
|
2072
2072
|
}
|
|
2073
|
-
function maybeRejectNoH264(sdp) {
|
|
2074
|
-
if (browserName$2 !== "safari") {
|
|
2075
|
-
return sdp;
|
|
2076
|
-
}
|
|
2077
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2078
|
-
for (let i = 1; i < sections.length; i++) {
|
|
2079
|
-
if (SDPUtils.getKind(sections[i]) !== "video") {
|
|
2080
|
-
continue;
|
|
2081
|
-
}
|
|
2082
|
-
const codecs = SDPUtils.matchPrefix(sections[i], "a=rtpmap:")
|
|
2083
|
-
.map((line) => {
|
|
2084
|
-
return SDPUtils.parseRtpMap(line);
|
|
2085
|
-
})
|
|
2086
|
-
.map((codec) => {
|
|
2087
|
-
return codec.name.toUpperCase();
|
|
2088
|
-
});
|
|
2089
|
-
if (codecs.indexOf("H264") === -1 &&
|
|
2090
|
-
sections[i][8] === "9") {
|
|
2091
|
-
sections[i] = sections[i].replace("m=video 9 ", "m=video 0 ");
|
|
2092
|
-
}
|
|
2093
|
-
}
|
|
2094
|
-
return sections.join("");
|
|
2095
|
-
}
|
|
2096
2073
|
function deprioritizeH264(sdp) {
|
|
2097
2074
|
return SDPUtils.splitSections(sdp)
|
|
2098
2075
|
.map((section) => {
|
|
@@ -2117,8 +2094,7 @@ function deprioritizeH264(sdp) {
|
|
|
2117
2094
|
.join("");
|
|
2118
2095
|
}
|
|
2119
2096
|
function filterMidExtension(sdp) {
|
|
2120
|
-
if (browserName$2 !== "
|
|
2121
|
-
(browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60)) {
|
|
2097
|
+
if (browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60) {
|
|
2122
2098
|
return sdp;
|
|
2123
2099
|
}
|
|
2124
2100
|
return (SDPUtils.splitLines(sdp.trim())
|
|
@@ -2132,23 +2108,13 @@ function filterMidExtension(sdp) {
|
|
|
2132
2108
|
.join("\r\n") + "\r\n");
|
|
2133
2109
|
}
|
|
2134
2110
|
function filterMsidSemantic(sdp) {
|
|
2135
|
-
if (browserName$2 !== "firefox") {
|
|
2111
|
+
if (browserName$2 !== "firefox" && browserVersion$1 < 68) {
|
|
2136
2112
|
return sdp;
|
|
2137
2113
|
}
|
|
2138
2114
|
return (SDPUtils.splitLines(sdp.trim())
|
|
2139
2115
|
.map((line) => (line.startsWith("a=msid-semantic:") ? "a=msid-semantic: WMS *" : line))
|
|
2140
2116
|
.join("\r\n") + "\r\n");
|
|
2141
2117
|
}
|
|
2142
|
-
function changeMediaDirection(sdp, active) {
|
|
2143
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2144
|
-
return (sections.shift() +
|
|
2145
|
-
sections
|
|
2146
|
-
.map((section) => {
|
|
2147
|
-
const currentDirection = SDPUtils.getDirection(section, SDPUtils.getKind(section));
|
|
2148
|
-
return section.replace("a=" + currentDirection, "a=" + (active ? "recvonly" : "inactive"));
|
|
2149
|
-
})
|
|
2150
|
-
.join(""));
|
|
2151
|
-
}
|
|
2152
2118
|
function addExtMap(sdp, extmapUri, modifyAudio = false, modifyVideo = false) {
|
|
2153
2119
|
var _a, _b;
|
|
2154
2120
|
try {
|
|
@@ -2511,6 +2477,39 @@ class Session {
|
|
|
2511
2477
|
|
|
2512
2478
|
const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
2513
2479
|
|
|
2480
|
+
var _a$3;
|
|
2481
|
+
const adapter$3 = (_a$3 = adapterRaw.default) !== null && _a$3 !== void 0 ? _a$3 : adapterRaw;
|
|
2482
|
+
function detectMicrophoneNotWorking(pc) {
|
|
2483
|
+
var _a, _b;
|
|
2484
|
+
if (((_a = adapter$3.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
2485
|
+
((_b = adapter$3.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
2486
|
+
pc.signalingState === "closed") {
|
|
2487
|
+
return Promise.resolve("");
|
|
2488
|
+
}
|
|
2489
|
+
const sendingAudio = pc.getSenders().some((sender) => { var _a; return ((_a = sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2490
|
+
const receivingAudio = pc.getReceivers().some((receiver) => { var _a; return ((_a = receiver.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2491
|
+
return pc.getStats(null).then((result) => {
|
|
2492
|
+
let microphoneFailed = "";
|
|
2493
|
+
result.forEach((report) => {
|
|
2494
|
+
if (report.type === "outbound-rtp" &&
|
|
2495
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2496
|
+
sendingAudio) {
|
|
2497
|
+
if (report.bytesSent === 0) {
|
|
2498
|
+
microphoneFailed = "outbound";
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
else if (report.type === "inbound-rtp" &&
|
|
2502
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2503
|
+
receivingAudio) {
|
|
2504
|
+
if (report.bytesReceived === 0) {
|
|
2505
|
+
microphoneFailed = "inbound";
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
});
|
|
2509
|
+
return microphoneFailed;
|
|
2510
|
+
});
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2514
2513
|
const EVENTS = {
|
|
2515
2514
|
CLIENT_CONNECTION_STATUS_CHANGED: "client_connection_status_changed",
|
|
2516
2515
|
STREAM_ADDED: "stream_added",
|
|
@@ -2548,15 +2547,12 @@ const STREAM_TYPES = {
|
|
|
2548
2547
|
screenshare: "screenshare",
|
|
2549
2548
|
};
|
|
2550
2549
|
|
|
2551
|
-
var _a$
|
|
2552
|
-
const adapter$
|
|
2550
|
+
var _a$2, _b$1;
|
|
2551
|
+
const adapter$2 = (_a$2 = adapterRaw.default) !== null && _a$2 !== void 0 ? _a$2 : adapterRaw;
|
|
2553
2552
|
const logger$6 = new Logger();
|
|
2554
2553
|
const ICE_PUBLIC_IP_GATHERING_TIMEOUT = 3 * 1000;
|
|
2555
|
-
const browserName$1 = (_b$1 = adapter$
|
|
2556
|
-
const browserVersion = adapter$
|
|
2557
|
-
if (browserName$1 === "firefox" && adapter$3.browserShim && "shimGetDisplayMedia" in adapter$3.browserShim) {
|
|
2558
|
-
(_c = adapter$3.browserShim) === null || _c === void 0 ? void 0 : _c.shimGetDisplayMedia(window, "screen");
|
|
2559
|
-
}
|
|
2554
|
+
const browserName$1 = (_b$1 = adapter$2.browserDetails) === null || _b$1 === void 0 ? void 0 : _b$1.browser;
|
|
2555
|
+
const browserVersion = adapter$2.browserDetails.version;
|
|
2560
2556
|
let unloading$1 = false;
|
|
2561
2557
|
if (browserName$1 === "chrome") {
|
|
2562
2558
|
window.document.addEventListener("beforeunload", () => {
|
|
@@ -2620,15 +2616,15 @@ class P2pRtcManager {
|
|
|
2620
2616
|
P2PReplaceTrackNewTrackEnded: 0,
|
|
2621
2617
|
P2PReplaceTrackNewTrackNotInStream: 0,
|
|
2622
2618
|
P2PReplaceTrackOldTrackNotFound: 0,
|
|
2623
|
-
P2PReplaceTrackToPCsPendingActionsNull: 0,
|
|
2624
|
-
P2PReplaceTrackReturnedFalse: 0,
|
|
2625
2619
|
P2PReplaceTrackWithoutPC: 0,
|
|
2626
2620
|
P2PReplaceTrackSourceKindNotFound: 0,
|
|
2627
|
-
P2PRemoveStreamNoPC: 0,
|
|
2628
2621
|
P2POnTrackNoStream: 0,
|
|
2629
2622
|
P2PSetCodecPreferenceError: 0,
|
|
2630
2623
|
P2PCreateOfferNoSDP: 0,
|
|
2631
2624
|
P2PCreateAnswerNoSDP: 0,
|
|
2625
|
+
P2PMicNotWorking: 0,
|
|
2626
|
+
P2PLocalNetworkFailed: 0,
|
|
2627
|
+
P2PRelayedIceCandidate: 0,
|
|
2632
2628
|
};
|
|
2633
2629
|
}
|
|
2634
2630
|
numberOfPeerconnections() {
|
|
@@ -2995,7 +2991,12 @@ class P2pRtcManager {
|
|
|
2995
2991
|
if (currentStatus !== newStatus) {
|
|
2996
2992
|
this._maybeRestartIce(clientId, session);
|
|
2997
2993
|
}
|
|
2998
|
-
if (session.relayCandidateSeen
|
|
2994
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
2995
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
2996
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
2997
|
+
from: "iceConnectionStateChange",
|
|
2998
|
+
clientId,
|
|
2999
|
+
});
|
|
2999
3000
|
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3000
3001
|
}
|
|
3001
3002
|
break;
|
|
@@ -3008,10 +3009,26 @@ class P2pRtcManager {
|
|
|
3008
3009
|
var _a;
|
|
3009
3010
|
switch (pc.connectionState) {
|
|
3010
3011
|
case "connected":
|
|
3012
|
+
setTimeout(() => {
|
|
3013
|
+
detectMicrophoneNotWorking(session.pc).then((failureDirection) => {
|
|
3014
|
+
if (failureDirection) {
|
|
3015
|
+
this.analytics.P2PMicNotWorking++;
|
|
3016
|
+
rtcStats.sendEvent("P2PMicNotWorking", { clientId, failureDirection });
|
|
3017
|
+
}
|
|
3018
|
+
});
|
|
3019
|
+
}, 3000);
|
|
3011
3020
|
(_a = session.registerConnected) === null || _a === void 0 ? void 0 : _a.call(session, {});
|
|
3012
3021
|
break;
|
|
3013
3022
|
case "failed":
|
|
3014
3023
|
const newStatus = TYPES.CONNECTION_FAILED;
|
|
3024
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
3025
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
3026
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
3027
|
+
from: "connectionStateChange",
|
|
3028
|
+
clientId,
|
|
3029
|
+
});
|
|
3030
|
+
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3031
|
+
}
|
|
3015
3032
|
this._setConnectionStatus(session, newStatus, clientId);
|
|
3016
3033
|
break;
|
|
3017
3034
|
case "closed":
|
|
@@ -3363,11 +3380,16 @@ class P2pRtcManager {
|
|
|
3363
3380
|
}
|
|
3364
3381
|
};
|
|
3365
3382
|
pc.onicecandidate = (event) => {
|
|
3366
|
-
var _a, _b;
|
|
3367
3383
|
if (event.candidate) {
|
|
3368
|
-
|
|
3384
|
+
if (event.candidate.type === "relayed") {
|
|
3385
|
+
this.analytics.P2PRelayedIceCandidate++;
|
|
3386
|
+
}
|
|
3387
|
+
switch (event.candidate.type) {
|
|
3369
3388
|
case "host":
|
|
3370
|
-
const address =
|
|
3389
|
+
const address = event.candidate.address;
|
|
3390
|
+
if (!address) {
|
|
3391
|
+
break;
|
|
3392
|
+
}
|
|
3371
3393
|
try {
|
|
3372
3394
|
if (ipRegex.v4({ exact: true }).test(address)) {
|
|
3373
3395
|
const ipv4 = checkIp(address);
|
|
@@ -3401,8 +3423,8 @@ class P2pRtcManager {
|
|
|
3401
3423
|
case "srflx":
|
|
3402
3424
|
session.serverReflexiveCandidateSeen = true;
|
|
3403
3425
|
break;
|
|
3404
|
-
case "relay":
|
|
3405
3426
|
case "relayed":
|
|
3427
|
+
case "relay":
|
|
3406
3428
|
session.relayCandidateSeen = true;
|
|
3407
3429
|
break;
|
|
3408
3430
|
}
|
|
@@ -4387,10 +4409,10 @@ function createVegaConnectionManager(config) {
|
|
|
4387
4409
|
return { connect, updateHostList, networkIsUp, networkIsPossiblyDown };
|
|
4388
4410
|
}
|
|
4389
4411
|
|
|
4390
|
-
var _a$
|
|
4391
|
-
const adapter$
|
|
4412
|
+
var _a$1;
|
|
4413
|
+
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
4392
4414
|
const logger$2 = new Logger();
|
|
4393
|
-
const browserName = adapter$
|
|
4415
|
+
const browserName = adapter$1.browserDetails.browser;
|
|
4394
4416
|
let unloading = false;
|
|
4395
4417
|
const RESTARTICE_ERROR_RETRY_THRESHOLD_IN_MS = 3500;
|
|
4396
4418
|
const RESTARTICE_ERROR_MAX_RETRY_COUNT = 5;
|
|
@@ -7001,39 +7023,6 @@ class BandwidthTester extends EventEmitter {
|
|
|
7001
7023
|
}
|
|
7002
7024
|
}
|
|
7003
7025
|
|
|
7004
|
-
var _a$1;
|
|
7005
|
-
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
7006
|
-
function detectMicrophoneNotWorking(pc) {
|
|
7007
|
-
var _a, _b;
|
|
7008
|
-
if (((_a = adapter$1.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
7009
|
-
((_b = adapter$1.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
7010
|
-
pc.signalingState === "closed") {
|
|
7011
|
-
return Promise.resolve(false);
|
|
7012
|
-
}
|
|
7013
|
-
const sendingAudio = pc.getSenders().some((sender) => sender.track && sender.track.kind === "audio");
|
|
7014
|
-
const receivingAudio = pc.getReceivers().some((receiver) => receiver.track && receiver.track.kind === "audio");
|
|
7015
|
-
return pc.getStats(null).then((result) => {
|
|
7016
|
-
let microphoneFailed = false;
|
|
7017
|
-
result.forEach((report) => {
|
|
7018
|
-
if (report.type === "outbound-rtp" &&
|
|
7019
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7020
|
-
sendingAudio) {
|
|
7021
|
-
if (report.bytesSent === 0) {
|
|
7022
|
-
microphoneFailed = "outbound";
|
|
7023
|
-
}
|
|
7024
|
-
}
|
|
7025
|
-
else if (report.type === "inbound-rtp" &&
|
|
7026
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7027
|
-
receivingAudio) {
|
|
7028
|
-
if (report.bytesReceived === 0) {
|
|
7029
|
-
microphoneFailed = "inbound";
|
|
7030
|
-
}
|
|
7031
|
-
}
|
|
7032
|
-
});
|
|
7033
|
-
return microphoneFailed;
|
|
7034
|
-
});
|
|
7035
|
-
}
|
|
7036
|
-
|
|
7037
7026
|
var _a, _b;
|
|
7038
7027
|
const adapter = (_a = adapterRaw.default) !== null && _a !== void 0 ? _a : adapterRaw;
|
|
7039
7028
|
const isSafari = ((_b = adapter.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) === "safari";
|
|
@@ -7433,4 +7422,4 @@ var RtcEventNames;
|
|
|
7433
7422
|
RtcEventNames["stream_added"] = "stream_added";
|
|
7434
7423
|
})(RtcEventNames || (RtcEventNames = {}));
|
|
7435
7424
|
|
|
7436
|
-
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics,
|
|
7425
|
+
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
|
package/dist/legacy-esm.js
CHANGED
|
@@ -2070,29 +2070,6 @@ function cleanSdp(sdp) {
|
|
|
2070
2070
|
catch (_) { }
|
|
2071
2071
|
return sdp;
|
|
2072
2072
|
}
|
|
2073
|
-
function maybeRejectNoH264(sdp) {
|
|
2074
|
-
if (browserName$2 !== "safari") {
|
|
2075
|
-
return sdp;
|
|
2076
|
-
}
|
|
2077
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2078
|
-
for (let i = 1; i < sections.length; i++) {
|
|
2079
|
-
if (SDPUtils.getKind(sections[i]) !== "video") {
|
|
2080
|
-
continue;
|
|
2081
|
-
}
|
|
2082
|
-
const codecs = SDPUtils.matchPrefix(sections[i], "a=rtpmap:")
|
|
2083
|
-
.map((line) => {
|
|
2084
|
-
return SDPUtils.parseRtpMap(line);
|
|
2085
|
-
})
|
|
2086
|
-
.map((codec) => {
|
|
2087
|
-
return codec.name.toUpperCase();
|
|
2088
|
-
});
|
|
2089
|
-
if (codecs.indexOf("H264") === -1 &&
|
|
2090
|
-
sections[i][8] === "9") {
|
|
2091
|
-
sections[i] = sections[i].replace("m=video 9 ", "m=video 0 ");
|
|
2092
|
-
}
|
|
2093
|
-
}
|
|
2094
|
-
return sections.join("");
|
|
2095
|
-
}
|
|
2096
2073
|
function deprioritizeH264(sdp) {
|
|
2097
2074
|
return SDPUtils.splitSections(sdp)
|
|
2098
2075
|
.map((section) => {
|
|
@@ -2117,8 +2094,7 @@ function deprioritizeH264(sdp) {
|
|
|
2117
2094
|
.join("");
|
|
2118
2095
|
}
|
|
2119
2096
|
function filterMidExtension(sdp) {
|
|
2120
|
-
if (browserName$2 !== "
|
|
2121
|
-
(browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60)) {
|
|
2097
|
+
if (browserName$2 !== "firefox" || (browserVersion$1 && browserVersion$1 >= 63) || browserVersion$1 === 60) {
|
|
2122
2098
|
return sdp;
|
|
2123
2099
|
}
|
|
2124
2100
|
return (SDPUtils.splitLines(sdp.trim())
|
|
@@ -2132,23 +2108,13 @@ function filterMidExtension(sdp) {
|
|
|
2132
2108
|
.join("\r\n") + "\r\n");
|
|
2133
2109
|
}
|
|
2134
2110
|
function filterMsidSemantic(sdp) {
|
|
2135
|
-
if (browserName$2 !== "firefox") {
|
|
2111
|
+
if (browserName$2 !== "firefox" && browserVersion$1 < 68) {
|
|
2136
2112
|
return sdp;
|
|
2137
2113
|
}
|
|
2138
2114
|
return (SDPUtils.splitLines(sdp.trim())
|
|
2139
2115
|
.map((line) => (line.startsWith("a=msid-semantic:") ? "a=msid-semantic: WMS *" : line))
|
|
2140
2116
|
.join("\r\n") + "\r\n");
|
|
2141
2117
|
}
|
|
2142
|
-
function changeMediaDirection(sdp, active) {
|
|
2143
|
-
const sections = SDPUtils.splitSections(sdp);
|
|
2144
|
-
return (sections.shift() +
|
|
2145
|
-
sections
|
|
2146
|
-
.map((section) => {
|
|
2147
|
-
const currentDirection = SDPUtils.getDirection(section, SDPUtils.getKind(section));
|
|
2148
|
-
return section.replace("a=" + currentDirection, "a=" + (active ? "recvonly" : "inactive"));
|
|
2149
|
-
})
|
|
2150
|
-
.join(""));
|
|
2151
|
-
}
|
|
2152
2118
|
function addExtMap(sdp, extmapUri, modifyAudio = false, modifyVideo = false) {
|
|
2153
2119
|
var _a, _b;
|
|
2154
2120
|
try {
|
|
@@ -2511,6 +2477,39 @@ class Session {
|
|
|
2511
2477
|
|
|
2512
2478
|
const MEDIA_JITTER_BUFFER_TARGET = 400;
|
|
2513
2479
|
|
|
2480
|
+
var _a$3;
|
|
2481
|
+
const adapter$3 = (_a$3 = adapterRaw.default) !== null && _a$3 !== void 0 ? _a$3 : adapterRaw;
|
|
2482
|
+
function detectMicrophoneNotWorking(pc) {
|
|
2483
|
+
var _a, _b;
|
|
2484
|
+
if (((_a = adapter$3.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
2485
|
+
((_b = adapter$3.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
2486
|
+
pc.signalingState === "closed") {
|
|
2487
|
+
return Promise.resolve("");
|
|
2488
|
+
}
|
|
2489
|
+
const sendingAudio = pc.getSenders().some((sender) => { var _a; return ((_a = sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2490
|
+
const receivingAudio = pc.getReceivers().some((receiver) => { var _a; return ((_a = receiver.track) === null || _a === void 0 ? void 0 : _a.kind) === "audio"; });
|
|
2491
|
+
return pc.getStats(null).then((result) => {
|
|
2492
|
+
let microphoneFailed = "";
|
|
2493
|
+
result.forEach((report) => {
|
|
2494
|
+
if (report.type === "outbound-rtp" &&
|
|
2495
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2496
|
+
sendingAudio) {
|
|
2497
|
+
if (report.bytesSent === 0) {
|
|
2498
|
+
microphoneFailed = "outbound";
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
else if (report.type === "inbound-rtp" &&
|
|
2502
|
+
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
2503
|
+
receivingAudio) {
|
|
2504
|
+
if (report.bytesReceived === 0) {
|
|
2505
|
+
microphoneFailed = "inbound";
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
});
|
|
2509
|
+
return microphoneFailed;
|
|
2510
|
+
});
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2514
2513
|
const EVENTS = {
|
|
2515
2514
|
CLIENT_CONNECTION_STATUS_CHANGED: "client_connection_status_changed",
|
|
2516
2515
|
STREAM_ADDED: "stream_added",
|
|
@@ -2548,15 +2547,12 @@ const STREAM_TYPES = {
|
|
|
2548
2547
|
screenshare: "screenshare",
|
|
2549
2548
|
};
|
|
2550
2549
|
|
|
2551
|
-
var _a$
|
|
2552
|
-
const adapter$
|
|
2550
|
+
var _a$2, _b$1;
|
|
2551
|
+
const adapter$2 = (_a$2 = adapterRaw.default) !== null && _a$2 !== void 0 ? _a$2 : adapterRaw;
|
|
2553
2552
|
const logger$6 = new Logger();
|
|
2554
2553
|
const ICE_PUBLIC_IP_GATHERING_TIMEOUT = 3 * 1000;
|
|
2555
|
-
const browserName$1 = (_b$1 = adapter$
|
|
2556
|
-
const browserVersion = adapter$
|
|
2557
|
-
if (browserName$1 === "firefox" && adapter$3.browserShim && "shimGetDisplayMedia" in adapter$3.browserShim) {
|
|
2558
|
-
(_c = adapter$3.browserShim) === null || _c === void 0 ? void 0 : _c.shimGetDisplayMedia(window, "screen");
|
|
2559
|
-
}
|
|
2554
|
+
const browserName$1 = (_b$1 = adapter$2.browserDetails) === null || _b$1 === void 0 ? void 0 : _b$1.browser;
|
|
2555
|
+
const browserVersion = adapter$2.browserDetails.version;
|
|
2560
2556
|
let unloading$1 = false;
|
|
2561
2557
|
if (browserName$1 === "chrome") {
|
|
2562
2558
|
window.document.addEventListener("beforeunload", () => {
|
|
@@ -2620,15 +2616,15 @@ class P2pRtcManager {
|
|
|
2620
2616
|
P2PReplaceTrackNewTrackEnded: 0,
|
|
2621
2617
|
P2PReplaceTrackNewTrackNotInStream: 0,
|
|
2622
2618
|
P2PReplaceTrackOldTrackNotFound: 0,
|
|
2623
|
-
P2PReplaceTrackToPCsPendingActionsNull: 0,
|
|
2624
|
-
P2PReplaceTrackReturnedFalse: 0,
|
|
2625
2619
|
P2PReplaceTrackWithoutPC: 0,
|
|
2626
2620
|
P2PReplaceTrackSourceKindNotFound: 0,
|
|
2627
|
-
P2PRemoveStreamNoPC: 0,
|
|
2628
2621
|
P2POnTrackNoStream: 0,
|
|
2629
2622
|
P2PSetCodecPreferenceError: 0,
|
|
2630
2623
|
P2PCreateOfferNoSDP: 0,
|
|
2631
2624
|
P2PCreateAnswerNoSDP: 0,
|
|
2625
|
+
P2PMicNotWorking: 0,
|
|
2626
|
+
P2PLocalNetworkFailed: 0,
|
|
2627
|
+
P2PRelayedIceCandidate: 0,
|
|
2632
2628
|
};
|
|
2633
2629
|
}
|
|
2634
2630
|
numberOfPeerconnections() {
|
|
@@ -2995,7 +2991,12 @@ class P2pRtcManager {
|
|
|
2995
2991
|
if (currentStatus !== newStatus) {
|
|
2996
2992
|
this._maybeRestartIce(clientId, session);
|
|
2997
2993
|
}
|
|
2998
|
-
if (session.relayCandidateSeen
|
|
2994
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
2995
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
2996
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
2997
|
+
from: "iceConnectionStateChange",
|
|
2998
|
+
clientId,
|
|
2999
|
+
});
|
|
2999
3000
|
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3000
3001
|
}
|
|
3001
3002
|
break;
|
|
@@ -3008,10 +3009,26 @@ class P2pRtcManager {
|
|
|
3008
3009
|
var _a;
|
|
3009
3010
|
switch (pc.connectionState) {
|
|
3010
3011
|
case "connected":
|
|
3012
|
+
setTimeout(() => {
|
|
3013
|
+
detectMicrophoneNotWorking(session.pc).then((failureDirection) => {
|
|
3014
|
+
if (failureDirection) {
|
|
3015
|
+
this.analytics.P2PMicNotWorking++;
|
|
3016
|
+
rtcStats.sendEvent("P2PMicNotWorking", { clientId, failureDirection });
|
|
3017
|
+
}
|
|
3018
|
+
});
|
|
3019
|
+
}, 3000);
|
|
3011
3020
|
(_a = session.registerConnected) === null || _a === void 0 ? void 0 : _a.call(session, {});
|
|
3012
3021
|
break;
|
|
3013
3022
|
case "failed":
|
|
3014
3023
|
const newStatus = TYPES.CONNECTION_FAILED;
|
|
3024
|
+
if (!session.relayCandidateSeen && !session.wasEverConnected) {
|
|
3025
|
+
this.analytics.P2PLocalNetworkFailed++;
|
|
3026
|
+
rtcStats.sendEvent("P2PLocalNetworkFailed", {
|
|
3027
|
+
from: "connectionStateChange",
|
|
3028
|
+
clientId,
|
|
3029
|
+
});
|
|
3030
|
+
this._emit(rtcManagerEvents.CONNECTION_BLOCKED_BY_NETWORK);
|
|
3031
|
+
}
|
|
3015
3032
|
this._setConnectionStatus(session, newStatus, clientId);
|
|
3016
3033
|
break;
|
|
3017
3034
|
case "closed":
|
|
@@ -3363,11 +3380,16 @@ class P2pRtcManager {
|
|
|
3363
3380
|
}
|
|
3364
3381
|
};
|
|
3365
3382
|
pc.onicecandidate = (event) => {
|
|
3366
|
-
var _a, _b;
|
|
3367
3383
|
if (event.candidate) {
|
|
3368
|
-
|
|
3384
|
+
if (event.candidate.type === "relayed") {
|
|
3385
|
+
this.analytics.P2PRelayedIceCandidate++;
|
|
3386
|
+
}
|
|
3387
|
+
switch (event.candidate.type) {
|
|
3369
3388
|
case "host":
|
|
3370
|
-
const address =
|
|
3389
|
+
const address = event.candidate.address;
|
|
3390
|
+
if (!address) {
|
|
3391
|
+
break;
|
|
3392
|
+
}
|
|
3371
3393
|
try {
|
|
3372
3394
|
if (ipRegex.v4({ exact: true }).test(address)) {
|
|
3373
3395
|
const ipv4 = checkIp(address);
|
|
@@ -3401,8 +3423,8 @@ class P2pRtcManager {
|
|
|
3401
3423
|
case "srflx":
|
|
3402
3424
|
session.serverReflexiveCandidateSeen = true;
|
|
3403
3425
|
break;
|
|
3404
|
-
case "relay":
|
|
3405
3426
|
case "relayed":
|
|
3427
|
+
case "relay":
|
|
3406
3428
|
session.relayCandidateSeen = true;
|
|
3407
3429
|
break;
|
|
3408
3430
|
}
|
|
@@ -4387,10 +4409,10 @@ function createVegaConnectionManager(config) {
|
|
|
4387
4409
|
return { connect, updateHostList, networkIsUp, networkIsPossiblyDown };
|
|
4388
4410
|
}
|
|
4389
4411
|
|
|
4390
|
-
var _a$
|
|
4391
|
-
const adapter$
|
|
4412
|
+
var _a$1;
|
|
4413
|
+
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
4392
4414
|
const logger$2 = new Logger();
|
|
4393
|
-
const browserName = adapter$
|
|
4415
|
+
const browserName = adapter$1.browserDetails.browser;
|
|
4394
4416
|
let unloading = false;
|
|
4395
4417
|
const RESTARTICE_ERROR_RETRY_THRESHOLD_IN_MS = 3500;
|
|
4396
4418
|
const RESTARTICE_ERROR_MAX_RETRY_COUNT = 5;
|
|
@@ -7001,39 +7023,6 @@ class BandwidthTester extends EventEmitter {
|
|
|
7001
7023
|
}
|
|
7002
7024
|
}
|
|
7003
7025
|
|
|
7004
|
-
var _a$1;
|
|
7005
|
-
const adapter$1 = (_a$1 = adapterRaw.default) !== null && _a$1 !== void 0 ? _a$1 : adapterRaw;
|
|
7006
|
-
function detectMicrophoneNotWorking(pc) {
|
|
7007
|
-
var _a, _b;
|
|
7008
|
-
if (((_a = adapter$1.browserDetails) === null || _a === void 0 ? void 0 : _a.browser) !== "chrome" ||
|
|
7009
|
-
((_b = adapter$1.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) < 58 ||
|
|
7010
|
-
pc.signalingState === "closed") {
|
|
7011
|
-
return Promise.resolve(false);
|
|
7012
|
-
}
|
|
7013
|
-
const sendingAudio = pc.getSenders().some((sender) => sender.track && sender.track.kind === "audio");
|
|
7014
|
-
const receivingAudio = pc.getReceivers().some((receiver) => receiver.track && receiver.track.kind === "audio");
|
|
7015
|
-
return pc.getStats(null).then((result) => {
|
|
7016
|
-
let microphoneFailed = false;
|
|
7017
|
-
result.forEach((report) => {
|
|
7018
|
-
if (report.type === "outbound-rtp" &&
|
|
7019
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7020
|
-
sendingAudio) {
|
|
7021
|
-
if (report.bytesSent === 0) {
|
|
7022
|
-
microphoneFailed = "outbound";
|
|
7023
|
-
}
|
|
7024
|
-
}
|
|
7025
|
-
else if (report.type === "inbound-rtp" &&
|
|
7026
|
-
(report.kind === "audio" || report.mediaType === "audio") &&
|
|
7027
|
-
receivingAudio) {
|
|
7028
|
-
if (report.bytesReceived === 0) {
|
|
7029
|
-
microphoneFailed = "inbound";
|
|
7030
|
-
}
|
|
7031
|
-
}
|
|
7032
|
-
});
|
|
7033
|
-
return microphoneFailed;
|
|
7034
|
-
});
|
|
7035
|
-
}
|
|
7036
|
-
|
|
7037
7026
|
var _a, _b;
|
|
7038
7027
|
const adapter = (_a = adapterRaw.default) !== null && _a !== void 0 ? _a : adapterRaw;
|
|
7039
7028
|
const isSafari = ((_b = adapter.browserDetails) === null || _b === void 0 ? void 0 : _b.browser) === "safari";
|
|
@@ -7433,5 +7422,5 @@ var RtcEventNames;
|
|
|
7433
7422
|
RtcEventNames["stream_added"] = "stream_added";
|
|
7434
7423
|
})(RtcEventNames || (RtcEventNames = {}));
|
|
7435
7424
|
|
|
7436
|
-
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics,
|
|
7425
|
+
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
|
|
7437
7426
|
//# sourceMappingURL=legacy-esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whereby.com/media",
|
|
3
3
|
"description": "Media library for Whereby",
|
|
4
|
-
"version": "2.9.
|
|
4
|
+
"version": "2.9.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/whereby/sdk",
|
|
7
7
|
"repository": {
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"typescript": "^5.8.3",
|
|
64
64
|
"@whereby.com/eslint-config": "0.1.0",
|
|
65
65
|
"@whereby.com/jest-config": "0.1.0",
|
|
66
|
-
"@whereby.com/
|
|
66
|
+
"@whereby.com/tsconfig": "0.1.0",
|
|
67
67
|
"@whereby.com/rollup-config": "0.1.1",
|
|
68
|
-
"@whereby.com/
|
|
68
|
+
"@whereby.com/prettier-config": "0.1.0"
|
|
69
69
|
},
|
|
70
70
|
"engines": {
|
|
71
71
|
"node": ">=16.0.0"
|