houxiao
2017-07-20 5f5e870de69efe56d571a2c93362942af5bb49a5
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) { }