HuggingSnap/Camera/FrameManager.swift (35 lines of code) (raw):

//// //// ContentView.swift //// HuggingSnap //// //// Created by Cyril Zakka on 2/11/25. //// import AVFoundation class FrameManager: NSObject, ObservableObject { static let shared = FrameManager() @Published var current: CVPixelBuffer? @Published var isStreamingPaused: Bool = false let videoOutputQueue = DispatchQueue( label: "com.raywenderlich.VideoOutputQ", qos: .userInitiated, attributes: [], autoreleaseFrequency: .workItem) private override init() { super.init() CameraManager.shared.set(self, queue: videoOutputQueue) setupSubscriptions() } private func setupSubscriptions() { CameraManager.shared.$isStreamingPaused .receive(on: RunLoop.main) .assign(to: &$isStreamingPaused) } } extension FrameManager: AVCaptureVideoDataOutputSampleBufferDelegate { func captureOutput( _ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection ) { guard !isStreamingPaused else { return } if let buffer = sampleBuffer.imageBuffer { DispatchQueue.main.async { self.current = buffer } } } }