+#include <iostream>\r
+#include "CaptureVideo.h"\r
+\r
+using std::cerr;\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
+/*------------------*\\r
+ |* Constructeur *|\r
+ \*-----------------*/\r
+\r
+/**\r
+ * see doc of Capture_A constructor for cuda use (ptrHostMemory)\r
+ */\r
+CaptureVideo::CaptureVideo(const string& videoName, const string& title, uchar4* ptrHostMemory) :\r
+ Capture_A(createStream(videoName), title, ptrHostMemory)\r
+ {\r
+ //cout << "[CaptureVideo] : CaptureVideo" << endl;\r
+ this->videoName = videoName;\r
+ configure();\r
+ }\r
+\r
+CaptureVideo::~CaptureVideo(void)\r
+ {\r
+ // rien\r
+ // delete ptrCaptureStream; in constructor\r
+ }\r
+\r
+/*------------------*\\r
+ |* Methode *|\r
+ \*-----------------*/\r
+\r
+void CaptureVideo::printInfo(void)\r
+ {\r
+ Capture_A::printInfo();\r
+\r
+ cout << "\tvideo name = " << videoName << endl;\r
+\r
+ if (isFpsSourceConnu)\r
+ {\r
+ cout << "\tfps(source) = " << fpsSource << endl;\r
+ }\r
+ else\r
+ {\r
+ cout << "\tfps(source) = Inconnu" << endl;\r
+ }\r
+\r
+ cout << endl;\r
+ }\r
+\r
+void CaptureVideo::readStream(VideoCapture* ptrCaptureStream, Mat* ptrMatCaptureSrc)\r
+ {\r
+ //cout << "[CaptureVideo] : readStream" << endl;\r
+\r
+ // plante si fin cideo\r
+ // (*ptrCaptureStream) >> (*ptrMatCaptureSrc);\r
+\r
+ // mieux\r
+ // cout << "[CaptureVideo] : read : try" << endl;\r
+ bool isOk = ptrCaptureStream->read(*ptrMatCaptureSrc);\r
+ // cout << "[CaptureVideo] : read : sucess" << endl;\r
+\r
+ bool isFinVideo = !isOk;\r
+ if (isFinVideo)\r
+ {\r
+ ptrCaptureStream->set(CV_CAP_PROP_POS_FRAMES, 0); // remise du lecteur à la position 0\r
+ ptrCaptureStream->read(*ptrMatCaptureSrc);\r
+ }\r
+ }\r
+\r
+/*------------------*\\r
+ |* get *|\r
+ \*-----------------*/\r
+\r
+int CaptureVideo::dtOriginalMS()\r
+ {\r
+ return dtSourceMS;\r
+ }\r
+\r
+int CaptureVideo::fpsOriginal()\r
+ {\r
+ return fpsSource;\r
+ }\r
+\r
+/*------------------*\\r
+ |* is *|\r
+ \*-----------------*/\r
+\r
+bool CaptureVideo::isFpsOriginalKnown()\r
+ {\r
+ return isFpsSourceConnu;\r
+ }\r
+\r
+string CaptureVideo::getVideoName()\r
+ {\r
+ return videoName;\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+VideoCapture* CaptureVideo::createStream(const string& videoName)\r
+ {\r
+ return new VideoCapture(videoName);\r
+ }\r
+\r
+void CaptureVideo::configure()\r
+ {\r
+ //cout << "[CaptureVideo] : configure" << endl;\r
+\r
+ //VideoCapture* ptrCaptureStream = getVideoCapture();\r
+\r
+ this->fpsSource = ptrCaptureStream->get(CV_CAP_PROP_FPS); // TODO bug? always 1000 windows\r
+\r
+ // cout << "fps video source (" << videoName << ") = ";\r
+\r
+ if (fpsSource != 0)\r
+ {\r
+ this->isFpsSourceConnu = true;\r
+ this->dtSourceMS = 1000 / fpsSource;\r
+\r
+ //cout << fps << endl << endl;\r
+ }\r
+ else\r
+ {\r
+ this->isFpsSourceConnu = false;\r
+ this->dtSourceMS = 0;\r
+\r
+ //cout << "fps unknown" << endl << endl;\r
+ }\r
+ }\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r