pans
2017-08-18 0607eba0ba964b3178507eabcd234fe7d8a0d860
capnp server fix bug

git-svn-id: http://192.168.1.226/svn/proxy@1025 454eff88-639b-444f-9e54-f578c98de674
4个文件已修改
67 ■■■■ 已修改文件
VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
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;
        }
    }
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;
}
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()));
}