00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVCAMERAWORKER_H
00026 #define QVCAMERAWORKER_H
00027
00028 #include <QVWorker>
00029 #include <QVImage>
00030
00081 class QVCameraWorker: public QVWorker
00082 {
00083 Q_OBJECT
00084 public:
00088 QVCameraWorker(QString name = QString(""));
00089
00091 ~QVCameraWorker();
00092
00103 bool linkUnspecifiedOutputProperty(QVPropertyContainer *dstCont, QString dstProp);
00104
00117 bool linkUnspecifiedOutputProperty(QVPropertyContainer *dstCont, QString dstProp1, QString dstProp2, QString dstProp3);
00118
00119 protected:
00120 bool realTime, noLoop;
00121
00134 virtual bool openCam(QString urlName, int &cols, int &rows, int &fps) = 0;
00135
00139 virtual void closeCam() = 0;
00140
00150 virtual bool grab(QVImage<uChar,1> &imgY, QVImage<uChar,1> &imgU, QVImage<uChar,1> &imgV) = 0;
00151
00152 private:
00153 bool newGrabbedFrame,flush_pending_images;
00154 QString urlName;
00155 QVImage<uChar,1> imageY, imageU, imageV;
00156
00157 void tryOpeningCam();
00158 void resetCameraWorker();
00159 void iterate();
00160 void processTrigger(QString str);
00161
00162 private slots:
00163 void grabFrame();
00164 };
00165
00166 #endif