// // Created by Marc Rousavy on 14.06.21. // #pragma once #include #include #include #include "JImageProxy.h" namespace vision { using namespace facebook; using FrameProcessor = std::function)>; class CameraView : public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lcom/mrousavy/camera/CameraView;"; static auto constexpr TAG = "VisionCamera"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); // TODO: Use template<> to avoid heap allocation for std::function<> void setFrameProcessor(const FrameProcessor&& frameProcessor); void unsetFrameProcessor(); void setEnableFrameProcessor(bool enable); private: friend HybridBase; jni::global_ref javaPart_; FrameProcessor frameProcessor_; void frameProcessorCallback(const jni::alias_ref& frame); explicit CameraView(jni::alias_ref jThis) : javaPart_(jni::make_global(jThis)), frameProcessor_(nullptr) {} }; } // namespace vision