From c6968ba2fbd5e9f4e32fd5f62fd587f9a7d2ebc1 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 11 八月 2017 18:52:31 +0800 Subject: [PATCH] bug fix for rtsp server --- VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp | 91 +++++++++++++++++++++++++++++---------------- 1 files changed, 59 insertions(+), 32 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp index c4a679e..e4890ea 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp @@ -45,26 +45,21 @@ { void Java_cn_com_basic_face_util_RtspFaceNative_init(JNIEnv *env, jclass clazz) - { - g_logger.set_level(INFO); +{ +g_logger.set_level(INFO); - cpu_sched(); +cpu_sched(); -#ifdef USE_ST_SDK - PipeLine::register_global_elem_creator("PL_SensetimeFaceTrackMitiTrd", create_PL_SensetimeFaceTrackMultiTrd); -#endif +for (size_t i = 0; i < CAMERA_COUNT; i++) +{ + g_CameraWrappers[i].cameraIdx = i + 1; - for (size_t i = 0; i < CAMERA_COUNT; i++) - { - g_CameraWrappers[i].cameraIdx = i + 1; + g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine; + g_CameraWrappers[i].pipeLineRender = new PipeLine; + //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector)); +} - g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine; - g_CameraWrappers[i].pipeLineAnalyzer = new PipeLine; - g_CameraWrappers[i].pipeLineRender = new PipeLine; - //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector)); - } - - g_TeleWrapper.start(); +g_TeleWrapper.start(); } void @@ -80,6 +75,54 @@ g_CameraWrappers[i].rtspConfig.requestStreamingOverTcp = true; } env->ReleaseStringUTFChars(ipaddr, utf8); +} + +// set the surface +void Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx, + jobject surfaceRender) +{ + LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setSurface" << LOG_ENDL; + assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT); + cameraIdx -= 1; + + CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]); + + // obtain a native windowRender from a Java surface + if (cameraWrapper.windowDecode != nullptr) + { + ANativeWindow_release((ANativeWindow *) (cameraWrapper.windowDecode)); + cameraWrapper.windowDecode = NULL; + } + cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, surfaceRender); + //cameraWrapper.windowDecode = getSurfaceHolderGetSurface(env, surfaceRender); + //cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender)); + + if (cameraWrapper.windowRender != nullptr) + { + ANativeWindow_release((ANativeWindow *) (cameraWrapper.windowRender)); + cameraWrapper.windowRender = NULL; + } + cameraWrapper.windowRender = ANativeWindow_fromSurface(env, surfaceRender); + 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); } jboolean @@ -159,22 +202,6 @@ cameraWrapper.asvrConfig.scaleToWidth = 0; cameraWrapper.asvrConfig.scaleToHeight = 0; cameraWrapper.asvrConfig.directlyDisplay = true; - } - - { - cameraWrapper.sftConfig.point_size = 21; - cameraWrapper.sftConfig.detect_face_cnt_limit = MAX_FACE; - cameraWrapper.sftConfig.draw_face_rect = false; - cameraWrapper.sftConfig.draw_face_feature_point = false; - cameraWrapper.sftConfig.generate_face_feature = true; - cameraWrapper.sftConfig.generate_face_point = false; - cameraWrapper.sftConfig.explode_feature_rect_x = 30; - cameraWrapper.sftConfig.explode_feature_rect_y = 40; - cameraWrapper.sftConfig.clamp_feature_rect = true; - cameraWrapper.sftConfig.doTrackPerFrame = 1; - //cameraWrapper.sftConfig.license_str = g_stface_license_str; - cameraWrapper.sftConfig.visionConeAngle = 30.0f; - cameraWrapper.sftConfig.score_min = 0.4f; } cameraWrapper.fontPath = "/data/msyh.ttc"; -- Gitblit v1.8.0