Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_OpenCV / src / core / viewer / sequence / SequenceViewerCV.cpp
diff --git a/WCudaMSE/BilatTools_OpenCV/src/core/viewer/sequence/SequenceViewerCV.cpp b/WCudaMSE/BilatTools_OpenCV/src/core/viewer/sequence/SequenceViewerCV.cpp
new file mode 100755 (executable)
index 0000000..4461ed9
--- /dev/null
@@ -0,0 +1,111 @@
+#include "SequenceViewerCV.h"\r
+#include "ImageViewerCV.h"\r
+#include <iostream>\r
+#include <omp.h>\r
+\r
+using std::cout;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Implementation                                  *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+SequenceVieverCV::SequenceVieverCV(Capture_A* ptrCaptureur)\r
+    {\r
+    cout<<"[SequenceViever] : SequenceViever"<<endl;\r
+    this->ptrCaptureur = ptrCaptureur;\r
+    this->isStart = false;\r
+    }\r
+\r
+SequenceVieverCV::~SequenceVieverCV(void)\r
+    {\r
+    // rien\r
+    }\r
+\r
+void SequenceVieverCV::run()\r
+    {\r
+    cout<<"[SequenceViever] : run"<<endl;\r
+\r
+    if (!isStart)\r
+       {\r
+       isStart = true;\r
+\r
+       Mat image = ptrCaptureur->capturer();\r
+       ptrCaptureur->printInfo();\r
+\r
+       string titleFrame = ptrCaptureur->getTitle() + "[q to quit]";\r
+       ImageVieverCV imageViever(titleFrame);\r
+\r
+       Chronos chrono;\r
+       char key = 'a'; //disons\r
+       while (key != 'q')\r
+           {\r
+           imageViever.show(&image);\r
+           image = ptrCaptureur->capturer();\r
+\r
+           int timetoWaitYetMS = timeToWaitMS(&chrono); // FIXME\r
+           key = cvWaitKey(max(1, timetoWaitYetMS)); // attention 1 min, pour respecter cadence original\r
+\r
+           if (ptrCaptureur->nbCapture() % 60 == 0) //disons\r
+               {\r
+               cout << "[SequenceViewer] : fps = " << ptrCaptureur->fpsCapture() << endl;\r
+               // ptrCaptureur->printInfo();\r
+               }\r
+           }\r
+\r
+       isStart = false;\r
+       }\r
+    }\r
+\r
+int SequenceVieverCV::fps()\r
+    {\r
+    return ptrCaptureur->fpsCapture();\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+int SequenceVieverCV::timeToWaitMS(Chronos* ptrChrono) // TODO BUG play trop vite why?\r
+    {\r
+    double timeElapseS = ptrChrono->stop();\r
+    ptrChrono->start();\r
+\r
+    int timeElapseMS = (int) (timeElapseS * 1000);\r
+    int timeToWaitTheoriqueMS = ptrCaptureur->dtOriginalMS();\r
+\r
+    int timetoWaitYetMS = timeToWaitTheoriqueMS - timeElapseMS;\r
+    timetoWaitYetMS = max(0, timetoWaitYetMS); // 0 si negatif\r
+\r
+    // debug\r
+//     {\r
+//     cout << endl;\r
+//     cout << "timeToWaitTheorique (MS)   = " << timeToWaitTheoriqueMS << endl;\r
+//     cout << "timeElapse (MS)            = " << timeElapseMS << endl;\r
+//     cout << "timetoWaitYet (MS)         = " << timetoWaitYetMS << endl;\r
+//     cout << endl;\r
+//     }\r
+\r
+    return timetoWaitYetMS;\r
+    }\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r