@vpalmisano/webrtcperf 4.0.18 → 4.1.1

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.
@@ -229,6 +229,7 @@ export declare enum RtcStatsMetricNames {
229
229
  audioRecvConcealmentEvents = "audioRecvConcealmentEvents",
230
230
  audioRecvInsertedSamplesForDeceleration = "audioRecvInsertedSamplesForDeceleration",
231
231
  audioRecvRemovedSamplesForAcceleration = "audioRecvRemovedSamplesForAcceleration",
232
+ audioRecvEndToEndDelay = "audioRecvEndToEndDelay",
232
233
  videoRecvCodec = "videoRecvCodec",
233
234
  videoFirCountSent = "videoFirCountSent",
234
235
  videoPliCountSent = "videoPliCountSent",
@@ -250,6 +251,7 @@ export declare enum RtcStatsMetricNames {
250
251
  videoRecvWidth = "videoRecvWidth",
251
252
  videoRecvFrameRate = "videoRecvFrameRate",
252
253
  videoTotalFreezesDuration = "videoTotalFreezesDuration",
254
+ videoRecvEndToEndDelay = "videoRecvEndToEndDelay",
253
255
  screenRecvCodec = "screenRecvCodec",
254
256
  screenFirCountSent = "screenFirCountSent",
255
257
  screenPliCountSent = "screenPliCountSent",
@@ -271,6 +273,7 @@ export declare enum RtcStatsMetricNames {
271
273
  screenRecvWidth = "screenRecvWidth",
272
274
  screenRecvFrameRate = "screenRecvFrameRate",
273
275
  screenTotalFreezesDuration = "screenTotalFreezesDuration",
276
+ screenRecvEndToEndDelay = "screenRecvEndToEndDelay",
274
277
  /** The transport availableOutgoingBitrate stat. */
275
278
  transportSentAvailableOutgoingBitrate = "transportSentAvailableOutgoingBitrate"
276
279
  }
@@ -248,6 +248,7 @@ var RtcStatsMetricNames;
248
248
  RtcStatsMetricNames["audioRecvConcealmentEvents"] = "audioRecvConcealmentEvents";
249
249
  RtcStatsMetricNames["audioRecvInsertedSamplesForDeceleration"] = "audioRecvInsertedSamplesForDeceleration";
250
250
  RtcStatsMetricNames["audioRecvRemovedSamplesForAcceleration"] = "audioRecvRemovedSamplesForAcceleration";
251
+ RtcStatsMetricNames["audioRecvEndToEndDelay"] = "audioRecvEndToEndDelay";
251
252
  // inbound video,
252
253
  RtcStatsMetricNames["videoRecvCodec"] = "videoRecvCodec";
253
254
  RtcStatsMetricNames["videoFirCountSent"] = "videoFirCountSent";
@@ -272,6 +273,7 @@ var RtcStatsMetricNames;
272
273
  RtcStatsMetricNames["videoRecvFrameRate"] = "videoRecvFrameRate";
273
274
  //'videoTotalDecodeTime',
274
275
  RtcStatsMetricNames["videoTotalFreezesDuration"] = "videoTotalFreezesDuration";
276
+ RtcStatsMetricNames["videoRecvEndToEndDelay"] = "videoRecvEndToEndDelay";
275
277
  // inbound screen,
276
278
  RtcStatsMetricNames["screenRecvCodec"] = "screenRecvCodec";
277
279
  RtcStatsMetricNames["screenFirCountSent"] = "screenFirCountSent";
@@ -296,6 +298,7 @@ var RtcStatsMetricNames;
296
298
  RtcStatsMetricNames["screenRecvFrameRate"] = "screenRecvFrameRate";
297
299
  //'screenTotalDecodeTime',
298
300
  RtcStatsMetricNames["screenTotalFreezesDuration"] = "screenTotalFreezesDuration";
301
+ RtcStatsMetricNames["screenRecvEndToEndDelay"] = "screenRecvEndToEndDelay";
299
302
  /** The transport availableOutgoingBitrate stat. */
300
303
  RtcStatsMetricNames["transportSentAvailableOutgoingBitrate"] = "transportSentAvailableOutgoingBitrate";
301
304
  })(RtcStatsMetricNames || (exports.RtcStatsMetricNames = RtcStatsMetricNames = {}));
@@ -355,6 +358,7 @@ value, signalingHost, participantName) {
355
358
  setStats(stats, (prefix + 'RecvPacketsLossRate'), key, inboundRtp.packetsLossRate);
356
359
  setStats(stats, (prefix + 'RecvLostPackets'), key, inboundRtp.packetsLost);
357
360
  setStats(stats, (prefix + 'RecvNackCountSent'), key, inboundRtp.nackCount);
361
+ setStats(stats, (prefix + 'RecvEndToEndDelay'), key, inboundRtp.endToEndDelay);
358
362
  if (inboundRtp.kind === 'audio') {
359
363
  ;
360
364
  [
@@ -1 +1 @@
1
- {"version":3,"file":"rtcstats.js","sourceRoot":"","sources":["../../src/rtcstats.ts"],"names":[],"mappings":";;;;;;AA2UA,gCAcC;AAED,wCAeC;AAKD,wCA8IC;AA7fD,oDAA2B;AAE3B,mCAAqC;AAErC;;GAEG;AACH,IAAY,cAqGX;AArGD,WAAY,cAAc;IACxB,kDAAkD;IAClD,6BAAW,CAAA;IACX,qDAAqD;IACrD,mCAAiB,CAAA;IACjB,iCAAiC;IACjC,qCAAmB,CAAA;IACnB,oCAAoC;IACpC,2CAAyB,CAAA;IACzB,kCAAkC;IAClC,qCAAmB,CAAA;IACnB,qCAAqC;IACrC,2CAAyB,CAAA;IACzB,kCAAkC;IAClC,qCAAmB,CAAA;IACnB,0BAA0B;IAC1B,qCAAmB,CAAA;IACnB,6BAA6B;IAC7B,2CAAyB,CAAA;IAEzB,8BAA8B;IAC9B,iCAAe,CAAA;IACf,0CAA0C;IAC1C,qDAAmC,CAAA;IACnC,sDAAsD;IACtD,+EAA6D,CAAA;IAC7D,0DAA0D;IAC1D,qFAAmE,CAAA;IACnE,yCAAyC;IACzC,mEAAiD,CAAA;IACjD,2CAA2C;IAC3C,uEAAqD,CAAA;IACrD,wCAAwC;IACxC,iEAA+C,CAAA;IAC/C,8CAA8C;IAC9C,6EAA2D,CAAA;IAC3D,wCAAwC;IACxC,iEAA+C,CAAA;IAC/C,mEAAmE;IACnE,+DAA6C,CAAA;IAE7C,6BAA6B;IAC7B,mCAAiB,CAAA;IACjB,+BAA+B;IAC/B,uCAAqB,CAAA;IAErB,sCAAsC;IACtC,iDAA+B,CAAA;IAC/B,0CAA0C;IAC1C,iDAA+B,CAAA;IAC/B,qCAAqC;IACrC,qDAAmC,CAAA;IAEnC,2CAA2C;IAC3C,6CAA2B,CAAA;IAC3B,+CAA+C;IAC/C,6CAA2B,CAAA;IAC3B,0CAA0C;IAC1C,iDAA+B,CAAA;IAE/B,wCAAwC;IACxC,2DAAyC,CAAA;IACzC,mCAAmC;IACnC,+DAA6C,CAAA;IAE7C,wCAAwC;IACxC,2DAAyC,CAAA;IACzC,mCAAmC;IACnC,+DAA6C,CAAA;IAE7C,yCAAyC;IACzC,6DAA2C,CAAA;IAC3C,oCAAoC;IACpC,iEAA+C,CAAA;IAE/C,6CAA2B,CAAA;IAE3B,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,yDAAuC,CAAA;IACvC,uDAAqC,CAAA;IACrC,2DAAyC,CAAA;IACzC,+DAA6C,CAAA;IAE7C,2CAA2C;IAC3C,mDAAiC,CAAA;IACjC,iCAAiC;IACjC,qDAAmC,CAAA;IACnC,uCAAuC;IACvC,mDAAiC,CAAA;IACjC,wCAAwC;IACxC,qDAAmC,CAAA;IAEnC,6CAA6C;IAC7C,uDAAqC,CAAA;IACrC,mCAAmC;IACnC,yDAAuC,CAAA;IACvC,yCAAyC;IACzC,uDAAqC,CAAA;IACrC,0CAA0C;IAC1C,yDAAuC,CAAA;AACzC,CAAC,EArGW,cAAc,8BAAd,cAAc,QAqGzB;AAED;;;GAGG;AACH,IAAY,mBAiMX;AAjMD,WAAY,mBAAmB;IAC7B,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,kCAAkC;IAClC,wDAAiC,CAAA;IACjC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,mCAAmC;IACnC,oEAA6C,CAAA;IAC7C,8BAA8B;IAC9B,mDAAmD;IACnD,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,wEAAiD,CAAA;IACjD,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,+CAA+C;IAC/C,0FAAmE,CAAA;IACnE,2CAA2C;IAC3C,kEAA2C,CAAA;IAC3C,kCAAkC;IAClC,sFAA+D,CAAA;IAE/D,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,qDAAqD;IACrD,sEAA+C,CAAA;IAC/C,qDAAqD;IACrD,sEAA+C,CAAA;IAC/C,qCAAqC;IACrC,gEAAyC,CAAA;IACzC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,oDAAoD;IACpD,0FAAmE,CAAA;IACnE,8CAA8C;IAC9C,8EAAuD,CAAA;IACvD,uEAAuE;IACvE,0GAAmF,CAAA;IACnF,sDAAsD;IACtD,4EAAqD,CAAA;IACrD,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,gCAAgC;IAChC,oDAA6B,CAAA;IAC7B,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,2CAA2C;IAC3C,kEAA2C,CAAA;IAC3C,qBAAqB;IACrB,mCAAmC;IACnC,oEAA6C,CAAA;IAC7C,8BAA8B;IAC9B,+CAA+C;IAC/C,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,wEAAiD,CAAA;IACjD,gDAAgD;IAChD,0FAAmE,CAAA;IACnE,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,kCAAkC;IAClC,sFAA+D,CAAA;IAE/D,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,2CAA2C;IAC3C,wEAAiD,CAAA;IACjD,2CAA2C;IAC3C,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,kEAA2C,CAAA;IAC3C,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,oDAAoD;IACpD,4FAAqE,CAAA;IACrE,8CAA8C;IAC9C,gFAAyD,CAAA;IACzD,wEAAwE;IACxE,4GAAqF,CAAA;IACrF,uDAAuD;IACvD,8EAAuD,CAAA;IACvD,gCAAgC;IAChC,gEAAyC,CAAA;IACzC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,iCAAiC;IACjC,sDAA+B,CAAA;IAC/B,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,4CAA4C;IAC5C,oEAA6C,CAAA;IAC7C,sBAAsB;IACtB,oCAAoC;IACpC,sEAA+C,CAAA;IAC/C,+BAA+B;IAC/B,gDAAgD;IAChD,0EAAmD,CAAA;IACnD,uCAAuC;IACvC,0EAAmD,CAAA;IACnD,iDAAiD;IACjD,4FAAqE,CAAA;IACrE,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,oCAAoC;IACpC,wFAAiE,CAAA;IAEjE,iBAAiB;IACjB,wDAAiC,CAAA;IACjC,wDAAiC,CAAA;IACjC,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,0DAAmC,CAAA;IACnC,wEAAiD,CAAA;IACjD,4DAAqC,CAAA;IACrC,oEAA6C,CAAA;IAC7C,oEAA6C,CAAA;IAC7C,4EAAqD,CAAA;IACrD,sFAA+D,CAAA;IAC/D,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,sFAA+D,CAAA;IAC/D,8EAAuD,CAAA;IACvD,gFAAyD,CAAA;IACzD,0GAAmF,CAAA;IACnF,wGAAiF,CAAA;IACjF,iBAAiB;IACjB,wDAAiC,CAAA;IACjC,8DAAuC,CAAA;IACvC,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,uBAAuB;IACvB,0DAAmC,CAAA;IACnC,oDAA6B,CAAA;IAC7B,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,wDAAiC,CAAA;IACjC,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,wEAAiD,CAAA;IACjD,4DAAqC,CAAA;IACrC,oEAA6C,CAAA;IAC7C,oEAA6C,CAAA;IAC7C,4EAAqD,CAAA;IACrD,sFAA+D,CAAA;IAC/D,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,gEAAyC,CAAA;IACzC,yBAAyB;IACzB,8EAAuD,CAAA;IACvD,kBAAkB;IAClB,0DAAmC,CAAA;IACnC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,kEAA2C,CAAA;IAC3C,wBAAwB;IACxB,4DAAqC,CAAA;IACrC,sDAA+B,CAAA;IAC/B,wFAAiE,CAAA;IACjE,gEAAyC,CAAA;IACzC,0DAAmC,CAAA;IACnC,4DAAqC,CAAA;IACrC,4DAAqC,CAAA;IACrC,0EAAmD,CAAA;IACnD,8DAAuC,CAAA;IACvC,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,8EAAuD,CAAA;IACvD,wFAAiE,CAAA;IACjE,0EAAmD,CAAA;IACnD,0DAAmC,CAAA;IACnC,kEAA2C,CAAA;IAC3C,0BAA0B;IAC1B,gFAAyD,CAAA;IAEzD,mDAAmD;IACnD,sGAA+E,CAAA;AACjF,CAAC,EAjMW,mBAAmB,mCAAnB,mBAAmB,QAiM9B;AAaD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAExD,SAAS,QAAQ,CAAC,KAAe,EAAE,IAAyB,EAAE,GAAW,EAAE,KAAuB;IAChG,IAAA,gBAAM,EAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAA;IACpE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1B,CAAC;AAED,SAAgB,UAAU,CAAC,EACzB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,GAOhB;IACC,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,EAAE,QAAQ,IAAI,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9G,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IAOxC,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,QAAQ,EAAE,QAAQ,IAAI,SAAS;QAC/B,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,eAAe,EAAE,eAAe,IAAI,SAAS;KAC9C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAAe,EACf,SAAiB,EACjB,OAAe;AACf,8DAA8D;AAC9D,KAAU,EACV,aAAsB,EACtB,eAAwB;IAExB,MAAM,EACJ,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,SAAS,EACT,KAAK,EACL,wBAAwB,GACzB,GAAG,KAAK,CAAA;IACT,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAA;IAC/C,MAAM,GAAG,GAAG,UAAU,CAAC;QACrB,SAAS;QACT,OAAO;QACP,QAAQ;QACR,KAAK;QACL,eAAe;KAChB,CAAC,CAAA;IACF,oFAAoF;IACpF,UAAU;IACV,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QACvF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;YAC3G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAC1F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;YAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YACvF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAA;YAC9G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACjG,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAC5D,GAAG,EACH,UAAU,CAAC,4BAA4B,CACxC,CAAA;YACD,qBAAqB;YACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACrG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,qBAAqB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACzG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;YACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;YACjG,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,CAAC;gBAAA;oBACC,YAAY;oBACZ,sBAAsB;oBACtB,kBAAkB;oBAClB,mBAAmB;oBACnB,gCAAgC;oBAChC,+BAA+B;iBAChC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACf,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAwB,EACjF,GAAG,EACH,UAAU,CAAC,IAAI,CAAC,CACjB,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACnE,yEAAyE;gBACzE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;gBAC/F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;gBAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;gBAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;gBAC1F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC7F,8EAA8E;gBAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;gBACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,sBAAsB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;YACjH,CAAC;QACH,CAAC;IACH,CAAC;IACD,WAAW;IACX,IAAI,WAAW,EAAE,CAAC;QAChB,2EAA2E;QAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QACxF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;YAC3F,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,WAAW,CAAwB,EAC7C,GAAG,EACH,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,eAAe,CACpD,CAAA;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;YACtG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;YAClG,gFAAgF;YAChF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;YACtG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YACxF,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,4BAA4B,CAAwB,EAC9D,GAAG,EACH,WAAW,CAAC,sBAAsB,CACnC,CAAA;YACD,QAAQ,CAAC,KAAK,EAAE,uCAA8D,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAA;YAC9G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAwB,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;YACxF,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAC5D,GAAG,EACH,WAAW,CAAC,wBAAwB,CACrC,CAAA;YACD,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,qBAAqB,CAAwB,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAA;gBACvG,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,oCAAoC,CAAwB,EACtE,GAAG,EACH,WAAW,CAAC,kCAAkC,CAC/C,CAAA;gBACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,sBAAsB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;gBAChH,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,4BAA4B,CAAwB,EAC9D,GAAG,EACH,WAAW,CAAC,0BAA0B,CACvC,CAAA;gBACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;gBAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;gBAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;gBACxG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;gBACxG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;gBAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAChG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import assert from 'assert'\n\nimport { toTitleCase } from './utils'\n\n/**\n * Page stats metric names.\n */\nexport enum PageStatsNames {\n /** The browser processes CPU usage (per page). */\n cpu = 'cpu',\n /** The browser processes memory usage (per page). */\n memory = 'memory',\n /** The tool nodejs CPU usage. */\n nodeCpu = 'nodeCpu',\n /** The tool nodejs memory usage. */\n nodeMemory = 'nodeMemory',\n /** The system total CPU usage. */\n usedCpu = 'usedCpu',\n /** The system total memory usage. */\n usedMemory = 'usedMemory',\n /** The system total GPU usage. */\n usedGpu = 'usedGpu',\n /** The page CPU usage. */\n pageCpu = 'pageCpu',\n /** The page memory usage. */\n pageMemory = 'pageMemory',\n\n /** The opened pages count. */\n pages = 'pages',\n /** The current opened PeerConnections. */\n peerConnections = 'peerConnections',\n /** The maximum PeerConnections connected duration. */\n peerConnectionConnectionTime = 'peerConnectionConnectionTime',\n /** The maximum PeerConnections disconnection duration. */\n peerConnectionDisconnectionTime = 'peerConnectionDisconnectionTime',\n /** The total created PeerConnections. */\n peerConnectionsCreated = 'peerConnectionsCreated',\n /** The total connected PeerConnections. */\n peerConnectionsConnected = 'peerConnectionsConnected',\n /** The total closed PeerConnections. */\n peerConnectionsClosed = 'peerConnectionsClosed',\n /** The total disconnected PeerConnections. */\n peerConnectionsDisconnected = 'peerConnectionsDisconnected',\n /** The total failed PeerConnections. */\n peerConnectionsFailed = 'peerConnectionsFailed',\n /** The total delay from PeerConnections creation to connection. */\n peerConnectionsDelay = 'peerConnectionsDelay',\n\n /** The page errors count. */\n errors = 'errors',\n /** The page warnings count. */\n warnings = 'warnings',\n\n /** The page total HTTP sent bytes. */\n httpSentBytes = 'httpSentBytes',\n /** The page total HTTP received bytes. */\n httpRecvBytes = 'httpRecvBytes',\n /** The page HTTP receive latency. */\n httpRecvLatency = 'httpRecvLatency',\n\n /** The page total WebSocket sent bytes. */\n wsSentBytes = 'wsSentBytes',\n /** The page total WebSocket received bytes. */\n wsRecvBytes = 'wsRecvBytes',\n /** The page WebSocket receive latency. */\n wsRecvLatency = 'wsRecvLatency',\n\n /** The audio end to end total delay. */\n audioEndToEndDelay = 'audioEndToEndDelay',\n /** The audio start frame delay. */\n audioStartFrameDelay = 'audioStartFrameDelay',\n\n /** The video end to end total delay. */\n videoEndToEndDelay = 'videoEndToEndDelay',\n /** The video start frame delay. */\n videoStartFrameDelay = 'videoStartFrameDelay',\n\n /** The screen end to end total delay. */\n screenEndToEndDelay = 'screenEndToEndDelay',\n /** The screen start frame delay. */\n screenStartFrameDelay = 'screenStartFrameDelay',\n\n cpuPressure = 'cpuPressure',\n\n videoWidth = 'videoWidth',\n videoHeight = 'videoHeight',\n videoBufferedTime = 'videoBufferedTime',\n videoPlayingTime = 'videoPlayingTime',\n videoBufferingTime = 'videoBufferingTime',\n videoBufferingEvents = 'videoBufferingEvents',\n\n /** The throttle upload rate limitation. */\n throttleUpRate = 'throttleUpRate',\n /** The throttle upload delay. */\n throttleUpDelay = 'throttleUpDelay',\n /** The throttle upload packet loss. */\n throttleUpLoss = 'throttleUpLoss',\n /** The throttle upload packet queue. */\n throttleUpQueue = 'throttleUpQueue',\n\n /** The throttle download rate limitation. */\n throttleDownRate = 'throttleDownRate',\n /** The throttle download delay. */\n throttleDownDelay = 'throttleDownDelay',\n /** The throttle download packet loss. */\n throttleDownLoss = 'throttleDownLoss',\n /** The throttle download packet queue. */\n throttleDownQueue = 'throttleDownQueue',\n}\n\n/**\n * RTC metrics collected by the page helper scripts and related to each\n * track object created by PeerConnections.\n */\nexport enum RtcStatsMetricNames {\n /** The sent audio codec. */\n audioSentCodec = 'audioSentCodec',\n /** The total sent audio bytes. */\n audioSentBytes = 'audioSentBytes',\n /** The sent audio packets. */\n audioSentPackets = 'audioSentPackets',\n /** The sent audio bitrates. */\n audioSentBitrates = 'audioSentBitrates',\n /** The send audio lost packets. */\n audioSentPacketsLost = 'audioSentPacketsLost',\n //'audioSentPacketsLostCount',\n /** The total audio NACK received by the sender. */\n audioSentNackCountRecv = 'audioSentNackCountRecv',\n /** The sent audio round trip time. */\n audioSentRoundTripTime = 'audioSentRoundTripTime',\n /** The sent audio jitter. */\n audioSentJitter = 'audioSentJitter',\n /** The audio RTC transport round trip time. */\n audioSentTransportRoundTripTime = 'audioSentTransportRoundTripTime',\n /** The sent audio encoding max bitrate. */\n audioSentMaxBitrate = 'audioSentMaxBitrate',\n /** The sent audio RTX packets. */\n audioSentRetransmittedPackets = 'audioSentRetransmittedPackets',\n\n /** The sent video codec. */\n videoSentCodec = 'videoSentCodec',\n /** The FIR requests received by the video sender. */\n videoFirCountReceived = 'videoFirCountReceived',\n /** The PLI requests received by the video sender. */\n videoPliCountReceived = 'videoPliCountReceived',\n /** The sent video encode latency. */\n videoEncodeLatency = 'videoEncodeLatency',\n /** The sent video latency. */\n videoSentLatency = 'videoSentLatency',\n /** The sent video bandwidth quality limitations. */\n videoQualityLimitationBandwidth = 'videoQualityLimitationBandwidth',\n /** The sent video cpu quality limitations. */\n videoQualityLimitationCpu = 'videoQualityLimitationCpu',\n /** The sent video total resolution changes for quality limitations. */\n videoQualityLimitationResolutionChanges = 'videoQualityLimitationResolutionChanges',\n /** The sent video Simulcast active spatial layers. */\n videoSentActiveEncodings = 'videoSentActiveEncodings',\n /** The sent video bitrates. */\n videoSentBitrates = 'videoSentBitrates',\n /** The sent video bytes. */\n videoSentBytes = 'videoSentBytes',\n /** The sent video packets. */\n videoSentPackets = 'videoSentPackets',\n /** The sent video frames. */\n videoSentFrames = 'videoSentFrames',\n /** The sent video framerate. */\n videoSentFps = 'videoSentFps',\n /** The sent video width. */\n videoSentWidth = 'videoSentWidth',\n /** The sent video height. */\n videoSentHeight = 'videoSentHeight',\n /** The sent video encoding max bitrate. */\n videoSentMaxBitrate = 'videoSentMaxBitrate',\n //'videoSentPackets',\n /** The sent video lost packets. */\n videoSentPacketsLost = 'videoSentPacketsLost',\n //'videoSentPacketsLostCount',\n /** The NACK count received by video sender. */\n videoSentNackCountRecv = 'videoSentNackCountRecv',\n /** The sent video round trip time. */\n videoSentRoundTripTime = 'videoSentRoundTripTime',\n /** The transport send video round trip time. */\n videoSentTransportRoundTripTime = 'videoSentTransportRoundTripTime',\n /** The video sent jitter. */\n videoSentJitter = 'videoSentJitter',\n /** The sent video RTX packets. */\n videoSentRetransmittedPackets = 'videoSentRetransmittedPackets',\n\n /** The sent screen codec. */\n screenSentCodec = 'screenSentCodec',\n /** The received FIR from screen sender. */\n screenFirCountReceived = 'screenFirCountReceived',\n /** The received PLI from screen sender. */\n screenPliCountReceived = 'screenPliCountReceived',\n /** The sent screen encode latency. */\n screenEncodeLatency = 'screenEncodeLatency',\n /** The sent screen latency. */\n screenSentLatency = 'screenSentLatency',\n /** The sent screen bandwidth quality limitation. */\n screenQualityLimitationBandwidth = 'screenQualityLimitationBandwidth',\n /** The sent screen cpu quality limitation. */\n screenQualityLimitationCpu = 'screenQualityLimitationCpu',\n /** The sent screen resolustion changes caused by quality limitation. */\n screenQualityLimitationResolutionChanges = 'screenQualityLimitationResolutionChanges',\n /** The sent screen active Simulcast spatial layers. */\n screenSentActiveEncodings = 'screenSentActiveEncodings',\n /** The sent screen bitrates. */\n screenSentBitrates = 'screenSentBitrates',\n /** The sent screen bytes. */\n screenSentBytes = 'screenSentBytes',\n /** The sent screen packets. */\n screenSentPackets = 'screenSentPackets',\n /** The sent screen frames. */\n screenSentFrames = 'screenSentFrames',\n /** The sent screen framerate. */\n screenSentFps = 'screenSentFps',\n /** The sent screen width. */\n screenSentWidth = 'screenSentWidth',\n /** The sent screen height. */\n screenSentHeight = 'screenSentHeight',\n /** The sent screen encoding max bitrate. */\n screenSentMaxBitrate = 'screenSentMaxBitrate',\n //'screenSentPackets',\n /** The sent screen lost packets. */\n screenSentPacketsLost = 'screenSentPacketsLost',\n //'screenSentPacketsLostCount',\n /** The NACK count received by screen sender. */\n screenSentNackCountRecv = 'screenSentNackCountRecv',\n /** The sent screen round trip time. */\n screenSentRoundTripTime = 'screenSentRoundTripTime',\n /** The transport sent screen round trip time. */\n screenSentTransportRoundTripTime = 'screenSentTransportRoundTripTime',\n /** The screen sent jitter. */\n screenSentJitter = 'screenSentJitter',\n /** The screen audio RTX packets. */\n screenSentRetransmittedPackets = 'screenSentRetransmittedPackets',\n\n // inbound audio,\n audioRecvCodec = 'audioRecvCodec',\n audioRecvBytes = 'audioRecvBytes',\n audioRecvAvgJitterBufferDelay = 'audioRecvAvgJitterBufferDelay',\n audioRecvBitrates = 'audioRecvBitrates',\n audioRecvJitter = 'audioRecvJitter',\n audioRecvRoundTripTime = 'audioRecvRoundTripTime',\n audioRecvPackets = 'audioRecvPackets',\n audioRecvPacketsLost = 'audioRecvPacketsLost', // TODO: remove this.\n audioRecvLostPackets = 'audioRecvLostPackets',\n audioRecvPacketsLossRate = 'audioRecvPacketsLossRate',\n audioRecvRetransmittedPackets = 'audioRecvRetransmittedPackets',\n audioRecvNackCountSent = 'audioRecvNackCountSent',\n audioRecvLevel = 'audioRecvLevel',\n audioRecvTotalSamplesReceived = 'audioRecvTotalSamplesReceived',\n audioRecvConcealedSamples = 'audioRecvConcealedSamples',\n audioRecvConcealmentEvents = 'audioRecvConcealmentEvents',\n audioRecvInsertedSamplesForDeceleration = 'audioRecvInsertedSamplesForDeceleration',\n audioRecvRemovedSamplesForAcceleration = 'audioRecvRemovedSamplesForAcceleration',\n // inbound video,\n videoRecvCodec = 'videoRecvCodec',\n videoFirCountSent = 'videoFirCountSent',\n videoPliCountSent = 'videoPliCountSent',\n videoDecodeLatency = 'videoDecodeLatency',\n //'videoFramesDecoded',\n videoRecvFrames = 'videoRecvFrames',\n videoRecvFps = 'videoRecvFps',\n videoRecvAvgJitterBufferDelay = 'videoRecvAvgJitterBufferDelay',\n videoRecvBitrates = 'videoRecvBitrates',\n videoRecvBytes = 'videoRecvBytes',\n videoRecvHeight = 'videoRecvHeight',\n videoRecvJitter = 'videoRecvJitter',\n videoRecvRoundTripTime = 'videoRecvRoundTripTime',\n videoRecvPackets = 'videoRecvPackets',\n videoRecvLostPackets = 'videoRecvLostPackets',\n videoRecvPacketsLost = 'videoRecvPacketsLost', // TODO: remove this.\n videoRecvPacketsLossRate = 'videoRecvPacketsLossRate',\n videoRecvRetransmittedPackets = 'videoRecvRetransmittedPackets',\n videoRecvNackCountSent = 'videoRecvNackCountSent',\n videoRecvWidth = 'videoRecvWidth',\n videoRecvFrameRate = 'videoRecvFrameRate',\n //'videoTotalDecodeTime',\n videoTotalFreezesDuration = 'videoTotalFreezesDuration',\n // inbound screen,\n screenRecvCodec = 'screenRecvCodec',\n screenFirCountSent = 'screenFirCountSent',\n screenPliCountSent = 'screenPliCountSent',\n screenDecodeLatency = 'screenDecodeLatency',\n //'screenFramesDecoded',\n screenRecvFrames = 'screenRecvFrames',\n screenRecvFps = 'screenRecvFps',\n screenRecvAvgJitterBufferDelay = 'screenRecvAvgJitterBufferDelay',\n screenRecvBitrates = 'screenRecvBitrates',\n screenRecvBytes = 'screenRecvBytes',\n screenRecvHeight = 'screenRecvHeight',\n screenRecvJitter = 'screenRecvJitter',\n screenRecvRoundTripTime = 'screenRecvRoundTripTime',\n screenRecvPackets = 'screenRecvPackets',\n screenRecvLostPackets = 'screenRecvLostPackets',\n screenRecvPacketsLost = 'screenRecvPacketsLost', // TODO: remove this.\n screenRecvPacketsLossRate = 'screenRecvPacketsLossRate',\n screenRecvRetransmittedPackets = 'screenRecvRetransmittedPackets',\n screenRecvNackCountSent = 'screenRecvNackCountSent',\n screenRecvWidth = 'screenRecvWidth',\n screenRecvFrameRate = 'screenRecvFrameRate',\n //'screenTotalDecodeTime',\n screenTotalFreezesDuration = 'screenTotalFreezesDuration',\n\n /** The transport availableOutgoingBitrate stat. */\n transportSentAvailableOutgoingBitrate = 'transportSentAvailableOutgoingBitrate',\n}\n\n/**\n * The RTC stats collection indexed by {@link RtcStatsMetricNames}.\n *\n * Each {@link RtcStatsMetricNames} record points to an object indexed by\n * `trackId:hostName:codec`, where:\n * - `trackId`: The RTC getStats track identifier.\n * - `hostName`: The remote endpoint IP address or hostname.\n * - `codec`: The track codec.\n */\nexport type RtcStats = Record<RtcStatsMetricNames, Record<string, number | string>>\n\nconst RtcStatsMetrics = Object.keys(RtcStatsMetricNames)\n\nfunction setStats(stats: RtcStats, name: RtcStatsMetricNames, key: string, value?: number | string): void {\n assert(RtcStatsMetrics.includes(name), `Unknown stat name: ${name}`)\n if (value === undefined) return\n if (!stats[name]) {\n stats[name] = {}\n }\n stats[name][key] = value\n}\n\nexport function rtcStatKey({\n pageIndex,\n trackId,\n hostName,\n codec,\n participantName,\n}: {\n pageIndex?: number\n trackId?: string\n hostName?: string\n codec?: string\n participantName?: string\n}): string {\n return [pageIndex ?? '', participantName || '', hostName || 'unknown', codec || '', trackId || ''].join(':')\n}\n\nexport function parseRtStatKey(key: string): {\n pageIndex?: number\n trackId?: string\n hostName: string\n codec?: string\n participantName?: string\n} {\n const [pageIndex, participantName, hostName, codec, trackId] = key.split(':', 5)\n return {\n pageIndex: pageIndex ? parseInt(pageIndex) : undefined,\n trackId: trackId || undefined,\n hostName: hostName || 'unknown',\n codec: codec || undefined,\n participantName: participantName || undefined,\n }\n}\n\n/**\n * Updates the {@link RtcStats} object with the collected track values.\n */\nexport function updateRtcStats(\n stats: RtcStats,\n pageIndex: number,\n trackId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n signalingHost?: string,\n participantName?: string,\n): void {\n const {\n enabled,\n inboundRtp,\n outboundRtp,\n remoteAddress,\n videoSentActiveEncodings,\n sentMaxBitrate,\n isDisplay,\n codec,\n availableOutgoingBitrate,\n } = value\n const hostName = signalingHost || remoteAddress\n const key = rtcStatKey({\n pageIndex,\n trackId,\n hostName,\n codec,\n participantName,\n })\n //log.log(`updateRtcStats`, {enabled, signalingHost, remoteAddress, isDisplay, key})\n // inbound\n if (inboundRtp) {\n const prefix = inboundRtp.kind === 'video' ? (isDisplay ? 'screen' : 'video') : 'audio'\n setStats(stats, (prefix + 'RecvCodec') as RtcStatsMetricNames, key, codec)\n if (enabled) {\n setStats(stats, (prefix + 'RecvAvgJitterBufferDelay') as RtcStatsMetricNames, key, inboundRtp.jitterBuffer)\n setStats(stats, (prefix + 'RecvBitrates') as RtcStatsMetricNames, key, inboundRtp.bitrate)\n setStats(stats, (prefix + 'RecvBytes') as RtcStatsMetricNames, key, inboundRtp.bytesReceived)\n setStats(stats, (prefix + 'RecvJitter') as RtcStatsMetricNames, key, inboundRtp.jitter)\n setStats(stats, (prefix + 'RecvRoundTripTime') as RtcStatsMetricNames, key, inboundRtp.transportRoundTripTime)\n setStats(stats, (prefix + 'RecvPackets') as RtcStatsMetricNames, key, inboundRtp.packetsReceived)\n setStats(\n stats,\n (prefix + 'RecvRetransmittedPackets') as RtcStatsMetricNames,\n key,\n inboundRtp.retransmittedPacketsReceived,\n )\n // TODO: remove this.\n setStats(stats, (prefix + 'RecvPacketsLost') as RtcStatsMetricNames, key, inboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'RecvPacketsLossRate') as RtcStatsMetricNames, key, inboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'RecvLostPackets') as RtcStatsMetricNames, key, inboundRtp.packetsLost)\n setStats(stats, (prefix + 'RecvNackCountSent') as RtcStatsMetricNames, key, inboundRtp.nackCount)\n if (inboundRtp.kind === 'audio') {\n ;[\n 'audioLevel',\n 'totalSamplesReceived',\n 'concealedSamples',\n 'concealmentEvents',\n 'insertedSamplesForDeceleration',\n 'removedSamplesForAcceleration',\n ].forEach(name => {\n setStats(\n stats,\n (prefix + 'Recv' + toTitleCase(name.replace('audio', ''))) as RtcStatsMetricNames,\n key,\n inboundRtp[name],\n )\n })\n }\n if (inboundRtp.kind === 'video' && inboundRtp.keyFramesDecoded > 0) {\n //setStats(stats, prefix + 'FramesDecoded', key, inboundRtp.framesDecoded\n setStats(stats, (prefix + 'RecvFrames') as RtcStatsMetricNames, key, inboundRtp.framesReceived)\n setStats(stats, (prefix + 'RecvFps') as RtcStatsMetricNames, key, inboundRtp.framesPerSecond)\n setStats(stats, (prefix + 'RecvHeight') as RtcStatsMetricNames, key, inboundRtp.frameHeight)\n setStats(stats, (prefix + 'RecvWidth') as RtcStatsMetricNames, key, inboundRtp.frameWidth)\n setStats(stats, (prefix + 'RecvFrameRate') as RtcStatsMetricNames, key, inboundRtp.frameRate)\n //setStats(stats, prefix + 'TotalDecodeTime', key, inboundRtp.totalDecodeTime)\n setStats(stats, (prefix + 'FirCountSent') as RtcStatsMetricNames, key, inboundRtp.firCount)\n setStats(stats, (prefix + 'PliCountSent') as RtcStatsMetricNames, key, inboundRtp.pliCount)\n setStats(stats, (prefix + 'DecodeLatency') as RtcStatsMetricNames, key, inboundRtp.decodeLatency)\n setStats(stats, (prefix + 'TotalFreezesDuration') as RtcStatsMetricNames, key, inboundRtp.totalFreezesDuration)\n }\n }\n }\n // outbound\n if (outboundRtp) {\n // log.log('outboundRtp', isDisplay, JSON.stringify(outboundRtp, null, 2));\n const prefix = outboundRtp.kind === 'video' ? (isDisplay ? 'screen' : 'video') : 'audio'\n setStats(stats, (prefix + 'SentCodec') as RtcStatsMetricNames, key, codec)\n if (enabled) {\n setStats(stats, (prefix + 'SentBitrates') as RtcStatsMetricNames, key, outboundRtp.bitrate)\n setStats(\n stats,\n (prefix + 'SentBytes') as RtcStatsMetricNames,\n key,\n outboundRtp.bytesSent + outboundRtp.headerBytesSent,\n )\n setStats(stats, (prefix + 'SentPackets') as RtcStatsMetricNames, key, outboundRtp.packetsSent)\n setStats(stats, (prefix + 'SentPacketsLost') as RtcStatsMetricNames, key, outboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'SentNackCountRecv') as RtcStatsMetricNames, key, outboundRtp.nackCount)\n //setStats(stats, prefix + 'SentPacketsLostCount', key, outboundRtp.packetsLost)\n setStats(stats, (prefix + 'SentRoundTripTime') as RtcStatsMetricNames, key, outboundRtp.roundTripTime)\n setStats(stats, (prefix + 'SentJitter') as RtcStatsMetricNames, key, outboundRtp.jitter)\n setStats(\n stats,\n (prefix + 'SentTransportRoundTripTime') as RtcStatsMetricNames,\n key,\n outboundRtp.transportRoundTripTime,\n )\n setStats(stats, 'transportSentAvailableOutgoingBitrate' as RtcStatsMetricNames, key, availableOutgoingBitrate)\n setStats(stats, (prefix + 'SentMaxBitrate') as RtcStatsMetricNames, key, sentMaxBitrate)\n setStats(\n stats,\n (prefix + 'SentRetransmittedPackets') as RtcStatsMetricNames,\n key,\n outboundRtp.retransmittedPacketsSent,\n )\n if (outboundRtp.kind === 'video') {\n setStats(stats, (prefix + 'SentActiveEncodings') as RtcStatsMetricNames, key, videoSentActiveEncodings)\n setStats(\n stats,\n (prefix + 'QualityLimitationResolutionChanges') as RtcStatsMetricNames,\n key,\n outboundRtp.qualityLimitationResolutionChanges,\n )\n setStats(stats, (prefix + 'QualityLimitationCpu') as RtcStatsMetricNames, key, outboundRtp.qualityLimitationCpu)\n setStats(\n stats,\n (prefix + 'QualityLimitationBandwidth') as RtcStatsMetricNames,\n key,\n outboundRtp.qualityLimitationBandwidth,\n )\n setStats(stats, (prefix + 'SentWidth') as RtcStatsMetricNames, key, outboundRtp.frameWidth)\n setStats(stats, (prefix + 'SentHeight') as RtcStatsMetricNames, key, outboundRtp.frameHeight)\n setStats(stats, (prefix + 'SentFrames') as RtcStatsMetricNames, key, outboundRtp.framesSent)\n setStats(stats, (prefix + 'SentFps') as RtcStatsMetricNames, key, outboundRtp.framesPerSecond)\n setStats(stats, (prefix + 'FirCountReceived') as RtcStatsMetricNames, key, outboundRtp.firCountReceived)\n setStats(stats, (prefix + 'PliCountReceived') as RtcStatsMetricNames, key, outboundRtp.pliCountReceived)\n setStats(stats, (prefix + 'EncodeLatency') as RtcStatsMetricNames, key, outboundRtp.encodeLatency)\n setStats(stats, (prefix + 'SentLatency') as RtcStatsMetricNames, key, outboundRtp.sentLatency)\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"rtcstats.js","sourceRoot":"","sources":["../../src/rtcstats.ts"],"names":[],"mappings":";;;;;;AA6UA,gCAcC;AAED,wCAeC;AAKD,wCA+IC;AAhgBD,oDAA2B;AAE3B,mCAAqC;AAErC;;GAEG;AACH,IAAY,cAqGX;AArGD,WAAY,cAAc;IACxB,kDAAkD;IAClD,6BAAW,CAAA;IACX,qDAAqD;IACrD,mCAAiB,CAAA;IACjB,iCAAiC;IACjC,qCAAmB,CAAA;IACnB,oCAAoC;IACpC,2CAAyB,CAAA;IACzB,kCAAkC;IAClC,qCAAmB,CAAA;IACnB,qCAAqC;IACrC,2CAAyB,CAAA;IACzB,kCAAkC;IAClC,qCAAmB,CAAA;IACnB,0BAA0B;IAC1B,qCAAmB,CAAA;IACnB,6BAA6B;IAC7B,2CAAyB,CAAA;IAEzB,8BAA8B;IAC9B,iCAAe,CAAA;IACf,0CAA0C;IAC1C,qDAAmC,CAAA;IACnC,sDAAsD;IACtD,+EAA6D,CAAA;IAC7D,0DAA0D;IAC1D,qFAAmE,CAAA;IACnE,yCAAyC;IACzC,mEAAiD,CAAA;IACjD,2CAA2C;IAC3C,uEAAqD,CAAA;IACrD,wCAAwC;IACxC,iEAA+C,CAAA;IAC/C,8CAA8C;IAC9C,6EAA2D,CAAA;IAC3D,wCAAwC;IACxC,iEAA+C,CAAA;IAC/C,mEAAmE;IACnE,+DAA6C,CAAA;IAE7C,6BAA6B;IAC7B,mCAAiB,CAAA;IACjB,+BAA+B;IAC/B,uCAAqB,CAAA;IAErB,sCAAsC;IACtC,iDAA+B,CAAA;IAC/B,0CAA0C;IAC1C,iDAA+B,CAAA;IAC/B,qCAAqC;IACrC,qDAAmC,CAAA;IAEnC,2CAA2C;IAC3C,6CAA2B,CAAA;IAC3B,+CAA+C;IAC/C,6CAA2B,CAAA;IAC3B,0CAA0C;IAC1C,iDAA+B,CAAA;IAE/B,wCAAwC;IACxC,2DAAyC,CAAA;IACzC,mCAAmC;IACnC,+DAA6C,CAAA;IAE7C,wCAAwC;IACxC,2DAAyC,CAAA;IACzC,mCAAmC;IACnC,+DAA6C,CAAA;IAE7C,yCAAyC;IACzC,6DAA2C,CAAA;IAC3C,oCAAoC;IACpC,iEAA+C,CAAA;IAE/C,6CAA2B,CAAA;IAE3B,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,yDAAuC,CAAA;IACvC,uDAAqC,CAAA;IACrC,2DAAyC,CAAA;IACzC,+DAA6C,CAAA;IAE7C,2CAA2C;IAC3C,mDAAiC,CAAA;IACjC,iCAAiC;IACjC,qDAAmC,CAAA;IACnC,uCAAuC;IACvC,mDAAiC,CAAA;IACjC,wCAAwC;IACxC,qDAAmC,CAAA;IAEnC,6CAA6C;IAC7C,uDAAqC,CAAA;IACrC,mCAAmC;IACnC,yDAAuC,CAAA;IACvC,yCAAyC;IACzC,uDAAqC,CAAA;IACrC,0CAA0C;IAC1C,yDAAuC,CAAA;AACzC,CAAC,EArGW,cAAc,8BAAd,cAAc,QAqGzB;AAED;;;GAGG;AACH,IAAY,mBAmMX;AAnMD,WAAY,mBAAmB;IAC7B,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,kCAAkC;IAClC,wDAAiC,CAAA;IACjC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,mCAAmC;IACnC,oEAA6C,CAAA;IAC7C,8BAA8B;IAC9B,mDAAmD;IACnD,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,wEAAiD,CAAA;IACjD,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,+CAA+C;IAC/C,0FAAmE,CAAA;IACnE,2CAA2C;IAC3C,kEAA2C,CAAA;IAC3C,kCAAkC;IAClC,sFAA+D,CAAA;IAE/D,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,qDAAqD;IACrD,sEAA+C,CAAA;IAC/C,qDAAqD;IACrD,sEAA+C,CAAA;IAC/C,qCAAqC;IACrC,gEAAyC,CAAA;IACzC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,oDAAoD;IACpD,0FAAmE,CAAA;IACnE,8CAA8C;IAC9C,8EAAuD,CAAA;IACvD,uEAAuE;IACvE,0GAAmF,CAAA;IACnF,sDAAsD;IACtD,4EAAqD,CAAA;IACrD,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,gCAAgC;IAChC,oDAA6B,CAAA;IAC7B,4BAA4B;IAC5B,wDAAiC,CAAA;IACjC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,2CAA2C;IAC3C,kEAA2C,CAAA;IAC3C,qBAAqB;IACrB,mCAAmC;IACnC,oEAA6C,CAAA;IAC7C,8BAA8B;IAC9B,+CAA+C;IAC/C,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,wEAAiD,CAAA;IACjD,gDAAgD;IAChD,0FAAmE,CAAA;IACnE,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,kCAAkC;IAClC,sFAA+D,CAAA;IAE/D,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,2CAA2C;IAC3C,wEAAiD,CAAA;IACjD,2CAA2C;IAC3C,wEAAiD,CAAA;IACjD,sCAAsC;IACtC,kEAA2C,CAAA;IAC3C,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,oDAAoD;IACpD,4FAAqE,CAAA;IACrE,8CAA8C;IAC9C,gFAAyD,CAAA;IACzD,wEAAwE;IACxE,4GAAqF,CAAA;IACrF,uDAAuD;IACvD,8EAAuD,CAAA;IACvD,gCAAgC;IAChC,gEAAyC,CAAA;IACzC,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,+BAA+B;IAC/B,8DAAuC,CAAA;IACvC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,iCAAiC;IACjC,sDAA+B,CAAA;IAC/B,6BAA6B;IAC7B,0DAAmC,CAAA;IACnC,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,4CAA4C;IAC5C,oEAA6C,CAAA;IAC7C,sBAAsB;IACtB,oCAAoC;IACpC,sEAA+C,CAAA;IAC/C,+BAA+B;IAC/B,gDAAgD;IAChD,0EAAmD,CAAA;IACnD,uCAAuC;IACvC,0EAAmD,CAAA;IACnD,iDAAiD;IACjD,4FAAqE,CAAA;IACrE,8BAA8B;IAC9B,4DAAqC,CAAA;IACrC,oCAAoC;IACpC,wFAAiE,CAAA;IAEjE,iBAAiB;IACjB,wDAAiC,CAAA;IACjC,wDAAiC,CAAA;IACjC,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,0DAAmC,CAAA;IACnC,wEAAiD,CAAA;IACjD,4DAAqC,CAAA;IACrC,oEAA6C,CAAA;IAC7C,oEAA6C,CAAA;IAC7C,4EAAqD,CAAA;IACrD,sFAA+D,CAAA;IAC/D,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,sFAA+D,CAAA;IAC/D,8EAAuD,CAAA;IACvD,gFAAyD,CAAA;IACzD,0GAAmF,CAAA;IACnF,wGAAiF,CAAA;IACjF,wEAAiD,CAAA;IACjD,iBAAiB;IACjB,wDAAiC,CAAA;IACjC,8DAAuC,CAAA;IACvC,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,uBAAuB;IACvB,0DAAmC,CAAA;IACnC,oDAA6B,CAAA;IAC7B,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,wDAAiC,CAAA;IACjC,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,wEAAiD,CAAA;IACjD,4DAAqC,CAAA;IACrC,oEAA6C,CAAA;IAC7C,oEAA6C,CAAA;IAC7C,4EAAqD,CAAA;IACrD,sFAA+D,CAAA;IAC/D,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,gEAAyC,CAAA;IACzC,yBAAyB;IACzB,8EAAuD,CAAA;IACvD,wEAAiD,CAAA;IACjD,kBAAkB;IAClB,0DAAmC,CAAA;IACnC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,kEAA2C,CAAA;IAC3C,wBAAwB;IACxB,4DAAqC,CAAA;IACrC,sDAA+B,CAAA;IAC/B,wFAAiE,CAAA;IACjE,gEAAyC,CAAA;IACzC,0DAAmC,CAAA;IACnC,4DAAqC,CAAA;IACrC,4DAAqC,CAAA;IACrC,0EAAmD,CAAA;IACnD,8DAAuC,CAAA;IACvC,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,8EAAuD,CAAA;IACvD,wFAAiE,CAAA;IACjE,0EAAmD,CAAA;IACnD,0DAAmC,CAAA;IACnC,kEAA2C,CAAA;IAC3C,0BAA0B;IAC1B,gFAAyD,CAAA;IACzD,0EAAmD,CAAA;IACnD,mDAAmD;IACnD,sGAA+E,CAAA;AACjF,CAAC,EAnMW,mBAAmB,mCAAnB,mBAAmB,QAmM9B;AAaD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAExD,SAAS,QAAQ,CAAC,KAAe,EAAE,IAAyB,EAAE,GAAW,EAAE,KAAuB;IAChG,IAAA,gBAAM,EAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAA;IACpE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1B,CAAC;AAED,SAAgB,UAAU,CAAC,EACzB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,GAOhB;IACC,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,EAAE,QAAQ,IAAI,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9G,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IAOxC,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,QAAQ,EAAE,QAAQ,IAAI,SAAS;QAC/B,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,eAAe,EAAE,eAAe,IAAI,SAAS;KAC9C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAAe,EACf,SAAiB,EACjB,OAAe;AACf,8DAA8D;AAC9D,KAAU,EACV,aAAsB,EACtB,eAAwB;IAExB,MAAM,EACJ,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,SAAS,EACT,KAAK,EACL,wBAAwB,GACzB,GAAG,KAAK,CAAA;IACT,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAA;IAC/C,MAAM,GAAG,GAAG,UAAU,CAAC;QACrB,SAAS;QACT,OAAO;QACP,QAAQ;QACR,KAAK;QACL,eAAe;KAChB,CAAC,CAAA;IACF,oFAAoF;IACpF,UAAU;IACV,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QACvF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;YAC3G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAC1F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;YAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YACvF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAA;YAC9G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACjG,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAC5D,GAAG,EACH,UAAU,CAAC,4BAA4B,CACxC,CAAA;YACD,qBAAqB;YACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACrG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,qBAAqB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;YACzG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;YACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;YACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;YACrG,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,CAAC;gBAAA;oBACC,YAAY;oBACZ,sBAAsB;oBACtB,kBAAkB;oBAClB,mBAAmB;oBACnB,gCAAgC;oBAChC,+BAA+B;iBAChC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACf,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAwB,EACjF,GAAG,EACH,UAAU,CAAC,IAAI,CAAC,CACjB,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACnE,yEAAyE;gBACzE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;gBAC/F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;gBAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;gBAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;gBAC1F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC7F,8EAA8E;gBAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;gBACjG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,sBAAsB,CAAwB,EAAE,GAAG,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;YACjH,CAAC;QACH,CAAC;IACH,CAAC;IACD,WAAW;IACX,IAAI,WAAW,EAAE,CAAC;QAChB,2EAA2E;QAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QACxF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;YAC3F,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,WAAW,CAAwB,EAC7C,GAAG,EACH,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,eAAe,CACpD,CAAA;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;YACtG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;YAClG,gFAAgF;YAChF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;YACtG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YACxF,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,4BAA4B,CAAwB,EAC9D,GAAG,EACH,WAAW,CAAC,sBAAsB,CACnC,CAAA;YACD,QAAQ,CAAC,KAAK,EAAE,uCAA8D,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAA;YAC9G,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAwB,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;YACxF,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,0BAA0B,CAAwB,EAC5D,GAAG,EACH,WAAW,CAAC,wBAAwB,CACrC,CAAA;YACD,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,qBAAqB,CAAwB,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAA;gBACvG,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,oCAAoC,CAAwB,EACtE,GAAG,EACH,WAAW,CAAC,kCAAkC,CAC/C,CAAA;gBACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,sBAAsB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;gBAChH,QAAQ,CACN,KAAK,EACL,CAAC,MAAM,GAAG,4BAA4B,CAAwB,EAC9D,GAAG,EACH,WAAW,CAAC,0BAA0B,CACvC,CAAA;gBACD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC3F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;gBAC7F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,YAAY,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;gBAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;gBAC9F,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;gBACxG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;gBACxG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,eAAe,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;gBAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,aAAa,CAAwB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;YAChG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import assert from 'assert'\n\nimport { toTitleCase } from './utils'\n\n/**\n * Page stats metric names.\n */\nexport enum PageStatsNames {\n /** The browser processes CPU usage (per page). */\n cpu = 'cpu',\n /** The browser processes memory usage (per page). */\n memory = 'memory',\n /** The tool nodejs CPU usage. */\n nodeCpu = 'nodeCpu',\n /** The tool nodejs memory usage. */\n nodeMemory = 'nodeMemory',\n /** The system total CPU usage. */\n usedCpu = 'usedCpu',\n /** The system total memory usage. */\n usedMemory = 'usedMemory',\n /** The system total GPU usage. */\n usedGpu = 'usedGpu',\n /** The page CPU usage. */\n pageCpu = 'pageCpu',\n /** The page memory usage. */\n pageMemory = 'pageMemory',\n\n /** The opened pages count. */\n pages = 'pages',\n /** The current opened PeerConnections. */\n peerConnections = 'peerConnections',\n /** The maximum PeerConnections connected duration. */\n peerConnectionConnectionTime = 'peerConnectionConnectionTime',\n /** The maximum PeerConnections disconnection duration. */\n peerConnectionDisconnectionTime = 'peerConnectionDisconnectionTime',\n /** The total created PeerConnections. */\n peerConnectionsCreated = 'peerConnectionsCreated',\n /** The total connected PeerConnections. */\n peerConnectionsConnected = 'peerConnectionsConnected',\n /** The total closed PeerConnections. */\n peerConnectionsClosed = 'peerConnectionsClosed',\n /** The total disconnected PeerConnections. */\n peerConnectionsDisconnected = 'peerConnectionsDisconnected',\n /** The total failed PeerConnections. */\n peerConnectionsFailed = 'peerConnectionsFailed',\n /** The total delay from PeerConnections creation to connection. */\n peerConnectionsDelay = 'peerConnectionsDelay',\n\n /** The page errors count. */\n errors = 'errors',\n /** The page warnings count. */\n warnings = 'warnings',\n\n /** The page total HTTP sent bytes. */\n httpSentBytes = 'httpSentBytes',\n /** The page total HTTP received bytes. */\n httpRecvBytes = 'httpRecvBytes',\n /** The page HTTP receive latency. */\n httpRecvLatency = 'httpRecvLatency',\n\n /** The page total WebSocket sent bytes. */\n wsSentBytes = 'wsSentBytes',\n /** The page total WebSocket received bytes. */\n wsRecvBytes = 'wsRecvBytes',\n /** The page WebSocket receive latency. */\n wsRecvLatency = 'wsRecvLatency',\n\n /** The audio end to end total delay. */\n audioEndToEndDelay = 'audioEndToEndDelay',\n /** The audio start frame delay. */\n audioStartFrameDelay = 'audioStartFrameDelay',\n\n /** The video end to end total delay. */\n videoEndToEndDelay = 'videoEndToEndDelay',\n /** The video start frame delay. */\n videoStartFrameDelay = 'videoStartFrameDelay',\n\n /** The screen end to end total delay. */\n screenEndToEndDelay = 'screenEndToEndDelay',\n /** The screen start frame delay. */\n screenStartFrameDelay = 'screenStartFrameDelay',\n\n cpuPressure = 'cpuPressure',\n\n videoWidth = 'videoWidth',\n videoHeight = 'videoHeight',\n videoBufferedTime = 'videoBufferedTime',\n videoPlayingTime = 'videoPlayingTime',\n videoBufferingTime = 'videoBufferingTime',\n videoBufferingEvents = 'videoBufferingEvents',\n\n /** The throttle upload rate limitation. */\n throttleUpRate = 'throttleUpRate',\n /** The throttle upload delay. */\n throttleUpDelay = 'throttleUpDelay',\n /** The throttle upload packet loss. */\n throttleUpLoss = 'throttleUpLoss',\n /** The throttle upload packet queue. */\n throttleUpQueue = 'throttleUpQueue',\n\n /** The throttle download rate limitation. */\n throttleDownRate = 'throttleDownRate',\n /** The throttle download delay. */\n throttleDownDelay = 'throttleDownDelay',\n /** The throttle download packet loss. */\n throttleDownLoss = 'throttleDownLoss',\n /** The throttle download packet queue. */\n throttleDownQueue = 'throttleDownQueue',\n}\n\n/**\n * RTC metrics collected by the page helper scripts and related to each\n * track object created by PeerConnections.\n */\nexport enum RtcStatsMetricNames {\n /** The sent audio codec. */\n audioSentCodec = 'audioSentCodec',\n /** The total sent audio bytes. */\n audioSentBytes = 'audioSentBytes',\n /** The sent audio packets. */\n audioSentPackets = 'audioSentPackets',\n /** The sent audio bitrates. */\n audioSentBitrates = 'audioSentBitrates',\n /** The send audio lost packets. */\n audioSentPacketsLost = 'audioSentPacketsLost',\n //'audioSentPacketsLostCount',\n /** The total audio NACK received by the sender. */\n audioSentNackCountRecv = 'audioSentNackCountRecv',\n /** The sent audio round trip time. */\n audioSentRoundTripTime = 'audioSentRoundTripTime',\n /** The sent audio jitter. */\n audioSentJitter = 'audioSentJitter',\n /** The audio RTC transport round trip time. */\n audioSentTransportRoundTripTime = 'audioSentTransportRoundTripTime',\n /** The sent audio encoding max bitrate. */\n audioSentMaxBitrate = 'audioSentMaxBitrate',\n /** The sent audio RTX packets. */\n audioSentRetransmittedPackets = 'audioSentRetransmittedPackets',\n\n /** The sent video codec. */\n videoSentCodec = 'videoSentCodec',\n /** The FIR requests received by the video sender. */\n videoFirCountReceived = 'videoFirCountReceived',\n /** The PLI requests received by the video sender. */\n videoPliCountReceived = 'videoPliCountReceived',\n /** The sent video encode latency. */\n videoEncodeLatency = 'videoEncodeLatency',\n /** The sent video latency. */\n videoSentLatency = 'videoSentLatency',\n /** The sent video bandwidth quality limitations. */\n videoQualityLimitationBandwidth = 'videoQualityLimitationBandwidth',\n /** The sent video cpu quality limitations. */\n videoQualityLimitationCpu = 'videoQualityLimitationCpu',\n /** The sent video total resolution changes for quality limitations. */\n videoQualityLimitationResolutionChanges = 'videoQualityLimitationResolutionChanges',\n /** The sent video Simulcast active spatial layers. */\n videoSentActiveEncodings = 'videoSentActiveEncodings',\n /** The sent video bitrates. */\n videoSentBitrates = 'videoSentBitrates',\n /** The sent video bytes. */\n videoSentBytes = 'videoSentBytes',\n /** The sent video packets. */\n videoSentPackets = 'videoSentPackets',\n /** The sent video frames. */\n videoSentFrames = 'videoSentFrames',\n /** The sent video framerate. */\n videoSentFps = 'videoSentFps',\n /** The sent video width. */\n videoSentWidth = 'videoSentWidth',\n /** The sent video height. */\n videoSentHeight = 'videoSentHeight',\n /** The sent video encoding max bitrate. */\n videoSentMaxBitrate = 'videoSentMaxBitrate',\n //'videoSentPackets',\n /** The sent video lost packets. */\n videoSentPacketsLost = 'videoSentPacketsLost',\n //'videoSentPacketsLostCount',\n /** The NACK count received by video sender. */\n videoSentNackCountRecv = 'videoSentNackCountRecv',\n /** The sent video round trip time. */\n videoSentRoundTripTime = 'videoSentRoundTripTime',\n /** The transport send video round trip time. */\n videoSentTransportRoundTripTime = 'videoSentTransportRoundTripTime',\n /** The video sent jitter. */\n videoSentJitter = 'videoSentJitter',\n /** The sent video RTX packets. */\n videoSentRetransmittedPackets = 'videoSentRetransmittedPackets',\n\n /** The sent screen codec. */\n screenSentCodec = 'screenSentCodec',\n /** The received FIR from screen sender. */\n screenFirCountReceived = 'screenFirCountReceived',\n /** The received PLI from screen sender. */\n screenPliCountReceived = 'screenPliCountReceived',\n /** The sent screen encode latency. */\n screenEncodeLatency = 'screenEncodeLatency',\n /** The sent screen latency. */\n screenSentLatency = 'screenSentLatency',\n /** The sent screen bandwidth quality limitation. */\n screenQualityLimitationBandwidth = 'screenQualityLimitationBandwidth',\n /** The sent screen cpu quality limitation. */\n screenQualityLimitationCpu = 'screenQualityLimitationCpu',\n /** The sent screen resolustion changes caused by quality limitation. */\n screenQualityLimitationResolutionChanges = 'screenQualityLimitationResolutionChanges',\n /** The sent screen active Simulcast spatial layers. */\n screenSentActiveEncodings = 'screenSentActiveEncodings',\n /** The sent screen bitrates. */\n screenSentBitrates = 'screenSentBitrates',\n /** The sent screen bytes. */\n screenSentBytes = 'screenSentBytes',\n /** The sent screen packets. */\n screenSentPackets = 'screenSentPackets',\n /** The sent screen frames. */\n screenSentFrames = 'screenSentFrames',\n /** The sent screen framerate. */\n screenSentFps = 'screenSentFps',\n /** The sent screen width. */\n screenSentWidth = 'screenSentWidth',\n /** The sent screen height. */\n screenSentHeight = 'screenSentHeight',\n /** The sent screen encoding max bitrate. */\n screenSentMaxBitrate = 'screenSentMaxBitrate',\n //'screenSentPackets',\n /** The sent screen lost packets. */\n screenSentPacketsLost = 'screenSentPacketsLost',\n //'screenSentPacketsLostCount',\n /** The NACK count received by screen sender. */\n screenSentNackCountRecv = 'screenSentNackCountRecv',\n /** The sent screen round trip time. */\n screenSentRoundTripTime = 'screenSentRoundTripTime',\n /** The transport sent screen round trip time. */\n screenSentTransportRoundTripTime = 'screenSentTransportRoundTripTime',\n /** The screen sent jitter. */\n screenSentJitter = 'screenSentJitter',\n /** The screen audio RTX packets. */\n screenSentRetransmittedPackets = 'screenSentRetransmittedPackets',\n\n // inbound audio,\n audioRecvCodec = 'audioRecvCodec',\n audioRecvBytes = 'audioRecvBytes',\n audioRecvAvgJitterBufferDelay = 'audioRecvAvgJitterBufferDelay',\n audioRecvBitrates = 'audioRecvBitrates',\n audioRecvJitter = 'audioRecvJitter',\n audioRecvRoundTripTime = 'audioRecvRoundTripTime',\n audioRecvPackets = 'audioRecvPackets',\n audioRecvPacketsLost = 'audioRecvPacketsLost', // TODO: remove this.\n audioRecvLostPackets = 'audioRecvLostPackets',\n audioRecvPacketsLossRate = 'audioRecvPacketsLossRate',\n audioRecvRetransmittedPackets = 'audioRecvRetransmittedPackets',\n audioRecvNackCountSent = 'audioRecvNackCountSent',\n audioRecvLevel = 'audioRecvLevel',\n audioRecvTotalSamplesReceived = 'audioRecvTotalSamplesReceived',\n audioRecvConcealedSamples = 'audioRecvConcealedSamples',\n audioRecvConcealmentEvents = 'audioRecvConcealmentEvents',\n audioRecvInsertedSamplesForDeceleration = 'audioRecvInsertedSamplesForDeceleration',\n audioRecvRemovedSamplesForAcceleration = 'audioRecvRemovedSamplesForAcceleration',\n audioRecvEndToEndDelay = 'audioRecvEndToEndDelay',\n // inbound video,\n videoRecvCodec = 'videoRecvCodec',\n videoFirCountSent = 'videoFirCountSent',\n videoPliCountSent = 'videoPliCountSent',\n videoDecodeLatency = 'videoDecodeLatency',\n //'videoFramesDecoded',\n videoRecvFrames = 'videoRecvFrames',\n videoRecvFps = 'videoRecvFps',\n videoRecvAvgJitterBufferDelay = 'videoRecvAvgJitterBufferDelay',\n videoRecvBitrates = 'videoRecvBitrates',\n videoRecvBytes = 'videoRecvBytes',\n videoRecvHeight = 'videoRecvHeight',\n videoRecvJitter = 'videoRecvJitter',\n videoRecvRoundTripTime = 'videoRecvRoundTripTime',\n videoRecvPackets = 'videoRecvPackets',\n videoRecvLostPackets = 'videoRecvLostPackets',\n videoRecvPacketsLost = 'videoRecvPacketsLost', // TODO: remove this.\n videoRecvPacketsLossRate = 'videoRecvPacketsLossRate',\n videoRecvRetransmittedPackets = 'videoRecvRetransmittedPackets',\n videoRecvNackCountSent = 'videoRecvNackCountSent',\n videoRecvWidth = 'videoRecvWidth',\n videoRecvFrameRate = 'videoRecvFrameRate',\n //'videoTotalDecodeTime',\n videoTotalFreezesDuration = 'videoTotalFreezesDuration',\n videoRecvEndToEndDelay = 'videoRecvEndToEndDelay',\n // inbound screen,\n screenRecvCodec = 'screenRecvCodec',\n screenFirCountSent = 'screenFirCountSent',\n screenPliCountSent = 'screenPliCountSent',\n screenDecodeLatency = 'screenDecodeLatency',\n //'screenFramesDecoded',\n screenRecvFrames = 'screenRecvFrames',\n screenRecvFps = 'screenRecvFps',\n screenRecvAvgJitterBufferDelay = 'screenRecvAvgJitterBufferDelay',\n screenRecvBitrates = 'screenRecvBitrates',\n screenRecvBytes = 'screenRecvBytes',\n screenRecvHeight = 'screenRecvHeight',\n screenRecvJitter = 'screenRecvJitter',\n screenRecvRoundTripTime = 'screenRecvRoundTripTime',\n screenRecvPackets = 'screenRecvPackets',\n screenRecvLostPackets = 'screenRecvLostPackets',\n screenRecvPacketsLost = 'screenRecvPacketsLost', // TODO: remove this.\n screenRecvPacketsLossRate = 'screenRecvPacketsLossRate',\n screenRecvRetransmittedPackets = 'screenRecvRetransmittedPackets',\n screenRecvNackCountSent = 'screenRecvNackCountSent',\n screenRecvWidth = 'screenRecvWidth',\n screenRecvFrameRate = 'screenRecvFrameRate',\n //'screenTotalDecodeTime',\n screenTotalFreezesDuration = 'screenTotalFreezesDuration',\n screenRecvEndToEndDelay = 'screenRecvEndToEndDelay',\n /** The transport availableOutgoingBitrate stat. */\n transportSentAvailableOutgoingBitrate = 'transportSentAvailableOutgoingBitrate',\n}\n\n/**\n * The RTC stats collection indexed by {@link RtcStatsMetricNames}.\n *\n * Each {@link RtcStatsMetricNames} record points to an object indexed by\n * `trackId:hostName:codec`, where:\n * - `trackId`: The RTC getStats track identifier.\n * - `hostName`: The remote endpoint IP address or hostname.\n * - `codec`: The track codec.\n */\nexport type RtcStats = Record<RtcStatsMetricNames, Record<string, number | string>>\n\nconst RtcStatsMetrics = Object.keys(RtcStatsMetricNames)\n\nfunction setStats(stats: RtcStats, name: RtcStatsMetricNames, key: string, value?: number | string): void {\n assert(RtcStatsMetrics.includes(name), `Unknown stat name: ${name}`)\n if (value === undefined) return\n if (!stats[name]) {\n stats[name] = {}\n }\n stats[name][key] = value\n}\n\nexport function rtcStatKey({\n pageIndex,\n trackId,\n hostName,\n codec,\n participantName,\n}: {\n pageIndex?: number\n trackId?: string\n hostName?: string\n codec?: string\n participantName?: string\n}): string {\n return [pageIndex ?? '', participantName || '', hostName || 'unknown', codec || '', trackId || ''].join(':')\n}\n\nexport function parseRtStatKey(key: string): {\n pageIndex?: number\n trackId?: string\n hostName: string\n codec?: string\n participantName?: string\n} {\n const [pageIndex, participantName, hostName, codec, trackId] = key.split(':', 5)\n return {\n pageIndex: pageIndex ? parseInt(pageIndex) : undefined,\n trackId: trackId || undefined,\n hostName: hostName || 'unknown',\n codec: codec || undefined,\n participantName: participantName || undefined,\n }\n}\n\n/**\n * Updates the {@link RtcStats} object with the collected track values.\n */\nexport function updateRtcStats(\n stats: RtcStats,\n pageIndex: number,\n trackId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n signalingHost?: string,\n participantName?: string,\n): void {\n const {\n enabled,\n inboundRtp,\n outboundRtp,\n remoteAddress,\n videoSentActiveEncodings,\n sentMaxBitrate,\n isDisplay,\n codec,\n availableOutgoingBitrate,\n } = value\n const hostName = signalingHost || remoteAddress\n const key = rtcStatKey({\n pageIndex,\n trackId,\n hostName,\n codec,\n participantName,\n })\n //log.log(`updateRtcStats`, {enabled, signalingHost, remoteAddress, isDisplay, key})\n // inbound\n if (inboundRtp) {\n const prefix = inboundRtp.kind === 'video' ? (isDisplay ? 'screen' : 'video') : 'audio'\n setStats(stats, (prefix + 'RecvCodec') as RtcStatsMetricNames, key, codec)\n if (enabled) {\n setStats(stats, (prefix + 'RecvAvgJitterBufferDelay') as RtcStatsMetricNames, key, inboundRtp.jitterBuffer)\n setStats(stats, (prefix + 'RecvBitrates') as RtcStatsMetricNames, key, inboundRtp.bitrate)\n setStats(stats, (prefix + 'RecvBytes') as RtcStatsMetricNames, key, inboundRtp.bytesReceived)\n setStats(stats, (prefix + 'RecvJitter') as RtcStatsMetricNames, key, inboundRtp.jitter)\n setStats(stats, (prefix + 'RecvRoundTripTime') as RtcStatsMetricNames, key, inboundRtp.transportRoundTripTime)\n setStats(stats, (prefix + 'RecvPackets') as RtcStatsMetricNames, key, inboundRtp.packetsReceived)\n setStats(\n stats,\n (prefix + 'RecvRetransmittedPackets') as RtcStatsMetricNames,\n key,\n inboundRtp.retransmittedPacketsReceived,\n )\n // TODO: remove this.\n setStats(stats, (prefix + 'RecvPacketsLost') as RtcStatsMetricNames, key, inboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'RecvPacketsLossRate') as RtcStatsMetricNames, key, inboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'RecvLostPackets') as RtcStatsMetricNames, key, inboundRtp.packetsLost)\n setStats(stats, (prefix + 'RecvNackCountSent') as RtcStatsMetricNames, key, inboundRtp.nackCount)\n setStats(stats, (prefix + 'RecvEndToEndDelay') as RtcStatsMetricNames, key, inboundRtp.endToEndDelay)\n if (inboundRtp.kind === 'audio') {\n ;[\n 'audioLevel',\n 'totalSamplesReceived',\n 'concealedSamples',\n 'concealmentEvents',\n 'insertedSamplesForDeceleration',\n 'removedSamplesForAcceleration',\n ].forEach(name => {\n setStats(\n stats,\n (prefix + 'Recv' + toTitleCase(name.replace('audio', ''))) as RtcStatsMetricNames,\n key,\n inboundRtp[name],\n )\n })\n }\n if (inboundRtp.kind === 'video' && inboundRtp.keyFramesDecoded > 0) {\n //setStats(stats, prefix + 'FramesDecoded', key, inboundRtp.framesDecoded\n setStats(stats, (prefix + 'RecvFrames') as RtcStatsMetricNames, key, inboundRtp.framesReceived)\n setStats(stats, (prefix + 'RecvFps') as RtcStatsMetricNames, key, inboundRtp.framesPerSecond)\n setStats(stats, (prefix + 'RecvHeight') as RtcStatsMetricNames, key, inboundRtp.frameHeight)\n setStats(stats, (prefix + 'RecvWidth') as RtcStatsMetricNames, key, inboundRtp.frameWidth)\n setStats(stats, (prefix + 'RecvFrameRate') as RtcStatsMetricNames, key, inboundRtp.frameRate)\n //setStats(stats, prefix + 'TotalDecodeTime', key, inboundRtp.totalDecodeTime)\n setStats(stats, (prefix + 'FirCountSent') as RtcStatsMetricNames, key, inboundRtp.firCount)\n setStats(stats, (prefix + 'PliCountSent') as RtcStatsMetricNames, key, inboundRtp.pliCount)\n setStats(stats, (prefix + 'DecodeLatency') as RtcStatsMetricNames, key, inboundRtp.decodeLatency)\n setStats(stats, (prefix + 'TotalFreezesDuration') as RtcStatsMetricNames, key, inboundRtp.totalFreezesDuration)\n }\n }\n }\n // outbound\n if (outboundRtp) {\n // log.log('outboundRtp', isDisplay, JSON.stringify(outboundRtp, null, 2));\n const prefix = outboundRtp.kind === 'video' ? (isDisplay ? 'screen' : 'video') : 'audio'\n setStats(stats, (prefix + 'SentCodec') as RtcStatsMetricNames, key, codec)\n if (enabled) {\n setStats(stats, (prefix + 'SentBitrates') as RtcStatsMetricNames, key, outboundRtp.bitrate)\n setStats(\n stats,\n (prefix + 'SentBytes') as RtcStatsMetricNames,\n key,\n outboundRtp.bytesSent + outboundRtp.headerBytesSent,\n )\n setStats(stats, (prefix + 'SentPackets') as RtcStatsMetricNames, key, outboundRtp.packetsSent)\n setStats(stats, (prefix + 'SentPacketsLost') as RtcStatsMetricNames, key, outboundRtp.packetsLossRate)\n setStats(stats, (prefix + 'SentNackCountRecv') as RtcStatsMetricNames, key, outboundRtp.nackCount)\n //setStats(stats, prefix + 'SentPacketsLostCount', key, outboundRtp.packetsLost)\n setStats(stats, (prefix + 'SentRoundTripTime') as RtcStatsMetricNames, key, outboundRtp.roundTripTime)\n setStats(stats, (prefix + 'SentJitter') as RtcStatsMetricNames, key, outboundRtp.jitter)\n setStats(\n stats,\n (prefix + 'SentTransportRoundTripTime') as RtcStatsMetricNames,\n key,\n outboundRtp.transportRoundTripTime,\n )\n setStats(stats, 'transportSentAvailableOutgoingBitrate' as RtcStatsMetricNames, key, availableOutgoingBitrate)\n setStats(stats, (prefix + 'SentMaxBitrate') as RtcStatsMetricNames, key, sentMaxBitrate)\n setStats(\n stats,\n (prefix + 'SentRetransmittedPackets') as RtcStatsMetricNames,\n key,\n outboundRtp.retransmittedPacketsSent,\n )\n if (outboundRtp.kind === 'video') {\n setStats(stats, (prefix + 'SentActiveEncodings') as RtcStatsMetricNames, key, videoSentActiveEncodings)\n setStats(\n stats,\n (prefix + 'QualityLimitationResolutionChanges') as RtcStatsMetricNames,\n key,\n outboundRtp.qualityLimitationResolutionChanges,\n )\n setStats(stats, (prefix + 'QualityLimitationCpu') as RtcStatsMetricNames, key, outboundRtp.qualityLimitationCpu)\n setStats(\n stats,\n (prefix + 'QualityLimitationBandwidth') as RtcStatsMetricNames,\n key,\n outboundRtp.qualityLimitationBandwidth,\n )\n setStats(stats, (prefix + 'SentWidth') as RtcStatsMetricNames, key, outboundRtp.frameWidth)\n setStats(stats, (prefix + 'SentHeight') as RtcStatsMetricNames, key, outboundRtp.frameHeight)\n setStats(stats, (prefix + 'SentFrames') as RtcStatsMetricNames, key, outboundRtp.framesSent)\n setStats(stats, (prefix + 'SentFps') as RtcStatsMetricNames, key, outboundRtp.framesPerSecond)\n setStats(stats, (prefix + 'FirCountReceived') as RtcStatsMetricNames, key, outboundRtp.firCountReceived)\n setStats(stats, (prefix + 'PliCountReceived') as RtcStatsMetricNames, key, outboundRtp.pliCountReceived)\n setStats(stats, (prefix + 'EncodeLatency') as RtcStatsMetricNames, key, outboundRtp.encodeLatency)\n setStats(stats, (prefix + 'SentLatency') as RtcStatsMetricNames, key, outboundRtp.sentLatency)\n }\n }\n }\n}\n"]}
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -50,7 +17,6 @@ const os_1 = __importDefault(require("os"));
50
17
  const path_1 = __importDefault(require("path"));
51
18
  const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
52
19
  const puppeteer_intercept_and_modify_requests_1 = require("puppeteer-intercept-and-modify-requests");
53
- const sdpTransform = __importStar(require("sdp-transform"));
54
20
  const zlib_1 = require("zlib");
55
21
  const rtcstats_1 = require("./rtcstats");
56
22
  const stats_1 = require("./stats");
@@ -986,8 +952,6 @@ webrtcperf.config.AUDIO_URL = "http${this.serverUseHttps ? 's' : ''}://localhost
986
952
  await this.onPageMessage(index, 'requestfailed', text, saveFile);
987
953
  });
988
954
  }
989
- await page.exposeFunction('webrtcperf_sdpParse', (sdpStr) => sdpTransform.parse(sdpStr));
990
- await page.exposeFunction('webrtcperf_sdpWrite', (sdp) => sdpTransform.write(sdp));
991
955
  await page.exposeFunction('webrtcperf_startFakeScreenshare', async () => {
992
956
  if (!this.browser)
993
957
  return;