Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/Include/OniCAPI.h b/Include/OniCAPI.h
- index aea426d..fceaa6f 100644
- --- a/Include/OniCAPI.h
- +++ b/Include/OniCAPI.h
- @@ -30,6 +30,7 @@
- /** Initialize OpenNI2. Use ONI_API_VERSION as the version. */
- ONI_C_API OniStatus oniInitialize(int apiVersion);
- +ONI_C_API void oniSetLibraryPath(char const *p);
- /** Shutdown OpenNI2 */
- ONI_C_API void oniShutdown();
- diff --git a/Include/OpenNI.h b/Include/OpenNI.h
- index 52324b4..53e210d 100644
- --- a/Include/OpenNI.h
- +++ b/Include/OpenNI.h
- @@ -2099,6 +2099,12 @@ public:
- return (Status)oniInitialize(ONI_API_VERSION); // provide version of API, to make sure proper struct sizes are used
- }
- + static void setLibraryPath(char const *p)
- + {
- + oniSetLibraryPath(p);
- + }
- +
- +
- /**
- Stop using the library. Unload all drivers, close all streams and devices.
- Once @ref shutdown was called, no other calls to OpenNI is allowed.
- diff --git a/Samples/AndroidRead/Android.mk b/Samples/AndroidRead/Android.mk
- new file mode 100644
- index 0000000..08f38c4
- --- /dev/null
- +++ b/Samples/AndroidRead/Android.mk
- @@ -0,0 +1,48 @@
- +# OpenNI 2.x Android makefile.
- +# Copyright (C) 2012 PrimeSense Ltd.
- +#
- +# Licensed under the Apache License, Version 2.0 (the "License");
- +# you may not use this file except in compliance with the License.
- +# You may obtain a copy of the License at
- +#
- +# http://www.apache.org/licenses/LICENSE-2.0
- +#
- +# Unless required by applicable law or agreed to in writing, software
- +# distributed under the License is distributed on an "AS IS" BASIS,
- +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- +# See the License for the specific language governing permissions and
- +# limitations under the License.
- +
- +LOCAL_PATH := $(call my-dir)
- +
- +include $(CLEAR_VARS)
- +
- +# Sources
- +MY_SRC_FILES := \
- + $(LOCAL_PATH)/*.cpp
- +
- +MY_SRC_FILE_EXPANDED := $(wildcard $(MY_SRC_FILES))
- +LOCAL_SRC_FILES := $(MY_SRC_FILE_EXPANDED:$(LOCAL_PATH)/%=%)
- +
- +# C/CPP Flags
- +LOCAL_CFLAGS += $(OPENNI2_CFLAGS) -DANDROID_MODULE
- +
- +# Includes
- +LOCAL_C_INCLUDES := \
- + $(LOCAL_PATH)/../../Include \
- + $(LOCAL_PATH)/../Common
- +LOCAL_LDFLAGS := -llog
- +
- +LOCAL_STATIC_LIBRARIES += libstlport
- +
- +LOCAL_C_INCLUDES += external/stlport/stlport
- +LOCAL_C_INCLUDES += bionic
- +
- +# Dependencies
- +LOCAL_SHARED_LIBRARIES := libOpenNI2
- +
- +# Output
- +LOCAL_MODULE := AndroidRead
- +
- +#include $(BUILD_EXECUTABLE)
- +include $(BUILD_SHARED_LIBRARY)
- diff --git a/Samples/AndroidRead/Makefile b/Samples/AndroidRead/Makefile
- new file mode 100644
- index 0000000..9904e93
- --- /dev/null
- +++ b/Samples/AndroidRead/Makefile
- @@ -0,0 +1,17 @@
- +include ../../ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
- +
- +BIN_DIR = ../../Bin
- +
- +INC_DIRS = \
- + ../../Include \
- + ../Common
- +
- +SRC_FILES = *.cpp
- +
- +USED_LIBS += OpenNI2
- +
- +EXE_NAME = SimpleRead
- +
- +CFLAGS += -Wall
- +
- +include ../../ThirdParty/PSCommon/BuildSystem/CommonCppMakefile
- diff --git a/Samples/AndroidRead/com_zero997_structurescanner_StructureScanner.h b/Samples/AndroidRead/com_zero997_structurescanner_StructureScanner.h
- new file mode 100644
- index 0000000..59854b3
- --- /dev/null
- +++ b/Samples/AndroidRead/com_zero997_structurescanner_StructureScanner.h
- @@ -0,0 +1,45 @@
- +/* DO NOT EDIT THIS FILE - it is machine generated */
- +#include <jni.h>
- +/* Header for class com_zero997_structurescanner_StructureScanner */
- +
- +#ifndef _Included_com_zero997_structurescanner_StructureScanner
- +#define _Included_com_zero997_structurescanner_StructureScanner
- +#ifdef __cplusplus
- +extern "C" {
- +#endif
- +/*
- + * Class: com_zero997_structurescanner_StructureScanner
- + * Method: scan
- + * Signature: ()[I
- + */
- +JNIEXPORT jintArray JNICALL Java_com_zero997_structurescanner_StructureScanner_scan
- + (JNIEnv *, jobject);
- +
- +/*
- + * Class: com_zero997_structurescanner_StructureScanner
- + * Method: open
- + * Signature: ()I
- + */
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_open
- + (JNIEnv *, jobject);
- +
- +/*
- + * Class: com_zero997_structurescanner_StructureScanner
- + * Method: setLibraryDir
- + * Signature: (Ljava/lang/String;)I
- + */
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_setLibraryDir
- + (JNIEnv *, jobject, jstring);
- +
- +/*
- + * Class: com_zero997_structurescanner_StructureScanner
- + * Method: close
- + * Signature: ()I
- + */
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_close
- + (JNIEnv *, jobject);
- +
- +#ifdef __cplusplus
- +}
- +#endif
- +#endif
- diff --git a/Samples/AndroidRead/java/com/zero997/structurescanner/StructureScanner.java b/Samples/AndroidRead/java/com/zero997/structurescanner/StructureScanner.java
- new file mode 100644
- index 0000000..c4164cf
- --- /dev/null
- +++ b/Samples/AndroidRead/java/com/zero997/structurescanner/StructureScanner.java
- @@ -0,0 +1,170 @@
- +package com.zero997.structurescanner;
- +
- +import android.app.PendingIntent;
- +import android.content.BroadcastReceiver;
- +import android.content.Context;
- +import android.content.Intent;
- +import android.content.IntentFilter;
- +import android.hardware.usb.UsbDevice;
- +import android.hardware.usb.UsbDeviceConnection;
- +import android.hardware.usb.UsbManager;
- +import android.util.Log;
- +
- +import java.io.DataOutputStream;
- +import java.io.IOException;
- +import java.util.HashMap;
- +import java.util.Iterator;
- +
- +/**
- + * Created by developer on 16.01.15.
- + */
- +public class StructureScanner {
- +
- + Context parent = null;
- + private boolean active = false;
- +
- + static {
- + System.loadLibrary("usb");
- + System.loadLibrary("OniFile");
- + System.loadLibrary("PS1080");
- + System.loadLibrary("PSLink");
- + System.loadLibrary("OpenNI2");
- + System.loadLibrary("AndroidRead");
- + }
- +
- + public StructureScanner(Context ctx)
- + {
- + parent = ctx;
- + setLibraryDir(ctx.getApplicationInfo().nativeLibraryDir);
- +
- +/* try {
- + Process su = Runtime.getRuntime().exec("su");
- + DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
- +
- + outputStream.writeBytes("chmod -R 777 /dev/bus/usb/*\n");
- + outputStream.flush();
- +
- + outputStream.writeBytes("exit\n");
- + outputStream.flush();
- + su.waitFor();
- +
- + } catch (IOException e)
- + {
- + Log.e("StructureSensor", "Could not set permissions");
- + }
- + catch (InterruptedException e)
- + {
- + Log.e("StructureSensor", "Timeout waiting for superuser");
- +
- +
- + }
- +*/
- + }
- +
- + public int[] safe_scan(){
- + if (active)
- + return scan();
- +
- + return new int[0];
- + }
- +
- + public void safe_open(){
- + if (active)
- + open();
- + }
- +
- + public void safe_close(){
- + if (active)
- + close();
- + }
- +
- +
- + private native int[] scan();
- +
- + private native int open();
- +
- + private native int setLibraryDir(String libraryDir);
- +
- + private native int close();
- +
- + private UsbDeviceConnection conn = null;
- + UsbManager manager = null;
- +
- + private static final String ACTION_USB_PERMISSION =
- + "com.android.example.USB_PERMISSION";
- + private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
- +
- + public void onReceive(Context context, Intent intent) {
- + String action = intent.getAction();
- + if (ACTION_USB_PERMISSION.equals(action)) {
- + synchronized (this) {
- + UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
- +
- + if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
- + if(device != null){
- + Log.v("StructureScanner","Permission granted");
- + conn = manager.openDevice(device);
- + active = true;
- + //call method to set up device communication
- + }
- + }
- + else {
- + Log.d("StructureScanner", "permission denied for device :" + device);
- + }
- + }
- + }
- + }
- + };
- +
- + public boolean isActive()
- + {
- + return active;
- + }
- +
- + public boolean activate()
- + {
- + manager = (UsbManager) parent.getSystemService(Context.USB_SERVICE);
- + HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
- + Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
- + String alldevices = "";
- + UsbDevice device = null;
- +
- + boolean found = false;
- + while(deviceIterator.hasNext()){
- + device = deviceIterator.next();
- + alldevices = alldevices + " " + device.getDeviceName();
- + Log.v("StructureSensor", String.format("%s Vendor: %d Product: %d Class: %d Subclass :%d Protocol: %d", device.getDeviceName(), device.getVendorId(), device.getProductId(), device.getDeviceClass(), device.getDeviceSubclass(), device.getDeviceProtocol()));
- + if (device.getVendorId() == 7463 && device.getProductId() == 1536)
- + {
- + found = true;
- + break;
- + }
- + }
- + if (found)
- + {
- + PendingIntent mPermissionIntent = PendingIntent.getBroadcast(parent, 0, new Intent(ACTION_USB_PERMISSION), 0);
- + IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
- + parent.registerReceiver(mUsbReceiver, filter);
- + manager.requestPermission(device, mPermissionIntent);
- + }
- +
- + return found;
- + }
- +
- +
- +
- + public void deactivate()
- + {
- + safe_close();
- + if (manager != null && conn != null)
- + conn.close();
- +
- + if (mUsbReceiver != null && active)
- + parent.unregisterReceiver(mUsbReceiver);
- + active = false;
- + }
- +
- +
- +
- +}
- +
- diff --git a/Samples/AndroidRead/main.cpp b/Samples/AndroidRead/main.cpp
- new file mode 100644
- index 0000000..9dd9250
- --- /dev/null
- +++ b/Samples/AndroidRead/main.cpp
- @@ -0,0 +1,318 @@
- +/*****************************************************************************
- +* *
- +* OpenNI 2.x Alpha *
- +* Copyright (C) 2012 PrimeSense Ltd. *
- +* *
- +* This file is part of OpenNI. *
- +* *
- +* Licensed under the Apache License, Version 2.0 (the "License"); *
- +* you may not use this file except in compliance with the License. *
- +* You may obtain a copy of the License at *
- +* *
- +* http://www.apache.org/licenses/LICENSE-2.0 *
- +* *
- +* Unless required by applicable law or agreed to in writing, software *
- +* distributed under the License is distributed on an "AS IS" BASIS, *
- +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
- +* See the License for the specific language governing permissions and *
- +* limitations under the License. *
- +* *
- +*****************************************************************************/
- +#include <stdio.h>
- +#include <OpenNI.h>
- +
- +#include "OniSampleUtilities.h"
- +
- +
- +#define SAMPLE_READ_WAIT_TIMEOUT 2000 //2000ms
- +
- +using namespace openni;
- +
- +#ifdef ANDROID_MODULE
- +#include <jni.h>
- +#include <android/log.h>
- +#include "com_zero997_structurescanner_StructureScanner.h"
- +
- +
- +
- +//globals
- +Device device;
- +VideoStream depth;
- +int structure_state = 0;
- +
- +
- +
- +
- +int structure_open()
- +{
- + if (structure_state != 0)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Can not open sensor: Wrong state");
- + return -1;
- + }
- +
- + Status rc = OpenNI::initialize();
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Initialize failed: ");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor",OpenNI::getExtendedError());
- + return 1;
- + }
- +
- + rc = device.open(ANY_DEVICE);
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","Couldn't open device:");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", OpenNI::getExtendedError());
- + return 2;
- + }
- +
- + if (device.getSensorInfo(SENSOR_DEPTH) != NULL)
- + {
- + rc = depth.create(device, SENSOR_DEPTH);
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","Couldn't create depth stream:");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", OpenNI::getExtendedError());
- + return 3;
- + }
- + }
- +
- + const SensorInfo *sinfo = device.getSensorInfo(SENSOR_DEPTH);
- + const Array< VideoMode> &depths = sinfo->getSupportedVideoModes();
- +
- + int selectedMode = 0;
- + for (int idx = 0; idx < depths.getSize(); idx ++)
- + {
- + int resX = depths[idx].getResolutionX();
- + int resY = depths[idx].getResolutionY();
- + int fps = depths[idx].getFps();
- + //std::cout<< resX<<"x"<<resY<<"@"<<fps<<std::endl;
- + if (resX == 640 && resY == 480)
- + {
- + selectedMode = idx;
- + }
- +
- + }
- +
- + printf ("Selected mode: %d",selectedMode);
- + rc = depth.setVideoMode(depths[selectedMode]);
- +
- + if (STATUS_OK != rc)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "error: depth fromat not supprted...");
- + }
- +
- + structure_state = 1;
- + return 0;
- +}
- +
- +
- +unsigned int structure_scan (jint **data)
- +{
- + unsigned int frameSize = 0;
- + if (structure_state != 1)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Can not scan: Sensor not opened");
- + return 0;
- + }
- +
- +
- + *data = NULL;
- +
- + Status rc = depth.start();
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","Couldn't start the depth stream");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", OpenNI::getExtendedError());
- + return 0;
- + }
- +
- + VideoFrameRef frame;
- +
- + int depthValue = -1;
- + bool frameFinished = false;
- + int timeout = 10;
- + while (!frameFinished && timeout > 0)
- + {
- + int changedStreamDummy;
- + VideoStream* pStream = &depth;
- + rc = OpenNI::waitForAnyStream(&pStream, 1, &changedStreamDummy, SAMPLE_READ_WAIT_TIMEOUT);
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","Wait failed!:");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor",OpenNI::getExtendedError());
- + continue;
- + }
- +
- + rc = depth.readFrame(&frame);
- + if (rc != STATUS_OK)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Read failed!");
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor",OpenNI::getExtendedError());
- + continue;
- + }
- +
- + if (frame.getVideoMode().getPixelFormat() != PIXEL_FORMAT_DEPTH_1_MM && frame.getVideoMode().getPixelFormat() != PIXEL_FORMAT_DEPTH_100_UM)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","Unexpected frame format");
- + continue;
- + }
- +
- + DepthPixel* pDepth = (DepthPixel*)frame.getData();
- + if (pDepth)
- + {
- + int w = frame.getWidth();
- + int h = frame.getHeight();
- + int stride = frame.getStrideInBytes()/sizeof(DepthPixel);
- +
- + frameSize = frame.getHeight()*frame.getWidth();
- + __android_log_print(ANDROID_LOG_ERROR, "StructureSensor","Valid depth data received %d",frameSize);
- + __android_log_print(ANDROID_LOG_ERROR, "StructureSensor","Stride %d",stride);
- +
- + *data = (jint *)malloc(frameSize*sizeof(jint));
- +
- + for (int y = 0; y<h; y++)
- + for (int x = 0; x<w; x++)
- + {
- + (*data)[y*w+x] = pDepth[y*stride+x];
- + }
- + }
- + else
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor","No depth data received");
- + }
- +
- + frameFinished = true;
- +
- + timeout --;
- + }
- +
- + depth.stop();
- + return frameSize;
- +}
- +
- +int structure_close()
- +{
- +
- + if (structure_state != 1)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Can not close sensor: Not opened");
- + return -1;
- + }
- +
- + depth.destroy();
- + device.close();
- + OpenNI::shutdown();
- +
- + structure_state = 0;
- + return 0;
- +}
- +
- +
- +
- +
- +
- +
- +extern "C" {
- +
- +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
- +{
- +
- + __android_log_write(ANDROID_LOG_INFO, "StructureSensor", "Loading Native StructureSensor API");
- +
- + #warning "*** BIG FAT SECURITY WARNING ! ! ! Read sourcecode for more information"
- +
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "*** BIG FAT SECURITY WARNING ! ! !");
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "***");
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "*** THIS COMPLETELY UNDERMINES THE SECURITY RESTRICTIONS IMPOSED BY");
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "*** ANDROID FOR ACCESING USB DEVICES. YOU CAN ONLY USE THIS IS YOU");
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "*** HAVE ROOTED YOUR DEVICE AND IF YOU ABSOLUTELY KNOW WHAT SECURITY");
- + __android_log_write(ANDROID_LOG_WARN,"StructureSensor", "*** IMPLICATIONS THIS HAS");
- +
- +/* int r = system("su -c \"chmod -R 777 /proc/bus/usb/\"");
- + if(r!=0) {
- + __android_log_write(ANDROID_LOG_ERROR,"StructureSensor", "Can't grant permissions to USB");
- + }
- +*/
- + return JNI_VERSION_1_4;
- +}
- +
- +
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_open
- + (JNIEnv *env, jobject obj)
- +{
- +
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "StructureSensor.open()");
- +
- + int ret = 0;
- +
- + ret = structure_open();
- +
- + return ret;
- +}
- +
- +
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_setLibraryDir
- + (JNIEnv *env, jobject obj, jstring libdir)
- +{
- +
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "StructureSensor.setLibraryPath()");
- +
- + int ret = 0;
- + const char *libraryPath = env->GetStringUTFChars(libdir, 0);
- +
- + OpenNI::setLibraryPath(libraryPath);
- +
- + env->ReleaseStringUTFChars(libdir, libraryPath);
- +
- + return ret;
- +}
- +
- +
- +
- +
- +JNIEXPORT jintArray JNICALL Java_com_zero997_structurescanner_StructureScanner_scan
- + (JNIEnv *env, jobject obj)
- +{
- + jint *data=NULL;
- + int size=0;
- + int idx = 0;
- +
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "StructureSensor.scan()");
- +
- + size = structure_scan(&data);
- +
- + jintArray intJavaArray = env->NewIntArray(size);
- +
- + if (size > 0 && data && intJavaArray)
- + {
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "Copy result");
- +
- + env->SetIntArrayRegion(intJavaArray, 0, size, data);
- + }
- + if (data)
- + {
- + free(data);
- + }
- +
- + return intJavaArray;
- +}
- +
- +
- +JNIEXPORT jint JNICALL Java_com_zero997_structurescanner_StructureScanner_close
- + (JNIEnv *env, jobject obj)
- +{
- +
- + __android_log_write(ANDROID_LOG_ERROR, "StructureSensor", "StructureSensor.close()");
- +
- + return structure_close();
- +}
- +
- +
- +}
- +
- +
- +
- +#endif
- +
- diff --git a/Source/Core/OniContext.cpp b/Source/Core/OniContext.cpp
- index 153c7c6..a47e765 100644
- --- a/Source/Core/OniContext.cpp
- +++ b/Source/Core/OniContext.cpp
- @@ -236,7 +236,15 @@ XnStatus Context::loadLibraries(const char* directoryName)
- XnChar workingDir[XN_FILE_MAX_PATH];
- xnOSGetCurrentDir(workingDir, XN_FILE_MAX_PATH);
- // Change directory
- - xnOSSetCurrentDir(directoryName);
- +
- + if (m_overrideLibraryDirectory[0] != 0)
- + {
- + xnOSSetCurrentDir(m_overrideLibraryDirectory);
- + }
- + else
- + {
- + xnOSSetCurrentDir(directoryName);
- + }
- for (int i = 0; i < nFileCount; ++i)
- {
- diff --git a/Source/Core/OniContext.h b/Source/Core/OniContext.h
- index d9ee2af..c1ad5e4 100644
- --- a/Source/Core/OniContext.h
- +++ b/Source/Core/OniContext.h
- @@ -58,6 +58,8 @@ public:
- Context();
- ~Context();
- + char m_overrideLibraryDirectory[XN_FILE_MAX_PATH];
- +
- OniStatus initialize();
- void shutdown();
- diff --git a/Source/Core/OpenNI.cpp b/Source/Core/OpenNI.cpp
- index 8c4e608..f9b0c76 100644
- --- a/Source/Core/OpenNI.cpp
- +++ b/Source/Core/OpenNI.cpp
- @@ -26,6 +26,12 @@
- oni::implementation::Context g_Context;
- +ONI_C_API void oniSetLibraryPath(char const *p)
- +{
- + strncpy(g_Context.m_overrideLibraryDirectory, p, XN_FILE_MAX_PATH-1);
- +}
- +
- +
- ONI_C_API OniStatus oniInitialize(int /*apiVersion*/)
- {
- g_Context.clearErrorLogger();
- @@ -514,4 +520,4 @@ ONI_C_API OniStatus oniCoordinateConverterDepthToColor(OniStreamHandle depthStre
- return depthStream->pStream->convertDepthToColorCoordinates(colorStream->pStream, depthX, depthY, depthZ, pColorX, pColorY);
- }
- -XN_API_EXPORT_INIT()
- \ No newline at end of file
- +XN_API_EXPORT_INIT()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement