From 0607eba0ba964b3178507eabcd234fe7d8a0d860 Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 18 八月 2017 11:06:16 +0800
Subject: [PATCH] capnp server fix bug
---
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h | 4 +-
VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | 42 ++++++++++++++++++++
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp | 10 +++-
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp | 11 +++--
4 files changed, 57 insertions(+), 10 deletions(-)
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
index e084d8d..0cf6a61 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
@@ -10,6 +10,8 @@
#include <PL_ColorConv.h>
#include <PL_AndroidMediaCodecEncoder.h>
#include <PL_RTSPServer2.h>
+#include <iostream>
+
CameraWrapper::~CameraWrapper()
{
stop();
@@ -275,7 +277,6 @@
{
if (faceLabels.size() > 32)
faceLabels.clear();
-
faceLabels.insert(std::make_pair(st_track_id, label));
}
@@ -371,7 +372,46 @@
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);
+ //remote call start, 涓轰簡淇濊瘉閫氱敤鎬э紝鏈皢浠ヤ笅姝ラ灏佸叆RtspFaceDetectClient
+ //#todo 浼樺寲灏佽
+ try
+ {
+ LOG_INFO <<"try start"<< LOG_ENDL;
+// RtspFaceDetect::Client* rClient = getRtspFaceDetectClient()->getClient();
+// auto& waitScope = getRtspFaceDetectClient()->getWaitScope();
+
+ RtspFaceDetectClient* client = getRtspFaceDetectClient();
+ RtspFaceDetect::Client rClient = client->getEzRpcClient()->getMain<RtspFaceDetect>();
+ auto& waitScope = client->getWaitScope();
+
+ auto request = rClient.fireFaceCountListenerRequest();
+ request.setCameraIndex(cameraWrapper.cameraIdx);
+ request.setFaceCount(faceCount);
+ LOG_INFO <<"!!!!!"<<cameraWrapper.cameraIdx << "+" << faceCount << LOG_ENDL;
+ LOG_INFO <<"call client : i have face!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+ auto sendAct = request.send();
+ sendAct.ignoreResult().wait(waitScope);
+ }
+ catch (const kj::Exception& e)
+ {
+ LOG_INFO <<"catch!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+ LOG_ERROR << "catch!!!" <<e.getDescription().cStr() << LOG_ENDL;
+ std::cout << e.getDescription().cStr() << std::endl;
+ return false;
+ }
+ catch (std::exception e){
+ LOG_ERROR << "catch!!!" <<e.what() << LOG_ENDL;
+ }
+ //remote call end
+ return true;
}
void test_paint(CameraWrapper& cameraWrapper)
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h
index f5b2bd2..e32d26a 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h
@@ -57,7 +57,8 @@
static void *rServer_thd(void *arg)
{
- try {
+ try
+ {
RemoteServer &rs = *(RemoteServer *) arg;
capnp::EzRpcServer trpcServer(kj::heap<T>(), rs.host, rs.port);
auto &serverLoop = trpcServer.getWaitScope();
@@ -66,7 +67,6 @@
catch (kj::Exception e){
LOG_ERROR<<e.getLine()<<LOG_ENDL;
}
-
}
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
index 2b47182..1636105 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
@@ -79,15 +79,16 @@
::kj::Promise<void> RtspFaceViewImpl::getFaceList(GetFaceListContext context)
{
+ LOG_ERROR <<"getFaceList :start !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
auto results = context.getResults();
remoteGetFaceList(context.getParams(), results);
- LOG_ERROR <<"getFaceList : !!!!!!!!!!!!!!!"<< LOG_ENDL;
+
return kj::READY_NOW;
}
::kj::Promise<void> RtspFaceViewImpl::getFaceImages(GetFaceImagesContext context)
{
- auto results = context.getResults();
+ auto results = context.getResults();
remoteGetFaceListImage(context.getParams(), results);
LOG_ERROR <<"getFaceImages : !!!!!!!!!!!!!!"<< LOG_ENDL;
return kj::READY_NOW;
@@ -95,8 +96,10 @@
::kj::Promise<void> RtspFaceViewImpl::setFaceLabel(SetFaceLabelContext context)
{
- auto results = context.getResults();
- remoteSetFaceLabel(context.getParams(), results);
LOG_ERROR <<"setFaceLabel : !!!!!!!!!!!!"<< LOG_ENDL;
+ auto results = context.getResults();
+
+ remoteSetFaceLabel(context.getParams(), results);
+
return kj::READY_NOW;
}
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp
index 4e272dc..98118da 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp
@@ -39,7 +39,7 @@
const size_t _faceImagesSize = MAX_FACE * MAX_FACE_WIDTH * MAX_FACE_HEIGHT * 3;
uint8_t _faceImages[_faceImagesSize]; // android stack is small
-const size_t _faceListBufferSize = sizeof(MAX_FACE * MAX_FACE_WIDTH * MAX_FACE_HEIGHT*3);
+const size_t _faceListBufferSize = MAX_FACE * MAX_FACE_WIDTH * MAX_FACE_HEIGHT*3;
uint8_t faceListBuffer[_faceListBufferSize] = {0};
void remoteGetFaceListImage(const RtspFaceView::GetFaceImagesParams::Reader& params, RtspFaceView::GetFaceImagesResults::Builder& results){
@@ -50,7 +50,7 @@
memset(_faceImages, 0, _faceImagesSize);
bool ret = cameraWrapper.faceCache.getFaceListImage(imgIdxes, _faceImages, faceImagesSize);
if (imgIdxes.size() == 0){
- LOG_INFO << "No face image captured" << LOG_ENDL;
+ LOG_INFO << "No face image captured!!!!!" << LOG_ENDL;
return;
}
int imgIdxesSize = imgIdxes.size() * sizeof(NativeImgIdx);
@@ -58,10 +58,11 @@
memcpy(imgIndexData.begin(), imgIdxes.data(), imgIdxesSize);
auto imgData = results.initImgData(_faceImagesSize);
memcpy(imgData.begin(), _faceImages, _faceImagesSize);
- LOG_ERROR <<"c++ server : remoteGetFaceListImage!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+ LOG_ERROR <<"c++ server : remoteGetFaceListImage!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
}
void remoteGetFaceList(const RtspFaceView::GetFaceListParams::Reader& params, RtspFaceView::GetFaceListResults::Builder& results){
+
const int cameraIdx = params.getCameraIndex() - 1;
CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
uint8_t *pBufPB = faceListBuffer + sizeof(EVPHeader) + sizeof(FDP_FaceDetectPB);
@@ -69,11 +70,14 @@
cameraWrapper.faceCache.getFaceListPb(pBufPB, faceListBufferSize);
auto buffer = results.initFaceList(faceListBufferSize);
memcpy(buffer.begin(), pBufPB, faceListBufferSize);
+ results.setFaceList(buffer);
+
}
void remoteSetFaceLabel(const RtspFaceView::SetFaceLabelParams::Reader& params, RtspFaceView::SetFaceLabelResults::Builder& results){
const int cameraIdx = params.getCameraIndex() - 1;
CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
+ LOG_DEBUG<<"!!!!lable"<< params.toString().flatten().cStr() <<LOG_ENDL;
cameraWrapper.setFaceLabel(params.getTrackId(),std::wstring((wchar_t*)params.getLabel().begin()));
}
--
Gitblit v1.8.0