@@ -267,6 +267,8 @@ void AsyncDetector::CaptureThread(std::string fileName, int startFrame, int* fra
267267 *framesCount = cvRound (capture.get (cv::CAP_PROP_FRAME_COUNT));
268268 capture.set (cv::CAP_PROP_POS_FRAMES, startFrame);
269269
270+ time_point_t startTimeStamp = std::chrono::system_clock::now ();
271+
270272 *fps = std::max (1 .f , (float )capture.get (cv::CAP_PROP_FPS));
271273 int frameHeight = cvRound (capture.get (cv::CAP_PROP_FRAME_HEIGHT));
272274
@@ -318,13 +320,13 @@ void AsyncDetector::CaptureThread(std::string fileName, int startFrame, int* fra
318320 {
319321 trackerSettings.m_minStaticTime = minStaticTime;
320322 trackerSettings.m_maxStaticTime = 60 ;
321- trackerSettings.m_maximumAllowedSkippedFrames = cvRound ( trackerSettings.m_minStaticTime * (*fps)); // Maximum allowed skipped frames
322- trackerSettings.m_maxTraceLength = 2 * trackerSettings.m_maximumAllowedSkippedFrames ; // Maximum trace length
323+ trackerSettings.m_maximumAllowedLostTime = trackerSettings.m_minStaticTime ; // Maximum allowed lost time
324+ trackerSettings.m_maxTraceLength = 2 * trackerSettings.m_maximumAllowedLostTime ; // Maximum trace length
323325 }
324326 else
325327 {
326- trackerSettings.m_maximumAllowedSkippedFrames = cvRound ( 2 * (*fps)) ; // Maximum allowed skipped frames
327- trackerSettings.m_maxTraceLength = cvRound ( 4 * (*fps)); // Maximum trace length
328+ trackerSettings.m_maximumAllowedLostTime = 2 . ; // Maximum allowed lost time
329+ trackerSettings.m_maxTraceLength = 4 .; // Maximum trace length
328330 }
329331
330332 // Capture the first frame
@@ -341,6 +343,7 @@ void AsyncDetector::CaptureThread(std::string fileName, int startFrame, int* fra
341343 {
342344 frame_ptr frameInfo (new FrameInfo (frameInd));
343345 frameInfo->m_dt = cv::getTickCount ();
346+ frameInfo->m_frameTimeStamp = startTimeStamp + std::chrono::milliseconds (cvRound (frameInd * (1000 .f / (*fps))));
344347 capture >> frameInfo->m_frame ;
345348 if (frameInfo->m_frame .empty ())
346349 {
@@ -412,7 +415,7 @@ void AsyncDetector::TrackingThread(const TrackerSettings& settings, FramesQueue*
412415 frame_ptr frameInfo = framesQue->GetFirstDetectedFrame ();
413416 if (frameInfo)
414417 {
415- tracker->Update (frameInfo->m_regions , frameInfo->m_clFrame , frameInfo->m_fps );
418+ tracker->Update (frameInfo->m_regions , frameInfo->m_clFrame , frameInfo->m_frameTimeStamp );
416419
417420 tracker->GetTracks (frameInfo->m_tracks );
418421 frameInfo->m_inTracker .store (FrameInfo::StateCompleted);
0 commit comments