MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / GetLastUndetectedFrame

Method GetLastUndetectedFrame

async_detector/Queue.h:110–146  ·  view source on GitHub ↗

\brief GetLastUndetectedFrame \return

Source from the content-addressed store, hash-verified

108 /// \return
109 ///
110 frame_ptr GetLastUndetectedFrame()
111 {
112#if SHOW_QUE_LOG
113 QUE_LOG << "GetLastUndetectedFrame start" << std::endl;
114#endif
115 std::unique_lock<std::mutex> lock(m_mutex);
116 while (m_que.empty() || m_que.back()->m_inDetector.load() != FrameInfo::StateNotProcessed)
117 {
118 if (m_break.load())
119 break;
120
121 m_cond.wait(lock);
122 //PrintQue();
123 }
124 if (!m_break.load())
125 {
126 frame_ptr frameInfo = m_que.back();
127 assert(frameInfo->m_inDetector.load() == FrameInfo::StateNotProcessed);
128 assert(frameInfo->m_inTracker.load() == FrameInfo::StateNotProcessed);
129 frameInfo->m_inDetector.store(FrameInfo::StateInProcess);
130
131 queue_t::reverse_iterator it = m_que.rbegin();
132 for (++it; it != m_que.rend(); ++it)
133 {
134 if ((*it)->m_inDetector.load() == FrameInfo::StateNotProcessed)
135 (*it)->m_inDetector.store(FrameInfo::StateSkipped);
136 else
137 break;
138 }
139#if SHOW_QUE_LOG
140 PrintQue();
141 QUE_LOG << "GetLastUndetectedFrame end: " << frameInfo->m_dt << ", frameInd " << frameInfo->m_frameInd << std::endl;
142#endif
143 return frameInfo;
144 }
145 return nullptr;
146 }
147
148 ///
149 /// \brief SearchUntracked

Callers 1

DetectThreadMethod · 0.80

Calls 5

rbeginMethod · 0.80
rendMethod · 0.80
emptyMethod · 0.45
loadMethod · 0.45
waitMethod · 0.45

Tested by

no test coverage detected