OvrvisionSDK  2.00
ovrvision_pro.h
1 // ovrvision_pro.h
2 // Version 1.62 : 22/Mar/2016
3 //
4 //MIT License
5 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6 //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7 //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8 //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
9 //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
10 //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
11 //THE SOFTWARE.
12 //
13 // Oculus Rift : TM & Copyright Oculus VR, Inc. All Rights Reserved
14 // Unity : TM & Copyright Unity Technologies. All Rights Reserved
15 
16 #ifndef __OVRVISION_PRO__
17 #define __OVRVISION_PRO__
18 
20 
21 //Pratform header
22 #ifdef WIN32
23 #ifndef _WIN32_WINNT
24 #define _WIN32_WINNT 0x400
25 #endif
26 #include <windows.h>
27 
28 #endif /*WIN32*/
29 
30 #ifdef MACOSX
31 
32 #endif /*MACOSX*/
33 
34 #ifdef LINUX
35 
36 #endif /*LINUX*/
37 
38 //Common header
39 #include <stdlib.h>
40 #include <stdio.h>
41 #include <math.h>
42 #include <string.h>
43 
44 #ifdef _OVRVISION_EXPORTS //in ovrvision
45 #if defined(WIN32)
46 #include "ovrvision_ds.h"
47 #elif defined(MACOSX)
48 #include "ovrvision_avf.h"
49 #elif defined(LINUX)
50 #include "ovrvision_v4l.h"
51 #endif
52 #include "OvrvisionProCL.h"
53 #else
54 //USB cameras driver
55 #ifdef WIN32
56 class OvrvisionDirectShow;
57 #elif defined(MACOSX)
58 #define OvrvisionAVFoundation void
59 #elif defined(LINUX)
60 class OvrvisionVideo4Linux;
61 #endif
62 //opencl class
63 class OvrvisionProOpenCL;
64 #endif /*_OVRVISION_EXPORTS*/
65 
67 namespace OVR {
68 
70 
71 #ifdef WIN32
72  #ifdef _OVRVISION_EXPORTS
73  #define OVRPORT __declspec(dllexport)
74  #else
75  #define OVRPORT __declspec(dllimport)
76  #endif
77 #endif /*WIN32*/
78 
79 #ifdef MACOSX
80  #define OVRPORT
81 #endif /*MACOSX*/
82 
83 #ifdef LINUX
84  #define OVRPORT
85 #endif /*LINUX*/
86 
87 #ifndef _OV_CAMEYE_ENUM_
88 #define _OV_CAMEYE_ENUM_
89 typedef enum ov_cameraeye {
92  OV_CAMEYE_LEFT = 0,
94  OV_CAMNUM,
95 } Cameye;
96 #endif
97 
100 typedef enum ov_cameraprop {
101  OV_CAM5MP_FULL = 0,
110 } Camprop;
111 
114 typedef enum ov_cameraquality {
115  OV_CAMQT_DMSRMP = 0,
118 } Camqt;
119 
121 typedef struct {
122  int offsetX;
123  int offsetY;
124  unsigned int width;
125  unsigned int height;
126 } ROI;
127 
128 //Sensor Define
129 const double SensorSizeWidth = 4.529;
130 const double SensorSizeHeight = 3.423;
131 const double SensorSizeScale = 0.7;
132 
133 //unsigned char to byte
134 typedef unsigned char byte;
135 typedef unsigned char* pbyte;
136 
138 
140 class OVRPORT OvrvisionPro
141 {
142 public:
144  OvrvisionPro();
146  ~OvrvisionPro();
147 
148  //Initialize
156  int Open(int locationID, OVR::Camprop prop, const char *pVendorName = NULL, int deviceType = -1, void *pD3D11Device = NULL);
158  void Close();
159 
160  //Processor
163  void PreStoreCamData(OVR::Camqt qt);
166  unsigned char* GetCamImageBGRA(OVR::Cameye eye);
170  void GetCamImageBGRA(unsigned char* pImageBuf, OVR::Cameye eye);
171 
172 
173  //Callback
174  void SetCallbackImageFunction(void(*func)());
175 
180  void GetStereoImageBGRA(unsigned char* pLeft, unsigned char* pRight, ROI roi);
181 
184  bool isOpen();
185 
186  //Propaty
189  int GetCamWidth();
192  int GetCamHeight();
195  int GetCamFramerate();
198  float GetCamFocalPoint();
201  float GetHMDRightGap(int at);
202 
205  int GetCamBuffersize();
208  int GetCamPixelsize();
209 
210  //Camera Propaty
213  int GetCameraExposure();
216  void SetCameraExposure(int value);
220  bool SetCameraExposurePerSec(float fps);
223  int GetCameraGain();
226  void SetCameraGain(int value);
229  int GetCameraWhiteBalanceR();
232  void SetCameraWhiteBalanceR(int value);
235  int GetCameraWhiteBalanceG();
238  void SetCameraWhiteBalanceG(int value);
241  int GetCameraWhiteBalanceB();
244  void SetCameraWhiteBalanceB(int value);
247  int GetCameraBLC();
250  void SetCameraBLC(int value);
251 
254  bool GetCameraWhiteBalanceAuto();
257  void SetCameraWhiteBalanceAuto(bool value);
258 
261  void SetCameraSyncMode(bool value);
262 
264  int OpenCLExtensions(int(*callback)(void *, const char *), void *item);
265 
266  // Grayscale image
268  void Grayscale(unsigned char *left, unsigned char *right); // 1/1 scaled
270  void GrayscaleHalf(unsigned char *left, unsigned char *right); // 1/2 scaled
272  void GrayscaleFourth(unsigned char *left, unsigned char *right); // 1/4 scaled
274  void GrayscaleEighth(unsigned char *left, unsigned char *right); // 1/8 scaled
275 
276  //Parameter EEPROM (Don't touch)
277  void UserDataAccessUnlock();
278  void UserDataAccessLock();
279  void UserDataAccessSelectAddress(unsigned int addr);
280  unsigned char UserDataAccessGetData();
281  void UserDataAccessSetData(unsigned char value);
282  void UserDataAccessSave();
283  void UserDataAccessCheckSumAddress();
284  //Save the present setup to EEPROM. (Don't touch)
285  bool CameraParamSaveEEPROM();
286  bool CameraParamResetEEPROM();
287 
288  // GPU texture
296 
319 
320  void CreateSkinTextures(int width, int height, unsigned int left, unsigned int right);
321 #ifdef WIN32
322  void CreateSkinTextures(int width, int height, void* left, void* right); // for D3D11
323 #endif
324 
327  void Capture(OVR::Camqt qt);
328 
334 
339 
340  void UpdateSkinTextures(unsigned int left, unsigned int right);
341  void UpdateImageTextures(unsigned int left, unsigned int right);
342 #ifdef WIN32
343  void UpdateSkinTextures(void* left, void* right); // for D3D11
344  void UpdateImageTextures(void* left, void* right);
345 #endif
346 
347 
348  // Skin property
352  ROI SetSkinScale(unsigned int scale);
353 
358  bool GetScaledImageRGBA(unsigned char *left, unsigned char *right);
359 
363  void GetSkinImage(unsigned char* pLeft, unsigned char* pRight);
364 
367  void DetectHand(int frames);
368 
373  int SkinRegion(unsigned char* left, unsigned char* right);
374 
380  void SetSkinHSV(int h_low, int h_high, int s_low, int s_high);
381 
387  void SetSkinHSV(int range[4]);
388 
392  int SetSkinThreshold(int threshold);
393 
397  int ColorHistgram(unsigned char* histgram);
398 
400  void GetStereoImageHSV(unsigned char* pLeft, unsigned char* pRight);
401 
402  void InspectTextures(unsigned char *left, unsigned char *right, unsigned int type = 0);
403 
406  static bool CheckGPU();
407 
408 private:
409 #ifdef WIN32
410  //DirectShow
411  OvrvisionDirectShow* m_pODS;
412 #elif defined(MACOSX)
413  OvrvisionAVFoundation* m_pOAV;
414 #elif defined(LINUX)
415  OvrvisionVideo4Linux* m_pOV4L;
416 #endif
417 
418  //OpenCL Ovrvision System
419  OvrvisionProOpenCL* m_pOpenCL;
420 
421  //Frame buffer
422  unsigned short* m_pFrame;
423 
424  //Pixels
425  byte* m_pPixels[OV_CAMNUM];
426 
427  //Camera status data
428  int m_width;
429  int m_height;
430  int m_framerate;
431  float m_focalpoint;
432  float m_rightgap[3]; //vector3
433  float m_expo_f;
434 
435  bool m_isOpen;
436  bool m_isCameraSync;
437 
438  //initialize setting
439  void InitCameraSetting();
440 };
441 
442 };
443 
444 #endif /*__OVRVISION_PRO__*/
1280x960 @45fps x2
Definition: ovrvision_pro.h:104
Demosaic.
Definition: ovrvision_pro.h:117
OvrvisionPro class.
Definition: ovrvision_pro.h:140
ov_cameraprop
Definition: ovrvision_pro.h:100
Demosaic & Remap.
Definition: ovrvision_pro.h:116
1280x960 @15fps x2 Only USB2.0 connection
Definition: ovrvision_pro.h:109
ROI.
Definition: ovrvision_pro.h:121
1280x800 @60fps x2
Definition: ovrvision_pro.h:106
960x950 @60fps x2
Definition: ovrvision_pro.h:105
ov_cameraeye
Definition: ovrvision_ar.h:87
OvrvisionSDK Group.
Definition: ovrvision_ar.h:63
unsigned int height
Width.
Definition: ovrvision_pro.h:125
int offsetY
OffsetX.
Definition: ovrvision_pro.h:123
1920x1080 @30fps x2
Definition: ovrvision_pro.h:103
ov_cameraquality
Definition: ovrvision_pro.h:114
640x480 @90fps x2
Definition: ovrvision_pro.h:107
Right camera.
Definition: ovrvision_ar.h:90
2560x1920 @15fps x2
Definition: ovrvision_pro.h:102
320x240 @120fps x2
Definition: ovrvision_pro.h:108
Left camera.
Definition: ovrvision_ar.h:89
unsigned int width
OffsetY.
Definition: ovrvision_pro.h:124