From c6968ba2fbd5e9f4e32fd5f62fd587f9a7d2ebc1 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 11 八月 2017 18:52:31 +0800
Subject: [PATCH] bug fix for rtsp server

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h |   63 +++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
index ed2bb5c..917fc08 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
@@ -2,24 +2,77 @@
 #define __FaceCache_H__
 
 #include <PipeLine.h>
+#include <vector>
+
+#define FACECACHEFORPLBG_RESULT_BUFFSIZE (1920 * 1080 * 2)
+
+struct NativeImgIdx
+{
+	int st_track_id;
+	int offset;
+	int size;
+	int type;
+	int width;
+	int height;
+
+	NativeImgIdx() : st_track_id(-1), offset(0), size(0), type(0), width(0), height(0)
+	{}
+
+	operator std::string() const;
+};
 
 class FaceCache
 {
 public:
+
+#ifdef USE_ST_SDK 
 	FaceCache();
 	~FaceCache();
+#else
+	FaceCache() : _ctx(nullptr) {}
+	~FaceCache() {}
+#endif
 	
 	// returns count of face
 	int cachePm(const PipeMaterial& pm);
+	size_t getFaceCount(const PipeMaterial& pm) const;
+
+	bool getFaceListPb(uint8_t* buffer, size_t& buffMaxSize);
 	
-	bool getFaceListPb(uint8_t* buffer, size_t& buffSize);
-	
-	bool getFaceListImage(int* buffIdx, size_t& count, uint8_t* buffImg, size_t& buffImgSize);
+	bool getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize);
 	
 private:
-	bool extractFace();
-	
 	void* _ctx;
 };
 
+
+class FaceCacheForPLBG
+{
+public:
+
+	FaceCacheForPLBG();
+	~FaceCacheForPLBG();
+
+	// returns count of face
+	int cachePm(const PipeMaterial& pm);
+	size_t getFaceCount(const PipeMaterial& pm) const;
+
+	bool getFaceListPb(uint8_t* buffer, size_t& buffMaxSize);
+	uint8_t* getFaceListPb(size_t& buffSize)
+	{
+		buffSize = FACECACHEFORPLBG_RESULT_BUFFSIZE;
+		if (!getFaceListPb(resultBuffer, buffSize))
+			return nullptr;
+		return resultBuffer;//#todo to cpp
+	}
+
+	bool getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize);
+	uint8_t* getFaceListImage(size_t& buffSize);
+
+
+private:
+	void* _ctx;
+	uint8_t* resultBuffer;
+};
+
 #endif

--
Gitblit v1.8.0