func addPlayerObserver()

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
            }
        }
    }