@techsee/techsee-media-service 17.1.0 → 17.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/lib/LocalStreamManager.js.map +1 -1
  2. package/lib/MediaConstants.js.map +1 -1
  3. package/lib/MediaContracts.js.map +1 -1
  4. package/lib/MediaPublisher.js.map +1 -1
  5. package/lib/MediaServiceBase.js.map +1 -1
  6. package/lib/MediaSession/MediaServer.js.map +1 -1
  7. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  8. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  9. package/lib/MediaSession/SessionTurn.js.map +1 -1
  10. package/lib/MediaSession/TurnConstants.js.map +1 -1
  11. package/lib/MediaSubscriber.js.map +1 -1
  12. package/lib/MediaUtils/Compatibility.js.map +1 -1
  13. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  14. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  15. package/lib/MediaUtils/index.js.map +1 -1
  16. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  17. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
  18. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -1
  19. package/lib/MultiParty/MediaTracer.js.map +1 -1
  20. package/lib/MultiParty/MultiPartyService.js.map +1 -1
  21. package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -1
  22. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -1
  23. package/lib/MultiParty/index.js.map +1 -1
  24. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
  25. package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -1
  26. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -1
  27. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -1
  28. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -1
  29. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
  30. package/lib/MultiParty/opentok/trace.js.map +1 -1
  31. package/lib/MultiParty/types.js.map +1 -1
  32. package/lib/MultiParty/utils.js.map +1 -1
  33. package/lib/TechseeMediaStream.js.map +1 -1
  34. package/lib/qos/raw-qos.js.map +1 -1
  35. package/lib/webrtc-ie-shim.js.map +1 -1
  36. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["MultiParty/utils.js"],"names":["Object","defineProperty","exports","value","isSameStream","shouldMirrorCamera","decodeClientRole","MediaConstants_1","require","data","JSON","parse","clientRole","SessionClientRole","USER","isMobile","selectedCamera","MultiPartyCameraTypes","BACK","s1","s2","connectionId","videoType"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,YAAR,GAAuBF,OAAO,CAACG,kBAAR,GAA6BH,OAAO,CAACI,gBAAR,GAA2B,KAAK,CAApF;;AACA,IAAIC,gBAAgB,GAAGC,OAAO,CAAC,mBAAD,CAA9B;;AACA,SAASF,gBAAT,CAA0BG,IAA1B,EAAgC;AAC5B,SAAOC,IAAI,CAACC,KAAL,CAAWF,IAAX,EAAiBG,UAAjB,IAA+BL,gBAAgB,CAACM,iBAAjB,CAAmCC,IAAzE;AACH;;AACDZ,OAAO,CAACI,gBAAR,GAA2BA,gBAA3B;;AACA,SAASD,kBAAT,CAA4BU,QAA5B,EAAsCC,cAAtC,EAAsD;AAClD,SAAO,CAACD,QAAD,IAAaC,cAAc,KAAKT,gBAAgB,CAACU,qBAAjB,CAAuCC,IAA9E;AACH;;AACDhB,OAAO,CAACG,kBAAR,GAA6BA,kBAA7B;;AACA,SAASD,YAAT,CAAsBe,EAAtB,EAA0BC,EAA1B,EAA8B;AAC1B,SAAOD,EAAE,CAACE,YAAH,KAAoBD,EAAE,CAACC,YAAvB,IAAuCF,EAAE,CAACG,SAAH,KAAiBF,EAAE,CAACE,SAAlE;AACH;;AACDpB,OAAO,CAACE,YAAR,GAAuBA,YAAvB","file":"utils.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSameStream = exports.shouldMirrorCamera = exports.decodeClientRole = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nfunction decodeClientRole(data) {\n return JSON.parse(data).clientRole || MediaConstants_1.SessionClientRole.USER;\n}\nexports.decodeClientRole = decodeClientRole;\nfunction shouldMirrorCamera(isMobile, selectedCamera) {\n return !isMobile || selectedCamera !== MediaConstants_1.MultiPartyCameraTypes.BACK;\n}\nexports.shouldMirrorCamera = shouldMirrorCamera;\nfunction isSameStream(s1, s2) {\n return s1.connectionId === s2.connectionId && s1.videoType === s2.videoType;\n}\nexports.isSameStream = isSameStream;\n\n//# sourceMappingURL=utils.js.map\n"]}
1
+ {"version":3,"sources":["MultiParty/utils.js"],"names":["Object","defineProperty","exports","value","isSameStream","shouldMirrorCamera","decodeClientRole","MediaConstants_1","require","data","JSON","parse","clientRole","SessionClientRole","USER","isMobile","selectedCamera","MultiPartyCameraTypes","BACK","s1","s2","connectionId","videoType"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,YAAR,GAAuBF,OAAO,CAACG,kBAAR,GAA6BH,OAAO,CAACI,gBAAR,GAA2B,KAAK,CAApF;;AACA,IAAIC,gBAAgB,GAAGC,OAAO,CAAC,mBAAD,CAA9B;;AACA,SAASF,gBAAT,CAA0BG,IAA1B,EAAgC;EAC5B,OAAOC,IAAI,CAACC,KAAL,CAAWF,IAAX,EAAiBG,UAAjB,IAA+BL,gBAAgB,CAACM,iBAAjB,CAAmCC,IAAzE;AACH;;AACDZ,OAAO,CAACI,gBAAR,GAA2BA,gBAA3B;;AACA,SAASD,kBAAT,CAA4BU,QAA5B,EAAsCC,cAAtC,EAAsD;EAClD,OAAO,CAACD,QAAD,IAAaC,cAAc,KAAKT,gBAAgB,CAACU,qBAAjB,CAAuCC,IAA9E;AACH;;AACDhB,OAAO,CAACG,kBAAR,GAA6BA,kBAA7B;;AACA,SAASD,YAAT,CAAsBe,EAAtB,EAA0BC,EAA1B,EAA8B;EAC1B,OAAOD,EAAE,CAACE,YAAH,KAAoBD,EAAE,CAACC,YAAvB,IAAuCF,EAAE,CAACG,SAAH,KAAiBF,EAAE,CAACE,SAAlE;AACH;;AACDpB,OAAO,CAACE,YAAR,GAAuBA,YAAvB","file":"utils.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSameStream = exports.shouldMirrorCamera = exports.decodeClientRole = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nfunction decodeClientRole(data) {\n return JSON.parse(data).clientRole || MediaConstants_1.SessionClientRole.USER;\n}\nexports.decodeClientRole = decodeClientRole;\nfunction shouldMirrorCamera(isMobile, selectedCamera) {\n return !isMobile || selectedCamera !== MediaConstants_1.MultiPartyCameraTypes.BACK;\n}\nexports.shouldMirrorCamera = shouldMirrorCamera;\nfunction isSameStream(s1, s2) {\n return s1.connectionId === s2.connectionId && s1.videoType === s2.videoType;\n}\nexports.isSameStream = isSameStream;\n\n//# sourceMappingURL=utils.js.map\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["TechseeMediaStream.js","../src/TechseeMediaStream.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaStream","mediaStreamTrack","streamType","isRemote","_isRemote","_streamType","_mediaStreamTrack","dedicatedStream","MediaStream","prototype","get","enumerable","configurable","id","kind"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,kBAAR,GAA6B,KAAK,CAAlC;;ACAA,IAAAA,kBAAA;AAAA;AAAA,YAAA;AAMI,WAAAA,kBAAA,CAAYC,gBAAZ,EAAgDC,UAAhD,EAA8EC,QAA9E,EAA+F;AAC3F,SAAKC,SAAL,GAAiBD,QAAjB;AACA,SAAKE,WAAL,GAAmBH,UAAnB;AACA,SAAKI,iBAAL,GAAyBL,gBAAzB;AAEA,SAAKM,eAAL,GAAuB,IAAIC,WAAJ,CAAgB,CAACP,gBAAD,CAAhB,CAAvB;AACH;;AAEDL,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;ADLRC,IAAAA,GAAG,ECKP,eAAA;AACI,aAAO,KAAKN,SAAZ;AACH,KAFW;ADFRO,IAAAA,UAAU,EAAE,KCEJ;ADDRC,IAAAA,YAAY,EAAE;ACCN,GAAZ;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;ADFRC,IAAAA,GAAG,ECEP,eAAA;AACI,aAAO,KAAKJ,iBAAL,CAAuBO,EAA9B;AACH,KAFW;ADCRF,IAAAA,UAAU,EAAE,KCDJ;ADERC,IAAAA,YAAY,EAAE;ACFN,GAAZ;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADCVC,IAAAA,GAAG,ECDP,eAAA;AACI,aAAO,KAAKL,WAAZ;AACH,KAFa;ADIVM,IAAAA,UAAU,EAAE,KCJF;ADKVC,IAAAA,YAAY,EAAE;ACLJ,GAAd;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,aAAJ,EAAe;ADIXC,IAAAA,GAAG,ECJP,eAAA;AACI,aAAO,KAAKH,eAAZ;AACH,KAFc;ADOXI,IAAAA,UAAU,EAAE,KCPD;ADQXC,IAAAA,YAAY,EAAE;ACRH,GAAf;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADOVC,IAAAA,GAAG,ECPP,eAAA;AACI,aAAO,KAAKJ,iBAAZ;AACH,KAFa;ADUVK,IAAAA,UAAU,EAAE,KCVF;ADWVC,IAAAA,YAAY,EAAE;ACXJ,GAAd;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADUVC,IAAAA,GAAG,ECVP,eAAA;AACI,aAAO,KAAKJ,iBAAL,CAAuBQ,IAA9B;AACH,KAFa;ADaVH,IAAAA,UAAU,EAAE,KCbF;ADcVC,IAAAA,YAAY,EAAE;ACdJ,GAAd;AAGJ,SAAAZ,kBAAA;AArCA,CAAA,EAAA;;AAAaF,OAAA,CAAAE,kBAAA,GAAAA,kBAAA","file":"TechseeMediaStream.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TechseeMediaStream = void 0;\nvar TechseeMediaStream = /** @class */ (function () {\n function TechseeMediaStream(mediaStreamTrack, streamType, isRemote) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n Object.defineProperty(TechseeMediaStream.prototype, \"isRemote\", {\n get: function () {\n return this._isRemote;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamId\", {\n get: function () {\n return this._mediaStreamTrack.id;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamType\", {\n get: function () {\n return this._streamType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaStream\", {\n get: function () {\n return this.dedicatedStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaTrack\", {\n get: function () {\n return this._mediaStreamTrack;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamKind\", {\n get: function () {\n return this._mediaStreamTrack.kind;\n },\n enumerable: false,\n configurable: true\n });\n return TechseeMediaStream;\n}());\nexports.TechseeMediaStream = TechseeMediaStream;\n\n//# sourceMappingURL=TechseeMediaStream.js.map\n","import {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nexport class TechseeMediaStream {\n private readonly _mediaStreamTrack: MediaStreamTrack;\n private readonly _streamType: KnownMediaStream;\n private readonly _isRemote: boolean;\n private readonly dedicatedStream: MediaStream;\n\n constructor(mediaStreamTrack: MediaStreamTrack, streamType: KnownMediaStream, isRemote: boolean) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n\n get isRemote(): boolean {\n return this._isRemote;\n }\n\n get streamId(): string {\n return this._mediaStreamTrack.id;\n }\n\n get streamType(): KnownMediaStream {\n return this._streamType;\n }\n\n get mediaStream(): MediaStream {\n return this.dedicatedStream;\n }\n\n get mediaTrack(): MediaStreamTrack {\n return this._mediaStreamTrack;\n }\n\n get streamKind(): KnownMediaStreamKind {\n return this._mediaStreamTrack.kind as any;\n }\n}\n"]}
1
+ {"version":3,"sources":["TechseeMediaStream.js","../src/TechseeMediaStream.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaStream","mediaStreamTrack","streamType","isRemote","_isRemote","_streamType","_mediaStreamTrack","dedicatedStream","MediaStream","prototype","get","enumerable","configurable","id","kind"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,kBAAR,GAA6B,KAAK,CAAlC;;ACAA,IAAAA,kBAAA;AAAA;AAAA,YAAA;EAMI,SAAAA,kBAAA,CAAYC,gBAAZ,EAAgDC,UAAhD,EAA8EC,QAA9E,EAA+F;IAC3F,KAAKC,SAAL,GAAiBD,QAAjB;IACA,KAAKE,WAAL,GAAmBH,UAAnB;IACA,KAAKI,iBAAL,GAAyBL,gBAAzB;IAEA,KAAKM,eAAL,GAAuB,IAAIC,WAAJ,CAAgB,CAACP,gBAAD,CAAhB,CAAvB;EACH;;EAEDL,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;IDLRC,GAAG,ECKP,eAAA;MACI,OAAO,KAAKN,SAAZ;IACH,CAFW;IDFRO,UAAU,EAAE,KCEJ;IDDRC,YAAY,EAAE;ECCN,CAAZ;EAIAhB,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;IDFRC,GAAG,ECEP,eAAA;MACI,OAAO,KAAKJ,iBAAL,CAAuBO,EAA9B;IACH,CAFW;IDCRF,UAAU,EAAE,KCDJ;IDERC,YAAY,EAAE;ECFN,CAAZ;EAIAhB,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;IDCVC,GAAG,ECDP,eAAA;MACI,OAAO,KAAKL,WAAZ;IACH,CAFa;IDIVM,UAAU,EAAE,KCJF;IDKVC,YAAY,EAAE;ECLJ,CAAd;EAIAhB,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,aAAJ,EAAe;IDIXC,GAAG,ECJP,eAAA;MACI,OAAO,KAAKH,eAAZ;IACH,CAFc;IDOXI,UAAU,EAAE,KCPD;IDQXC,YAAY,EAAE;ECRH,CAAf;EAIAhB,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;IDOVC,GAAG,ECPP,eAAA;MACI,OAAO,KAAKJ,iBAAZ;IACH,CAFa;IDUVK,UAAU,EAAE,KCVF;IDWVC,YAAY,EAAE;ECXJ,CAAd;EAIAhB,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;IDUVC,GAAG,ECVP,eAAA;MACI,OAAO,KAAKJ,iBAAL,CAAuBQ,IAA9B;IACH,CAFa;IDaVH,UAAU,EAAE,KCbF;IDcVC,YAAY,EAAE;ECdJ,CAAd;EAGJ,OAAAZ,kBAAA;AArCA,CAAA,EAAA;;AAAaF,OAAA,CAAAE,kBAAA,GAAAA,kBAAA","file":"TechseeMediaStream.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TechseeMediaStream = void 0;\nvar TechseeMediaStream = /** @class */ (function () {\n function TechseeMediaStream(mediaStreamTrack, streamType, isRemote) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n Object.defineProperty(TechseeMediaStream.prototype, \"isRemote\", {\n get: function () {\n return this._isRemote;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamId\", {\n get: function () {\n return this._mediaStreamTrack.id;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamType\", {\n get: function () {\n return this._streamType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaStream\", {\n get: function () {\n return this.dedicatedStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaTrack\", {\n get: function () {\n return this._mediaStreamTrack;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamKind\", {\n get: function () {\n return this._mediaStreamTrack.kind;\n },\n enumerable: false,\n configurable: true\n });\n return TechseeMediaStream;\n}());\nexports.TechseeMediaStream = TechseeMediaStream;\n\n//# sourceMappingURL=TechseeMediaStream.js.map\n","import {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nexport class TechseeMediaStream {\n private readonly _mediaStreamTrack: MediaStreamTrack;\n private readonly _streamType: KnownMediaStream;\n private readonly _isRemote: boolean;\n private readonly dedicatedStream: MediaStream;\n\n constructor(mediaStreamTrack: MediaStreamTrack, streamType: KnownMediaStream, isRemote: boolean) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n\n get isRemote(): boolean {\n return this._isRemote;\n }\n\n get streamId(): string {\n return this._mediaStreamTrack.id;\n }\n\n get streamType(): KnownMediaStream {\n return this._streamType;\n }\n\n get mediaStream(): MediaStream {\n return this.dedicatedStream;\n }\n\n get mediaTrack(): MediaStreamTrack {\n return this._mediaStreamTrack;\n }\n\n get streamKind(): KnownMediaStreamKind {\n return this._mediaStreamTrack.kind as any;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["qos/raw-qos.js"],"names":["RawQos","instance","VIDEO_CODECS","rawQoSEntry","enableRawEntries","bytesPrev","timestampPrev","startTimestamp","stats","self","_clearRaw","values","stat","isRemote","type","_addRaw","_parseOutStats","remote","get","remoteId","_parseInStats","_parseRelated","bytesSent","bytesReceived","servers","_parseServerStats","track","frameWidth","_parseTrack","trackId","codec","codecId","_parseCodec","raw","item","push","_dumpItem","result","parent","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","localCandidate","localCandidateId","_parseLocal","remoteCandidate","remoteCandidateId","_parseRemote","mimeType","index","findIndex","toLowerCase","includes","videoCodec","localIP","ip","ipAddress","localPort","port","portNumber","localProtocol","protocol","transport","remoteIP","remotePort","remoteProtocol","frameHeight","framesPerSecond","videoFrameRate","isPublisher","videoSentPackets","packetsSent","videoSentPacketsLost","packetsLost","videoSentBytes","_parseBitrate","_parseFrameRate","_parseOther","_saveSomeMetrics","timestamp","videoDuration","toFixed","isSubscriber","videoReceivedPackets","packetsReceived","videoReceivedPacketsLost","videoReceivedBytes","ssrcPrev","ssrc","framesDecodedPrev","framesDecoded","_parseVideoDuration","discardedPackets","jitter","packetsRepaired","bytes","bitrateMean","videoBitRate","totalBytes","Math","floor","framerateMean","Number","res","statsString","Object","keys","forEach","k","length"],"mappings":"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","sourcesContent":["'use strict';\n\nexport class RawQos {\n constructor() {\n if (RawQos.instance) {\n return RawQos.instance;\n }\n\n this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];\n this.rawQoSEntry = {};\n this.enableRawEntries = true;\n\n this.bytesPrev = null;\n this.timestampPrev = null;\n this.startTimestamp = null;\n\n RawQos.instance = this;\n }\n\n parse(stats) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n self.rawQoSEntry = {};\n self._clearRaw();\n\n for (const stat of stats.values()) {\n if (!stat.isRemote) {\n switch (stat.type) {\n case 'outbound-rtp': {\n self._addRaw(stat);\n self._parseOutStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseInStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'inbound-rtp': {\n self._addRaw(stat);\n self._parseInStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'remote-inbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseInStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'remote-outbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'candidate-pair': {\n if (\n (stat.bytesSent > 0 || stat.bytesReceived > 0) &&\n (!self.rawQoSEntry.servers ||\n stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||\n stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)\n ) {\n self.rawQoSEntry.servers = {};\n self._addRaw(stat);\n self._parseServerStats(stat, self.rawQoSEntry.servers, stats);\n }\n break;\n }\n case 'track': {\n self.track = stat;\n break;\n }\n }\n }\n }\n\n if (!self.rawQoSEntry.frameWidth && self.track) {\n self._addRaw(self.track);\n self._parseTrack(self.track, self.rawQoSEntry);\n }\n self.track = null;\n\n return self.rawQoSEntry;\n }\n\n _parseRelated(stats, stat, self) {\n const track = stats.get(stat.trackId);\n\n if (track) {\n self._addRaw(track);\n self._parseTrack(track, self.rawQoSEntry);\n }\n\n const codec = stats.get(stat.codecId);\n\n if (codec) {\n self._addRaw(codec);\n self._parseCodec(codec, self.rawQoSEntry);\n }\n }\n\n _clearRaw() {\n if (this.enableRawEntries) {\n this.rawQoSEntry.raw = [];\n }\n }\n\n _addRaw(item) {\n if (this.enableRawEntries && item) {\n if (!this.rawQoSEntry.raw) {\n this.rawQoSEntry.raw = [];\n }\n\n this.rawQoSEntry.raw.push(this._dumpItem(item));\n }\n }\n\n _parseServerStats(result, parent, stats) {\n parent.bytesSent = result.bytesSent;\n parent.bytesReceived = result.bytesReceived;\n if (typeof result.totalRoundTripTime === 'number') {\n parent.totalRoundTripTime = result.totalRoundTripTime;\n }\n if (typeof result.currentRoundTripTime === 'number') {\n parent.currentRoundTripTime = result.currentRoundTripTime;\n }\n if (typeof result.availableOutgoingBitrate === 'number') {\n parent.availableOutgoingBitrate = result.availableOutgoingBitrate;\n }\n\n const localCandidate = stats.get(result.localCandidateId);\n\n if (localCandidate) {\n this._addRaw(localCandidate);\n this._parseLocal(localCandidate, parent);\n }\n\n const remoteCandidate = stats.get(result.remoteCandidateId);\n\n if (remoteCandidate) {\n this._addRaw(remoteCandidate);\n this._parseRemote(remoteCandidate, parent);\n }\n }\n\n _parseCodec(result, parent) {\n if (result.mimeType) {\n const index = this.VIDEO_CODECS.findIndex((codec) => result.mimeType.toLowerCase().includes(codec));\n\n if (index >= 0) {\n parent.videoCodec = this.VIDEO_CODECS[index];\n }\n }\n }\n\n _parseLocal(result, parent) {\n parent.localIP = result.ip || result.ipAddress;\n parent.localPort = result.port || result.portNumber;\n parent.localProtocol = result.protocol || result.transport;\n }\n\n _parseRemote(result, parent) {\n parent.remoteIP = result.ip || result.ipAddress;\n parent.remotePort = result.port || result.portNumber;\n parent.remoteProtocol = result.protocol || result.transport;\n }\n\n _parseTrack(result, parent) {\n if (typeof result.frameWidth === 'number') {\n parent.frameWidth = result.frameWidth;\n }\n if (typeof result.frameHeight === 'number') {\n parent.frameHeight = result.frameHeight;\n }\n if (typeof result.framesPerSecond === 'number') {\n parent.videoFrameRate = result.framesPerSecond;\n }\n }\n\n _parseOutStats(result, parent) {\n parent.isPublisher = true;\n parent.videoSentPackets = result.packetsSent;\n parent.videoSentPacketsLost = result.packetsLost;\n parent.videoSentBytes = result.bytesSent;\n this._parseBitrate(result, parent, parent.videoSentBytes);\n this._parseFrameRate(result, parent, parent.videoSentBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _parseVideoDuration(result, parent) {\n if (!this.startTimestamp) {\n this.startTimestamp = result.timestamp;\n }\n parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);\n }\n\n _parseInStats(result, parent) {\n parent.isSubscriber = true;\n parent.videoReceivedPackets = result.packetsReceived;\n parent.videoReceivedPacketsLost = result.packetsLost;\n parent.videoReceivedBytes = result.bytesReceived;\n this._parseBitrate(result, parent, parent.videoReceivedBytes);\n this._parseFrameRate(result, parent, parent.videoReceivedBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _saveSomeMetrics(parent, result) {\n if (parent === this.rawQoSEntry) {\n this.bytesPrev = parent.videoReceivedBytes;\n this.timestampPrev = result.timestamp;\n this.ssrcPrev = result.ssrc;\n this.framesDecodedPrev = result.framesDecoded;\n this._parseVideoDuration(result, parent);\n }\n }\n\n _parseOther(result, parent) {\n parent.timestamp = result.timestamp;\n parent.ssrc = result.ssrc;\n if (typeof result.discardedPackets === 'number') {\n parent.discardedPackets = result.discardedPackets;\n }\n if (typeof result.jitter === 'number') {\n parent.jitter = result.jitter;\n }\n if (typeof result.packetsRepaired === 'number') {\n parent.packetsRepaired = result.packetsRepaired;\n }\n }\n\n _parseBitrate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.bitrateMean === 'number') {\n parent.videoBitRate = result.bitrateMean.toFixed(2);\n } else if (this.bytesPrev && this.timestampPrev) {\n let totalBytes = bytes;\n\n if (result.ssrc === this.ssrcPrev && bytes > this.bytesPrev) {\n totalBytes = bytes - this.bytesPrev;\n }\n\n parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));\n }\n } else {\n parent.videoBitRate = 0;\n }\n }\n\n _parseFrameRate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.framerateMean === 'number') {\n parent.videoFrameRate = Number(result.framerateMean).toFixed(2);\n } else if (this.framesDecodedPrev && this.timestampPrev) {\n if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {\n parent.videoFrameRate = (\n (result.framesDecoded - this.framesDecodedPrev) /\n ((result.timestamp - this.timestampPrev) / 1000)\n ).toFixed(2);\n }\n }\n } else {\n parent.videoFrameRate = 0;\n }\n }\n\n _dumpItem(res) {\n let statsString = '{';\n let index = 0;\n\n Object.keys(res).forEach((k) => {\n statsString += `\"${k}\": \"${res[k]}\"`;\n if (++index !== res.length) {\n statsString += ',';\n }\n });\n statsString += '}';\n\n return statsString;\n }\n}\n"],"file":"raw-qos.js"}
1
+ {"version":3,"file":"raw-qos.js","names":["RawQos","instance","VIDEO_CODECS","rawQoSEntry","enableRawEntries","bytesPrev","timestampPrev","startTimestamp","stats","self","_clearRaw","values","stat","isRemote","type","_addRaw","_parseOutStats","remote","get","remoteId","_parseInStats","_parseRelated","bytesSent","bytesReceived","servers","_parseServerStats","track","frameWidth","_parseTrack","trackId","codec","codecId","_parseCodec","raw","item","push","_dumpItem","result","parent","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","localCandidate","localCandidateId","_parseLocal","remoteCandidate","remoteCandidateId","_parseRemote","mimeType","index","findIndex","toLowerCase","includes","videoCodec","localIP","ip","ipAddress","localPort","port","portNumber","localProtocol","protocol","transport","remoteIP","remotePort","remoteProtocol","frameHeight","framesPerSecond","videoFrameRate","isPublisher","videoSentPackets","packetsSent","videoSentPacketsLost","packetsLost","videoSentBytes","_parseBitrate","_parseFrameRate","_parseOther","_saveSomeMetrics","timestamp","videoDuration","toFixed","isSubscriber","videoReceivedPackets","packetsReceived","videoReceivedPacketsLost","videoReceivedBytes","ssrcPrev","ssrc","framesDecodedPrev","framesDecoded","_parseVideoDuration","discardedPackets","jitter","packetsRepaired","bytes","bitrateMean","videoBitRate","totalBytes","Math","floor","framerateMean","Number","res","statsString","Object","keys","forEach","k","length"],"sources":["qos/raw-qos.js"],"sourcesContent":["'use strict';\n\nexport class RawQos {\n constructor() {\n if (RawQos.instance) {\n return RawQos.instance;\n }\n\n this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];\n this.rawQoSEntry = {};\n this.enableRawEntries = true;\n\n this.bytesPrev = null;\n this.timestampPrev = null;\n this.startTimestamp = null;\n\n RawQos.instance = this;\n }\n\n parse(stats) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n self.rawQoSEntry = {};\n self._clearRaw();\n\n for (const stat of stats.values()) {\n if (!stat.isRemote) {\n switch (stat.type) {\n case 'outbound-rtp': {\n self._addRaw(stat);\n self._parseOutStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseInStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'inbound-rtp': {\n self._addRaw(stat);\n self._parseInStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'remote-inbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseInStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'remote-outbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'candidate-pair': {\n if (\n (stat.bytesSent > 0 || stat.bytesReceived > 0) &&\n (!self.rawQoSEntry.servers ||\n stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||\n stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)\n ) {\n self.rawQoSEntry.servers = {};\n self._addRaw(stat);\n self._parseServerStats(stat, self.rawQoSEntry.servers, stats);\n }\n break;\n }\n case 'track': {\n self.track = stat;\n break;\n }\n }\n }\n }\n\n if (!self.rawQoSEntry.frameWidth && self.track) {\n self._addRaw(self.track);\n self._parseTrack(self.track, self.rawQoSEntry);\n }\n self.track = null;\n\n return self.rawQoSEntry;\n }\n\n _parseRelated(stats, stat, self) {\n const track = stats.get(stat.trackId);\n\n if (track) {\n self._addRaw(track);\n self._parseTrack(track, self.rawQoSEntry);\n }\n\n const codec = stats.get(stat.codecId);\n\n if (codec) {\n self._addRaw(codec);\n self._parseCodec(codec, self.rawQoSEntry);\n }\n }\n\n _clearRaw() {\n if (this.enableRawEntries) {\n this.rawQoSEntry.raw = [];\n }\n }\n\n _addRaw(item) {\n if (this.enableRawEntries && item) {\n if (!this.rawQoSEntry.raw) {\n this.rawQoSEntry.raw = [];\n }\n\n this.rawQoSEntry.raw.push(this._dumpItem(item));\n }\n }\n\n _parseServerStats(result, parent, stats) {\n parent.bytesSent = result.bytesSent;\n parent.bytesReceived = result.bytesReceived;\n if (typeof result.totalRoundTripTime === 'number') {\n parent.totalRoundTripTime = result.totalRoundTripTime;\n }\n if (typeof result.currentRoundTripTime === 'number') {\n parent.currentRoundTripTime = result.currentRoundTripTime;\n }\n if (typeof result.availableOutgoingBitrate === 'number') {\n parent.availableOutgoingBitrate = result.availableOutgoingBitrate;\n }\n\n const localCandidate = stats.get(result.localCandidateId);\n\n if (localCandidate) {\n this._addRaw(localCandidate);\n this._parseLocal(localCandidate, parent);\n }\n\n const remoteCandidate = stats.get(result.remoteCandidateId);\n\n if (remoteCandidate) {\n this._addRaw(remoteCandidate);\n this._parseRemote(remoteCandidate, parent);\n }\n }\n\n _parseCodec(result, parent) {\n if (result.mimeType) {\n const index = this.VIDEO_CODECS.findIndex((codec) => result.mimeType.toLowerCase().includes(codec));\n\n if (index >= 0) {\n parent.videoCodec = this.VIDEO_CODECS[index];\n }\n }\n }\n\n _parseLocal(result, parent) {\n parent.localIP = result.ip || result.ipAddress;\n parent.localPort = result.port || result.portNumber;\n parent.localProtocol = result.protocol || result.transport;\n }\n\n _parseRemote(result, parent) {\n parent.remoteIP = result.ip || result.ipAddress;\n parent.remotePort = result.port || result.portNumber;\n parent.remoteProtocol = result.protocol || result.transport;\n }\n\n _parseTrack(result, parent) {\n if (typeof result.frameWidth === 'number') {\n parent.frameWidth = result.frameWidth;\n }\n if (typeof result.frameHeight === 'number') {\n parent.frameHeight = result.frameHeight;\n }\n if (typeof result.framesPerSecond === 'number') {\n parent.videoFrameRate = result.framesPerSecond;\n }\n }\n\n _parseOutStats(result, parent) {\n parent.isPublisher = true;\n parent.videoSentPackets = result.packetsSent;\n parent.videoSentPacketsLost = result.packetsLost;\n parent.videoSentBytes = result.bytesSent;\n this._parseBitrate(result, parent, parent.videoSentBytes);\n this._parseFrameRate(result, parent, parent.videoSentBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _parseVideoDuration(result, parent) {\n if (!this.startTimestamp) {\n this.startTimestamp = result.timestamp;\n }\n parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);\n }\n\n _parseInStats(result, parent) {\n parent.isSubscriber = true;\n parent.videoReceivedPackets = result.packetsReceived;\n parent.videoReceivedPacketsLost = result.packetsLost;\n parent.videoReceivedBytes = result.bytesReceived;\n this._parseBitrate(result, parent, parent.videoReceivedBytes);\n this._parseFrameRate(result, parent, parent.videoReceivedBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _saveSomeMetrics(parent, result) {\n if (parent === this.rawQoSEntry) {\n this.bytesPrev = parent.videoReceivedBytes;\n this.timestampPrev = result.timestamp;\n this.ssrcPrev = result.ssrc;\n this.framesDecodedPrev = result.framesDecoded;\n this._parseVideoDuration(result, parent);\n }\n }\n\n _parseOther(result, parent) {\n parent.timestamp = result.timestamp;\n parent.ssrc = result.ssrc;\n if (typeof result.discardedPackets === 'number') {\n parent.discardedPackets = result.discardedPackets;\n }\n if (typeof result.jitter === 'number') {\n parent.jitter = result.jitter;\n }\n if (typeof result.packetsRepaired === 'number') {\n parent.packetsRepaired = result.packetsRepaired;\n }\n }\n\n _parseBitrate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.bitrateMean === 'number') {\n parent.videoBitRate = result.bitrateMean.toFixed(2);\n } else if (this.bytesPrev && this.timestampPrev) {\n let totalBytes = bytes;\n\n if (result.ssrc === this.ssrcPrev && bytes > this.bytesPrev) {\n totalBytes = bytes - this.bytesPrev;\n }\n\n parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));\n }\n } else {\n parent.videoBitRate = 0;\n }\n }\n\n _parseFrameRate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.framerateMean === 'number') {\n parent.videoFrameRate = Number(result.framerateMean).toFixed(2);\n } else if (this.framesDecodedPrev && this.timestampPrev) {\n if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {\n parent.videoFrameRate = (\n (result.framesDecoded - this.framesDecodedPrev) /\n ((result.timestamp - this.timestampPrev) / 1000)\n ).toFixed(2);\n }\n }\n } else {\n parent.videoFrameRate = 0;\n }\n }\n\n _dumpItem(res) {\n let statsString = '{';\n let index = 0;\n\n Object.keys(res).forEach((k) => {\n statsString += `\"${k}\": \"${res[k]}\"`;\n if (++index !== res.length) {\n statsString += ',';\n }\n });\n statsString += '}';\n\n return statsString;\n }\n}\n"],"mappings":"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"}