From 6ec2cc5ab6bb2ef338461604636f5bd7dbb6ebbc Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 11 一月 2017 18:27:15 +0800
Subject: [PATCH] face daemon develop finish

---
 RtspFace/main_face_daemon.cpp                       |   10 ++--
 RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp |   50 ++++++++++++------------
 RtspFace/PL_SensetimeFaceDetect.h                   |    4 +-
 RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h      |    2 +
 RtspFace/PL_SensetimeFaceDetect.cpp                 |   11 +++--
 5 files changed, 40 insertions(+), 37 deletions(-)

diff --git a/RtspFace/PL_SensetimeFaceDetect.cpp b/RtspFace/PL_SensetimeFaceDetect.cpp
index 12f68ff..3707b9f 100644
--- a/RtspFace/PL_SensetimeFaceDetect.cpp
+++ b/RtspFace/PL_SensetimeFaceDetect.cpp
@@ -94,10 +94,10 @@
 		return false;
 	}
 
-	faceDB* _faceDB = (faceDB*)frame->_faceDB;
-	if (_faceDB == nullptr)
+	faceAPI* _faceAPI = (faceAPI*)frame->_faceAPI;
+	if (_faceAPI == nullptr)
 	{
-		LOG_ERROR << "faceDB is null";
+		LOG_ERROR << "faceAPI is null";
 		return false;
 	}
 	
@@ -109,8 +109,9 @@
 	}
 	
 	cv::Mat yuvMat(cv::Size(frame->width,frame->height), CV_8UC3, frame->buffer);
-	cv_feature_t* feature = _faceDB->extract_feature(yuvMat);
-	in->lastResult.st_id = _faceDB->search_db(feature);
+	//cv_feature_t* feature = _faceAPI->extract_feature(yuvMat);
+	//in->lastResult.st_id = _faceAPI->search_db(feature);
+	in->lastResult.st_id = _faceAPI->do_reasch(yuvMat);
 	//#todo release feature
 	
 	in->lastResult.school_id = frame->school_id;
diff --git a/RtspFace/PL_SensetimeFaceDetect.h b/RtspFace/PL_SensetimeFaceDetect.h
index 7a3fd0c..8454ad7 100644
--- a/RtspFace/PL_SensetimeFaceDetect.h
+++ b/RtspFace/PL_SensetimeFaceDetect.h
@@ -8,9 +8,9 @@
 struct SensetimeFaceDetectDbFrame : public MB_Frame
 {
 	int school_id;
-	void* _faceDB;
+	void* _faceAPI;
 	
-	SensetimeFaceDetectDbFrame() : MB_Frame(), school_id(-1), _faceDB(nullptr)
+	SensetimeFaceDetectDbFrame() : MB_Frame(), school_id(-1), _faceAPI(nullptr)
 	{ }
 };
 
diff --git a/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp b/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp
index 9a39a6f..147d4e1 100644
--- a/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp
+++ b/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp
@@ -1,5 +1,5 @@
 #include "FaceDBPool.h"
-#include "logger.h"
+#include "../../logger.h"
 #include "faceAPI.h"
 
 #include <pthread.h>
@@ -26,7 +26,7 @@
 struct MutexLocker
 {
 	pthread_mutex_t* mut;
-	MutexLocker(pthread_mutex_t* _mut) : mut(_mut)
+	MutexLocker(void* _mut) : mut((pthread_mutex_t*)_mut)
 	{
 		PLP_MUTEX_LOCK(mut,);
 	}
@@ -44,12 +44,12 @@
 	
 	ThreadSafeFaceDB() : dbid(-1), db_mutex(), api(nullptr)
 	{
-		pthread_mutex_init(db_mutex, NULL);
+		pthread_mutex_init(&db_mutex, NULL);
 	}
 	
 	~ThreadSafeFaceDB()
 	{
-		pthread_mutex_destroy(db_mutex);
+		pthread_mutex_destroy(&db_mutex);
 	}
 };
 
@@ -69,12 +69,12 @@
 	facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map;
 	for (facedb_map_t::iterator iter = _face_db_map->begin(); iter != _face_db_map->end(); ++iter)
 	{
-		iter->second.api->db_save();
-		delete iter->second.api;
+		iter->second->api->db_save();
+		delete iter->second->api;
 		delete iter->second;
 	}
 	
-	_face_db_map.clear();
+	_face_db_map->clear();
 	
 	pthread_mutex_destroy((pthread_mutex_t*)pool_mutex);
 	delete (pthread_mutex_t*)pool_mutex;
@@ -90,14 +90,14 @@
 	
 	facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map;
 	
-	if (_face_db_map.find(dbid) != _face_db_map.end())
+	if (_face_db_map->find(dbid) != _face_db_map->end())
 		return;
 	
 	ThreadSafeFaceDB* tsfdb = new ThreadSafeFaceDB;
-	tsfdb.dbid = dbid;
-	tsfdb.api = db;
+	tsfdb->dbid = dbid;
+	tsfdb->api = db;
 	
-	_face_db_map.insert(std::make_pair(dbid, tsfdb));
+	_face_db_map->insert(std::make_pair(dbid, tsfdb));
 }
 
 void FaceDBPool::unmanage(int dbid)
@@ -105,15 +105,15 @@
 	MutexLocker _ml(pool_mutex);
 
 	facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map;
-	facedb_map_t::iterator iter = _face_db_map.find(dbid);
-	if (iter == _face_db_map.end())
+	facedb_map_t::iterator iter = _face_db_map->find(dbid);
+	if (iter == _face_db_map->end())
 		return;
 	
-	iter->second.api->db_save();
-	delete iter->second.api;
+	iter->second->api->db_save();
+	delete iter->second->api;
 	delete iter->second;
 	
-	_face_db_map.erase(iter);
+	_face_db_map->erase(iter);
 }
 
 faceAPI* FaceDBPool::get_free(int dbid)
@@ -124,11 +124,11 @@
 		MutexLocker _ml(pool_mutex);
 		
 		facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map;
-		if (_face_db_map.empty())
+		if (_face_db_map->empty())
 			return nullptr;
 		
-		facedb_map_t::iterator iter = _face_db_map.find(dbid);
-		if (iter == _face_db_map.end())
+		facedb_map_t::iterator iter = _face_db_map->find(dbid);
+		if (iter == _face_db_map->end())
 			return nullptr;
 		
 		tsfdb = iter->second;
@@ -136,7 +136,7 @@
 
 	if (tsfdb != nullptr)
 	{
-		PLP_MUTEX_LOCK(tsfdb->db_mutex, nullptr);
+		PLP_MUTEX_LOCK(&(tsfdb->db_mutex), nullptr);
 		return tsfdb->api;
 	}
 }
@@ -149,18 +149,18 @@
 		MutexLocker _ml(pool_mutex);
 		
 		facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map;
-		if (_face_db_map.empty())
+		if (_face_db_map->empty())
 			return;
 		
-		facedb_map_t::iterator iter = _face_db_map.find(dbid);
-		if (iter == _face_db_map.end())
-			return nullptr;
+		facedb_map_t::iterator iter = _face_db_map->find(dbid);
+		if (iter == _face_db_map->end())
+			return;
 		
 		tsfdb = iter->second;
 	}
 	
 	if (tsfdb != nullptr)
 	{
-		PLP_MUTEX_UNLOCK(tsfdb->db_mutex,);
+		PLP_MUTEX_UNLOCK(&(tsfdb->db_mutex),);
 	}
 }
diff --git a/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h b/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h
index c41b0d8..75894c1 100644
--- a/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h
+++ b/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h
@@ -22,6 +22,8 @@
 	int do_reasch(cv::Mat image);
 	//注册  后台另一进程调用
 	int do_register(cv::Mat image);
+	
+	bool db_save();
 
 private:
 
diff --git a/RtspFace/main_face_daemon.cpp b/RtspFace/main_face_daemon.cpp
index ad8df4d..b614719 100644
--- a/RtspFace/main_face_daemon.cpp
+++ b/RtspFace/main_face_daemon.cpp
@@ -57,7 +57,7 @@
 
 PipeLinePool g_PipeLinePool;
 
-FaceDBPool g_FaceDBPool;//#todo config
+FaceDBPool g_faceAPIPool;//#todo config
 
 evclient_proc_t evclient_proc;
 
@@ -102,15 +102,15 @@
 	
 	FDP_Image* fdpImage = (FDP_Image*)(client.recvBuff + sizeof(EVPHeader));
 
-	faceAPI* _faceDB = g_FaceDBPool.get_free(fdpImage->school_id);
-	if (_faceDB == nullptr)
+	faceAPI* _faceAPI = g_faceAPIPool.get_free(fdpImage->school_id);
+	if (_faceAPI == nullptr)
 	{
 		LOG_WARN << "can't get face db";
 		ev_send_status_packet(client, EVPStatus::EVPS_PARAMETER_ERROR);
 		return false;
 	}
 	
-	PoolElemLocker<FaceDBPool*, int> _lock_faceDB(&g_FaceDBPool, fdpImage->school_id);
+	PoolElemLocker<FaceDBPool*, int> _lock_faceAPI(&g_faceAPIPool, fdpImage->school_id);
 
 	PipeLine* pipeLine = g_PipeLinePool.get_free();
 	if (pipeLine == nullptr)
@@ -132,7 +132,7 @@
 	dbFrame.width = fdpImage->width;
 	dbFrame.height = fdpImage->height;
 	dbFrame.school_id = fdpImage->school_id;
-	dbFrame._faceDB = _faceDB;
+	dbFrame._faceAPI = _faceAPI;
 
 	PipeMaterial pm;
 	pm.type = PipeMaterial::PMT_FRAME;

--
Gitblit v1.8.0