@whereby.com/media 9.3.1 → 9.5.0
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 +17 -6
- package/dist/index.d.cts +20 -4
- package/dist/index.d.mts +20 -4
- package/dist/index.d.ts +20 -4
- package/dist/index.mjs +17 -6
- package/dist/legacy-esm.js +17 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1457,6 +1457,8 @@ function captureVideoSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats, t
|
|
|
1457
1457
|
ssrcMetrics.fps = (frameCountDiff * 1000) / timeDiff;
|
|
1458
1458
|
const freezeCountDiff = (currentSsrcStats.freezeCount || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.freezeCount) || 0);
|
|
1459
1459
|
ssrcMetrics.freezeRate = (freezeCountDiff * 1000) / timeDiff;
|
|
1460
|
+
const freezeDurationDiff = (currentSsrcStats.totalFreezesDuration || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.totalFreezesDuration) || 0);
|
|
1461
|
+
ssrcMetrics.freezeFraction = (freezeDurationDiff * 1000) / timeDiff;
|
|
1460
1462
|
}
|
|
1461
1463
|
else {
|
|
1462
1464
|
const kfCountDiff = currentSsrcStats.keyFramesEncoded - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.keyFramesEncoded) || 0);
|
|
@@ -6052,6 +6054,7 @@ const createQualityDetector = (type) => {
|
|
|
6052
6054
|
const maxSideReceived = Math.max(ssrc0.width || 0, ssrc0.height || 0);
|
|
6053
6055
|
const fpsReceived = ssrc0.fps || 0;
|
|
6054
6056
|
const hadFreeze = !!ssrc0.freezeRate;
|
|
6057
|
+
const freezeFraction = ssrc0.freezeFraction || 0;
|
|
6055
6058
|
const bitrate = ssrc0.bitrate || 0;
|
|
6056
6059
|
if (maxSideRendered < 100) {
|
|
6057
6060
|
if (type === "warning" && maxSideReceived < 160)
|
|
@@ -6076,8 +6079,12 @@ const createQualityDetector = (type) => {
|
|
|
6076
6079
|
return true;
|
|
6077
6080
|
if (type === "critical" && fpsReceived < 9)
|
|
6078
6081
|
return true;
|
|
6079
|
-
if (hadFreeze)
|
|
6080
|
-
|
|
6082
|
+
if (hadFreeze) {
|
|
6083
|
+
if (type === "warning" && freezeFraction > 0.3)
|
|
6084
|
+
return true;
|
|
6085
|
+
if (type === "critical" && freezeFraction > 0.6)
|
|
6086
|
+
return true;
|
|
6087
|
+
}
|
|
6081
6088
|
if (type === "warning" && bitrate < 50000)
|
|
6082
6089
|
return true;
|
|
6083
6090
|
if (type === "critical" && bitrate < 20000)
|
|
@@ -6096,8 +6103,12 @@ const createQualityDetector = (type) => {
|
|
|
6096
6103
|
return true;
|
|
6097
6104
|
if (type === "critical" && bitrate < 50000)
|
|
6098
6105
|
return true;
|
|
6099
|
-
if (hadFreeze)
|
|
6100
|
-
|
|
6106
|
+
if (hadFreeze) {
|
|
6107
|
+
if (type === "warning" && freezeFraction > 0.2)
|
|
6108
|
+
return true;
|
|
6109
|
+
if (type === "critical" && freezeFraction > 0.4)
|
|
6110
|
+
return true;
|
|
6111
|
+
}
|
|
6101
6112
|
}
|
|
6102
6113
|
}
|
|
6103
6114
|
}
|
|
@@ -6108,9 +6119,9 @@ const createQualityDetector = (type) => {
|
|
|
6108
6119
|
const deceleration = ssrc0.audioDeceleration || 0;
|
|
6109
6120
|
const audioDistortion = concealment + acceleration + deceleration;
|
|
6110
6121
|
if (audioLevel >= 0.01) {
|
|
6111
|
-
if (type === "warning" && audioDistortion > 0.
|
|
6122
|
+
if (type === "warning" && audioDistortion > 0.15)
|
|
6112
6123
|
return true;
|
|
6113
|
-
if (type === "critical" && audioDistortion > 0.
|
|
6124
|
+
if (type === "critical" && audioDistortion > 0.3)
|
|
6114
6125
|
return true;
|
|
6115
6126
|
}
|
|
6116
6127
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -100,6 +100,7 @@ interface SsrcStats {
|
|
|
100
100
|
sourceWidth?: number;
|
|
101
101
|
sourceFps?: number;
|
|
102
102
|
freezeRate?: number;
|
|
103
|
+
freezeFraction?: number;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
interface IssueDetector {
|
|
@@ -911,16 +912,31 @@ interface ClientKickedEvent {
|
|
|
911
912
|
interface KnockerLeftEvent {
|
|
912
913
|
clientId: string;
|
|
913
914
|
}
|
|
915
|
+
interface KnockResponseSender {
|
|
916
|
+
displayName?: string | null;
|
|
917
|
+
avatarUrl?: string | null;
|
|
918
|
+
}
|
|
919
|
+
interface KnockResponse {
|
|
920
|
+
message?: string;
|
|
921
|
+
sender?: KnockResponseSender;
|
|
922
|
+
}
|
|
914
923
|
interface KnockAcceptedEvent {
|
|
915
924
|
clientId: string;
|
|
925
|
+
knockResponse?: KnockResponse;
|
|
916
926
|
metadata: {
|
|
917
927
|
roomKey: string;
|
|
918
928
|
roomName: string;
|
|
919
929
|
};
|
|
920
930
|
resolution: "accepted";
|
|
921
931
|
}
|
|
932
|
+
interface KnockOnHoldEvent {
|
|
933
|
+
clientId: string;
|
|
934
|
+
knockResponse?: KnockResponse;
|
|
935
|
+
resolution: "on_hold";
|
|
936
|
+
}
|
|
922
937
|
interface KnockRejectedEvent {
|
|
923
938
|
clientId: string;
|
|
939
|
+
knockResponse?: KnockResponse;
|
|
924
940
|
resolution: "rejected";
|
|
925
941
|
}
|
|
926
942
|
interface BreakoutConfig {
|
|
@@ -1141,7 +1157,7 @@ interface SignalEvents {
|
|
|
1141
1157
|
connect_error: void;
|
|
1142
1158
|
device_identified: void;
|
|
1143
1159
|
disconnect: void;
|
|
1144
|
-
knock_handled: KnockAcceptedEvent | KnockRejectedEvent;
|
|
1160
|
+
knock_handled: KnockAcceptedEvent | KnockOnHoldEvent | KnockRejectedEvent;
|
|
1145
1161
|
knocker_left: KnockerLeftEvent;
|
|
1146
1162
|
new_client: NewClientEvent;
|
|
1147
1163
|
room_joined: RoomJoinedEvent;
|
|
@@ -1221,9 +1237,9 @@ interface SignalRequests {
|
|
|
1221
1237
|
enabled: boolean;
|
|
1222
1238
|
};
|
|
1223
1239
|
handle_knock: {
|
|
1224
|
-
action: "accept" | "reject";
|
|
1240
|
+
action: "accept" | "hold" | "reject";
|
|
1225
1241
|
clientId: string;
|
|
1226
|
-
|
|
1242
|
+
knockResponse: KnockResponse;
|
|
1227
1243
|
};
|
|
1228
1244
|
identify_device: IdentifyDeviceRequest;
|
|
1229
1245
|
join_breakout_group: {
|
|
@@ -2110,4 +2126,4 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
2110
2126
|
}
|
|
2111
2127
|
|
|
2112
2128
|
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, FILE_SHARE_ERROR_CODES, 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, isFileShareError, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, updateRenderedDimensions, variance };
|
|
2113
|
-
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
|
2129
|
+
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockOnHoldEvent, KnockRejectedEvent, KnockResponse, KnockResponseSender, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.d.mts
CHANGED
|
@@ -100,6 +100,7 @@ interface SsrcStats {
|
|
|
100
100
|
sourceWidth?: number;
|
|
101
101
|
sourceFps?: number;
|
|
102
102
|
freezeRate?: number;
|
|
103
|
+
freezeFraction?: number;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
interface IssueDetector {
|
|
@@ -911,16 +912,31 @@ interface ClientKickedEvent {
|
|
|
911
912
|
interface KnockerLeftEvent {
|
|
912
913
|
clientId: string;
|
|
913
914
|
}
|
|
915
|
+
interface KnockResponseSender {
|
|
916
|
+
displayName?: string | null;
|
|
917
|
+
avatarUrl?: string | null;
|
|
918
|
+
}
|
|
919
|
+
interface KnockResponse {
|
|
920
|
+
message?: string;
|
|
921
|
+
sender?: KnockResponseSender;
|
|
922
|
+
}
|
|
914
923
|
interface KnockAcceptedEvent {
|
|
915
924
|
clientId: string;
|
|
925
|
+
knockResponse?: KnockResponse;
|
|
916
926
|
metadata: {
|
|
917
927
|
roomKey: string;
|
|
918
928
|
roomName: string;
|
|
919
929
|
};
|
|
920
930
|
resolution: "accepted";
|
|
921
931
|
}
|
|
932
|
+
interface KnockOnHoldEvent {
|
|
933
|
+
clientId: string;
|
|
934
|
+
knockResponse?: KnockResponse;
|
|
935
|
+
resolution: "on_hold";
|
|
936
|
+
}
|
|
922
937
|
interface KnockRejectedEvent {
|
|
923
938
|
clientId: string;
|
|
939
|
+
knockResponse?: KnockResponse;
|
|
924
940
|
resolution: "rejected";
|
|
925
941
|
}
|
|
926
942
|
interface BreakoutConfig {
|
|
@@ -1141,7 +1157,7 @@ interface SignalEvents {
|
|
|
1141
1157
|
connect_error: void;
|
|
1142
1158
|
device_identified: void;
|
|
1143
1159
|
disconnect: void;
|
|
1144
|
-
knock_handled: KnockAcceptedEvent | KnockRejectedEvent;
|
|
1160
|
+
knock_handled: KnockAcceptedEvent | KnockOnHoldEvent | KnockRejectedEvent;
|
|
1145
1161
|
knocker_left: KnockerLeftEvent;
|
|
1146
1162
|
new_client: NewClientEvent;
|
|
1147
1163
|
room_joined: RoomJoinedEvent;
|
|
@@ -1221,9 +1237,9 @@ interface SignalRequests {
|
|
|
1221
1237
|
enabled: boolean;
|
|
1222
1238
|
};
|
|
1223
1239
|
handle_knock: {
|
|
1224
|
-
action: "accept" | "reject";
|
|
1240
|
+
action: "accept" | "hold" | "reject";
|
|
1225
1241
|
clientId: string;
|
|
1226
|
-
|
|
1242
|
+
knockResponse: KnockResponse;
|
|
1227
1243
|
};
|
|
1228
1244
|
identify_device: IdentifyDeviceRequest;
|
|
1229
1245
|
join_breakout_group: {
|
|
@@ -2110,4 +2126,4 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
2110
2126
|
}
|
|
2111
2127
|
|
|
2112
2128
|
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, FILE_SHARE_ERROR_CODES, 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, isFileShareError, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, updateRenderedDimensions, variance };
|
|
2113
|
-
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
|
2129
|
+
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockOnHoldEvent, KnockRejectedEvent, KnockResponse, KnockResponseSender, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -100,6 +100,7 @@ interface SsrcStats {
|
|
|
100
100
|
sourceWidth?: number;
|
|
101
101
|
sourceFps?: number;
|
|
102
102
|
freezeRate?: number;
|
|
103
|
+
freezeFraction?: number;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
interface IssueDetector {
|
|
@@ -911,16 +912,31 @@ interface ClientKickedEvent {
|
|
|
911
912
|
interface KnockerLeftEvent {
|
|
912
913
|
clientId: string;
|
|
913
914
|
}
|
|
915
|
+
interface KnockResponseSender {
|
|
916
|
+
displayName?: string | null;
|
|
917
|
+
avatarUrl?: string | null;
|
|
918
|
+
}
|
|
919
|
+
interface KnockResponse {
|
|
920
|
+
message?: string;
|
|
921
|
+
sender?: KnockResponseSender;
|
|
922
|
+
}
|
|
914
923
|
interface KnockAcceptedEvent {
|
|
915
924
|
clientId: string;
|
|
925
|
+
knockResponse?: KnockResponse;
|
|
916
926
|
metadata: {
|
|
917
927
|
roomKey: string;
|
|
918
928
|
roomName: string;
|
|
919
929
|
};
|
|
920
930
|
resolution: "accepted";
|
|
921
931
|
}
|
|
932
|
+
interface KnockOnHoldEvent {
|
|
933
|
+
clientId: string;
|
|
934
|
+
knockResponse?: KnockResponse;
|
|
935
|
+
resolution: "on_hold";
|
|
936
|
+
}
|
|
922
937
|
interface KnockRejectedEvent {
|
|
923
938
|
clientId: string;
|
|
939
|
+
knockResponse?: KnockResponse;
|
|
924
940
|
resolution: "rejected";
|
|
925
941
|
}
|
|
926
942
|
interface BreakoutConfig {
|
|
@@ -1141,7 +1157,7 @@ interface SignalEvents {
|
|
|
1141
1157
|
connect_error: void;
|
|
1142
1158
|
device_identified: void;
|
|
1143
1159
|
disconnect: void;
|
|
1144
|
-
knock_handled: KnockAcceptedEvent | KnockRejectedEvent;
|
|
1160
|
+
knock_handled: KnockAcceptedEvent | KnockOnHoldEvent | KnockRejectedEvent;
|
|
1145
1161
|
knocker_left: KnockerLeftEvent;
|
|
1146
1162
|
new_client: NewClientEvent;
|
|
1147
1163
|
room_joined: RoomJoinedEvent;
|
|
@@ -1221,9 +1237,9 @@ interface SignalRequests {
|
|
|
1221
1237
|
enabled: boolean;
|
|
1222
1238
|
};
|
|
1223
1239
|
handle_knock: {
|
|
1224
|
-
action: "accept" | "reject";
|
|
1240
|
+
action: "accept" | "hold" | "reject";
|
|
1225
1241
|
clientId: string;
|
|
1226
|
-
|
|
1242
|
+
knockResponse: KnockResponse;
|
|
1227
1243
|
};
|
|
1228
1244
|
identify_device: IdentifyDeviceRequest;
|
|
1229
1245
|
join_breakout_group: {
|
|
@@ -2110,4 +2126,4 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
2110
2126
|
}
|
|
2111
2127
|
|
|
2112
2128
|
export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, FILE_SHARE_ERROR_CODES, 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, isFileShareError, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, updateRenderedDimensions, variance };
|
|
2113
|
-
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
|
2129
|
+
export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatFileShare, ChatMessage, ChatMessageError, ChatMessageRemoved, ChatMessageRequest, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, ConnectionStatus, Credentials, FileShareErrorCode, FileUploadUrl, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, GetUserMediaAttempt, GetUserMediaAttemptOutcome, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockOnHoldEvent, KnockRejectedEvent, KnockResponse, KnockResponseSender, KnockRoomRequest, KnockerLeftEvent, LiveCaptionEvent, LiveCaptionsStartedEvent, LiveCaptionsStoppedEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, MediaPrefs, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaConnectionOptions, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
|
package/dist/index.mjs
CHANGED
|
@@ -1437,6 +1437,8 @@ function captureVideoSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats, t
|
|
|
1437
1437
|
ssrcMetrics.fps = (frameCountDiff * 1000) / timeDiff;
|
|
1438
1438
|
const freezeCountDiff = (currentSsrcStats.freezeCount || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.freezeCount) || 0);
|
|
1439
1439
|
ssrcMetrics.freezeRate = (freezeCountDiff * 1000) / timeDiff;
|
|
1440
|
+
const freezeDurationDiff = (currentSsrcStats.totalFreezesDuration || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.totalFreezesDuration) || 0);
|
|
1441
|
+
ssrcMetrics.freezeFraction = (freezeDurationDiff * 1000) / timeDiff;
|
|
1440
1442
|
}
|
|
1441
1443
|
else {
|
|
1442
1444
|
const kfCountDiff = currentSsrcStats.keyFramesEncoded - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.keyFramesEncoded) || 0);
|
|
@@ -6032,6 +6034,7 @@ const createQualityDetector = (type) => {
|
|
|
6032
6034
|
const maxSideReceived = Math.max(ssrc0.width || 0, ssrc0.height || 0);
|
|
6033
6035
|
const fpsReceived = ssrc0.fps || 0;
|
|
6034
6036
|
const hadFreeze = !!ssrc0.freezeRate;
|
|
6037
|
+
const freezeFraction = ssrc0.freezeFraction || 0;
|
|
6035
6038
|
const bitrate = ssrc0.bitrate || 0;
|
|
6036
6039
|
if (maxSideRendered < 100) {
|
|
6037
6040
|
if (type === "warning" && maxSideReceived < 160)
|
|
@@ -6056,8 +6059,12 @@ const createQualityDetector = (type) => {
|
|
|
6056
6059
|
return true;
|
|
6057
6060
|
if (type === "critical" && fpsReceived < 9)
|
|
6058
6061
|
return true;
|
|
6059
|
-
if (hadFreeze)
|
|
6060
|
-
|
|
6062
|
+
if (hadFreeze) {
|
|
6063
|
+
if (type === "warning" && freezeFraction > 0.3)
|
|
6064
|
+
return true;
|
|
6065
|
+
if (type === "critical" && freezeFraction > 0.6)
|
|
6066
|
+
return true;
|
|
6067
|
+
}
|
|
6061
6068
|
if (type === "warning" && bitrate < 50000)
|
|
6062
6069
|
return true;
|
|
6063
6070
|
if (type === "critical" && bitrate < 20000)
|
|
@@ -6076,8 +6083,12 @@ const createQualityDetector = (type) => {
|
|
|
6076
6083
|
return true;
|
|
6077
6084
|
if (type === "critical" && bitrate < 50000)
|
|
6078
6085
|
return true;
|
|
6079
|
-
if (hadFreeze)
|
|
6080
|
-
|
|
6086
|
+
if (hadFreeze) {
|
|
6087
|
+
if (type === "warning" && freezeFraction > 0.2)
|
|
6088
|
+
return true;
|
|
6089
|
+
if (type === "critical" && freezeFraction > 0.4)
|
|
6090
|
+
return true;
|
|
6091
|
+
}
|
|
6081
6092
|
}
|
|
6082
6093
|
}
|
|
6083
6094
|
}
|
|
@@ -6088,9 +6099,9 @@ const createQualityDetector = (type) => {
|
|
|
6088
6099
|
const deceleration = ssrc0.audioDeceleration || 0;
|
|
6089
6100
|
const audioDistortion = concealment + acceleration + deceleration;
|
|
6090
6101
|
if (audioLevel >= 0.01) {
|
|
6091
|
-
if (type === "warning" && audioDistortion > 0.
|
|
6102
|
+
if (type === "warning" && audioDistortion > 0.15)
|
|
6092
6103
|
return true;
|
|
6093
|
-
if (type === "critical" && audioDistortion > 0.
|
|
6104
|
+
if (type === "critical" && audioDistortion > 0.3)
|
|
6094
6105
|
return true;
|
|
6095
6106
|
}
|
|
6096
6107
|
}
|
package/dist/legacy-esm.js
CHANGED
|
@@ -1437,6 +1437,8 @@ function captureVideoSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats, t
|
|
|
1437
1437
|
ssrcMetrics.fps = (frameCountDiff * 1000) / timeDiff;
|
|
1438
1438
|
const freezeCountDiff = (currentSsrcStats.freezeCount || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.freezeCount) || 0);
|
|
1439
1439
|
ssrcMetrics.freezeRate = (freezeCountDiff * 1000) / timeDiff;
|
|
1440
|
+
const freezeDurationDiff = (currentSsrcStats.totalFreezesDuration || 0) - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.totalFreezesDuration) || 0);
|
|
1441
|
+
ssrcMetrics.freezeFraction = (freezeDurationDiff * 1000) / timeDiff;
|
|
1440
1442
|
}
|
|
1441
1443
|
else {
|
|
1442
1444
|
const kfCountDiff = currentSsrcStats.keyFramesEncoded - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.keyFramesEncoded) || 0);
|
|
@@ -6032,6 +6034,7 @@ const createQualityDetector = (type) => {
|
|
|
6032
6034
|
const maxSideReceived = Math.max(ssrc0.width || 0, ssrc0.height || 0);
|
|
6033
6035
|
const fpsReceived = ssrc0.fps || 0;
|
|
6034
6036
|
const hadFreeze = !!ssrc0.freezeRate;
|
|
6037
|
+
const freezeFraction = ssrc0.freezeFraction || 0;
|
|
6035
6038
|
const bitrate = ssrc0.bitrate || 0;
|
|
6036
6039
|
if (maxSideRendered < 100) {
|
|
6037
6040
|
if (type === "warning" && maxSideReceived < 160)
|
|
@@ -6056,8 +6059,12 @@ const createQualityDetector = (type) => {
|
|
|
6056
6059
|
return true;
|
|
6057
6060
|
if (type === "critical" && fpsReceived < 9)
|
|
6058
6061
|
return true;
|
|
6059
|
-
if (hadFreeze)
|
|
6060
|
-
|
|
6062
|
+
if (hadFreeze) {
|
|
6063
|
+
if (type === "warning" && freezeFraction > 0.3)
|
|
6064
|
+
return true;
|
|
6065
|
+
if (type === "critical" && freezeFraction > 0.6)
|
|
6066
|
+
return true;
|
|
6067
|
+
}
|
|
6061
6068
|
if (type === "warning" && bitrate < 50000)
|
|
6062
6069
|
return true;
|
|
6063
6070
|
if (type === "critical" && bitrate < 20000)
|
|
@@ -6076,8 +6083,12 @@ const createQualityDetector = (type) => {
|
|
|
6076
6083
|
return true;
|
|
6077
6084
|
if (type === "critical" && bitrate < 50000)
|
|
6078
6085
|
return true;
|
|
6079
|
-
if (hadFreeze)
|
|
6080
|
-
|
|
6086
|
+
if (hadFreeze) {
|
|
6087
|
+
if (type === "warning" && freezeFraction > 0.2)
|
|
6088
|
+
return true;
|
|
6089
|
+
if (type === "critical" && freezeFraction > 0.4)
|
|
6090
|
+
return true;
|
|
6091
|
+
}
|
|
6081
6092
|
}
|
|
6082
6093
|
}
|
|
6083
6094
|
}
|
|
@@ -6088,9 +6099,9 @@ const createQualityDetector = (type) => {
|
|
|
6088
6099
|
const deceleration = ssrc0.audioDeceleration || 0;
|
|
6089
6100
|
const audioDistortion = concealment + acceleration + deceleration;
|
|
6090
6101
|
if (audioLevel >= 0.01) {
|
|
6091
|
-
if (type === "warning" && audioDistortion > 0.
|
|
6102
|
+
if (type === "warning" && audioDistortion > 0.15)
|
|
6092
6103
|
return true;
|
|
6093
|
-
if (type === "critical" && audioDistortion > 0.
|
|
6104
|
+
if (type === "critical" && audioDistortion > 0.3)
|
|
6094
6105
|
return true;
|
|
6095
6106
|
}
|
|
6096
6107
|
}
|