From 4db189a6ec2bd6b575d7f35011de063bdfe73456 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期一, 10 七月 2017 14:57:03 +0800
Subject: [PATCH] support st_track_id

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp |   31 +++++++++++++++++++++++++------
 1 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp
index 194a8b0..6147424 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp
@@ -56,6 +56,7 @@
         RectWrapper rw;
         rw.rect = iter->rect;
         rw.user_score_1 = ((90.0f - std::abs(iter->yaw)) + (90.0f - std::abs(iter->pitch)) + (90.0f - std::abs(iter->roll))) / 90.0f / 3 * iter->score;
+        rw.userData = (void*)(iter->id);
         rects.push_back(rw);
     }
 }
@@ -193,7 +194,8 @@
 
 bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args)
 {
-    PLPLContext& plplContext(*(PLPLContext*)args);
+    CameraWrapper& cameraWrapper = *(CameraWrapper*)args;
+    PLPLContext& plplContext(cameraWrapper.plplContext);
     const st_ff_vect_t& faceFeatures(*(const st_ff_vect_t*)(pm->buffer));
 
     plplContext.cmds.clear();
@@ -234,10 +236,15 @@
         plplContext.params.push_back(iter->rect.rightBottom.X);
         plplContext.params.push_back(iter->rect.rightBottom.Y);
 
-        plplContext.cmds.push_back(PLPLC_TEXT);
-        plplContext.params.push_back(iter->rect.leftTop.X);
-        plplContext.params.push_back(iter->rect.leftTop.Y);
-        plplContext.params.push_back(PLPLType("abc"));
+        std::map<int, std::string>::iterator iterFaceLabel = cameraWrapper.faceLabels.find(iter->id);
+        if (iterFaceLabel != cameraWrapper.faceLabels.end())
+        {
+            plplContext.cmds.push_back(PLPLC_TEXT);
+            plplContext.params.push_back(iter->rect.leftTop.X);
+            plplContext.params.push_back(iter->rect.leftTop.Y);
+            const char* label = iterFaceLabel->second.c_str();
+            plplContext.params.push_back(PLPLType(label));
+        }
     }
 
     return false;
@@ -262,6 +269,10 @@
 
 void test_paint(CameraWrapper& cameraWrapper)
 {
+    cameraWrapper.setFaceLabel(0, "vip");
+    cameraWrapper.setFaceLabel(1, "abc");
+    cameraWrapper.setFaceLabel(2, "wrn");
+
     cameraWrapper.plplContext.cmds.push_back(PLPLC_COLOR);
     cameraWrapper.plplContext.params.push_back('F');
     cameraWrapper.plplContext.params.push_back(255);
@@ -304,7 +315,7 @@
                 pmAnalizer.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_face, &(cameraWrapper));
         }
 
-        pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper.plplContext));
+        pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper));
 
         //#debug
         //test_paint(cameraWrapper);
@@ -324,3 +335,11 @@
 {
 	faceCacheLocked = false;
 }
+
+void CameraWrapper::setFaceLabel(int st_track_id, const std::string& label)
+{
+    if (faceLabels.size() > 32)
+        faceLabels.clear();
+
+    faceLabels.insert(std::make_pair(st_track_id, label));
+}

--
Gitblit v1.8.0