From b022b91c0c6fa807424b6c12cc92ac5946838083 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 13 七月 2017 16:34:39 +0800
Subject: [PATCH] update pipeline

---
 RtspFace/PipeLine.h |   43 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/RtspFace/PipeLine.h b/RtspFace/PipeLine.h
index 5c3e03c..4848d69 100644
--- a/RtspFace/PipeLine.h
+++ b/RtspFace/PipeLine.h
@@ -8,12 +8,18 @@
 
 #define PLGP_RTSP_SDP "RTSP_SDP"
 #define PLGP_RTSP_FMTP "RTSP_FMTP"
+#define PLGP_RTSP_WIDTH "RTSP_WIDTH"
+#define PLGP_RTSP_HEIGHT "RTSP_HEIGHT"
+#define PLGP_RTSP_FPS "RTSP_FPS"
+
+#define ENABLE_PIPELINE_ELEM_TIMING_DEBUGGER
 
 class PipeLineElem;
 class PipeLine;
 
 struct PipeMaterial;
-typedef void (* pm_deleter_func)(PipeMaterial* pm);
+typedef void (* pm_deleter_func)(PipeMaterial* pm, bool lastRet);
+typedef bool (* pm_breaker_func)(const PipeMaterial* pm, void* args); // return true if continue breaking up
 
 // PipeMaterial instance should be unref when pay() finished
 struct PipeMaterial
@@ -21,11 +27,12 @@
 	enum PipeMaterialBufferType
 	{
 		PMT__FIRST,
-		PMT_NONE,     // buffer = nullptr, buffSize = 0
-		PMT_BYTES,    // buffer = uint8_t[N], buffSize = N
-		PMT_FRAME,    // buffer = MB_Frame*, buffSize = 0
-		PMT_PM_LIST,  // buffer = PipeMaterial*[N], buffSize = N
-		PMT_FRAME_LIST,  // buffer = MB_Frame*[N], buffSize = N
+		PMT_NONE,		// buffer = nullptr, buffSize = 0
+		PMT_BYTES,		// buffer = uint8_t[N], buffSize = N
+		PMT_PTR,		// buffer = void*, buffSize = 0
+		PMT_FRAME,		// buffer = MB_Frame*, buffSize = 0
+		PMT_PM_LIST,	// buffer = PipeMaterial*[N], buffSize = N
+		PMT_FRAME_LIST,	// buffer = MB_Frame*[N], buffSize = N
 		PMT__LAST
 	};
 
@@ -38,7 +45,19 @@
 	
 	PipeMaterial();
 	
-	void exec_deleter();
+	void exec_deleter(bool lastRet);
+	
+	void reset()
+	{
+		PipeMaterial _temp;
+		*this = _temp;
+	}
+
+	int breake(PipeMaterialBufferType selectPmType, int _selectMbfType, 
+		pm_breaker_func breaker, void* args = nullptr) const;
+
+	//#todo assemble pm/mbf into this pm
+	void assemble();
 };
 
 class PipeLineElem
@@ -109,4 +128,14 @@
 	params_map_t params_map;
 };
 
+class PipeLineElemTimingDebugger
+{
+public:
+	PipeLineElemTimingDebugger(const PipeLineElem* _elem);
+	~PipeLineElemTimingDebugger();
+	
+	const PipeLineElem* elem;
+	uint64_t beginTime;
+};
+
 #endif

--
Gitblit v1.8.0