00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVVIDEOREADERBLOCK_H
00026 #define QVVIDEOREADERBLOCK_H
00027
00028 #include <QVProcessingBlock>
00029 #include <QVImage>
00030 #include <QVVideoReader>
00031
00115 class QVVideoReaderBlock: public QVProcessingBlock
00116 {
00117 Q_OBJECT
00118 public:
00119
00123 QVVideoReaderBlock(QString name = QString(""));
00124
00126 ~QVVideoReaderBlock();
00127
00139 bool linkProperty(QVPropertyContainer *dstCont, QString dstProp);
00140
00155 bool linkProperty(QVPropertyContainer *dstCont, QString dstProp1, QString dstProp2, QString dstProp3, bool YUV_RGB=false);
00156
00157 protected:
00158 bool realTime, noLoop, deinterlaced;
00159
00160
00161
00162
00163
00164
00165
00166
00167 signals:
00169 void opened();
00170
00172 void closed();
00173
00175 void grabbed();
00176
00177 private:
00178 bool flush_pending_images;
00179 QString urlName;
00180 QVImage<uChar,1> imageY, imageU, imageV, imageR, imageG, imageB;
00181 QVImage<uChar,3> imageRGB;
00182
00183 void tryOpeningCam();
00184 void iterate();
00185 void connectOrDisconnectLinkedBlocks(bool connect_disconnect);
00186 QVVideoReader video_reader;
00187
00188 private slots:
00192 void setPos(int pos) { video_reader.seek(pos) ;};
00193
00198 void reopen();
00199
00203 void reset();
00204
00205 void grabFrame();
00206
00207 void nothing() {};
00208 };
00209
00210 #endif // QVVIDEOREADERBLOCK_H