From 663104b9be90ed303b87c8acddac8421583a9e39 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 16 八月 2017 12:38:59 +0800
Subject: [PATCH] aaaaa
---
RtspFace/PipeLine.cpp | 74 ++++++++++++++++++++++++------------
1 files changed, 49 insertions(+), 25 deletions(-)
diff --git a/RtspFace/PipeLine.cpp b/RtspFace/PipeLine.cpp
index 4f25318..aa22039 100644
--- a/RtspFace/PipeLine.cpp
+++ b/RtspFace/PipeLine.cpp
@@ -65,24 +65,24 @@
for (size_t i = 0; i < buffSize; i++, pm++)
{
if (selectPmType == pm->type || selectPmType == PipeMaterial::PMT__FIRST || selectPmType == PipeMaterial::PMT__LAST)
- {
- if (pm->type == PipeMaterial::PMT_FRAME)
- {
- MB_Frame *mbf = (MB_Frame *) pm->buffer;
- if (selectMbfType == mbf->type || selectMbfType == MB_Frame::MBFT__FIRST || selectMbfType == MB_Frame::MBFT__LAST)
+ {
+ if (pm->type == PipeMaterial::PMT_FRAME)
+ {
+ MB_Frame *mbf = (MB_Frame *) pm->buffer;
+ if (selectMbfType == mbf->type || selectMbfType == MB_Frame::MBFT__FIRST || selectMbfType == MB_Frame::MBFT__LAST)
{
called++;
- if (!breaker(pm, args))
- break;
+ if (!breaker(pm, args))
+ break;
}
- }
- else
- {
+ }
+ else
+ {
called++;
- if (!breaker(pm, args))
- break;
- }
- }
+ if (!breaker(pm, args))
+ break;
+ }
+ }
}
}
break;
@@ -157,7 +157,6 @@
return true;
}
-
//static
bool PipeLine::register_global_elem_creator(const std::string& type, elem_create_func_t func)
{
@@ -190,6 +189,11 @@
}
}
+PipeLineElem* PipeLine::at(int idx)
+{
+ return elems[idx];
+}
+
bool PipeLine::remove_elem(PipeLineElem* elem)
{
if(elem != nullptr)
@@ -205,6 +209,26 @@
}
return false;
+}
+
+void PipeLine::finit(elem_destory_func_t elem_destory_func)
+{
+ while (!elems.empty())
+ {
+ PipeLineElem* elem = elems.back();
+
+ if (elem->manager == this)
+ {
+ elem->finit();
+ if (elem_destory_func != nullptr)
+ elem_destory_func(elem);
+ }
+
+ elems.pop_back();
+ }
+
+ elem_create_func_map.clear();
+ params_map.clear();
}
bool PipeLine::check_pipe_complete(PipeLineElem* lastRetElem) const
@@ -250,7 +274,7 @@
if (pm == nullptr)
pm = new (pmPlacement) PipeMaterial;
- bool lastRet = true;
+ bool lastRet = true;
if (elems.size() == 1)
{
@@ -294,8 +318,8 @@
if (lastRet)
elem_last->pay(*pm);
- pm->exec_deleter(lastRet);
- return elem_last;
+ pm->exec_deleter(lastRet);
+ return elem_last;
}
return nullptr;
@@ -328,18 +352,18 @@
PipeLineElemTimingDebugger::PipeLineElemTimingDebugger(const PipeLineElem* _elem) :
elem(_elem), beginTime(0)
{
- struct timeval _beginTime;
- gettimeofday(&_beginTime, NULL);
- beginTime = 1000000 * _beginTime.tv_sec + _beginTime.tv_usec;
+ struct timeval _beginTime;
+ gettimeofday(&_beginTime, NULL);
+ beginTime = 1000000 * _beginTime.tv_sec + _beginTime.tv_usec;
}
PipeLineElemTimingDebugger::~PipeLineElemTimingDebugger()
{
- struct timeval _endTime;
- gettimeofday(&_endTime, NULL);
- const uint64_t endTime = 1000000 * _endTime.tv_sec + _endTime.tv_usec;
+ struct timeval _endTime;
+ gettimeofday(&_endTime, NULL);
+ const uint64_t endTime = 1000000 * _endTime.tv_sec + _endTime.tv_usec;
- LOGP(WARN, "elem=%s@%llu, dura=%llu(us)", typeid(elem).name(), uint64_t(elem), uint64_t(endTime - beginTime));
+ LOGP(WARN, "elem=%s@%llu, dura=%llu(us)", typeid(elem).name(), uint64_t(elem), uint64_t(endTime - beginTime));
}
#else
PipeLineElemTimingDebugger::PipeLineElemTimingDebugger(const PipeLineElem* _elem) { }
--
Gitblit v1.8.0