// // ViewController.swift // ReplayKitExample // // Copyright © 2018-2019 Twilio. All rights reserved. // import AVKit import UIKit import ReplayKit import SafariServices import TwilioVideo import UniformTypeIdentifiers class ViewController: UIViewController { // MARK: Storyboards Connections emre private lazy var sampleHandler = SampleHandler() @objc func runModel(onPixelBuffer pixelBuffer: CVPixelBuffer) { // Run the live camera pixelBuffer through tensorFlow to get the result let currentTimeMs = Date().timeIntervalSince1970 * 1000 guard (currentTimeMs - previousInferenceTimeMs) >= delayBetweenInferencesMs else { return } previousInferenceTimeMs = currentTimeMs result = self.modelDataHandler?.runModel(onFrame: pixelBuffer) guard let displayResult = result else { return } let width = CVPixelBufferGetWidth(pixelBuffer) let height = CVPixelBufferGetHeight(pixelBuffer) DispatchQueue.main.async { // Display results by handing off to the InferenceViewController self.inferenceViewController?.resolution = CGSize(width: width, height: height) var inferenceTime: Double = 0 if let resultInferenceTime = self.result?.inferenceTime { inferenceTime = resultInferenceTime } self.inferenceViewController?.inferenceTime = inferenceTime self.inferenceViewController?.tableView.reloadData() // Draws the bounding boxes and displays class names and confidence scores. self.drawAfterPerformingCalculations(onInferences: displayResult.inferences, withImageSize: CGSize(width: CGFloat(width), height: CGFloat(height))) } } override func viewDidLoad() { super.viewDidLoad() sampleHandler.delegate = self } // MARK: SampleHandlerDelegate Methods extension ViewController: SampleHandlerDelegate { func didOutput(pixelBuffer: CVPixelBuffer) { runModel(onPixelBuffer: pixelBuffer) } } }