@whereby.com/media 1.9.0 → 1.10.1
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 +37 -11
- package/dist/index.mjs +37 -11
- package/dist/legacy-esm.js +37 -11
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -134,6 +134,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
|
|
|
134
134
|
cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
|
|
135
135
|
const remote = report.get(currentCptats.remoteCandidateId);
|
|
136
136
|
const local = report.get(currentCptats.localCandidateId);
|
|
137
|
+
cpMetrics.usingTurn = false;
|
|
138
|
+
if (local) {
|
|
139
|
+
if (/relay/i.test(local.candidateType || '')) {
|
|
140
|
+
cpMetrics.usingTurn = true;
|
|
141
|
+
cpMetrics.turnProtocol = local.relayProtocol;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
137
144
|
if (remote && local) {
|
|
138
145
|
cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
|
|
139
146
|
cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
|
|
@@ -175,8 +182,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
175
182
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
176
183
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
177
184
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
178
|
-
|
|
179
|
-
|
|
185
|
+
let headerByteCountDiff = 0;
|
|
186
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
187
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
188
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
189
|
+
}
|
|
180
190
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
181
191
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
182
192
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -194,8 +204,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
194
204
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
195
205
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
196
206
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
197
|
-
|
|
198
|
-
|
|
207
|
+
let headerByteCountDiff = 0;
|
|
208
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
209
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
210
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
211
|
+
}
|
|
199
212
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
200
213
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
201
214
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -444,7 +457,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
444
457
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
445
458
|
pcData.currentSSRCs = {};
|
|
446
459
|
report.forEach((currentRtcStats) => {
|
|
447
|
-
var _a, _b;
|
|
460
|
+
var _a, _b, _c;
|
|
448
461
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
449
462
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
450
463
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -470,6 +483,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
470
483
|
}
|
|
471
484
|
}
|
|
472
485
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
486
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
487
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
488
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
489
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
490
|
+
trackId = client[kind].track.id;
|
|
491
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
492
|
+
}
|
|
473
493
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
474
494
|
if (prevRtcStats) {
|
|
475
495
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -883,6 +903,18 @@ const metrics = [
|
|
|
883
903
|
enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
|
|
884
904
|
value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
|
|
885
905
|
},
|
|
906
|
+
{
|
|
907
|
+
id: "turn-usage",
|
|
908
|
+
global: true,
|
|
909
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
910
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
id: "turn-tls-usage",
|
|
914
|
+
global: true,
|
|
915
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
916
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
|
|
917
|
+
},
|
|
886
918
|
{
|
|
887
919
|
id: "concealment",
|
|
888
920
|
enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
|
|
@@ -3072,9 +3104,6 @@ class Session {
|
|
|
3072
3104
|
return this.pc && this.pc.connectionState === "connected";
|
|
3073
3105
|
}
|
|
3074
3106
|
replaceTrack(oldTrack, newTrack) {
|
|
3075
|
-
if (!newTrack) {
|
|
3076
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
|
|
3077
|
-
}
|
|
3078
3107
|
const pc = this.pc;
|
|
3079
3108
|
if (!pc)
|
|
3080
3109
|
return false;
|
|
@@ -3088,9 +3117,6 @@ class Session {
|
|
|
3088
3117
|
for (let i = 0; i < senders.length; i++) {
|
|
3089
3118
|
const sender = senders[i];
|
|
3090
3119
|
const track = sender.track;
|
|
3091
|
-
if (!track) {
|
|
3092
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
|
|
3093
|
-
}
|
|
3094
3120
|
if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
|
|
3095
3121
|
return Promise.resolve(newTrack);
|
|
3096
3122
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -113,6 +113,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
|
|
|
113
113
|
cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
|
|
114
114
|
const remote = report.get(currentCptats.remoteCandidateId);
|
|
115
115
|
const local = report.get(currentCptats.localCandidateId);
|
|
116
|
+
cpMetrics.usingTurn = false;
|
|
117
|
+
if (local) {
|
|
118
|
+
if (/relay/i.test(local.candidateType || '')) {
|
|
119
|
+
cpMetrics.usingTurn = true;
|
|
120
|
+
cpMetrics.turnProtocol = local.relayProtocol;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
116
123
|
if (remote && local) {
|
|
117
124
|
cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
|
|
118
125
|
cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
|
|
@@ -154,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
154
161
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
155
162
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
156
163
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
157
|
-
|
|
158
|
-
|
|
164
|
+
let headerByteCountDiff = 0;
|
|
165
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
166
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
167
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
168
|
+
}
|
|
159
169
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
160
170
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
161
171
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -173,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
173
183
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
174
184
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
175
185
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
176
|
-
|
|
177
|
-
|
|
186
|
+
let headerByteCountDiff = 0;
|
|
187
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
188
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
189
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
190
|
+
}
|
|
178
191
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
179
192
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
180
193
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -423,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
423
436
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
424
437
|
pcData.currentSSRCs = {};
|
|
425
438
|
report.forEach((currentRtcStats) => {
|
|
426
|
-
var _a, _b;
|
|
439
|
+
var _a, _b, _c;
|
|
427
440
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
428
441
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
429
442
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -449,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
449
462
|
}
|
|
450
463
|
}
|
|
451
464
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
465
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
466
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
467
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
468
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
469
|
+
trackId = client[kind].track.id;
|
|
470
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
471
|
+
}
|
|
452
472
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
453
473
|
if (prevRtcStats) {
|
|
454
474
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -862,6 +882,18 @@ const metrics = [
|
|
|
862
882
|
enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
|
|
863
883
|
value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
|
|
864
884
|
},
|
|
885
|
+
{
|
|
886
|
+
id: "turn-usage",
|
|
887
|
+
global: true,
|
|
888
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
889
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
id: "turn-tls-usage",
|
|
893
|
+
global: true,
|
|
894
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
895
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
|
|
896
|
+
},
|
|
865
897
|
{
|
|
866
898
|
id: "concealment",
|
|
867
899
|
enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
|
|
@@ -3051,9 +3083,6 @@ class Session {
|
|
|
3051
3083
|
return this.pc && this.pc.connectionState === "connected";
|
|
3052
3084
|
}
|
|
3053
3085
|
replaceTrack(oldTrack, newTrack) {
|
|
3054
|
-
if (!newTrack) {
|
|
3055
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
|
|
3056
|
-
}
|
|
3057
3086
|
const pc = this.pc;
|
|
3058
3087
|
if (!pc)
|
|
3059
3088
|
return false;
|
|
@@ -3067,9 +3096,6 @@ class Session {
|
|
|
3067
3096
|
for (let i = 0; i < senders.length; i++) {
|
|
3068
3097
|
const sender = senders[i];
|
|
3069
3098
|
const track = sender.track;
|
|
3070
|
-
if (!track) {
|
|
3071
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
|
|
3072
|
-
}
|
|
3073
3099
|
if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
|
|
3074
3100
|
return Promise.resolve(newTrack);
|
|
3075
3101
|
}
|
package/dist/legacy-esm.js
CHANGED
|
@@ -113,6 +113,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
|
|
|
113
113
|
cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
|
|
114
114
|
const remote = report.get(currentCptats.remoteCandidateId);
|
|
115
115
|
const local = report.get(currentCptats.localCandidateId);
|
|
116
|
+
cpMetrics.usingTurn = false;
|
|
117
|
+
if (local) {
|
|
118
|
+
if (/relay/i.test(local.candidateType || '')) {
|
|
119
|
+
cpMetrics.usingTurn = true;
|
|
120
|
+
cpMetrics.turnProtocol = local.relayProtocol;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
116
123
|
if (remote && local) {
|
|
117
124
|
cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
|
|
118
125
|
cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
|
|
@@ -154,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
154
161
|
ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
|
|
155
162
|
const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
|
|
156
163
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
157
|
-
|
|
158
|
-
|
|
164
|
+
let headerByteCountDiff = 0;
|
|
165
|
+
if (currentSsrcStats.headerBytesReceived) {
|
|
166
|
+
headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
|
|
167
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
168
|
+
}
|
|
159
169
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
160
170
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
161
171
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -173,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
|
|
|
173
183
|
ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
|
|
174
184
|
const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
|
|
175
185
|
ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
|
|
176
|
-
|
|
177
|
-
|
|
186
|
+
let headerByteCountDiff = 0;
|
|
187
|
+
if (currentSsrcStats.headerBytesSent) {
|
|
188
|
+
headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
|
|
189
|
+
ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
|
|
190
|
+
}
|
|
178
191
|
const totalBytesDiff = byteCountDiff + headerByteCountDiff;
|
|
179
192
|
ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
|
|
180
193
|
ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
|
|
@@ -423,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
423
436
|
pcData.previousSSRCs = pcData.currentSSRCs || {};
|
|
424
437
|
pcData.currentSSRCs = {};
|
|
425
438
|
report.forEach((currentRtcStats) => {
|
|
426
|
-
var _a, _b;
|
|
439
|
+
var _a, _b, _c;
|
|
427
440
|
if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
|
|
428
441
|
const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
|
|
429
442
|
const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
|
|
@@ -449,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
|
|
|
449
462
|
}
|
|
450
463
|
}
|
|
451
464
|
const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
|
|
465
|
+
if (!currentRtcStats.trackIdentifier &&
|
|
466
|
+
pcData.ssrcToTrackId[ssrc] &&
|
|
467
|
+
((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
|
|
468
|
+
client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
|
|
469
|
+
trackId = client[kind].track.id;
|
|
470
|
+
pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
|
|
471
|
+
}
|
|
452
472
|
pcData.currentSSRCs[ssrc] = client.id;
|
|
453
473
|
if (prevRtcStats) {
|
|
454
474
|
const newTransport = report.get(currentRtcStats.transportId);
|
|
@@ -862,6 +882,18 @@ const metrics = [
|
|
|
862
882
|
enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
|
|
863
883
|
value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
|
|
864
884
|
},
|
|
885
|
+
{
|
|
886
|
+
id: "turn-usage",
|
|
887
|
+
global: true,
|
|
888
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
889
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
id: "turn-tls-usage",
|
|
893
|
+
global: true,
|
|
894
|
+
enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
|
|
895
|
+
value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
|
|
896
|
+
},
|
|
865
897
|
{
|
|
866
898
|
id: "concealment",
|
|
867
899
|
enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
|
|
@@ -3051,9 +3083,6 @@ class Session {
|
|
|
3051
3083
|
return this.pc && this.pc.connectionState === "connected";
|
|
3052
3084
|
}
|
|
3053
3085
|
replaceTrack(oldTrack, newTrack) {
|
|
3054
|
-
if (!newTrack) {
|
|
3055
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
|
|
3056
|
-
}
|
|
3057
3086
|
const pc = this.pc;
|
|
3058
3087
|
if (!pc)
|
|
3059
3088
|
return false;
|
|
@@ -3067,9 +3096,6 @@ class Session {
|
|
|
3067
3096
|
for (let i = 0; i < senders.length; i++) {
|
|
3068
3097
|
const sender = senders[i];
|
|
3069
3098
|
const track = sender.track;
|
|
3070
|
-
if (!track) {
|
|
3071
|
-
rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
|
|
3072
|
-
}
|
|
3073
3099
|
if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
|
|
3074
3100
|
return Promise.resolve(newTrack);
|
|
3075
3101
|
}
|