From afcb649c8a2785c6095be5762c6077f9e15afd1a Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 02 八月 2017 10:33:31 +0800 Subject: [PATCH] c++ dupl image --- VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp | 83 +++++++++++++++++++++++++++++++++++------ 1 files changed, 71 insertions(+), 12 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp index 3174a0b..177b924 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp @@ -17,6 +17,7 @@ #include <stdlib.h> #include "DebugNetwork.h" +#include "TeleWrapper.h" #include "cpu_sched_test.h" @@ -33,6 +34,8 @@ CaptureCamera g_CaptureCamera; +TeleWrapper g_TeleWrapper; + extern "C" { @@ -43,7 +46,7 @@ cpu_sched(); #ifdef USE_ST_SDK - PipeLine::register_global_elem_creator("PL_SensetimeFaceTrack", create_PL_SensetimeFaceTrack); + PipeLine::register_global_elem_creator("PL_SensetimeFaceTrackMitiTrd", create_PL_SensetimeFaceTrackMultiTrd); #endif for (size_t i = 0; i < CAMERA_COUNT; i++) @@ -55,6 +58,8 @@ g_CameraWrappers[i].pipeLineRender = new PipeLine; //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector)); } + + g_TeleWrapper.start(); } void @@ -221,6 +226,22 @@ cameraWrapper.asvrConfig.windowSurface = cameraWrapper.windowRender; // support reset //cameraWrapper.windowRender = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender)); + { + ANativeWindow* window = (ANativeWindow*)(cameraWrapper.windowRender); + ANativeWindow_Buffer buffer; + if(cameraWrapper.windowRender != nullptr && ANativeWindow_lock(window, &buffer, NULL) == 0) + { + cameraWrapper.plScaleCfg.toHeight=buffer.height; + cameraWrapper.plScaleCfg.toWidth=buffer.stride; + ANativeWindow_unlockAndPost(window); + } + else + { + cameraWrapper.plScaleCfg.toHeight=480; + cameraWrapper.plScaleCfg.toWidth=640; + } + } + LOGP(DEBUG, "@@@ setsurface %p,%p", cameraWrapper.windowDecode, cameraWrapper.windowRender); } @@ -299,7 +320,8 @@ cameraWrapper.asvrConfig.outputOriginFrame = true; cameraWrapper.asvrConfig.outputRenderFrame = true; cameraWrapper.asvrConfig.scaleToWidth = 0; - cameraWrapper.asvrConfig.scaleToHeight = 0; + cameraWrapper.asvrConfig.scaleToHeight = 0; + cameraWrapper.asvrConfig.directlyDisplay = true; } { @@ -314,11 +336,13 @@ cameraWrapper.sftConfig.clamp_feature_rect = true; cameraWrapper.sftConfig.doTrackPerFrame = 1; //cameraWrapper.sftConfig.license_str = g_stface_license_str; - cameraWrapper.sftConfig.visionConeAngle = 35.0f; - cameraWrapper.sftConfig.score_min = 0.2f; + cameraWrapper.sftConfig.visionConeAngle = 30.0f; + cameraWrapper.sftConfig.score_min = 0.4f; } - bool ret = cameraWrapper.initPl(); + cameraWrapper.fontPath = "/data/msyh.ttc"; + + bool ret = cameraWrapper.initPl(); if (ret) return (cameraWrapper.start() ? JNI_TRUE : JNI_FALSE); else @@ -730,19 +754,54 @@ } +bool Java_cn_com_basic_face_util_RtspFaceNative_teleCall(JNIEnv *env, jclass clazz, jstring phone) +{ + std::string _phone; + { + const char *utfFunc = env->GetStringUTFChars(phone, NULL); + _phone = utfFunc; + env->ReleaseStringUTFChars(phone, utfFunc); + } + + const char *phoneNum = _phone.c_str(); + TeleTask task; + task.command= TeleTask::CALL; + task.param = phoneNum; + LOG_INFO << "Java_cn_com_basic_face_util_RtspFaceNative_telCall::jni" << LOG_ENDL; + // + g_TeleWrapper.pushTask(task); +} + +void Java_cn_com_basic_face_util_RtspFaceNative_teleHang(JNIEnv *env, jclass clazz) +{ + TeleTask task; + task.command =TeleTask::HANGUP; + // + g_TeleWrapper.pushTask(task); +} + +void Java_cn_com_basic_face_util_RtspFaceNative_teleShutdown(JNIEnv *env, jclass clazz) +{ + LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_telShutdown" << LOG_ENDL; + g_TeleWrapper.stop(); +} + void Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel(JNIEnv *env, jclass clazz, jint cameraIdx, jint stTrackId, jstring label) { LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel" << LOG_ENDL; assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT); cameraIdx -= 1; CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]); + const jchar* jchars = env->GetStringChars(label, nullptr); + std::wstring wstr; + int lenth = env->GetStringLength(label); - const char *utfChars = env->GetStringUTFChars(label, NULL); - std::string labelstr(utfChars); - std::wstring wlabelstr; - wlabelstr.assign(labelstr.begin(), labelstr.end()); - env->ReleaseStringUTFChars(label, utfChars); - cameraWrapper.setFaceLabel(stTrackId, wlabelstr); + for (int i = 0; i < lenth; ++i) { + jchar jc = *(jchars + i); + wchar_t wt = (wchar_t)jc; + wstr.push_back(wt); + } + env->ReleaseStringChars(label,jchars); + cameraWrapper.setFaceLabel(stTrackId, wstr); } - } // extern C -- Gitblit v1.8.0