Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_OpenCV / src / core / capture / cpp / CaptureVideo.cpp
1 #include <iostream>
2 #include "CaptureVideo.h"
3
4 using std::cerr;
5 using std::cout;
6 using std::endl;
7
8 /*----------------------------------------------------------------------*\
9 |* Declaration *|
10 \*---------------------------------------------------------------------*/
11
12 /*--------------------------------------*\
13 |* Public *|
14 \*-------------------------------------*/
15
16 /*--------------------------------------*\
17 |* Private *|
18 \*-------------------------------------*/
19
20 /*----------------------------------------------------------------------*\
21 |* Implementation *|
22 \*---------------------------------------------------------------------*/
23
24 /*--------------------------------------*\
25 |* Public *|
26 \*-------------------------------------*/
27
28 /*------------------*\
29 |* Constructeur *|
30 \*-----------------*/
31
32 /**
33 * see doc of Capture_A constructor for cuda use (ptrHostMemory)
34 */
35 CaptureVideo::CaptureVideo(const string& videoName, const string& title, uchar4* ptrHostMemory) :
36 Capture_A(createStream(videoName), title, ptrHostMemory)
37 {
38 //cout << "[CaptureVideo] : CaptureVideo" << endl;
39 this->videoName = videoName;
40 configure();
41 }
42
43 CaptureVideo::~CaptureVideo(void)
44 {
45 // rien
46 // delete ptrCaptureStream; in constructor
47 }
48
49 /*------------------*\
50 |* Methode *|
51 \*-----------------*/
52
53 void CaptureVideo::printInfo(void)
54 {
55 Capture_A::printInfo();
56
57 cout << "\tvideo name = " << videoName << endl;
58
59 if (isFpsSourceConnu)
60 {
61 cout << "\tfps(source) = " << fpsSource << endl;
62 }
63 else
64 {
65 cout << "\tfps(source) = Inconnu" << endl;
66 }
67
68 cout << endl;
69 }
70
71 void CaptureVideo::readStream(VideoCapture* ptrCaptureStream, Mat* ptrMatCaptureSrc)
72 {
73 //cout << "[CaptureVideo] : readStream" << endl;
74
75 // plante si fin cideo
76 // (*ptrCaptureStream) >> (*ptrMatCaptureSrc);
77
78 // mieux
79 // cout << "[CaptureVideo] : read : try" << endl;
80 bool isOk = ptrCaptureStream->read(*ptrMatCaptureSrc);
81 // cout << "[CaptureVideo] : read : sucess" << endl;
82
83 bool isFinVideo = !isOk;
84 if (isFinVideo)
85 {
86 ptrCaptureStream->set(CV_CAP_PROP_POS_FRAMES, 0); // remise du lecteur à la position 0
87 ptrCaptureStream->read(*ptrMatCaptureSrc);
88 }
89 }
90
91 /*------------------*\
92 |* get *|
93 \*-----------------*/
94
95 int CaptureVideo::dtOriginalMS()
96 {
97 return dtSourceMS;
98 }
99
100 int CaptureVideo::fpsOriginal()
101 {
102 return fpsSource;
103 }
104
105 /*------------------*\
106 |* is *|
107 \*-----------------*/
108
109 bool CaptureVideo::isFpsOriginalKnown()
110 {
111 return isFpsSourceConnu;
112 }
113
114 string CaptureVideo::getVideoName()
115 {
116 return videoName;
117 }
118
119 /*--------------------------------------*\
120 |* Private *|
121 \*-------------------------------------*/
122
123 VideoCapture* CaptureVideo::createStream(const string& videoName)
124 {
125 return new VideoCapture(videoName);
126 }
127
128 void CaptureVideo::configure()
129 {
130 //cout << "[CaptureVideo] : configure" << endl;
131
132 //VideoCapture* ptrCaptureStream = getVideoCapture();
133
134 this->fpsSource = ptrCaptureStream->get(CV_CAP_PROP_FPS); // TODO bug? always 1000 windows
135
136 // cout << "fps video source (" << videoName << ") = ";
137
138 if (fpsSource != 0)
139 {
140 this->isFpsSourceConnu = true;
141 this->dtSourceMS = 1000 / fpsSource;
142
143 //cout << fps << endl << endl;
144 }
145 else
146 {
147 this->isFpsSourceConnu = false;
148 this->dtSourceMS = 0;
149
150 //cout << "fps unknown" << endl << endl;
151 }
152 }
153
154 /*----------------------------------------------------------------------*\
155 |* End *|
156 \*---------------------------------------------------------------------*/
157