From eb69d9c33b307bfc2d6c7f46a210f98c5fa306c5 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 11 八月 2017 14:31:01 +0800 Subject: [PATCH] bug fix for client --- VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp | 65 ++++++++++++++++++++++++-------- 1 files changed, 48 insertions(+), 17 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp index c4a679e..4934102 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp @@ -59,7 +59,6 @@ g_CameraWrappers[i].cameraIdx = i + 1; g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine; - g_CameraWrappers[i].pipeLineAnalyzer = new PipeLine; g_CameraWrappers[i].pipeLineRender = new PipeLine; //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector)); } @@ -80,6 +79,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 +206,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