* 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.7 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  FrameProcessorPluginRegistry.m
 | |
| //  VisionCamera
 | |
| //
 | |
| //  Created by Marc Rousavy on 24.03.21.
 | |
| //  Copyright © 2021 mrousavy. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "FrameProcessorPluginRegistry.h"
 | |
| #import <Foundation/Foundation.h>
 | |
| 
 | |
| @implementation FrameProcessorPluginRegistry
 | |
| 
 | |
| + (NSMutableDictionary<NSString*, PluginInitializerFunction>*)frameProcessorPlugins {
 | |
|   static NSMutableDictionary<NSString*, PluginInitializerFunction>* plugins = nil;
 | |
|   if (plugins == nil) {
 | |
|     plugins = [[NSMutableDictionary alloc] init];
 | |
|   }
 | |
|   return plugins;
 | |
| }
 | |
| 
 | |
| + (void)addFrameProcessorPlugin:(NSString*)name withInitializer:(PluginInitializerFunction)pluginInitializer {
 | |
|   BOOL alreadyExists = [[FrameProcessorPluginRegistry frameProcessorPlugins] valueForKey:name] != nil;
 | |
|   NSAssert(!alreadyExists,
 | |
|            @"Tried to add a Frame Processor Plugin with a name that already exists! Either choose "
 | |
|            @"unique names, or "
 | |
|            @"remove the unused plugin. Name: %@",
 | |
|            name);
 | |
| 
 | |
|   [[FrameProcessorPluginRegistry frameProcessorPlugins] setValue:pluginInitializer forKey:name];
 | |
|   NSLog(@"Successfully registered Frame Processor Plugin \"%@\"!", name);
 | |
| }
 | |
| 
 | |
| + (FrameProcessorPlugin*)getPlugin:(NSString* _Nonnull)name
 | |
|                          withProxy:(VisionCameraProxyHolder* _Nonnull)proxy
 | |
|                        withOptions:(NSDictionary* _Nullable)options {
 | |
|   NSLog(@"Looking up Frame Processor Plugin \"%@\"...", name);
 | |
|   PluginInitializerFunction initializer = [[FrameProcessorPluginRegistry frameProcessorPlugins] objectForKey:name];
 | |
|   if (initializer == nil) {
 | |
|     NSLog(@"Frame Processor Plugin \"%@\" does not exist!", name);
 | |
|     return nil;
 | |
|   }
 | |
| 
 | |
|   NSLog(@"Frame Processor Plugin \"%@\" found! Initializing...", name);
 | |
|   return initializer(proxy, options);
 | |
| }
 | |
| 
 | |
| @end
 |