From 142117991fae65646bc5dd59d96c4a5c5e8559ca Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 10 八月 2017 14:54:25 +0800
Subject: [PATCH] bug fix
---
VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp | 117 +++++-----------------------------------------------------
1 files changed, 10 insertions(+), 107 deletions(-)
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
index c5bb607..790adad 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;
- }
}
{
@@ -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");
@@ -229,23 +187,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 +208,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,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);
@@ -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));
//#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