| | |
| | | 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;
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | |
|
| | | //static
|
| | | bool PipeLine::register_global_elem_creator(const std::string& type, elem_create_func_t func)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | PipeLineElem* PipeLine::at(int idx)
|
| | | {
|
| | | return elems[idx];
|
| | | }
|
| | |
|
| | | bool PipeLine::remove_elem(PipeLineElem* elem)
|
| | | {
|
| | | if(elem != nullptr)
|
| | |
| | | }
|
| | |
|
| | | 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
|
| | |
| | | if (pm == nullptr)
|
| | | pm = new (pmPlacement) PipeMaterial;
|
| | |
|
| | | bool lastRet = true;
|
| | | bool lastRet = true;
|
| | |
|
| | | if (elems.size() == 1)
|
| | | {
|
| | |
| | |
|
| | | if (lastRet)
|
| | | elem_last->pay(*pm);
|
| | | pm->exec_deleter(lastRet);
|
| | | return elem_last;
|
| | | pm->exec_deleter(lastRet);
|
| | | return elem_last;
|
| | | }
|
| | |
|
| | | return nullptr;
|
| | |
| | | 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) { }
|