* feat: Create `TypedArray` class for Frame Processor Plugins * Type * feat: Pass `VisionCameraProxy` along (BREAKING) * feat: Finish implementation * Log a bit * feat: Successfully convert JSI <> JNI buffers * Wrap buffer * fix: Fix using wrong Runtime * feat: Add docs * add zero copy example * Format C++ * Create iOS base * feat: Finish iOS implementation * chore: Format * fix: Use `NSData` instead of `NSMutableData` * Format * fix: Fix build when Frame Processors are disabled * chore: Rename `TypedArray` to `SharedArray` * fix: Fix Swift typings for Array * Remove a few default inits * fix: Fix Android build * fix: Use `NSInteger` * Update SharedArray.mm * fix: Expose bytes directly on iOS (NSData was immutable)
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
| //
 | |
| //  ExampleSwiftFrameProcessor.swift
 | |
| //  VisionCameraExample
 | |
| //
 | |
| //  Created by Mateusz Medrek on 02/10/2023.
 | |
| //
 | |
| 
 | |
| #if VISION_CAMERA_ENABLE_FRAME_PROCESSORS
 | |
| import VisionCamera
 | |
| 
 | |
| // Example for a Swift Frame Processor plugin
 | |
| @objc(ExampleSwiftFrameProcessorPlugin)
 | |
| public class ExampleSwiftFrameProcessorPlugin: FrameProcessorPlugin {
 | |
|   public override init(proxy: VisionCameraProxyHolder, options: [AnyHashable: Any]! = [:]) {
 | |
|     super.init(proxy: proxy, options: options)
 | |
| 
 | |
|     print("ExampleSwiftFrameProcessorPlugin initialized with options: \(String(describing: options))")
 | |
|   }
 | |
| 
 | |
|   public override func callback(_ frame: Frame, withArguments arguments: [AnyHashable: Any]?) -> Any? {
 | |
|     let imageBuffer = CMSampleBufferGetImageBuffer(frame.buffer)
 | |
| 
 | |
|     if let arguments, let imageBuffer {
 | |
|       let width = CVPixelBufferGetWidth(imageBuffer)
 | |
|       let height = CVPixelBufferGetHeight(imageBuffer)
 | |
|       let count = arguments.count
 | |
| 
 | |
|       print(
 | |
|         "ExampleSwiftPlugin: \(width) x \(height) Image. Logging \(count) parameters:"
 | |
|       )
 | |
| 
 | |
|       for key in arguments.keys {
 | |
|         let value = arguments[key]
 | |
|         let valueString = String(describing: value)
 | |
|         let valueClassString = String(describing: value.self)
 | |
|         print("ExampleSwiftPlugin:   -> \(valueString) (\(valueClassString))")
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return [
 | |
|       "example_str": "SwiftTest",
 | |
|       "example_bool": false,
 | |
|       "example_double": 6.7,
 | |
|       "example_array": ["Good bye", false, 21.37]
 | |
|     ]
 | |
|   }
 | |
| }
 | |
| #endif
 |