UNPKG

@observertc/client-monitor-js

Version:

ObserveRTC Client Integration Javascript Library

124 lines (123 loc) 4.11 kB
import { Logger } from "./utils/logger"; export type AppliedClientMonitorConfig<AppData extends Record<string, unknown> = Record<string, unknown>> = { clientId?: string; callId?: string; bufferingEventsForSamples?: boolean; collectingPeriodInMs: number; samplingPeriodInMs?: number; integrateNavigatorMediaDevices: boolean | MediaDevices; addClientJointEventOnCreated?: boolean; addClientLeftEventOnClose?: boolean; videoFreezesDetector: Record<string, never> | null; dryInboundTrackDetector: { thresholdInMs: number; } | null; dryOutboundTrackDetector: { thresholdInMs: number; } | null; playoutDiscrepancyDetector: { lowSkewThreshold: number; highSkewThreshold: number; } | null; syntheticSamplesDetector: { createEvent?: boolean; minSynthesizedSamplesDuration: number; } | null; audioDesyncDetector: { fractionalCorrectionAlertOnThreshold: number; fractionalCorrectionAlertOffThreshold: number; } | null; congestionDetector: { sensitivity: 'low' | 'medium' | 'high'; } | null; cpuPerformanceDetector: { incomingDecodedFramesRatioThresholds: { alertOn: number; alertOff: number; minReceivedFrames: number; }; durationOfCollectingStatsThreshold: { lowWatermark: number; highWatermark: number; }; encoderCpuLimitationShareThreshold?: number; encodeTimeBudgetRatio?: number; } | null; audioConcealmentDetector: { onThreshold: number; offThreshold: number; windowInMs: number; minSamplesInWindow: number; } | null; jitterBufferStressDetector: { targetDelayThresholdInMs: number; timeStretchThreshold: number; minConsecutiveTicks: number; } | null; decoderPerformanceDetector: { decodeTimeBudgetRatio: number; dropRatioThreshold: number; minFramesReceived: number; quietLossThreshold: number; minConsecutiveTicks: number; } | null; videoRecoveryDetector: { windowInMs: number; pliRateAlertOn: number; pliRateAlertOff: number; recoveryFailedThresholdInMs: number; recoveryFailedMinPliCount: number; } | null; sourceEncoderBottleneckDetector: { captureFpsRatioThreshold: number; minSourceFps: number; encodeFpsRatioThreshold: number; encodeTimeBudgetRatio: number; cpuLimitationShareThreshold: number; minConsecutiveTicks: number; } | null; simulcastLayerDetector: { createEvent?: boolean; } | null; captureFailureDetector: { silenceThresholdInMs: number; silenceRmsThreshold: number; createEvent?: boolean; } | null; codecChangeDetector: { createEvent?: boolean; } | null; videoResolutionChangeDetector: { createEvent?: boolean; } | null; stuckDecoderDetector: { thresholdInMs: number; rttMultiplier: number; minStuckTicks: number; minBitrate: number; minPliCount: number; } | null; statsGapDetector: { gapRatioThreshold: number; minGapInMs: number; createEvent?: boolean; } | null; longPcConnectionEstablishmentDetector: { createEvent?: boolean; thresholdInMs: number; } | null; iceConnectivityDetector: { disconnectedThresholdInMs: number; transportStallThresholdInMs: number; createEvent?: boolean; pathSwitchWindowInMs: number; pathSwitchThreshold: number; iceRestartRecommendationThresholdInMs: number; iceRestartRecommendationCooldownInMs: number; } | null; appData: AppData; }; export type ClientMonitorConfig<AppData extends Record<string, unknown> = Record<string, unknown>> = Partial<AppliedClientMonitorConfig<AppData>> & { logger?: Logger; }; export type ClientMonitorSourceType = 'mediasoup-device' | 'RTCPeerConnection' | 'mediasoup-transport';