From f97741ef79bc496cbf0581527e1f54b369d246be Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 10 八月 2017 14:54:06 +0800 Subject: [PATCH] bug fix --- VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java | 2 VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp | 18 +++++++- VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h | 2 VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | 19 +++++---- VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp | 5 ++ VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp | 17 +++++++- VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt | 4 +- VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp | 48 ++++++++++++++++++++++++ VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h | 2 9 files changed, 99 insertions(+), 18 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt index c3a44dc..a28d2d7 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt @@ -7,7 +7,7 @@ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -DANDROID_PLATFORM=android-22 -DANDROID_TOOLCHAIN=gcc -DANDROID_STL=gnustl_static -Wall -UNDEBUG") set(WORKSPACE_PATH "D:/workspace/proxy") -set(ARCH "arm64-v8a") +set(ARCH "armeabi-v7a") include_directories( "${WORKSPACE_PATH}/RtspFace" @@ -75,7 +75,7 @@ #"${WORKSPACE_PATH}/RtspFace/PL_Queue.cpp" #"${WORKSPACE_PATH}/RtspFace/PL_Fork2.cpp" "${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp" - "${WORKSPACE_PATH}/RtspFace/PL_RTSPServer.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_RTSPServer2.cpp" "${WORKSPACE_PATH}/FaceServer/proto_hton_ntoh.cpp" "${WORKSPACE_PATH}/FaceServer/PbFaceList.pb.cc" diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp index b80108e..ff81d66 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp @@ -10,7 +10,7 @@ #include <PL_BlockGrouping.h> #include <PL_ColorConv.h> #include <PL_AndroidMediaCodecEncoder.h> -#include <PL_RTSPServer.h> +#include <PL_RTSPServer2.h> CameraWrapper::~CameraWrapper() { stop(); @@ -104,7 +104,7 @@ PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source); PipeLine::register_global_elem_creator("PL_BlockGrouping", create_PL_BlockGrouping); PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); - PipeLine::register_global_elem_creator("PL_RTSPServer", create_PL_RTSPServer); + PipeLine::register_global_elem_creator("PL_RTSPServer2", create_PL_RTSPServer2); bool ret = initPl_DecoderPl(); if (!ret) @@ -169,8 +169,8 @@ return false; } - PL_RTSPServer* plRtspServer = (PL_RTSPServer*)pipeLineRender->push_elem("PL_RTSPServer"); - RTSPServerConfig rtspServerConfig; + PL_RTSPServer2* plRtspServer = (PL_RTSPServer2*)pipeLineRender->push_elem("PL_RTSPServer2"); + RTSPServer2Config rtspServerConfig; //rtspServerConfig.syncDeliverFrame = false; ret = plRtspServer->init(&rtspServerConfig); if (!ret) @@ -380,14 +380,17 @@ return false; cameraWrapper.faceCache.cachePm(*pm); //remote call start, 涓轰簡淇濊瘉閫氱敤鎬э紝鏈皢浠ヤ笅姝ラ灏佸叆RtspFaceDetectClient - RtspFaceDetectClient &client = getRtspFaceDetectClient(); - auto request = client.fireFaceCountListenerRequest(); + RtspFaceDetectClient* client = getRtspFaceDetectClient(); + if (client == nullptr) + return false; + + auto request = client->fireFaceCountListenerRequest(); request.setCameraIndex(cameraWrapper.cameraIdx); request.setFaceCount(cameraWrapper.faceCache.getFaceCount(*pm)); auto sendAct = request.send(); - sendAct.wait(client.getWaitScope()); + sendAct.wait(client->getWaitScope()); //remote call end - return false; + return true; } void test_paint(CameraWrapper& cameraWrapper) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp index 14c401b..8d0cd6d 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp @@ -7,16 +7,28 @@ #include "RtspNativeCodecJNIClient.h" RemoteServer<RtspFaceDetectImpl> remoteServer("127.0.0.1", 8111); +static RtspFaceViewClient* rtspFaceViewClient = nullptr; void startRemoteServer() { remoteServer.start(); } -RtspFaceViewClient rtspFaceViewClient; - -RtspFaceViewClient &RtspFaceViewClient() +RtspFaceViewClient* getRtspFaceViewClient() { + if (rtspFaceViewClient != nullptr) + { + try + { + rtspFaceViewClient = new RtspFaceViewClient; + } + catch(...) + { + delete rtspFaceViewClient; + rtspFaceViewClient = nullptr; + LOG_ERROR << "aaaaaaaa"<<LOG_ENDL;//#todo + } + } return rtspFaceViewClient; } diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h index 32ecdad..56db96c 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h @@ -25,7 +25,7 @@ capnp::EzRpcClient rpcClient; }; -const RtspFaceViewClient &getRtspFaceViewClient(); +RtspFaceViewClient* getRtspFaceViewClient(); class RtspFaceDetectImpl final : public RtspFaceDetect::Server { diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp index eabf9dc..ad412e8 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp @@ -7,7 +7,7 @@ #include "RtspNativeCodecJNIServer.h" RemoteServer<RtspFaceViewImpl> remoteServer("127.0.0.1", 8112); -RtspFaceDetectClient rtspFaceDetectClient; +static RtspFaceDetectClient* rtspFaceDetectClient = nullptr; void startRemoteServer() { @@ -16,8 +16,21 @@ remoteServer.start(); } -RtspFaceDetectClient &getRtspFaceDetectClient() +RtspFaceDetectClient* getRtspFaceDetectClient() { + if (rtspFaceDetectClient != nullptr) + { + try + { + rtspFaceDetectClient = new RtspFaceDetectClient; + } + catch(...) + { + delete rtspFaceDetectClient; + rtspFaceDetectClient = nullptr; + LOG_ERROR << "aaaaaaaa"<<LOG_ENDL;//#todo + } + } return rtspFaceDetectClient; } diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h index 910bbf3..4979693 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h @@ -24,7 +24,7 @@ void startRemoteServer(); -RtspFaceDetectClient &getRtspFaceDetectClient(); +RtspFaceDetectClient* getRtspFaceDetectClient(); class RtspFaceViewImpl final : public RtspFaceView::Server { diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp index 943ddaf..4934102 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp @@ -81,6 +81,54 @@ 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 Java_cn_com_basic_face_util_RtspFaceNative_createPlayer(JNIEnv *env, jclass clazz, jint cameraIdx, jstring uri) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp index 1ca3782..afe73a8 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp @@ -627,4 +627,9 @@ 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) +{ +} + } // extern C diff --git a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java index 0cc99e5..9fd8a32 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java +++ b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java @@ -492,8 +492,8 @@ /** Load jni .so on initialization */ static { - //System.loadLibrary("rtspface_client"); System.loadLibrary("rtspface_client"); + //System.loadLibrary("rtspface_server"); //System.loadLibrary("opencv_java3"); } -- Gitblit v1.8.0