@webex/plugin-meetings 2.59.8-next.2 → 2.60.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/common/browser-detection.d.ts +9 -0
- package/dist/common/browser-detection.js +2 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.d.ts +48 -0
- package/dist/common/collection.js +2 -2
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.d.ts +2 -0
- package/dist/common/errors/captcha-error.d.ts +15 -0
- package/dist/common/errors/intent-to-join.d.ts +16 -0
- package/dist/common/errors/join-meeting.d.ts +17 -0
- package/dist/common/errors/media.d.ts +15 -0
- package/dist/common/errors/parameter.d.ts +15 -0
- package/dist/common/errors/password-error.d.ts +15 -0
- package/dist/common/errors/permission.d.ts +14 -0
- package/dist/common/errors/reclaim-host-role-error.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-error.js +158 -0
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/common/errors/reconnection.d.ts +15 -0
- package/dist/common/errors/stats.d.ts +15 -0
- package/dist/common/errors/webex-errors.d.ts +81 -0
- package/dist/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/common/events/events-scope.d.ts +17 -0
- package/dist/common/events/events.d.ts +12 -0
- package/dist/common/events/trigger-proxy.d.ts +2 -0
- package/dist/common/events/util.d.ts +2 -0
- package/dist/common/logs/logger-config.d.ts +2 -0
- package/dist/common/logs/logger-proxy.d.ts +2 -0
- package/dist/common/logs/request.d.ts +34 -0
- package/dist/common/queue.d.ts +32 -0
- package/dist/config.d.ts +73 -0
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +952 -0
- package/dist/constants.js +31 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -0
- package/dist/controls-options-manager/enums.d.ts +5 -0
- package/dist/controls-options-manager/index.d.ts +120 -0
- package/dist/controls-options-manager/index.js +2 -2
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -0
- package/dist/index.d.ts +4 -0
- package/dist/locus-info/controlsUtils.d.ts +2 -0
- package/dist/locus-info/controlsUtils.js +6 -6
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/locus-info/fullState.d.ts +2 -0
- package/dist/locus-info/hostUtils.d.ts +2 -0
- package/dist/locus-info/index.d.ts +269 -0
- package/dist/locus-info/index.js +18 -18
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -0
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/locus-info/parser.d.ts +212 -0
- package/dist/locus-info/parser.js +2 -2
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.d.ts +2 -0
- package/dist/media/index.d.ts +32 -0
- package/dist/media/properties.d.ts +108 -0
- package/dist/media/util.d.ts +2 -0
- package/dist/mediaQualityMetrics/config.d.ts +233 -0
- package/dist/meeting/effectsState.d.ts +42 -0
- package/dist/meeting/in-meeting-actions.d.ts +79 -0
- package/dist/meeting/index.d.ts +1622 -0
- package/dist/meeting/index.js +51 -28
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +116 -0
- package/dist/meeting/request.d.ts +255 -0
- package/dist/meeting/request.js +2 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.d.ts +9 -0
- package/dist/meeting/util.d.ts +2 -0
- package/dist/meeting/util.js +4 -4
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.d.ts +20 -0
- package/dist/meeting-info/collection.js +2 -2
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +57 -0
- package/dist/meeting-info/meeting-info-v2.d.ts +93 -0
- package/dist/meeting-info/request.d.ts +22 -0
- package/dist/meeting-info/util.d.ts +2 -0
- package/dist/meeting-info/utilv2.d.ts +2 -0
- package/dist/meetings/collection.d.ts +23 -0
- package/dist/meetings/collection.js +2 -2
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +296 -0
- package/dist/meetings/request.d.ts +27 -0
- package/dist/meetings/util.d.ts +18 -0
- package/dist/member/index.d.ts +148 -0
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/util.d.ts +2 -0
- package/dist/member/util.js +11 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +24 -0
- package/dist/members/index.d.ts +308 -0
- package/dist/members/index.js +39 -2
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +58 -0
- package/dist/members/request.js +19 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.d.ts +25 -0
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.d.ts +2 -0
- package/dist/members/util.js +50 -0
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -0
- package/dist/metrics/constants.d.ts +59 -0
- package/dist/metrics/constants.js +2 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +152 -0
- package/dist/metrics/index.js +2 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.d.ts +70 -0
- package/dist/peer-connection-manager/index.d.ts +6 -0
- package/dist/peer-connection-manager/util.d.ts +6 -0
- package/dist/personal-meeting-room/index.d.ts +47 -0
- package/dist/personal-meeting-room/request.d.ts +14 -0
- package/dist/personal-meeting-room/util.d.ts +2 -0
- package/dist/reachability/index.d.ts +139 -0
- package/dist/reachability/index.js +2 -9
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +35 -0
- package/dist/reactions/reactions.d.ts +4 -0
- package/dist/reactions/reactions.type.d.ts +32 -0
- package/dist/reconnection-manager/index.d.ts +112 -0
- package/dist/recording-controller/enums.d.ts +7 -0
- package/dist/recording-controller/index.d.ts +193 -0
- package/dist/recording-controller/util.d.ts +13 -0
- package/dist/roap/collection.d.ts +10 -0
- package/dist/roap/handler.d.ts +47 -0
- package/dist/roap/index.d.ts +116 -0
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +35 -0
- package/dist/roap/state.d.ts +9 -0
- package/dist/roap/turnDiscovery.d.ts +81 -0
- package/dist/roap/util.d.ts +2 -0
- package/dist/statsAnalyzer/global.d.ts +118 -0
- package/dist/statsAnalyzer/global.js +4 -12
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +193 -0
- package/dist/statsAnalyzer/index.js +56 -14
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +22 -0
- package/dist/statsAnalyzer/mqaUtil.js +15 -15
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.d.ts +64 -0
- package/package.json +21 -22
- package/src/common/errors/reclaim-host-role-error.ts +134 -0
- package/src/config.ts +2 -2
- package/src/constants.ts +33 -0
- package/src/meeting/index.ts +35 -0
- package/src/member/index.ts +9 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +55 -1
- package/src/members/request.ts +20 -0
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +52 -0
- package/src/metrics/constants.ts +2 -0
- package/src/roap/index.ts +1 -0
- package/src/statsAnalyzer/global.ts +2 -10
- package/src/statsAnalyzer/index.ts +80 -17
- package/test/unit/spec/meeting/index.js +77 -6
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +205 -0
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/roap/index.ts +0 -1
- package/test/unit/spec/stats-analyzer/index.js +151 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
declare const STATS_DEFAULT: {
|
|
2
|
+
encryption: string;
|
|
3
|
+
audio: {
|
|
4
|
+
send: {
|
|
5
|
+
maxPacketLossRatio: number;
|
|
6
|
+
availableBandwidth: number;
|
|
7
|
+
bytesSent: number;
|
|
8
|
+
meanRemoteJitter: any[];
|
|
9
|
+
meanRoundTripTime: any[];
|
|
10
|
+
};
|
|
11
|
+
recv: {
|
|
12
|
+
availableBandwidth: number;
|
|
13
|
+
bytesReceived: number;
|
|
14
|
+
meanRtpJitter: any[];
|
|
15
|
+
meanRoundTripTime: any[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
video: {
|
|
19
|
+
send: {
|
|
20
|
+
maxPacketLossRatio: number;
|
|
21
|
+
availableBandwidth: number;
|
|
22
|
+
meanRemoteJitter: any[];
|
|
23
|
+
meanRoundTripTime: any[];
|
|
24
|
+
};
|
|
25
|
+
recv: {
|
|
26
|
+
availableBandwidth: number;
|
|
27
|
+
totalPacketsLost: number;
|
|
28
|
+
meanRtpJitter: any[];
|
|
29
|
+
meanRoundTripTime: any[];
|
|
30
|
+
};
|
|
31
|
+
latency: number;
|
|
32
|
+
packetsLost: number;
|
|
33
|
+
};
|
|
34
|
+
share: {
|
|
35
|
+
send: {
|
|
36
|
+
maxPacketLossRatio: number;
|
|
37
|
+
availableBandwidth: number;
|
|
38
|
+
totalPacketsLost: number;
|
|
39
|
+
meanRemoteJitter: any[];
|
|
40
|
+
meanRoundTripTime: any[];
|
|
41
|
+
};
|
|
42
|
+
recv: {
|
|
43
|
+
availableBandwidth: number;
|
|
44
|
+
meanRtpJitter: any[];
|
|
45
|
+
meanRoundTripTime: any[];
|
|
46
|
+
};
|
|
47
|
+
latency: number;
|
|
48
|
+
packetsLost: number;
|
|
49
|
+
};
|
|
50
|
+
bandwidth: {
|
|
51
|
+
systemBandwidth: number;
|
|
52
|
+
sentPerSecond: number;
|
|
53
|
+
encodedPerSecond: number;
|
|
54
|
+
helper: {
|
|
55
|
+
audioBytesSent: number;
|
|
56
|
+
videoBytestSent: number;
|
|
57
|
+
};
|
|
58
|
+
speed: number;
|
|
59
|
+
};
|
|
60
|
+
results: {};
|
|
61
|
+
connectionType: {
|
|
62
|
+
systemNetworkType: string;
|
|
63
|
+
systemIpAddress: string;
|
|
64
|
+
local: {
|
|
65
|
+
candidateType: any[];
|
|
66
|
+
transport: any[];
|
|
67
|
+
ipAddress: any[];
|
|
68
|
+
networkType: any[];
|
|
69
|
+
};
|
|
70
|
+
remote: {
|
|
71
|
+
candidateType: any[];
|
|
72
|
+
transport: any[];
|
|
73
|
+
ipAddress: any[];
|
|
74
|
+
networkType: any[];
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
resolutions: {
|
|
78
|
+
video: {
|
|
79
|
+
send: {
|
|
80
|
+
width: number;
|
|
81
|
+
height: number;
|
|
82
|
+
framesSent: number;
|
|
83
|
+
};
|
|
84
|
+
recv: {
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
share: {
|
|
90
|
+
send: {
|
|
91
|
+
width: number;
|
|
92
|
+
height: number;
|
|
93
|
+
framesSent: number;
|
|
94
|
+
};
|
|
95
|
+
recv: {
|
|
96
|
+
width: number;
|
|
97
|
+
height: number;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
internal: {
|
|
102
|
+
audio: {
|
|
103
|
+
send: {};
|
|
104
|
+
recv: {};
|
|
105
|
+
};
|
|
106
|
+
video: {
|
|
107
|
+
send: {};
|
|
108
|
+
recv: {};
|
|
109
|
+
};
|
|
110
|
+
share: {
|
|
111
|
+
send: {};
|
|
112
|
+
recv: {};
|
|
113
|
+
};
|
|
114
|
+
remote: {};
|
|
115
|
+
candidates: {};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export default STATS_DEFAULT;
|
|
@@ -82,20 +82,11 @@ var STATS_DEFAULT = {
|
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
84
|
resolutions: {
|
|
85
|
-
audio: {
|
|
86
|
-
send: {
|
|
87
|
-
width: 0,
|
|
88
|
-
height: 0
|
|
89
|
-
},
|
|
90
|
-
recv: {
|
|
91
|
-
width: 0,
|
|
92
|
-
height: 0
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
85
|
video: {
|
|
96
86
|
send: {
|
|
97
87
|
width: 0,
|
|
98
|
-
height: 0
|
|
88
|
+
height: 0,
|
|
89
|
+
framesSent: 0
|
|
99
90
|
},
|
|
100
91
|
recv: {
|
|
101
92
|
width: 0,
|
|
@@ -105,7 +96,8 @@ var STATS_DEFAULT = {
|
|
|
105
96
|
share: {
|
|
106
97
|
send: {
|
|
107
98
|
width: 0,
|
|
108
|
-
height: 0
|
|
99
|
+
height: 0,
|
|
100
|
+
framesSent: 0
|
|
109
101
|
},
|
|
110
102
|
recv: {
|
|
111
103
|
width: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["STATS_DEFAULT","encryption","audio","send","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","recv","bytesReceived","meanRtpJitter","video","totalPacketsLost","latency","packetsLost","share","bandwidth","systemBandwidth","sentPerSecond","encodedPerSecond","helper","audioBytesSent","videoBytestSent","speed","results","connectionType","systemNetworkType","systemIpAddress","local","candidateType","transport","ipAddress","networkType","remote","resolutions","width","height","internal","candidates","_default","exports","default"],"sources":["global.ts"],"sourcesContent":["const STATS_DEFAULT = {\n encryption: 'sha-256',\n audio: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n },\n video: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n latency: 0,\n packetsLost: 0,\n },\n share: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n\n latency: 0,\n packetsLost: 0,\n },\n bandwidth: {\n systemBandwidth: 0,\n sentPerSecond: 0,\n encodedPerSecond: 0,\n helper: {\n audioBytesSent: 0,\n videoBytestSent: 0,\n },\n speed: 0,\n },\n results: {},\n connectionType: {\n systemNetworkType: 'unknown',\n systemIpAddress: '0.0.0.0',\n local: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n remote: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n },\n resolutions: {\n
|
|
1
|
+
{"version":3,"names":["STATS_DEFAULT","encryption","audio","send","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","recv","bytesReceived","meanRtpJitter","video","totalPacketsLost","latency","packetsLost","share","bandwidth","systemBandwidth","sentPerSecond","encodedPerSecond","helper","audioBytesSent","videoBytestSent","speed","results","connectionType","systemNetworkType","systemIpAddress","local","candidateType","transport","ipAddress","networkType","remote","resolutions","width","height","framesSent","internal","candidates","_default","exports","default"],"sources":["global.ts"],"sourcesContent":["const STATS_DEFAULT = {\n encryption: 'sha-256',\n audio: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n },\n video: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n latency: 0,\n packetsLost: 0,\n },\n share: {\n send: {\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n totalPacketsLost: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n },\n recv: {\n availableBandwidth: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n },\n\n latency: 0,\n packetsLost: 0,\n },\n bandwidth: {\n systemBandwidth: 0,\n sentPerSecond: 0,\n encodedPerSecond: 0,\n helper: {\n audioBytesSent: 0,\n videoBytestSent: 0,\n },\n speed: 0,\n },\n results: {},\n connectionType: {\n systemNetworkType: 'unknown',\n systemIpAddress: '0.0.0.0',\n local: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n remote: {\n candidateType: [],\n transport: [],\n ipAddress: [],\n networkType: [],\n },\n },\n resolutions: {\n video: {\n send: {\n width: 0,\n height: 0,\n framesSent: 0,\n },\n recv: {\n width: 0,\n height: 0,\n },\n },\n share: {\n send: {\n width: 0,\n height: 0,\n framesSent: 0,\n },\n recv: {\n width: 0,\n height: 0,\n },\n },\n },\n internal: {\n audio: {\n send: {},\n recv: {},\n },\n video: {\n send: {},\n recv: {},\n },\n share: {\n send: {},\n recv: {},\n },\n remote: {},\n candidates: {},\n },\n};\n\nexport default STATS_DEFAULT;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import EventsScope from '../common/events/events-scope';
|
|
3
|
+
export declare const EVENTS: {
|
|
4
|
+
MEDIA_QUALITY: string;
|
|
5
|
+
NO_FRAMES_SENT: string;
|
|
6
|
+
NO_VIDEO_ENCODED: string;
|
|
7
|
+
LOCAL_MEDIA_STARTED: string;
|
|
8
|
+
LOCAL_MEDIA_STOPPED: string;
|
|
9
|
+
REMOTE_MEDIA_STARTED: string;
|
|
10
|
+
REMOTE_MEDIA_STOPPED: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Stats Analyzer class that will emit events based on detected quality
|
|
14
|
+
*
|
|
15
|
+
* @export
|
|
16
|
+
* @class StatsAnalyzer
|
|
17
|
+
* @extends {EventsScope}
|
|
18
|
+
*/
|
|
19
|
+
export declare class StatsAnalyzer extends EventsScope {
|
|
20
|
+
config: any;
|
|
21
|
+
correlationId: any;
|
|
22
|
+
lastEmittedStartStopEvent: any;
|
|
23
|
+
lastMqaDataSent: any;
|
|
24
|
+
lastStatsResults: any;
|
|
25
|
+
localMQEStats: any;
|
|
26
|
+
meetingMediaStatus: any;
|
|
27
|
+
mqaInterval: NodeJS.Timeout;
|
|
28
|
+
mqaSentCount: any;
|
|
29
|
+
networkQualityMonitor: any;
|
|
30
|
+
peerConnection: any;
|
|
31
|
+
statsInterval: NodeJS.Timeout;
|
|
32
|
+
statsResults: any;
|
|
33
|
+
statsStarted: any;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new instance of StatsAnalyzer
|
|
36
|
+
* @constructor
|
|
37
|
+
* @public
|
|
38
|
+
* @param {Object} config SDK Configuration Object
|
|
39
|
+
* @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
|
|
40
|
+
* @param {Object} statsResults Default properties for stats
|
|
41
|
+
*/
|
|
42
|
+
constructor(config: any, networkQualityMonitor?: object, statsResults?: object);
|
|
43
|
+
populateResults(lastMqa: any): void;
|
|
44
|
+
resetStatsResults(): void;
|
|
45
|
+
/**
|
|
46
|
+
* sets mediaStatus status for analyzing metrics
|
|
47
|
+
*
|
|
48
|
+
* @public
|
|
49
|
+
* @param {Object} status for the audio and video
|
|
50
|
+
* @memberof StatsAnalyzer
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
updateMediaStatus(status: object): void;
|
|
54
|
+
/**
|
|
55
|
+
* captures MQA data from peerconnection
|
|
56
|
+
*
|
|
57
|
+
* @public
|
|
58
|
+
* @memberof StatsAnalyzer
|
|
59
|
+
* @returns {void}
|
|
60
|
+
*/
|
|
61
|
+
sendMqaData(): void;
|
|
62
|
+
/**
|
|
63
|
+
* updated the peerconnection when changed
|
|
64
|
+
*
|
|
65
|
+
* @private
|
|
66
|
+
* @memberof updatePeerconnection
|
|
67
|
+
* @param {PeerConnection} peerConnection
|
|
68
|
+
* @returns {void}
|
|
69
|
+
*/
|
|
70
|
+
updatePeerconnection(peerConnection: any): void;
|
|
71
|
+
/**
|
|
72
|
+
* Starts the stats analyzer on interval
|
|
73
|
+
*
|
|
74
|
+
* @public
|
|
75
|
+
* @memberof StatsAnalyzer
|
|
76
|
+
* @param {PeerConnection} peerConnection
|
|
77
|
+
* @returns {Promise}
|
|
78
|
+
*/
|
|
79
|
+
startAnalyzer(peerConnection: any): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Cleans up the analyzer when done
|
|
82
|
+
*
|
|
83
|
+
* @public
|
|
84
|
+
* @memberof StatsAnalyzer
|
|
85
|
+
* @returns {void}
|
|
86
|
+
*/
|
|
87
|
+
stopAnalyzer(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Parse a single result of get stats
|
|
90
|
+
*
|
|
91
|
+
* @private
|
|
92
|
+
* @param {*} getStatsResult
|
|
93
|
+
* @param {String} type
|
|
94
|
+
* @param {boolean} isSender
|
|
95
|
+
* @returns {void}
|
|
96
|
+
* @memberof StatsAnalyzer
|
|
97
|
+
*/
|
|
98
|
+
private parseGetStatsResult;
|
|
99
|
+
/**
|
|
100
|
+
* Filters the get stats results for types
|
|
101
|
+
* @private
|
|
102
|
+
* @param {Array} getStatsResults
|
|
103
|
+
* @param {String} type
|
|
104
|
+
* @param {boolean} isSender
|
|
105
|
+
* @returns {void}
|
|
106
|
+
*/
|
|
107
|
+
private filterAndParseGetStatsResults;
|
|
108
|
+
/**
|
|
109
|
+
* parse the audio
|
|
110
|
+
* @param {String} result
|
|
111
|
+
* @param {boolean} type
|
|
112
|
+
* @returns {void}
|
|
113
|
+
*/
|
|
114
|
+
parseAudioSource(result: any, type: any): void;
|
|
115
|
+
/**
|
|
116
|
+
* emits started/stopped events for local/remote media by checking
|
|
117
|
+
* if given values are increasing or not. The previousValue, currentValue
|
|
118
|
+
* params can be any numerical value like number of receive packets or
|
|
119
|
+
* decoded frames, etc.
|
|
120
|
+
*
|
|
121
|
+
* @private
|
|
122
|
+
* @param {string} mediaType
|
|
123
|
+
* @param {number} previousValue - value to compare
|
|
124
|
+
* @param {number} currentValue - value to compare (must be same type of value as previousValue)
|
|
125
|
+
* @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
|
|
126
|
+
* @memberof StatsAnalyzer
|
|
127
|
+
* @returns {void}
|
|
128
|
+
*/
|
|
129
|
+
emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
|
|
130
|
+
/**
|
|
131
|
+
* compares current and previous stats to check if packets are not sent
|
|
132
|
+
*
|
|
133
|
+
* @private
|
|
134
|
+
* @memberof StatsAnalyzer
|
|
135
|
+
* @returns {void}
|
|
136
|
+
*/
|
|
137
|
+
private compareLastStatsResult;
|
|
138
|
+
/**
|
|
139
|
+
* Does a `getStats` on all the transceivers and parses the results
|
|
140
|
+
*
|
|
141
|
+
* @private
|
|
142
|
+
* @memberof StatsAnalyzer
|
|
143
|
+
* @returns {Promise}
|
|
144
|
+
*/
|
|
145
|
+
private getStatsAndParse;
|
|
146
|
+
/**
|
|
147
|
+
* Processes OutboundRTP stats result and stores
|
|
148
|
+
* @private
|
|
149
|
+
* @param {*} result
|
|
150
|
+
* @param {*} type
|
|
151
|
+
* @returns {void}
|
|
152
|
+
*/
|
|
153
|
+
private processOutboundRTPResult;
|
|
154
|
+
/**
|
|
155
|
+
* Processes InboundRTP stats result and stores
|
|
156
|
+
* @private
|
|
157
|
+
* @param {*} result
|
|
158
|
+
* @param {*} type
|
|
159
|
+
* @returns {void}
|
|
160
|
+
*/
|
|
161
|
+
private processInboundRTPResult;
|
|
162
|
+
/**
|
|
163
|
+
* Processes remote and local candidate result and stores
|
|
164
|
+
* @private
|
|
165
|
+
* @param {*} result
|
|
166
|
+
* @param {*} type
|
|
167
|
+
* @param {boolean} isSender
|
|
168
|
+
* @param {boolean} isRemote
|
|
169
|
+
*
|
|
170
|
+
* @returns {void}
|
|
171
|
+
*/
|
|
172
|
+
parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
|
|
173
|
+
/**
|
|
174
|
+
* Process Track results
|
|
175
|
+
*
|
|
176
|
+
* @private
|
|
177
|
+
* @param {*} result
|
|
178
|
+
* @param {*} mediaType
|
|
179
|
+
* @param {*} sendrecvType
|
|
180
|
+
* @returns {void}
|
|
181
|
+
* @memberof StatsAnalyzer
|
|
182
|
+
*/
|
|
183
|
+
private processTrackResult;
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
* @private
|
|
187
|
+
* @param {*} result
|
|
188
|
+
* @param {*} type
|
|
189
|
+
* @returns {void}
|
|
190
|
+
* @memberof StatsAnalyzer
|
|
191
|
+
*/
|
|
192
|
+
private compareSentAndReceived;
|
|
193
|
+
}
|
|
@@ -16,7 +16,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
|
|
|
16
16
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
17
17
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
18
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
19
|
-
var
|
|
19
|
+
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
20
20
|
var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
|
|
21
21
|
var _constants = require("../constants");
|
|
22
22
|
var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
|
|
@@ -27,6 +27,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
27
27
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
28
28
|
var EVENTS = {
|
|
29
29
|
MEDIA_QUALITY: 'MEDIA_QUALITY',
|
|
30
|
+
NO_FRAMES_SENT: 'NO_FRAMES_SENT',
|
|
31
|
+
NO_VIDEO_ENCODED: 'NO_VIDEO_ENCODED',
|
|
30
32
|
LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
|
|
31
33
|
LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',
|
|
32
34
|
REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
|
|
@@ -99,7 +101,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
99
101
|
var newEvent;
|
|
100
102
|
if (currentValue - previousValue > 0) {
|
|
101
103
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
|
|
102
|
-
} else if (currentValue === previousValue && currentValue
|
|
104
|
+
} else if (currentValue === previousValue && currentValue >= 0) {
|
|
103
105
|
newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
|
|
104
106
|
}
|
|
105
107
|
if (newEvent && lastEmittedEvent !== newEvent) {
|
|
@@ -412,7 +414,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
412
414
|
_config.default.intervals[0].intervalNumber = this.mqaSentCount;
|
|
413
415
|
|
|
414
416
|
// DO Deep copy, for some reason it takes the reference all the time rather then old value set
|
|
415
|
-
this.lastMqaDataSent = (0,
|
|
417
|
+
this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
|
|
416
418
|
this.populateResults(_config.default.intervals[0]);
|
|
417
419
|
this.resetStatsResults();
|
|
418
420
|
this.emit({
|
|
@@ -520,9 +522,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
520
522
|
case 'inbound-rtp':
|
|
521
523
|
this.processInboundRTPResult(getStatsResult, type);
|
|
522
524
|
break;
|
|
523
|
-
case 'track':
|
|
524
|
-
this.processTrackResult(getStatsResult, type);
|
|
525
|
-
break;
|
|
526
525
|
case 'remote-inbound-rtp':
|
|
527
526
|
case 'remote-outbound-rtp':
|
|
528
527
|
// @ts-ignore
|
|
@@ -630,13 +629,32 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
630
629
|
previousStats = this.lastStatsResults[mediaType].send;
|
|
631
630
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
632
631
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
633
|
-
} else {
|
|
632
|
+
} else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {
|
|
634
633
|
if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
|
|
634
|
+
this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;
|
|
635
635
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames Encoded"));
|
|
636
|
+
this.emit({
|
|
637
|
+
file: 'statsAnalyzer',
|
|
638
|
+
function: 'compareLastStatsResult'
|
|
639
|
+
}, EVENTS.NO_VIDEO_ENCODED, {
|
|
640
|
+
mediaType: mediaType
|
|
641
|
+
});
|
|
636
642
|
}
|
|
637
643
|
if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
|
|
638
644
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent"));
|
|
639
645
|
}
|
|
646
|
+
|
|
647
|
+
// Video is encoded but frames are not sent
|
|
648
|
+
if (currentStats.framesEncoded !== previousStats.framesEncoded && (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)) {
|
|
649
|
+
this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;
|
|
650
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent even though frames are encoded"));
|
|
651
|
+
this.emit({
|
|
652
|
+
file: 'statsAnalyzer',
|
|
653
|
+
function: 'compareLastStatsResult'
|
|
654
|
+
}, EVENTS.NO_FRAMES_SENT, {
|
|
655
|
+
mediaType: mediaType
|
|
656
|
+
});
|
|
657
|
+
}
|
|
640
658
|
}
|
|
641
659
|
this.emitStartStopEvents(mediaType, previousStats.framesSent, currentStats.framesSent, true);
|
|
642
660
|
}
|
|
@@ -668,13 +686,32 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
668
686
|
previousStats = this.lastStatsResults[mediaType].send;
|
|
669
687
|
if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
|
|
670
688
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
|
|
671
|
-
} else {
|
|
689
|
+
} else if (this.lastEmittedStartStopEvent[mediaType].local !== EVENTS.LOCAL_MEDIA_STOPPED) {
|
|
672
690
|
if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
|
|
691
|
+
this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_VIDEO_ENCODED;
|
|
673
692
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames getting encoded"));
|
|
693
|
+
this.emit({
|
|
694
|
+
file: 'statsAnalyzer',
|
|
695
|
+
function: 'compareLastStatsResult'
|
|
696
|
+
}, EVENTS.NO_VIDEO_ENCODED, {
|
|
697
|
+
mediaType: mediaType
|
|
698
|
+
});
|
|
674
699
|
}
|
|
675
700
|
if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
|
|
676
701
|
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent"));
|
|
677
702
|
}
|
|
703
|
+
|
|
704
|
+
// Share video is encoded but frames are not sent
|
|
705
|
+
if (currentStats.framesEncoded !== previousStats.framesEncoded && (currentStats.framesSent === previousStats.framesSent || currentStats.framesSent === 0)) {
|
|
706
|
+
this.lastEmittedStartStopEvent[mediaType].local = EVENTS.NO_FRAMES_SENT;
|
|
707
|
+
_loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent even though frames are being encoded"));
|
|
708
|
+
this.emit({
|
|
709
|
+
file: 'statsAnalyzer',
|
|
710
|
+
function: 'compareLastStatsResult'
|
|
711
|
+
}, EVENTS.NO_FRAMES_SENT, {
|
|
712
|
+
mediaType: mediaType
|
|
713
|
+
});
|
|
714
|
+
}
|
|
678
715
|
}
|
|
679
716
|
|
|
680
717
|
// TODO:need to check receive share value
|
|
@@ -761,6 +798,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
761
798
|
value: function processOutboundRTPResult(result, type) {
|
|
762
799
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
763
800
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
801
|
+
this.processTrackResult(result, type, sendrecvType);
|
|
764
802
|
if (result.bytesSent) {
|
|
765
803
|
var kilobytes = 0;
|
|
766
804
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
|
|
@@ -817,6 +855,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
817
855
|
value: function processInboundRTPResult(result, type) {
|
|
818
856
|
var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
|
|
819
857
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
858
|
+
this.processTrackResult(result, type, sendrecvType);
|
|
820
859
|
if (result.bytesReceived) {
|
|
821
860
|
var kilobytes = 0;
|
|
822
861
|
if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
|
|
@@ -896,25 +935,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
896
935
|
* @private
|
|
897
936
|
* @param {*} result
|
|
898
937
|
* @param {*} mediaType
|
|
938
|
+
* @param {*} sendrecvType
|
|
899
939
|
* @returns {void}
|
|
900
940
|
* @memberof StatsAnalyzer
|
|
901
941
|
*/
|
|
902
|
-
function processTrackResult(result, mediaType) {
|
|
903
|
-
if (!result ||
|
|
942
|
+
function processTrackResult(result, mediaType, sendrecvType) {
|
|
943
|
+
if (!result || mediaType === _constants.STATS.AUDIO_CORRELATE) {
|
|
944
|
+
return;
|
|
945
|
+
}
|
|
946
|
+
if (result.type !== 'inbound-rtp' && result.type !== 'outbound-rtp') {
|
|
904
947
|
return;
|
|
905
948
|
}
|
|
906
|
-
if (result.type !== 'track') return;
|
|
907
|
-
var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
|
|
908
949
|
if (result.frameWidth && result.frameHeight) {
|
|
909
950
|
this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
|
|
910
951
|
this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
|
|
911
|
-
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
912
|
-
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
913
952
|
}
|
|
914
953
|
if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
|
|
915
954
|
this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
|
|
916
955
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
|
|
917
956
|
this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
|
|
957
|
+
} else if (sendrecvType === _constants.STATS.SEND_DIRECTION) {
|
|
958
|
+
this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
|
|
959
|
+
this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
|
|
918
960
|
}
|
|
919
961
|
if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
|
|
920
962
|
this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
|