From c6968ba2fbd5e9f4e32fd5f62fd587f9a7d2ebc1 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 11 八月 2017 18:52:31 +0800 Subject: [PATCH] bug fix for rtsp server --- VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp | 123 ++++------------------------------------ 1 files changed, 13 insertions(+), 110 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp index c5bb607..45868e6 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp +++ b/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; - } } { @@ -142,30 +116,12 @@ } PL_Scale* plScale = (PL_Scale*)pipeLineRender->push_elem("PL_Scale"); - plScaleCfg.toWidth = 640; - plScaleCfg.toHeight = 480; 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"); @@ -229,23 +185,6 @@ // 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; } @@ -267,33 +206,31 @@ faceLabels.insert(std::make_pair(st_track_id, label)); } -static void invokeCallback(CameraWrapper& cameraWrapper, int faceCount) +void CameraWrapper::fireFaceCount(int faceCount) { - //jni thread may not able to invoke java callback // double check it's all ok - int getEnvStat = cameraWrapper.javaVM->GetEnv((void **)&(cameraWrapper.javaEnv), JNI_VERSION_1_6); + int getEnvStat = javaVM->GetEnv((void **)&(javaEnv), JNI_VERSION_1_6); if (getEnvStat == JNI_EDETACHED) { //LOG_WARN << "GetEnv: not attached" << std::endl; - if (cameraWrapper.javaVM->AttachCurrentThread(&(cameraWrapper.javaEnv), NULL) != 0) + 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_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; - cameraWrapper.javaEnv->CallStaticVoidMethod(cameraWrapper.faceCallbackClazz, cameraWrapper.faceCallbackFunc, cameraWrapper.cameraIdx, faceCount); + javaEnv->CallStaticVoidMethod(faceCallbackClazz, faceCallbackFunc, cameraIdx, faceCount); - if (cameraWrapper.javaEnv->ExceptionCheck()) - cameraWrapper.javaEnv->ExceptionDescribe(); + if (javaEnv->ExceptionCheck()) + javaEnv->ExceptionDescribe(); - cameraWrapper.javaVM->DetachCurrentThread(); + javaVM->DetachCurrentThread(); } bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args) @@ -357,26 +294,11 @@ 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); + 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"涓枃鏄晩")); @@ -397,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) { @@ -447,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)); + //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; -- Gitblit v1.8.0