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" 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) 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; } 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 { 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; } VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h
@@ -24,7 +24,7 @@ void startRemoteServer(); RtspFaceDetectClient &getRtspFaceDetectClient(); RtspFaceDetectClient* getRtspFaceDetectClient(); class RtspFaceViewImpl final : public RtspFaceView::Server { 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) 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 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"); }