// // Created by Marc Rousavy on 21.07.23. // #pragma once #include #include #include #include #include "JFrameProcessorPlugin.h" #include "JVisionCameraScheduler.h" #include "JFrameProcessor.h" #include #include namespace vision { using namespace facebook; class JVisionCameraProxy : public jni::HybridClass { public: static void registerNatives(); void setFrameProcessor(int viewTag, const jni::alias_ref& frameProcessor); void removeFrameProcessor(int viewTag); jni::local_ref getFrameProcessorPlugin(const std::string& name, jni::local_ref options); public: std::shared_ptr getWorkletContext() { return _workletContext; } private: std::shared_ptr _workletContext; private: friend HybridBase; jni::global_ref _javaPart; static auto constexpr TAG = "VisionCameraProxy"; static auto constexpr kJavaDescriptor = "Lcom/mrousavy/camera/frameprocessor/VisionCameraProxy;"; explicit JVisionCameraProxy(const jni::alias_ref& javaThis, jsi::Runtime* jsRuntime, const std::shared_ptr& jsCallInvoker, const jni::global_ref& scheduler); static jni::local_ref initHybrid(jni::alias_ref javaThis, jlong jsRuntimePointer, jni::alias_ref jsCallInvokerHolder, const jni::alias_ref& scheduler); }; } // namespace vision