ARWrapper
Provides a C++ wrapper around ARToolKit and exposes a C and JNI API
 All Classes Files Functions Variables Typedefs Enumerations Enumerator
VideoSource.h
Go to the documentation of this file.
1 /*
2  * VideoSource.h
3  * ARToolKit5
4  *
5  * This file is part of ARToolKit.
6  *
7  * ARToolKit is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * ARToolKit is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with ARToolKit. If not, see <http://www.gnu.org/licenses/>.
19  *
20  * As a special exception, the copyright holders of this library give you
21  * permission to link this library with independent modules to produce an
22  * executable, regardless of the license terms of these independent modules, and to
23  * copy and distribute the resulting executable under terms of your choice,
24  * provided that you also meet, for each linked independent module, the terms and
25  * conditions of the license of that module. An independent module is a module
26  * which is neither derived from nor based on this library. If you modify this
27  * library, you may extend this exception to your version of the library, but you
28  * are not obligated to do so. If you do not wish to do so, delete this exception
29  * statement from your version.
30  *
31  * Copyright 2015 Daqri, LLC.
32  * Copyright 2010-2015 ARToolworks, Inc.
33  *
34  * Author(s): Julian Looser, Philip Lamb
35  *
36  */
37 
38 #ifndef VIDEOSOURCE_H
39 #define VIDEOSOURCE_H
40 
41 #include "Platform.h"
42 
43 #include <AR/ar.h>
44 #include <AR/video.h>
45 
46 #include <ARWrapper/Image.h>
47 
48 #ifndef _WINRT
49 # if TARGET_PLATFORM_ANDROID || TARGET_PLATFORM_IOS
50 # include <AR/gsub_es.h>
51 # else
52 # include <AR/gsub_lite.h>
53  #endif
54 #endif
55 
63 class VideoSource {
64 
65 protected:
66 
67  typedef enum {
72  } DeviceState;
73 
75 
76  char* cameraParam;
79  ARParamLT *cparamLT;
80 
82 
83  int videoWidth;
85 
86  AR_PIXEL_FORMAT pixelFormat;
87 #if defined(HAVE_ARM_NEON) || defined(HAVE_ARM64_NEON)
89 #endif
90 #ifndef _WINRT
92  GLenum glPixFormat;
93  GLenum glPixType;
94 #endif
95 
96  ARUint8 *frameBuffer;
97  ARUint8 *frameBuffer2;
98  int frameStamp;
99 
100  int m_error;
101  void setError(int error);
102 
107  VideoSource();
108 
109 public:
110 
115  static VideoSource* newVideoSource();
116 
117  virtual ~VideoSource();
118 
119  int getError();
120 
125  bool isOpen();
126 
131  bool isRunning();
132 
137  void configure(const char* vconf, const char* cparaName, const char* cparaBuff, size_t cparaBuffLen);
138 
139 
144  ARParamLT* getCameraParameters();
145 
150  int getVideoWidth();
151 
156  int getVideoHeight();
157 
162  AR_PIXEL_FORMAT getPixelFormat();
163 
169  virtual const char* getName() = 0;
170 
175  virtual bool open() = 0;
176 
181  virtual bool close() = 0;
182 
187  virtual bool captureFrame() = 0;
188 
193  ARUint8* getFrame();
194 
200  int getFrameStamp();
201 
207  bool updateTexture(Color* buffer);
208 
209  bool fastPath();
210  bool updateTexture32(uint32_t *buffer);
211 
212 #ifndef _WINRT
213 
217  void updateTextureGL(int textureID);
218 #endif
219 };
220 
221 #endif // !VIDEOSOURCE_H