1. Change package name of Android API. (com.samsung.android.nnstreamer > org.nnsuite.nnstreamer)
2. Change directory structure (src > src/main)
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
if (nnsRoot == null)
throw new GradleException('NNSTREAMER_ROOT must be set, or "nnstreamerRoot" must be defined in your gradle.properties')
- arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets", "NNSTREAMER_ROOT=$nnsRoot"
+ arguments "NDK_APPLICATION_MK=src/main/jni/Application.mk",
+ "GSTREAMER_JAVA_SRC_DIR=src/main/java",
+ "GSTREAMER_ROOT_ANDROID=$gstRoot",
+ "GSTREAMER_ASSETS_DIR=src/main/assets",
+ "NNSTREAMER_ROOT=$nnsRoot"
targets "nnstreamer-native"
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- }
- }
}
}
externalNativeBuild {
ndkBuild {
- path 'jni/Android.mk'
+ path 'src/main/jni/Android.mk'
}
}
productFlavors {
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.samsung.android.nnstreamer" >
+ package="org.nnsuite.nnstreamer" >
<uses-feature android:glEsVersion="0x00020000"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.support.annotation.NonNull;
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.content.Context;
try {
System.loadLibrary("nnstreamer-native");
GStreamer.init(context);
- return nativeInitialize(context);
} catch (Exception e) {
e.printStackTrace();
- return false;
}
+
+ return nativeInitialize(context);
}
/**
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.support.annotation.NonNull;
* Library General Public License for more details.
*/
-package com.samsung.android.nnstreamer;
+package org.nnsuite.nnstreamer;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
pipe_info->version = (*env)->GetVersion (env);
pipe_info->instance = (*env)->NewGlobalRef (env, thiz);
- jclass cls_data = (*env)->FindClass (env, "com/samsung/android/nnstreamer/TensorsData");
+ jclass cls_data = (*env)->FindClass (env, "org/nnsuite/nnstreamer/TensorsData");
pipe_info->cls_tensors_data = (*env)->NewGlobalRef (env, cls_data);
(*env)->DeleteLocalRef (env, cls_data);
- jclass cls_info = (*env)->FindClass (env, "com/samsung/android/nnstreamer/TensorsInfo");
+ jclass cls_info = (*env)->FindClass (env, "org/nnsuite/nnstreamer/TensorsInfo");
pipe_info->cls_tensors_info = (*env)->NewGlobalRef (env, cls_info);
(*env)->DeleteLocalRef (env, cls_info);
* @brief Native method to initialize NNStreamer.
*/
jboolean
-Java_com_samsung_android_nnstreamer_NNStreamer_nativeInitialize (JNIEnv * env, jclass clazz,
+Java_org_nnsuite_nnstreamer_NNStreamer_nativeInitialize (JNIEnv * env, jclass clazz,
jobject context)
{
nns_logi ("Called native initialize.");
* @brief Native method to get the version string of NNStreamer and GStreamer.
*/
jstring
-Java_com_samsung_android_nnstreamer_NNStreamer_nativeGetVersion (JNIEnv * env, jclass clazz)
+Java_org_nnsuite_nnstreamer_NNStreamer_nativeGetVersion (JNIEnv * env, jclass clazz)
{
gchar *gst_ver = gst_version_string ();
gchar *version_str = g_strdup_printf ("NNStreamer %s, %s", VERSION, gst_ver);
jclass cls_custom = (*env)->GetObjectClass (env, pipe_info->instance);
jmethodID mid_invoke = (*env)->GetMethodID (env, cls_custom, "invoke",
- "(Lcom/samsung/android/nnstreamer/TensorsData;"
- "Lcom/samsung/android/nnstreamer/TensorsInfo;"
- "Lcom/samsung/android/nnstreamer/TensorsInfo;)"
- "Lcom/samsung/android/nnstreamer/TensorsData;");
+ "(Lorg/nnsuite/nnstreamer/TensorsData;"
+ "Lorg/nnsuite/nnstreamer/TensorsInfo;"
+ "Lorg/nnsuite/nnstreamer/TensorsInfo;)"
+ "Lorg/nnsuite/nnstreamer/TensorsData;");
obj_out_data = (*env)->CallObjectMethod (env, pipe_info->instance, mid_invoke,
obj_in_data, obj_in_info, obj_out_info);
jclass cls_custom = (*env)->GetObjectClass (env, pipe_info->instance);
jmethodID mid_info = (*env)->GetMethodID (env, cls_custom, "getOutputInfo",
- "(Lcom/samsung/android/nnstreamer/TensorsInfo;)Lcom/samsung/android/nnstreamer/TensorsInfo;");
+ "(Lorg/nnsuite/nnstreamer/TensorsInfo;)"
+ "Lorg/nnsuite/nnstreamer/TensorsInfo;");
obj_out_info = (*env)->CallObjectMethod (env, pipe_info->instance, mid_info, obj_in_info);
if (!obj_out_info || !nns_parse_tensors_info (pipe_info, env, obj_out_info, out)) {
* @brief Native method for custom filter.
*/
jlong
-Java_com_samsung_android_nnstreamer_CustomFilter_nativeInitialize (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_CustomFilter_nativeInitialize (JNIEnv * env, jobject thiz,
jstring name)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for custom filter.
*/
void
-Java_com_samsung_android_nnstreamer_CustomFilter_nativeDestroy (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_CustomFilter_nativeDestroy (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info = NULL;
/* method for sink callback */
jclass cls_pipeline = (*env)->GetObjectClass (env, pipe_info->instance);
jmethodID mid_callback = (*env)->GetMethodID (env, cls_pipeline, "newDataReceived",
- "(Ljava/lang/String;Lcom/samsung/android/nnstreamer/TensorsData;Lcom/samsung/android/nnstreamer/TensorsInfo;)V");
+ "(Ljava/lang/String;"
+ "Lorg/nnsuite/nnstreamer/TensorsData;"
+ "Lorg/nnsuite/nnstreamer/TensorsInfo;)V");
jstring sink_name = (*env)->NewStringUTF (env, cb_data->name);
(*env)->CallVoidMethod (env, pipe_info->instance, mid_callback, sink_name, obj_data, obj_info);
* @brief Native method for pipeline API.
*/
jlong
-Java_com_samsung_android_nnstreamer_Pipeline_nativeConstruct (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeConstruct (JNIEnv * env, jobject thiz,
jstring description, jboolean add_state_cb)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
void
-Java_com_samsung_android_nnstreamer_Pipeline_nativeDestroy (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeDestroy (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeStart (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeStart (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeStop (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeStop (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jint
-Java_com_samsung_android_nnstreamer_Pipeline_nativeGetState (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeGetState (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeInputData (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeInputData (JNIEnv * env, jobject thiz,
jlong handle, jstring name, jobject in)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jobjectArray
-Java_com_samsung_android_nnstreamer_Pipeline_nativeGetSwitchPads (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeGetSwitchPads (JNIEnv * env, jobject thiz,
jlong handle, jstring name)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeSelectSwitchPad (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeSelectSwitchPad (JNIEnv * env, jobject thiz,
jlong handle, jstring name, jstring pad)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeControlValve (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeControlValve (JNIEnv * env, jobject thiz,
jlong handle, jstring name, jboolean open)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeAddSinkCallback (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeAddSinkCallback (JNIEnv * env, jobject thiz,
jlong handle, jstring name)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for pipeline API.
*/
jboolean
-Java_com_samsung_android_nnstreamer_Pipeline_nativeRemoveSinkCallback (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_Pipeline_nativeRemoveSinkCallback (JNIEnv * env, jobject thiz,
jlong handle, jstring name)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for single-shot API.
*/
jlong
-Java_com_samsung_android_nnstreamer_SingleShot_nativeOpen (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_SingleShot_nativeOpen (JNIEnv * env, jobject thiz,
jstring model, jobject in, jobject out)
{
pipeline_info_s *pipe_info = NULL;
* @brief Native method for single-shot API.
*/
void
-Java_com_samsung_android_nnstreamer_SingleShot_nativeClose (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_SingleShot_nativeClose (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info;
* @brief Native method for single-shot API.
*/
jobject
-Java_com_samsung_android_nnstreamer_SingleShot_nativeInvoke (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_SingleShot_nativeInvoke (JNIEnv * env, jobject thiz,
jlong handle, jobject in)
{
pipeline_info_s *pipe_info;
* @brief Native method for single-shot API.
*/
jobject
-Java_com_samsung_android_nnstreamer_SingleShot_nativeGetInputInfo (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_SingleShot_nativeGetInputInfo (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info;
* @brief Native method for single-shot API.
*/
jobject
-Java_com_samsung_android_nnstreamer_SingleShot_nativeGetOutputInfo (JNIEnv * env, jobject thiz,
+Java_org_nnsuite_nnstreamer_SingleShot_nativeGetOutputInfo (JNIEnv * env, jobject thiz,
jlong handle)
{
pipeline_info_s *pipe_info;
pushd ./build_android_lib
-tar xJf ./ext-files/tensorflow-lite-$nnstreamer_tf_lite_ver.tar.xz -C ./api/jni
+tar xJf ./ext-files/tensorflow-lite-$nnstreamer_tf_lite_ver.tar.xz -C ./api/src/main/jni
sed -i "s|abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'|abiFilters $nnstreamer_target_abi|" api/build.gradle
nnstreamer_android_api_lib=./api/build/outputs/aar/api-release.aar
# Build Android library.
-./gradlew api:assembleRelease
+./gradlew api:build
# Check if build procedure is done.
if [[ -e $nnstreamer_android_api_lib ]]; then
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.samsung.android.nnstreamer.sample">
+ package="org.nnsuite.nnstreamer.sample">
<application
android:allowBackup="true"
-package com.samsung.android.nnstreamer.sample;
+package org.nnsuite.nnstreamer.sample;
import android.Manifest;
import android.app.Activity;
import android.support.v4.content.ContextCompat;
import android.util.Log;
-import com.samsung.android.nnstreamer.CustomFilter;
-import com.samsung.android.nnstreamer.NNStreamer;
-import com.samsung.android.nnstreamer.Pipeline;
-import com.samsung.android.nnstreamer.SingleShot;
-import com.samsung.android.nnstreamer.TensorsData;
-import com.samsung.android.nnstreamer.TensorsInfo;
+import org.nnsuite.nnstreamer.CustomFilter;
+import org.nnsuite.nnstreamer.NNStreamer;
+import org.nnsuite.nnstreamer.Pipeline;
+import org.nnsuite.nnstreamer.SingleShot;
+import org.nnsuite.nnstreamer.TensorsData;
+import org.nnsuite.nnstreamer.TensorsInfo;
import java.io.File;
import java.nio.ByteBuffer;
@Override
public void onFinish() {
/* run the examples repeatedly */
- if (exampleRun > 15) {
+ if (exampleRun > 5) {
Log.d(TAG, "Stop timer to run example");
if (isFailed) {