* Rename `JImageProxyHostObject` -> `FrameHostObject` * `FrameProcessorPlugin` -> `JFrameProcessorPlugin` 1/2 * `FrameProcessorPlugin` -> `JFrameProcessorPlugin` 2/2 * Make `const` * Make `getName()` instance based * Update JFrameProcessorPlugin.h * Update JImageProxy.h * `T` * T * Remove default ctor * Use `TSelf` again * Return `local_ref<CameraView*>` instead of `CameraView*` * Make `findCameraViewById` return a raw pointer again... * Extract `setFrameProcessor` and `unsetFrameProcessor` * Use `global_ref` * Use `static_cast` for `FrameHostObject` * Update FrameProcessorRuntimeManager.cpp * Fix reference lint error * linelength * Fix `unsetFrameProcessor` call
44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
//
|
|
// Created by Marc Rousavy on 14.06.21.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <jni.h>
|
|
#include <fbjni/fbjni.h>
|
|
|
|
#include <memory>
|
|
|
|
#include "java-bindings/JImageProxy.h"
|
|
|
|
namespace vision {
|
|
|
|
using namespace facebook;
|
|
using TFrameProcessor = std::function<void(jni::alias_ref<JImageProxy::javaobject>)>;
|
|
|
|
class CameraView : public jni::HybridClass<CameraView> {
|
|
public:
|
|
static auto constexpr kJavaDescriptor = "Lcom/mrousavy/camera/CameraView;";
|
|
static auto constexpr TAG = "VisionCamera";
|
|
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
|
|
static void registerNatives();
|
|
|
|
// TODO: Use template<> to avoid heap allocation for std::function<>
|
|
void setFrameProcessor(const TFrameProcessor&& frameProcessor);
|
|
void unsetFrameProcessor();
|
|
|
|
private:
|
|
friend HybridBase;
|
|
jni::global_ref<CameraView::javaobject> javaPart_;
|
|
TFrameProcessor frameProcessor_;
|
|
|
|
void frameProcessorCallback(const jni::alias_ref<JImageProxy::javaobject>& frame);
|
|
|
|
explicit CameraView(jni::alias_ref<CameraView::jhybridobject> jThis) :
|
|
javaPart_(jni::make_global(jThis)),
|
|
frameProcessor_(nullptr)
|
|
{}
|
|
};
|
|
|
|
} // namespace vision
|