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