58 lines
1.5 KiB
Swift
58 lines
1.5 KiB
Swift
|
//
|
||
|
// CameraView+Preview.swift
|
||
|
// VisionCamera
|
||
|
//
|
||
|
// Created by Marc Rousavy on 20.07.23.
|
||
|
// Copyright © 2023 mrousavy. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import AVFoundation
|
||
|
import Foundation
|
||
|
|
||
|
extension CameraView {
|
||
|
#if VISION_CAMERA_ENABLE_SKIA
|
||
|
@objc
|
||
|
func getSkiaRenderer() -> SkiaRenderer {
|
||
|
if skiaRenderer == nil {
|
||
|
skiaRenderer = SkiaRenderer()
|
||
|
}
|
||
|
return skiaRenderer!
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
public func setupPreviewView() {
|
||
|
if previewType == "skia" {
|
||
|
// Skia Preview View allows user to draw onto a Frame in a Frame Processor
|
||
|
#if VISION_CAMERA_ENABLE_SKIA
|
||
|
if previewView is SkiaPreviewView { return }
|
||
|
previewView?.removeFromSuperview()
|
||
|
previewView = SkiaPreviewView(frame: frame, skiaRenderer: getSkiaRenderer())
|
||
|
#else
|
||
|
invokeOnError(.system(.skiaUnavailable))
|
||
|
return
|
||
|
#endif
|
||
|
} else {
|
||
|
// Normal iOS PreviewView is lighter and more performant (YUV Format, GPU only)
|
||
|
if previewView is NativePreviewView { return }
|
||
|
previewView?.removeFromSuperview()
|
||
|
previewView = NativePreviewView(frame: frame, session: captureSession)
|
||
|
}
|
||
|
|
||
|
addSubview(previewView!)
|
||
|
}
|
||
|
|
||
|
internal func setupFpsGraph() {
|
||
|
#if DEBUG
|
||
|
if enableFpsGraph {
|
||
|
if fpsGraph != nil { return }
|
||
|
fpsGraph = RCTFPSGraph(frame: CGRect(x: 10, y: 54, width: 75, height: 45), color: .red)
|
||
|
fpsGraph!.layer.zPosition = 9999.0
|
||
|
addSubview(fpsGraph!)
|
||
|
} else {
|
||
|
fpsGraph?.removeFromSuperview()
|
||
|
fpsGraph = nil
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
}
|