From e473f9eeb0233afcbd38de5de975dea4d131026d Mon Sep 17 00:00:00 2001 From: pans <pans@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 16 八月 2017 15:26:27 +0800 Subject: [PATCH] fix Remote client bug --- VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp | 84 +++++++++++++++++++++++++++-------------- 1 files changed, 55 insertions(+), 29 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp index 790adad..6d52346 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp @@ -48,7 +48,13 @@ running = false; return false; } - + ret = pthread_create(&jni_call_thid, NULL, CameraWrapper::jni_call_thd, this); + if(ret != 0) + { + LOGP(ERROR, "pthread_create jni_call_thid: %s/n", strerror(ret)); + running = false; + return false; + } return true; } @@ -116,8 +122,6 @@ } PL_Scale* plScale = (PL_Scale*)pipeLineRender->push_elem("PL_Scale"); - plScaleCfg.toWidth = 640; - plScaleCfg.toHeight = 480;//#todo move to jni ret = plScale->init(&plScaleCfg); if (!ret) { @@ -206,33 +210,13 @@ faceLabels.clear(); faceLabels.insert(std::make_pair(st_track_id, label)); + LOG_ERROR <<"client setFaceLabel : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL; } void CameraWrapper::fireFaceCount(int faceCount) { - // double check it's all ok - int getEnvStat = javaVM->GetEnv((void **)&(javaEnv), JNI_VERSION_1_6); - if (getEnvStat == JNI_EDETACHED) - { - //LOG_WARN << "GetEnv: not attached" << std::endl; - if (javaVM->AttachCurrentThread(&(javaEnv), NULL) != 0) - LOG_WARN << "Failed to attach" << LOG_ENDL; - else - getEnvStat = JNI_OK; - } - else if (getEnvStat == JNI_OK){ - } - else if (getEnvStat == JNI_EVERSION) - LOG_WARN << "GetEnv: version not supported" << LOG_ENDL; - else if (getEnvStat == JNI_ERR) - LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL; - - javaEnv->CallStaticVoidMethod(faceCallbackClazz, faceCallbackFunc, cameraIdx, faceCount); - - if (javaEnv->ExceptionCheck()) - javaEnv->ExceptionDescribe(); - - javaVM->DetachCurrentThread(); + this->faceCount = faceCount; + this->faceCountChanged = true; } bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args) @@ -298,7 +282,9 @@ void test_paint(CameraWrapper& cameraWrapper) { - cameraWrapper.plplContext.cmds.push_back(PLPLC_WTEXT); + //cameraWrapper.plplContext.clear(); + + cameraWrapper.plplContext.cmds.push_back(PLPLC_WTEXT); cameraWrapper.plplContext.params.push_back(100); cameraWrapper.plplContext.params.push_back(100); cameraWrapper.plplContext.params.push_back(PLPLType(L"涓枃鏄晩")); @@ -361,7 +347,7 @@ cameraWrapper.lastAliveTime = time(nullptr); - pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper)); + //pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper)); //#debug //test_paint(cameraWrapper); @@ -380,7 +366,7 @@ while(cameraWrapper.running) { sleep(10); - + continue; if (time(nullptr) - cameraWrapper.lastAliveTime > 20) { PL_RTSPClient* rtspClient = (PL_RTSPClient*)cameraWrapper.pipeLineDecoderDetector->at(0); @@ -390,3 +376,43 @@ } } } + +void *CameraWrapper::jni_call_thd(void *arg) { + + CameraWrapper* cameraWrapper = (CameraWrapper*)arg; + while(cameraWrapper->running) + { + if(cameraWrapper->faceCountChanged){ + // double check it's all ok + LOG_ERROR <<"client fireFaceCount start!!!!!!!!"<< LOG_ENDL; + int getEnvStat = cameraWrapper->javaVM->GetEnv((void **)&(cameraWrapper->javaEnv), JNI_VERSION_1_6); + if (getEnvStat == JNI_EDETACHED) + { + //LOG_WARN << "GetEnv: not attached" << std::endl; + if (cameraWrapper->javaVM->AttachCurrentThread(&(cameraWrapper->javaEnv), NULL) != 0) + LOG_WARN << "Failed to attach" << LOG_ENDL; + else + getEnvStat = JNI_OK; + } + else if (getEnvStat == JNI_OK){ + } + else if (getEnvStat == JNI_EVERSION) + LOG_WARN << "GetEnv: version not supported" << LOG_ENDL; + else if (getEnvStat == JNI_ERR) + LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL; + LOG_ERROR <<"client fireFaceCount end!!!!!!!!!!!!"<< LOG_ENDL; + + cameraWrapper->javaEnv->CallStaticVoidMethod(cameraWrapper->faceCallbackClazz, + cameraWrapper->faceCallbackFunc, + cameraWrapper->cameraIdx, + cameraWrapper->faceCount); + + if (cameraWrapper->javaEnv->ExceptionCheck()) + cameraWrapper->javaEnv->ExceptionDescribe(); + cameraWrapper->javaVM->DetachCurrentThread(); + cameraWrapper->faceCountChanged = false; + } + usleep(10000); + } + +} -- Gitblit v1.8.0