Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_OpenCV / src / core / capture / cpp / CaptureVideo.cpp
diff --git a/WCudaMSE/BilatTools_OpenCV/src/core/capture/cpp/CaptureVideo.cpp b/WCudaMSE/BilatTools_OpenCV/src/core/capture/cpp/CaptureVideo.cpp
new file mode 100755 (executable)
index 0000000..fc8ddc5
--- /dev/null
@@ -0,0 +1,157 @@
+#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