From e26a5550539fa0cad91313bf9670df605199a324 Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期二, 15 八月 2017 13:55:25 +0800
Subject: [PATCH] capnproto fix bug

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp |  239 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 136 insertions(+), 103 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
index e4890ea..474f89b 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
@@ -14,11 +14,13 @@
 #include <face_daemon_proto.h>
 
 #include <stdlib.h>
+#include <iostream>
 
 #include "DebugNetwork.h"
 #include "TeleWrapper.h"
 
 #include "cpu_sched_test.h"
+#include "RemoteFuncClient.h"
 //#include <mediastreamer2/include/mediastreamer2/msjava.h>
 
 std::stringstream logss;
@@ -36,6 +38,7 @@
 
 const size_t _faceImagesSize = MAX_FACE * MAX_FACE_WIDTH * MAX_FACE_HEIGHT * 3;
 uint8_t _faceImages[_faceImagesSize]; // android stack is small
+
 void remoteFireFaceCountListener(const RtspFaceDetect::FireFaceCountListenerParams::Reader& params, RtspFaceDetect::FireFaceCountListenerResults::Builder& results){
     int count = params.getFaceCount();
     int index = params.getCameraIndex();
@@ -46,20 +49,30 @@
 
 void Java_cn_com_basic_face_util_RtspFaceNative_init(JNIEnv *env, jclass clazz)
 {
-g_logger.set_level(INFO);
+    g_logger.set_level(INFO);
 
-cpu_sched();
+    cpu_sched();
 
-for (size_t i = 0; i < CAMERA_COUNT; i++)
-{
-	g_CameraWrappers[i].cameraIdx = i + 1;
+#ifdef USE_ST_SDK
+    PipeLine::register_global_elem_creator("PL_SensetimeFaceTrackMitiTrd", create_PL_SensetimeFaceTrackMultiTrd);
+#endif
 
-	g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine;
-	g_CameraWrappers[i].pipeLineRender = new PipeLine;
-	//PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector));
-}
+    for (size_t i = 0; i < CAMERA_COUNT; i++)
+    {
+        g_CameraWrappers[i].cameraIdx = i + 1;
 
-g_TeleWrapper.start();
+        g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine;
+        g_CameraWrappers[i].pipeLineRender = new PipeLine;
+        //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector));
+    }
+
+    g_TeleWrapper.start();
+    //pansen test Client start
+    LOG_ERROR << "pansen test Client start" << std::endl;
+    startRemoteServer();
+    LOG_ERROR << "pansen test Client end" << std::endl;
+    //pansen test Client end
+
 }
 
 void
@@ -200,13 +213,13 @@
         cameraWrapper.asvrConfig.outputOriginFrame = true;
         cameraWrapper.asvrConfig.outputRenderFrame = true;
         cameraWrapper.asvrConfig.scaleToWidth = 0;
-		cameraWrapper.asvrConfig.scaleToHeight = 0;
-		cameraWrapper.asvrConfig.directlyDisplay = true;
+        cameraWrapper.asvrConfig.scaleToHeight = 0;
+        cameraWrapper.asvrConfig.directlyDisplay = true;
     }
 
-	cameraWrapper.fontPath = "/data/msyh.ttc";
+    cameraWrapper.fontPath = "/data/msyh.ttc";
 
-	bool ret = cameraWrapper.initPl();
+    bool ret = cameraWrapper.initPl();
     if (ret)
         return (cameraWrapper.start() ? JNI_TRUE : JNI_FALSE);
     else
@@ -356,11 +369,34 @@
     size_t buffSize = sizeof(buffer);
 
     bool ret = false;
-#ifdef USE_ST_SDK
+
     uint8_t *pBufPB = buffer + sizeof(EVPHeader) + sizeof(FDP_FaceDetectPB);
     buffSize = sizeof(buffer) - sizeof(EVPHeader) - sizeof(FDP_FaceDetectPB);
-    ret = cameraWrapper.faceCache.getFaceListPb(pBufPB, buffSize);
-#endif
+
+// ps add -----8.11-----
+    try
+    {
+        LOG_ERROR <<"client : i want getFaceList!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+        RtspFaceViewClient* client = getRtspFaceViewClient();
+        RtspFaceView::Client rClient = client->getEzRpcClient()->getMain<RtspFaceView>();
+        auto& waitScope =client->getWaitScope();
+
+        auto  request = rClient.getFaceListRequest();
+        request.setCameraIndex(cameraIdx);
+        auto sendAct = request.send();
+        auto  result =sendAct.wait(waitScope);
+        ret = result.getFaceList().size() > 0;
+        LOG_DEBUG << "@@@ getFaceList get data" << LOG_ENDL;
+        memcpy(pBufPB,result.getFaceList().begin(),buffSize);
+    }
+    catch (const kj::Exception& e)
+    {
+        LOG_ERROR <<e.getDescription().cStr()<< LOG_ENDL;
+        ret = false;
+    }
+    //-------end-------
+    LOG_ERROR <<"client : i want getFaceList   end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    //ret = cameraWrapper.faceCache.getFaceListPb(pBufPB, buffSize);
 
     if (!ret)
     {
@@ -405,71 +441,6 @@
     return buffSize;
 }
 
-jobject
-_Java_cn_com_basic_face_util_RtspFaceNative_getFaceImages(JNIEnv *env, jclass clazz, jint cameraIdx,
-                                                          jobject faceImages)
-{
-    LOG_DEBUG << "@@@ _Java_cn_com_basic_face_util_RtspFaceNative_getFaceImages" << LOG_ENDL;
-    assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
-    cameraIdx -= 1;
-    CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]);
-
-    std::vector<NativeImgIdx> imgIdxes;
-
-    memset(_faceImages, 0, _faceImagesSize);
-
-    bool ret = false;
-
-#ifdef USE_ST_SDK
-    size_t faceImagesSize =_faceImagesSize;
-    ret = cameraWrapper.faceCache.getFaceListImage(imgIdxes, _faceImages,faceImagesSize);
-#endif
-
-    if (imgIdxes.size() == 0)
-    {
-        LOG_INFO << "No face image captured" << LOG_ENDL;
-        return nullptr;
-    }
-
-    jclass jcRefByteArray = env->FindClass("cn/com/basic/face/util/RefByteArray");
-    jfieldID jfRefByteArray_arr = env->GetFieldID(jcRefByteArray, "arr", "[B");
-
-    jbyteArray jbaFaceImages = env->NewByteArray(_faceImagesSize);
-    LOG_DEBUG << "_faceImagesSize=" << _faceImagesSize << LOG_ENDL;
-    env->SetByteArrayRegion(jbaFaceImages, 0, _faceImagesSize, (const jbyte *) _faceImages);
-    env->SetObjectField(faceImages, jfRefByteArray_arr, jbaFaceImages);
-
-    jclass jcArrayList = env->FindClass("java/util/ArrayList");
-    jmethodID jmArrayList_ctor = env->GetMethodID(jcArrayList, "<init>", "()V");
-    jmethodID jmArrayList_add = env->GetMethodID(jcArrayList, "add", "(Ljava/lang/Object;)Z");
-
-    jclass jcNativeImgIdx = env->FindClass("cn/com/basic/face/util/NativeImgIdx");
-    jmethodID jmNativeImgIdx_ctor = env->GetMethodID(jcNativeImgIdx, "<init>", "()V");
-    jfieldID jfNativeImgIdx_offset = env->GetFieldID(jcNativeImgIdx, "offset", "I");
-    jfieldID jfNativeImgIdx_size = env->GetFieldID(jcNativeImgIdx, "size", "I");
-    jfieldID jfNativeImgIdx_type = env->GetFieldID(jcNativeImgIdx, "type", "I");
-    jfieldID jfNativeImgIdx_width = env->GetFieldID(jcNativeImgIdx, "width", "I");
-    jfieldID jfNativeImgIdx_height = env->GetFieldID(jcNativeImgIdx, "height", "I");
-
-    jobject jobjArrayList_ImgIdxes = env->NewObject(jcArrayList, jmArrayList_ctor);
-
-    for (size_t i = 0; i < imgIdxes.size(); i++)
-    {
-        jobject jobjNativeImgIdx = env->NewObject(jcNativeImgIdx, jmNativeImgIdx_ctor);
-        env->SetIntField(jobjNativeImgIdx, jfNativeImgIdx_offset, imgIdxes[i].offset);
-        env->SetIntField(jobjNativeImgIdx, jfNativeImgIdx_size, imgIdxes[i].size);
-        env->SetIntField(jobjNativeImgIdx, jfNativeImgIdx_type, imgIdxes[i].type);
-        env->SetIntField(jobjNativeImgIdx, jfNativeImgIdx_width, imgIdxes[i].width);
-        env->SetIntField(jobjNativeImgIdx, jfNativeImgIdx_height, imgIdxes[i].height);
-
-        env->CallBooleanMethod(jobjArrayList_ImgIdxes, jmArrayList_add, jobjNativeImgIdx);
-
-        LOG_DEBUG << "imgIdx " << i << ":" << std::string(imgIdxes[i]) << LOG_ENDL;
-    }
-
-    return jobjArrayList_ImgIdxes;
-}
-
 jobject Java_cn_com_basic_face_util_RtspFaceNative_getFaceImages(JNIEnv *env, jclass clazz,
                                                                  jint cameraIdx)
 {
@@ -480,12 +451,40 @@
 
     std::vector<NativeImgIdx> imgIdxes;
     size_t _faceImagesSize = MAX_FACE * MAX_FACE_WIDTH * MAX_FACE_HEIGHT * 3;
-    uint8_t *_faceImages = new uint8_t[_faceImagesSize]; // android stack is small
     memset(_faceImages, 0, _faceImagesSize);
 
     bool ret = false;
 
 #ifdef USE_ST_SDK
+
+    //#ps add --------8.11-------
+    LOG_ERROR <<"client : i want getFaceImages!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    try
+    {
+        RtspFaceViewClient* client = getRtspFaceViewClient();
+        RtspFaceView::Client rClient = client->getEzRpcClient()->getMain<RtspFaceView>();
+        auto& waitScope =client->getWaitScope();
+
+        auto  request = rClient.getFaceImagesRequest();
+        request.setCameraIndex(cameraIdx);
+        auto sendAct = request.send();
+        auto result = sendAct.wait(waitScope);
+        if(result.getImgIndexData().size() >0 && result.getImgData().size()>0)
+        {
+            ret =true;
+            LOG_DEBUG << "@@@ getFaceImages  get data" << LOG_ENDL;
+            memcpy(_faceImages,result.getImgData().begin(),result.getImgData().size());
+            memcpy(&imgIdxes ,result.getImgIndexData().begin() ,result.getImgIndexData().size());
+        }
+    }
+    catch (const kj::Exception& e)
+    {
+        std::cout << e.getDescription().cStr() << std::endl;
+        ret = false;
+        LOG_ERROR << "Java_cn_com_basic_face_util_RtspFaceNative_getFaceImages try fail" << LOG_ENDL;
+    }
+    LOG_ERROR <<"client : i want getFaceImages    end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    //-------end-------
     ret = cameraWrapper.faceCache.getFaceListImage(imgIdxes, _faceImages, _faceImagesSize);
 #endif
 
@@ -625,44 +624,46 @@
 
 bool Java_cn_com_basic_face_util_RtspFaceNative_teleCall(JNIEnv *env, jclass clazz, jstring phone)
 {
-	std::string _phone;
-	{
-		const char *utfFunc = env->GetStringUTFChars(phone, NULL);
-		_phone = utfFunc;
-		env->ReleaseStringUTFChars(phone, utfFunc);
-	}
+    std::string _phone;
+    {
+        const char *utfFunc = env->GetStringUTFChars(phone, NULL);
+        _phone = utfFunc;
+        env->ReleaseStringUTFChars(phone, utfFunc);
+    }
 
-	const char *phoneNum = _phone.c_str();
-	TeleTask  task;
-	task.command= TeleTask::CALL;
-	task.param = phoneNum;
-	LOG_INFO << "Java_cn_com_basic_face_util_RtspFaceNative_telCall::jni" << LOG_ENDL;
-	//
-	g_TeleWrapper.pushTask(task);
+    const char *phoneNum = _phone.c_str();
+    TeleTask  task;
+    task.command= TeleTask::CALL;
+    task.param = phoneNum;
+    LOG_INFO << "Java_cn_com_basic_face_util_RtspFaceNative_telCall::jni" << LOG_ENDL;
+    //
+    g_TeleWrapper.pushTask(task);
 }
 
 void Java_cn_com_basic_face_util_RtspFaceNative_teleHang(JNIEnv *env, jclass clazz)
 {
-	TeleTask  task;
-	task.command =TeleTask::HANGUP;
-	//
-	g_TeleWrapper.pushTask(task);
+    TeleTask  task;
+    task.command =TeleTask::HANGUP;
+    //
+    g_TeleWrapper.pushTask(task);
 }
 
 void Java_cn_com_basic_face_util_RtspFaceNative_teleShutdown(JNIEnv *env, jclass clazz)
 {
-	LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_telShutdown" << LOG_ENDL;
-	g_TeleWrapper.stop();
+    LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_telShutdown" << LOG_ENDL;
+    g_TeleWrapper.stop();
 }
 
 void Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel(JNIEnv *env, jclass clazz, jint cameraIdx, jint stTrackId, jstring label)
 {
     LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel" << LOG_ENDL;
+    LOG_ERROR <<"ps ------------start"<< LOG_ENDL;
     assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
     cameraIdx -= 1;
     CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]);
     const jchar* jchars = env->GetStringChars(label, nullptr);
     std::wstring wstr;
+    LOG_ERROR <<"ps ------------4"<< LOG_ENDL;
     int lenth = env->GetStringLength(label);
 
     for (int i = 0; i < lenth; ++i) {
@@ -670,7 +671,39 @@
         wchar_t wt = (wchar_t)jc;
         wstr.push_back(wt);
     }
+
     env->ReleaseStringChars(label,jchars);
-    cameraWrapper.setFaceLabel(stTrackId, wstr);
+
+    // ps add ------8.11---------
+    LOG_ERROR <<"client : i want setFacelable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    try
+    {
+//        auto& waitScope = getRtspFaceViewClient()->getWaitScope();
+//        RtspFaceView::Client& rClient = getRtspFaceViewClient()->getClient();
+
+        RtspFaceViewClient* client = getRtspFaceViewClient();
+        RtspFaceView::Client rClient = client->getEzRpcClient()->getMain<RtspFaceView>();
+        auto& waitScope =client->getWaitScope();
+
+        auto  request = rClient.setFaceLabelRequest();
+        request.setCameraIndex(cameraIdx);
+        const capnp::Data::Builder &labelData = request.initLabel(wstr.size());
+        LOG_ERROR <<"ps ------------3"<< LOG_ENDL;
+        memcpy((char*)labelData.begin(), wstr.c_str(), wstr.size());
+        request.setLabel(labelData);
+        request.setTrackId(stTrackId);
+        LOG_ERROR <<"ps ------------2"<< LOG_ENDL;
+        auto sendAct = request.send();
+        sendAct.wait(waitScope);
+    }
+    catch (const kj::Exception& e)
+    {
+        std::cout << e.getDescription().cStr() << std::endl;
+        return;
+    }
+    LOG_ERROR <<"client : i want setFacelable   end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+
+    //-------end-------
+    //cameraWrapper.setFaceLabel(stTrackId, wstr);
 }
 } // extern C

--
Gitblit v1.8.0