in ios/AmazonIvsView.swift [322:357]
func addPlayerObserver() {
playerObserverToken = player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) {
[weak self] time in
if self?.lastLiveLatency != self?.player.liveLatency.seconds {
if let liveLatency = self?.player.liveLatency.seconds {
let parsedValue = 1000*liveLatency
self?.onLiveLatencyChange?(["liveLatency": parsedValue])
} else {
self?.onLiveLatencyChange?(["liveLatency": NSNull()])
}
self?.lastLiveLatency = self?.player.liveLatency.seconds
}
if
self?.lastBitrate != self?.player.videoBitrate ||
self?.lastDuration != self?.player.duration ||
self?.lastFramesDecoded != self?.player.videoFramesDecoded ||
self?.lastFramesDropped != self?.player.videoFramesDropped ||
self?.onVideoStatistics != nil {
let videoData: [String: Any] = [
"duration": self?.getDuration(self!.player.duration) ?? NSNull(),
"bitrate": self?.player.videoBitrate ?? NSNull(),
"framesDropped": self?.player.videoFramesDropped ?? NSNull(),
"framesDecoded": self?.player.videoFramesDecoded ?? NSNull()
]
self?.onVideoStatistics?(["videoData": videoData])
self?.lastBitrate = self?.player.videoBitrate
self?.lastDuration = self?.player.duration
self?.lastFramesDropped = self?.player.videoFramesDropped
self?.lastFramesDecoded = self?.player.videoFramesDecoded
}
}
}