From 9c5f41b5f4728c6f667ca6f534aa1f09ffd9a73d Mon Sep 17 00:00:00 2001 From: Kai Ritterbusch Date: Tue, 7 Dec 2010 17:44:24 +0100 Subject: [PATCH 1/9] Fixed libfreenect.hpp: check of return values now according to convention Signed-off-by: Kai Ritterbusch --- include/libfreenect.hpp | 58 +++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/include/libfreenect.hpp b/include/libfreenect.hpp index 108c5358..8bcf436e 100644 --- a/include/libfreenect.hpp +++ b/include/libfreenect.hpp @@ -41,26 +41,28 @@ namespace Freenect { const Noncopyable& operator=( const Noncopyable& ); }; - class FreenectDeviceState { - friend class FreenectDevice; - FreenectDeviceState(freenect_raw_tilt_state *_state): - m_state(_state) - {} - public: - void getAccelerometers(double* x, double* y, double* z) { - freenect_get_mks_accel(m_state, x, y, z); - } - double getTiltDegs() { - return freenect_get_tilt_degs(m_state); - } - private: - freenect_raw_tilt_state *m_state; + class FreenectTiltState { + friend class FreenectDevice; + FreenectTiltState(freenect_raw_tilt_state *_state): + m_state(_state), m_code(_state->tilt_status) + {} + public: + void getAccelerometers(double* x, double* y, double* z) { + freenect_get_mks_accel(m_state, x, y, z); + } + double getTiltDegs() { + return freenect_get_tilt_degs(m_state); + } + public: + freenect_tilt_status_code m_code; + private: + freenect_raw_tilt_state *m_state; }; class FreenectDevice : Noncopyable { public: FreenectDevice(freenect_context *_ctx, int _index) { - if(freenect_open_device(_ctx, &m_dev, _index) != 0) throw std::runtime_error("Cannot open Kinect"); + if(freenect_open_device(_ctx, &m_dev, _index) < 0) throw std::runtime_error("Cannot open Kinect"); freenect_set_user(m_dev, this); freenect_set_video_format(m_dev, FREENECT_VIDEO_RGB); freenect_set_depth_format(m_dev, FREENECT_DEPTH_11BIT); @@ -68,31 +70,31 @@ namespace Freenect { freenect_set_video_callback(m_dev, freenect_video_callback); } ~FreenectDevice() { - if(freenect_close_device(m_dev) != 0) throw std::runtime_error("Cannot shutdown Kinect"); + if(freenect_close_device(m_dev) < 0) throw std::runtime_error("Cannot shutdown Kinect"); } void startVideo() { - if(freenect_start_video(m_dev) != 0) throw std::runtime_error("Cannot start RGB callback"); + if(freenect_start_video(m_dev) < 0) throw std::runtime_error("Cannot start RGB callback"); } void stopVideo() { - if(freenect_stop_video(m_dev) != 0) throw std::runtime_error("Cannot stop RGB callback"); + if(freenect_stop_video(m_dev) < 0) throw std::runtime_error("Cannot stop RGB callback"); } void startDepth() { - if(freenect_start_depth(m_dev) != 0) throw std::runtime_error("Cannot start depth callback"); + if(freenect_start_depth(m_dev) < 0) throw std::runtime_error("Cannot start depth callback"); } void stopDepth() { - if(freenect_stop_depth(m_dev) != 0) throw std::runtime_error("Cannot stop depth callback"); + if(freenect_stop_depth(m_dev) < 0) throw std::runtime_error("Cannot stop depth callback"); } void setTiltDegrees(double _angle) { - if(freenect_set_tilt_degs(m_dev, _angle) != 0) throw std::runtime_error("Cannot set angle in degrees"); + if(freenect_set_tilt_degs(m_dev, _angle) < 0) throw std::runtime_error("Cannot set angle in degrees"); } void setLed(freenect_led_options _option) { - if(freenect_set_led(m_dev, _option) != 0) throw std::runtime_error("Cannot set led"); + if(freenect_set_led(m_dev, _option) < 0) throw std::runtime_error("Cannot set led"); } void updateState() { - if (freenect_update_tilt_state(m_dev) != 0) throw std::runtime_error("Cannot update device state"); + if (freenect_update_tilt_state(m_dev) < 0) throw std::runtime_error("Cannot update device state"); } - FreenectDeviceState getState() const { - return FreenectDeviceState(freenect_get_tilt_state(m_dev)); + FreenectTiltState getState() const { + return FreenectTiltState(freenect_get_tilt_state(m_dev)); } // Do not call directly even in child virtual void VideoCallback(void *video, uint32_t timestamp) = 0; @@ -113,7 +115,7 @@ namespace Freenect { template class Freenect : Noncopyable { public: Freenect() : m_stop(false) { - if(freenect_init(&m_ctx, NULL) != 0) throw std::runtime_error("Cannot initialize freenect library"); + if(freenect_init(&m_ctx, NULL) < 0) throw std::runtime_error("Cannot initialize freenect library"); if(pthread_create(&m_thread, NULL, pthread_callback, (void*)this) != 0) throw std::runtime_error("Cannot initialize freenect thread"); } ~Freenect() { @@ -122,7 +124,7 @@ namespace Freenect { } m_stop = true; pthread_join(m_thread, NULL); - if(freenect_shutdown(m_ctx) != 0) throw std::runtime_error("Cannot cleanup freenect library"); + if(freenect_shutdown(m_ctx) < 0) throw std::runtime_error("Cannot cleanup freenect library"); } T& createDevice(int _index) { m_devices.insert(std::make_pair(_index, new T(m_ctx, _index))); @@ -137,7 +139,7 @@ namespace Freenect { // Do not call directly, thread runs here void operator()() { while(!m_stop) { - if(freenect_process_events(m_ctx) != 0) throw std::runtime_error("Cannot process freenect events"); + if(freenect_process_events(m_ctx) < 0) throw std::runtime_error("Cannot process freenect events"); } } static void *pthread_callback(void *user_data) { From b75e3032791f69be64052d76abb21a468f3ca627 Mon Sep 17 00:00:00 2001 From: Kai Ritterbusch Date: Wed, 8 Dec 2010 18:27:37 +0100 Subject: [PATCH 2/9] Problem: std::map::at not recognized by OSX compiler Fix: changed to std::map::operator[] (I think according to C++ standard:) Signed-off-by: Kai Ritterbusch --- include/libfreenect.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/libfreenect.hpp b/include/libfreenect.hpp index 8bcf436e..98b4e8af 100644 --- a/include/libfreenect.hpp +++ b/include/libfreenect.hpp @@ -128,7 +128,7 @@ namespace Freenect { } T& createDevice(int _index) { m_devices.insert(std::make_pair(_index, new T(m_ctx, _index))); - return *(m_devices.at(_index)); + return *(m_devices[_index]); } void deleteDevice(int _index) { m_devices.erase(_index); From 765076a7f044e766d0bd31cb9652d337aac69207 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Mon, 22 Nov 2010 20:52:24 -0500 Subject: [PATCH 3/9] Added eclipse project files. --- .cproject | 746 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ .project | 82 ++++++ 2 files changed, 828 insertions(+) create mode 100644 .cproject create mode 100644 .project diff --git a/.cproject b/.cproject new file mode 100644 index 00000000..01ab498f --- /dev/null +++ b/.cproject @@ -0,0 +1,746 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 00000000..5d59c69f --- /dev/null +++ b/.project @@ -0,0 +1,82 @@ + + + libfreenect + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/libfreenect/Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + From 4497345e7c58ca493bf290c29ced324a3e8b982e Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Mon, 6 Dec 2010 09:50:09 -0500 Subject: [PATCH 4/9] Initial commit of Java API using JNA Signed-off-by: Mark Renouf --- wrappers/java/.gitignore | 4 + wrappers/java/pom.xml | 57 ++++ .../java/org/openkinect/freenect/Context.java | 12 + .../org/openkinect/freenect/DepthFormat.java | 32 ++ .../org/openkinect/freenect/DepthHandler.java | 7 + .../java/org/openkinect/freenect/Device.java | 18 ++ .../org/openkinect/freenect/Freenect.java | 301 ++++++++++++++++++ .../org/openkinect/freenect/LedStatus.java | 19 ++ .../org/openkinect/freenect/LogHandler.java | 5 + .../org/openkinect/freenect/LogLevel.java | 36 +++ .../org/openkinect/freenect/TiltStatus.java | 15 + .../org/openkinect/freenect/VideoFormat.java | 40 +++ .../org/openkinect/freenect/VideoHandler.java | 7 + 13 files changed, 553 insertions(+) create mode 100644 wrappers/java/.gitignore create mode 100644 wrappers/java/pom.xml create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/Context.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/DepthFormat.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/DepthHandler.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/Device.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/LedStatus.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/LogHandler.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/LogLevel.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/TiltStatus.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/VideoFormat.java create mode 100644 wrappers/java/src/main/java/org/openkinect/freenect/VideoHandler.java diff --git a/wrappers/java/.gitignore b/wrappers/java/.gitignore new file mode 100644 index 00000000..d11829c2 --- /dev/null +++ b/wrappers/java/.gitignore @@ -0,0 +1,4 @@ +.classpath +.project +.settings/ +target/ diff --git a/wrappers/java/pom.xml b/wrappers/java/pom.xml new file mode 100644 index 00000000..9fc5a706 --- /dev/null +++ b/wrappers/java/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + org.openkinect + freenect + 0.0.1-SNAPSHOT + + + + nativelibs4java-repo + NativeLibs4Java Maven Repository + http://nativelibs4java.sourceforge.net/maven + + + + + nativelibs4java-pluginRepo + http://nativelibs4java.sourceforge.net/maven + + + + + + net.java.dev.jna + jna + 3.2.3 + compile + + + junit + junit + 4.8.2 + test + + + org.hamcrest + hamcrest-library + 1.2 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + + 1.6 + 1.6 + + + + + diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Context.java b/wrappers/java/src/main/java/org/openkinect/freenect/Context.java new file mode 100644 index 00000000..d7062465 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Context.java @@ -0,0 +1,12 @@ +package org.openkinect.freenect; + +public interface Context { + int numDevices(); + void setLogHandler(LogHandler handler); + void setLogLevel(LogLevel level); + Device openDevice(int index); + void processEvents(); + void processEventsBackground(); + void closeDevice(Device device); + void stopEventThread(); +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/DepthFormat.java b/wrappers/java/src/main/java/org/openkinect/freenect/DepthFormat.java new file mode 100644 index 00000000..6c5e3624 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/DepthFormat.java @@ -0,0 +1,32 @@ +package org.openkinect.freenect; + + +public enum DepthFormat { + D11BIT(0, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_DEPTH_11BIT_SIZE), + D10BIT(1, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_DEPTH_10BIT_SIZE), + D11BIT_PACKED(2, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_DEPTH_11BIT_PACKED_SIZE), + D10BIT_PACKED(3, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_DEPTH_10BIT_PACKED_SIZE); + private int value; + private int frameSize; + private int width; + private int height; + + private DepthFormat(int value, int width, int height, int frameSize) { + this.value = value; + this.width = width; + this.height = height; + this.frameSize = frameSize; + } + public int intValue() { + return value; + } + public int getWidth() { + return width; + } + public int getHeight() { + return height; + } + public int getFrameSize() { + return frameSize; + } +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/DepthHandler.java b/wrappers/java/src/main/java/org/openkinect/freenect/DepthHandler.java new file mode 100644 index 00000000..fa5a59a9 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/DepthHandler.java @@ -0,0 +1,7 @@ +package org.openkinect.freenect; + +import java.nio.ByteBuffer; + +public interface DepthHandler { + void onFrameReceived(DepthFormat format, ByteBuffer frame, int timestamp); +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Device.java b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java new file mode 100644 index 00000000..bdbfce1b --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java @@ -0,0 +1,18 @@ +package org.openkinect.freenect; + + + +public interface Device { + double[] getAccel(); + int setLed(LedStatus status); + void refreshTitleState(); + double getTiltAngle(); + int setTiltAngle(double angle); + TiltStatus getTiltStatus(); + void setDepthFormat(DepthFormat fmt); + void setVideoFormat(VideoFormat fmt); + int startDepth(DepthHandler handler); + int startVideo(VideoHandler handler); + int stopDepth(); + int stopVideo(); +} diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java new file mode 100644 index 00000000..1299eb6c --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java @@ -0,0 +1,301 @@ +package org.openkinect.freenect; + +import java.nio.ByteBuffer; +import java.nio.DoubleBuffer; + + +import com.ochafik.lang.jnaerator.runtime.LibraryExtractor; +import com.sun.jna.Callback; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.NativeLibrary; +import com.sun.jna.Pointer; +import com.sun.jna.PointerType; +import com.sun.jna.ptr.PointerByReference; + +public class Freenect implements Library { + public static final java.lang.String JNA_LIBRARY_NAME = LibraryExtractor.getLibraryPath("freenect", true, org.openkinect.freenect.Freenect.class); + public static final NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(org.openkinect.freenect.Freenect.JNA_LIBRARY_NAME, com.ochafik.lang.jnaerator.runtime.MangledFunctionMapper.DEFAULT_OPTIONS); + static { + Native.register(org.openkinect.freenect.Freenect.JNA_LIBRARY_NAME); + } + + // constants from libfreenect.h + static final int FREENECT_FRAME_W = 640; + static final int FREENECT_FRAME_H = 480; + static final int FREENECT_FRAME_PIX = (FREENECT_FRAME_H * FREENECT_FRAME_W); + static final int FREENECT_IR_FRAME_W = 640; + static final int FREENECT_IR_FRAME_H = 488; + static final int FREENECT_IR_FRAME_PIX = (FREENECT_IR_FRAME_H * FREENECT_IR_FRAME_W); + static final int FREENECT_VIDEO_RGB_SIZE = (FREENECT_FRAME_PIX * 3); + static final int FREENECT_VIDEO_BAYER_SIZE = (FREENECT_FRAME_PIX); + static final int FREENECT_VIDEO_YUV_SIZE = (FREENECT_FRAME_PIX * 2); + static final int FREENECT_VIDEO_IR_8BIT_SIZE = (FREENECT_IR_FRAME_PIX); + static final int FREENECT_VIDEO_IR_10BIT_SIZE = (FREENECT_IR_FRAME_PIX * 2); + static final int FREENECT_VIDEO_IR_10BIT_PACKED_SIZE = 390400; + static final int FREENECT_DEPTH_11BIT_SIZE = (FREENECT_FRAME_PIX * 2); + static final int FREENECT_DEPTH_10BIT_SIZE = FREENECT_DEPTH_11BIT_SIZE; + static final int FREENECT_DEPTH_11BIT_PACKED_SIZE = 422400; + static final int FREENECT_DEPTH_10BIT_PACKED_SIZE = 384000; + + protected Freenect() {} + + public static Context createContext() { + PointerByReference ctxPtr = new PointerByReference(); + int rval = freenect_init(ctxPtr, Pointer.NULL); + if (rval == 0) { + return new NativeContext(ctxPtr.getValue()); + } + throw new IllegalStateException("init() returned " + rval); + } + + public interface NativeLogCallback extends Callback { + void callback(Device dev, int logLevel, String msg); + } + + protected static class NativeContext extends PointerType implements Context { + private EventThread eventThread; + + public NativeContext() {} + + private LogHandler logHandler; + private final NativeLogCallback logCallback = new NativeLogCallback() { + @Override + public void callback(Device dev, int level, String msg) { + logHandler.onMessage(dev, LogLevel.fromInt(level), msg); + } + }; + + protected NativeContext(Pointer ptr) { + super(ptr); + } + + public void setLogHandler(LogHandler handler) { + this.logHandler = handler; + if (logHandler == null) { + freenect_set_log_callback(this, null); + } else { + freenect_set_log_callback(this, logCallback); + } + } + + public void setLogLevel(LogLevel level) { + freenect_set_log_level(this, level.intValue()); + } + + public int numDevices() { + return freenect_num_devices(this); + } + + public Device openDevice(int index) { + PointerByReference devicePtr = new PointerByReference(); + int rval = freenect_open_device(this, devicePtr, index); + if (rval != 0) { + throw new IllegalStateException("freenect_open_device() returned " + rval); + } + return new NativeDevice(devicePtr.getValue()); + } + + public void closeDevice(Device dev) { + freenect_close_device((NativeDevice) dev); + } + + public void processEvents() { + freenect_process_events(this); + } + + public void processEventsBackground() { + if (eventThread == null || !eventThread.isAlive()) { + eventThread = new EventThread(this); + eventThread.start(); + } + } + + @Override + public void stopEventThread() { + eventThread.kill(); + } + } + + private interface NativeDepthCallback extends Callback { + void invoke(Pointer dev, Pointer depth, int timestamp); + }; + + private interface NativeVideoCallback extends Callback { + void invoke(Pointer dev, Pointer frame, int timestamp); + }; + + protected static class NativeDevice extends PointerType implements Device { + private Pointer tiltState; + private VideoFormat videoFormat; + private ByteBuffer videoBuffer; + private DepthFormat depthFormat; + private ByteBuffer depthBuffer; + private final DoubleBuffer accelX = DoubleBuffer.allocate(1); + private final DoubleBuffer accelY = DoubleBuffer.allocate(1); + private final DoubleBuffer accelZ = DoubleBuffer.allocate(1); + private VideoHandler videoHandler; + private DepthHandler depthHandler; + + private final NativeVideoCallback videoCallback = new NativeVideoCallback() { + @Override + public void invoke(Pointer dev, Pointer depth, int timestamp) { + videoHandler.onFrameReceived(videoFormat, videoBuffer, timestamp); + } + }; + + private final NativeDepthCallback depthCallback = new NativeDepthCallback() { + @Override + public void invoke(Pointer dev, Pointer depth, int timestamp) { + depthHandler.onFrameReceived(depthFormat, depthBuffer, timestamp); + } + }; + + public NativeDevice() {} + + protected NativeDevice(Pointer ptr) { + super(ptr); + tiltState = freenect_get_tilt_state(this); + setVideoFormat(VideoFormat.RGB); + setDepthFormat(DepthFormat.D11BIT); + } + + public void close() { + freenect_close_device(this); + } + + @Override + public void setDepthFormat(DepthFormat fmt) { + freenect_set_depth_format(this, fmt.intValue()); + depthBuffer = ByteBuffer.allocateDirect(fmt.getFrameSize()); + freenect_set_depth_buffer(this, depthBuffer); + this.depthFormat = fmt; + } + + @Override + public void setVideoFormat(VideoFormat fmt) { + freenect_set_video_format(this, fmt.intValue()); + videoBuffer = ByteBuffer.allocateDirect(fmt.getFrameSize()); + freenect_set_video_buffer(this, videoBuffer); + this.videoFormat = fmt; + } + + @Override + public int setLed(LedStatus status) { + return freenect_set_led(this, status.intValue()); + } + + @Override + public void refreshTitleState() { + freenect_update_tilt_state(this); + } + + @Override + public double getTiltAngle() { + // TODO should this get called automatically? + // freenect_update_tilt_state(this); + return freenect_get_tilt_degs(tiltState); + } + + @Override + public int setTiltAngle(double angle) { + return freenect_set_tilt_degs(this, angle); + } + + @Override + public TiltStatus getTiltStatus() { + // TODO not exposed by freenect + return TiltStatus.STOPPED; + } + + @Override + public double[] getAccel() { + // TODO should this get called automatically? + // freenect_update_tilt_state(this); + freenect_get_mks_accel(tiltState, accelX, accelY, accelZ); + return new double[] { accelX.get(0), accelY.get(0), accelZ.get(0) }; + } + + @Override + public int startVideo(VideoHandler handler) { + this.videoHandler = handler; + freenect_set_video_callback(this, videoCallback); + return freenect_start_video(this); + } + + @Override + public int stopVideo() { + int rval = freenect_stop_video(this); + freenect_set_video_callback(this, null); + this.videoHandler = null; + return rval; + } + + @Override + public int startDepth(DepthHandler handler) { + this.depthHandler = handler; + freenect_set_depth_callback(this, depthCallback); + return freenect_start_depth(this); + } + + @Override + public int stopDepth() { + int rval = freenect_stop_depth(this); + freenect_set_depth_callback(this, null); + this.depthHandler = null; + return rval; + } + } + + private static class EventThread extends Thread { + private final NativeContext ctx; + private volatile boolean alive = true; + + public EventThread(NativeContext ctx) { + this.ctx = ctx; + setDaemon(true); + setName("FreenectEventThread"); + } + + public void kill() { + this.alive = false; + } + + @Override + public void run() { + while (alive) { + freenect_process_events(ctx); + } + } + }; + + // function prototypes from libfreenect.h + // These must match the names used in the library! + + private static native int freenect_init(PointerByReference ctx, Pointer usb_ctx); + private static native int freenect_shutdown(NativeContext ctx); + private static native void freenect_set_log_level(NativeContext ctx, int level); + private static native void freenect_set_log_callback(NativeContext ctx, NativeLogCallback cb); + private static native int freenect_process_events(NativeContext ctx); + private static native int freenect_num_devices(NativeContext ctx); + private static native int freenect_open_device(NativeContext ctx, PointerByReference dev, int index); + private static native int freenect_close_device(NativeDevice dev); + private static native void freenect_set_user(NativeDevice dev, Pointer user); + private static native Pointer freenect_get_user(NativeDevice dev); + private static native void freenect_set_depth_callback(NativeDevice dev, NativeDepthCallback cb); + private static native void freenect_set_video_callback(NativeDevice dev, NativeVideoCallback cb); + private static native int freenect_set_depth_format(NativeDevice dev, int i); + private static native int freenect_set_video_format(NativeDevice dev, int i); + private static native int freenect_set_depth_buffer(NativeDevice dev, ByteBuffer buf); + private static native int freenect_set_video_buffer(NativeDevice dev, ByteBuffer buf); + private static native int freenect_start_depth(NativeDevice dev); + private static native int freenect_start_video(NativeDevice dev); + private static native int freenect_stop_depth(NativeDevice dev); + private static native int freenect_stop_video(NativeDevice dev); + private static native int freenect_update_tilt_state(NativeDevice dev); + private static native Pointer freenect_get_tilt_state(NativeDevice dev); + private static native double freenect_get_tilt_degs(Pointer tiltState); + private static native int freenect_set_tilt_degs(NativeDevice dev, double angle); + private static native int freenect_set_led(NativeDevice dev, int option); + private static native void freenect_get_mks_accel(Pointer tiltState, DoubleBuffer x, DoubleBuffer y, DoubleBuffer z); +} diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/LedStatus.java b/wrappers/java/src/main/java/org/openkinect/freenect/LedStatus.java new file mode 100644 index 00000000..3adf951d --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/LedStatus.java @@ -0,0 +1,19 @@ +package org.openkinect.freenect; + +public enum LedStatus { + OFF(0), + GREEN(1), + RED(2), + YELLOW(3), + BLINK_YELLOW(4), + BLINK_GREEN(5), + BLINK_RED_YELLOW(6); + private final int value; + + private LedStatus(int value) { + this.value = value; + } + public int intValue() { + return value; + } +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/LogHandler.java b/wrappers/java/src/main/java/org/openkinect/freenect/LogHandler.java new file mode 100644 index 00000000..ab434749 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/LogHandler.java @@ -0,0 +1,5 @@ +package org.openkinect.freenect; + +public interface LogHandler { + void onMessage(Device dev, LogLevel level, String msg); +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/LogLevel.java b/wrappers/java/src/main/java/org/openkinect/freenect/LogLevel.java new file mode 100644 index 00000000..ab6e0f19 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/LogLevel.java @@ -0,0 +1,36 @@ +package org.openkinect.freenect; + +import java.util.HashMap; +import java.util.Map; + +public enum LogLevel { + FATAL(0), + ERROR(1), + WARNING(2), + NOTICE(3), + INFO(4), + DEBUG(5), + SPEW(6), + FLOOD(7); + + private static final Map MAP = new HashMap(8); + static { + for (LogLevel value : values()) { + MAP.put(value.intValue(), value); + } + } + + private final int value; + + private LogLevel(int value) { + this.value = value; + } + + public int intValue() { + return value; + } + + public static LogLevel fromInt(int value) { + return MAP.get(value); + } +} diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/TiltStatus.java b/wrappers/java/src/main/java/org/openkinect/freenect/TiltStatus.java new file mode 100644 index 00000000..fc95fa9e --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/TiltStatus.java @@ -0,0 +1,15 @@ +package org.openkinect.freenect; + +public enum TiltStatus { + STOPPED(0), + LIMIT(1), + MOVING(4); + private final int value; + + private TiltStatus(int value) { + this.value = value; + } + public int intValue() { + return value; + } +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/VideoFormat.java b/wrappers/java/src/main/java/org/openkinect/freenect/VideoFormat.java new file mode 100644 index 00000000..2b02f4d5 --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/VideoFormat.java @@ -0,0 +1,40 @@ +package org.openkinect.freenect; + + +public enum VideoFormat { + RGB(0, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_VIDEO_RGB_SIZE), + BAYER(1, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_VIDEO_BAYER_SIZE), + IR_8BIT(2, Freenect.FREENECT_IR_FRAME_W, Freenect.FREENECT_IR_FRAME_H, Freenect.FREENECT_VIDEO_IR_8BIT_SIZE), + IR_10BIT(3, Freenect.FREENECT_IR_FRAME_W, Freenect.FREENECT_IR_FRAME_H, Freenect.FREENECT_VIDEO_IR_10BIT_SIZE), + IR_10BIT_PACKED(4, Freenect.FREENECT_IR_FRAME_W, Freenect.FREENECT_IR_FRAME_H, Freenect.FREENECT_VIDEO_IR_10BIT_PACKED_SIZE), + YUV_RGB(5, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_VIDEO_RGB_SIZE), + YUV_RAW(6, Freenect.FREENECT_FRAME_W, Freenect.FREENECT_FRAME_H, Freenect.FREENECT_VIDEO_YUV_SIZE); + + private final int value; + private final int frameSize; + private final int width; + private final int height; + + private VideoFormat(int value, int width, int height, int frameSize) { + this.value = value; + this.width = width; + this.height = height; + this.frameSize = frameSize; + } + + public int intValue() { + return value; + } + + public int getFrameSize() { + return frameSize; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } +} \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/VideoHandler.java b/wrappers/java/src/main/java/org/openkinect/freenect/VideoHandler.java new file mode 100644 index 00000000..bfff89cd --- /dev/null +++ b/wrappers/java/src/main/java/org/openkinect/freenect/VideoHandler.java @@ -0,0 +1,7 @@ +package org.openkinect.freenect; + +import java.nio.ByteBuffer; + +public interface VideoHandler { + void onFrameReceived(VideoFormat format, ByteBuffer frame, int timestamp); +} \ No newline at end of file From 473cc10951cce5343e183fe0911c8b1eeab7ec78 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Mon, 6 Dec 2010 09:53:22 -0500 Subject: [PATCH 5/9] Added additional required dependency of jnaerator-runtime Signed-off-by: Mark Renouf --- wrappers/java/pom.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/wrappers/java/pom.xml b/wrappers/java/pom.xml index 9fc5a706..5e80061c 100644 --- a/wrappers/java/pom.xml +++ b/wrappers/java/pom.xml @@ -26,13 +26,19 @@ 3.2.3 compile - + + com.jnaerator + jnaerator-runtime + 0.9.5 + compile + + junit junit 4.8.2 test - + org.hamcrest hamcrest-library 1.2 From 4a54bcc286433b45fbc80ee320a09a73e6371902 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Wed, 8 Dec 2010 08:55:05 -0500 Subject: [PATCH 6/9] Moved Context.closeDevice to Device.close. Added Context.shutdown() Signed-off-by: Mark Renouf --- .../java/org/openkinect/freenect/Context.java | 2 +- .../java/org/openkinect/freenect/Device.java | 1 + .../org/openkinect/freenect/Freenect.java | 51 +++++++++++-------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Context.java b/wrappers/java/src/main/java/org/openkinect/freenect/Context.java index d7062465..6663bd25 100644 --- a/wrappers/java/src/main/java/org/openkinect/freenect/Context.java +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Context.java @@ -7,6 +7,6 @@ public interface Context { Device openDevice(int index); void processEvents(); void processEventsBackground(); - void closeDevice(Device device); void stopEventThread(); + void shutdown(); } \ No newline at end of file diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Device.java b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java index bdbfce1b..eae5353a 100644 --- a/wrappers/java/src/main/java/org/openkinect/freenect/Device.java +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java @@ -15,4 +15,5 @@ public interface Device { int startVideo(VideoHandler handler); int stopDepth(); int stopVideo(); + void close(); } diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java index 1299eb6c..c9b7e206 100644 --- a/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java @@ -49,10 +49,6 @@ public static Context createContext() { throw new IllegalStateException("init() returned " + rval); } - public interface NativeLogCallback extends Callback { - void callback(Device dev, int logLevel, String msg); - } - protected static class NativeContext extends PointerType implements Context { private EventThread eventThread; @@ -61,7 +57,7 @@ public NativeContext() {} private LogHandler logHandler; private final NativeLogCallback logCallback = new NativeLogCallback() { @Override - public void callback(Device dev, int level, String msg) { + public void callback(NativeDevice dev, int level, String msg) { logHandler.onMessage(dev, LogLevel.fromInt(level), msg); } }; @@ -70,6 +66,7 @@ protected NativeContext(Pointer ptr) { super(ptr); } + @Override public void setLogHandler(LogHandler handler) { this.logHandler = handler; if (logHandler == null) { @@ -79,14 +76,17 @@ public void setLogHandler(LogHandler handler) { } } + @Override public void setLogLevel(LogLevel level) { freenect_set_log_level(this, level.intValue()); } + @Override public int numDevices() { return freenect_num_devices(this); } + @Override public Device openDevice(int index) { PointerByReference devicePtr = new PointerByReference(); int rval = freenect_open_device(this, devicePtr, index); @@ -96,14 +96,12 @@ public Device openDevice(int index) { return new NativeDevice(devicePtr.getValue()); } - public void closeDevice(Device dev) { - freenect_close_device((NativeDevice) dev); - } - + @Override public void processEvents() { freenect_process_events(this); } + @Override public void processEventsBackground() { if (eventThread == null || !eventThread.isAlive()) { eventThread = new EventThread(this); @@ -113,18 +111,19 @@ public void processEventsBackground() { @Override public void stopEventThread() { - eventThread.kill(); + if (eventThread != null) { + eventThread.kill(); + eventThread = null; + } + } + + @Override + public void shutdown() { + stopEventThread(); + freenect_shutdown(this); } } - private interface NativeDepthCallback extends Callback { - void invoke(Pointer dev, Pointer depth, int timestamp); - }; - - private interface NativeVideoCallback extends Callback { - void invoke(Pointer dev, Pointer frame, int timestamp); - }; - protected static class NativeDevice extends PointerType implements Device { private Pointer tiltState; private VideoFormat videoFormat; @@ -139,14 +138,14 @@ protected static class NativeDevice extends PointerType implements Device { private final NativeVideoCallback videoCallback = new NativeVideoCallback() { @Override - public void invoke(Pointer dev, Pointer depth, int timestamp) { + public void callback(Pointer dev, Pointer depth, int timestamp) { videoHandler.onFrameReceived(videoFormat, videoBuffer, timestamp); } }; private final NativeDepthCallback depthCallback = new NativeDepthCallback() { @Override - public void invoke(Pointer dev, Pointer depth, int timestamp) { + public void callback(Pointer dev, Pointer depth, int timestamp) { depthHandler.onFrameReceived(depthFormat, depthBuffer, timestamp); } }; @@ -272,6 +271,18 @@ public void run() { // function prototypes from libfreenect.h // These must match the names used in the library! + public interface NativeLogCallback extends Callback { + void callback(NativeDevice dev, int logLevel, String msg); + } + + private interface NativeDepthCallback extends Callback { + void callback(Pointer dev, Pointer depth, int timestamp); + }; + + private interface NativeVideoCallback extends Callback { + void callback(Pointer dev, Pointer frame, int timestamp); + }; + private static native int freenect_init(PointerByReference ctx, Pointer usb_ctx); private static native int freenect_shutdown(NativeContext ctx); private static native void freenect_set_log_level(NativeContext ctx, int level); From 86f24db7256c8999093627c624ea1f20962d2e36 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Wed, 8 Dec 2010 08:56:44 -0500 Subject: [PATCH 7/9] Tests for the Kinect wrapper to verify correct operation. Run with 'mvn test' Signed-off-by: Mark Renouf --- .../org/openkinect/freenect/FreenectTest.java | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java diff --git a/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java b/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java new file mode 100644 index 00000000..923f0e24 --- /dev/null +++ b/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java @@ -0,0 +1,110 @@ +package org.openkinect.freenect; + +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.lessThanOrEqualTo; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; +import static org.junit.Assume.assumeThat; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +import org.hamcrest.collection.IsEmptyCollection; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.theories.Theories; +import org.junit.runner.RunWith; + +@RunWith(Theories.class) +public class FreenectTest { + static Context ctx; + static Device dev; + + @BeforeClass + public static void initKinect() { + ctx = Freenect.createContext(); + if (ctx.numDevices() > 0) { + dev = ctx.openDevice(0); + ctx.processEventsBackground(); + } else { + System.err.println("No kinects detected, cannot test!"); + } + } + + @AfterClass + public static void shutdownKinect() { + ctx.shutdown(); + } + + @SuppressWarnings("unchecked") + @Test + public void testTiltAngle() { + assumeThat(dev, is(not(nullValue()))); + dev.refreshTitleState(); + assertThat(dev.getTiltAngle(), is(allOf(greaterThanOrEqualTo(-22d), lessThanOrEqualTo(22d)))); + // There's currently no way to access the tilt state to + // wait for movement to complete, so no way to verify movements. + + // assertThat(dev.setTiltAngle(0), is(0)); + // dev.refreshTitleState(); + // assertThat(dev.getTiltAngle(), is(closeTo(0, 1))); + // + // assertThat(dev.setTiltAngle(20), is(0)); + // dev.refreshTitleState(); + // assertThat(dev.getTiltAngle(), is(closeTo(20, 1))); + // + // assertThat(dev.setTiltAngle(-20), is(0)); + // dev.refreshTitleState(); + // assertThat(dev.getTiltAngle(), is(closeTo(-20, 1))); + } + + @Test(timeout=5000) + public void testLogEvents() throws InterruptedException { + ctx.setLogLevel(LogLevel.FLOOD); + final List messages = new ArrayList(); + ctx.setLogHandler(new LogHandler() { + @Override + public void onMessage(Device dev, LogLevel level, String msg) { + messages.add(msg); + } + }); + dev.startVideo(new VideoHandler() { + @Override + public void onFrameReceived(VideoFormat format, ByteBuffer frame, int timestamp) { + } + }); + Thread.sleep(500); + dev.stopVideo(); + ctx.setLogLevel(LogLevel.INFO); + ctx.setLogHandler(null); + assertThat(messages, is(not(IsEmptyCollection.empty()))); // wtf hamcrest, fix this! + } + + @Test(timeout=2000) + public void testVideo() throws InterruptedException { + final Object lock = new Object(); + final long start = System.nanoTime(); + dev.startVideo(new VideoHandler() { + int frameCount = 0; + @Override + public void onFrameReceived(VideoFormat format, ByteBuffer frame, int timestamp) { + frameCount++; + if (frameCount == 30) { + synchronized (lock) { + lock.notify(); + System.out.format("Got %d frames in %4.2fs%n", frameCount, + (((double) System.nanoTime() - start) / 1000000)); + } + } + } + }); + synchronized (lock) { + lock.wait(2000); + } + } +} From 6c26cb4de7ffe68240cee23ac44924c291ff8de8 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Sat, 11 Dec 2010 10:25:32 -0500 Subject: [PATCH 8/9] Typo correction in method name (thanks phen!) Signed-off-by: Mark Renouf --- wrappers/java/src/main/java/org/openkinect/freenect/Device.java | 2 +- .../java/src/main/java/org/openkinect/freenect/Freenect.java | 2 +- .../src/test/java/org/openkinect/freenect/FreenectTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Device.java b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java index eae5353a..3e761f76 100644 --- a/wrappers/java/src/main/java/org/openkinect/freenect/Device.java +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Device.java @@ -5,7 +5,7 @@ public interface Device { double[] getAccel(); int setLed(LedStatus status); - void refreshTitleState(); + void refreshTiltState(); double getTiltAngle(); int setTiltAngle(double angle); TiltStatus getTiltStatus(); diff --git a/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java index c9b7e206..c0f1f694 100644 --- a/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java +++ b/wrappers/java/src/main/java/org/openkinect/freenect/Freenect.java @@ -185,7 +185,7 @@ public int setLed(LedStatus status) { } @Override - public void refreshTitleState() { + public void refreshTiltState() { freenect_update_tilt_state(this); } diff --git a/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java b/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java index 923f0e24..c4061a23 100644 --- a/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java +++ b/wrappers/java/src/test/java/org/openkinect/freenect/FreenectTest.java @@ -45,7 +45,7 @@ public static void shutdownKinect() { @Test public void testTiltAngle() { assumeThat(dev, is(not(nullValue()))); - dev.refreshTitleState(); + dev.refreshTiltState(); assertThat(dev.getTiltAngle(), is(allOf(greaterThanOrEqualTo(-22d), lessThanOrEqualTo(22d)))); // There's currently no way to access the tilt state to // wait for movement to complete, so no way to verify movements. From 0c7ea14444e79429aedc0dd357d60094b9f634cd Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Sat, 11 Dec 2010 14:33:15 -0500 Subject: [PATCH 9/9] Removed Eclipse project files that should not have been commited to this branch. Signed-off-by: Mark Renouf --- .cproject | 746 ------------------------------------------------------ .project | 82 ------ 2 files changed, 828 deletions(-) delete mode 100644 .cproject delete mode 100644 .project diff --git a/.cproject b/.cproject deleted file mode 100644 index 01ab498f..00000000 --- a/.cproject +++ /dev/null @@ -1,746 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 5d59c69f..00000000 --- a/.project +++ /dev/null @@ -1,82 +0,0 @@ - - - libfreenect - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/libfreenect/Debug} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - -