@webex/internal-plugin-metrics 3.0.0-beta.19 → 3.0.0-beta.190

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.
Files changed (67) hide show
  1. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js +134 -0
  2. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js.map +1 -0
  3. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +451 -0
  4. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -0
  5. package/dist/call-diagnostic/call-diagnostic-metrics.js +511 -0
  6. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -0
  7. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +106 -0
  8. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -0
  9. package/dist/call-diagnostic/config.js +461 -0
  10. package/dist/call-diagnostic/config.js.map +1 -0
  11. package/dist/call-diagnostic/generated-types-temp/ClientEvent.js +7 -0
  12. package/dist/call-diagnostic/generated-types-temp/ClientEvent.js.map +1 -0
  13. package/dist/call-diagnostic/generated-types-temp/Event.js +7 -0
  14. package/dist/call-diagnostic/generated-types-temp/Event.js.map +1 -0
  15. package/dist/call-diagnostic/generated-types-temp/MediaQualityEvent.js +7 -0
  16. package/dist/call-diagnostic/generated-types-temp/MediaQualityEvent.js.map +1 -0
  17. package/dist/config.js +20 -1
  18. package/dist/config.js.map +1 -1
  19. package/dist/index.js +25 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/metrics.js +30 -30
  22. package/dist/metrics.js.map +1 -1
  23. package/dist/metrics.types.js +7 -0
  24. package/dist/metrics.types.js.map +1 -0
  25. package/dist/new-metrics.js +185 -0
  26. package/dist/new-metrics.js.map +1 -0
  27. package/dist/types/batcher.d.ts +2 -0
  28. package/dist/types/call-diagnostic/call-diagnostic-metrics-batcher.d.ts +2 -0
  29. package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +189 -0
  30. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +324 -0
  31. package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +31 -0
  32. package/dist/types/call-diagnostic/config.d.ts +57 -0
  33. package/dist/types/call-diagnostic/generated-types-temp/ClientEvent.d.ts +1112 -0
  34. package/dist/types/call-diagnostic/generated-types-temp/Event.d.ts +4851 -0
  35. package/dist/types/call-diagnostic/generated-types-temp/MediaQualityEvent.d.ts +2121 -0
  36. package/dist/types/client-metrics-batcher.d.ts +2 -0
  37. package/dist/types/config.d.ts +35 -0
  38. package/dist/types/index.d.ts +11 -0
  39. package/dist/types/metrics.d.ts +3 -0
  40. package/dist/types/metrics.types.d.ts +87 -0
  41. package/dist/types/new-metrics.d.ts +83 -0
  42. package/package.json +12 -8
  43. package/src/call-diagnostic/call-diagnostic-metrics-batcher.ts +148 -0
  44. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +408 -0
  45. package/src/call-diagnostic/call-diagnostic-metrics.ts +528 -0
  46. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +102 -0
  47. package/src/call-diagnostic/config.ts +455 -0
  48. package/src/call-diagnostic/generated-types-temp/ClientEvent.ts +2357 -0
  49. package/src/call-diagnostic/generated-types-temp/Event.ts +7669 -0
  50. package/src/call-diagnostic/generated-types-temp/MediaQualityEvent.ts +2321 -0
  51. package/src/config.js +19 -0
  52. package/src/index.ts +39 -0
  53. package/src/metrics.js +25 -27
  54. package/src/metrics.types.ts +131 -0
  55. package/src/new-metrics.ts +170 -0
  56. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +243 -0
  57. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +474 -0
  58. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +722 -0
  59. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +76 -0
  60. package/test/unit/spec/metrics.js +65 -97
  61. package/test/unit/spec/new-metrics.ts +91 -0
  62. package/tsconfig.json +6 -0
  63. package/dist/call-diagnostic-events-batcher.js +0 -60
  64. package/dist/call-diagnostic-events-batcher.js.map +0 -1
  65. package/src/call-diagnostic-events-batcher.js +0 -62
  66. package/src/index.js +0 -17
  67. package/test/unit/spec/call-diagnostic-events-batcher.js +0 -195
@@ -0,0 +1,2321 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * This file was automatically generated by json-schema-to-typescript.
4
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
5
+ * and run json-schema-to-typescript to regenerate this file.
6
+ */
7
+
8
+ /**
9
+ * Media Quality Events from media services (e.g. Linus, Edonus, Clients)
10
+ */
11
+ export interface MediaQualityEvent {
12
+ canProceed: boolean;
13
+ state?: string;
14
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard" | "gamestate";
15
+ csi?: number;
16
+ /**
17
+ * media capability for both transmit and receive
18
+ */
19
+ mediaCapabilities?: {
20
+ /**
21
+ * explicit indication of media capabilities. true=supported
22
+ */
23
+ tx: {
24
+ audio: boolean;
25
+ video: boolean;
26
+ share: boolean;
27
+ share_audio: boolean;
28
+ whiteboard: boolean;
29
+ gamestate?: boolean;
30
+ };
31
+ /**
32
+ * explicit indication of media capabilities. true=supported
33
+ */
34
+ rx: {
35
+ audio: boolean;
36
+ video: boolean;
37
+ share: boolean;
38
+ share_audio: boolean;
39
+ whiteboard: boolean;
40
+ gamestate?: boolean;
41
+ };
42
+ };
43
+ mediaLines?: {
44
+ mediaType: "audio" | "video" | "share" | "share_audio" | "whiteboard" | "gamestate";
45
+ remoteIP?: string;
46
+ localIP?: string;
47
+ localNetworkPrefix?: string;
48
+ localPort?: number;
49
+ remotePort?: number;
50
+ protocol: "udp" | "tcp" | "xtls" | "unknown";
51
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
52
+ clusterName?: string;
53
+ status?: "succeeded" | "in-progress" | "failed";
54
+ failureReason?: "network" | "transport" | "rejected" | "timeout" | "notstarted" | "succeeded";
55
+ failureDescription?: string;
56
+ errorCode?: number;
57
+ mediaLineData?: {};
58
+ iceMangled?: boolean;
59
+ transactionId?: string;
60
+ ufrag?: string;
61
+ sentReqTime?: string;
62
+ recvRespTime?: string;
63
+ }[];
64
+ /**
65
+ * allows client to specify media preferences
66
+ */
67
+ clientMediaPreferences?: {
68
+ preferTranscoding: boolean;
69
+ };
70
+ pstnAudioType?: "dial-in" | "dial-out";
71
+ success?: boolean;
72
+ isTranscoded?: boolean;
73
+ isGatewayed?: boolean;
74
+ isComposed?: boolean;
75
+ /**
76
+ * determine how the events are processed as well as how the reports are aggregated and sliced
77
+ */
78
+ registrationMode?: "SIP" | "Cloud" | "CloudAware";
79
+ /**
80
+ * protocols used to help determine how the events are processed as well as how the reports are aggregated and sliced
81
+ */
82
+ protocol?: "SIP" | "H323" | "Locus" | "WebRTC";
83
+ /**
84
+ * The underlying service provider of the call.
85
+ */
86
+ meetingPlatform?: "MsTeams" | "GoogleMeet" | "Zoom" | "Webex";
87
+ labels?: string[];
88
+ webexServiceType?: "MC" | "EC" | "SC" | "TC" | "AA" | "RA" | "NBR" | "WRF" | "HOL";
89
+ /**
90
+ * this defines the sub service type
91
+ */
92
+ webexSubServiceType?: "PMR" | "Event" | "Training" | "ScheduleMeeting" | "ScheduledMeeting" | "Webinar" | "others";
93
+ ivrDialogType?:
94
+ | "MEDIA_ON_HOLD"
95
+ | "ANNOUNCEMENT"
96
+ | "TONE"
97
+ | "COLLECT_PIN"
98
+ | "PROMPT"
99
+ | "MEDIA_SERVICE_AGENT"
100
+ | "COLLECT";
101
+ ivrDialogResult?:
102
+ | "SUCCESS"
103
+ | "FAILURE"
104
+ | "HOST_PIN_MATCH"
105
+ | "GUEST_PIN_MATCH"
106
+ | "PANELIST_PIN_MATCH"
107
+ | "NO_MATCH"
108
+ | "INVALID_PIN";
109
+ callType?:
110
+ | "VIDEO_DIALIN"
111
+ | "VIDEO_DIALOUT"
112
+ | "CASCADE"
113
+ | "HYBRID_CASCADE"
114
+ | "PSTN_SIP"
115
+ | "PSTN_DIALIN"
116
+ | "PSTN_DIALOUT"
117
+ | "PSTN_ONLY_DIALIN"
118
+ | "PSTN_ONLY_DIALOUT"
119
+ | "H323"
120
+ | "H323_IP"
121
+ | "SIP_ENTERPRISE"
122
+ | "SIP_MOBILE"
123
+ | "SIP_NATIONAL"
124
+ | "SIP_INTERNATIONAL"
125
+ | "SIP_EMERGENCY"
126
+ | "SIP_OPERATOR"
127
+ | "SIP_SHORTCODE"
128
+ | "SIP_TOLLFREE"
129
+ | "SIP_PREMIUM"
130
+ | "SIP_URI"
131
+ | "SIP_INBOUND"
132
+ | "UNKNOWN"
133
+ | "ZTM"
134
+ | "SIP_MEETING";
135
+ eventData?: {};
136
+ derivedSipClientType?:
137
+ | "SIP_CE_SINGLE_SCREEN"
138
+ | "SIP_CE_MULTI_SCREEN"
139
+ | "SIP_JABBER"
140
+ | "SIP_TIP_SINGLE_SCREEN"
141
+ | "SIP_TIP_THREE_SCREEN"
142
+ | "SIP_PSTN"
143
+ | "SIP_OTHER"
144
+ | "SIP_WEBEX_CASCADE"
145
+ | "SIP_NONE";
146
+ /**
147
+ * this defines the major client types
148
+ */
149
+ derivedClientType?:
150
+ | "MEETING_CENTER"
151
+ | "EVENT_CENTER"
152
+ | "TRAINING_CENTER"
153
+ | "TEAMS_CLIENT"
154
+ | "TEAMS_DEVICE"
155
+ | "TEAMS_SHARE"
156
+ | "SIP"
157
+ | "RECORDING"
158
+ | "CLOUD_AWARE_SIP"
159
+ | "TEAMS_WXC_CLIENT"
160
+ | "WXC_CLIENT"
161
+ | "WXC_DEVICE"
162
+ | "WEBEX_JS_SDK"
163
+ | "VOICEA_CLIENT"
164
+ | "CISCO_SIP_GW"
165
+ | "WEBEX_SDK"
166
+ | "CPAAS_THIRD_PARTY_SDK"
167
+ | "WXC_THIRD_PARTY";
168
+ /**
169
+ * this defines the sub types of clients
170
+ */
171
+ derivedSubClientType?:
172
+ | "DESKTOP_APP"
173
+ | "DESKTOP_APP_VDI"
174
+ | "DEVICE_CURRENT"
175
+ | "DEVICE_LEGACY_2020"
176
+ | "HVDI_APP"
177
+ | "MOBILE_APP"
178
+ | "VDI_APP"
179
+ | "WEB_APP"
180
+ | "MOBILE_NETWORK"
181
+ | "HOLOGRAM_HEADSET_APP";
182
+ serverRole?:
183
+ | "CONFERENCE"
184
+ | "TRANSCODER"
185
+ | "WHITEBOARD_INJECTOR"
186
+ | "MS_TEAMS_CONFERENCE"
187
+ | "RECORDING"
188
+ | "GATEWAY"
189
+ | "GATEWAY_CLIENT_SIDE"
190
+ | "UNKNOWN"
191
+ | "HOLOGRAM_RENDER";
192
+ reconnect?: boolean;
193
+ retryCount?: number;
194
+ meetSimple?: boolean;
195
+ /**
196
+ * represents media quality status report such as no media or drop out
197
+ */
198
+ mediaStatus?: {
199
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
200
+ mediaSuccess?: boolean;
201
+ shareType?:
202
+ | "cb-normal-share"
203
+ | "ce-airplay-share"
204
+ | "ce-direct-share"
205
+ | "ce-gui-loopback-share"
206
+ | "ce-input-source-share"
207
+ | "ce-input-source-share-hdmi"
208
+ | "ce-input-source-share-usbc"
209
+ | "ce-jpg-share"
210
+ | "ce-miracast-share"
211
+ | "mcs-normal-share"
212
+ | "mcs-normal-audio-share"
213
+ | "mcs-hfps-share"
214
+ | "mcs-hfps-audio-share";
215
+ isTransmitter?: boolean;
216
+ audioJoinType?:
217
+ | "phone-call-in"
218
+ | "phone-call-back"
219
+ | "voip"
220
+ | "device-call-back"
221
+ | "never-join-audio"
222
+ | "tried-but-never-join";
223
+ /**
224
+ * indicates transport type used
225
+ */
226
+ transportType?: "UDP" | "TCP" | "xTLS" | "TLS";
227
+ additionalData?: {};
228
+ };
229
+ shareInstanceId?: string;
230
+ hologramStreamId?: string;
231
+ /**
232
+ * represents all of the properities that could cause delay during media setup process.
233
+ */
234
+ audioSetupDelay?: {
235
+ floorReqSentReceived?: number;
236
+ floorRespSentReceived?: number;
237
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
238
+ txReqFloorGranted?: number;
239
+ txSessionCreateConfirm?: number;
240
+ txApeEnrollConfirm?: number;
241
+ txUIDelay?: number;
242
+ txScreenCaptureDelay?: number;
243
+ txScreenCaptureDelayReasonCode?: number;
244
+ txShareStartOverallDelay?: number;
245
+ rx1stPacket2RenderDelay?: number;
246
+ rxGranted2RenderDelay?: number;
247
+ rxFailFrameNumB4Success?: number;
248
+ e2eFirstFrameDelay?: number;
249
+ CBSessionRespToLocusFloorGrantDelay?: number;
250
+ CBShareReceiveToServerShareTransmitDelay?: number;
251
+ CBShareReceiveToTPGWFirstKeyFrameDelay?: number;
252
+ TPGWFirstKeyFrameToServerShareTransmitDelay?: number;
253
+ MCSSessionActivateToLocusFloorGrantDelay?: number;
254
+ ServerShareInitiateToLocusFloorGrantDelay?: number;
255
+ LocusFloorGrantToCBSessionStartDelay?: number;
256
+ ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;
257
+ LocusFloorGrantToTPGWFloorGrantDelay?: number;
258
+ LocusFloorGrantToReceiverNotificationDelay?: number;
259
+ CBShareSessionRespDelay?: number;
260
+ LocusShareFloorGrantRespDelay?: number;
261
+ ServerShareFloorGrantRespDelay?: number;
262
+ joinRespRxStart?: number;
263
+ joinRespTxStart?: number;
264
+ maxRemoteLossRate?: number;
265
+ media2SignalDelay?: number;
266
+ warholDownloadTime?: number;
267
+ contentDownloadTime?: number;
268
+ boardCreationTime?: number;
269
+ totalBoardServiceRespDelay?: number;
270
+ };
271
+ /**
272
+ * represents all of the properities that could cause delay during media setup process.
273
+ */
274
+ videoSetupDelay?: {
275
+ floorReqSentReceived?: number;
276
+ floorRespSentReceived?: number;
277
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
278
+ txReqFloorGranted?: number;
279
+ txSessionCreateConfirm?: number;
280
+ txApeEnrollConfirm?: number;
281
+ txUIDelay?: number;
282
+ txScreenCaptureDelay?: number;
283
+ txScreenCaptureDelayReasonCode?: number;
284
+ txShareStartOverallDelay?: number;
285
+ rx1stPacket2RenderDelay?: number;
286
+ rxGranted2RenderDelay?: number;
287
+ rxFailFrameNumB4Success?: number;
288
+ e2eFirstFrameDelay?: number;
289
+ CBSessionRespToLocusFloorGrantDelay?: number;
290
+ CBShareReceiveToServerShareTransmitDelay?: number;
291
+ CBShareReceiveToTPGWFirstKeyFrameDelay?: number;
292
+ TPGWFirstKeyFrameToServerShareTransmitDelay?: number;
293
+ MCSSessionActivateToLocusFloorGrantDelay?: number;
294
+ ServerShareInitiateToLocusFloorGrantDelay?: number;
295
+ LocusFloorGrantToCBSessionStartDelay?: number;
296
+ ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;
297
+ LocusFloorGrantToTPGWFloorGrantDelay?: number;
298
+ LocusFloorGrantToReceiverNotificationDelay?: number;
299
+ CBShareSessionRespDelay?: number;
300
+ LocusShareFloorGrantRespDelay?: number;
301
+ ServerShareFloorGrantRespDelay?: number;
302
+ joinRespRxStart?: number;
303
+ joinRespTxStart?: number;
304
+ maxRemoteLossRate?: number;
305
+ media2SignalDelay?: number;
306
+ warholDownloadTime?: number;
307
+ contentDownloadTime?: number;
308
+ boardCreationTime?: number;
309
+ totalBoardServiceRespDelay?: number;
310
+ };
311
+ /**
312
+ * represents all of the properities that could cause delay during media setup process.
313
+ */
314
+ shareSetupDelay?: {
315
+ floorReqSentReceived?: number;
316
+ floorRespSentReceived?: number;
317
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
318
+ txReqFloorGranted?: number;
319
+ txSessionCreateConfirm?: number;
320
+ txApeEnrollConfirm?: number;
321
+ txUIDelay?: number;
322
+ txScreenCaptureDelay?: number;
323
+ txScreenCaptureDelayReasonCode?: number;
324
+ txShareStartOverallDelay?: number;
325
+ rx1stPacket2RenderDelay?: number;
326
+ rxGranted2RenderDelay?: number;
327
+ rxFailFrameNumB4Success?: number;
328
+ e2eFirstFrameDelay?: number;
329
+ CBSessionRespToLocusFloorGrantDelay?: number;
330
+ CBShareReceiveToServerShareTransmitDelay?: number;
331
+ CBShareReceiveToTPGWFirstKeyFrameDelay?: number;
332
+ TPGWFirstKeyFrameToServerShareTransmitDelay?: number;
333
+ MCSSessionActivateToLocusFloorGrantDelay?: number;
334
+ ServerShareInitiateToLocusFloorGrantDelay?: number;
335
+ LocusFloorGrantToCBSessionStartDelay?: number;
336
+ ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;
337
+ LocusFloorGrantToTPGWFloorGrantDelay?: number;
338
+ LocusFloorGrantToReceiverNotificationDelay?: number;
339
+ CBShareSessionRespDelay?: number;
340
+ LocusShareFloorGrantRespDelay?: number;
341
+ ServerShareFloorGrantRespDelay?: number;
342
+ joinRespRxStart?: number;
343
+ joinRespTxStart?: number;
344
+ maxRemoteLossRate?: number;
345
+ media2SignalDelay?: number;
346
+ warholDownloadTime?: number;
347
+ contentDownloadTime?: number;
348
+ boardCreationTime?: number;
349
+ totalBoardServiceRespDelay?: number;
350
+ };
351
+ /**
352
+ * represents all of the properities that could cause delay during media setup process.
353
+ */
354
+ shareAudioSetupDelay?: {
355
+ floorReqSentReceived?: number;
356
+ floorRespSentReceived?: number;
357
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
358
+ txReqFloorGranted?: number;
359
+ txSessionCreateConfirm?: number;
360
+ txApeEnrollConfirm?: number;
361
+ txUIDelay?: number;
362
+ txScreenCaptureDelay?: number;
363
+ txScreenCaptureDelayReasonCode?: number;
364
+ txShareStartOverallDelay?: number;
365
+ rx1stPacket2RenderDelay?: number;
366
+ rxGranted2RenderDelay?: number;
367
+ rxFailFrameNumB4Success?: number;
368
+ e2eFirstFrameDelay?: number;
369
+ CBSessionRespToLocusFloorGrantDelay?: number;
370
+ CBShareReceiveToServerShareTransmitDelay?: number;
371
+ CBShareReceiveToTPGWFirstKeyFrameDelay?: number;
372
+ TPGWFirstKeyFrameToServerShareTransmitDelay?: number;
373
+ MCSSessionActivateToLocusFloorGrantDelay?: number;
374
+ ServerShareInitiateToLocusFloorGrantDelay?: number;
375
+ LocusFloorGrantToCBSessionStartDelay?: number;
376
+ ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;
377
+ LocusFloorGrantToTPGWFloorGrantDelay?: number;
378
+ LocusFloorGrantToReceiverNotificationDelay?: number;
379
+ CBShareSessionRespDelay?: number;
380
+ LocusShareFloorGrantRespDelay?: number;
381
+ ServerShareFloorGrantRespDelay?: number;
382
+ joinRespRxStart?: number;
383
+ joinRespTxStart?: number;
384
+ maxRemoteLossRate?: number;
385
+ media2SignalDelay?: number;
386
+ warholDownloadTime?: number;
387
+ contentDownloadTime?: number;
388
+ boardCreationTime?: number;
389
+ totalBoardServiceRespDelay?: number;
390
+ };
391
+ /**
392
+ * represents all of the properities that could cause delay during media setup process.
393
+ */
394
+ whiteboardSetupDelay?: {
395
+ floorReqSentReceived?: number;
396
+ floorRespSentReceived?: number;
397
+ mediaType?: "audio" | "video" | "share" | "share_audio" | "whiteboard";
398
+ txReqFloorGranted?: number;
399
+ txSessionCreateConfirm?: number;
400
+ txApeEnrollConfirm?: number;
401
+ txUIDelay?: number;
402
+ txScreenCaptureDelay?: number;
403
+ txScreenCaptureDelayReasonCode?: number;
404
+ txShareStartOverallDelay?: number;
405
+ rx1stPacket2RenderDelay?: number;
406
+ rxGranted2RenderDelay?: number;
407
+ rxFailFrameNumB4Success?: number;
408
+ e2eFirstFrameDelay?: number;
409
+ CBSessionRespToLocusFloorGrantDelay?: number;
410
+ CBShareReceiveToServerShareTransmitDelay?: number;
411
+ CBShareReceiveToTPGWFirstKeyFrameDelay?: number;
412
+ TPGWFirstKeyFrameToServerShareTransmitDelay?: number;
413
+ MCSSessionActivateToLocusFloorGrantDelay?: number;
414
+ ServerShareInitiateToLocusFloorGrantDelay?: number;
415
+ LocusFloorGrantToCBSessionStartDelay?: number;
416
+ ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;
417
+ LocusFloorGrantToTPGWFloorGrantDelay?: number;
418
+ LocusFloorGrantToReceiverNotificationDelay?: number;
419
+ CBShareSessionRespDelay?: number;
420
+ LocusShareFloorGrantRespDelay?: number;
421
+ ServerShareFloorGrantRespDelay?: number;
422
+ joinRespRxStart?: number;
423
+ joinRespTxStart?: number;
424
+ maxRemoteLossRate?: number;
425
+ media2SignalDelay?: number;
426
+ warholDownloadTime?: number;
427
+ contentDownloadTime?: number;
428
+ boardCreationTime?: number;
429
+ totalBoardServiceRespDelay?: number;
430
+ };
431
+ isFocus?: boolean;
432
+ processingDelay?: number;
433
+ shareType?:
434
+ | "cb-normal-share"
435
+ | "ce-airplay-share"
436
+ | "ce-direct-share"
437
+ | "ce-gui-loopback-share"
438
+ | "ce-input-source-share"
439
+ | "ce-input-source-share-hdmi"
440
+ | "ce-input-source-share-usbc"
441
+ | "ce-jpg-share"
442
+ | "ce-miracast-share"
443
+ | "mcs-normal-share"
444
+ | "mcs-normal-audio-share"
445
+ | "mcs-hfps-share"
446
+ | "mcs-hfps-audio-share";
447
+ isShareBeingTakenOver?: boolean;
448
+ floorBeneficiaryUpdated?: boolean;
449
+ meetingJoinedTime?: string;
450
+ meetingScheduledTime?: string;
451
+ e2eeKeyEpoch?: number;
452
+ e2eeDecompressRatio?: number;
453
+ keyResponses?: {
454
+ gotKeyTime?: number;
455
+ useKeyTime?: number;
456
+ cacheKeyTime?: number;
457
+ }[];
458
+ e2eeVersion?: "E2EEV1" | "E2EEV2" | "E2EEV3";
459
+ isConvergedArchitectureEnabled?: boolean;
460
+ callingServiceType?: "CUCM" | "WEBEXCALLING" | "BROADWORKS" | "LOCUS";
461
+ inLobby?: boolean;
462
+ isVIPMeeting?: boolean;
463
+ webexAppEntrypoint?: string;
464
+ firstParticipant?: boolean;
465
+ isImmersiveShare?: boolean;
466
+ /**
467
+ * Request/Response Time for Internal Services
468
+ */
469
+ registeredTimestamps?: {
470
+ locusCreateConfluenceRequestTime?: string;
471
+ locusCreateConfluenceResponseTime?: string;
472
+ locusCreateVenueRequestTime?: string;
473
+ locusCreateVenueResponseTime?: string;
474
+ };
475
+ skipInterstitialWindow?: boolean;
476
+ callDurationSecs?: number;
477
+ /**
478
+ * Details associated with a breakout move
479
+ */
480
+ breakout?: {
481
+ moveType?: "between_breakout" | "to_breakout" | "to_main";
482
+ trigger?: "assignment_changed" | "client_initiated" | "session_ended" | "session_started";
483
+ startState?: "joined" | "lobby";
484
+ endState?: "joined" | "lobby";
485
+ };
486
+ /**
487
+ * Latency values associated with breakout session
488
+ */
489
+ breakoutLatency?: {
490
+ boBreakoutMoveProcessed?: number;
491
+ boBreakoutMoveResp?: number;
492
+ boLocusBreakoutMoveResp?: number;
493
+ locusBreakoutMoveResp?: number;
494
+ orpheusConfluenceMoveReqResp?: number;
495
+ };
496
+ /**
497
+ * two-way whiteboard related info
498
+ */
499
+ whiteboard?: {
500
+ action?: "open" | "create";
501
+ type?: "whiteboard" | "annotation";
502
+ capability?: "one_way" | "two_way";
503
+ granted?: "one_way" | "two_way";
504
+ };
505
+ /**
506
+ * ROAP message details
507
+ */
508
+ roap?: {
509
+ type?:
510
+ | "ANSWER"
511
+ | "ERROR"
512
+ | "OFFER"
513
+ | "OFFER_REQUEST"
514
+ | "OFFER_RESPONSE"
515
+ | "OK"
516
+ | "OKAY"
517
+ | "TURN_DISCOVERY_REQUEST"
518
+ | "TURN_DISCOVERY_RESPONSE";
519
+ messageType?:
520
+ | "ANSWER"
521
+ | "ERROR"
522
+ | "OFFER"
523
+ | "OFFER_REQUEST"
524
+ | "OFFER_RESPONSE"
525
+ | "OK"
526
+ | "OKAY"
527
+ | "TURN_DISCOVERY_REQUEST"
528
+ | "TURN_DISCOVERY_RESPONSE";
529
+ error?: string;
530
+ duration?: number;
531
+ seq?: number;
532
+ };
533
+ trigger?: "dummyTrigger1" | "dummyTrigger2" | "media-quality";
534
+ name: "server.mediaquality.event" | "client.mediaquality.event";
535
+ /**
536
+ * Base type for the various identifiers used to connect the dots.
537
+ * In general, these should be populated whenever possible. Subtypes may make a particular key required.
538
+ *
539
+ */
540
+ identifiers: {
541
+ attendeeId?: string;
542
+ breakoutGroupId?: string;
543
+ breakoutMoveId?: string;
544
+ breakoutSessionId?: string;
545
+ confluenceId?: string;
546
+ /**
547
+ * Set of identifiers dedicated to CPaaS clients
548
+ * In general, these should be populated whenever possible. Subtypes may make a particular key required.
549
+ *
550
+ */
551
+ cpaasIdentifiers?: {
552
+ imiTenantId: string;
553
+ devClientId: string;
554
+ imiServiceId: string;
555
+ imiAppId: string;
556
+ sessionId: string;
557
+ sessionInstanceId: string;
558
+ };
559
+ csdmDeviceUrl?: string;
560
+ destinationBreakoutSessionId?: string;
561
+ destinationLocusSessionId?: string;
562
+ destinationLocusUrl?: string;
563
+ destinationVenueId?: string;
564
+ deviceId?: string;
565
+ ivrCallId?: string;
566
+ ivrDialogId?: string;
567
+ ivrId?: string;
568
+ locusId?: string;
569
+ locusSessionId?: string;
570
+ locusStartTime?: string;
571
+ locusUrl?: string;
572
+ mediaAgentAlias?: string;
573
+ mediaAgentGroupId?: string;
574
+ meetClusterName?: string;
575
+ meetingLookupUrl?: string;
576
+ meetingOrgId?: string;
577
+ msteamsTenantGuid?: string;
578
+ msteamsConferenceId?: string;
579
+ oauth2ClientId?: string;
580
+ orgId?: string;
581
+ provisionalCorrelationId?: string;
582
+ roomId?: string;
583
+ sipCallId?: string;
584
+ sipSessionId?: {
585
+ local?: string;
586
+ remote?: string;
587
+ };
588
+ sipUri?: string;
589
+ subConfId?: string;
590
+ tenantId?: string;
591
+ trackingId?: string;
592
+ userId?: string;
593
+ venueId?: string;
594
+ venueUrl?: string;
595
+ whiteboardUrl?: string;
596
+ webexConferenceId?: number;
597
+ webexClusterName?: string;
598
+ webexConferenceIdStr?: string;
599
+ webexDataCenter?: string;
600
+ webexGuestId?: number;
601
+ webexMeetingId?: number;
602
+ webexNodeId?: number;
603
+ webexSiteId?: number;
604
+ webexSiteName?: string;
605
+ webexUserId?: number;
606
+ webexWebDomain?: string;
607
+ correlationId: string;
608
+ };
609
+ /**
610
+ * metadata associated with emitter of the event. This data is included only in the first emitted for a given call and does not need to be repeated with each event.
611
+ */
612
+ sourceMetadata?: {
613
+ mediaEngineSoftwareType: string;
614
+ mediaEngineSoftwareVersion: string;
615
+ applicationSoftwareType: string;
616
+ applicationSoftwareVersion: string;
617
+ hardwareType?: string;
618
+ clientRegion?: string;
619
+ serverRegion?: string;
620
+ serverOrg?: string;
621
+ serverGroup?: string;
622
+ serverAlias?: string;
623
+ serverDeployType?: "private" | "public";
624
+ startTime: string;
625
+ endTime?: string;
626
+ csi?: number[];
627
+ isCascade?: boolean;
628
+ isHybridMedia?: boolean;
629
+ videoMeshClusterName?: string;
630
+ videoMeshServerName?: string;
631
+ isTIP?: boolean;
632
+ isMARI?: boolean;
633
+ has264Checksum?: boolean;
634
+ intervalPeriod?: number;
635
+ cascadePeerRegion?: string;
636
+ cascadePeerOrg?: string;
637
+ cascadePeerGroup?: string;
638
+ cascadePeerAlias?: string;
639
+ cascadePeerServerType?:
640
+ | "CB"
641
+ | "CMS"
642
+ | "HESIOD"
643
+ | "LINUS"
644
+ | "MCC"
645
+ | "MCS"
646
+ | "MES"
647
+ | "MJS"
648
+ | "MRS"
649
+ | "MYGDONUS"
650
+ | "MZM"
651
+ | "TERMINUS"
652
+ | "TPGW"
653
+ | "TA"
654
+ | "HOMER"
655
+ | "SUPERHOMER"
656
+ | "U2C"
657
+ | "WCA"
658
+ | "MSE"
659
+ | "UNKNOWN";
660
+ cascadePeerDeployType?: "private" | "public";
661
+ };
662
+ /**
663
+ * Details of a media edge server which is in the media path but does not generate MQE directly
664
+ */
665
+ edgeInfo?: {
666
+ alias: string;
667
+ publicIP: string;
668
+ privateIP: string;
669
+ version: string;
670
+ labels?: string;
671
+ };
672
+ intervals: {
673
+ intervalNumber: number;
674
+ /**
675
+ * The metadata associated with the emitter of the event. This data is separate from the source metadata and must be emitted with every event.
676
+ */
677
+ intervalMetadata: {
678
+ peerReflexiveIP?: string;
679
+ maskedPeerReflexiveIP?: string;
680
+ remoteMediaIP?: string;
681
+ maskedRemoteMediaIP?: string;
682
+ staticPerformanceLevel?: number;
683
+ processAverageCPU?: number;
684
+ processMaximumCPU?: number;
685
+ systemAverageCPU?: number;
686
+ systemMaximumCPU?: number;
687
+ systemAverageGPU?: number;
688
+ systemMaximumGPU?: number;
689
+ /**
690
+ * this object defines the memory related fields that are tracked in media quality events and reports
691
+ */
692
+ memoryUsage?: {
693
+ processAverageMemoryUsage: number;
694
+ processMaximumMemoryUsage: number;
695
+ systemAverageMemoryUsage: number;
696
+ systemMaximumMemoryUsage: number;
697
+ processMaximumMemoryBytes: number;
698
+ mainProcessMaximumMemoryBytes: number;
699
+ osBitWidth: number;
700
+ cpuBitWidth: number;
701
+ };
702
+ peripherals?: {
703
+ name: "camera" | "microphone" | "speaker";
704
+ information: string;
705
+ driver?: string;
706
+ errorCode?: string;
707
+ connectionType?: unknown;
708
+ bluetoothMode?: unknown;
709
+ }[];
710
+ /**
711
+ * information object for the peripheral
712
+ */
713
+ cameraInfo?: {
714
+ name: "camera" | "microphone" | "speaker";
715
+ information: string;
716
+ driver?: string;
717
+ errorCode?: string;
718
+ connectionType?: unknown;
719
+ bluetoothMode?: unknown;
720
+ };
721
+ /**
722
+ * information object for the peripheral
723
+ */
724
+ microphoneInfo?: {
725
+ name: "camera" | "microphone" | "speaker";
726
+ information: string;
727
+ driver?: string;
728
+ errorCode?: string;
729
+ connectionType?: unknown;
730
+ bluetoothMode?: unknown;
731
+ };
732
+ /**
733
+ * information object for the peripheral
734
+ */
735
+ speakerInfo?: {
736
+ name: "camera" | "microphone" | "speaker";
737
+ information: string;
738
+ driver?: string;
739
+ errorCode?: string;
740
+ connectionType?: unknown;
741
+ bluetoothMode?: unknown;
742
+ };
743
+ /**
744
+ * This object defines the fields related to the CPU being used by the emitter of the event
745
+ */
746
+ cpuInfo?: {
747
+ description: string;
748
+ clockSpeedGigaHertz: number;
749
+ numberOfCores: number;
750
+ architecture: "intel32" | "intel64" | "amd32" | "amd64" | "arm32" | "arm64" | "unknown";
751
+ staticPerformance?: string;
752
+ };
753
+ /**
754
+ * Thread level cpu performance insights
755
+ */
756
+ cpuDataDetail?: {
757
+ processesData?: unknown[];
758
+ coresCpuData?: unknown[];
759
+ coreVariance?: number;
760
+ };
761
+ /**
762
+ * This object defines the fields related to the GPU being used by the emitter of the event
763
+ */
764
+ defaultGpuInfo?: {
765
+ description: string;
766
+ memoryMegaBytes: number;
767
+ };
768
+ otherGpuInfo?: {
769
+ description: string;
770
+ memoryMegaBytes: number;
771
+ }[];
772
+ dpcRecord?: string[];
773
+ mediaLabels?: string[];
774
+ screenResolution?: number;
775
+ screenWidth?: number;
776
+ screenHeight?: number;
777
+ appWindowSize?: number;
778
+ appWindowHeight?: number;
779
+ appWindowWidth?: number;
780
+ meetingUserCount?: number;
781
+ videoUserCount?: number;
782
+ numScreens?: number;
783
+ configuredBitrate?: number;
784
+ };
785
+ audioTransmit: {
786
+ /**
787
+ * contains the transmit related fields common between all session types for each interval
788
+ */
789
+ common: {
790
+ /**
791
+ * contains the fields common to both transmit and receive sessions for each interval
792
+ */
793
+ common: {
794
+ isMain: boolean;
795
+ mariFecEnabled: boolean;
796
+ mariRtxEnabled?: boolean;
797
+ mariQosEnabled: boolean;
798
+ mariLiteEnabled?: boolean;
799
+ multistreamEnabled: boolean;
800
+ isMediaBypassEdge?: boolean;
801
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
802
+ localPort?: number;
803
+ peerReflexivePort?: number;
804
+ remotePort?: number;
805
+ };
806
+ fecPackets: number;
807
+ fecBitrate: number;
808
+ rtxPackets?: number;
809
+ rtxBitrate?: number;
810
+ rtpPackets: number;
811
+ rtpBitrate: number;
812
+ rtcpPackets: number;
813
+ rtcpBitrate: number;
814
+ /**
815
+ * RTCP Information for a given Interval
816
+ */
817
+ txRtcpInfo?: {
818
+ rtcpSrPackets: number;
819
+ rtcpRrPackets: number;
820
+ rtcpReportBlocks: number;
821
+ rtcpSdesPackets: number;
822
+ rtcpByePackets: number;
823
+ rtcpAppPackets: number;
824
+ rtcpRtpFbPacket: number;
825
+ rtcpPsFbPackets: number;
826
+ rtcpPsFbMariPackets: number;
827
+ rtcpPsFbMultistreamPackets: number;
828
+ rtcpXrPackets: number;
829
+ };
830
+ stunPackets: number;
831
+ stunBitrate: number;
832
+ dtlsPackets: number;
833
+ dtlsBitrate: number;
834
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
835
+ maxBitrate: number;
836
+ availableBitrate: number;
837
+ queueDelay: number;
838
+ meanRoundTripTime?: number;
839
+ maxRoundTripTime?: number;
840
+ roundTripTime: number;
841
+ remoteReceiveRate?: number;
842
+ maxRemoteLossRate?: number;
843
+ remoteLossRate?: number;
844
+ meanRemoteLossRate?: number;
845
+ maxRemoteJitter?: number;
846
+ remoteJitter?: number;
847
+ meanRemoteJitter?: number;
848
+ traversalMinDelayMs?: number;
849
+ traversalMaxDelayMs?: number;
850
+ traversalMeanDelayMs?: number;
851
+ rtpInputFifoDelayMs?: number;
852
+ rtpInputFifoMaxDelayMs?: number;
853
+ rtpInputFifoMinDelayMs?: number;
854
+ rtpInputFifoMeanDelayMs?: number;
855
+ };
856
+ streams: {
857
+ /**
858
+ * contains fields common to all transmit streams types
859
+ */
860
+ common: {
861
+ ssci: number;
862
+ duplicateSsci?: number;
863
+ rtpPackets: number;
864
+ transmittedFrameRate: number;
865
+ requestedFrames: number;
866
+ transmittedBitrate: number;
867
+ requestedBitrate: number;
868
+ captureOffset?: number;
869
+ codec: string;
870
+ csi?: number[];
871
+ /**
872
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
873
+ */
874
+ sourceChanges?: {
875
+ /**
876
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
877
+ */
878
+ ssrcChanges: number;
879
+ /**
880
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
881
+ */
882
+ csrcChanges: number;
883
+ };
884
+ };
885
+ backgroundNoiseReductionMode?:
886
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_NONE"
887
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_HIGH_PERFORMANCE"
888
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_LOW_POWER"
889
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_AUTO_HIGH_PERFORMANCE"
890
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_AUTO_LOW_POWER";
891
+ backgroundNoiseReductionTalkerMode?:
892
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_TALKER_NONE"
893
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_CLASSIC_MODE"
894
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_SINGLE_TALKER_MODE"
895
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_MULTI_TALKER_MODE"
896
+ | "AUDIO_BACKGROUND_NOISE_REDUCTION_MUSIC_MODE";
897
+ audioTXSPCStatus?: "AUDIO_SPC_STATUS_DISABLED" | "AUDIO_SPC_STATUS_SUSPENDED" | "AUDIO_SPC_STATUS_ENABLED";
898
+ audioTXSPCLevel?:
899
+ | "AUDIO_NONE"
900
+ | "AUDIO_LOW"
901
+ | "AUDIO_MEDIUM"
902
+ | "AUDIO_NORMAL"
903
+ | "AUDIO_HIGH"
904
+ | "AUDIO_HIGHPLUS"
905
+ | "AUDIO_TOP";
906
+ /**
907
+ * audio encoder engine performance data
908
+ */
909
+ audioEncoderEngineInfo?: {
910
+ /**
911
+ * The number of audio packets sent to the encoder buffer
912
+ */
913
+ encoderBufferPacket?: number;
914
+ /**
915
+ * The number of dropped audio packets before sent to the encoder buffer
916
+ */
917
+ encoderBufferDroppedPacket?: number;
918
+ /**
919
+ * The average processing time (microseconds) on background noise reduction (BNR)
920
+ */
921
+ averageBNRProcessTime?: number;
922
+ /**
923
+ * The average processing time (microseconds) on audio encoder pipeline
924
+ */
925
+ averageEncoderProcessTime?: number;
926
+ };
927
+ /**
928
+ * audio transmitted algorithm modules performance data(AEC,AGC,NR,MultiChannelPreprocess)
929
+ */
930
+ audioAlgorithmModulesInfo?: {
931
+ /**
932
+ * one char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
933
+ */
934
+ aecNearPower: number;
935
+ /**
936
+ * one char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
937
+ */
938
+ aecFarPower: number;
939
+ /**
940
+ * one char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
941
+ */
942
+ aecLinearOutPower?: number;
943
+ /**
944
+ * one char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
945
+ */
946
+ aecOutPower?: number;
947
+ /**
948
+ * one char every 1 minute, 0 indicate 54dB, plus 1 indicate +0.5dB
949
+ */
950
+ aecERLE?: number;
951
+ /**
952
+ * one char every 1 minute, 0 indicate 0dB, plus 1 indicate +0.5dB
953
+ */
954
+ aecERL?: number;
955
+ /**
956
+ * one char every 1 minute, 0 indicate 54dB, plus 1 indicate +0.5dB
957
+ */
958
+ linearAecERLE?: number;
959
+ /**
960
+ * one char every 1 minute, 0 indicate 0ms, plus 1 indicate 10ms
961
+ */
962
+ estDelay?: number;
963
+ /**
964
+ * one char every 1 minute
965
+ */
966
+ aecType?: number;
967
+ /**
968
+ * one unsigned short every 1 minute
969
+ */
970
+ aecCostTime?: number;
971
+ /**
972
+ * one unsigned short every 1 minute
973
+ */
974
+ multichannelChangedDelay?: number;
975
+ /**
976
+ * one unsigend char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
977
+ */
978
+ multichannelDelaySumOutPower?: number;
979
+ /**
980
+ * one unsigend char every 1 minute, 0 indicate 0db, plus 1 indicate -0.5dB
981
+ */
982
+ multichannelAverageOutPower?: number;
983
+ /**
984
+ * one unsigned char every 1 minute, 0 for 0dB, plus 1 for -0.5dB
985
+ */
986
+ speechRMS?: number;
987
+ /**
988
+ * one unsigned char every 1 minute, 0 for 0s, plus 4 for +1s
989
+ */
990
+ speechLength?: number;
991
+ /**
992
+ * one unsigned char every 1 minute, VAD value to reflect speech quality
993
+ */
994
+ speechQuality?: number;
995
+ /**
996
+ * one char every 1 minute.
997
+ */
998
+ remoteIOStatus?: number;
999
+ /**
1000
+ * one char every 1 minute
1001
+ */
1002
+ multichannelPreprocessEnabled?: number;
1003
+ /**
1004
+ * one char every 1 minute
1005
+ */
1006
+ bypassWindowsAPOAllowListEnabled?: number;
1007
+ /**
1008
+ * one char every 1 minute, 0 for 0dB, plus 1 for 0.5dB
1009
+ */
1010
+ bnrSNR?: number;
1011
+ /**
1012
+ * one unsigned short every 1 minute
1013
+ */
1014
+ bnrTRN?: number;
1015
+ /**
1016
+ * one short every 1 minute
1017
+ */
1018
+ ftLeakage?: number;
1019
+ /**
1020
+ * one short every 1 minute
1021
+ */
1022
+ noiseLeakage?: number;
1023
+ /**
1024
+ * one short every 1 minute
1025
+ */
1026
+ echoLeakage?: number;
1027
+ /**
1028
+ * one char every 1 minute, 0 indicate 0db, plus 1 indicate 0.0472dB.
1029
+ */
1030
+ multichannelDelaySumAndDirectMixRMSRatio?: number;
1031
+ windowsAPOBypassed?: boolean;
1032
+ };
1033
+ /**
1034
+ * audio transmit pipeline modules' quality metric
1035
+ */
1036
+ audioModuleQualityInfo?: {
1037
+ /**
1038
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1039
+ */
1040
+ aecNearPower?: number[];
1041
+ /**
1042
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1043
+ */
1044
+ aecLinearOutPower?: number[];
1045
+ /**
1046
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1047
+ */
1048
+ aecOutPower?: number[];
1049
+ /**
1050
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1051
+ */
1052
+ aecFarPower?: number[];
1053
+ /**
1054
+ * One char every 2 seconds.
1055
+ */
1056
+ aecStatus?: number[];
1057
+ /**
1058
+ * one char every 2 seconds.
1059
+ */
1060
+ bblOutPower?: number[];
1061
+ /**
1062
+ * one char every 2 seconds
1063
+ */
1064
+ volumeAndDelay?: number[];
1065
+ /**
1066
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1067
+ */
1068
+ agcOutPower?: number[];
1069
+ /**
1070
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1071
+ */
1072
+ agcAvgOutPower?: number[];
1073
+ /**
1074
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1075
+ */
1076
+ agcAvgInputPower?: number[];
1077
+ /**
1078
+ * one char every 1 minute.
1079
+ */
1080
+ agcType?: number;
1081
+ };
1082
+ audioCaptureMethod?: "AUDIO_ANDROID_JAVA_METHOD" | "AUDIO_ANDROID_AAUDIO_METHOD";
1083
+ }[];
1084
+ /**
1085
+ * information about tracked audio levels
1086
+ */
1087
+ levels?: {
1088
+ /**
1089
+ * The average audio input gain for a microphone or speaker, in decibels
1090
+ */
1091
+ audioMeanGain?: number;
1092
+ /**
1093
+ * The minimum audio input gain for a microphone or speaker, in decibels
1094
+ */
1095
+ audioMinGain?: number;
1096
+ /**
1097
+ * The maximum audio input gain for a microphone or speaker, in decibels
1098
+ */
1099
+ audioMaxGain?: number;
1100
+ /**
1101
+ * The mean audio output volume for a microphone or speaker, in absolute volume [0-65535]
1102
+ */
1103
+ audioMeanVolume?: number;
1104
+ /**
1105
+ * The min audio output volume for a microphone or speaker, in absolute volume [0-65535]
1106
+ */
1107
+ audioMinVolume?: number;
1108
+ /**
1109
+ * The max audio output volume for a microphone or speaker, in absolute volume [0-65535]
1110
+ */
1111
+ audioMaxVolume?: number;
1112
+ };
1113
+ captureHardwareProvidedAudioPacketsPerSecond?: number;
1114
+ sharedAudioPacketsPerSecond?: number;
1115
+ }[];
1116
+ videoTransmit: {
1117
+ /**
1118
+ * contains the transmit related fields common between all session types for each interval
1119
+ */
1120
+ common: {
1121
+ /**
1122
+ * contains the fields common to both transmit and receive sessions for each interval
1123
+ */
1124
+ common: {
1125
+ isMain: boolean;
1126
+ mariFecEnabled: boolean;
1127
+ mariRtxEnabled?: boolean;
1128
+ mariQosEnabled: boolean;
1129
+ mariLiteEnabled?: boolean;
1130
+ multistreamEnabled: boolean;
1131
+ isMediaBypassEdge?: boolean;
1132
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
1133
+ localPort?: number;
1134
+ peerReflexivePort?: number;
1135
+ remotePort?: number;
1136
+ };
1137
+ fecPackets: number;
1138
+ fecBitrate: number;
1139
+ rtxPackets?: number;
1140
+ rtxBitrate?: number;
1141
+ rtpPackets: number;
1142
+ rtpBitrate: number;
1143
+ rtcpPackets: number;
1144
+ rtcpBitrate: number;
1145
+ /**
1146
+ * RTCP Information for a given Interval
1147
+ */
1148
+ txRtcpInfo?: {
1149
+ rtcpSrPackets: number;
1150
+ rtcpRrPackets: number;
1151
+ rtcpReportBlocks: number;
1152
+ rtcpSdesPackets: number;
1153
+ rtcpByePackets: number;
1154
+ rtcpAppPackets: number;
1155
+ rtcpRtpFbPacket: number;
1156
+ rtcpPsFbPackets: number;
1157
+ rtcpPsFbMariPackets: number;
1158
+ rtcpPsFbMultistreamPackets: number;
1159
+ rtcpXrPackets: number;
1160
+ };
1161
+ stunPackets: number;
1162
+ stunBitrate: number;
1163
+ dtlsPackets: number;
1164
+ dtlsBitrate: number;
1165
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
1166
+ maxBitrate: number;
1167
+ availableBitrate: number;
1168
+ queueDelay: number;
1169
+ meanRoundTripTime?: number;
1170
+ maxRoundTripTime?: number;
1171
+ roundTripTime: number;
1172
+ remoteReceiveRate?: number;
1173
+ maxRemoteLossRate?: number;
1174
+ remoteLossRate?: number;
1175
+ meanRemoteLossRate?: number;
1176
+ maxRemoteJitter?: number;
1177
+ remoteJitter?: number;
1178
+ meanRemoteJitter?: number;
1179
+ traversalMinDelayMs?: number;
1180
+ traversalMaxDelayMs?: number;
1181
+ traversalMeanDelayMs?: number;
1182
+ rtpInputFifoDelayMs?: number;
1183
+ rtpInputFifoMaxDelayMs?: number;
1184
+ rtpInputFifoMinDelayMs?: number;
1185
+ rtpInputFifoMeanDelayMs?: number;
1186
+ };
1187
+ streams: {
1188
+ /**
1189
+ * contains fields common to all transmit streams types
1190
+ */
1191
+ common: {
1192
+ ssci: number;
1193
+ duplicateSsci?: number;
1194
+ rtpPackets: number;
1195
+ transmittedFrameRate: number;
1196
+ requestedFrames: number;
1197
+ transmittedBitrate: number;
1198
+ requestedBitrate: number;
1199
+ captureOffset?: number;
1200
+ codec: string;
1201
+ csi?: number[];
1202
+ /**
1203
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
1204
+ */
1205
+ sourceChanges?: {
1206
+ /**
1207
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
1208
+ */
1209
+ ssrcChanges: number;
1210
+ /**
1211
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
1212
+ */
1213
+ csrcChanges: number;
1214
+ };
1215
+ };
1216
+ transmittedFrameSize: number;
1217
+ requestedFrameSize: number;
1218
+ transmittedHeight: number;
1219
+ transmittedWidth: number;
1220
+ transmittedKeyFrames: number;
1221
+ requestedKeyFrames: number;
1222
+ transmittedKeyFramesFeedback?: number;
1223
+ transmittedKeyFramesConfigurationChange?: number;
1224
+ transmittedKeyFramesSceneChange?: number;
1225
+ transmittedKeyFramesOtherLayer?: number;
1226
+ transmittedKeyFramesClient?: number;
1227
+ transmittedKeyFramesPeriodic?: number;
1228
+ transmittedKeyFramesLocalDrop?: number;
1229
+ transmittedKeyFramesStartup?: number;
1230
+ transmittedKeyFramesUnknown?: number;
1231
+ transmittedKeyFramesEncLayerIndexChange?: number;
1232
+ transmittedKeyFramesSwitchingPoint?: number;
1233
+ localConfigurationChanges: number;
1234
+ remoteConfigurationChanges: number;
1235
+ h264CodecProfile: "BP" | "CHP";
1236
+ isAvatar?: boolean;
1237
+ /**
1238
+ * video encode quality metrics
1239
+ */
1240
+ encodeQuality?: {
1241
+ minRegionQp: number;
1242
+ maxFrameQp: number;
1243
+ maxNoiseLevel: number;
1244
+ };
1245
+ /**
1246
+ * video transmit downgrade reasons
1247
+ */
1248
+ downgradeReason?: {
1249
+ isCamera: boolean;
1250
+ isNetwork: boolean;
1251
+ isCpu: boolean;
1252
+ isRequested?: boolean;
1253
+ isUser?: boolean;
1254
+ isHardware?: boolean;
1255
+ };
1256
+ isHardwareEncoded?: boolean;
1257
+ backgroundAugmentationType?:
1258
+ | "VIDEO_BACKGROUND_AUGMENT_NONE"
1259
+ | "VIDEO_BACKGROUND_AUGMENT_BLUR"
1260
+ | "VIDEO_BACKGROUND_AUGMENT_REPLACE_IMAGE"
1261
+ | "VIDEO_BACKGROUND_AUGMENT_REPLACE_VIDEO"
1262
+ | "VIDEO_BACKGROUND_AUGMENT_BLUR_INHOUSE"
1263
+ | "VIDEO_BACKGROUND_AUGMENT_REPLACE_IMAGE_INHOUSE"
1264
+ | "VIDEO_BACKGROUND_AUGMENT_REPLACE_VIDEO_INHOUSE";
1265
+ backgroundAugmentationFrameworkType?:
1266
+ | "VIDEO_VBG_FRAMEWORK_NONE"
1267
+ | "VIDEO_VBG_FRAMEWORK_COREML"
1268
+ | "VIDEO_VBG_FRAMEWORK_METAL"
1269
+ | "VIDEO_VBG_FRAMEWORK_CBASED"
1270
+ | "VIDEO_VBG_FRAMEWORK_OPENVINO"
1271
+ | "VIDEO_VBG_FRAMEWORK_COREML_LADON"
1272
+ | "VIDEO_VBG_FRAMEWORK_METAL_LADON"
1273
+ | "VIDEO_VBG_FRAMEWORK_CBASED_LADON"
1274
+ | "VIDEO_VBG_FRAMEWORK_OPENVINO_LADON";
1275
+ /**
1276
+ * transmit video pipeline performance metric
1277
+ */
1278
+ encoderProcessInfo?: {
1279
+ meanEncoderProcessMillis: number;
1280
+ maxEncoderProcessMillis: number;
1281
+ meanVbgProcessMillis?: number;
1282
+ maxVbgProcessMillis?: number;
1283
+ };
1284
+ backgroundAugmentationModelVersion?: string;
1285
+ isGestureDetectorOn?: boolean;
1286
+ capturedFrameRateNormalShare?: number;
1287
+ capturedFrameRateHFPSShare?: number;
1288
+ transmittedFrameRateNormalShare?: number;
1289
+ transmittedFrameRateHFPSShare?: number;
1290
+ /**
1291
+ * the method use to capture the screen for screen sharing
1292
+ */
1293
+ screenCaptureMode?:
1294
+ | "Unknown"
1295
+ | "Default"
1296
+ | "MAG"
1297
+ | "DUP"
1298
+ | "AVF"
1299
+ | "CGS"
1300
+ | "GDI"
1301
+ | "DIRECTX"
1302
+ | "WINDOW"
1303
+ | "SCK";
1304
+ processShareContentDetectMillis?: number;
1305
+ }[];
1306
+ }[];
1307
+ audioReceive: {
1308
+ /**
1309
+ * contains the receive related fields between all sessions types for each interval.
1310
+ */
1311
+ common: {
1312
+ /**
1313
+ * contains the fields common to both transmit and receive sessions for each interval
1314
+ */
1315
+ common: {
1316
+ isMain: boolean;
1317
+ mariFecEnabled: boolean;
1318
+ mariRtxEnabled?: boolean;
1319
+ mariQosEnabled: boolean;
1320
+ mariLiteEnabled?: boolean;
1321
+ multistreamEnabled: boolean;
1322
+ isMediaBypassEdge?: boolean;
1323
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
1324
+ localPort?: number;
1325
+ peerReflexivePort?: number;
1326
+ remotePort?: number;
1327
+ };
1328
+ fecPackets: number;
1329
+ fecBitrate: number;
1330
+ rtxPackets?: number;
1331
+ rtxBitrate?: number;
1332
+ meanRtxDelay?: number;
1333
+ maxRtxDelay?: number;
1334
+ rtpPackets: number;
1335
+ rtpBitrate: number;
1336
+ rtpHopByHopLost: number;
1337
+ mediaHopByHopLost: number;
1338
+ rtpRecovered: number;
1339
+ rtxRecovered?: number;
1340
+ rtcpPackets: number;
1341
+ rtcpBitrate: number;
1342
+ /**
1343
+ * RTCP Information for a given Interval
1344
+ */
1345
+ rxRtcpInfo?: {
1346
+ rtcpSrPackets: number;
1347
+ rtcpRrPackets: number;
1348
+ rtcpReportBlocks: number;
1349
+ rtcpSdesPackets: number;
1350
+ rtcpByePackets: number;
1351
+ rtcpAppPackets: number;
1352
+ rtcpRtpFbPacket: number;
1353
+ rtcpPsFbPackets: number;
1354
+ rtcpPsFbMariPackets: number;
1355
+ rtcpPsFbMultistreamPackets: number;
1356
+ rtcpXrPackets: number;
1357
+ };
1358
+ stunPackets: number;
1359
+ stunBitrate: number;
1360
+ dtlsPackets: number;
1361
+ dtlsBitrate: number;
1362
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
1363
+ maxBitrate: number;
1364
+ srtpUnprotectErrors: number;
1365
+ /**
1366
+ * SRTP/SRTCP unprotect error details
1367
+ */
1368
+ srtpUnprotectErrorDetails?: {
1369
+ authFailures: number;
1370
+ cipherFailures: number;
1371
+ replayFailures: number;
1372
+ unknownFailures: number;
1373
+ };
1374
+ srtcpUnprotectErrors: number;
1375
+ /**
1376
+ * SRTP/SRTCP unprotect error details
1377
+ */
1378
+ srtcpUnprotectErrorDetails?: {
1379
+ authFailures: number;
1380
+ cipherFailures: number;
1381
+ replayFailures: number;
1382
+ unknownFailures: number;
1383
+ };
1384
+ };
1385
+ streams: {
1386
+ /**
1387
+ * contains fields common to all types of receive stream
1388
+ */
1389
+ common: {
1390
+ ssci: number;
1391
+ rtpPackets: number;
1392
+ rtpEndToEndLost: number;
1393
+ concealedFrames: number;
1394
+ maxConcealRunLength: number;
1395
+ receivedFrameRate: number;
1396
+ renderedFrameRate: number;
1397
+ requestedFrameRate: number;
1398
+ optimalFrameRate: number;
1399
+ meanRtpJitter?: number;
1400
+ maxRtpJitter?: number;
1401
+ rtpJitter?: number;
1402
+ receivedBitrate: number;
1403
+ requestedBitrate: number;
1404
+ optimalBitrate: number;
1405
+ durationForSpeedChanged?: number;
1406
+ endToEndTransmitDelay?: number;
1407
+ csi: number[];
1408
+ codec: string;
1409
+ /**
1410
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
1411
+ */
1412
+ sourceChanges?: {
1413
+ /**
1414
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
1415
+ */
1416
+ ssrcChanges: number;
1417
+ /**
1418
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
1419
+ */
1420
+ csrcChanges: number;
1421
+ };
1422
+ /**
1423
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
1424
+ */
1425
+ concealmentReasonByPacket?: {
1426
+ /**
1427
+ * concealment caused by network loss
1428
+ */
1429
+ byNetwork?: number;
1430
+ /**
1431
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
1432
+ */
1433
+ byOverflow?: number;
1434
+ /**
1435
+ * concealment caused by buffer is reset.
1436
+ */
1437
+ byReset?: number;
1438
+ /**
1439
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
1440
+ */
1441
+ byLate?: number;
1442
+ /**
1443
+ * concealment caused by poor performance.
1444
+ */
1445
+ byPoorPerformance?: number;
1446
+ /**
1447
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
1448
+ */
1449
+ byIncreasedDelay?: number;
1450
+ /**
1451
+ * only for video. concealment caused by AV sync
1452
+ */
1453
+ byAVSync?: number;
1454
+ /**
1455
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
1456
+ */
1457
+ byPrevFramePopped?: number;
1458
+ /**
1459
+ * concealment caused by the other unknown reasons
1460
+ */
1461
+ byOthers?: number;
1462
+ };
1463
+ /**
1464
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
1465
+ */
1466
+ concealmentReasonByFrame?: {
1467
+ /**
1468
+ * concealment caused by network loss
1469
+ */
1470
+ byNetwork?: number;
1471
+ /**
1472
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
1473
+ */
1474
+ byOverflow?: number;
1475
+ /**
1476
+ * concealment caused by buffer is reset.
1477
+ */
1478
+ byReset?: number;
1479
+ /**
1480
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
1481
+ */
1482
+ byLate?: number;
1483
+ /**
1484
+ * concealment caused by poor performance.
1485
+ */
1486
+ byPoorPerformance?: number;
1487
+ /**
1488
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
1489
+ */
1490
+ byIncreasedDelay?: number;
1491
+ /**
1492
+ * only for video. concealment caused by AV sync
1493
+ */
1494
+ byAVSync?: number;
1495
+ /**
1496
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
1497
+ */
1498
+ byPrevFramePopped?: number;
1499
+ /**
1500
+ * concealment caused by the other unknown reasons
1501
+ */
1502
+ byOthers?: number;
1503
+ };
1504
+ /**
1505
+ * the number of consecutive concealment time which is larger than the threshold in one minute. Currently, 60 and 120 ms are used as the threshold.
1506
+ */
1507
+ interruptCount?: {
1508
+ /**
1509
+ * interrupt count longer than 60 ms in one minute
1510
+ */
1511
+ longerThan60?: number;
1512
+ /**
1513
+ * interrupt count longer than 120 ms in one minute
1514
+ */
1515
+ longerThan120?: number;
1516
+ };
1517
+ /**
1518
+ * This object tracks the delay associated with a jitter buffer
1519
+ */
1520
+ jitterBufferDelay?: {
1521
+ /**
1522
+ * The average delay (in milliseconds) used by the jitter buffer
1523
+ */
1524
+ meanDelay: number;
1525
+ /**
1526
+ * The maximum delay (in milliseconds) used by the jitter buffer
1527
+ */
1528
+ maxDelay: number;
1529
+ /**
1530
+ * The minimum delay (in milliseconds) used by the jitter buffer
1531
+ */
1532
+ minDelay: number;
1533
+ };
1534
+ /**
1535
+ * This object tracks the the end to end delay(the delay between capture time of sender side and render time of receiver side)
1536
+ */
1537
+ endToEndDelay?: {
1538
+ /**
1539
+ * The average delay (in milliseconds) from end to end
1540
+ */
1541
+ meanDelay: number;
1542
+ /**
1543
+ * The maximum delay (in milliseconds) from end to end
1544
+ */
1545
+ maxDelay: number;
1546
+ /**
1547
+ * The minimum delay (in milliseconds) from end to end
1548
+ */
1549
+ minDelay: number;
1550
+ };
1551
+ /**
1552
+ * Aggregated end to end delay representing the mean, max, min delay group by csi
1553
+ */
1554
+ endToEndDelayByCsi?: {
1555
+ csi?: number;
1556
+ delay?: unknown;
1557
+ }[];
1558
+ };
1559
+ isRxCallBackgroundNoiseReductionModeOn?: boolean;
1560
+ isMeasureSNROn?: boolean;
1561
+ averageSNRValue?: number;
1562
+ /**
1563
+ * contains fields for QOEM MOS score
1564
+ */
1565
+ audioqoem?: {
1566
+ version: string;
1567
+ /**
1568
+ * Average Estimated Mean Opinion Score by considering network’s jitter, loss etc.
1569
+ */
1570
+ averageNetMOS: number;
1571
+ /**
1572
+ * Min Estimated Mean Opinion score by considering network’s jitter, loss etc.
1573
+ */
1574
+ minNetMOS: number;
1575
+ /**
1576
+ * Average Estimated Mean Opinion Score jitter buffer’s status, such as drop packet, do PLC, do recover etc.
1577
+ */
1578
+ averageJitterMOS: number;
1579
+ /**
1580
+ * Min Estimated Mean Opinion Score jitter buffer’s status, such as drop packet, do PLC, do recover etc.
1581
+ */
1582
+ minJitterMOS: number;
1583
+ /**
1584
+ * Perceptual Evaluation of Speech Quality - Listening Quality Objective (PESQ-LQO)
1585
+ */
1586
+ pesqLQO?: number;
1587
+ };
1588
+ audioPlaybackMethod?: "AUDIO_ANDROID_JAVA_METHOD" | "AUDIO_ANDROID_AAUDIO_METHOD";
1589
+ /**
1590
+ * audio received algorithm modules performance data(AGC,NR,MultiChannelPreprocess)
1591
+ */
1592
+ audioAlgorithmModulesInfo?: {
1593
+ /**
1594
+ * one unsigned char every 1 minute, 0 for 0dB, plus 1 for -0.5dB
1595
+ */
1596
+ speechRMS?: number;
1597
+ /**
1598
+ * one unsigned char every 1 minute, 0 for 0s, plus 4 for +1s
1599
+ */
1600
+ speechLength?: number;
1601
+ /**
1602
+ * one unsigned char every 1 minute, VAD value to reflect speech quality
1603
+ */
1604
+ speechQuality?: number;
1605
+ /**
1606
+ * one unsigned short every 1 minute
1607
+ */
1608
+ bnrTRN?: number;
1609
+ };
1610
+ /**
1611
+ * audio receive pipeline modules' quality metric
1612
+ */
1613
+ audioModuleQualityInfo?: {
1614
+ /**
1615
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1616
+ */
1617
+ agcOutPower?: number[];
1618
+ /**
1619
+ * one char every 2 seconds. 0 indicate 0dB, plus 1 indicate -0.5dB
1620
+ */
1621
+ agcAvgOutPower?: number[];
1622
+ };
1623
+ /**
1624
+ * This object tracks the the audio video sync data, to see whether the video timestamp is matching with audio timestamp
1625
+ */
1626
+ avSync?: {
1627
+ /**
1628
+ * Compared with audio, the maximum video delay time (in milliseconds) in last interval
1629
+ */
1630
+ maxVideoLateInterval?: number;
1631
+ /**
1632
+ * Compared with audio, the maximum video early time (in milliseconds) in last interval
1633
+ */
1634
+ maxVideoEarlyInterval?: number;
1635
+ /**
1636
+ * Compared with audio, the unsync video frames get played out / total frames
1637
+ */
1638
+ decidePlayedUnsyncRatio?: number;
1639
+ };
1640
+ }[];
1641
+ /**
1642
+ * information about tracked audio levels
1643
+ */
1644
+ levels?: {
1645
+ /**
1646
+ * The average audio input gain for a microphone or speaker, in decibels
1647
+ */
1648
+ audioMeanGain?: number;
1649
+ /**
1650
+ * The minimum audio input gain for a microphone or speaker, in decibels
1651
+ */
1652
+ audioMinGain?: number;
1653
+ /**
1654
+ * The maximum audio input gain for a microphone or speaker, in decibels
1655
+ */
1656
+ audioMaxGain?: number;
1657
+ /**
1658
+ * The mean audio output volume for a microphone or speaker, in absolute volume [0-65535]
1659
+ */
1660
+ audioMeanVolume?: number;
1661
+ /**
1662
+ * The min audio output volume for a microphone or speaker, in absolute volume [0-65535]
1663
+ */
1664
+ audioMinVolume?: number;
1665
+ /**
1666
+ * The max audio output volume for a microphone or speaker, in absolute volume [0-65535]
1667
+ */
1668
+ audioMaxVolume?: number;
1669
+ };
1670
+ playbackHardwareRequiredAudioPacketsPerSecond?: number;
1671
+ }[];
1672
+ videoReceive: {
1673
+ /**
1674
+ * contains the receive related fields between all sessions types for each interval.
1675
+ */
1676
+ common: {
1677
+ /**
1678
+ * contains the fields common to both transmit and receive sessions for each interval
1679
+ */
1680
+ common: {
1681
+ isMain: boolean;
1682
+ mariFecEnabled: boolean;
1683
+ mariRtxEnabled?: boolean;
1684
+ mariQosEnabled: boolean;
1685
+ mariLiteEnabled?: boolean;
1686
+ multistreamEnabled: boolean;
1687
+ isMediaBypassEdge?: boolean;
1688
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
1689
+ localPort?: number;
1690
+ peerReflexivePort?: number;
1691
+ remotePort?: number;
1692
+ };
1693
+ fecPackets: number;
1694
+ fecBitrate: number;
1695
+ rtxPackets?: number;
1696
+ rtxBitrate?: number;
1697
+ meanRtxDelay?: number;
1698
+ maxRtxDelay?: number;
1699
+ rtpPackets: number;
1700
+ rtpBitrate: number;
1701
+ rtpHopByHopLost: number;
1702
+ mediaHopByHopLost: number;
1703
+ rtpRecovered: number;
1704
+ rtxRecovered?: number;
1705
+ rtcpPackets: number;
1706
+ rtcpBitrate: number;
1707
+ /**
1708
+ * RTCP Information for a given Interval
1709
+ */
1710
+ rxRtcpInfo?: {
1711
+ rtcpSrPackets: number;
1712
+ rtcpRrPackets: number;
1713
+ rtcpReportBlocks: number;
1714
+ rtcpSdesPackets: number;
1715
+ rtcpByePackets: number;
1716
+ rtcpAppPackets: number;
1717
+ rtcpRtpFbPacket: number;
1718
+ rtcpPsFbPackets: number;
1719
+ rtcpPsFbMariPackets: number;
1720
+ rtcpPsFbMultistreamPackets: number;
1721
+ rtcpXrPackets: number;
1722
+ };
1723
+ stunPackets: number;
1724
+ stunBitrate: number;
1725
+ dtlsPackets: number;
1726
+ dtlsBitrate: number;
1727
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
1728
+ maxBitrate: number;
1729
+ srtpUnprotectErrors: number;
1730
+ /**
1731
+ * SRTP/SRTCP unprotect error details
1732
+ */
1733
+ srtpUnprotectErrorDetails?: {
1734
+ authFailures: number;
1735
+ cipherFailures: number;
1736
+ replayFailures: number;
1737
+ unknownFailures: number;
1738
+ };
1739
+ srtcpUnprotectErrors: number;
1740
+ /**
1741
+ * SRTP/SRTCP unprotect error details
1742
+ */
1743
+ srtcpUnprotectErrorDetails?: {
1744
+ authFailures: number;
1745
+ cipherFailures: number;
1746
+ replayFailures: number;
1747
+ unknownFailures: number;
1748
+ };
1749
+ };
1750
+ streams: {
1751
+ /**
1752
+ * contains fields common to all types of receive stream
1753
+ */
1754
+ common: {
1755
+ ssci: number;
1756
+ rtpPackets: number;
1757
+ rtpEndToEndLost: number;
1758
+ concealedFrames: number;
1759
+ maxConcealRunLength: number;
1760
+ receivedFrameRate: number;
1761
+ renderedFrameRate: number;
1762
+ requestedFrameRate: number;
1763
+ optimalFrameRate: number;
1764
+ meanRtpJitter?: number;
1765
+ maxRtpJitter?: number;
1766
+ rtpJitter?: number;
1767
+ receivedBitrate: number;
1768
+ requestedBitrate: number;
1769
+ optimalBitrate: number;
1770
+ durationForSpeedChanged?: number;
1771
+ endToEndTransmitDelay?: number;
1772
+ csi: number[];
1773
+ codec: string;
1774
+ /**
1775
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
1776
+ */
1777
+ sourceChanges?: {
1778
+ /**
1779
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
1780
+ */
1781
+ ssrcChanges: number;
1782
+ /**
1783
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
1784
+ */
1785
+ csrcChanges: number;
1786
+ };
1787
+ /**
1788
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
1789
+ */
1790
+ concealmentReasonByPacket?: {
1791
+ /**
1792
+ * concealment caused by network loss
1793
+ */
1794
+ byNetwork?: number;
1795
+ /**
1796
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
1797
+ */
1798
+ byOverflow?: number;
1799
+ /**
1800
+ * concealment caused by buffer is reset.
1801
+ */
1802
+ byReset?: number;
1803
+ /**
1804
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
1805
+ */
1806
+ byLate?: number;
1807
+ /**
1808
+ * concealment caused by poor performance.
1809
+ */
1810
+ byPoorPerformance?: number;
1811
+ /**
1812
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
1813
+ */
1814
+ byIncreasedDelay?: number;
1815
+ /**
1816
+ * only for video. concealment caused by AV sync
1817
+ */
1818
+ byAVSync?: number;
1819
+ /**
1820
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
1821
+ */
1822
+ byPrevFramePopped?: number;
1823
+ /**
1824
+ * concealment caused by the other unknown reasons
1825
+ */
1826
+ byOthers?: number;
1827
+ };
1828
+ /**
1829
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
1830
+ */
1831
+ concealmentReasonByFrame?: {
1832
+ /**
1833
+ * concealment caused by network loss
1834
+ */
1835
+ byNetwork?: number;
1836
+ /**
1837
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
1838
+ */
1839
+ byOverflow?: number;
1840
+ /**
1841
+ * concealment caused by buffer is reset.
1842
+ */
1843
+ byReset?: number;
1844
+ /**
1845
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
1846
+ */
1847
+ byLate?: number;
1848
+ /**
1849
+ * concealment caused by poor performance.
1850
+ */
1851
+ byPoorPerformance?: number;
1852
+ /**
1853
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
1854
+ */
1855
+ byIncreasedDelay?: number;
1856
+ /**
1857
+ * only for video. concealment caused by AV sync
1858
+ */
1859
+ byAVSync?: number;
1860
+ /**
1861
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
1862
+ */
1863
+ byPrevFramePopped?: number;
1864
+ /**
1865
+ * concealment caused by the other unknown reasons
1866
+ */
1867
+ byOthers?: number;
1868
+ };
1869
+ /**
1870
+ * the number of consecutive concealment time which is larger than the threshold in one minute. Currently, 60 and 120 ms are used as the threshold.
1871
+ */
1872
+ interruptCount?: {
1873
+ /**
1874
+ * interrupt count longer than 60 ms in one minute
1875
+ */
1876
+ longerThan60?: number;
1877
+ /**
1878
+ * interrupt count longer than 120 ms in one minute
1879
+ */
1880
+ longerThan120?: number;
1881
+ };
1882
+ /**
1883
+ * This object tracks the delay associated with a jitter buffer
1884
+ */
1885
+ jitterBufferDelay?: {
1886
+ /**
1887
+ * The average delay (in milliseconds) used by the jitter buffer
1888
+ */
1889
+ meanDelay: number;
1890
+ /**
1891
+ * The maximum delay (in milliseconds) used by the jitter buffer
1892
+ */
1893
+ maxDelay: number;
1894
+ /**
1895
+ * The minimum delay (in milliseconds) used by the jitter buffer
1896
+ */
1897
+ minDelay: number;
1898
+ };
1899
+ /**
1900
+ * This object tracks the the end to end delay(the delay between capture time of sender side and render time of receiver side)
1901
+ */
1902
+ endToEndDelay?: {
1903
+ /**
1904
+ * The average delay (in milliseconds) from end to end
1905
+ */
1906
+ meanDelay: number;
1907
+ /**
1908
+ * The maximum delay (in milliseconds) from end to end
1909
+ */
1910
+ maxDelay: number;
1911
+ /**
1912
+ * The minimum delay (in milliseconds) from end to end
1913
+ */
1914
+ minDelay: number;
1915
+ };
1916
+ /**
1917
+ * Aggregated end to end delay representing the mean, max, min delay group by csi
1918
+ */
1919
+ endToEndDelayByCsi?: {
1920
+ csi?: number;
1921
+ delay?: unknown;
1922
+ }[];
1923
+ };
1924
+ receivedFrameSize: number;
1925
+ requestedFrameSize: number;
1926
+ optimalFrameSize: number;
1927
+ receivedHeight: number;
1928
+ receivedWidth: number;
1929
+ receivedKeyFrames: number;
1930
+ requestedKeyFrames: number;
1931
+ receivedKeyFramesSourceChange?: number;
1932
+ receivedKeyFramesConfigurationChange?: number;
1933
+ receivedKeyFramesForRequest?: number;
1934
+ receivedKeyFramesUnknown?: number;
1935
+ isActiveSpeaker?: boolean;
1936
+ h264CodecProfile: "BP" | "CHP";
1937
+ isHardwareDecoded?: boolean;
1938
+ /**
1939
+ * receive video pipeline performance metric
1940
+ */
1941
+ decoderProcessInfo?: {
1942
+ meanDecoderProcessMillis: number;
1943
+ maxDecoderProcessMillis: number;
1944
+ };
1945
+ receivedBuffer?: number;
1946
+ receivedFrameRateNormalShare?: number;
1947
+ receivedFrameRateHFPSShare?: number;
1948
+ renderWindowResolution?: number;
1949
+ scaledResolution?: number;
1950
+ }[];
1951
+ }[];
1952
+ gamestateTransmit?: {
1953
+ /**
1954
+ * contains the transmit related fields common between all session types for each interval
1955
+ */
1956
+ common: {
1957
+ /**
1958
+ * contains the fields common to both transmit and receive sessions for each interval
1959
+ */
1960
+ common: {
1961
+ isMain: boolean;
1962
+ mariFecEnabled: boolean;
1963
+ mariRtxEnabled?: boolean;
1964
+ mariQosEnabled: boolean;
1965
+ mariLiteEnabled?: boolean;
1966
+ multistreamEnabled: boolean;
1967
+ isMediaBypassEdge?: boolean;
1968
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
1969
+ localPort?: number;
1970
+ peerReflexivePort?: number;
1971
+ remotePort?: number;
1972
+ };
1973
+ fecPackets: number;
1974
+ fecBitrate: number;
1975
+ rtxPackets?: number;
1976
+ rtxBitrate?: number;
1977
+ rtpPackets: number;
1978
+ rtpBitrate: number;
1979
+ rtcpPackets: number;
1980
+ rtcpBitrate: number;
1981
+ /**
1982
+ * RTCP Information for a given Interval
1983
+ */
1984
+ txRtcpInfo?: {
1985
+ rtcpSrPackets: number;
1986
+ rtcpRrPackets: number;
1987
+ rtcpReportBlocks: number;
1988
+ rtcpSdesPackets: number;
1989
+ rtcpByePackets: number;
1990
+ rtcpAppPackets: number;
1991
+ rtcpRtpFbPacket: number;
1992
+ rtcpPsFbPackets: number;
1993
+ rtcpPsFbMariPackets: number;
1994
+ rtcpPsFbMultistreamPackets: number;
1995
+ rtcpXrPackets: number;
1996
+ };
1997
+ stunPackets: number;
1998
+ stunBitrate: number;
1999
+ dtlsPackets: number;
2000
+ dtlsBitrate: number;
2001
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
2002
+ maxBitrate: number;
2003
+ availableBitrate: number;
2004
+ queueDelay: number;
2005
+ meanRoundTripTime?: number;
2006
+ maxRoundTripTime?: number;
2007
+ roundTripTime: number;
2008
+ remoteReceiveRate?: number;
2009
+ maxRemoteLossRate?: number;
2010
+ remoteLossRate?: number;
2011
+ meanRemoteLossRate?: number;
2012
+ maxRemoteJitter?: number;
2013
+ remoteJitter?: number;
2014
+ meanRemoteJitter?: number;
2015
+ traversalMinDelayMs?: number;
2016
+ traversalMaxDelayMs?: number;
2017
+ traversalMeanDelayMs?: number;
2018
+ rtpInputFifoDelayMs?: number;
2019
+ rtpInputFifoMaxDelayMs?: number;
2020
+ rtpInputFifoMinDelayMs?: number;
2021
+ rtpInputFifoMeanDelayMs?: number;
2022
+ };
2023
+ streams: {
2024
+ /**
2025
+ * contains fields common to all transmit streams types
2026
+ */
2027
+ common: {
2028
+ ssci: number;
2029
+ duplicateSsci?: number;
2030
+ rtpPackets: number;
2031
+ transmittedFrameRate: number;
2032
+ requestedFrames: number;
2033
+ transmittedBitrate: number;
2034
+ requestedBitrate: number;
2035
+ captureOffset?: number;
2036
+ codec: string;
2037
+ csi?: number[];
2038
+ /**
2039
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
2040
+ */
2041
+ sourceChanges?: {
2042
+ /**
2043
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
2044
+ */
2045
+ ssrcChanges: number;
2046
+ /**
2047
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
2048
+ */
2049
+ csrcChanges: number;
2050
+ };
2051
+ };
2052
+ gamestateObjects?: {
2053
+ objectId: number;
2054
+ numberOfUpdates: number;
2055
+ tag: unknown;
2056
+ isActive: boolean;
2057
+ }[];
2058
+ }[];
2059
+ }[];
2060
+ gamestateReceive?: {
2061
+ /**
2062
+ * contains the receive related fields between all sessions types for each interval.
2063
+ */
2064
+ common: {
2065
+ /**
2066
+ * contains the fields common to both transmit and receive sessions for each interval
2067
+ */
2068
+ common: {
2069
+ isMain: boolean;
2070
+ mariFecEnabled: boolean;
2071
+ mariRtxEnabled?: boolean;
2072
+ mariQosEnabled: boolean;
2073
+ mariLiteEnabled?: boolean;
2074
+ multistreamEnabled: boolean;
2075
+ isMediaBypassEdge?: boolean;
2076
+ direction: "sendrecv" | "sendonly" | "recvonly" | "inactive";
2077
+ localPort?: number;
2078
+ peerReflexivePort?: number;
2079
+ remotePort?: number;
2080
+ };
2081
+ fecPackets: number;
2082
+ fecBitrate: number;
2083
+ rtxPackets?: number;
2084
+ rtxBitrate?: number;
2085
+ meanRtxDelay?: number;
2086
+ maxRtxDelay?: number;
2087
+ rtpPackets: number;
2088
+ rtpBitrate: number;
2089
+ rtpHopByHopLost: number;
2090
+ mediaHopByHopLost: number;
2091
+ rtpRecovered: number;
2092
+ rtxRecovered?: number;
2093
+ rtcpPackets: number;
2094
+ rtcpBitrate: number;
2095
+ /**
2096
+ * RTCP Information for a given Interval
2097
+ */
2098
+ rxRtcpInfo?: {
2099
+ rtcpSrPackets: number;
2100
+ rtcpRrPackets: number;
2101
+ rtcpReportBlocks: number;
2102
+ rtcpSdesPackets: number;
2103
+ rtcpByePackets: number;
2104
+ rtcpAppPackets: number;
2105
+ rtcpRtpFbPacket: number;
2106
+ rtcpPsFbPackets: number;
2107
+ rtcpPsFbMariPackets: number;
2108
+ rtcpPsFbMultistreamPackets: number;
2109
+ rtcpXrPackets: number;
2110
+ };
2111
+ stunPackets: number;
2112
+ stunBitrate: number;
2113
+ dtlsPackets: number;
2114
+ dtlsBitrate: number;
2115
+ transportType: "UDP" | "TCP" | "xTLS" | "TLS";
2116
+ maxBitrate: number;
2117
+ srtpUnprotectErrors: number;
2118
+ /**
2119
+ * SRTP/SRTCP unprotect error details
2120
+ */
2121
+ srtpUnprotectErrorDetails?: {
2122
+ authFailures: number;
2123
+ cipherFailures: number;
2124
+ replayFailures: number;
2125
+ unknownFailures: number;
2126
+ };
2127
+ srtcpUnprotectErrors: number;
2128
+ /**
2129
+ * SRTP/SRTCP unprotect error details
2130
+ */
2131
+ srtcpUnprotectErrorDetails?: {
2132
+ authFailures: number;
2133
+ cipherFailures: number;
2134
+ replayFailures: number;
2135
+ unknownFailures: number;
2136
+ };
2137
+ };
2138
+ streams: {
2139
+ /**
2140
+ * contains fields common to all types of receive stream
2141
+ */
2142
+ common: {
2143
+ ssci: number;
2144
+ rtpPackets: number;
2145
+ rtpEndToEndLost: number;
2146
+ concealedFrames: number;
2147
+ maxConcealRunLength: number;
2148
+ receivedFrameRate: number;
2149
+ renderedFrameRate: number;
2150
+ requestedFrameRate: number;
2151
+ optimalFrameRate: number;
2152
+ meanRtpJitter?: number;
2153
+ maxRtpJitter?: number;
2154
+ rtpJitter?: number;
2155
+ receivedBitrate: number;
2156
+ requestedBitrate: number;
2157
+ optimalBitrate: number;
2158
+ durationForSpeedChanged?: number;
2159
+ endToEndTransmitDelay?: number;
2160
+ csi: number[];
2161
+ codec: string;
2162
+ /**
2163
+ * This object tracks SSRC and CSRC changes for an RTP stream, session, etc
2164
+ */
2165
+ sourceChanges?: {
2166
+ /**
2167
+ * The number of RTP SSRC changes seen. The first RTP packet seen should NOT be counted as a change.
2168
+ */
2169
+ ssrcChanges: number;
2170
+ /**
2171
+ * The number of RTP CSRC changes seen. The first RTP packet seen should NOT be counted as a change. Changes from zero to non-zero CSRC should be counted as a change.
2172
+ */
2173
+ csrcChanges: number;
2174
+ };
2175
+ /**
2176
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
2177
+ */
2178
+ concealmentReasonByPacket?: {
2179
+ /**
2180
+ * concealment caused by network loss
2181
+ */
2182
+ byNetwork?: number;
2183
+ /**
2184
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
2185
+ */
2186
+ byOverflow?: number;
2187
+ /**
2188
+ * concealment caused by buffer is reset.
2189
+ */
2190
+ byReset?: number;
2191
+ /**
2192
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
2193
+ */
2194
+ byLate?: number;
2195
+ /**
2196
+ * concealment caused by poor performance.
2197
+ */
2198
+ byPoorPerformance?: number;
2199
+ /**
2200
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
2201
+ */
2202
+ byIncreasedDelay?: number;
2203
+ /**
2204
+ * only for video. concealment caused by AV sync
2205
+ */
2206
+ byAVSync?: number;
2207
+ /**
2208
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
2209
+ */
2210
+ byPrevFramePopped?: number;
2211
+ /**
2212
+ * concealment caused by the other unknown reasons
2213
+ */
2214
+ byOthers?: number;
2215
+ };
2216
+ /**
2217
+ * The object tracks the detail reasons by which concealment is caused. The unit of metrics depend on upper-level objects. Currently, packet or frame can be used as unit.
2218
+ */
2219
+ concealmentReasonByFrame?: {
2220
+ /**
2221
+ * concealment caused by network loss
2222
+ */
2223
+ byNetwork?: number;
2224
+ /**
2225
+ * concealment caused by buffer overflow. when total buffer length exceeds max delay threshold, buffer will overflow and data will be dropped.
2226
+ */
2227
+ byOverflow?: number;
2228
+ /**
2229
+ * concealment caused by buffer is reset.
2230
+ */
2231
+ byReset?: number;
2232
+ /**
2233
+ * concealment caused by late packet or frame. some packets or frames arrive late and the previous one has been played.
2234
+ */
2235
+ byLate?: number;
2236
+ /**
2237
+ * concealment caused by poor performance.
2238
+ */
2239
+ byPoorPerformance?: number;
2240
+ /**
2241
+ * only for audio. Number of concealment packets/frames sent to the audio decoder when frames are held back to increase re-order audio delay.
2242
+ */
2243
+ byIncreasedDelay?: number;
2244
+ /**
2245
+ * only for video. concealment caused by AV sync
2246
+ */
2247
+ byAVSync?: number;
2248
+ /**
2249
+ * only for video. Some video frames which have not been complete are forced to pop up because the subsequent frame has been complete. This cause video concealment.
2250
+ */
2251
+ byPrevFramePopped?: number;
2252
+ /**
2253
+ * concealment caused by the other unknown reasons
2254
+ */
2255
+ byOthers?: number;
2256
+ };
2257
+ /**
2258
+ * the number of consecutive concealment time which is larger than the threshold in one minute. Currently, 60 and 120 ms are used as the threshold.
2259
+ */
2260
+ interruptCount?: {
2261
+ /**
2262
+ * interrupt count longer than 60 ms in one minute
2263
+ */
2264
+ longerThan60?: number;
2265
+ /**
2266
+ * interrupt count longer than 120 ms in one minute
2267
+ */
2268
+ longerThan120?: number;
2269
+ };
2270
+ /**
2271
+ * This object tracks the delay associated with a jitter buffer
2272
+ */
2273
+ jitterBufferDelay?: {
2274
+ /**
2275
+ * The average delay (in milliseconds) used by the jitter buffer
2276
+ */
2277
+ meanDelay: number;
2278
+ /**
2279
+ * The maximum delay (in milliseconds) used by the jitter buffer
2280
+ */
2281
+ maxDelay: number;
2282
+ /**
2283
+ * The minimum delay (in milliseconds) used by the jitter buffer
2284
+ */
2285
+ minDelay: number;
2286
+ };
2287
+ /**
2288
+ * This object tracks the the end to end delay(the delay between capture time of sender side and render time of receiver side)
2289
+ */
2290
+ endToEndDelay?: {
2291
+ /**
2292
+ * The average delay (in milliseconds) from end to end
2293
+ */
2294
+ meanDelay: number;
2295
+ /**
2296
+ * The maximum delay (in milliseconds) from end to end
2297
+ */
2298
+ maxDelay: number;
2299
+ /**
2300
+ * The minimum delay (in milliseconds) from end to end
2301
+ */
2302
+ minDelay: number;
2303
+ };
2304
+ /**
2305
+ * Aggregated end to end delay representing the mean, max, min delay group by csi
2306
+ */
2307
+ endToEndDelayByCsi?: {
2308
+ csi?: number;
2309
+ delay?: unknown;
2310
+ }[];
2311
+ };
2312
+ gamestateObjects?: {
2313
+ objectId: number;
2314
+ numberOfUpdates: number;
2315
+ tag: unknown;
2316
+ isActive: boolean;
2317
+ }[];
2318
+ }[];
2319
+ }[];
2320
+ }[];
2321
+ }