| 
									
										
										
										
											2023-10-03 11:33:48 +02:00
										 |  |  | // | 
					
						
							|  |  |  | //  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 { | 
					
						
							| 
									
										
										
										
											2024-01-12 16:00:36 +01:00
										 |  |  |   public override init(proxy: VisionCameraProxyHolder, options: [AnyHashable: Any]! = [:]) { | 
					
						
							|  |  |  |     super.init(proxy: proxy, options: options) | 
					
						
							| 
									
										
										
										
											2023-10-19 10:35:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-19 11:19:47 +02:00
										 |  |  |     print("ExampleSwiftFrameProcessorPlugin initialized with options: \(String(describing: options))") | 
					
						
							| 
									
										
										
										
											2023-10-19 10:35:14 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 11:33:48 +02:00
										 |  |  |   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 |