VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFunc.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIServer.cpp | ●●●●● 补丁 | 查看 | 原始文档 | 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())); }