@@ -13,6 +13,18 @@ import {
13
13
Logger ,
14
14
} from './types' ;
15
15
import PeriodicWebRTCStatsReporter from './parser/PeriodicWebRTCStatsReporter' ;
16
+ import DefaultNetworkScoresCalculator from './NetworkScoresCalculator' ;
17
+ import {
18
+ AvailableOutgoingBitrateIssueDetector ,
19
+ FramesDroppedIssueDetector ,
20
+ FramesEncodedSentIssueDetector ,
21
+ InboundNetworkIssueDetector ,
22
+ NetworkMediaSyncIssueDetector ,
23
+ OutboundNetworkIssueDetector ,
24
+ QualityLimitationsIssueDetector , VideoCodecMismatchDetector ,
25
+ } from './detectors' ;
26
+ import { CompositeRTCStatsParser , RTCStatsParser } from './parser' ;
27
+ import createLogger from './utils/logger' ;
16
28
17
29
class WebRTCIssueDetector {
18
30
readonly eventEmitter : WebRTCIssueEmitter ;
@@ -30,7 +42,8 @@ class WebRTCIssueDetector {
30
42
private readonly logger : Logger ;
31
43
32
44
constructor ( params : WebRTCIssueDetectorConstructorParams ) {
33
- this . eventEmitter = params . issueEmitter ;
45
+ this . logger = params . logger ?? createLogger ( ) ;
46
+ this . eventEmitter = params . issueEmitter ?? new WebRTCIssueEmitter ( ) ;
34
47
35
48
if ( params . onIssues ) {
36
49
this . eventEmitter . on ( EventType . Issue , params . onIssues ) ;
@@ -40,11 +53,25 @@ class WebRTCIssueDetector {
40
53
this . eventEmitter . on ( EventType . NetworkScoresUpdated , params . onNetworkScoresUpdated ) ;
41
54
}
42
55
43
- this . networkScoresCalculator = params . networkScoresCalculator ;
44
- this . detectors = params . detectors ;
45
- this . compositeStatsParser = params . compositeStatsParser ;
46
- this . statsReporter = params . statsReporter ;
47
- this . logger = params . logger ;
56
+ this . detectors = params . detectors ?? [
57
+ new QualityLimitationsIssueDetector ( ) ,
58
+ new FramesDroppedIssueDetector ( ) ,
59
+ new FramesEncodedSentIssueDetector ( ) ,
60
+ new InboundNetworkIssueDetector ( ) ,
61
+ new OutboundNetworkIssueDetector ( ) ,
62
+ new NetworkMediaSyncIssueDetector ( ) ,
63
+ new AvailableOutgoingBitrateIssueDetector ( ) ,
64
+ new VideoCodecMismatchDetector ( ) ,
65
+ ] ;
66
+
67
+ this . networkScoresCalculator = params . networkScoresCalculator ?? new DefaultNetworkScoresCalculator ( ) ;
68
+ this . compositeStatsParser = params . compositeStatsParser ?? new CompositeRTCStatsParser ( {
69
+ statsParser : new RTCStatsParser ( { logger : this . logger } ) ,
70
+ } ) ;
71
+ this . statsReporter = params . statsReporter ?? new PeriodicWebRTCStatsReporter ( {
72
+ compositeStatsParser : this . compositeStatsParser ,
73
+ getStatsInterval : params . getStatsInterval ?? 5000 ,
74
+ } ) ;
48
75
49
76
( window as unknown as WIDWindow ) . wid = this ;
50
77
this . wrapRTCPeerConnection ( ) ;
0 commit comments