feat: Add zero-copy SharedArray type to Frame Processor Plugins (#2383)
				
					
				
			* 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)
This commit is contained in:
		| @@ -97,7 +97,8 @@ void VisionCameraProxy::removeFrameProcessor(jsi::Runtime& runtime, int viewTag) | ||||
| jsi::Value VisionCameraProxy::initFrameProcessorPlugin(jsi::Runtime& runtime, std::string name, const jsi::Object& options) { | ||||
|   NSString* key = [NSString stringWithUTF8String:name.c_str()]; | ||||
|   NSDictionary* optionsObjc = JSINSObjectConversion::convertJSIObjectToNSDictionary(runtime, options, _callInvoker); | ||||
|   FrameProcessorPlugin* plugin = [FrameProcessorPluginRegistry getPlugin:key withOptions:optionsObjc]; | ||||
|   VisionCameraProxyHolder* proxy = [[VisionCameraProxyHolder alloc] initWithProxy:this]; | ||||
|   FrameProcessorPlugin* plugin = [FrameProcessorPluginRegistry getPlugin:key withProxy:proxy withOptions:optionsObjc]; | ||||
|   if (plugin == nil) { | ||||
|     return jsi::Value::undefined(); | ||||
|   } | ||||
| @@ -145,7 +146,25 @@ jsi::Value VisionCameraProxy::get(jsi::Runtime& runtime, const jsi::PropNameID& | ||||
|   return jsi::Value::undefined(); | ||||
| } | ||||
|  | ||||
| @implementation VisionCameraProxyHolder { | ||||
|   VisionCameraProxy* _proxy; | ||||
| } | ||||
|  | ||||
| - (instancetype)initWithProxy:(void*)proxy { | ||||
|   if (self = [super init]) { | ||||
|     _proxy = (VisionCameraProxy*)proxy; | ||||
|   } | ||||
|   return self; | ||||
| } | ||||
|  | ||||
| - (VisionCameraProxy*)proxy { | ||||
|   return _proxy; | ||||
| } | ||||
|  | ||||
| @end | ||||
|  | ||||
| @implementation VisionCameraInstaller | ||||
|  | ||||
| + (BOOL)installToBridge:(RCTBridge* _Nonnull)bridge { | ||||
|   RCTCxxBridge* cxxBridge = (RCTCxxBridge*)[RCTBridge currentBridge]; | ||||
|   if (!cxxBridge.runtime) { | ||||
| @@ -160,4 +179,5 @@ jsi::Value VisionCameraProxy::get(jsi::Runtime& runtime, const jsi::PropNameID& | ||||
|  | ||||
|   return YES; | ||||
| } | ||||
|  | ||||
| @end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user