ARWrapper Provides a C++ wrapper around ARToolKit and exposes a C and JNI API

- Main Page
- Classes
- Files

- File List
- File Members

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 {
68 DEVICE_CLOSED,
69 DEVICE_OPEN,
70 DEVICE_GETTING_READY,
71 DEVICE_RUNNING
72 } DeviceState;
73
74 DeviceState deviceState;
75
76 char* cameraParam;
77 char* cameraParamBuffer;
78 size_t cameraParamBufferLen;
79 ARParamLT *cparamLT;
80
81 char* videoConfiguration;
82
83 int videoWidth;
84 int videoHeight;
85
86 AR_PIXEL_FORMAT pixelFormat;
87 #if defined(HAVE_ARM_NEON) || defined(HAVE_ARM64_NEON)
88 int m_fastPath;
89 #endif
90 #ifndef _WINRT
91 GLenum glPixIntFormat;
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