\brief GetFirstProcessedFrame \return
| 206 | /// \return |
| 207 | /// |
| 208 | frame_ptr GetFirstProcessedFrame() |
| 209 | { |
| 210 | #if SHOW_QUE_LOG |
| 211 | QUE_LOG << "GetFirstProcessedFrame start" << std::endl; |
| 212 | #endif |
| 213 | std::unique_lock<std::mutex> lock(m_mutex); |
| 214 | while (m_que.empty() || m_que.front()->m_inTracker.load() != FrameInfo::StateCompleted) |
| 215 | { |
| 216 | if (m_break.load()) |
| 217 | break; |
| 218 | |
| 219 | m_cond.wait(lock); |
| 220 | //PrintQue(); |
| 221 | } |
| 222 | if (!m_break.load()) |
| 223 | { |
| 224 | frame_ptr frameInfo = std::move(m_que.front()); |
| 225 | m_que.pop_front(); |
| 226 | #if SHOW_QUE_LOG |
| 227 | QUE_LOG << "GetFirstProcessedFrame end: " << frameInfo->m_dt << ", frameInd " << frameInfo->m_frameInd << std::endl; |
| 228 | #endif |
| 229 | return frameInfo; |
| 230 | } |
| 231 | return nullptr; |
| 232 | } |
| 233 | |
| 234 | /// |
| 235 | /// \brief Signal |