VisitFace/RtspNativeCodec/app/src/main/cpp/AppConfig.cpp
@@ -35,22 +35,26 @@ void AppConfig::loadConfig(string path) { fstream fs(path); if (!fs.is_open()) { if (!fs.is_open()) { save(path); return; } Json::CharReaderBuilder builder; auto reader = builder.newCharReader(); JSONCPP_STRING doc; std::getline(fs, doc, (char)EOF); JSONCPP_STRING doc; std::getline(fs, doc, (char) EOF); reader->parse(doc.data(), doc.data() + doc.size(), &root, false); } void AppConfig::save(string path) { ofstream ofs(path); ofs << root.toStyledString(); ofs.close(); } void AppConfig::clear(){ void AppConfig::clear() { root.clear(); } VisitFace/RtspNativeCodec/app/src/main/cpp/AppConfig.h
@@ -5,27 +5,30 @@ #ifndef RTSPNATIVECODEC_APPCONFIG_H #define RTSPNATIVECODEC_APPCONFIG_H #include <json.h> #include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; class AppConfig { class AppConfig { public: AppConfig(); ~AppConfig(); AppConfig(); ~AppConfig(); string getStringValue(string key); int getIntValue(string key); void setStringValue(string key, string value); void setIntValue(string key, int value); void loadConfig(string path); void save(string path); void clear(); int getIntValue(string key); void setStringValue(string key, string value); void setIntValue(string key, int value); void loadConfig(string path); void save(string path); void clear(); private: Json::Value root; }; #endif //RTSPNATIVECODEC_APPCONFIG_H VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt
@@ -117,11 +117,12 @@ "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/freetype/lib/${ARCH}/libfreetype.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/jsoncpp/lib/${ARCH}/libjsoncpp.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-json.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-rpc.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnpc.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-json-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-rpc-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnpc-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj-async-0.7-dev.so" #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/lib/${ARCH}/libv4l2wrapper.a" @@ -202,11 +203,12 @@ "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/jsoncpp/lib/${ARCH}/libjsoncpp.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-json.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-rpc.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnpc.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-json-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-rpc-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnpc-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj-0.7-dev.so" "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj-async-0.7-dev.so" #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/lib/${ARCH}/libv4l2wrapper.a" VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
@@ -14,7 +14,6 @@ { stop(); delete pipeLineRender; delete pipeLineAnalyzer; delete pipeLineDecoderDetector; } @@ -94,42 +93,17 @@ PipeLine::register_global_elem_creator("PL_RTSPClient", create_PL_RTSPClient); PipeLine::register_global_elem_creator("PL_AndroidMediaCodecDecoder", create_PL_AndroidMediaCodecDecoder); PipeLine::register_global_elem_creator("PL_AndroidSurfaceViewRender", create_PL_AndroidSurfaceViewRender); //PipeLine::register_global_elem_creator("PL_SensetimeFaceTrack", create_PL_SensetimeFaceTrack); PipeLine::register_global_elem_creator("PL_SensetimeFaceTrackMitiTrd", create_PL_SensetimeFaceTrackMultiTrd); PipeLine::register_global_elem_creator("PL_Gainer", create_PL_Gainer); PipeLine::register_global_elem_creator("PL_Scale", create_PL_Scale); PipeLine::register_global_elem_creator("PL_ColorConv", create_PL_ColorConv); PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint); 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); bool ret = initPl_DecoderPl(); if (!ret) { LOG_ERROR << "pipeLineDecoderDetector init error" << LOG_ENDL; return false; } { PL_Gainer* plGainer = (PL_Gainer*)pipeLineAnalyzer->push_elem("PL_Gainer"); ret = plGainer->init(nullptr); if (!ret) { LOG_ERROR << "pipeLineAnalyzer.plGainer.init error" << LOG_ENDL; return false; } PL_BlockGrouping* plBG = (PL_BlockGrouping*)pipeLineAnalyzer->push_elem("PL_BlockGrouping"); PL_BlockGrouping_Config plbgConfig; plbgConfig.user_score_2_func = pl_analizer_plbg_user_score_2_func; plbgConfig.get_rect_func = pl_analizer_plbg_get_rect_func; ret = plBG->init(&plbgConfig); if (!ret) { LOG_ERROR << "pipeLineAnalyzer.plBG.init error" << LOG_ENDL; return false; } } { @@ -143,29 +117,13 @@ PL_Scale* plScale = (PL_Scale*)pipeLineRender->push_elem("PL_Scale"); plScaleCfg.toWidth = 640; plScaleCfg.toHeight = 480; plScaleCfg.toHeight = 480;//#todo move to jni ret = plScale->init(&plScaleCfg); if (!ret) { LOG_ERROR << "pipeLineRender.plScale init error" << LOG_ENDL; return false; } //PL_AndroidMediaCodecEncoder_Config amceCfg; //amceCfg.ak_bit_rate = 5000000; // 512KB //amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar; //amceCfg.ak_frame_rate = 25; //amceCfg.ak_height = 480; //amceCfg.ak_i_frame_interval = 20; //amceCfg.ak_mime = "video/avc"; //amceCfg.ak_width = 640; //PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder"); //ret = plAMCE->init(&amceCfg); //if (!ret) //{ // LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL; // return false; //} PL_ColorConv_Config PLColorConvCfg; PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv"); @@ -228,23 +186,6 @@ // LOG_ERROR << "pipeLineDecoderDetector.v4l2Source.init error" << LOG_ENDL; // return false; //} #ifdef USE_ST_SDK // PL_SensetimeFaceTrack *sfTrack = (PL_SensetimeFaceTrack *) pipeLineDecoderDetector->push_elem("PL_SensetimeFaceTrack"); // ret = sfTrack->init(&sftConfig); // if (!ret) // { // LOG_ERROR << "pipeLineDecoderDetector.sfTrack.init error" << LOG_ENDL; // return false; // } PL_SensetimeFaceTrackMultiTrd *sfTrack = (PL_SensetimeFaceTrackMultiTrd *) pipeLineDecoderDetector->push_elem("PL_SensetimeFaceTrackMitiTrd"); ret = sfTrack->init(&sftConfig); if (!ret) { LOG_ERROR << "pipeLineDecoderDetector.sfTrack.init error" << LOG_ENDL; return false; } #endif return ret; } @@ -355,23 +296,6 @@ return false; } //bool cw_pm_breaker_ptr_face(const PipeMaterial* pm, void* args) //{ // CameraWrapper& cameraWrapper = *(CameraWrapper*)args; // // if (cameraWrapper.faceCacheLocked) // return false; // // int faceCount = cameraWrapper.faceCache.getFaceCount(*pm); // if (faceCount <= 0 || cameraWrapper.faceCallbackFunc == 0) // return false; // // cameraWrapper.faceCache.cachePm(*pm); // invokeCallback(cameraWrapper, faceCount); // // return false; //} void test_paint(CameraWrapper& cameraWrapper) { cameraWrapper.plplContext.cmds.push_back(PLPLC_WTEXT); @@ -395,14 +319,6 @@ cameraWrapper.plplContext.params.push_back(100); cameraWrapper.plplContext.params.push_back(100); } //struct ScopeMutexLocker //{ // pthread_mutex_t* mut; // ScopeMutexLocker(pthread_mutex_t* _mut) : mut(_mut){pthread_mutex_lock(mut);}; // ~ScopeMutexLocker(){pthread_mutex_unlock(mut);} // //ScopeMutexLocker(&(cameraWrapper.live_daemon_mut)); //}; void cw_elem_destory_func(PipeLineElem* elem) { @@ -445,23 +361,12 @@ cameraWrapper.lastAliveTime = time(nullptr); //if (! cameraWrapper.faceCacheLocked) //{ // PipeMaterial pmAnalizer(pm); // PipeLineElem* last = cameraWrapper.pipeLineAnalyzer->pipe(&pmAnalizer); // bool ret = last->gain(pmAnalizer); // if (ret) // pmAnalizer.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_face, &(cameraWrapper)); //} pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper)); //#debug //test_paint(cameraWrapper); cameraWrapper.pipeLineRender->pipe(&pm);//#todo //if (cameraWrapper.pipeLineRender->check_pipe_complete(last = cameraWrapper.pipeLineRender->pipe(&pm))) // last->gain(pm); cameraWrapper.pipeLineRender->pipe(&pm); } LOG_INFO << "CameraWrapper::decoder_thd stop, ret=" << LOG_ENDL; VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.h
@@ -24,13 +24,11 @@ { public: PipeLine* pipeLineDecoderDetector; PipeLine* pipeLineAnalyzer; PipeLine* pipeLineRender; PL_RTSPClient_Config rtspConfig; PL_AndroidMediaCodecDecoder_Config amcdConfig; PL_AndroidSurfaceViewRender_Config asvrConfig; SensetimeFaceTrackConfig sftConfig; PL_Scale_Config plScaleCfg; int cameraIdx; @@ -59,7 +57,7 @@ std::string fontPath; CameraWrapper() : pipeLineDecoderDetector(nullptr), pipeLineAnalyzer(nullptr), pipeLineRender(nullptr), rtspConfig(), amcdConfig(), asvrConfig(), sftConfig(), pipeLineDecoderDetector(nullptr), pipeLineRender(nullptr), rtspConfig(), amcdConfig(), asvrConfig(), cameraIdx(0), javaVM(nullptr), javaEnv(nullptr), faceCallbackClazz(0), faceCallbackFunc(0), windowRender(nullptr), windowDecode(nullptr), decoder_thid(0), live_daemon_thid(0), live_daemon_mut(), running(false), killed(false), lastAliveTime(0), faceCacheLocked(false), faceCache(), VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h
@@ -9,53 +9,63 @@ #include <capnp/ez-rpc.h> #include <logger.h> template <class T> class RemoteServer{ template<class T> class RemoteServer { public: RemoteServer(std::string host,int port):host(host),port(port){}; ~RemoteServer(){}; RemoteServer(std::string host, int port) : host(host), port(port) {}; bool start() { LOG_INFO << "server_thd::start" << LOG_ENDL; ~RemoteServer() {}; if(running == true){ LOG_INFO << "The server_thd is already running" << LOG_ENDL; return false; } running = true; pthread_mutex_init(&mutexSerevr, NULL); // 初始化互斥对象,动态加锁,用于server bool start() { LOG_INFO << "server_thd::start" << LOG_ENDL; int retServer = pthread_create(&server_thid, NULL, RemoteServer::rServer_thd, this); if (running == true) { LOG_INFO << "The server_thd is already running" << LOG_ENDL; return false; } running = true; pthread_mutex_init(&mutexSerevr, NULL); // 初始化互斥对象,动态加锁,用于server if(retServer != 0) { LOGP(ERROR, "server_thd_create: %s/n", strerror(retServer)); running = false; return false; } return true; } void stop(){ int retServer = pthread_create(&server_thid, NULL, RemoteServer::rServer_thd, this); if (retServer != 0) { LOGP(ERROR, "server_thd_create: %s/n", strerror(retServer)); running = false; return false; } return true; } void stop() { // LOG_INFO << "server_thd::stop" << LOG_ENDL; // if (!running) // return; // running = false; // pthread_mutex_destroy(&mutexSerevr); //#todo } //#todo } bool running; bool running; private: std::string host; int port; std::string host; int port; static void *rServer_thd(void *arg) { RemoteServer& rs = *(RemoteServer*)arg; capnp::EzRpcServer trpcServer(kj::heap<T>(),rs.host, rs.port); auto& serverLoop = trpcServer.getWaitScope(); kj::NEVER_DONE.wait(serverLoop); } pthread_t server_thid; pthread_mutex_t mutexSerevr; static void *rServer_thd(void *arg) { RemoteServer &rs = *(RemoteServer *) arg; capnp::EzRpcServer trpcServer(kj::heap<T>(), rs.host, rs.port); auto &serverLoop = trpcServer.getWaitScope(); kj::NEVER_DONE.wait(serverLoop); } pthread_t server_thid; pthread_mutex_t mutexSerevr; }; #endif //RTSPNATIVECODEC_REMOTEFUNC_H VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.cpp
@@ -5,22 +5,33 @@ #include "RemoteFuncClient.h" #include "RemoteFunc.h" #include "RtspNativeCodecJNIClient.h" RemoteServer<RtspFaceDetectImpl> remoteServer("127.0.0.1",8111); void startRemoteServer(){ remoteServer.start(); RemoteServer<RtspFaceDetectImpl> remoteServer("127.0.0.1", 8111); void startRemoteServer() { remoteServer.start(); } RtspFaceViewClient rtspFaceViewClient; RtspFaceViewClient& RtspFaceViewClient(){ return rtspFaceViewClient; RtspFaceViewClient &RtspFaceViewClient() { return rtspFaceViewClient; } RtspFaceViewClient::RtspFaceViewClient():rpcClient("127.0.0.1",8112), RtspFaceView::Client(rpcClient.getMain<RtspFaceView>()) RtspFaceViewClient::RtspFaceViewClient() : rpcClient("127.0.0.1", 8112), RtspFaceView::Client(rpcClient.getMain<RtspFaceView>()) {} ::kj::WaitScope& RtspFaceViewClient::getWaitScope(){ return rpcClient.getWaitScope(); ::kj::WaitScope &RtspFaceViewClient::getWaitScope() { return rpcClient.getWaitScope(); } ::kj::Promise<void> RtspFaceDetectImpl::fireFaceCountListener(FireFaceCountListenerContext context) { auto results = context.getResults(); remoteFireFaceCountListener(context.getParams(), results); context.setResults(results); } ::kj::Promise<void> RtspFaceDetectImpl::fireFaceCountListener(FireFaceCountListenerContext context) { auto results = context.getResults(); remoteFireFaceCountListener(context.getParams(), results); context.setResults(results); } VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncClient.h
@@ -7,23 +7,30 @@ #include <string> #include <capnp/ez-rpc.h> #include "RemoteMethod.proto.h" #include "RemoteMethod.capnp.h" #include "CameraWrapperServer.h" void startRemoteServer(); class RtspFaceViewClient : RtspFaceView::Client{ class RtspFaceViewClient : RtspFaceView::Client { public: RtspFaceViewClient(); ~RtspFaceViewClient(){}; ::kj::WaitScope& getWaitScope(); RtspFaceViewClient(); ~RtspFaceViewClient() {}; ::kj::WaitScope &getWaitScope(); private: capnp::EzRpcClient rpcClient; capnp::EzRpcClient rpcClient; }; const RtspFaceViewClient& getRtspFaceViewClient(); const RtspFaceViewClient &getRtspFaceViewClient(); class RtspFaceDetectImpl final : public RtspFaceDetect::Server{ class RtspFaceDetectImpl final : public RtspFaceDetect::Server { public: virtual ::kj::Promise<void> fireFaceCountListener(FireFaceCountListenerContext context) override ; virtual ::kj::Promise<void> fireFaceCountListener(FireFaceCountListenerContext context) override; }; #endif //RTSPNATIVECODEC_REMOTEMETHODCLIENT_H VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
@@ -5,38 +5,49 @@ #include "RemoteFunc.h" #include "RemoteFuncServer.h" #include "RtspNativeCodecJNIServer.h" RemoteServer<RtspFaceViewImpl> remoteServer("127.0.0.1",8112); RemoteServer<RtspFaceViewImpl> remoteServer("127.0.0.1", 8112); RtspFaceDetectClient rtspFaceDetectClient; void startRemoteServer(){ AppConfig config; config.loadConfig("data/config.cfg"); remoteServer.start(); void startRemoteServer() { AppConfig config; config.loadConfig("data/config.cfg"); remoteServer.start(); } RtspFaceDetectClient& getRtspFaceDetectClient(){ return rtspFaceDetectClient; RtspFaceDetectClient &getRtspFaceDetectClient() { return rtspFaceDetectClient; } //#todo RtspFaceDetectClient::RtspFaceDetectClient():rpcClient("127.0.0.1",8111), RtspFaceDetect::Client(rpcClient.getMain<RtspFaceDetect>()) RtspFaceDetectClient::RtspFaceDetectClient() : rpcClient("127.0.0.1", 8111), RtspFaceDetect::Client(rpcClient.getMain<RtspFaceDetect>()) {} ::kj::WaitScope& RtspFaceDetectClient::getWaitScope() { return rpcClient.getWaitScope(); ::kj::WaitScope &RtspFaceDetectClient::getWaitScope() { return rpcClient.getWaitScope(); } ::kj::Promise<void> RtspFaceViewImpl::getFaceList(GetFaceListContext context) { auto results = context.getResults(); remoteGetFaceList(context.getParams(), results); context.setResults(results); ::kj::Promise<void> RtspFaceViewImpl::getFaceList(GetFaceListContext context) { auto results = context.getResults(); remoteGetFaceList(context.getParams(), results); context.setResults(results); } ::kj::Promise<void> RtspFaceViewImpl::getFaceImages(GetFaceImagesContext context){ auto results = context.getResults(); remoteGetFaceListImage(context.getParams(), results); context.setResults(results); ::kj::Promise<void> RtspFaceViewImpl::getFaceImages(GetFaceImagesContext context) { auto results = context.getResults(); remoteGetFaceListImage(context.getParams(), results); context.setResults(results); } ::kj::Promise<void> RtspFaceViewImpl::setFaceLabel(SetFaceLabelContext context) { auto results = context.getResults(); remoteSetFaceLabel(context.getParams(), results); context.setResults(results); ::kj::Promise<void> RtspFaceViewImpl::setFaceLabel(SetFaceLabelContext context) { auto results = context.getResults(); remoteSetFaceLabel(context.getParams(), results); context.setResults(results); } VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.h
@@ -9,29 +9,34 @@ #include <capnp/ez-rpc.h> #include "RemoteMethod.capnp.h" class RtspFaceDetectClient :public RtspFaceDetect::Client{ class RtspFaceDetectClient : public RtspFaceDetect::Client { public: RtspFaceDetectClient(); ~RtspFaceDetectClient(){}; ::kj::WaitScope& getWaitScope(); RtspFaceDetectClient(); ~RtspFaceDetectClient() {}; ::kj::WaitScope &getWaitScope(); private: capnp::EzRpcClient rpcClient; capnp::EzRpcClient rpcClient; }; void startRemoteServer(); RtspFaceDetectClient& getRtspFaceDetectClient(); class RtspFaceViewImpl final : public RtspFaceView::Server { RtspFaceDetectClient &getRtspFaceDetectClient(); class RtspFaceViewImpl final : public RtspFaceView::Server { public: virtual ::kj::Promise<void> getFaceList(GetFaceListContext context) override; virtual ::kj::Promise<void> getFaceList(GetFaceListContext context) override; virtual ::kj::Promise<void> getFaceImages(GetFaceImagesContext context) override; virtual ::kj::Promise<void> getFaceImages(GetFaceImagesContext context) override; virtual ::kj::Promise<void> setFaceLabel(SetFaceLabelContext context) override; virtual ::kj::Promise<void> setFaceLabel(SetFaceLabelContext context) override; private: }; #endif //RTSPNATIVECODEC_REMOTEMETHODSERVER_H 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)); } @@ -159,22 +158,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"; VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.h
@@ -2,7 +2,7 @@ #define __RTSPNATIVECODECJNI_CLIENT_H__ #define CAMERA_COUNT 2 #include <jni.h> #include "RemoteMethod.proto.h" #include "RemoteMethod.capnp.h" void remoteFireFaceCountListener(const RtspFaceDetect::FireFaceCountListenerParams::Reader& params, RtspFaceDetect::FireFaceCountListenerResults::Builder& results); extern "C" VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java
@@ -493,7 +493,7 @@ /** Load jni .so on initialization */ static { //System.loadLibrary("rtspface_client"); System.loadLibrary("rtspface_server"); System.loadLibrary("rtspface_client"); //System.loadLibrary("opencv_java3"); }