2026-07-21 06:55:02 +00:00
// Module ID: 12629
// Function ID: 97143
2026-07-20 16:05:17 +00:00
// Name: _createForOfIteratorHelperLoose
// Dependencies: []
2026-07-21 06:55:02 +00:00
// Module 12629 (_createForOfIteratorHelperLoose)
2026-07-20 16:05:17 +00:00
function _createForOfIteratorHelperLoose ( @ @iterator ) {
let arg1 = Symbol_iterator ;
@ @iterator = "undefined" !== typeof Symbol ;
if ( Symbol_iterator ) {
const _Symbol = Symbol ;
@ @iterator = Symbol_iterator [ Symbol . iterator ] ;
}
if ( ! Symbol_iterator ) {
@ @iterator = Symbol_iterator [ Symbol . iterator ] ;
}
if ( Symbol_iterator ) {
const iter = Symbol_iterator . call ( Symbol_iterator ) ;
const next = iter . next ;
return next . bind ( iter ) ;
} else {
const _Array = Array ;
let tmp = Symbol_iterator ;
if ( ! Array . isArray ( Symbol_iterator ) ) {
let tmp2 ;
if ( Symbol_iterator ) {
if ( "string" === typeof Symbol_iterator ) {
tmp2 = _arrayLikeToArray ( Symbol_iterator , undefined ) ;
} else {
const toString = { } . toString ;
const substr = toString . call ( Symbol_iterator ) . slice ( 8 , - 1 ) ;
let name = substr ;
if ( tmp3 ) {
name = Symbol_iterator . constructor . name ;
}
if ( "Map" !== name ) {
if ( "Set" !== name ) {
if ( "Arguments" === name ) {
let arr = _arrayLikeToArray ( Symbol_iterator , undefined ) ;
} else {
const obj = /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ ;
}
}
tmp2 = arr ;
}
const _Array2 = Array ;
arr = Array . from ( Symbol_iterator ) ;
const callResult = toString . call ( Symbol_iterator ) ;
const tmp3 = "Object" === substr && Symbol_iterator . constructor ;
}
}
tmp = tmp2 ;
if ( ! tmp2 ) {
const _TypeError = TypeError ;
const typeError = new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ;
throw typeError ;
}
}
if ( tmp ) {
arg1 = tmp ;
}
let closure_1 = 0 ;
return ( ) = > {
if ( closure_1 >= tmp . length ) {
let obj = { done : true } ;
} else {
obj = { done : false } ;
closure_1 = tmp3 + 1 ;
obj . value = tmp [ + closure_1 ] ;
}
return obj ;
} ;
}
}
function _arrayLikeToArray ( arg0 , arg1 ) {
let length ;
if ( tmp ) {
length = arg0 . length ;
}
const ArrayResult = Array ( length ) ;
for ( let num = 0 ; num < length ; num = num + 1 ) {
ArrayResult [ num ] = arg0 [ num ] ;
}
return ArrayResult ;
}
function _isNativeReflectConstruct() {
let closure_0 = ! valueOf . call ( Reflect . construct ( Boolean , [ ] , ( ) = > {
} ) ) ;
function _isNativeReflectConstruct() {
return closure_0 ;
}
const result = _isNativeReflectConstruct ( ) ;
}
function round ( arg0 ) {
let num = arg1 ;
if ( arg1 === undefined ) {
num = 0 ;
}
if ( null != arg0 ) {
const _Math = Math ;
num = Math . round ( arg0 ) ;
}
return num ;
}
let closure_3 = importDefault ( dependencyMap [ 0 ] ) ;
let closure_4 = importDefault ( dependencyMap [ 1 ] ) ;
let closure_5 = importDefault ( dependencyMap [ 2 ] ) ;
let closure_6 = importDefault ( dependencyMap [ 3 ] ) ;
let closure_7 = importDefault ( dependencyMap [ 4 ] ) ;
const obj = { FpsUpdate : "fps-update" } ;
const tmp2 = ( arg0 ) = > {
class VideoQuality {
constructor ( arg0 ) {
TimeStampProducer = arg1 ;
self = this ;
if ( arg1 === undefined ) {
tmp = VideoQuality ;
tmp2 = closure_2 ;
num = 5 ;
TimeStampProducer = VideoQuality ( closure_2 [ 5 ] ) . TimeStampProducer ;
}
VideoQuality = undefined ;
tmp3 = closure_3 ( self , VideoQuality ) ;
obj = closure_6 ( VideoQuality ) ;
tmp4 = closure_5 ;
if ( closure_11 ( ) ) {
tmp6 = globalThis ;
_Reflect = Reflect ;
tmp7 = closure_6 ;
constructResult = Reflect . construct ( obj , [ ] , closure_6 ( self ) . constructor ) ;
} else {
constructResult = obj . apply ( self , undefined ) ;
}
tmp4Result = tmp4 ( self , constructResult ) ;
VideoQuality = tmp4Result ;
tmp4Result . connection = arg0 ;
tmp4Result . timestampProducer = TimeStampProducer ;
tmp9 = closure_1 ( closure_2 [ 6 ] ) ;
tmp9 = new tmp9 ( ) ;
tmp4Result . networkQuality = tmp9 ;
tmp4Result . pausedCount = 0 ;
tmp4Result . simulcastQualityChanges = 0 ;
tmp4Result . cameraToggles = 0 ;
tmp4Result . callUserIdsCount = 0 ;
tmp4Result . numWindowOcclusionChanges = 0 ;
tmp4Result . outboundStats = { } ;
tmp4Result . inboundStats = { } ;
tmp4Result . symmetricCodecUpdates = 0 ;
tmp4Result . asymmetricCodecUpdates = 0 ;
set = new Set ( ) ;
tmp4Result . statCollectionPausedUsers = set ;
tmp4Result . sampleStats = ( arg0 ) = > {
if ( null != arg0 ) {
const timestampProducer = tmp4Result . timestampProducer ;
const nowResult = timestampProducer . now ( ) ;
const networkQuality = tmp4Result . networkQuality ;
const result = networkQuality . incrementNetworkStats ( nowResult ) ;
const result1 = tmp4Result . updateSystemResourceStats ( ) ;
const result2 = tmp4Result . updateVideoEffectStats ( arg0 ) ;
if ( null != arg0 ) {
const connection = tmp4Result . connection ;
tmp4Result . receivedStats ( nowResult , arg0 , connection . getStreamParameters ( ) ) ;
}
}
} ;
durationEnabled = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . paused = durationEnabled ;
durationEnabled1 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . zeroReceivers = durationEnabled1 ;
durationEnabled2 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . videoStopped = durationEnabled2 ;
durationEnabled3 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . videoEffectDuration = durationEnabled3 ;
durationEnabled4 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . hqSimulcastStreamEncoded = durationEnabled4 ;
durationEnabled5 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . lqSimulcastStreamEncoded = durationEnabled5 ;
durationEnabled6 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . bothSimulcastStreamsEncoded = durationEnabled6 ;
durationEnabled7 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . hqSimulcastStreamWatched = durationEnabled7 ;
durationEnabled8 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . lqSimulcastStreamWatched = durationEnabled8 ;
durationEnabled9 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . hqSimulcastStreamEligible = durationEnabled9 ;
durationEnabled10 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . lqSimulcastStreamEligible = durationEnabled10 ;
durationEnabled11 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . windowOccluded = durationEnabled11 ;
durationEnabled12 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . videoStoppedForOcclusion = durationEnabled12 ;
durationEnabled13 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . bandwidthLimitedFramerate = durationEnabled13 ;
durationEnabled14 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . bandwidthLimitedResolution = durationEnabled14 ;
durationEnabled15 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . cameraDuration = durationEnabled15 ;
durationEnabled16 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . cameraOpportunityDuration = durationEnabled16 ;
durationEnabled17 = new VideoQuality ( closure_2 [ 5 ] ) . DurationEnabled ( false , TimeStampProducer ) ;
tmp4Result . cameraSendDuration = durationEnabled17 ;
histogram = new VideoQuality ( closure_2 [ 7 ] ) . Histogram ( ) ;
tmp4Result . videoEntropy = histogram ;
return tmp4Result ;
}
}
const arg1 = VideoQuality ;
callback2 ( VideoQuality , arg0 ) ;
let obj = {
key : "addUserToStatsCollectionPausedSet" ,
value ( arg0 ) {
const statCollectionPausedUsers = this . statCollectionPausedUsers ;
statCollectionPausedUsers . add ( arg0 ) ;
}
} ;
const items = [ obj , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] ;
obj = {
key : "removeUserFromStatsCollectionPausedSet" ,
value ( arg0 ) {
const statCollectionPausedUsers = this . statCollectionPausedUsers ;
statCollectionPausedUsers . delete ( arg0 ) ;
}
} ;
items [ 1 ] = obj ;
obj = {
key : "start" ,
value() {
const timestampProducer = this . timestampProducer ;
this . streamStart = timestampProducer . now ( ) ;
const connection = this . connection ;
connection . on ( VideoQuality ( closure_2 [ 8 ] ) . BaseConnectionEvent . Stats , this . sampleStats ) ;
}
} ;
items [ 2 ] = obj ;
items [ 3 ] = {
key : "setOutboundSsrc" ,
value ( arg0 ) {
const self = this ;
if ( null == this . outboundStats [ arg0 ] ) {
const OutboundStats = VideoQuality ( closure_2 [ 9 ] ) . OutboundStats ;
const prototype = OutboundStats . prototype ;
const outboundStats = new OutboundStats ( self . timestampProducer ) ;
self . outboundStats [ arg0 ] = outboundStats ;
}
}
} ;
items [ 4 ] = {
key : "getOrCreateInboundStats" ,
value ( arg0 ) {
const self = this ;
if ( null == this . inboundStats [ arg0 ] ) {
const InboundStats = VideoQuality ( closure_2 [ 9 ] ) . InboundStats ;
const prototype = InboundStats . prototype ;
const inboundStats = new InboundStats ( self . timestampProducer ) ;
self . inboundStats [ arg0 ] = inboundStats ;
}
return self . inboundStats [ arg0 ] ;
}
} ;
items [ 5 ] = {
key : "updateCallUserIdsCount" ,
value ( callUserIdsCount ) {
this . callUserIdsCount = callUserIdsCount ;
}
} ;
items [ 6 ] = {
key : "setInboundUser" ,
value ( arg0 , arg1 ) {
const orCreateInboundStats = this . getOrCreateInboundStats ( arg0 ) ;
orCreateInboundStats . setVideoStopped ( 0 === arg1 , VideoQuality ( closure_2 [ 9 ] ) . VideoStoppedReasons . SenderStopped ) ;
}
} ;
items [ 7 ] = {
key : "setUserVideoDisabled" ,
value ( arg0 , arg1 ) {
const orCreateInboundStats = this . getOrCreateInboundStats ( arg0 ) ;
orCreateInboundStats . setVideoStopped ( arg1 , VideoQuality ( closure_2 [ 9 ] ) . VideoStoppedReasons . ClientSideDisableVideo ) ;
let tmp2 = ! arg1 ;
if ( tmp2 ) {
tmp2 = orCreateInboundStats . statsWindow . length > 0 ;
}
if ( tmp2 ) {
tmp2 = 0 === orCreateInboundStats . statsWindow [ 0 ] . packets ;
}
if ( tmp2 ) {
const timestampProducer = this . timestampProducer ;
orCreateInboundStats . startTime = timestampProducer . now ( ) ;
}
}
} ;
items [ 8 ] = {
key : "setOcclusionIncomingVideoEnabled" ,
value ( arg0 ) {
this . videoStoppedForOcclusion . value = ! arg0 ;
}
} ;
items [ 9 ] = {
key : "setWindowOcclusionState" ,
value ( value ) {
const self = this ;
if ( value !== this . windowOccluded . value ) {
self . numWindowOcclusionChanges = self . numWindowOcclusionChanges + 1 ;
}
self . windowOccluded . value = value ;
}
} ;
items [ 10 ] = {
key : "pause" ,
value() {
const self = this ;
if ( ! this . paused . value ) {
self . pausedCount = self . pausedCount + 1 ;
}
const item = callback ( closure_2 [ 10 ] ) . forEach ( self . outboundStats , ( arg0 ) = > {
arg0 . statsWindow = [ ] ;
} ) ;
const arr = callback ( closure_2 [ 10 ] ) ;
const item1 = callback ( closure_2 [ 10 ] ) . forEach ( self . inboundStats , ( arg0 ) = > {
arg0 . statsWindow = [ ] ;
} ) ;
self . updateSendState ( { paused : true } ) ;
}
} ;
items [ 11 ] = {
key : "resume" ,
value() {
this . updateSendState ( { paused : false } ) ;
}
} ;
items [ 12 ] = {
key : "stop" ,
value() {
const connection = this . connection ;
connection . off ( VideoQuality ( closure_2 [ 8 ] ) . BaseConnectionEvent . Stats , this . sampleStats ) ;
const timestampProducer = this . timestampProducer ;
this . streamEnd = timestampProducer . now ( ) ;
this . removeAllListeners ( ) ;
}
} ;
items [ 13 ] = {
key : "setViewedSimulcastQuality" ,
value ( value ) {
const self = this ;
let tmp = value !== this . hqSimulcastStreamWatched . value ;
if ( tmp ) {
const hqSimulcastStreamWatched = self . hqSimulcastStreamWatched ;
let tmp2 = hqSimulcastStreamWatched . totalDuration ( ) > 0 ;
if ( ! tmp2 ) {
const lqSimulcastStreamWatched = self . lqSimulcastStreamWatched ;
tmp2 = lqSimulcastStreamWatched . totalDuration ( ) > 0 ;
}
tmp = tmp2 ;
}
if ( tmp ) {
self . simulcastQualityChanges = self . simulcastQualityChanges + 1 ;
}
self . hqSimulcastStreamWatched . value = value ;
self . lqSimulcastStreamWatched . value = ! value ;
}
} ;
items [ 14 ] = {
key : "setEligibleSimulcastQuality" ,
value ( value ) {
this . hqSimulcastStreamEligible . value = value ;
this . lqSimulcastStreamEligible . value = ! value ;
}
} ;
items [ 15 ] = {
key : "getNetworkStats" ,
value() {
const networkQuality = this . networkQuality ;
return networkQuality . getStats ( ) ;
}
} ;
items [ 16 ] = {
key : "getEncoderUsageStats" ,
value() {
const self = this ;
const map = new Map ( ) ;
for ( const key10011 in this . outboundStats ) {
let tmp5 = key10011 ;
let _Map = Map ;
let tmp6 = new . target ;
let tmp7 = new . target ;
let map1 = new Map ( ) ;
let tmp8 = map1 ;
let tmp9 = closure_9 ;
let obj3 = self . outboundStats [ key10011 ] ;
let tmp10 = closure_9 ( obj3 . getCodecsUsed ( ) ) ;
let iter2 = tmp10 ( ) ;
if ( iter2 . done ) {
continue ;
} else {
let str = iter2 . value ;
let formatted = str . toUpperCase ( ) ;
let tmp2 = closure_12 ;
let result = map1 . set ( formatted , closure_12 ( self . outboundStats [ key10011 ] . codecBuckets [ formatted ] ) ) ;
let _parseInt = parseInt ;
let result1 = map . set ( parseInt ( key10011 ) , map1 ) ;
let iter = tmp10 ( ) ;
iter2 = iter ;
}
continue ;
}
return map ;
}
} ;
items [ 17 ] = {
key : "getDecoderUsageStats" ,
value() {
const self = this ;
const map = new Map ( ) ;
for ( const key10011 in this . inboundStats ) {
let tmp5 = key10011 ;
let _Map = Map ;
let tmp6 = new . target ;
let tmp7 = new . target ;
let map1 = new Map ( ) ;
let tmp8 = map1 ;
let tmp9 = closure_9 ;
let obj3 = self . inboundStats [ key10011 ] ;
let tmp10 = closure_9 ( obj3 . getCodecsUsed ( ) ) ;
let iter2 = tmp10 ( ) ;
if ( iter2 . done ) {
continue ;
} else {
let str = iter2 . value ;
let formatted = str . toUpperCase ( ) ;
let tmp2 = closure_12 ;
let result = map1 . set ( formatted , closure_12 ( self . inboundStats [ key10011 ] . codecBuckets [ formatted ] ) ) ;
let result1 = map . set ( key10011 , map1 ) ;
let iter = tmp10 ( ) ;
iter2 = iter ;
}
continue ;
}
return map ;
}
} ;
items [ 18 ] = {
key : "getCodecUsageStats" ,
value ( arg0 , arg1 ) {
const self = this ;
const tmp = this . asymmetricCodecUpdates > this . symmetricCodecUpdates ;
let map = new Map ( ) ;
if ( "sender" !== arg0 ) {
if ( "streamer" !== arg0 ) {
const decoderUsageStats = self . getDecoderUsageStats ( ) ;
let value = map ;
if ( decoderUsageStats . has ( arg1 ) ) {
value = decoderUsageStats . get ( arg1 ) ;
}
let obj = { codec_asymmetric_session : tmp } ;
value = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . H264 ) ;
let num2 = 0 ;
if ( null != value ) {
num2 = value ;
}
obj . codec_h264_decode_duration_sec = num2 ;
const value1 = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . H265 ) ;
let num3 = 0 ;
if ( null != value1 ) {
num3 = value1 ;
}
obj . codec_h265_decode_duration_sec = num3 ;
const value2 = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . VP8 ) ;
let num4 = 0 ;
if ( null != value2 ) {
num4 = value2 ;
}
obj . codec_vp8_decode_duration_sec = num4 ;
const value3 = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . VP9 ) ;
let num5 = 0 ;
if ( null != value3 ) {
num5 = value3 ;
}
obj . codec_vp9_decode_duration_sec = num5 ;
const value4 = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . AV1 ) ;
let num6 = 0 ;
if ( null != value4 ) {
num6 = value4 ;
}
obj . codec_av1_decode_duration_sec = num6 ;
const value5 = value . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . UNKNOWN ) ;
let num7 = 0 ;
if ( null != value5 ) {
num7 = value5 ;
}
obj . codec_unknown_decode_duration_sec = num7 ;
return obj ;
}
}
const encoderUsageStats = self . getEncoderUsageStats ( ) ;
if ( encoderUsageStats . size > 0 ) {
const items = [ ] ;
HermesBuiltin . arraySpread ( encoderUsageStats . keys ( ) , 0 ) ;
map = encoderUsageStats . get ( items . sort ( ) [ 0 ] ) ;
}
obj = { codec_asymmetric_session : tmp } ;
const value6 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . H264 ) ;
let num9 = 0 ;
if ( null != value6 ) {
num9 = value6 ;
}
obj . codec_h264_encode_duration_sec = num9 ;
const value7 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . H265 ) ;
let num10 = 0 ;
if ( null != value7 ) {
num10 = value7 ;
}
obj . codec_h265_encode_duration_sec = num10 ;
const value8 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . VP8 ) ;
let num11 = 0 ;
if ( null != value8 ) {
num11 = value8 ;
}
obj . codec_vp8_encode_duration_sec = num11 ;
const value9 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . VP9 ) ;
let num12 = 0 ;
if ( null != value9 ) {
num12 = value9 ;
}
obj . codec_vp9_encode_duration_sec = num12 ;
const value10 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . AV1 ) ;
let num13 = 0 ;
if ( null != value10 ) {
num13 = value10 ;
}
obj . codec_av1_encode_duration_sec = num13 ;
const value11 = map . get ( VideoQuality ( closure_2 [ 9 ] ) . CodecTypes . UNKNOWN ) ;
let num14 = 0 ;
if ( null != value11 ) {
num14 = value11 ;
}
obj . codec_unknown_encode_duration_sec = num14 ;
return obj ;
}
} ;
items [ 19 ] = {
key : "getCameraDurationStats" ,
value() {
const cameraDuration = this . cameraDuration ;
const cameraOpportunityDuration = this . cameraOpportunityDuration ;
const cameraSendDuration = this . cameraSendDuration ;
return { camera_enabled_duration : Math.round ( cameraDuration . totalDurationSeconds ( ) ) , camera_send_opportunity_duration : Math.round ( cameraOpportunityDuration . totalDurationSeconds ( ) ) , camera_send_duration : Math.round ( cameraSendDuration . totalDurationSeconds ( ) ) , num_camera_on_toggles : this.cameraToggles } ;
}
} ;
items [ 20 ] = {
key : "getOutboundStats" ,
value() {
const VideoQuality = this ;
const items = [ ] ;
const item = items ( closure_2 [ 10 ] ) . forEach ( this . outboundStats , ( vmafHistogram ) = > {
const self = arg1 ;
const connection = self . connection ;
let streamParameters ;
if ( null != connection ) {
streamParameters = connection . getStreamParameters ( ) ;
}
if ( streamParameters . length > 1 ) {
const item = streamParameters . forEach ( ( ssrc ) = > {
if ( parseInt ( arg1 ) === ssrc . ssrc ) {
const quality = ssrc . quality ;
let num = 50 ;
if ( null != quality ) {
num = quality ;
}
}
} ) ;
}
2026-07-21 06:55:02 +00:00
const items = [ "alignItems" , "Array" , "isArray" , "userId" , "key" , "Array" ] ;
const items1 = [ ] ;
2026-07-20 16:05:17 +00:00
vmafHistogram = vmafHistogram . vmafHistogram ;
const report = vmafHistogram . getReport ( items ) ;
const psnrHistogram = vmafHistogram . psnrHistogram ;
const report1 = psnrHistogram . getReport ( items ) ;
const targetBitrateHistogram = vmafHistogram . targetBitrateHistogram ;
const report2 = targetBitrateHistogram . getReport ( items1 ) ;
const outboundBandwidthSurplus = vmafHistogram . outboundBandwidthSurplus ;
const report3 = outboundBandwidthSurplus . getReport ( items1 ) ;
const videoEntropy = self . videoEntropy ;
const report4 = videoEntropy . getReport ( items1 ) ;
const result = vmafHistogram . aggregationDuration / 1000 ;
let obj = self ( closure_2 [ 11 ] ) ;
if ( ! obj . isWeb ( ) ) {
if ( ! obj2 . isIOS ( ) ) {
if ( ! obj3 . isAndroid ( ) ) {
let framesCodec = vmafHistogram . aggregatedProperties . screenshareFramesUnique ;
}
obj = { } ;
const merged = Object . assign ( self . getStats ( vmafHistogram ) ) ;
let num2 = 0 ;
if ( result > 0 ) {
const targetFrames = vmafHistogram . targetFrames ;
let num3 = 0 ;
if ( null != targetFrames ) {
num3 = targetFrames ;
}
num2 = Math . round ( num3 / result ) ;
}
obj [ "target_fps" ] = num2 ;
const connection2 = self . connection ;
let context ;
if ( null != connection2 ) {
context = connection2 . context ;
}
let result1 = null ;
if ( context === self ( closure_2 [ 8 ] ) . MediaEngineContextTypes . STREAM ) {
result1 = null ;
if ( tmp17 ) {
result1 = framesCodec / result ;
}
}
obj [ "unique_captured_fps" ] = result1 ;
let num5 = 0 ;
if ( result > 0 ) {
const targetBytesNetwork = vmafHistogram . targetBytesNetwork ;
let num6 = 0 ;
if ( null != targetBytesNetwork ) {
num6 = targetBytesNetwork ;
}
num5 = Math . round ( 8 * num6 / result ) ;
}
obj [ "target_bitrate_network" ] = num5 ;
let tmp25 = null ;
if ( report2 . count > 0 ) {
tmp25 = report2 . percentiles [ 1 ] ;
}
obj [ "target_bitrate_network_percentile1" ] = tmp25 ;
let tmp26 = null ;
if ( report2 . count > 0 ) {
tmp26 = report2 . percentiles [ 5 ] ;
}
obj [ "target_bitrate_network_percentile5" ] = tmp26 ;
let tmp27 = null ;
if ( report2 . count > 0 ) {
tmp27 = report2 . percentiles [ 10 ] ;
}
obj [ "target_bitrate_network_percentile10" ] = tmp27 ;
let tmp28 = null ;
if ( report2 . count > 0 ) {
tmp28 = report2 . percentiles [ 25 ] ;
}
obj [ "target_bitrate_network_percentile25" ] = tmp28 ;
let tmp29 = null ;
if ( report2 . count > 0 ) {
tmp29 = report2 . percentiles [ 50 ] ;
}
obj [ "target_bitrate_network_percentile50" ] = tmp29 ;
let tmp30 = null ;
if ( report2 . count > 0 ) {
tmp30 = report2 . percentiles [ 75 ] ;
}
obj [ "target_bitrate_network_percentile75" ] = tmp30 ;
let tmp31 = null ;
if ( report2 . count > 0 ) {
tmp31 = report2 . percentiles [ 99 ] ;
}
obj [ "target_bitrate_network_percentile99" ] = tmp31 ;
let num13 = 0 ;
if ( result > 0 ) {
const targetBytesMax = vmafHistogram . targetBytesMax ;
let num14 = 0 ;
if ( null != targetBytesMax ) {
num14 = targetBytesMax ;
}
num13 = Math . round ( 8 * num14 / result ) ;
}
obj [ "target_bitrate_max" ] = num13 ;
let num15 = 0 ;
if ( result > 0 ) {
const outboundBytesAvailable = vmafHistogram . outboundBytesAvailable ;
let num16 = 0 ;
if ( null != outboundBytesAvailable ) {
num16 = outboundBytesAvailable ;
}
num15 = Math . round ( 8 * num16 / result ) ;
}
obj [ "outbound_bandwidth_estimate" ] = num15 ;
let tmp34 = null ;
if ( report3 . count > 0 ) {
tmp34 = report3 . percentiles [ 1 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile1" ] = tmp34 ;
let tmp35 = null ;
if ( report3 . count > 0 ) {
tmp35 = report3 . percentiles [ 5 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile5" ] = tmp35 ;
let tmp36 = null ;
if ( report3 . count > 0 ) {
tmp36 = report3 . percentiles [ 10 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile10" ] = tmp36 ;
let tmp37 = null ;
if ( report3 . count > 0 ) {
tmp37 = report3 . percentiles [ 25 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile25" ] = tmp37 ;
let tmp38 = null ;
if ( report3 . count > 0 ) {
tmp38 = report3 . percentiles [ 50 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile50" ] = tmp38 ;
let tmp39 = null ;
if ( report3 . count > 0 ) {
tmp39 = report3 . percentiles [ 75 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile75" ] = tmp39 ;
let tmp40 = null ;
if ( report3 . count > 0 ) {
tmp40 = report3 . percentiles [ 99 ] ;
}
obj [ "outbound_bandwidth_surplus_percentile99" ] = tmp40 ;
obj [ "duration_encoder_nvidia_cuda" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . NVIDIA_CUDA ] ) ;
obj [ "duration_encoder_nvidia_direct3d" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . NVIDIA_DIRECT_3D ] ) ;
obj [ "duration_encoder_nvidia_vulkan" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . NVIDIA_VULKAN ] ) ;
obj [ "duration_encoder_openh264" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . OPENH264 ] ) ;
obj [ "duration_encoder_videotoolbox" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . VIDEOTOOLBOX ] ) ;
obj [ "duration_encoder_amd_direct3d" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . AMD_DIRECT_3D ] ) ;
obj [ "duration_encoder_amd_vaapi" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . AMD_VAAPI ] ) ;
obj [ "duration_encoder_intel" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . INTEL ] ) ;
obj [ "duration_encoder_intel_direct3d" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . INTEL_DIRECT_3D ] ) ;
obj [ "duration_encoder_intel_vaapi" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . INTEL_VAAPI ] ) ;
obj [ "duration_encoder_vp8_libvpx" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . VP8_LIBVPX ] ) ;
obj [ "duration_encoder_uncategorized" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . UNCATEGORIZED ] ) ;
obj [ "duration_encoder_wmf_chrome" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . WMF_CHROME ] ) ;
obj [ "duration_encoder_unknown" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . UNKNOWN ] ) ;
obj [ "quality" ] = items ;
obj [ "average_encode_time_ms" ] = vmafHistogram . averageEncodeTime ;
let result2 = null ;
if ( vmafHistogram . vmafScoreNum > 0 ) {
result2 = vmafHistogram . vmafScoreSum / vmafHistogram . vmafScoreNum ;
}
obj [ "average_encoder_vmaf_score" ] = result2 ;
let tmp46 = null ;
if ( report . count > 0 ) {
tmp46 = report . percentiles [ 1 ] ;
}
obj [ "encoder_vmaf_score_percentile1" ] = tmp46 ;
let tmp47 = null ;
if ( report . count > 0 ) {
tmp47 = report . percentiles [ 5 ] ;
}
obj [ "encoder_vmaf_score_percentile5" ] = tmp47 ;
let tmp48 = null ;
if ( report . count > 0 ) {
tmp48 = report . percentiles [ 10 ] ;
}
obj [ "encoder_vmaf_score_percentile10" ] = tmp48 ;
let tmp49 = null ;
if ( report . count > 0 ) {
tmp49 = report . percentiles [ 25 ] ;
}
obj [ "encoder_vmaf_score_percentile25" ] = tmp49 ;
let tmp50 = null ;
if ( report . count > 0 ) {
tmp50 = report . percentiles [ 50 ] ;
}
obj [ "encoder_vmaf_score_percentile50" ] = tmp50 ;
let tmp51 = null ;
if ( report . count > 0 ) {
tmp51 = report . percentiles [ 75 ] ;
}
obj [ "encoder_vmaf_score_percentile75" ] = tmp51 ;
let result3 = null ;
if ( vmafHistogram . psnrDbNum > 0 ) {
result3 = vmafHistogram . psnrDbSum / vmafHistogram . psnrDbNum ;
}
obj [ "average_encoder_psnr_db" ] = result3 ;
let tmp53 = null ;
if ( report1 . count > 0 ) {
tmp53 = report1 . percentiles [ 1 ] ;
}
obj [ "encoder_psnr_db_percentile1" ] = tmp53 ;
let tmp54 = null ;
if ( report1 . count > 0 ) {
tmp54 = report1 . percentiles [ 5 ] ;
}
obj [ "encoder_psnr_db_percentile5" ] = tmp54 ;
let tmp55 = null ;
if ( report1 . count > 0 ) {
tmp55 = report1 . percentiles [ 10 ] ;
}
obj [ "encoder_psnr_db_percentile10" ] = tmp55 ;
let tmp56 = null ;
if ( report1 . count > 0 ) {
tmp56 = report1 . percentiles [ 25 ] ;
}
obj [ "encoder_psnr_db_percentile25" ] = tmp56 ;
let tmp57 = null ;
if ( report1 . count > 0 ) {
tmp57 = report1 . percentiles [ 50 ] ;
}
obj [ "encoder_psnr_db_percentile50" ] = tmp57 ;
let tmp58 = null ;
if ( report1 . count > 0 ) {
tmp58 = report1 . percentiles [ 75 ] ;
}
obj [ "encoder_psnr_db_percentile75" ] = tmp58 ;
let result4 = null ;
if ( vmafHistogram . outboundSinkWantNum > 0 ) {
result4 = vmafHistogram . outboundSinkWantSum / vmafHistogram . outboundSinkWantNum ;
}
obj [ "average_outbound_want" ] = result4 ;
obj [ "frames_dropped_rate_limiter" ] = vmafHistogram . framesDroppedRateLimiter ;
obj [ "frames_dropped_encoder_queue" ] = vmafHistogram . framesDroppedEncoderQueue ;
obj [ "frames_dropped_congestion_window" ] = vmafHistogram . framesDroppedCongestionWindow ;
obj [ "frames_dropped_encoder" ] = vmafHistogram . framesDroppedEncoder ;
const hqSimulcastStreamEncoded = self . hqSimulcastStreamEncoded ;
obj [ "duration_hq_simulcast_stream_encoded" ] = callback ( hqSimulcastStreamEncoded . totalDurationSeconds ( ) ) ;
const lqSimulcastStreamEncoded = self . lqSimulcastStreamEncoded ;
obj [ "duration_lq_simulcast_stream_encoded" ] = callback ( lqSimulcastStreamEncoded . totalDurationSeconds ( ) ) ;
const bothSimulcastStreamsEncoded = self . bothSimulcastStreamsEncoded ;
obj [ "duration_both_simulcast_streams_encoded" ] = callback ( bothSimulcastStreamsEncoded . totalDurationSeconds ( ) ) ;
const bandwidthLimitedFramerate = self . bandwidthLimitedFramerate ;
obj [ "duration_fps_bandwidth_limited" ] = callback ( bandwidthLimitedFramerate . totalDurationSeconds ( ) ) ;
const bandwidthLimitedResolution = self . bandwidthLimitedResolution ;
obj [ "duration_resolution_bandwidth_limited" ] = callback ( bandwidthLimitedResolution . totalDurationSeconds ( ) ) ;
let tmp62 = null ;
if ( report4 . count > 0 ) {
tmp62 = report4 . percentiles [ 1 ] ;
}
obj [ "video_entropy_percentile1" ] = tmp62 ;
let tmp63 = null ;
if ( report4 . count > 0 ) {
tmp63 = report4 . percentiles [ 5 ] ;
}
obj [ "video_entropy_percentile5" ] = tmp63 ;
let tmp64 = null ;
if ( report4 . count > 0 ) {
tmp64 = report4 . percentiles [ 10 ] ;
}
obj [ "video_entropy_percentile10" ] = tmp64 ;
let tmp65 = null ;
if ( report4 . count > 0 ) {
tmp65 = report4 . percentiles [ 25 ] ;
}
obj [ "video_entropy_percentile25" ] = tmp65 ;
let tmp66 = null ;
if ( report4 . count > 0 ) {
tmp66 = report4 . percentiles [ 50 ] ;
}
obj [ "video_entropy_percentile50" ] = tmp66 ;
let tmp67 = null ;
if ( report4 . count > 0 ) {
tmp67 = report4 . percentiles [ 75 ] ;
}
obj [ "video_entropy_percentile75" ] = tmp67 ;
let tmp68 = null ;
if ( report4 . count > 0 ) {
tmp68 = report4 . percentiles [ 99 ] ;
}
obj [ "video_entropy_percentile99" ] = tmp68 ;
obj [ "duration_encoder_exynos" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . EXYNOS ] ) ;
obj [ "duration_encoder_qualcomm" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . QUALCOMM ] ) ;
obj [ "duration_encoder_mediatek" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . MEDIATEK ] ) ;
obj [ "duration_encoder_wmf_sw" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . WMF_SW ] ) ;
obj [ "duration_encoder_wmf_hw" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . WMF_HW ] ) ;
obj [ "duration_encoder_wmf_direct3d" ] = callback ( vmafHistogram . encoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Encoders . WMF_DIRECT_3D ] ) ;
items . push ( obj ) ;
}
const obj2 = self ( closure_2 [ 11 ] ) ;
}
framesCodec = vmafHistogram . aggregatedProperties . framesCodec ;
} ) ;
return items ;
}
} ;
items [ 21 ] = {
key : "getInboundStats" ,
value ( arg0 ) {
return this . getStats ( this . inboundStats [ arg0 ] ) ;
}
} ;
items [ 22 ] = {
key : "destroyUser" ,
value ( arg0 ) {
delete r1 [ r0 ] ;
}
} ;
items [ 23 ] = {
key : "getInboundParticipants" ,
value() {
return callback ( closure_2 [ 12 ] ) . keys ( this . inboundStats ) ;
}
} ;
items [ 24 ] = {
key : "updateSendState" ,
value ( paused ) {
const self = this ;
if ( null != paused . paused ) {
self . paused . value = paused . paused ;
}
if ( null != paused . receivers ) {
self . zeroReceivers . value = 0 === paused . receivers ;
}
self . videoStopped . value = self . paused . value || self . zeroReceivers . value ;
if ( ( self . paused . value || self . zeroReceivers . value ) !== self . videoStopped . value ) {
const item = callback ( closure_2 [ 10 ] ) . forEach ( self . outboundStats , ( arg0 ) = > {
const items = [ ] ;
arg0 . statsWindow = items ;
return items ;
} ) ;
const arr = callback ( closure_2 [ 10 ] ) ;
}
}
} ;
items [ 25 ] = {
key : "getStats" ,
value ( aggregationDuration ) {
let bytes ;
let cryptorAttempts ;
let cryptorDuration ;
let cryptorFailureCount ;
let cryptorInvalidNonceCount ;
let cryptorMissingKeyCount ;
let cryptorSuccessCount ;
let framesCodec ;
let framesCodecError ;
let framesDropped ;
let framesNetwork ;
let freezeCount ;
let keyframes ;
let nackCount ;
let packets ;
let packetsLost ;
let passthroughCount ;
let pauseCount ;
let paused ;
let pliCount ;
let qpSum ;
let qualityDecodeErrors ;
let qualityDecoderReboots ;
let qualityFrameDrops ;
let qualityScoreErrors ;
let qualitySizeMismatches ;
let totalDecodeTime ;
let totalFramesDuration ;
let totalFreezesDuration ;
let totalPausesDuration ;
let windowOccluded ;
const self = this ;
if ( null == aggregationDuration ) {
return null ;
} else {
const _Number = Number ;
const NumberResult = Number ( self . streamStart ) ;
if ( null != self . streamEnd ) {
let diff = self . streamEnd - NumberResult ;
} else {
const timestampProducer = self . timestampProducer ;
diff = timestampProducer . now ( ) - NumberResult ;
}
const _Math = Math ;
const result = Math . max ( aggregationDuration . aggregationDuration , 0 ) / 1000 ;
2026-07-21 06:55:02 +00:00
const items = [ "alignItems" , "Array" , "isArray" , "userId" , "key" , "Array" ] ;
2026-07-20 16:05:17 +00:00
const fpsHistogram = aggregationDuration . fpsHistogram ;
const report = fpsHistogram . getReport ( items ) ;
const bitrateHistogram = aggregationDuration . bitrateHistogram ;
2026-07-21 06:55:02 +00:00
const report1 = bitrateHistogram . getReport ( [ ] ) ;
2026-07-20 16:05:17 +00:00
const resolutionHistogram = aggregationDuration . resolutionHistogram ;
const report2 = resolutionHistogram . getReport ( items ) ;
const inboundBitrateEstimateHistogram = aggregationDuration . inboundBitrateEstimateHistogram ;
2026-07-21 06:55:02 +00:00
const report3 = inboundBitrateEstimateHistogram . getReport ( [ ] ) ;
2026-07-20 16:05:17 +00:00
const localWantHistogram = aggregationDuration . localWantHistogram ;
2026-07-21 06:55:02 +00:00
const report4 = localWantHistogram . getReport ( [ "<string:32069376>" , "<string:48068096>" , "<string:48068608>" , "<string:48068864>" , "<string:28737792>" , "<string:205676800>" , "<string:1442840989>" , "<string:1124073799>" ] ) ;
2026-07-20 16:05:17 +00:00
const systemResources = aggregationDuration . systemResources ;
const stats = systemResources . getStats ( ) ;
let obj = { } ;
const _Math2 = Math ;
obj . duration = Math . floor ( diff / 1000 ) ;
obj . duration_aggregation = callback5 ( result ) ;
const videoStoppedDuration = aggregationDuration . videoStoppedDuration ;
obj . duration_stopped_receiving = callback5 ( videoStoppedDuration . asSeconds ( ) ) ;
obj . duration_stream_under_8mbps = callback5 ( aggregationDuration . bitrateBuckets [ 8000000 ] ) ;
obj . duration_stream_under_7mbps = callback5 ( aggregationDuration . bitrateBuckets [ 7000000 ] ) ;
obj . duration_stream_under_6mbps = callback5 ( aggregationDuration . bitrateBuckets [ 6000000 ] ) ;
obj . duration_stream_under_5mbps = callback5 ( aggregationDuration . bitrateBuckets [ 5000000 ] ) ;
obj . duration_stream_under_4mbps = callback5 ( aggregationDuration . bitrateBuckets [ 4000000 ] ) ;
obj . duration_stream_under_3mbps = callback5 ( aggregationDuration . bitrateBuckets [ 3000000 ] ) ;
obj . duration_stream_under_2mbps = callback5 ( aggregationDuration . bitrateBuckets [ 2000000 ] ) ;
obj . duration_stream_under_1_5mbps = callback5 ( aggregationDuration . bitrateBuckets [ 1500000 ] ) ;
obj . duration_stream_under_1mbps = callback5 ( aggregationDuration . bitrateBuckets [ 1000000 ] ) ;
obj . duration_stream_under_0_5mbps = callback5 ( aggregationDuration . bitrateBuckets [ 500000 ] ) ;
obj . duration_stream_at_0mbps = callback5 ( aggregationDuration . bitrateBuckets [ 0 ] ) ;
obj . duration_fps_under_60 = callback5 ( aggregationDuration . fpsBuckets [ 60 ] ) ;
obj . duration_fps_under_55 = callback5 ( aggregationDuration . fpsBuckets [ 55 ] ) ;
obj . duration_fps_under_50 = callback5 ( aggregationDuration . fpsBuckets [ 50 ] ) ;
obj . duration_fps_under_45 = callback5 ( aggregationDuration . fpsBuckets [ 45 ] ) ;
obj . duration_fps_under_40 = callback5 ( aggregationDuration . fpsBuckets [ 40 ] ) ;
obj . duration_fps_under_35 = callback5 ( aggregationDuration . fpsBuckets [ 35 ] ) ;
obj . duration_fps_under_30 = callback5 ( aggregationDuration . fpsBuckets [ 30 ] ) ;
obj . duration_fps_under_25 = callback5 ( aggregationDuration . fpsBuckets [ 25 ] ) ;
obj . duration_fps_under_20 = callback5 ( aggregationDuration . fpsBuckets [ 20 ] ) ;
obj . duration_fps_under_15 = callback5 ( aggregationDuration . fpsBuckets [ 15 ] ) ;
obj . duration_fps_under_10 = callback5 ( aggregationDuration . fpsBuckets [ 10 ] ) ;
obj . duration_fps_under_5 = callback5 ( aggregationDuration . fpsBuckets [ 5 ] ) ;
obj . duration_fps_at_0 = callback5 ( aggregationDuration . fpsBuckets [ 0 ] ) ;
let num25 = 0 ;
if ( aggregationDuration . intervalTotal > 0 ) {
const _Math3 = Math ;
num25 = Math . round ( aggregationDuration . resolutionTotal / aggregationDuration . intervalTotal ) ;
}
obj . avg_resolution = num25 ;
let num26 = 0 ;
if ( aggregationDuration . intervalTotal > 0 ) {
const _Math4 = Math ;
num26 = Math . round ( aggregationDuration . minorResolutionTotal / aggregationDuration . intervalTotal ) ;
}
obj . avg_minor_resolution = num26 ;
let num27 = 0 ;
if ( aggregationDuration . intervalTotal > 0 ) {
const _Math5 = Math ;
num27 = Math . round ( aggregationDuration . majorResolutionTotal / aggregationDuration . intervalTotal ) ;
}
obj . avg_major_resolution = num27 ;
const minWidth = aggregationDuration . minWidth ;
let tmp10 = null ;
if ( null != minWidth ) {
tmp10 = minWidth ;
}
obj . min_resolution_width = tmp10 ;
const minHeight = aggregationDuration . minHeight ;
let tmp11 = null ;
if ( null != minHeight ) {
tmp11 = minHeight ;
}
obj . min_resolution_height = tmp11 ;
obj . duration_resolution_under_720 = callback5 ( aggregationDuration . resolutionBuckets [ 720 ] ) ;
obj . duration_resolution_under_480 = callback5 ( aggregationDuration . resolutionBuckets [ 480 ] ) ;
obj . duration_resolution_under_360 = callback5 ( aggregationDuration . resolutionBuckets [ 360 ] ) ;
( { pausedCount : obj.num_pauses , paused } = self ) ;
obj . duration_paused = callback5 ( paused . totalDuration ( ) / 1000 ) ;
const zeroReceivers = self . zeroReceivers ;
obj . duration_zero_receivers = callback5 ( zeroReceivers . totalDuration ( ) / 1000 ) ;
const videoStopped = self . videoStopped ;
obj . duration_video_stopped = callback5 ( videoStopped . totalDuration ( ) / 1000 ) ;
const hqSimulcastStreamWatched = self . hqSimulcastStreamWatched ;
obj . duration_hq_simulcast_stream_watched = callback5 ( hqSimulcastStreamWatched . totalDurationSeconds ( ) ) ;
const lqSimulcastStreamWatched = self . lqSimulcastStreamWatched ;
obj . duration_lq_simulcast_stream_watched = callback5 ( lqSimulcastStreamWatched . totalDurationSeconds ( ) ) ;
const hqSimulcastStreamEligible = self . hqSimulcastStreamEligible ;
obj . duration_hq_simulcast_stream_eligible = callback5 ( hqSimulcastStreamEligible . totalDurationSeconds ( ) ) ;
const lqSimulcastStreamEligible = self . lqSimulcastStreamEligible ;
obj . duration_lq_simulcast_stream_eligible = callback5 ( lqSimulcastStreamEligible . totalDurationSeconds ( ) ) ;
( { simulcastQualityChanges : obj.num_quality_changes , windowOccluded } = self ) ;
obj . duration_window_occluded = callback5 ( windowOccluded . totalDurationSeconds ( ) ) ;
const videoStoppedForOcclusion = self . videoStoppedForOcclusion ;
obj . duration_incoming_video_stopped_for_occlusion = callback5 ( videoStoppedForOcclusion . totalDurationSeconds ( ) ) ;
obj . num_window_occlusion_changes = self . numWindowOcclusionChanges ;
obj . fps_percentile1 = report . percentiles [ 1 ] ;
obj . fps_percentile5 = report . percentiles [ 5 ] ;
obj . fps_percentile10 = report . percentiles [ 10 ] ;
obj . fps_percentile25 = report . percentiles [ 25 ] ;
obj . fps_percentile50 = report . percentiles [ 50 ] ;
obj . fps_percentile75 = report . percentiles [ 75 ] ;
obj . bitrate_percentile1 = report1 . percentiles [ 1 ] ;
obj . bitrate_percentile5 = report1 . percentiles [ 5 ] ;
obj . bitrate_percentile10 = report1 . percentiles [ 10 ] ;
obj . bitrate_percentile25 = report1 . percentiles [ 25 ] ;
obj . bitrate_percentile50 = report1 . percentiles [ 50 ] ;
obj . bitrate_percentile75 = report1 . percentiles [ 75 ] ;
obj . bitrate_percentile99 = report1 . percentiles [ 99 ] ;
obj . resolution_percentile1 = report2 . percentiles [ 1 ] ;
obj . resolution_percentile5 = report2 . percentiles [ 5 ] ;
obj . resolution_percentile10 = report2 . percentiles [ 10 ] ;
obj . resolution_percentile25 = report2 . percentiles [ 25 ] ;
obj . resolution_percentile50 = report2 . percentiles [ 50 ] ;
obj . resolution_percentile75 = report2 . percentiles [ 75 ] ;
obj . inbound_bitrate_estimate_percentile1 = report3 . percentiles [ 1 ] ;
obj . inbound_bitrate_estimate_percentile5 = report3 . percentiles [ 5 ] ;
obj . inbound_bitrate_estimate_percentile10 = report3 . percentiles [ 10 ] ;
obj . inbound_bitrate_estimate_percentile25 = report3 . percentiles [ 25 ] ;
obj . inbound_bitrate_estimate_percentile50 = report3 . percentiles [ 50 ] ;
obj . inbound_bitrate_estimate_percentile75 = report3 . percentiles [ 75 ] ;
obj . inbound_bitrate_estimate_percentile99 = report3 . percentiles [ 99 ] ;
obj . local_want_percentile1 = report4 . percentiles [ 1 ] ;
obj . local_want_percentile5 = report4 . percentiles [ 5 ] ;
obj . local_want_percentile10 = report4 . percentiles [ 10 ] ;
obj . local_want_percentile25 = report4 . percentiles [ 25 ] ;
obj . local_want_percentile50 = report4 . percentiles [ 50 ] ;
obj . local_want_percentile75 = report4 . percentiles [ 75 ] ;
obj . local_want_percentile90 = report4 . percentiles [ 90 ] ;
obj . local_want_percentile95 = report4 . percentiles [ 95 ] ;
obj . average_local_want = report4 . mean ;
const videoEffectDuration = self . videoEffectDuration ;
obj . duration_video_effect = callback5 ( videoEffectDuration . totalDuration ( ) / 1000 ) ;
obj . cryptor_max_attempts = aggregationDuration . cryptorMaxAttempts ;
obj . duration_decoder_ffmpeg = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . FFMPEG ] ) ;
obj . duration_decoder_dav1d = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . DAV1D ] ) ;
obj . duration_decoder_vp8_libvpx = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . VP8_LIBVPX ] ) ;
obj . duration_decoder_electron = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . ELECTRON ] ) ;
obj . duration_decoder_videotoolbox = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . VIDEOTOOLBOX ] ) ;
obj . duration_decoder_uncategorized = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . UNCATEGORIZED ] ) ;
obj . duration_decoder_unknown = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . UNKNOWN ] ) ;
obj . duration_decoder_exynos = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . EXYNOS ] ) ;
obj . duration_decoder_webrtc = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . WEBRTC ] ) ;
obj . duration_decoder_qualcomm = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . QUALCOMM ] ) ;
obj . duration_decoder_mediatek = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . MEDIATEK ] ) ;
obj . duration_decoder_d3d11videodecoder = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . D3D11VIDEODECODER ] ) ;
obj . duration_decoder_android = callback5 ( aggregationDuration . decoderBuckets [ closure_0 ( undefined , closure_2 [ 9 ] ) . Decoders . ANDROID ] ) ;
const merged = Object . assign ( stats ) ;
const aggregatedProperties = aggregationDuration . aggregatedProperties ;
( { bytes , framesCodec , freezeCount , totalFreezesDuration , totalFramesDuration , cryptorFailureCount } = aggregatedProperties ) ;
let num37 = 0 ;
( { framesDropped , framesCodecError , framesNetwork , packets , packetsLost , nackCount , pliCount , qpSum , pauseCount , totalPausesDuration , totalDecodeTime , keyframes , passthroughCount , cryptorSuccessCount , cryptorDuration , cryptorAttempts , cryptorMissingKeyCount , cryptorInvalidNonceCount , qualityDecodeErrors , qualityDecoderReboots , qualityScoreErrors , qualityFrameDrops , qualitySizeMismatches } = aggregatedProperties ) ;
if ( null != cryptorFailureCount ) {
num37 = cryptorFailureCount ;
}
const cryptorFailureBeforeSuccessCount = aggregationDuration . cryptorFailureBeforeSuccessCount ;
let num38 = 0 ;
if ( null != cryptorFailureBeforeSuccessCount ) {
num38 = cryptorFailureBeforeSuccessCount ;
}
const diff1 = num37 - num38 ;
if ( aggregationDuration instanceof VideoQuality ( closure_2 [ 9 ] ) . OutboundStats ) {
obj . sender_freeze_count = freezeCount ;
obj . sender_total_freezes_duration = totalFreezesDuration ;
obj . sender_total_frames_duration = totalFramesDuration ;
obj . consecutive_static_color_frames_max = aggregationDuration . consecutiveStaticColorFramesMax ;
} else {
obj . receiver_freeze_count = freezeCount ;
obj . receiver_total_freezes_duration = totalFreezesDuration ;
obj . receiver_total_frames_duration = totalFramesDuration ;
obj . receiver_pause_count = pauseCount ;
obj . receiver_total_pauses_duration = totalPausesDuration ;
obj . total_decode_time_ms = totalDecodeTime ;
}
obj = { } ;
const merged1 = Object . assign ( obj ) ;
let num39 = 0 ;
if ( result > 0 ) {
let num40 = 0 ;
if ( null != bytes ) {
num40 = bytes ;
}
num39 = Math . round ( 8 * num40 / result ) ;
}
obj [ "avg_bitrate" ] = num39 ;
let num42 = 0 ;
if ( result > 0 ) {
let num43 = 0 ;
if ( null != framesCodec ) {
num43 = framesCodec ;
}
num42 = Math . round ( num43 / result ) ;
}
obj [ "avg_fps" ] = num42 ;
obj [ "num_bytes" ] = bytes ;
obj [ "num_packets_lost" ] = packetsLost ;
obj [ "num_packets" ] = packets ;
obj [ "num_frames" ] = framesNetwork ;
obj [ "num_frames_codec_error" ] = framesCodecError ;
obj [ "time_to_first_frame_ms" ] = aggregationDuration . timeToFirstFrame ;
obj [ "num_frames_dropped" ] = framesDropped ;
obj [ "num_nacks" ] = nackCount ;
obj [ "num_plis" ] = pliCount ;
obj [ "qp_sum" ] = qpSum ;
obj [ "num_keyframes" ] = keyframes ;
obj [ "cryptor_passthrough_count" ] = passthroughCount ;
obj [ "cryptor_success_count" ] = cryptorSuccessCount ;
obj [ "cryptor_failure_count" ] = cryptorFailureCount ;
obj [ "cryptor_duration" ] = cryptorDuration ;
obj [ "cryptor_attempts" ] = cryptorAttempts ;
obj [ "cryptor_missing_key_count" ] = cryptorMissingKeyCount ;
obj [ "cryptor_invalid_nonce_count" ] = cryptorInvalidNonceCount ;
obj [ "cryptor_failure_after_success_count" ] = diff1 ;
obj [ "encoder_quality_decode_errors" ] = qualityDecodeErrors ;
obj [ "encoder_quality_decoder_reboots" ] = qualityDecoderReboots ;
obj [ "encoder_quality_score_errors" ] = qualityScoreErrors ;
obj [ "encoder_quality_frame_drops" ] = qualityFrameDrops ;
obj [ "encoder_quality_size_mismatches" ] = qualitySizeMismatches ;
return obj ;
}
}
} ;
items [ 26 ] = {
key : "receivedStats" ,
value ( arg0 , transport , arr ) {
const self = this ;
const VideoQuality = this ;
transport = transport . transport ;
let obj = VideoQuality ( transport [ 11 ] ) ;
let num = 1 ;
if ( ! obj . isWeb ( ) ) {
const receiverReports = transport . receiverReports ;
let length ;
if ( null != receiverReports ) {
length = receiverReports . length ;
}
let num2 = 0 ;
if ( null != length ) {
num2 = length ;
}
num = num2 ;
}
const set = new Set ( ) ;
const set1 = new Set ( ) ;
obj = { receivers : num } ;
self . updateSendState ( obj ) ;
let tmp6 = self . connection . context === VideoQuality ( transport [ 8 ] ) . MediaEngineContextTypes . DEFAULT ;
if ( tmp6 ) {
tmp6 = null != transport . camera ;
}
self . cameraDuration . value = tmp6 ;
let tmp8 = self . connection . context === VideoQuality ( transport [ 8 ] ) . MediaEngineContextTypes . DEFAULT ;
if ( tmp8 ) {
tmp8 = null != transport . camera ;
}
if ( tmp8 ) {
tmp8 = self . callUserIdsCount > 1 ;
}
self . cameraOpportunityDuration . value = tmp8 ;
let tmp10 = self . connection . context === VideoQuality ( transport [ 8 ] ) . MediaEngineContextTypes . DEFAULT ;
if ( tmp10 ) {
tmp10 = null != transport . camera ;
}
if ( tmp10 ) {
tmp10 = num > 0 ;
}
self . cameraSendDuration . value = tmp10 ;
if ( tmp12 ) {
self . cameraToggles = self . cameraToggles + 1 ;
}
let closure_7 = arg0 ( transport [ 10 ] ) . max ( arr . map ( ( quality ) = > quality . quality ) ) ;
const outbound = transport . rtp . outbound ;
const first = outbound . filter ( ( type ) = > {
let tmp = "video" === type . type ;
if ( tmp ) {
let videoEntropy ;
if ( null != type ) {
videoEntropy = type . videoEntropy ;
}
tmp = null != videoEntropy ;
}
return tmp ;
} ) [ 0 ] ;
let videoEntropy ;
if ( null != first ) {
videoEntropy = first . videoEntropy ;
}
const outbound1 = transport . rtp . outbound ;
const found = outbound1 . filter ( ( type ) = > "video" === type . type ) ;
const item = found . forEach ( ( ssrc ) = > {
if ( null != ssrc ) {
ssrc = ssrc . ssrc ;
const self = ssrc ;
let obj = self . outboundStats [ ssrc ] ;
if ( null == obj ) {
const OutboundStats = self ( arg1 [ 9 ] ) . OutboundStats ;
const prototype = OutboundStats . prototype ;
const outboundStats = new OutboundStats ( self . timestampProducer ) ;
self . outboundStats [ ssrc ] = outboundStats ;
obj = outboundStats ;
}
let tmp8 = null == obj . timeToFirstFrame ;
if ( tmp8 ) {
let tmp9 = ssrc . framesEncoded > 0 ;
if ( ! tmp9 ) {
const frameRateInput = ssrc . frameRateInput ;
let num3 = 0 ;
if ( null != frameRateInput ) {
num3 = frameRateInput ;
}
tmp9 = num3 > 0 ;
}
tmp8 = tmp9 ;
}
if ( tmp8 ) {
const _Math = Math ;
obj . timeToFirstFrame = Math . max ( 0 , ssrc - obj . startTime ) ;
}
let tmp13 = null != videoEntropy ;
if ( tmp13 ) {
tmp13 = videoEntropy >= 0 ;
}
if ( tmp13 ) {
const videoEntropy = self . videoEntropy ;
videoEntropy . addSample ( videoEntropy ) ;
}
const found = arg2 . find ( ( ssrc ) = > ssrc . ssrc === ssrc ) ;
let flag = true ;
if ( self . connection . context === self ( arg1 [ 8 ] ) . MediaEngineContextTypes . STREAM ) {
const connection = self . connection ;
const remoteVideoSinkWants = connection . getRemoteVideoSinkWants ( ssrc ) ;
let tmp25 = null != remoteVideoSinkWants ;
if ( tmp25 ) {
tmp25 = 0 !== remoteVideoSinkWants ;
}
if ( ! tmp25 ) {
let quality ;
if ( null != found ) {
quality = found . quality ;
}
tmp25 = quality !== closure_7 ;
}
let remoteVideoSinkWants1 = remoteVideoSinkWants ;
if ( ! tmp25 ) {
const connection2 = self . connection ;
remoteVideoSinkWants1 = connection2 . getRemoteVideoSinkWants ( "any" ) ;
}
let num9 = 0 ;
if ( null != remoteVideoSinkWants1 ) {
num9 = remoteVideoSinkWants1 ;
}
flag = num9 > 0 ;
}
if ( ( self . videoStopped . value || ! flag ) !== obj . isVideoStopped ) {
obj . setVideoStopped ( tmp31 , self ( arg1 [ 9 ] ) . VideoStoppedReasons . SenderStopped ) ;
}
if ( ! ( self . videoStopped . value || ! flag ) ) {
const RawVideoStats = self ( arg1 [ 9 ] ) . RawVideoStats ;
const parseOutboundStatsResult = RawVideoStats . parseOutboundStats ( ssrc , ssrc ) ;
if ( self . connection . context === self ( arg1 [ 8 ] ) . MediaEngineContextTypes . STREAM ) {
let hybridGraphicsCaptureFramesUnique = arg1 . screenshare ;
if ( null == hybridGraphicsCaptureFramesUnique ) {
parseOutboundStatsResult . screenshareFramesUnique = parseOutboundStatsResult . framesCodec ;
} else {
if ( null == hybridGraphicsCaptureFramesUnique . hybridDxgiFramesUnique ) {
if ( null == hybridGraphicsCaptureFramesUnique . hybridGdiBitBltFramesUnique ) {
if ( null == hybridGraphicsCaptureFramesUnique . hybridGdiPrintWindowFramesUnique ) {
if ( null == hybridGraphicsCaptureFramesUnique . hybridVideohookFramesUnique ) {
if ( null == hybridGraphicsCaptureFramesUnique . hybridGraphicsCaptureFramesUnique ) {
const screenshareFrames = hybridGraphicsCaptureFramesUnique . screenshareFrames ;
let num12 = 0 ;
if ( null != screenshareFrames ) {
num12 = screenshareFrames ;
}
const videohookFrames = hybridGraphicsCaptureFramesUnique . videohookFrames ;
let num13 = 0 ;
if ( null != videohookFrames ) {
num13 = videohookFrames ;
}
const quartzFrames = hybridGraphicsCaptureFramesUnique . quartzFrames ;
let num14 = 0 ;
const sum = num12 + num13 ;
if ( null != quartzFrames ) {
num14 = quartzFrames ;
}
const screenCaptureKitFrames = hybridGraphicsCaptureFramesUnique . screenCaptureKitFrames ;
let num15 = 0 ;
const sum1 = sum + num14 ;
if ( null != screenCaptureKitFrames ) {
num15 = screenCaptureKitFrames ;
}
const x11Frames = hybridGraphicsCaptureFramesUnique . x11Frames ;
let num16 = 0 ;
const sum2 = sum1 + num15 ;
if ( null != x11Frames ) {
num16 = x11Frames ;
}
const pipewireFrames = hybridGraphicsCaptureFramesUnique . pipewireFrames ;
let num17 = 0 ;
const sum3 = sum2 + num16 ;
if ( null != pipewireFrames ) {
num17 = pipewireFrames ;
}
let sum4 = sum3 + num17 ;
}
}
}
}
}
const hybridDxgiFramesUnique = hybridGraphicsCaptureFramesUnique . hybridDxgiFramesUnique ;
let num18 = 0 ;
if ( null != hybridDxgiFramesUnique ) {
num18 = hybridDxgiFramesUnique ;
}
const hybridGdiBitBltFramesUnique = hybridGraphicsCaptureFramesUnique . hybridGdiBitBltFramesUnique ;
let num19 = 0 ;
if ( null != hybridGdiBitBltFramesUnique ) {
num19 = hybridGdiBitBltFramesUnique ;
}
const hybridGdiPrintWindowFramesUnique = hybridGraphicsCaptureFramesUnique . hybridGdiPrintWindowFramesUnique ;
let num20 = 0 ;
const sum5 = num18 + num19 ;
if ( null != hybridGdiPrintWindowFramesUnique ) {
num20 = hybridGdiPrintWindowFramesUnique ;
}
const hybridVideohookFramesUnique = hybridGraphicsCaptureFramesUnique . hybridVideohookFramesUnique ;
let num21 = 0 ;
const sum6 = sum5 + num20 ;
if ( null != hybridVideohookFramesUnique ) {
num21 = hybridVideohookFramesUnique ;
}
hybridGraphicsCaptureFramesUnique = hybridGraphicsCaptureFramesUnique . hybridGraphicsCaptureFramesUnique ;
let num22 = 0 ;
const sum7 = sum6 + num21 ;
if ( null != hybridGraphicsCaptureFramesUnique ) {
num22 = hybridGraphicsCaptureFramesUnique ;
}
sum4 = sum7 + num22 ;
}
}
const result = obj . appendAndIncrementStats ( parseOutboundStatsResult ) ;
let tmp50 = null != ssrc . minResolutionWidth ;
if ( tmp50 ) {
tmp50 = ssrc . minResolutionWidth > 0 ;
}
if ( tmp50 ) {
tmp50 = null == obj . minWidth || ssrc . minResolutionWidth < obj . minWidth ;
const tmp51 = null == obj . minWidth || ssrc . minResolutionWidth < obj . minWidth ;
}
if ( tmp50 ) {
obj . minWidth = ssrc . minResolutionWidth ;
}
let tmp52 = null != ssrc . minResolutionHeight ;
if ( tmp52 ) {
tmp52 = ssrc . minResolutionHeight > 0 ;
}
if ( tmp52 ) {
tmp52 = null == obj . minHeight || ssrc . minResolutionHeight < obj . minHeight ;
const tmp53 = null == obj . minHeight || ssrc . minResolutionHeight < obj . minHeight ;
}
if ( tmp52 ) {
obj . minHeight = ssrc . minResolutionHeight ;
}
if ( obj . encoderCodec !== self ( arg1 [ 9 ] ) . CodecTypes . UNKNOWN ) {
set . add ( obj . encoderCodec ) ;
}
let maxBitrate ;
if ( null != found ) {
maxBitrate = found . maxBitrate ;
}
let maxFrameRate ;
if ( null != found ) {
maxFrameRate = found . maxFrameRate ;
}
let bitrateTarget = ssrc . bitrateTarget ;
if ( null == bitrateTarget ) {
const availableOutgoingBitrate = transport . availableOutgoingBitrate ;
let num25 = 0 ;
if ( null != availableOutgoingBitrate ) {
num25 = availableOutgoingBitrate ;
}
let num26 = 0 ;
if ( null != maxBitrate ) {
num26 = maxBitrate ;
}
bitrateTarget = Math . min ( num25 , num26 ) ;
}
obj . appendTargetRates ( maxFrameRate , bitrateTarget , maxBitrate , transport . availableOutgoingBitrate ) ;
const averageEncodeTime = ssrc . averageEncodeTime ;
let num27 = 0 ;
if ( null != averageEncodeTime ) {
num27 = averageEncodeTime ;
}
obj . averageEncodeTime = num27 ;
const framesDroppedRateLimiter = ssrc . framesDroppedRateLimiter ;
let tmp68 = null ;
if ( null != framesDroppedRateLimiter ) {
tmp68 = framesDroppedRateLimiter ;
}
obj . framesDroppedRateLimiter = tmp68 ;
const framesDroppedEncoderQueue = ssrc . framesDroppedEncoderQueue ;
let tmp69 = null ;
if ( null != framesDroppedEncoderQueue ) {
tmp69 = framesDroppedEncoderQueue ;
}
obj . framesDroppedEncoderQueue = tmp69 ;
const framesDroppedCongestionWindow = ssrc . framesDroppedCongestionWindow ;
let tmp70 = null ;
if ( null != framesDroppedCongestionWindow ) {
tmp70 = framesDroppedCongestionWindow ;
}
obj . framesDroppedCongestionWindow = tmp70 ;
const framesDroppedEncoder = ssrc . framesDroppedEncoder ;
let tmp71 = null ;
if ( null != framesDroppedEncoder ) {
tmp71 = framesDroppedEncoder ;
}
obj . framesDroppedEncoder = tmp71 ;
const hqSimulcastStreamEncoded = ssrc . hqSimulcastStreamEncoded ;
let tmp73 = null != hqSimulcastStreamEncoded ;
if ( tmp73 ) {
tmp73 = hqSimulcastStreamEncoded ;
}
self . hqSimulcastStreamEncoded . value = tmp73 ;
const lqSimulcastStreamEncoded = ssrc . lqSimulcastStreamEncoded ;
let tmp75 = null != lqSimulcastStreamEncoded ;
if ( tmp75 ) {
tmp75 = lqSimulcastStreamEncoded ;
}
self . lqSimulcastStreamEncoded . value = tmp75 ;
let value = self . hqSimulcastStreamEncoded . value ;
if ( value ) {
value = self . lqSimulcastStreamEncoded . value ;
}
self . bothSimulcastStreamsEncoded . value = value ;
const bandwidthLimitedResolution = ssrc . bandwidthLimitedResolution ;
let tmp79 = null != bandwidthLimitedResolution ;
if ( tmp79 ) {
tmp79 = bandwidthLimitedResolution ;
}
self . bandwidthLimitedResolution . value = tmp79 ;
const bandwidthLimitedFrameRate = ssrc . bandwidthLimitedFrameRate ;
let tmp81 = null != bandwidthLimitedFrameRate ;
if ( tmp81 ) {
tmp81 = bandwidthLimitedFrameRate ;
}
self . bandwidthLimitedFramerate . value = tmp81 ;
}
}
} ) ;
if ( ! self . paused . value ) {
const item1 = arg0 ( transport [ 10 ] ) . forEach ( transport . rtp . inbound , ( arr ) = > {
const found = arr . find ( ( type ) = > "video" === type . type ) ;
if ( null != found ) {
let obj = self . inboundStats [ arg1 ] ;
if ( null == obj ) {
const InboundStats = self ( arg1 [ 9 ] ) . InboundStats ;
const prototype = InboundStats . prototype ;
const inboundStats = new InboundStats ( self . timestampProducer ) ;
self . inboundStats [ arg1 ] = inboundStats ;
obj = inboundStats ;
}
const RawVideoStats = self ( arg1 [ 9 ] ) . RawVideoStats ;
const parseInboundStatsResult = RawVideoStats . parseInboundStats ( found , arr ) ;
const statCollectionPausedUsers = self . statCollectionPausedUsers ;
if ( ! statCollectionPausedUsers . has ( arg1 ) ) {
const result = obj . appendAndIncrementStats ( parseInboundStatsResult ) ;
obj . appendTransportStats ( transport ) ;
}
let tmp17 = null != found . minResolutionWidth ;
if ( tmp17 ) {
tmp17 = found . minResolutionWidth > 0 ;
}
if ( tmp17 ) {
tmp17 = null == obj . minWidth || found . minResolutionWidth < obj . minWidth ;
const tmp18 = null == obj . minWidth || found . minResolutionWidth < obj . minWidth ;
}
if ( tmp17 ) {
obj . minWidth = found . minResolutionWidth ;
}
let tmp19 = null != found . minResolutionHeight ;
if ( tmp19 ) {
tmp19 = found . minResolutionHeight > 0 ;
}
if ( tmp19 ) {
tmp19 = null == obj . minHeight || found . minResolutionHeight < obj . minHeight ;
const tmp20 = null == obj . minHeight || found . minResolutionHeight < obj . minHeight ;
}
if ( tmp19 ) {
obj . minHeight = found . minResolutionHeight ;
}
if ( parseInboundStatsResult . packets > 0 ) {
self . emit ( videoEntropy . FpsUpdate , arg1 , parseInboundStatsResult . framesCodec , parseInboundStatsResult . timestamp ) ;
}
if ( obj . decoderCodec !== self ( arg1 [ 9 ] ) . CodecTypes . UNKNOWN ) {
set1 . add ( obj . decoderCodec ) ;
}
if ( tmp30 ) {
obj . timeToFirstFrame = arr - obj . startTime ;
}
const tmp30 = null == obj . timeToFirstFrame && found . framesDecoded > 0 ;
}
} ) ;
const arr5 = arg0 ( transport [ 10 ] ) ;
}
if ( tmp19 ) {
if ( obj4 . areSetsEqual ( set , set1 ) ) {
self . symmetricCodecUpdates = self . symmetricCodecUpdates + 1 ;
} else {
self . asymmetricCodecUpdates = self . asymmetricCodecUpdates + 1 ;
}
const obj4 = VideoQuality ( transport [ 13 ] ) ;
}
}
} ;
items [ 27 ] = {
key : "updateSystemResourceStats" ,
value() {
const self = this ;
for ( const key10003 in this . outboundStats ) {
let tmp = key10003 ;
let obj = self . outboundStats [ key10003 ] ;
let addSystemResourcesResult = obj . addSystemResources ( ) ;
}
for ( const key10006 in self . inboundStats ) {
let tmp3 = key10006 ;
let obj2 = self . inboundStats [ key10006 ] ;
let addSystemResourcesResult1 = obj2 . addSystemResources ( ) ;
}
}
} ;
items [ 28 ] = {
key : "updateVideoEffectStats" ,
value ( rtp ) {
let found ;
if ( null != rtp ) {
const outbound = rtp . rtp . outbound ;
found = outbound . find ( ( type ) = > "video" === type . type ) ;
}
let type ;
if ( null != found ) {
type = found . type ;
}
this . videoEffectDuration . value = "video" === type && null != found . filter ;
}
} ;
return callback ( VideoQuality , items ) ;
} ( importDefault ( dependencyMap [ 14 ] ) ) ;
const result = arg1 ( dependencyMap [ 15 ] ) . fileFinishedImporting ( "lib/VideoQuality.tsx" ) ;
export const VideoQualityEvent = obj ;
export const VideoQuality = tmp2 ;