From 9e5babf9db52e64bdae60137be7696e56241fca6 Mon Sep 17 00:00:00 2001 From: xingzilong <xingzilong@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 18 八月 2017 18:12:17 +0800 Subject: [PATCH] H264 NALU解析 并在RTSPServer判断 --- VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 41 insertions(+), 3 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp index 6218451..0cf6a61 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp @@ -6,11 +6,12 @@ #include <PL_Gainer.h> #include <PL_Paint.h> #include <PL_Scale.h> -#include <PL_V4L2Source.h> #include <PL_BlockGrouping.h> #include <PL_ColorConv.h> #include <PL_AndroidMediaCodecEncoder.h> #include <PL_RTSPServer2.h> +#include <iostream> + CameraWrapper::~CameraWrapper() { stop(); @@ -101,7 +102,6 @@ PipeLine::register_global_elem_creator("PL_Scale", create_PL_Scale); PipeLine::register_global_elem_creator("PL_ColorConv", create_PL_ColorConv); PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint); - PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source); PipeLine::register_global_elem_creator("PL_BlockGrouping", create_PL_BlockGrouping); PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); PipeLine::register_global_elem_creator("PL_RTSPServer2", create_PL_RTSPServer2); @@ -277,7 +277,6 @@ { if (faceLabels.size() > 32) faceLabels.clear(); - faceLabels.insert(std::make_pair(st_track_id, label)); } @@ -373,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) -- Gitblit v1.8.0