diff --git a/mediapipe/modules/render_queue/BUILD b/mediapipe/modules/render_queue/BUILD index 4a4d09fe8..8182bc9da 100644 --- a/mediapipe/modules/render_queue/BUILD +++ b/mediapipe/modules/render_queue/BUILD @@ -1,3 +1,5 @@ +load("@build_bazel_rules_apple//apple:ios.bzl", "ios_framework") + cc_library( name = "ios_olarender", srcs = [ @@ -31,3 +33,58 @@ cc_library( }), ) + + +objc_library( + name = "OlaRenderLibrary", + srcs = [ + "OlaRenderManager.mm", + "image_queue.cpp", + "image.cpp", + ], + hdrs = [ + "OlaRenderManager.h", + "image_queue.h", + "image.h", + "LockFreeQueue.h", + ], + visibility = ["//visibility:public"], + deps = [ + "//mediapipe/modules/render_queue:ios_olarender", + ], + copts = select({ + "//mediapipe:apple": [ + "-x objective-c++", + "-fobjc-arc", # enable reference-counting + ], + "//conditions:default": [], + }), + sdk_frameworks = [ + "AVFoundation", + "CoreGraphics", + "CoreMedia", + "OpenGLES", + "CoreVideo", + "IOSurface", + "Foundation", + "UIKit", + ], +) + + +ios_framework( + name = "OlaRenderFramework", + hdrs = [ + "OlaRenderManager.h", + "image.h", + "image_queue.h", + "LockFreeQueue.h", + ], + infoplists = ["Info.plist"], + bundle_id = "com.ola.dartrenderplugin", + families = ["iphone", "ipad"], + minimum_os_version = "11.0", + deps = [ + "//mediapipe/modules/render_queue:OlaRenderLibrary", + ], +) diff --git a/mediapipe/modules/render_queue/ios/Info.plist b/mediapipe/modules/render_queue/Info.plist similarity index 100% rename from mediapipe/modules/render_queue/ios/Info.plist rename to mediapipe/modules/render_queue/Info.plist diff --git a/mediapipe/modules/render_queue/ios/OlaRenderManager.h b/mediapipe/modules/render_queue/OlaRenderManager.h similarity index 100% rename from mediapipe/modules/render_queue/ios/OlaRenderManager.h rename to mediapipe/modules/render_queue/OlaRenderManager.h diff --git a/mediapipe/modules/render_queue/ios/OlaRenderManager.mm b/mediapipe/modules/render_queue/OlaRenderManager.mm similarity index 100% rename from mediapipe/modules/render_queue/ios/OlaRenderManager.mm rename to mediapipe/modules/render_queue/OlaRenderManager.mm diff --git a/mediapipe/modules/render_queue/RenderJni.cpp b/mediapipe/modules/render_queue/RenderJni.cpp new file mode 100644 index 000000000..c675c0847 --- /dev/null +++ b/mediapipe/modules/render_queue/RenderJni.cpp @@ -0,0 +1,45 @@ +// +// Created by Felix Wang on 2022/6/29. +// + +#include +#include +#include "OlaRender.hpp" +#include "image_queue.h" + + +#include +#include + +#define TAG "ImageQueue-jni" // 这个是自定义的LOG的标识 +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__) // 定义LOGI类型 +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__) // 定义LOGE类型 + + +extern "C" +JNIEXPORT jlong JNICALL +Java_com_weatherfish_render_RenderJni_create(JNIEnv *env, jobject thiz) { + auto *render = OLARender::OlaRender::create(); + return reinterpret_cast(render); +} + +extern "C" +JNIEXPORT jint JNICALL +Java_com_weatherfish_render_RenderJni_render(JNIEnv *env, jobject thiz, jlong render_context, jint texture_id, + jint width, jint height, jlong timestamp, jboolean exportFlag) { + auto *render = reinterpret_cast(render_context); + OLARender::TextureInfo info; + info.textureId = texture_id; + info.width = width; + info.height = height; + info.frameTime = timestamp; + auto res = render->render(info, exportFlag); + return res.textureId; +} + +extern "C" +JNIEXPORT void JNICALL +Java_com_weatherfish_render_RenderJni_release(JNIEnv *env, jobject thiz, jlong renderId) { + auto *render = reinterpret_cast(renderId); + render->release(); +} diff --git a/mediapipe/modules/render_queue/ios/BUILD b/mediapipe/modules/render_queue/ios/BUILD deleted file mode 100644 index 5c379b9bf..000000000 --- a/mediapipe/modules/render_queue/ios/BUILD +++ /dev/null @@ -1,41 +0,0 @@ -load("@build_bazel_rules_apple//apple:ios.bzl", "ios_framework") - -objc_library( - name = "OlaRenderLibrary", - srcs = ["OlaRenderManager.mm"], - hdrs = ["OlaRenderManager.h"], - visibility = ["//visibility:public"], - deps = [ - "//mediapipe/modules/render_queue:ios_olarender", - ], - copts = select({ - "//mediapipe:apple": [ - "-x objective-c++", - "-fobjc-arc", # enable reference-counting - ], - "//conditions:default": [], - }), - sdk_frameworks = [ - "AVFoundation", - "CoreGraphics", - "CoreMedia", - "OpenGLES", - "CoreVideo", - "IOSurface", - "Foundation", - "UIKit", - ], -) - - -ios_framework( - name = "OlaRenderFramework", - hdrs = ["OlaRenderManager.h"], - infoplists = ["Info.plist"], - bundle_id = "com.ola.dartrenderplugin", - families = ["iphone", "ipad"], - minimum_os_version = "11.0", - deps = [ - "//mediapipe/modules/render_queue/ios:OlaRenderLibrary", - ], -)