Frapper  1.0a
CameraInputNode.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of FRAPPER
4 research.animationsinstitut.de
5 sourceforge.net/projects/frapper
6 
7 Copyright (c) 2008-2012 Filmakademie Baden-Wuerttemberg, Institute of Animation
8 
9 This program is free software; you can redistribute it and/or modify it under
10 the terms of the GNU Lesser General Public License as published by the Free Software
11 Foundation; version 2.1 of the License.
12 
13 This program is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16 
17 You should have received a copy of the GNU Lesser General Public License along with
18 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
21 -----------------------------------------------------------------------------
22 */
23 
33 #ifndef CAMERAINPUTNODE_H
34 #define CAMERAINPUTNODE_H
35 
36 #include "ImageNode.h"
37 #include "InstanceCounterMacros.h"
38 #include <QtCore/QThread>
39 #include "OgreManager.h"
40 #include "VideoSource.h"
41 #include <QWaitCondition>
42 #include <QMutex>
43 #include "GenericParameter.h"
44 
45 #if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32)
46  #include <windows.h>
47 #endif
48 
49 namespace ImageFilterNode {
50 using namespace Frapper;
51 
55 class CameraInputNode : public ImageNode
56 {
57  Q_OBJECT
59 
60 public:
61 
68  CameraInputNode ( QString name, ParameterGroup *parameterRoot );
69 
77  virtual inline ~CameraInputNode ();
78 
79 private: //methods
80 
84  virtual void run();
85 
90  void initialise(int CameraId);
91 
92 signals:
93 
97  void newFrame();
98 
99 private slots:
100 
104  void updateVideoTexture();
105 
109  void sleepOrWakeupThread();
110 
114  void changeCameraSource();
115 
119  void setSleepingThreadTime();
120 
121 private: //data
122 
126  Ogre::TexturePtr m_texture;
127 
132 
137 
142 
147 
152 
157 
162 
167 
171  Ogre::Image m_defaultImage;
172 
176  QWaitCondition m_moreFrames;
177 
182 
187 
192 
197 
201  QWaitCondition m_sleepThread;
202 
207 
212 
216  unsigned long m_sleepTime;
217 };
218 Q_DECLARE_METATYPE(cv::Mat*);
219 
220 } // namespace ImageFilterNode
221 
222 #endif