From 162d5940f06e97d460116408345ec1cb2a7d14bb Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 23 Jun 2026 13:43:11 +0200 Subject: [PATCH] add more log for debug info + last frame keeping --- source/webcam.cpp | 24 +++++++++++++++++------- source/webcam.h | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/source/webcam.cpp b/source/webcam.cpp index 6b9f8df..28516ce 100644 --- a/source/webcam.cpp +++ b/source/webcam.cpp @@ -9,6 +9,8 @@ #include "opencv2\opencv.hpp" #include #include +#include + using namespace GS; using namespace GS::Script; @@ -36,10 +38,12 @@ void ProcessWebcamThread::Execute() { bool temp_not_finish = true; bool temp_pause = true; bool temp_record_frame = false; - + current_frame_clock = 0.0; //construction LUT pour synchro avec la clock squirrel std::ofstream lutFile(outputVideoName+"_lut.bin", std::ios::binary); __LOG_CAM__ << "NEW RECORDING THREAD "<read(*im); - outputVideo->write(*im); + InputVideo->read(*im); + + __LOG_CAM__ << "Record frame clock: " << (float)current_frame_clock << "at index: "<< frame_index<<"\n"; + outputVideo->write(*im); + frame_index++; lutFile.write(reinterpret_cast(¤t_frame_clock),sizeof(float)); } } @@ -317,6 +324,8 @@ void Webcam::Close() { uchar *Webcam::SetFrame(float clock, GS::String record_name , int record_index) { //create buffer from lut + bool is_the_last_record = record_index == index_save_video - 1 ; + if(video_times.size() == 0){ //charger lut dans video_times __LOG_CAM__ << "Chargement LUT: "<(sizeof(float))); lutFile.read(reinterpret_cast(&end_time), sizeof(float)); + __LOG_CAM__ <<"end: "<<(float)end_time<<" asked clock: "<(&start_time), sizeof(float)); - + if(clock < start_time){ __LOG_CAM__ << "clock < start_time\n"; lutFile.close(); return NULL; } - else if(clock > end_time){ + else if(clock > end_time && !is_the_last_record){ __LOG_CAM__ << "clock > end_time\n"; lutFile.close(); return SetFrame(clock,record_name,record_index+1); //recursive search forward @@ -383,7 +392,8 @@ uchar *Webcam::SetFrame(float clock, GS::String record_name , int record_index) return NULL; //force reset if clock not in range - if(clock < video_times[0] || clock > video_times[video_times.size() -1]){ + if(clock < video_times[0] || (clock > video_times[video_times.size() -1] && !is_the_last_record)){ + __LOG_CAM__ << "CLEAR \n"; video_times.clear(); return SetFrame(clock, record_name , 0); } diff --git a/source/webcam.h b/source/webcam.h index a38b8a5..ac617ed 100644 --- a/source/webcam.h +++ b/source/webcam.h @@ -71,6 +71,7 @@ private: int index_save_video; int index_replay_video; + std::vector video_times; cv::VideoCapture *ReplayInputVideo; cv::Mat* ReplayIm;