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/FaceCache.h |   74 ++++++++++++++++++++++++++++++------
 1 files changed, 61 insertions(+), 13 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
index 892f659..917fc08 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCache.h
@@ -2,29 +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:
-	FaceCache()
-	{
-	}
+
+#ifdef USE_ST_SDK 
+	FaceCache();
+	~FaceCache();
+#else
+	FaceCache() : _ctx(nullptr) {}
+	~FaceCache() {}
+#endif
 	
 	// returns count of face
-	int cachePm(const PipeMaterial& pm)
-	{
-		return 0;
-	}
+	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)
-	{
-		return false;
-	}
+	bool getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize);
 	
-	bool getFaceListImage(int* buffIdx, size_t& count, uint8_t* buffImg, size_t& buffImgSize)
+private:
+	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)
 	{
-		return false;
+		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