From 2f21609e394b6eac014b3b899c9053fcc91de59f Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Wed, 17 Jan 2024 18:30:26 +0100 Subject: [PATCH] feat: Add `SharedArray.getSize()` (#2406) * feat: Add `SharedArray.getSize()` * Rename `count` to `size` on iOS * `->` instead of `.` --- .../cpp/frameprocessor/java-bindings/JSharedArray.cpp | 7 +++++++ .../cpp/frameprocessor/java-bindings/JSharedArray.h | 2 ++ .../mrousavy/camera/frameprocessor/SharedArray.java | 5 +++++ package/ios/Frame Processor/SharedArray.h | 2 +- package/ios/Frame Processor/SharedArray.mm | 10 +++++----- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.cpp b/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.cpp index bba7f0c..ec0f117 100644 --- a/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.cpp +++ b/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.cpp @@ -28,6 +28,7 @@ jni::global_ref JSharedArray::wrapInByteBuffer(jsi::Runtime& r JSharedArray::JSharedArray(jsi::Runtime& runtime, std::shared_ptr array) { _array = array; _byteBuffer = wrapInByteBuffer(runtime, _array); + _size = _array->size(runtime); } JSharedArray::JSharedArray(const jni::alias_ref& javaThis, @@ -43,12 +44,14 @@ JSharedArray::JSharedArray(const jni::alias_ref& ja __android_log_print(ANDROID_LOG_INFO, TAG, "Allocating ArrayBuffer with size %i and type %i...", size, dataType); _array = std::make_shared(runtime, size, kind); _byteBuffer = wrapInByteBuffer(runtime, _array); + _size = size; } void JSharedArray::registerNatives() { registerHybrid({ makeNativeMethod("initHybrid", JSharedArray::initHybrid), makeNativeMethod("getByteBuffer", JSharedArray::getByteBuffer), + makeNativeMethod("getSize", JSharedArray::getSize), }); } @@ -56,6 +59,10 @@ jni::local_ref JSharedArray::getByteBuffer() { return jni::make_local(_byteBuffer); } +jint JSharedArray::getSize() { + return _size; +} + std::shared_ptr JSharedArray::getTypedArray() { return _array; } diff --git a/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.h b/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.h index 08fb799..8a5c3f3 100644 --- a/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.h +++ b/package/android/src/main/cpp/frameprocessor/java-bindings/JSharedArray.h @@ -23,6 +23,7 @@ public: static jni::local_ref create(jsi::Runtime& runtime, TypedArrayBase array); public: + jint getSize(); jni::local_ref getByteBuffer(); std::shared_ptr getTypedArray(); @@ -35,6 +36,7 @@ private: jni::global_ref _javaPart; jni::global_ref _byteBuffer; std::shared_ptr _array; + int _size; private: explicit JSharedArray(jsi::Runtime& runtime, std::shared_ptr array); diff --git a/package/android/src/main/java/com/mrousavy/camera/frameprocessor/SharedArray.java b/package/android/src/main/java/com/mrousavy/camera/frameprocessor/SharedArray.java index 065721b..c01541b 100644 --- a/package/android/src/main/java/com/mrousavy/camera/frameprocessor/SharedArray.java +++ b/package/android/src/main/java/com/mrousavy/camera/frameprocessor/SharedArray.java @@ -39,6 +39,11 @@ public final class SharedArray { */ public native ByteBuffer getByteBuffer(); + /** + * Gets the size of the ByteBuffer. + */ + public native int getSize(); + private native HybridData initHybrid(VisionCameraProxy proxy, int dataType, int size); /** diff --git a/package/ios/Frame Processor/SharedArray.h b/package/ios/Frame Processor/SharedArray.h index 81193ba..aafe56d 100644 --- a/package/ios/Frame Processor/SharedArray.h +++ b/package/ios/Frame Processor/SharedArray.h @@ -48,7 +48,7 @@ NS_ASSUME_NONNULL_BEGIN #endif @property(nonatomic, readonly, nonnull) uint8_t* data; -@property(nonatomic, readonly) NSInteger count; +@property(nonatomic, readonly) NSInteger size; @end diff --git a/package/ios/Frame Processor/SharedArray.mm b/package/ios/Frame Processor/SharedArray.mm index b9e0a75..39cfa1f 100644 --- a/package/ios/Frame Processor/SharedArray.mm +++ b/package/ios/Frame Processor/SharedArray.mm @@ -15,7 +15,7 @@ using namespace facebook; @implementation SharedArray { uint8_t* _data; - NSInteger _count; + NSInteger _size; std::shared_ptr _array; } @@ -29,7 +29,7 @@ vision::TypedArrayKind getTypedArrayKind(int unsafeEnumValue) { vision::TypedArrayKind kind = getTypedArrayKind((int)type); _array = std::make_shared(vision::TypedArrayBase(runtime, size, kind)); _data = _array->getBuffer(runtime).data(runtime); - _count = size; + _size = size; } return self; } @@ -38,7 +38,7 @@ vision::TypedArrayKind getTypedArrayKind(int unsafeEnumValue) { if (self = [super init]) { _array = typedArray; _data = _array->getBuffer(runtime).data(runtime); - _count = _array->getBuffer(runtime).size(runtime); + _size = _array->getBuffer(runtime).size(runtime); } return self; } @@ -51,8 +51,8 @@ vision::TypedArrayKind getTypedArrayKind(int unsafeEnumValue) { return _data; } -- (NSInteger)count { - return _count; +- (NSInteger)size { + return _size; } @end