Commit 3c2078c96eb38fcab861c124eb024126b4968a9f
1 parent
8af3795e
原版jni
Showing
3 changed files
with
1008 additions
and
87 deletions
src/Makefile deleted
1 | -XX = g++ | ||
2 | - | ||
3 | - | ||
4 | -PROJECT_ROOT= /data1/cmhu/vpt_ascend | ||
5 | - | ||
6 | -DEPEND_DIR = $(PROJECT_ROOT)/bin | ||
7 | -SRC_ROOT = $(PROJECT_ROOT)/src | ||
8 | - | ||
9 | -TARGET= $(PROJECT_ROOT)/bin/vpt_proj | ||
10 | - | ||
11 | -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty | ||
12 | -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release | ||
13 | -OPENCV_ROOT = $(THIRDPARTY_ROOT)/opencv-4.5.4/release | ||
14 | -JSON_ROOT = $(THIRDPARTY_ROOT)/jsoncpp-1.9.5/release | ||
15 | -FFMPEG_ROOT = $(THIRDPARTY_ROOT)/ffmpeg-4.2.2/release | ||
16 | - | ||
17 | -DEFS = -DENABLE_DVPP_INTERFACE | ||
18 | - | ||
19 | -include_dir=-I/usr/local/Ascend/ascend-toolkit/6.3.RC1/x86_64-linux/include \ | ||
20 | - -I $(SPDLOG_ROOT)/include \ | ||
21 | - -I $(SRC_ROOT)/common \ | ||
22 | - -I $(OPENCV_ROOT)/include/opencv4 \ | ||
23 | - -I $(JSON_ROOT)/include \ | ||
24 | - -I $(FFMPEG_ROOT)/include \ | ||
25 | - | ||
26 | -lib_dir=-L/usr/local/Ascend/ascend-toolkit/6.3.RC1/runtime/lib64 \ | ||
27 | - -L/usr/local/Ascend/ascend-toolkit/latest/lib64 \ | ||
28 | - -L/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64 \ | ||
29 | - -L/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64 \ | ||
30 | - -L/usr/local/Ascend/ascend-toolkit/6.3.RC1/runtime/lib64/stub \ | ||
31 | - | ||
32 | -lib=-lacl_dvpp -lascendcl -lacl_dvpp_mpi -lruntime -lascendalog -lc_sec -lmsprofiler -lgert -lmmpa -lascend_hal -lexe_graph -lge_executor -lgraph -lprofapi -lascend_protobuf -lerror_manager -lopencv_dnn -lopencv_calib3d -lhybrid_executor -lregister -ldavinci_executor -lge_common -lge_common_base \ | ||
33 | - -lplatform -lgraph_base -lqos_manager | ||
34 | - | ||
35 | -LIBS= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \ | ||
36 | - -L $(DEPEND_DIR) -lvpt_det -lsycheck \ | ||
37 | - -L $(OPENCV_ROOT)/lib -lopencv_video -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_features2d -lopencv_flann\ | ||
38 | - -L $(JSON_ROOT)/lib -ljsoncpp \ | ||
39 | - -L $(FFMPEG_ROOT)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ | ||
40 | - | ||
41 | -CXXFLAGS= -g -O0 -fPIC $(include_dir) $(lib_dir) $(lib) $(LIBS) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wall -Wno-deprecated -Wdeprecated-declarations -Wl,-Bsymbolic -ldl | ||
42 | - | ||
43 | - | ||
44 | - | ||
45 | -SRCS:=$(wildcard $(SRC_ROOT)/ai_platform/*.cpp) \ | ||
46 | - $(wildcard $(SRC_ROOT)/decoder/interface/*.cpp) \ | ||
47 | - $(wildcard $(SRC_ROOT)/decoder/dvpp/*.cpp) \ | ||
48 | - $(wildcard $(SRC_ROOT)/demo/*.cpp) \ | ||
49 | - $(wildcard $(SRC_ROOT)/ai_engine_module/sort/*.cpp) \ | ||
50 | - $(wildcard $(SRC_ROOT)/ai_engine_module/*.cpp) \ | ||
51 | - $(wildcard $(SRC_ROOT)/util/*.cpp) \ | ||
52 | - $(wildcard $(SRC_ROOT)/reprocessing_module/*.cpp) \ | ||
53 | - | ||
54 | -OBJS = $(patsubst %.cpp, %.o, $(notdir $(SRCS))) | ||
55 | - | ||
56 | - | ||
57 | -$(TARGET):$(OBJS) | ||
58 | - rm -f $(TARGET) | ||
59 | - $(XX) -o $@ $^ $(CXXFLAGS) | ||
60 | - rm -f *.o | ||
61 | - | ||
62 | -%.o:$(SRC_ROOT)/decoder/dvpp/%.cpp | ||
63 | - $(XX) $(CXXFLAGS) -c $< | ||
64 | - | ||
65 | -%.o:$(SRC_ROOT)/decoder/interface/%.cpp | ||
66 | - $(XX) $(CXXFLAGS) -c $< | ||
67 | - | ||
68 | -%.o:$(SRC_ROOT)/ai_platform/%.cpp | ||
69 | - $(XX) $(CXXFLAGS) -c $< | ||
70 | - | ||
71 | -%.o:$(SRC_ROOT)/ai_engine_module/sort/%.cpp | ||
72 | - $(XX) $(CXXFLAGS) -c $< | ||
73 | - | ||
74 | -%.o:$(SRC_ROOT)/ai_engine_module/%.cpp | ||
75 | - $(XX) $(CXXFLAGS) -c $< | ||
76 | - | ||
77 | -%.o:$(SRC_ROOT)/demo/%.cpp | ||
78 | - $(XX) $(CXXFLAGS) -c $< | ||
79 | - | ||
80 | -%.o:$(SRC_ROOT)/util/%.cpp | ||
81 | - $(XX) $(CXXFLAGS) -c $< | ||
82 | - | ||
83 | -%.o:$(SRC_ROOT)/reprocessing_module/%.cpp | ||
84 | - $(XX) $(CXXFLAGS) -c $< | ||
85 | - | ||
86 | -clean: | ||
87 | - rm -f *.o $(TARGET) | ||
88 | \ No newline at end of file | 0 | \ No newline at end of file |
src/tsl_aiplatform_jni/AiEngineNativeInterface.cpp
0 → 100644
1 | +#include "com_objecteye_nativeinterface_TSLAiEngineNativeInterface.h" | ||
2 | +#include "header.h" | ||
3 | +#include "iostream" | ||
4 | +#include "stl_aiplatform.h" | ||
5 | +#include "sy_common.h" | ||
6 | +#include "sy_errorinfo.h" | ||
7 | +#include <map> | ||
8 | +#include <string.h> | ||
9 | +using namespace std; | ||
10 | + | ||
11 | +/** | ||
12 | + * */ | ||
13 | +JavaVM *g_jvm = NULL; | ||
14 | +jclass g_jcls_vptdtJavaCallBack; //callback函数的class | ||
15 | +jobject g_obj_vptdtJavaCallBack; //callback函数的obj | ||
16 | + | ||
17 | +ai_log_level getLogLevel(int logLevel); | ||
18 | + | ||
19 | +/* | ||
20 | + * Class: com_objecteye_nativeinterface_AiEngineNativeInterface | ||
21 | + * Method: load | ||
22 | + * Signature: ()I | ||
23 | + */ | ||
24 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_load(JNIEnv *env, jclass jcls) { | ||
25 | + printf("strat VPTDTJNI_load \n"); | ||
26 | + int ret = env->GetJavaVM(&g_jvm); | ||
27 | + if (ret == 0) { | ||
28 | + JNIEnv *g_env; | ||
29 | + int getEnvStatus = g_jvm->GetEnv((void **)&g_env, JNI_VERSION_1_8); | ||
30 | + if (getEnvStatus == JNI_OK){ | ||
31 | + printf(" GetEnv successed \n"); | ||
32 | + g_jcls_vptdtJavaCallBack = (jclass)env->NewGlobalRef(env->FindClass("com/objecteye/vehicle/vptdtJavaCallBack")); | ||
33 | + printf(" NewGlobalRef successed \n"); | ||
34 | + jmethodID mid_vptdtJavaCallBack = env->GetMethodID(g_jcls_vptdtJavaCallBack, "<init>", "()V"); | ||
35 | + printf(" GetMethodID successed \n"); | ||
36 | + g_obj_vptdtJavaCallBack = env->NewGlobalRef(env->NewObject(g_jcls_vptdtJavaCallBack, mid_vptdtJavaCallBack)); | ||
37 | + } | ||
38 | + ret = getEnvStatus; | ||
39 | + } | ||
40 | + printf("end VPTDTJNI_load \n"); | ||
41 | + return ret; | ||
42 | +} | ||
43 | + | ||
44 | +/* | ||
45 | + * Class: com_objecteye_nativeinterface_AiEngineNativeInterface | ||
46 | + * Method: init | ||
47 | + * Signature: ([Ljava/lang/Long;Lcom/objecteye/pojo/ruijin/AiEngineParam;)I | ||
48 | + */ | ||
49 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_init(JNIEnv *env, jobject obj, | ||
50 | + jlongArray handleArray, | ||
51 | + jobject aiEngineParam) { | ||
52 | + | ||
53 | + // getFieldID | ||
54 | + jclass cls_aiEngineParam = env->GetObjectClass(aiEngineParam); | ||
55 | + jfieldID fid_aiEngineParam_gpuid = env->GetFieldID(cls_aiEngineParam, "gpuID", "I"); | ||
56 | + jfieldID fid_aiEngineParam_sipServerPort = env->GetFieldID(cls_aiEngineParam, "sipServerPort", "I"); | ||
57 | + jfieldID fid_aiEngineParam_trtSerializeFileFolder = env->GetFieldID(cls_aiEngineParam, "trtSerializeFileFolder", "Ljava/lang/String;"); | ||
58 | + jfieldID fid_aiEngineParam_modelsDir = env->GetFieldID(cls_aiEngineParam, "modelsDir", "Ljava/lang/String;"); | ||
59 | + jfieldID fid_aiEngineParam_logLevel = env->GetFieldID(cls_aiEngineParam, "logLevel", "I"); | ||
60 | + jfieldID fid_aiEngineParam_logPath = env->GetFieldID(cls_aiEngineParam, "logPath", "Ljava/lang/String;"); | ||
61 | + jfieldID fid_aiEngineParam_logDays = env->GetFieldID(cls_aiEngineParam, "logDays", "I"); | ||
62 | + jfieldID fid_aiEngineParam_logMem = env->GetFieldID(cls_aiEngineParam, "logMem", "D"); | ||
63 | + | ||
64 | + | ||
65 | + // getObjectField | ||
66 | + jint aiEngineParam_gpuid = env->GetIntField(aiEngineParam, fid_aiEngineParam_gpuid); | ||
67 | + jint aiEngineParam_sipServerPort = env->GetIntField(aiEngineParam, fid_aiEngineParam_sipServerPort); | ||
68 | + jstring str_aiEngineParam_trtSerializeFileFolder = | ||
69 | + (jstring)env->GetObjectField(aiEngineParam, fid_aiEngineParam_trtSerializeFileFolder); | ||
70 | + const char *aiEngineParam_trtSerializeFileFolder = | ||
71 | + env->GetStringUTFChars(str_aiEngineParam_trtSerializeFileFolder, JNI_FALSE); | ||
72 | + jstring str_aiEngineParam_modelsDir = | ||
73 | + (jstring)env->GetObjectField(aiEngineParam, fid_aiEngineParam_modelsDir); | ||
74 | + const char *aiEngineParam_modelsDir = | ||
75 | + env->GetStringUTFChars(str_aiEngineParam_modelsDir, JNI_FALSE); | ||
76 | + | ||
77 | + // log | ||
78 | + jstring str_aiEngineParam_logPath = (jstring)env->GetObjectField(aiEngineParam, fid_aiEngineParam_logPath); | ||
79 | + const char *aiEngineParam_logPath = env->GetStringUTFChars(str_aiEngineParam_logPath, JNI_FALSE); | ||
80 | + | ||
81 | + jint aiEngineParam_logDays = env->GetIntField(aiEngineParam, fid_aiEngineParam_logDays); | ||
82 | + jdouble aiEngineParam_logMem = env->GetDoubleField(aiEngineParam, fid_aiEngineParam_logMem); | ||
83 | + jint aiEngineParam_logLevel = env->GetIntField(aiEngineParam, fid_aiEngineParam_logLevel); | ||
84 | + | ||
85 | + // jobject to c++ | ||
86 | + void *aiEngineHandle = nullptr; | ||
87 | + | ||
88 | + tsl_aiplatform_param mAiEngineParam; | ||
89 | + mAiEngineParam.gpuid = aiEngineParam_gpuid; | ||
90 | + mAiEngineParam.sip_server_port= aiEngineParam_sipServerPort; | ||
91 | + mAiEngineParam.trt_serialize_file = (char *)aiEngineParam_trtSerializeFileFolder; | ||
92 | + mAiEngineParam.models_dir = (char *)aiEngineParam_modelsDir; | ||
93 | + | ||
94 | + mAiEngineParam.log_level = getLogLevel(aiEngineParam_logLevel); | ||
95 | + mAiEngineParam.log_path = (char *)aiEngineParam_logPath; | ||
96 | + mAiEngineParam.log_days = aiEngineParam_logDays; | ||
97 | + mAiEngineParam.log_mem = aiEngineParam_logMem; | ||
98 | + | ||
99 | + printf("-- *************** Summary **********************.\n"); | ||
100 | + printf("-- sip server port:%d \n", (int)aiEngineParam_sipServerPort); | ||
101 | + printf("-- [logger]\n"); | ||
102 | + printf("-- level :%d(int)\n", (int)aiEngineParam_logLevel); | ||
103 | + printf("-- path :%s(str)\n", (char *)aiEngineParam_logPath); | ||
104 | + printf("-- kp :%d(int)\n", (int)aiEngineParam_logDays); | ||
105 | + printf("-- mem :%d(int)\n", (int)aiEngineParam_logMem); | ||
106 | + printf("-- **********************************************.\n"); | ||
107 | + | ||
108 | + | ||
109 | + // init | ||
110 | + int ret = tsl_aiplatform_init(&aiEngineHandle, mAiEngineParam); | ||
111 | + if (ret == 0) { | ||
112 | + jlong temp[1]; | ||
113 | + temp[0] = (jlong)aiEngineHandle; | ||
114 | + env->SetLongArrayRegion(handleArray, 0, 1, temp); | ||
115 | + } | ||
116 | + env->ReleaseStringUTFChars(str_aiEngineParam_trtSerializeFileFolder, aiEngineParam_trtSerializeFileFolder); | ||
117 | + env->ReleaseStringUTFChars(str_aiEngineParam_logPath, aiEngineParam_logPath); | ||
118 | + | ||
119 | + return ret; | ||
120 | +} | ||
121 | + | ||
122 | +jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_addMqConn(JNIEnv *env, jobject thisObject, | ||
123 | + jlong handle, jint task_type, | ||
124 | + jobject rabbitmq_conn) { | ||
125 | + // rabbitmq | ||
126 | + jclass cls_rabbitmq_conn = env->GetObjectClass(rabbitmq_conn); | ||
127 | + | ||
128 | + jfieldID fid_aiEngineParam_rbmq_ip = env->GetFieldID(cls_rabbitmq_conn, "ip", "Ljava/lang/String;"); | ||
129 | + jfieldID fid_aiEngineParam_rbmq_port = env->GetFieldID(cls_rabbitmq_conn, "port", "I"); | ||
130 | + | ||
131 | + jfieldID fid_aiEngineParam_rbmq_username = env->GetFieldID(cls_rabbitmq_conn, "username", "Ljava/lang/String;"); | ||
132 | + jfieldID fid_aiEngineParam_rbmq_password = env->GetFieldID(cls_rabbitmq_conn, "password", "Ljava/lang/String;"); | ||
133 | + jfieldID fid_aiEngineParam_rbmq_vhost = env->GetFieldID(cls_rabbitmq_conn, "vhost", "Ljava/lang/String;"); | ||
134 | + jfieldID fid_aiEngineParam_rbmq_exchange = env->GetFieldID(cls_rabbitmq_conn, "exchange", "Ljava/lang/String;"); | ||
135 | + jfieldID fid_aiEngineParam_rbmq_exchange_type = | ||
136 | + env->GetFieldID(cls_rabbitmq_conn, "exchangeType", "Ljava/lang/String;"); | ||
137 | + jfieldID fid_aiEngineParam_rbmq_queue = env->GetFieldID(cls_rabbitmq_conn, "queue", "Ljava/lang/String;"); | ||
138 | + jfieldID fid_aiEngineParam_rbmq_routingKey = env->GetFieldID(cls_rabbitmq_conn, "routingKey", "Ljava/lang/String;"); | ||
139 | + | ||
140 | + jfieldID fid_aiEngineParam_rbmq_durable_exchange = env->GetFieldID(cls_rabbitmq_conn, "durable_exchange", "Z"); | ||
141 | + jfieldID fid_aiEngineParam_rbmq_durable_queue = env->GetFieldID(cls_rabbitmq_conn, "durable_queue", "Z"); | ||
142 | + | ||
143 | + jstring str_rbmq_ip = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_ip); | ||
144 | + const char *str_rbmq_ip_c = env->GetStringUTFChars(str_rbmq_ip, JNI_FALSE); | ||
145 | + jint int_rbmq_port = env->GetIntField(rabbitmq_conn, fid_aiEngineParam_rbmq_port); | ||
146 | + jstring str_rbmq_username = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_username); | ||
147 | + const char *str_rbmq_username_c = env->GetStringUTFChars(str_rbmq_username, JNI_FALSE); | ||
148 | + jstring str_rbmq_password = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_password); | ||
149 | + const char *str_rbmq_password_c = env->GetStringUTFChars(str_rbmq_password, JNI_FALSE); | ||
150 | + jstring str_rbmq_vhost = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_vhost); | ||
151 | + const char *str_rbmq_vhost_c = env->GetStringUTFChars(str_rbmq_vhost, JNI_FALSE); | ||
152 | + jstring str_rbmq_exchange = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_exchange); | ||
153 | + const char *str_rbmq_exchange_c = env->GetStringUTFChars(str_rbmq_exchange, JNI_FALSE); | ||
154 | + jstring str_rbmq_exchange_type = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_exchange_type); | ||
155 | + const char *str_rbmq_exchange_type_c = env->GetStringUTFChars(str_rbmq_exchange_type, JNI_FALSE); | ||
156 | + jstring str_rbmq_queue = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_queue); | ||
157 | + const char *str_rbmq_queue_c = env->GetStringUTFChars(str_rbmq_queue, JNI_FALSE); | ||
158 | + jstring str_rbmq_routingKey = (jstring)env->GetObjectField(rabbitmq_conn, fid_aiEngineParam_rbmq_routingKey); | ||
159 | + const char *str_rbmq_routingKey_c = env->GetStringUTFChars(str_rbmq_routingKey, JNI_FALSE); | ||
160 | + | ||
161 | + jboolean bool_rbmq_durable_exchange = env->GetBooleanField(rabbitmq_conn, fid_aiEngineParam_rbmq_durable_exchange); | ||
162 | + jboolean bool_rbmq_durable_queue = env->GetBooleanField(rabbitmq_conn, fid_aiEngineParam_rbmq_durable_queue); | ||
163 | + | ||
164 | + rabbitmq_conn_params_t mq_conn_params; | ||
165 | + { | ||
166 | + | ||
167 | + strcpy(mq_conn_params.ip, str_rbmq_ip_c); | ||
168 | + strcpy(mq_conn_params.uname, str_rbmq_username_c); | ||
169 | + strcpy(mq_conn_params.passwd, str_rbmq_password_c); | ||
170 | + strcpy(mq_conn_params.vhost, str_rbmq_vhost_c); | ||
171 | + strcpy(mq_conn_params.exchange, str_rbmq_exchange_c); | ||
172 | + strcpy(mq_conn_params.exchange_type, str_rbmq_exchange_type_c); | ||
173 | + strcpy(mq_conn_params.queue, str_rbmq_queue_c); | ||
174 | + strcpy(mq_conn_params.routing_key, str_rbmq_routingKey_c); | ||
175 | + mq_conn_params.port = int_rbmq_port; | ||
176 | + mq_conn_params.durable_queue = bool_rbmq_durable_queue; | ||
177 | + mq_conn_params.durable_exchange = bool_rbmq_durable_exchange; | ||
178 | + } | ||
179 | + | ||
180 | + env->ReleaseStringUTFChars(str_rbmq_ip, str_rbmq_ip_c); | ||
181 | + env->ReleaseStringUTFChars(str_rbmq_username, str_rbmq_username_c); | ||
182 | + env->ReleaseStringUTFChars(str_rbmq_password, str_rbmq_password_c); | ||
183 | + env->ReleaseStringUTFChars(str_rbmq_vhost, str_rbmq_vhost_c); | ||
184 | + env->ReleaseStringUTFChars(str_rbmq_exchange, str_rbmq_exchange_c); | ||
185 | + env->ReleaseStringUTFChars(str_rbmq_exchange_type, str_rbmq_exchange_type_c); | ||
186 | + env->ReleaseStringUTFChars(str_rbmq_queue, str_rbmq_queue_c); | ||
187 | + env->ReleaseStringUTFChars(str_rbmq_routingKey, str_rbmq_routingKey_c); | ||
188 | + | ||
189 | + printf("[RabbitMQ] Init\n\t task type: %d ip: %s port is %d username is %s password is %s vhost is %s exchange is %s " | ||
190 | + "exchange_type is %s queue is %s routing key is %s durable_exchange is %d durable_queue is %d\n", | ||
191 | + (int)task_type, mq_conn_params.ip, mq_conn_params.port, mq_conn_params.uname, mq_conn_params.passwd, | ||
192 | + mq_conn_params.vhost, mq_conn_params.exchange, mq_conn_params.exchange_type, mq_conn_params.queue, | ||
193 | + mq_conn_params.routing_key, mq_conn_params.durable_exchange, mq_conn_params.durable_queue); | ||
194 | + | ||
195 | + int status = 0; | ||
196 | + void *aiEngineHanle = (void *)handle; | ||
197 | + if (0 != (status = add_mq_conn(aiEngineHanle, static_cast<mq_type_t>(task_type), mq_conn_params))) | ||
198 | + fprintf(stderr, "add mq conn failed.\n"); | ||
199 | + return status; | ||
200 | +} | ||
201 | + | ||
202 | + | ||
203 | +// 请求视频流 | ||
204 | +bool gb28181_request_stream_callback(const char *task_id){ | ||
205 | + | ||
206 | + printf("request stream. taskId :%s.\n", task_id); | ||
207 | + | ||
208 | + //java回调---------------------------------------- | ||
209 | + void *p; | ||
210 | + // printf("1 \n"); | ||
211 | + g_jvm->AttachCurrentThread(&p, NULL); | ||
212 | + // printf("2 \n"); | ||
213 | + JNIEnv *callBack_env = (JNIEnv *)p; | ||
214 | + | ||
215 | + jint ret = 0; | ||
216 | + if(callBack_env != nullptr){ | ||
217 | + jmethodID mid_requestStreamhCallback = callBack_env->GetMethodID(g_jcls_vptdtJavaCallBack, "vptdtEventJavaCallBack", "(Ljava/lang/String;)I"); | ||
218 | + // printf("3 \n"); | ||
219 | + if(mid_requestStreamhCallback != nullptr){ | ||
220 | + // printf("4 \n"); | ||
221 | + ret = (jint)callBack_env->CallIntMethod(g_obj_vptdtJavaCallBack, mid_requestStreamhCallback, callBack_env->NewStringUTF(task_id)); | ||
222 | + } | ||
223 | + // printf("5 \n"); | ||
224 | + } | ||
225 | + g_jvm->DetachCurrentThread(); | ||
226 | + | ||
227 | + printf("request stream. taskId :%s ret: %d \n", task_id, ret); | ||
228 | + | ||
229 | + if(ret == 0){ | ||
230 | + return false; | ||
231 | + } | ||
232 | + | ||
233 | + printf("request stream end .\n"); | ||
234 | + | ||
235 | + return true; | ||
236 | +} | ||
237 | + | ||
238 | + | ||
239 | +/* | ||
240 | + * Class: com_objecteye_nativeinterface_AiEngineNativeInterface | ||
241 | + * Method: addTask | ||
242 | + * Signature: (JLcom/objecteye/pojo/ruijin/TaskParam;)I | ||
243 | + */ | ||
244 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_addTask(JNIEnv *env, jobject obj, | ||
245 | + jlong handle, | ||
246 | + jobject taskParam) { | ||
247 | + int code = 0; | ||
248 | + | ||
249 | + // getFieldID | ||
250 | + jclass cls_taskParam = env->GetObjectClass(taskParam); | ||
251 | + jfieldID fid_taskParam_ipcUrl = env->GetFieldID(cls_taskParam, "ipcUrl", "Ljava/lang/String;"); | ||
252 | + jfieldID fid_taskParam_algorConfigParams = | ||
253 | + env->GetFieldID(cls_taskParam, "algorConfigParams", "Ljava/util/ArrayList;"); | ||
254 | + jfieldID fid_taskParam_algorCounts = env->GetFieldID(cls_taskParam, "algorCounts", "I"); | ||
255 | + jfieldID fid_taskParam_taskId = env->GetFieldID(cls_taskParam, "taskId", "Ljava/lang/String;"); | ||
256 | + | ||
257 | + jfieldID fid_taskParam_dec_type = env->GetFieldID(cls_taskParam, "decType", "I"); | ||
258 | + jfieldID fid_taskParam_port = env->GetFieldID(cls_taskParam, "port", "I"); | ||
259 | + jfieldID fid_taskParam_protocal = env->GetFieldID(cls_taskParam, "protocal", "I"); | ||
260 | + | ||
261 | + // getObjectField | ||
262 | + jstring str_taskParam_ipcUrl = (jstring)env->GetObjectField(taskParam, fid_taskParam_ipcUrl); | ||
263 | + const char *taskParam_ipcUrl = env->GetStringUTFChars(str_taskParam_ipcUrl, JNI_FALSE); | ||
264 | + jint taskParam_algorCounts = env->GetIntField(taskParam, fid_taskParam_algorCounts); | ||
265 | + jstring str_taskParam_taskId = (jstring)env->GetObjectField(taskParam, fid_taskParam_taskId); | ||
266 | + const char *taskParam_taskId = env->GetStringUTFChars(str_taskParam_taskId, JNI_FALSE); | ||
267 | + jobject taskParam_algorConfigParams = env->GetObjectField(taskParam, fid_taskParam_algorConfigParams); | ||
268 | + | ||
269 | + jint taskParam_dec_type = env->GetIntField(taskParam, fid_taskParam_dec_type); | ||
270 | + jint taskParam_port = env->GetIntField(taskParam, fid_taskParam_port); | ||
271 | + jint taskParam_protocal = env->GetIntField(taskParam, fid_taskParam_protocal); | ||
272 | + | ||
273 | + jclass cls_syRectParam = env->FindClass("com/objecteye/pojo/common/SyRectParam"); | ||
274 | + jfieldID fid_syRectParam_left = env->GetFieldID(cls_syRectParam, "left", "I"); | ||
275 | + jfieldID fid_syRectParam_top = env->GetFieldID(cls_syRectParam, "top", "I"); | ||
276 | + jfieldID fid_syRectParam_width = env->GetFieldID(cls_syRectParam, "width", "I"); | ||
277 | + jfieldID fid_syRectParam_height = env->GetFieldID(cls_syRectParam, "height", "I"); | ||
278 | + | ||
279 | + // java to C++ | ||
280 | + task_param mTaskParam; | ||
281 | + mTaskParam.ipc_url = taskParam_ipcUrl; | ||
282 | + mTaskParam.algor_counts = taskParam_algorCounts; | ||
283 | + mTaskParam.task_id = taskParam_taskId; | ||
284 | + mTaskParam.algor_config_params = new algor_config_param[mTaskParam.algor_counts]; | ||
285 | + mTaskParam.dec_type = taskParam_dec_type; | ||
286 | + mTaskParam.port = taskParam_port; | ||
287 | + mTaskParam.protocal = taskParam_protocal; | ||
288 | + mTaskParam.gb28181_request_stream_callback = gb28181_request_stream_callback; | ||
289 | + | ||
290 | + map<int, jstring> snapshot_little_AlgorConfigParamResSnapshotFolderMap; | ||
291 | + map<int, char *> psnapshot_little_AlgorConfigParamResSnapshotFolderMap; | ||
292 | + map<int, jstring> snapshot_AlgorConfigParamResSnapshotFolderMap; | ||
293 | + map<int, char *> psnapshot_AlgorConfigParamResSnapshotFolderMap; | ||
294 | + map<int, jstring> snapshot_AlgorConfigParamResVideoFolderMap; | ||
295 | + map<int, char *> psnapshot_AlgorConfigParamResVideoFolderMap; | ||
296 | + | ||
297 | + jclass cls_arraylist = env->FindClass("java/util/ArrayList"); | ||
298 | + // method in class ArrayList | ||
299 | + jmethodID mid_arraylist_get = env->GetMethodID(cls_arraylist, "get", "(I)Ljava/lang/Object;"); | ||
300 | + | ||
301 | + for (size_t i = 0; i < taskParam_algorCounts; i++) { | ||
302 | + jobject obj_algorConfigParam = env->CallObjectMethod(taskParam_algorConfigParams, mid_arraylist_get, i); | ||
303 | + jclass cls_algorConfigParam = env->GetObjectClass(obj_algorConfigParam); | ||
304 | + | ||
305 | + jfieldID fid_algorConfigParam_algorType = env->GetFieldID(cls_algorConfigParam, "algorType", "I"); | ||
306 | + jint algorConfigParam_algorType = env->GetIntField(obj_algorConfigParam, fid_algorConfigParam_algorType); | ||
307 | + | ||
308 | + jfieldID fid_algorConfigParam_algorInitParam = | ||
309 | + env->GetFieldID(cls_algorConfigParam, "algorInitParam", "Ljava/lang/Object;"); | ||
310 | + jobject algorConfigParam_algorInitParam = | ||
311 | + env->GetObjectField(obj_algorConfigParam, fid_algorConfigParam_algorInitParam); | ||
312 | + | ||
313 | + jclass cls_AlgorConfigParam = env->GetObjectClass(algorConfigParam_algorInitParam); | ||
314 | + | ||
315 | + /* assign public variables. */ | ||
316 | + auto algor_basic_param = new algor_basic_config_param_t; | ||
317 | + { | ||
318 | + jfieldID fid_ssAlgorConfigParam_algorRect = | ||
319 | + env->GetFieldID(cls_AlgorConfigParam, "algor_valid_rect", "Lcom/objecteye/pojo/common/SyRectParam;"); | ||
320 | + jobject ssAlgorConfigParam_algorRect = | ||
321 | + env->GetObjectField(algorConfigParam_algorInitParam, fid_ssAlgorConfigParam_algorRect); | ||
322 | + | ||
323 | + jint ssAlgorConfigParam_algorRect_left = env->GetIntField(ssAlgorConfigParam_algorRect, fid_syRectParam_left); | ||
324 | + jint ssAlgorConfigParam_algorRect_top = env->GetIntField(ssAlgorConfigParam_algorRect, fid_syRectParam_top); | ||
325 | + jint ssAlgorConfigParam_algorRect_width = env->GetIntField(ssAlgorConfigParam_algorRect, fid_syRectParam_width); | ||
326 | + jint ssAlgorConfigParam_algorRect_height = env->GetIntField(ssAlgorConfigParam_algorRect, fid_syRectParam_height); | ||
327 | + | ||
328 | + jfieldID fid_ssAlgorConfigParam_snapshotLittleFolder = | ||
329 | + env->GetFieldID(cls_AlgorConfigParam, "result_folder_little", "Ljava/lang/String;"); | ||
330 | + jfieldID fid_ssAlgorConfigParam_snapshotFolder = | ||
331 | + env->GetFieldID(cls_AlgorConfigParam, "result_folder", "Ljava/lang/String;"); | ||
332 | + jfieldID fid_ssAlgorConfigParam_videoFolder = | ||
333 | + env->GetFieldID(cls_AlgorConfigParam, "video_folder", "Ljava/lang/String;"); //视频存储地址 | ||
334 | + | ||
335 | + snapshot_little_AlgorConfigParamResSnapshotFolderMap[i] = | ||
336 | + (jstring)env->GetObjectField(algorConfigParam_algorInitParam, fid_ssAlgorConfigParam_snapshotLittleFolder); | ||
337 | + psnapshot_little_AlgorConfigParamResSnapshotFolderMap[i] = | ||
338 | + (char *)env->GetStringUTFChars(snapshot_little_AlgorConfigParamResSnapshotFolderMap[i], JNI_FALSE); | ||
339 | + snapshot_AlgorConfigParamResSnapshotFolderMap[i] = | ||
340 | + (jstring)env->GetObjectField(algorConfigParam_algorInitParam, fid_ssAlgorConfigParam_snapshotFolder); | ||
341 | + psnapshot_AlgorConfigParamResSnapshotFolderMap[i] = | ||
342 | + (char *)env->GetStringUTFChars(snapshot_AlgorConfigParamResSnapshotFolderMap[i], JNI_FALSE); | ||
343 | + snapshot_AlgorConfigParamResVideoFolderMap[i] = | ||
344 | + (jstring)env->GetObjectField(algorConfigParam_algorInitParam, fid_ssAlgorConfigParam_videoFolder); | ||
345 | + psnapshot_AlgorConfigParamResVideoFolderMap[i] = | ||
346 | + (char *)env->GetStringUTFChars(snapshot_AlgorConfigParamResVideoFolderMap[i], JNI_FALSE); | ||
347 | + | ||
348 | + auto algor_init_config_param = new algor_init_config_param_t; | ||
349 | + | ||
350 | + | ||
351 | + algor_basic_param->algor_valid_rect.top_ = ssAlgorConfigParam_algorRect_top; | ||
352 | + algor_basic_param->algor_valid_rect.left_ = ssAlgorConfigParam_algorRect_left; | ||
353 | + algor_basic_param->algor_valid_rect.width_ = ssAlgorConfigParam_algorRect_width; | ||
354 | + algor_basic_param->algor_valid_rect.height_ = ssAlgorConfigParam_algorRect_height; | ||
355 | + | ||
356 | + algor_basic_param->result_folder = psnapshot_AlgorConfigParamResSnapshotFolderMap[i]; | ||
357 | + algor_basic_param->result_folder_little = psnapshot_little_AlgorConfigParamResSnapshotFolderMap[i]; | ||
358 | + algor_basic_param->video_folder = psnapshot_AlgorConfigParamResVideoFolderMap[i]; | ||
359 | + | ||
360 | + algor_init_config_param->basic_param = algor_basic_param; | ||
361 | + mTaskParam.algor_config_params[i].algor_init_config_param = algor_init_config_param; | ||
362 | + mTaskParam.algor_config_params[i].algor_type = static_cast<algorithm_type_t>(algorConfigParam_algorType); | ||
363 | + } | ||
364 | + | ||
365 | + switch (static_cast<algorithm_type_t>(algorConfigParam_algorType)) { | ||
366 | + case algorithm_type_t::FACE_SNAPSHOT: | ||
367 | + // printf("FACE_SNAPSHOT result_folder: %s result_folder_little: %s \n", algor_basic_param->result_folder, algor_basic_param->result_folder_little); | ||
368 | + case algorithm_type_t::HUMAN_SNAPSHOT: | ||
369 | + case algorithm_type_t::VEHICLE_SNAPSHOT: | ||
370 | + case algorithm_type_t::NONMOTOR_VEHICLE_SNAPSHOT: { | ||
371 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
372 | + jfieldID fid_snap_frame_interval = env->GetFieldID(cls_AlgorConfigParam, "snap_frame_interval", "I"); | ||
373 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
374 | + jfloat j_snap_frame_interval = env->GetFloatField(algorConfigParam_algorInitParam, fid_snap_frame_interval); | ||
375 | + | ||
376 | + typedef algor_config_param_snapshot algor_config_param_type; | ||
377 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
378 | + auto algor_param = | ||
379 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
380 | + algor_param->threshold = (float)j_threshold; | ||
381 | + algor_param->snap_frame_interval = (int)j_snap_frame_interval; | ||
382 | + } break; | ||
383 | + | ||
384 | + //农村违法分析 | ||
385 | + case algorithm_type_t::NONMOTOR_VEHICLE_NOHELMET: | ||
386 | + case algorithm_type_t::NONMOTOR_VEHICLE_OVERMAN: | ||
387 | + case algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE: | ||
388 | + case algorithm_type_t::NONMOTOR_VEHICLE_REFIT: | ||
389 | + case algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS: | ||
390 | + case algorithm_type_t::NONMOTOR_IN_VEHICLELANE: | ||
391 | + case algorithm_type_t::NONMOTOR_CEOSSPARKLINE: | ||
392 | + case algorithm_type_t::NONMOTOR_WRONGDIRECTION: | ||
393 | + case algorithm_type_t::PERSON_IN_VEHICLELANE: | ||
394 | + case algorithm_type_t::PERSON_CROSS: | ||
395 | + case algorithm_type_t::PERSON_RUNNING_REDLIGHTS: | ||
396 | + case algorithm_type_t::TRICYCLE_MANNED: | ||
397 | + case algorithm_type_t::VEHICLE_WRONGDIRECTION: | ||
398 | + case algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND: | ||
399 | + case algorithm_type_t::VEHICLE_NOTGIVEWAY: | ||
400 | + case algorithm_type_t::VEHICLE_NOTDECELERATION: | ||
401 | + case algorithm_type_t::TRUCK_MANNED: { | ||
402 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "hs_threshold", "I"); | ||
403 | + jint j_hs_threshold = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
404 | + fid = env->GetFieldID(cls_AlgorConfigParam, "m_frame", "I"); | ||
405 | + jint j_m_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
406 | + fid = env->GetFieldID(cls_AlgorConfigParam, "n_frame", "I"); | ||
407 | + jint j_n_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
408 | + fid = env->GetFieldID(cls_AlgorConfigParam, "obj_min_width", "I"); | ||
409 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
410 | + fid = env->GetFieldID(cls_AlgorConfigParam, "obj_min_height", "I"); | ||
411 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
412 | + fid = env->GetFieldID(cls_AlgorConfigParam, "obj_confidence_threshold", "F"); | ||
413 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
414 | + std::printf("%s:%d i is %d mn is [%d %d] threshold is %d\n", __FILE__, __LINE__, i, (int)j_m_frame, | ||
415 | + (int)j_n_frame, (int)j_hs_threshold); | ||
416 | + | ||
417 | + typedef algor_config_param_manned_incident algor_config_param_type; | ||
418 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
419 | + auto algor_param = | ||
420 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
421 | + | ||
422 | + algor_param->m = (int)j_m_frame; | ||
423 | + algor_param->n = (int)j_n_frame; | ||
424 | + algor_param->hs_count_threshold = (int)j_hs_threshold; | ||
425 | + | ||
426 | + algor_param->obj_min_width = (int)j_min_width; | ||
427 | + algor_param->obj_min_height = (int)j_min_height; | ||
428 | + algor_param->obj_confidence_threshold = (float)j_confidence_threshold; | ||
429 | + } break; | ||
430 | + | ||
431 | + | ||
432 | + case algorithm_type_t::HUMAN_GATHER: { | ||
433 | + | ||
434 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "frame_stride", "I"); | ||
435 | + jint j_frame_stride = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
436 | + | ||
437 | + fid = env->GetFieldID(cls_AlgorConfigParam, "human_count_threshold", "I"); | ||
438 | + jint j_human_count_thre = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
439 | + | ||
440 | + typedef algor_config_param_human_gather algor_config_param_type; | ||
441 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
442 | + auto algor_param = | ||
443 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
444 | + algor_param->frame_stride = (int)j_frame_stride; | ||
445 | + algor_param->human_count_threshold = (int)j_human_count_thre; | ||
446 | + } break; | ||
447 | + //221026byzsh-------------------------------------------------------------------------------------------- | ||
448 | + case algorithm_type_t::ROAD_WORK_DET: { | ||
449 | + | ||
450 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "frame_stride", "I"); | ||
451 | + jint j_frame_stride = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
452 | + | ||
453 | + fid = env->GetFieldID(cls_AlgorConfigParam, "rblock_count_threshold", "I"); | ||
454 | + jint j_rblock_count_thre = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
455 | + | ||
456 | + typedef algor_config_param_road_work algor_config_param_type; | ||
457 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
458 | + auto algor_param = | ||
459 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
460 | + algor_param->frame_stride = (int)j_frame_stride; | ||
461 | + algor_param->rblock_count_threshold = (int)j_rblock_count_thre; | ||
462 | + } break; | ||
463 | + //-------------------------------------------------------------------------------------------------------- | ||
464 | + | ||
465 | + //230220byzsh-------------------------------------------------------------------------------------------- | ||
466 | + case algorithm_type_t::VIDEO_TIMING_SNAPSHOT: { | ||
467 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "frame_stride", "I"); | ||
468 | + jint j_frame_stride = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
469 | + typedef algor_config_param_road_work algor_config_param_type; | ||
470 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
471 | + auto algor_param = | ||
472 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
473 | + algor_param->frame_stride = (int)j_frame_stride; | ||
474 | + printf("VIDEO_TIMING_SNAPSHOT j_frame_stride: %d \n", algor_param->frame_stride); | ||
475 | + | ||
476 | + } break; | ||
477 | + //-------------------------------------------------------------------------------------------------------- | ||
478 | + | ||
479 | + case algorithm_type_t::TAKEAWAY_MEMBER_CLASSIFICATION: { | ||
480 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
481 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
482 | + | ||
483 | + fid = env->GetFieldID(cls_AlgorConfigParam, "m_frame", "I"); | ||
484 | + jint j_m_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
485 | + | ||
486 | + fid = env->GetFieldID(cls_AlgorConfigParam, "n_frame", "I"); | ||
487 | + jint j_n_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
488 | + | ||
489 | + // std::printf("%s:%d i is %d mn is [%d %d] threshold is %f\n", __FILE__, __LINE__, i, (int)j_m_frame, | ||
490 | + // (int)j_n_frame, (float)j_threshold); | ||
491 | + | ||
492 | + typedef algor_config_param_takeaway_member_classification algor_config_param_type; | ||
493 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
494 | + auto algor_param = | ||
495 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
496 | + | ||
497 | + // std::printf("%s:%d i is %d CKPT:2\n", __FILE__, __LINE__, i); | ||
498 | + | ||
499 | + algor_param->m = (int)j_m_frame; | ||
500 | + algor_param->n = (int)j_n_frame; | ||
501 | + algor_param->threshold = (float)j_threshold; | ||
502 | + | ||
503 | + std::printf("%s:%d i is %d mn is [%d %d] threshold is %f\n", __FILE__, __LINE__, i, algor_param->m, | ||
504 | + algor_param->n, algor_param->threshold); | ||
505 | + } break; | ||
506 | + case algorithm_type_t::PEDESTRIAN_FIGHT: { | ||
507 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
508 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
509 | + | ||
510 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_width", "I"); | ||
511 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
512 | + | ||
513 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_height", "I"); | ||
514 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
515 | + | ||
516 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_confidence_threshold", "F"); | ||
517 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
518 | + | ||
519 | + // std::printf("%s:%d i is %d threshold is %f\n", __FILE__, __LINE__, i, (float)j_threshold); | ||
520 | + | ||
521 | + typedef algor_config_param_pedestrian_fight algor_config_param_type; | ||
522 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
523 | + auto algor_param = | ||
524 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
525 | + | ||
526 | + algor_param->threshold = (float)j_threshold; | ||
527 | + algor_param->pedestrian_min_width = (int)j_min_width; | ||
528 | + algor_param->pedestrian_min_height = (int)j_min_height; | ||
529 | + algor_param->pedestrian_confidence_threshold = (float)j_confidence_threshold; | ||
530 | + | ||
531 | + } break; | ||
532 | + case algorithm_type_t::PEDESTRIAN_FALL: { | ||
533 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
534 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
535 | + | ||
536 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_width", "I"); | ||
537 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
538 | + | ||
539 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_height", "I"); | ||
540 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
541 | + | ||
542 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_confidence_threshold", "F"); | ||
543 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
544 | + | ||
545 | + // std::printf("%s:%d i is %d threshold is %f\n", __FILE__, __LINE__, i, (float)j_threshold); | ||
546 | + | ||
547 | + typedef algor_config_param_pedestrian_fall algor_config_param_type; | ||
548 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
549 | + auto algor_param = | ||
550 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
551 | + | ||
552 | + algor_param->threshold = (float)j_threshold; | ||
553 | + algor_param->pedestrian_min_width = (int)j_min_width; | ||
554 | + algor_param->pedestrian_min_height = (int)j_min_height; | ||
555 | + algor_param->pedestrian_confidence_threshold = (float)j_confidence_threshold; | ||
556 | + | ||
557 | + // std::printf("%s:%d i is %d threshold is %f\n", __FILE__, __LINE__, i, algor_param->threshold); | ||
558 | + } break; | ||
559 | + | ||
560 | + case algorithm_type_t::SMOKING_DET: | ||
561 | + case algorithm_type_t::CALL_PHONE_DET: | ||
562 | + case algorithm_type_t::NO_SAFETY_HELMET: | ||
563 | + case algorithm_type_t::NO_REFLECTIVE_CLOTHING: { | ||
564 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
565 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
566 | + | ||
567 | + fid = env->GetFieldID(cls_AlgorConfigParam, "m_frame", "I"); | ||
568 | + jint j_m_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
569 | + | ||
570 | + fid = env->GetFieldID(cls_AlgorConfigParam, "n_frame", "I"); | ||
571 | + jint j_n_frame = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
572 | + | ||
573 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_width", "I"); | ||
574 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
575 | + | ||
576 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_height", "I"); | ||
577 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
578 | + | ||
579 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_confidence_threshold", "F"); | ||
580 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
581 | + | ||
582 | + std::printf("[%s:%d] tereshold %.2f mn [%d %d] minimum wh [%d %d] minimum_threshold %.2f\n", __FILE__, __LINE__, | ||
583 | + (float)j_threshold, (int)j_m_frame, (int)j_n_frame, (int)j_min_width, (int)j_min_height, | ||
584 | + (float)j_confidence_threshold); | ||
585 | + | ||
586 | + using algor_config_param_type = algor_config_param_pedestrian_safety_detector_basic; | ||
587 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
588 | + auto algor_param = | ||
589 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
590 | + | ||
591 | + algor_param->m = (int)j_m_frame; | ||
592 | + algor_param->n = (int)j_n_frame; | ||
593 | + algor_param->conf_threshold = (float)j_threshold; | ||
594 | + algor_param->pedestrian_min_width = (int)j_min_width; | ||
595 | + algor_param->pedestrian_min_height = (int)j_min_height; | ||
596 | + algor_param->pedestrian_confidence_threshold = (float)j_confidence_threshold; | ||
597 | + | ||
598 | + // std::printf("%s:%d i is %d threshold is %f\n", __FILE__, __LINE__, i, algor_param->threshold); | ||
599 | + } break; | ||
600 | + | ||
601 | + case algorithm_type_t::VEHICLE_RETROGRADE: | ||
602 | + case algorithm_type_t::PEDESTRIAN_RETROGRADE: { | ||
603 | + | ||
604 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "px1", "I"); | ||
605 | + jint j_px1 = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
606 | + | ||
607 | + fid = env->GetFieldID(cls_AlgorConfigParam, "py1", "I"); | ||
608 | + jint j_py1 = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
609 | + | ||
610 | + fid = env->GetFieldID(cls_AlgorConfigParam, "px2", "I"); | ||
611 | + jint j_px2 = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
612 | + | ||
613 | + fid = env->GetFieldID(cls_AlgorConfigParam, "py2", "I"); | ||
614 | + jint j_py2 = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
615 | + | ||
616 | + fid = env->GetFieldID(cls_AlgorConfigParam, "direction", "I"); | ||
617 | + jint j_direction = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
618 | + | ||
619 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_width", "I"); | ||
620 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
621 | + | ||
622 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_height", "I"); | ||
623 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
624 | + | ||
625 | + fid = env->GetFieldID(cls_AlgorConfigParam, "threshold", "F"); | ||
626 | + jfloat j_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
627 | + | ||
628 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_confidence_threshold", "F"); | ||
629 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
630 | + | ||
631 | + std::printf( | ||
632 | + "[%s:%d] point [(%d, %d), (%d, %d)] direction %d threshold %.2f minimum wh [%d %d] minimum_threshold %.2f\n", | ||
633 | + __FILE__, __LINE__, (int)j_px1, (int)j_py1, (int)j_px2, (int)j_py2, (int)j_direction, (float)j_threshold, | ||
634 | + (int)j_min_width, (int)j_min_height, (float)j_confidence_threshold); | ||
635 | + | ||
636 | + using algor_config_param_type = algor_config_param_retrograde_basic; | ||
637 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
638 | + auto algor_param = | ||
639 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
640 | + | ||
641 | + algor_param->px1 = (int)j_px1; | ||
642 | + algor_param->px2 = (int)j_px2; | ||
643 | + algor_param->py1 = (int)j_py1; | ||
644 | + algor_param->py2 = (int)j_py2; | ||
645 | + algor_param->conf_threshold = (float)j_confidence_threshold; | ||
646 | + algor_param->minmum_width = std::max(0, (int)j_min_width); | ||
647 | + algor_param->minmum_height = std::max(0, (int)j_min_height); | ||
648 | + algor_param->direction = (int)j_direction; | ||
649 | + } break; | ||
650 | + | ||
651 | + case algorithm_type_t::PEDESTRIAN_TRESPASS: | ||
652 | + case algorithm_type_t::VEHICLE_TRESPASS: { | ||
653 | + | ||
654 | + jfieldID fid = env->GetFieldID(cls_AlgorConfigParam, "points_count", "I"); | ||
655 | + jint j_points_count = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
656 | + | ||
657 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_width", "I"); | ||
658 | + jint j_min_width = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
659 | + | ||
660 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_min_height", "I"); | ||
661 | + jint j_min_height = env->GetIntField(algorConfigParam_algorInitParam, fid); | ||
662 | + | ||
663 | + fid = env->GetFieldID(cls_AlgorConfigParam, "pedestrian_confidence_threshold", "F"); | ||
664 | + jfloat j_confidence_threshold = env->GetFloatField(algorConfigParam_algorInitParam, fid); | ||
665 | + | ||
666 | + using algor_config_param_type = algor_config_param_trespass_basic; | ||
667 | + mTaskParam.algor_config_params[i].algor_init_config_param->algor_param = new algor_config_param_type; | ||
668 | + auto algor_param = | ||
669 | + (algor_config_param_type *)mTaskParam.algor_config_params[i].algor_init_config_param->algor_param; | ||
670 | + | ||
671 | + fid = env->GetFieldID(cls_AlgorConfigParam, "points", "[I"); | ||
672 | + jintArray j_points = (jintArray)env->GetObjectField(algorConfigParam_algorInitParam, fid); | ||
673 | + jint *points = (jint *)env->GetIntArrayElements(j_points, 0); | ||
674 | + | ||
675 | + for (size_t i = 0; i < (int)j_points_count; i++) { | ||
676 | + /* | ||
677 | + jobject obj_pointConfigParam = env->CallObjectMethod(j_points, mid_arraylist_points_get, i); | ||
678 | + jclass cls_pointConfigParam = env->GetObjectClass(obj_pointConfigParam); | ||
679 | + printf("33333333333"); | ||
680 | + jfieldID fid_pointConfigParam_x = env->GetFieldID(cls_pointConfigParam, "x", "I"); | ||
681 | + jint point_x = env->GetIntField(obj_pointConfigParam, fid_pointConfigParam_x); | ||
682 | + | ||
683 | + jfieldID fid_pointConfigParam_y = env->GetFieldID(cls_pointConfigParam, "y", "I"); | ||
684 | + jint point_y = env->GetIntField(obj_pointConfigParam, fid_pointConfigParam_y); | ||
685 | + */ | ||
686 | + algor_param->points[i].x_ = (int)points[i * 2]; | ||
687 | + algor_param->points[i].y_ = (int)points[i * 2 + 1]; | ||
688 | + } | ||
689 | + | ||
690 | + algor_param->conf_threshold = (float)j_confidence_threshold; | ||
691 | + algor_param->minmum_width = std::max(0, (int)j_min_width); | ||
692 | + algor_param->minmum_height = std::max(0, (int)j_min_height); | ||
693 | + algor_param->points_count = (int)j_points_count; | ||
694 | + | ||
695 | + std::printf("[%s:%d] points_count %d minmum_width %df minmum_height %d conf_threshold %.2f\n", __FILE__, __LINE__, | ||
696 | + (int)j_points_count, (int)j_min_width, (int)j_min_height, (float)j_confidence_threshold); | ||
697 | + | ||
698 | + for (size_t i = 0; i < (int)j_points_count; i++) | ||
699 | + printf(" i %d point (%d %d)\n", i, algor_param->points[i].x_, algor_param->points[i].y_); | ||
700 | + } break; | ||
701 | + | ||
702 | + default: { | ||
703 | + fprintf(stderr, "%s:%d Add Task Failed (Invalid algorithm type). \n", __FILE__, __LINE__); | ||
704 | + code = -1; | ||
705 | + } break; | ||
706 | + } | ||
707 | + } | ||
708 | + | ||
709 | + void *aiEngineHanle = (void *)handle; | ||
710 | + code = add_task(aiEngineHanle, mTaskParam); | ||
711 | + | ||
712 | + if (!snapshot_little_AlgorConfigParamResSnapshotFolderMap.empty()) { | ||
713 | + map<int, jstring>::iterator iter = snapshot_little_AlgorConfigParamResSnapshotFolderMap.begin(); | ||
714 | + while (iter != snapshot_little_AlgorConfigParamResSnapshotFolderMap.end()) { | ||
715 | + env->ReleaseStringUTFChars(snapshot_little_AlgorConfigParamResSnapshotFolderMap[iter->first], | ||
716 | + psnapshot_little_AlgorConfigParamResSnapshotFolderMap[iter->first]); | ||
717 | + env->ReleaseStringUTFChars(snapshot_AlgorConfigParamResSnapshotFolderMap[iter->first], | ||
718 | + psnapshot_AlgorConfigParamResSnapshotFolderMap[iter->first]); | ||
719 | + iter++; | ||
720 | + } | ||
721 | + snapshot_little_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
722 | + psnapshot_little_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
723 | + snapshot_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
724 | + psnapshot_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
725 | + } | ||
726 | + | ||
727 | + env->ReleaseStringUTFChars(str_taskParam_ipcUrl, taskParam_ipcUrl); | ||
728 | + env->ReleaseStringUTFChars(str_taskParam_taskId, taskParam_taskId); | ||
729 | + return code; | ||
730 | +} | ||
731 | + | ||
732 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_getTaskStatus(JNIEnv *env, | ||
733 | + jobject thisObject, | ||
734 | + jlong handle, | ||
735 | + jstring task_id) { | ||
736 | + int code = -1; | ||
737 | + void *aiEngineHanle = (void *)handle; | ||
738 | + if (aiEngineHanle != NULL) { | ||
739 | + const char *p_taskId = env->GetStringUTFChars(task_id, JNI_FALSE); | ||
740 | + code = get_task_status(aiEngineHanle, (char *)p_taskId); | ||
741 | + env->ReleaseStringUTFChars(task_id, p_taskId); | ||
742 | + } | ||
743 | + return code; | ||
744 | +} | ||
745 | + | ||
746 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_pauseTask(JNIEnv *env, jobject obj, | ||
747 | + jlong handle, | ||
748 | + jstring taskId, | ||
749 | + jint max_timeout_ms) { | ||
750 | + int code = -1; | ||
751 | + void *aiEngineHanle = (void *)handle; | ||
752 | + const char *p_taskId = env->GetStringUTFChars(taskId, JNI_FALSE); | ||
753 | + code = pause_task(aiEngineHanle, (char *)p_taskId, (int)max_timeout_ms); | ||
754 | + env->ReleaseStringUTFChars(taskId, p_taskId); | ||
755 | + return code; | ||
756 | +} | ||
757 | + | ||
758 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_restartTask( | ||
759 | + JNIEnv *env, jobject obj, jlong handle, jstring taskId, jint max_timeout_ms) { | ||
760 | + int code = -1; | ||
761 | + void *aiEngineHanle = (void *)handle; | ||
762 | + const char *p_taskId = env->GetStringUTFChars(taskId, JNI_FALSE); | ||
763 | + code = restart_task(aiEngineHanle, (char *)p_taskId, (int)max_timeout_ms); | ||
764 | + env->ReleaseStringUTFChars(taskId, p_taskId); | ||
765 | + return code; | ||
766 | +} | ||
767 | + | ||
768 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_finishTask( | ||
769 | + JNIEnv *env, jobject obj, jlong handle, jstring taskId, jint max_timeout_ms) { | ||
770 | + int code = -1; | ||
771 | + void *aiEngineHanle = (void *)handle; | ||
772 | + const char *p_taskId = env->GetStringUTFChars(taskId, JNI_FALSE); | ||
773 | + code = finish_task(aiEngineHanle, (char *)p_taskId, (int)max_timeout_ms); | ||
774 | + env->ReleaseStringUTFChars(taskId, p_taskId); | ||
775 | + return code; | ||
776 | +} | ||
777 | + | ||
778 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_release(JNIEnv *env, jobject obj, | ||
779 | + jlong handle) { | ||
780 | + int error_code = -1; | ||
781 | + void *aiEngineHanle = (void *)handle; | ||
782 | + if (aiEngineHanle != NULL) | ||
783 | + error_code = tsl_aiplatform_release(&aiEngineHanle); | ||
784 | + return error_code; | ||
785 | +} | ||
786 | + | ||
787 | +JNIEXPORT jstring JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_getVersion(JNIEnv *env, | ||
788 | + jobject obj) { | ||
789 | + const char *version = get_tsl_aiplatform_version(); | ||
790 | + return env->NewStringUTF(version); | ||
791 | +} | ||
792 | + | ||
793 | + | ||
794 | +/* | ||
795 | + * Class: com_objecteye_nativeinterface_AiEngineNativeInterface | ||
796 | + * Method: screenshot_task | ||
797 | + * Signature: (JLcom/objecteye/pojo/TaskParam;)I | ||
798 | + * added by zsh 220802 | ||
799 | + */ | ||
800 | +JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_screenShotTask(JNIEnv *env, jobject obj, | ||
801 | + jlong handle, | ||
802 | + jobject taskParam) { | ||
803 | + int code = 0; | ||
804 | + | ||
805 | + // getFieldID | ||
806 | + jclass cls_taskParam = env->GetObjectClass(taskParam); | ||
807 | + jfieldID fid_taskParam_ipcUrl = env->GetFieldID(cls_taskParam, "ipcUrl", "Ljava/lang/String;"); | ||
808 | + jfieldID fid_taskParam_algorConfigParams = | ||
809 | + env->GetFieldID(cls_taskParam, "algorConfigParams", "Ljava/util/ArrayList;"); | ||
810 | + jfieldID fid_taskParam_algorCounts = env->GetFieldID(cls_taskParam, "algorCounts", "I"); | ||
811 | + jfieldID fid_taskParam_taskId = env->GetFieldID(cls_taskParam, "taskId", "Ljava/lang/String;"); | ||
812 | + | ||
813 | + // getObjectField | ||
814 | + jstring str_taskParam_ipcUrl = (jstring)env->GetObjectField(taskParam, fid_taskParam_ipcUrl); | ||
815 | + const char *taskParam_ipcUrl = env->GetStringUTFChars(str_taskParam_ipcUrl, JNI_FALSE); | ||
816 | + jint taskParam_algorCounts = env->GetIntField(taskParam, fid_taskParam_algorCounts); | ||
817 | + jstring str_taskParam_taskId = (jstring)env->GetObjectField(taskParam, fid_taskParam_taskId); | ||
818 | + const char *taskParam_taskId = env->GetStringUTFChars(str_taskParam_taskId, JNI_FALSE); | ||
819 | + jobject taskParam_algorConfigParams = env->GetObjectField(taskParam, fid_taskParam_algorConfigParams); | ||
820 | + | ||
821 | + // java to C++ | ||
822 | + task_param mTaskParam; | ||
823 | + mTaskParam.ipc_url = taskParam_ipcUrl; | ||
824 | + mTaskParam.algor_counts = taskParam_algorCounts; | ||
825 | + mTaskParam.task_id = taskParam_taskId; | ||
826 | + mTaskParam.algor_config_params = new algor_config_param[mTaskParam.algor_counts]; | ||
827 | + | ||
828 | + map<int, jstring> snapshot_AlgorConfigParamResSnapshotFolderMap; | ||
829 | + map<int, char *> psnapshot_AlgorConfigParamResSnapshotFolderMap; | ||
830 | + | ||
831 | + jclass cls_arraylist = env->FindClass("java/util/ArrayList"); | ||
832 | + // method in class ArrayList | ||
833 | + jmethodID mid_arraylist_get = env->GetMethodID(cls_arraylist, "get", "(I)Ljava/lang/Object;"); | ||
834 | + | ||
835 | + for (size_t i = 0; i < taskParam_algorCounts; i++) { | ||
836 | + jobject obj_algorConfigParam = env->CallObjectMethod(taskParam_algorConfigParams, mid_arraylist_get, i); | ||
837 | + jclass cls_algorConfigParam = env->GetObjectClass(obj_algorConfigParam); | ||
838 | + | ||
839 | + jfieldID fid_algorConfigParam_algorType = env->GetFieldID(cls_algorConfigParam, "algorType", "I"); | ||
840 | + jint algorConfigParam_algorType = env->GetIntField(obj_algorConfigParam, fid_algorConfigParam_algorType); | ||
841 | + | ||
842 | + jfieldID fid_algorConfigParam_algorInitParam = | ||
843 | + env->GetFieldID(cls_algorConfigParam, "algorInitParam", "Ljava/lang/Object;"); //可去掉? | ||
844 | + jobject algorConfigParam_algorInitParam = | ||
845 | + env->GetObjectField(obj_algorConfigParam, fid_algorConfigParam_algorInitParam); //可去掉 | ||
846 | + | ||
847 | + jclass cls_AlgorConfigParam = env->GetObjectClass(algorConfigParam_algorInitParam); | ||
848 | + | ||
849 | + | ||
850 | + /* assign public variables. */ | ||
851 | + { | ||
852 | + jfieldID fid_ssAlgorConfigParam_snapshotFolder = | ||
853 | + env->GetFieldID(cls_AlgorConfigParam, "result_folder", "Ljava/lang/String;"); | ||
854 | + | ||
855 | + snapshot_AlgorConfigParamResSnapshotFolderMap[i] = | ||
856 | + (jstring)env->GetObjectField(algorConfigParam_algorInitParam, fid_ssAlgorConfigParam_snapshotFolder); | ||
857 | + psnapshot_AlgorConfigParamResSnapshotFolderMap[i] = | ||
858 | + (char *)env->GetStringUTFChars(snapshot_AlgorConfigParamResSnapshotFolderMap[i], JNI_FALSE); | ||
859 | + | ||
860 | + auto algor_init_config_param = new algor_init_config_param_t; | ||
861 | + auto algor_basic_param = new algor_basic_config_param_t; | ||
862 | + | ||
863 | + algor_basic_param->result_folder = psnapshot_AlgorConfigParamResSnapshotFolderMap[i]; | ||
864 | + | ||
865 | + algor_init_config_param->basic_param = algor_basic_param; | ||
866 | + mTaskParam.algor_config_params[i].algor_init_config_param = algor_init_config_param; | ||
867 | + mTaskParam.algor_config_params[i].algor_type = static_cast<algorithm_type_t>(algorConfigParam_algorType); | ||
868 | + } | ||
869 | + | ||
870 | + } | ||
871 | + | ||
872 | + void *aiEngineHanle = (void *)handle; | ||
873 | + code = screenshot_task(aiEngineHanle, mTaskParam); | ||
874 | + | ||
875 | + if (!snapshot_AlgorConfigParamResSnapshotFolderMap.empty()) { | ||
876 | + map<int, jstring>::iterator iter = snapshot_AlgorConfigParamResSnapshotFolderMap.begin(); | ||
877 | + while (iter != snapshot_AlgorConfigParamResSnapshotFolderMap.end()) { | ||
878 | + env->ReleaseStringUTFChars(snapshot_AlgorConfigParamResSnapshotFolderMap[iter->first], | ||
879 | + psnapshot_AlgorConfigParamResSnapshotFolderMap[iter->first]); | ||
880 | + iter++; | ||
881 | + } | ||
882 | + snapshot_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
883 | + psnapshot_AlgorConfigParamResSnapshotFolderMap.clear(); | ||
884 | + } | ||
885 | + | ||
886 | + env->ReleaseStringUTFChars(str_taskParam_ipcUrl, taskParam_ipcUrl); | ||
887 | + env->ReleaseStringUTFChars(str_taskParam_taskId, taskParam_taskId); | ||
888 | + return code; | ||
889 | +} | ||
890 | + | ||
891 | + | ||
892 | +ai_log_level getLogLevel(int logLevel) { | ||
893 | + switch (logLevel) { | ||
894 | + case -1: | ||
895 | + return AI_LOG_LEVEL_CLOSE; | ||
896 | + case 0: | ||
897 | + return AI_LOG_LEVEL_TRACE; | ||
898 | + case 1: | ||
899 | + return AI_LOG_LEVEL_DEBUG; | ||
900 | + case 2: | ||
901 | + return AI_LOG_LEVEL_INFO; | ||
902 | + case 3: | ||
903 | + return AI_LOG_LEVEL_WARNING; | ||
904 | + case 4: | ||
905 | + return AI_LOG_LEVEL_ERROR; | ||
906 | + } | ||
907 | + return AI_LOG_LEVEL_DEBUG; | ||
908 | +} |
src/tsl_aiplatform_jni/com_objecteye_nativeinterface_TSLAiEngineNativeInterface.h
0 → 100644
1 | +/* | ||
2 | + * @Author: zhaoshuaihua | ||
3 | + * @Date: 2022-08-02 20:01:51 | ||
4 | + * @Last Modified by: zhaoshuaihua | ||
5 | + * @Email: zhaoshuaihua@objecteye.com | ||
6 | + * @Description: | ||
7 | + */ | ||
8 | +/* DO NOT EDIT THIS FILE - it is machine generated */ | ||
9 | +#include <jni.h> | ||
10 | +/* Header for class com_objecteye_nativeinterface_TSLAiEngineNativeInter */ | ||
11 | + | ||
12 | +#ifndef _Included_com_objecteye_nativeinterface_TSLAiEngineNativeInter | ||
13 | +#define _Included_com_objecteye_nativeinterface_TSLAiEngineNativeInter | ||
14 | +#ifdef __cplusplus | ||
15 | +extern "C" | ||
16 | +{ | ||
17 | +#endif | ||
18 | + | ||
19 | + | ||
20 | + /* | ||
21 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
22 | + * Method: load | ||
23 | + * Signature: ()I | ||
24 | + */ | ||
25 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_load(JNIEnv *, jclass); | ||
26 | + /* | ||
27 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
28 | + * Method: init | ||
29 | + * Signature: ([Ljava/lang/Long;Lcom/objecteye/pojo/ruijin/TSLAiEngineParam;)I | ||
30 | + */ | ||
31 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_init(JNIEnv *, jobject, jlongArray, jobject); | ||
32 | + | ||
33 | + | ||
34 | + /* | ||
35 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
36 | + * Method: addMqConn | ||
37 | + * Signature: (JLcom/objecteye/pojo/ruijin/MqParam;)I | ||
38 | + */ | ||
39 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_addMqConn(JNIEnv *, jobject, jlong, jint, jobject); | ||
40 | + | ||
41 | + /* | ||
42 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
43 | + * Method: addTask | ||
44 | + * Signature: (JLcom/objecteye/pojo/ruijin/TaskParam;)I | ||
45 | + */ | ||
46 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_addTask(JNIEnv *, jobject, jlong, jobject); | ||
47 | + /* | ||
48 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
49 | + * Method: getTaskStatus | ||
50 | + * Signature: (JLjava/lang/String;)I | ||
51 | + */ | ||
52 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_getTaskStatus(JNIEnv *, jobject, jlong, jstring); | ||
53 | + /* | ||
54 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
55 | + * Method: pauseTask | ||
56 | + * Signature: (JLjava/lang/String;I)I | ||
57 | + */ | ||
58 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_pauseTask(JNIEnv *, jobject, jlong, jstring, jint); | ||
59 | + | ||
60 | + /* | ||
61 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
62 | + * Method: restartTask | ||
63 | + * Signature: (JLjava/lang/String;I)I | ||
64 | + */ | ||
65 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_restartTask(JNIEnv *, jobject, jlong, jstring, jint); | ||
66 | + | ||
67 | + /* | ||
68 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
69 | + * Method: finishTask | ||
70 | + * Signature: (JLjava/lang/String;I)I | ||
71 | + */ | ||
72 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_finishTask(JNIEnv *, jobject, jlong, jstring, jint); | ||
73 | + | ||
74 | + /* | ||
75 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
76 | + * Method: release | ||
77 | + * Signature: (J)I | ||
78 | + */ | ||
79 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_release(JNIEnv *, jobject, jlong); | ||
80 | + | ||
81 | + /* | ||
82 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
83 | + * Method: getVersion | ||
84 | + * Signature: ()Ljava/lang/String; | ||
85 | + */ | ||
86 | + JNIEXPORT jstring JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_getVersion(JNIEnv *, jobject); | ||
87 | + | ||
88 | + /* | ||
89 | + * Class: com_objecteye_nativeinterface_TSLAiEngineNativeInterface | ||
90 | + * Method: screenshot_task | ||
91 | + * Signature: (JLcom/objecteye/pojo/TaskParam;)I | ||
92 | + * added by zsh 220802 | ||
93 | + */ | ||
94 | + JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_TSLAiEngineNativeInterface_screenShotTask(JNIEnv *, jobject, jlong, jobject); | ||
95 | + | ||
96 | + | ||
97 | +#ifdef __cplusplus | ||
98 | +} | ||
99 | +#endif | ||
100 | +#endif |