@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.4.8 → 1.0.2
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/cjs/Config/Config.js +4 -0
- package/dist/cjs/Config/Config.js.map +1 -1
- package/dist/cjs/Config/SettingBase.js +1 -3
- package/dist/cjs/Config/SettingBase.js.map +1 -1
- package/dist/cjs/Config/SettingFlag.js +1 -3
- package/dist/cjs/Config/SettingFlag.js.map +1 -1
- package/dist/cjs/Config/SettingNumber.js +1 -3
- package/dist/cjs/Config/SettingNumber.js.map +1 -1
- package/dist/cjs/Config/SettingOption.js +2 -6
- package/dist/cjs/Config/SettingOption.js.map +1 -1
- package/dist/cjs/Config/SettingText.js +1 -3
- package/dist/cjs/Config/SettingText.js.map +1 -1
- package/dist/cjs/Inputs/GamepadController.js +0 -2
- package/dist/cjs/Inputs/GamepadController.js.map +1 -1
- package/dist/cjs/Inputs/KeyboardController.js +14 -6
- package/dist/cjs/Inputs/KeyboardController.js.map +1 -1
- package/dist/cjs/PeerConnectionController/AggregatedStats.js +103 -45
- package/dist/cjs/PeerConnectionController/AggregatedStats.js.map +1 -1
- package/dist/cjs/PeerConnectionController/InboundRTPStats.js.map +1 -1
- package/dist/cjs/PeerConnectionController/LatencyCalculator.js +290 -0
- package/dist/cjs/PeerConnectionController/LatencyCalculator.js.map +1 -0
- package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js +11 -7
- package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
- package/dist/cjs/PeerConnectionController/PeerConnectionController.js +53 -19
- package/dist/cjs/PeerConnectionController/PeerConnectionController.js.map +1 -1
- package/dist/cjs/PixelStreaming/PixelStreaming.js +21 -3
- package/dist/cjs/PixelStreaming/PixelStreaming.js.map +1 -1
- package/dist/cjs/UI/OnScreenKeyboard.js +4 -1
- package/dist/cjs/UI/OnScreenKeyboard.js.map +1 -1
- package/dist/cjs/Util/EventEmitter.js +31 -1
- package/dist/cjs/Util/EventEmitter.js.map +1 -1
- package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js +20 -4
- package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
- package/dist/cjs/__test__/mockMediaStream.js +100 -0
- package/dist/cjs/__test__/mockMediaStream.js.map +1 -0
- package/dist/cjs/__test__/mockRTCPeerConnection.js +252 -0
- package/dist/cjs/__test__/mockRTCPeerConnection.js.map +1 -0
- package/dist/cjs/__test__/mockRTCRtpReceiver.js +26 -0
- package/dist/cjs/__test__/mockRTCRtpReceiver.js.map +1 -0
- package/dist/cjs/__test__/mockWebSocket.js +109 -0
- package/dist/cjs/__test__/mockWebSocket.js.map +1 -0
- package/dist/cjs/pixelstreamingfrontend.js +4 -2
- package/dist/cjs/pixelstreamingfrontend.js.map +1 -1
- package/dist/esm/Config/Config.js +4 -0
- package/dist/esm/Config/Config.js.map +1 -1
- package/dist/esm/Config/SettingBase.js +1 -3
- package/dist/esm/Config/SettingBase.js.map +1 -1
- package/dist/esm/Config/SettingFlag.js +1 -3
- package/dist/esm/Config/SettingFlag.js.map +1 -1
- package/dist/esm/Config/SettingNumber.js +1 -3
- package/dist/esm/Config/SettingNumber.js.map +1 -1
- package/dist/esm/Config/SettingOption.js +2 -6
- package/dist/esm/Config/SettingOption.js.map +1 -1
- package/dist/esm/Config/SettingText.js +1 -3
- package/dist/esm/Config/SettingText.js.map +1 -1
- package/dist/esm/Inputs/GamepadController.js +0 -2
- package/dist/esm/Inputs/GamepadController.js.map +1 -1
- package/dist/esm/Inputs/KeyboardController.js +14 -6
- package/dist/esm/Inputs/KeyboardController.js.map +1 -1
- package/dist/esm/PeerConnectionController/AggregatedStats.js +104 -46
- package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/LatencyCalculator.js +284 -0
- package/dist/esm/PeerConnectionController/LatencyCalculator.js.map +1 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +8 -4
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/PeerConnectionController.js +52 -18
- package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
- package/dist/esm/PixelStreaming/PixelStreaming.js +22 -4
- package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
- package/dist/esm/UI/OnScreenKeyboard.js +4 -1
- package/dist/esm/UI/OnScreenKeyboard.js.map +1 -1
- package/dist/esm/Util/EventEmitter.js +27 -0
- package/dist/esm/Util/EventEmitter.js.map +1 -1
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +20 -4
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
- package/dist/esm/__test__/mockMediaStream.js +92 -0
- package/dist/esm/__test__/mockMediaStream.js.map +1 -0
- package/dist/esm/__test__/mockRTCPeerConnection.js +242 -0
- package/dist/esm/__test__/mockRTCPeerConnection.js.map +1 -0
- package/dist/esm/__test__/mockRTCRtpReceiver.js +21 -0
- package/dist/esm/__test__/mockRTCRtpReceiver.js.map +1 -0
- package/dist/esm/__test__/mockWebSocket.js +103 -0
- package/dist/esm/__test__/mockWebSocket.js.map +1 -0
- package/dist/esm/pixelstreamingfrontend.js +2 -1
- package/dist/esm/pixelstreamingfrontend.js.map +1 -1
- package/dist/types/Config/Config.d.ts +1 -0
- package/dist/types/Inputs/KeyboardController.d.ts +1 -1
- package/dist/types/PeerConnectionController/AggregatedStats.d.ts +18 -7
- package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +88 -85
- package/dist/types/PeerConnectionController/LatencyCalculator.d.ts +87 -0
- package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +46 -12
- package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +17 -3
- package/dist/types/PixelStreaming/PixelStreaming.d.ts +16 -3
- package/dist/types/Util/EventEmitter.d.ts +34 -1
- package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -1
- package/dist/types/__test__/mockMediaStream.d.ts +49 -0
- package/dist/types/__test__/mockRTCPeerConnection.d.ts +134 -0
- package/dist/types/__test__/mockRTCRtpReceiver.d.ts +3 -0
- package/dist/types/__test__/mockWebSocket.d.ts +33 -0
- package/dist/types/pixelstreamingfrontend.d.ts +2 -1
- package/eslint.config.mjs +52 -0
- package/package.json +13 -14
- package/src/Config/Config.ts +14 -0
- package/src/Config/SettingBase.ts +1 -1
- package/src/Config/SettingFlag.ts +1 -1
- package/src/Config/SettingNumber.ts +1 -1
- package/src/Config/SettingOption.ts +2 -2
- package/src/Config/SettingText.ts +1 -1
- package/src/Inputs/GamepadController.ts +2 -2
- package/src/Inputs/KeyboardController.ts +13 -7
- package/src/PeerConnectionController/AggregatedStats.ts +111 -52
- package/src/PeerConnectionController/InboundRTPStats.ts +88 -85
- package/src/PeerConnectionController/LatencyCalculator.ts +392 -0
- package/src/PeerConnectionController/OutBoundRTPStats.ts +46 -12
- package/src/PeerConnectionController/PeerConnectionController.ts +72 -19
- package/src/PixelStreaming/PixelStreaming.ts +29 -4
- package/src/UI/OnScreenKeyboard.ts +5 -1
- package/src/Util/EventEmitter.ts +48 -0
- package/src/VideoPlayer/VideoPlayer.ts +1 -1
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +23 -5
- package/src/__test__/mockRTCPeerConnection.ts +1 -1
- package/src/pixelstreamingfrontend.ts +2 -1
- package/tsconfig.base.json +2 -2
- package/.eslintignore +0 -12
- package/.eslintrc.js +0 -20
- package/.prettierrc.json +0 -7
|
@@ -5,7 +5,7 @@ import { InboundTrackStats } from './InboundTrackStats';
|
|
|
5
5
|
import { DataChannelStats } from './DataChannelStats';
|
|
6
6
|
import { CandidateStat } from './CandidateStat';
|
|
7
7
|
import { CandidatePairStats } from './CandidatePairStats';
|
|
8
|
-
import {
|
|
8
|
+
import { RemoteOutboundRTPStats, OutboundRTPStats } from './OutBoundRTPStats';
|
|
9
9
|
import { SessionStats } from './SessionStats';
|
|
10
10
|
import { StreamStats } from './StreamStats';
|
|
11
11
|
import { CodecStats } from './CodecStats';
|
|
@@ -15,15 +15,17 @@ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
|
15
15
|
* The Aggregated Stats that is generated from the RTC Stats Report
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
type RTCStatsTypePS = RTCStatsType | 'stream' | 'media-playout' | 'track';
|
|
19
18
|
export class AggregatedStats {
|
|
20
19
|
inboundVideoStats: InboundVideoStats;
|
|
21
20
|
inboundAudioStats: InboundAudioStats;
|
|
22
21
|
candidatePairs: Array<CandidatePairStats>;
|
|
23
|
-
|
|
22
|
+
datachannelStats: DataChannelStats;
|
|
24
23
|
localCandidates: Array<CandidateStat>;
|
|
25
24
|
remoteCandidates: Array<CandidateStat>;
|
|
26
|
-
|
|
25
|
+
outboundVideoStats: OutboundRTPStats;
|
|
26
|
+
outboundAudioStats: OutboundRTPStats;
|
|
27
|
+
remoteOutboundVideoStats: RemoteOutboundRTPStats;
|
|
28
|
+
remoteOutboundAudioStats: RemoteOutboundRTPStats;
|
|
27
29
|
sessionStats: SessionStats;
|
|
28
30
|
streamStats: StreamStats;
|
|
29
31
|
codecs: Map<string, CodecStats>;
|
|
@@ -32,8 +34,11 @@ export class AggregatedStats {
|
|
|
32
34
|
constructor() {
|
|
33
35
|
this.inboundVideoStats = new InboundVideoStats();
|
|
34
36
|
this.inboundAudioStats = new InboundAudioStats();
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
+
this.datachannelStats = new DataChannelStats();
|
|
38
|
+
this.outboundVideoStats = new OutboundRTPStats();
|
|
39
|
+
this.outboundAudioStats = new OutboundRTPStats();
|
|
40
|
+
this.remoteOutboundAudioStats = new RemoteOutboundRTPStats();
|
|
41
|
+
this.remoteOutboundVideoStats = new RemoteOutboundRTPStats();
|
|
37
42
|
this.sessionStats = new SessionStats();
|
|
38
43
|
this.streamStats = new StreamStats();
|
|
39
44
|
this.codecs = new Map<string, CodecStats>();
|
|
@@ -49,7 +54,7 @@ export class AggregatedStats {
|
|
|
49
54
|
this.candidatePairs = new Array<CandidatePairStats>();
|
|
50
55
|
|
|
51
56
|
rtcStatsReport.forEach((stat) => {
|
|
52
|
-
const type:
|
|
57
|
+
const type: string = stat.type;
|
|
53
58
|
|
|
54
59
|
switch (type) {
|
|
55
60
|
case 'candidate-pair':
|
|
@@ -64,7 +69,7 @@ export class AggregatedStats {
|
|
|
64
69
|
this.handleDataChannel(stat);
|
|
65
70
|
break;
|
|
66
71
|
case 'inbound-rtp':
|
|
67
|
-
this.
|
|
72
|
+
this.handleInboundRTP(stat);
|
|
68
73
|
break;
|
|
69
74
|
case 'local-candidate':
|
|
70
75
|
this.handleLocalCandidate(stat);
|
|
@@ -74,6 +79,7 @@ export class AggregatedStats {
|
|
|
74
79
|
case 'media-playout':
|
|
75
80
|
break;
|
|
76
81
|
case 'outbound-rtp':
|
|
82
|
+
this.handleLocalOutbound(stat);
|
|
77
83
|
break;
|
|
78
84
|
case 'peer-connection':
|
|
79
85
|
break;
|
|
@@ -83,7 +89,7 @@ export class AggregatedStats {
|
|
|
83
89
|
case 'remote-inbound-rtp':
|
|
84
90
|
break;
|
|
85
91
|
case 'remote-outbound-rtp':
|
|
86
|
-
this.
|
|
92
|
+
this.handleRemoteOutbound(stat);
|
|
87
93
|
break;
|
|
88
94
|
case 'track':
|
|
89
95
|
this.handleTrack(stat);
|
|
@@ -125,16 +131,16 @@ export class AggregatedStats {
|
|
|
125
131
|
* @param stat - the stats coming in from the data channel
|
|
126
132
|
*/
|
|
127
133
|
handleDataChannel(stat: DataChannelStats) {
|
|
128
|
-
this.
|
|
129
|
-
this.
|
|
130
|
-
this.
|
|
131
|
-
this.
|
|
132
|
-
this.
|
|
133
|
-
this.
|
|
134
|
-
this.
|
|
135
|
-
this.
|
|
136
|
-
this.
|
|
137
|
-
this.
|
|
134
|
+
this.datachannelStats.bytesReceived = stat.bytesReceived;
|
|
135
|
+
this.datachannelStats.bytesSent = stat.bytesSent;
|
|
136
|
+
this.datachannelStats.dataChannelIdentifier = stat.dataChannelIdentifier;
|
|
137
|
+
this.datachannelStats.id = stat.id;
|
|
138
|
+
this.datachannelStats.label = stat.label;
|
|
139
|
+
this.datachannelStats.messagesReceived = stat.messagesReceived;
|
|
140
|
+
this.datachannelStats.messagesSent = stat.messagesSent;
|
|
141
|
+
this.datachannelStats.protocol = stat.protocol;
|
|
142
|
+
this.datachannelStats.state = stat.state;
|
|
143
|
+
this.datachannelStats.timestamp = stat.timestamp;
|
|
138
144
|
}
|
|
139
145
|
|
|
140
146
|
/**
|
|
@@ -159,23 +165,23 @@ export class AggregatedStats {
|
|
|
159
165
|
* @param stat - ice candidate stats
|
|
160
166
|
*/
|
|
161
167
|
handleRemoteCandidate(stat: CandidateStat) {
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.remoteCandidates.push(
|
|
168
|
+
const remoteCandidate = new CandidateStat();
|
|
169
|
+
remoteCandidate.label = 'remote-candidate';
|
|
170
|
+
remoteCandidate.address = stat.address;
|
|
171
|
+
remoteCandidate.port = stat.port;
|
|
172
|
+
remoteCandidate.protocol = stat.protocol;
|
|
173
|
+
remoteCandidate.id = stat.id;
|
|
174
|
+
remoteCandidate.candidateType = stat.candidateType;
|
|
175
|
+
remoteCandidate.relayProtocol = stat.relayProtocol;
|
|
176
|
+
remoteCandidate.transportId = stat.transportId;
|
|
177
|
+
this.remoteCandidates.push(remoteCandidate);
|
|
172
178
|
}
|
|
173
179
|
|
|
174
180
|
/**
|
|
175
181
|
* Process the Inbound RTP Audio and Video Data
|
|
176
182
|
* @param stat - inbound rtp stats
|
|
177
183
|
*/
|
|
178
|
-
|
|
184
|
+
handleInboundRTP(stat: InboundRTPStats) {
|
|
179
185
|
switch (stat.kind) {
|
|
180
186
|
case 'video':
|
|
181
187
|
// Calculate bitrate between stat updates
|
|
@@ -216,25 +222,63 @@ export class AggregatedStats {
|
|
|
216
222
|
}
|
|
217
223
|
|
|
218
224
|
/**
|
|
219
|
-
* Process the outbound RTP Audio and Video
|
|
220
|
-
* @param stat -
|
|
225
|
+
* Process the "local" outbound RTP Audio and Video stats.
|
|
226
|
+
* @param stat - local outbound rtp stats
|
|
221
227
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
228
|
+
handleLocalOutbound(stat: OutboundRTPStats) {
|
|
229
|
+
const localOutboundStats: OutboundRTPStats =
|
|
230
|
+
stat.kind === 'audio' ? this.outboundAudioStats : this.outboundVideoStats;
|
|
231
|
+
localOutboundStats.active = stat.active;
|
|
232
|
+
localOutboundStats.codecId = stat.codecId;
|
|
233
|
+
localOutboundStats.bytesSent = stat.bytesSent;
|
|
234
|
+
localOutboundStats.frameHeight = stat.frameHeight;
|
|
235
|
+
localOutboundStats.frameWidth = stat.frameWidth;
|
|
236
|
+
localOutboundStats.framesEncoded = stat.framesEncoded;
|
|
237
|
+
localOutboundStats.framesPerSecond = stat.framesPerSecond;
|
|
238
|
+
localOutboundStats.headerBytesSent = stat.headerBytesSent;
|
|
239
|
+
localOutboundStats.id = stat.id;
|
|
240
|
+
localOutboundStats.keyFramesEncoded = stat.keyFramesEncoded;
|
|
241
|
+
localOutboundStats.kind = stat.kind;
|
|
242
|
+
localOutboundStats.mediaSourceId = stat.mediaSourceId;
|
|
243
|
+
localOutboundStats.mid = stat.mid;
|
|
244
|
+
localOutboundStats.nackCount = stat.nackCount;
|
|
245
|
+
localOutboundStats.packetsSent = stat.packetsSent;
|
|
246
|
+
localOutboundStats.qpSum = stat.qpSum;
|
|
247
|
+
localOutboundStats.qualityLimitationDurations = stat.qualityLimitationDurations;
|
|
248
|
+
localOutboundStats.qualityLimitationReason = stat.qualityLimitationReason;
|
|
249
|
+
localOutboundStats.remoteId = stat.remoteId;
|
|
250
|
+
localOutboundStats.retransmittedBytesSent = stat.retransmittedBytesSent;
|
|
251
|
+
localOutboundStats.rid = stat.rid;
|
|
252
|
+
localOutboundStats.scalabilityMode = stat.scalabilityMode;
|
|
253
|
+
localOutboundStats.ssrc = stat.ssrc;
|
|
254
|
+
localOutboundStats.targetBitrate = stat.targetBitrate;
|
|
255
|
+
localOutboundStats.timestamp = stat.timestamp;
|
|
256
|
+
localOutboundStats.totalEncodeTime = stat.totalEncodeTime;
|
|
257
|
+
localOutboundStats.totalEncodeBytesTarget = stat.totalEncodeBytesTarget;
|
|
258
|
+
localOutboundStats.totalPacketSendDelay = stat.totalPacketSendDelay;
|
|
259
|
+
localOutboundStats.transportId = stat.transportId;
|
|
260
|
+
}
|
|
234
261
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Process the "remote" outbound RTP Audio and Video stats.
|
|
264
|
+
* @param stat - remote outbound rtp stats
|
|
265
|
+
*/
|
|
266
|
+
handleRemoteOutbound(stat: RemoteOutboundRTPStats) {
|
|
267
|
+
const remoteOutboundStats: RemoteOutboundRTPStats =
|
|
268
|
+
stat.kind === 'audio' ? this.remoteOutboundAudioStats : this.remoteOutboundVideoStats;
|
|
269
|
+
remoteOutboundStats.bytesSent = stat.bytesSent;
|
|
270
|
+
remoteOutboundStats.codecId = stat.codecId;
|
|
271
|
+
remoteOutboundStats.id = stat.id;
|
|
272
|
+
remoteOutboundStats.kind = stat.kind;
|
|
273
|
+
remoteOutboundStats.localId = stat.localId;
|
|
274
|
+
remoteOutboundStats.packetsSent = stat.packetsSent;
|
|
275
|
+
remoteOutboundStats.remoteTimestamp = stat.remoteTimestamp;
|
|
276
|
+
remoteOutboundStats.reportsSent = stat.reportsSent;
|
|
277
|
+
remoteOutboundStats.roundTripTimeMeasurements = stat.roundTripTimeMeasurements;
|
|
278
|
+
remoteOutboundStats.ssrc = stat.ssrc;
|
|
279
|
+
remoteOutboundStats.timestamp = stat.timestamp;
|
|
280
|
+
remoteOutboundStats.totalRoundTripTime = stat.totalRoundTripTime;
|
|
281
|
+
remoteOutboundStats.transportId = stat.transportId;
|
|
238
282
|
}
|
|
239
283
|
|
|
240
284
|
/**
|
|
@@ -288,16 +332,31 @@ export class AggregatedStats {
|
|
|
288
332
|
* @returns The candidate pair that is currently receiving data
|
|
289
333
|
*/
|
|
290
334
|
public getActiveCandidatePair(): CandidatePairStats | null {
|
|
335
|
+
if (this.candidatePairs === undefined) {
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
|
|
291
339
|
// Check if the RTCTransport stat is not undefined
|
|
292
340
|
if (this.transportStats) {
|
|
293
341
|
// Return the candidate pair that matches the transport candidate pair id
|
|
294
|
-
|
|
295
|
-
(candidatePair) => candidatePair.id === this.transportStats.selectedCandidatePairId
|
|
296
|
-
null
|
|
342
|
+
const selectedPair: CandidatePairStats | undefined = this.candidatePairs.find(
|
|
343
|
+
(candidatePair) => candidatePair.id === this.transportStats.selectedCandidatePairId
|
|
297
344
|
);
|
|
345
|
+
if (selectedPair === undefined) {
|
|
346
|
+
return null;
|
|
347
|
+
} else {
|
|
348
|
+
return selectedPair;
|
|
349
|
+
}
|
|
298
350
|
}
|
|
299
351
|
|
|
300
|
-
// Fall back to the selected candidate pair
|
|
301
|
-
|
|
352
|
+
// Fall back to the `.selected` member of the candidate pair
|
|
353
|
+
const selectedPair: CandidatePairStats | undefined = this.candidatePairs.find(
|
|
354
|
+
(candidatePair) => candidatePair.selected
|
|
355
|
+
);
|
|
356
|
+
if (selectedPair === undefined) {
|
|
357
|
+
return null;
|
|
358
|
+
} else {
|
|
359
|
+
return selectedPair;
|
|
360
|
+
}
|
|
302
361
|
}
|
|
303
362
|
}
|
|
@@ -4,41 +4,41 @@
|
|
|
4
4
|
* Inbound Audio Stats collected from the RTC Stats Report
|
|
5
5
|
*/
|
|
6
6
|
export class InboundAudioStats {
|
|
7
|
-
audioLevel: number;
|
|
7
|
+
audioLevel: number | undefined;
|
|
8
8
|
bytesReceived: number;
|
|
9
9
|
codecId: string;
|
|
10
|
-
concealedSamples: number;
|
|
11
|
-
concealmentEvents: number;
|
|
12
|
-
fecPacketsDiscarded: number;
|
|
13
|
-
fecPacketsReceived: number;
|
|
10
|
+
concealedSamples: number | undefined;
|
|
11
|
+
concealmentEvents: number | undefined;
|
|
12
|
+
fecPacketsDiscarded: number | undefined;
|
|
13
|
+
fecPacketsReceived: number | undefined;
|
|
14
14
|
headerBytesReceived: number;
|
|
15
15
|
id: string;
|
|
16
|
-
insertedSamplesForDeceleration: number;
|
|
16
|
+
insertedSamplesForDeceleration: number | undefined;
|
|
17
17
|
jitter: number;
|
|
18
18
|
jitterBufferDelay: number;
|
|
19
19
|
jitterBufferEmittedCount: number;
|
|
20
|
-
jitterBufferMinimumDelay: number;
|
|
21
|
-
jitterBufferTargetDelay: number;
|
|
20
|
+
jitterBufferMinimumDelay: number | undefined;
|
|
21
|
+
jitterBufferTargetDelay: number | undefined;
|
|
22
22
|
kind: string;
|
|
23
23
|
lastPacketReceivedTimestamp: number;
|
|
24
|
-
mediaType: string;
|
|
24
|
+
mediaType: string | undefined;
|
|
25
25
|
mid: string;
|
|
26
|
-
packetsDiscarded: number;
|
|
26
|
+
packetsDiscarded: number | undefined;
|
|
27
27
|
packetsLost: number;
|
|
28
28
|
packetsReceived: number;
|
|
29
|
-
removedSamplesForAcceleration: number;
|
|
30
|
-
silentConcealedSamples: number;
|
|
29
|
+
removedSamplesForAcceleration: number | undefined;
|
|
30
|
+
silentConcealedSamples: number | undefined;
|
|
31
31
|
ssrc: number;
|
|
32
32
|
timestamp: number;
|
|
33
|
-
totalAudioEnergy: number;
|
|
34
|
-
totalSamplesDuration: number;
|
|
35
|
-
totalSamplesReceived: number;
|
|
36
|
-
trackIdentifier: string;
|
|
37
|
-
transportId: string;
|
|
33
|
+
totalAudioEnergy: number | undefined;
|
|
34
|
+
totalSamplesDuration: number | undefined;
|
|
35
|
+
totalSamplesReceived: number | undefined;
|
|
36
|
+
trackIdentifier: string | undefined;
|
|
37
|
+
transportId: string | undefined;
|
|
38
38
|
type: string;
|
|
39
39
|
|
|
40
40
|
/* additional, custom stats */
|
|
41
|
-
bitrate: number;
|
|
41
|
+
bitrate: number | undefined;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
@@ -46,47 +46,47 @@ export class InboundAudioStats {
|
|
|
46
46
|
*/
|
|
47
47
|
export class InboundVideoStats {
|
|
48
48
|
bytesReceived: number;
|
|
49
|
-
codecId: string;
|
|
50
|
-
firCount: number;
|
|
51
|
-
frameHeight: number;
|
|
52
|
-
frameWidth: number;
|
|
53
|
-
framesAssembledFromMultiplePackets: number;
|
|
54
|
-
framesDecoded: number;
|
|
55
|
-
framesDropped: number;
|
|
56
|
-
framesPerSecond: number;
|
|
57
|
-
framesReceived: number;
|
|
58
|
-
freezeCount: number;
|
|
59
|
-
googTimingFrameInfo: string;
|
|
49
|
+
codecId: string | undefined;
|
|
50
|
+
firCount: number | undefined;
|
|
51
|
+
frameHeight: number | undefined;
|
|
52
|
+
frameWidth: number | undefined;
|
|
53
|
+
framesAssembledFromMultiplePackets: number | undefined;
|
|
54
|
+
framesDecoded: number | undefined;
|
|
55
|
+
framesDropped: number | undefined;
|
|
56
|
+
framesPerSecond: number | undefined;
|
|
57
|
+
framesReceived: number | undefined;
|
|
58
|
+
freezeCount: number | undefined;
|
|
59
|
+
googTimingFrameInfo: string | undefined;
|
|
60
60
|
headerBytesReceived: number;
|
|
61
61
|
id: string;
|
|
62
62
|
jitter: number;
|
|
63
63
|
jitterBufferDelay: number;
|
|
64
64
|
jitterBufferEmittedCount: number;
|
|
65
|
-
keyFramesDecoded: number;
|
|
65
|
+
keyFramesDecoded: number | undefined;
|
|
66
66
|
kind: string;
|
|
67
|
-
lastPacketReceivedTimestamp: number;
|
|
68
|
-
mediaType: string;
|
|
67
|
+
lastPacketReceivedTimestamp: number | undefined;
|
|
68
|
+
mediaType: string | undefined;
|
|
69
69
|
mid: string;
|
|
70
|
-
nackCount: number;
|
|
70
|
+
nackCount: number | undefined;
|
|
71
71
|
packetsLost: number;
|
|
72
72
|
packetsReceived: number;
|
|
73
|
-
pauseCount: number;
|
|
74
|
-
pliCount: number;
|
|
73
|
+
pauseCount: number | undefined;
|
|
74
|
+
pliCount: number | undefined;
|
|
75
75
|
ssrc: number;
|
|
76
76
|
timestamp: number;
|
|
77
|
-
totalAssemblyTime: number;
|
|
78
|
-
totalDecodeTime: number;
|
|
79
|
-
totalFreezesDuration: number;
|
|
80
|
-
totalInterFrameDelay: number;
|
|
81
|
-
totalPausesDuration: number;
|
|
82
|
-
totalProcessingDelay: number;
|
|
83
|
-
totalSquaredInterFrameDelay: number;
|
|
84
|
-
trackIdentifier: string;
|
|
85
|
-
transportId: string;
|
|
77
|
+
totalAssemblyTime: number | undefined;
|
|
78
|
+
totalDecodeTime: number | undefined;
|
|
79
|
+
totalFreezesDuration: number | undefined;
|
|
80
|
+
totalInterFrameDelay: number | undefined;
|
|
81
|
+
totalPausesDuration: number | undefined;
|
|
82
|
+
totalProcessingDelay: number | undefined;
|
|
83
|
+
totalSquaredInterFrameDelay: number | undefined;
|
|
84
|
+
trackIdentifier: string | undefined;
|
|
85
|
+
transportId: string | undefined;
|
|
86
86
|
type: string;
|
|
87
87
|
|
|
88
88
|
/* additional, custom stats */
|
|
89
|
-
bitrate: number;
|
|
89
|
+
bitrate: number | undefined;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
|
@@ -95,60 +95,63 @@ export class InboundVideoStats {
|
|
|
95
95
|
export class InboundRTPStats {
|
|
96
96
|
/* common stats */
|
|
97
97
|
bytesReceived: number;
|
|
98
|
-
codecId: string;
|
|
98
|
+
codecId: string | undefined;
|
|
99
99
|
headerBytesReceived: number;
|
|
100
100
|
id: string;
|
|
101
101
|
jitter: number;
|
|
102
102
|
jitterBufferDelay: number;
|
|
103
103
|
jitterBufferEmittedCount: number;
|
|
104
104
|
kind: string;
|
|
105
|
-
lastPacketReceivedTimestamp: number;
|
|
106
|
-
mediaType: string;
|
|
105
|
+
lastPacketReceivedTimestamp: number | undefined;
|
|
106
|
+
mediaType: string | undefined;
|
|
107
107
|
mid: string;
|
|
108
108
|
packetsLost: number;
|
|
109
109
|
packetsReceived: number;
|
|
110
|
+
playoutId: string | undefined;
|
|
111
|
+
qpsum: number | undefined;
|
|
112
|
+
remoteId: string | undefined;
|
|
110
113
|
ssrc: number;
|
|
111
114
|
timestamp: number;
|
|
112
|
-
trackIdentifier: string;
|
|
113
|
-
transportId: string;
|
|
115
|
+
trackIdentifier: string | undefined;
|
|
116
|
+
transportId: string | undefined;
|
|
114
117
|
type: string;
|
|
115
118
|
|
|
116
119
|
/* audio specific stats */
|
|
117
|
-
audioLevel: number;
|
|
118
|
-
concealedSamples: number;
|
|
119
|
-
concealmentEvents: number;
|
|
120
|
-
fecPacketsDiscarded: number;
|
|
121
|
-
fecPacketsReceived: number;
|
|
122
|
-
insertedSamplesForDeceleration: number;
|
|
123
|
-
jitterBufferMinimumDelay: number;
|
|
124
|
-
jitterBufferTargetDelay: number;
|
|
125
|
-
packetsDiscarded: number;
|
|
126
|
-
removedSamplesForAcceleration: number;
|
|
127
|
-
silentConcealedSamples: number;
|
|
128
|
-
totalAudioEnergy: number;
|
|
129
|
-
totalSamplesDuration: number;
|
|
130
|
-
totalSamplesReceived: number;
|
|
120
|
+
audioLevel: number | undefined;
|
|
121
|
+
concealedSamples: number | undefined;
|
|
122
|
+
concealmentEvents: number | undefined;
|
|
123
|
+
fecPacketsDiscarded: number | undefined;
|
|
124
|
+
fecPacketsReceived: number | undefined;
|
|
125
|
+
insertedSamplesForDeceleration: number | undefined;
|
|
126
|
+
jitterBufferMinimumDelay: number | undefined;
|
|
127
|
+
jitterBufferTargetDelay: number | undefined;
|
|
128
|
+
packetsDiscarded: number | undefined;
|
|
129
|
+
removedSamplesForAcceleration: number | undefined;
|
|
130
|
+
silentConcealedSamples: number | undefined;
|
|
131
|
+
totalAudioEnergy: number | undefined;
|
|
132
|
+
totalSamplesDuration: number | undefined;
|
|
133
|
+
totalSamplesReceived: number | undefined;
|
|
131
134
|
|
|
132
135
|
/* video specific stats */
|
|
133
|
-
firCount: number;
|
|
134
|
-
frameHeight: number;
|
|
135
|
-
frameWidth: number;
|
|
136
|
-
framesAssembledFromMultiplePackets: number;
|
|
137
|
-
framesDecoded: number;
|
|
138
|
-
framesDropped: number;
|
|
139
|
-
framesPerSecond: number;
|
|
140
|
-
framesReceived: number;
|
|
141
|
-
freezeCount: number;
|
|
142
|
-
googTimingFrameInfo: string;
|
|
143
|
-
keyFramesDecoded: number;
|
|
144
|
-
nackCount: number;
|
|
145
|
-
pauseCount: number;
|
|
146
|
-
pliCount: number;
|
|
147
|
-
totalAssemblyTime: number;
|
|
148
|
-
totalDecodeTime: number;
|
|
149
|
-
totalFreezesDuration: number;
|
|
150
|
-
totalInterFrameDelay: number;
|
|
151
|
-
totalPausesDuration: number;
|
|
152
|
-
totalProcessingDelay: number;
|
|
153
|
-
totalSquaredInterFrameDelay: number;
|
|
136
|
+
firCount: number | undefined;
|
|
137
|
+
frameHeight: number | undefined;
|
|
138
|
+
frameWidth: number | undefined;
|
|
139
|
+
framesAssembledFromMultiplePackets: number | undefined;
|
|
140
|
+
framesDecoded: number | undefined;
|
|
141
|
+
framesDropped: number | undefined;
|
|
142
|
+
framesPerSecond: number | undefined;
|
|
143
|
+
framesReceived: number | undefined;
|
|
144
|
+
freezeCount: number | undefined;
|
|
145
|
+
googTimingFrameInfo: string | undefined;
|
|
146
|
+
keyFramesDecoded: number | undefined;
|
|
147
|
+
nackCount: number | undefined;
|
|
148
|
+
pauseCount: number | undefined;
|
|
149
|
+
pliCount: number | undefined;
|
|
150
|
+
totalAssemblyTime: number | undefined;
|
|
151
|
+
totalDecodeTime: number | undefined;
|
|
152
|
+
totalFreezesDuration: number | undefined;
|
|
153
|
+
totalInterFrameDelay: number | undefined;
|
|
154
|
+
totalPausesDuration: number | undefined;
|
|
155
|
+
totalProcessingDelay: number | undefined;
|
|
156
|
+
totalSquaredInterFrameDelay: number | undefined;
|
|
154
157
|
}
|