ruby-freenect 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ $: << File.expand_path(File.join(File.dirname(__FILE__), "../lib")) << File.expand_path(File.dirname(__FILE__))
2
+ require 'rubygems'
3
+ require 'freenect'
4
+ require 'tools'
5
+ require 'opengl'
6
+ include Gl,Glu,Glut
7
+
8
+ puts "#{Freenect.get_device_count} Kinect found"
9
+ video_mode = Freenect.find_video_mode(:freenect_video_rgb)
10
+
11
+ display = lambda do
12
+ video_buffer = Freenect.get_video(video_mode)
13
+ glPixelZoom(1.0, -1.0)
14
+ glRasterPos2i(-1, 1)
15
+ glDrawPixels(video_mode[:width], video_mode[:height], GL_RGB, GL_UNSIGNED_BYTE, video_buffer)
16
+ glutSwapBuffers()
17
+ end
18
+
19
+ glutInit
20
+ glutInitWindowSize(video_mode[:width], video_mode[:height])
21
+ glutInitWindowPosition(100, 100)
22
+ glutCreateWindow($0)
23
+
24
+ glutDisplayFunc(display)
25
+ glutIdleFunc(display)
26
+ glutKeyboardFunc(sync_keyboard)
27
+
28
+ glClearColor(0.0, 0.0, 0.0, 0.0)
29
+ glClear(GL_COLOR_BUFFER_BIT)
30
+
31
+ glutMainLoop
32
+
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "freenect4r"
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Troy Stribling"]
12
+ s.date = "2011-12-19"
13
+ s.description = "Ruby bindings for the libfreenect Kinect driver"
14
+ s.extra_rdoc_files = [
15
+ "LICENSE.txt",
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".rvmrc",
20
+ "History.txt",
21
+ "LICENSE.txt",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "examples/glview.rb",
26
+ "examples/ir_view.rb",
27
+ "examples/record.rb",
28
+ "examples/tilt_led.rb",
29
+ "examples/tilt_nod.rb",
30
+ "examples/video_opengl.rb",
31
+ "examples/video_snapshot.rb",
32
+ "lib/freenect.rb",
33
+ "lib/freenect/context.rb",
34
+ "lib/freenect/device.rb",
35
+ "lib/freenect/freenect.rb",
36
+ "lib/freenect/sync.rb",
37
+ "spec/context_spec.rb",
38
+ "spec/device_spec.rb",
39
+ "spec/freenect_spec.rb",
40
+ "spec/spec.opts",
41
+ "spec/spec_helper.rb"
42
+ ]
43
+ s.homepage = "https://github.com/troystribling/freenect4r"
44
+ s.rdoc_options = ["--title", "FFI Freenect", "--main", "README.rdoc", "--line-numbers"]
45
+ s.require_paths = ["lib"]
46
+ s.rubygems_version = "1.8.10"
47
+ s.summary = "Ruby bindings for the libfreenect Kinect driver"
48
+
49
+ if s.respond_to? :specification_version then
50
+ s.specification_version = 3
51
+
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
+ s.add_runtime_dependency(%q<ffi>, [">= 1.0.11"])
54
+ else
55
+ s.add_dependency(%q<ffi>, [">= 1.0.11"])
56
+ end
57
+ else
58
+ s.add_dependency(%q<ffi>, [">= 1.0.11"])
59
+ end
60
+ end
61
+
@@ -0,0 +1,4 @@
1
+ $:.unshift(File.dirname(__FILE__))
2
+ require 'ffi'
3
+ require 'freenect/driver'
4
+ require 'freenect/freenect'
@@ -0,0 +1,477 @@
1
+ module Freenect
2
+ module Driver
3
+
4
+ extend FFI::Library
5
+ ffi_lib 'freenect', 'freenect_sync'
6
+
7
+ # Ticks per G for accelerometer as set per http://www.kionix.com/Product%20Sheets/KXSD9%20Product%20Brief.pdf
8
+ FREENECT_COUNTS_PER_G = 819
9
+
10
+ # Flags representing devices to open when freenect_open_device() is called.
11
+ # In particular, this allows libfreenect to grab only a subset of the devices
12
+ # in the Kinect, so you could (for instance) use libfreenect to handle audio
13
+ # and motor support while letting OpenNI have access to the cameras.
14
+ # If a device is not supported on a particular platform, its flag will be ignored.
15
+ FREENECT_DEVICE_FLAGS = enum(
16
+ :freenect_device_motor, 0x01,
17
+ :freenect_device_camaers, 0x02,
18
+ :freenect_device_audio, 0x04
19
+ )
20
+
21
+ # Enumeration of available resolutions.
22
+ # Not all available resolutions are actually supported for all video formats.
23
+ # Frame modes may not perfectly match resolutions. For instance,
24
+ # FREENECT_RESOLUTION_MEDIUM is 640x488 for the IR camera.
25
+ FREENECT_RESOLUTION = enum(
26
+ :freenect_resolution_low, 0, # QVGA - 320x240
27
+ :freenect_resolution_medium, 1, # VGA - 640x480
28
+ :freenect_resolution_high, 2, # SXGA - 1280x1024
29
+ :freenect_resolution_dummy, 2147483647 # Dummy value to force enum to be 32 bits wide
30
+ )
31
+
32
+ # Enumeration of video frame information states.
33
+ # See http://openkinect.org/wiki/Protocol_Documentation#RGB_Camera for more information.
34
+ FREENECT_VIDEO_FORMAT = enum(
35
+ :freenect_video_rgb, 0, # Decompressed RGB mode (demosaicing done by libfreenect)
36
+ :freenect_video_bayer, 1, # Bayer compressed mode (raw information from camera)
37
+ :freenect_video_ir_8bit, 2, # 8-bit IR mode
38
+ :freenect_video_ir_10bit, 3, # 10-bit IR mode
39
+ :freenect_video_ir_10bit_packed, 4, # 10-bit packed IR mode
40
+ :freenect_video_yuv_rgb, 5, # YUV RGB mode
41
+ :freenect_video_yuv_raw, 6, # YUV Raw mode
42
+ :freenect_video_dummy, 2147483647 # Dummy value to force enum to be 32 bits wide
43
+ )
44
+
45
+ # Enumeration of depth frame states
46
+ # See http://openkinect.org/wiki/Protocol_Documentation#RGB_Camera for more information.
47
+ FREENECT_DEPTH_FORMAT = enum(
48
+ :freenect_depth_11bit, 0, # 11 bit depth information in one uint16_t/pixel
49
+ :freenect_depth_10bit, 1, # 10 bit depth information in one uint16_t/pixel
50
+ :freenect_depth_11bit_packed, 2, # 11 bit packed depth information
51
+ :freenect_depth_10bit_packed, 3, # 10 bit packed depth information
52
+ :freenet_depth_dummy, 2147483647 # Dummy value to force enum to be 32 bits wide
53
+ )
54
+
55
+ # Structure to give information about the width, height, bitrate,
56
+ # framerate, and buffer size of a frame in a particular mode, as
57
+ # well as the total number of bytes needed to hold a single frame.
58
+ class FreenectFormat < FFI::Union
59
+ layout :dummy, :int16_t,
60
+ :video_format, FREENECT_VIDEO_FORMAT,
61
+ :depth_format, FREENECT_DEPTH_FORMAT
62
+ end
63
+ class FreenectFrameMode < FFI::Struct
64
+ layout :reserved, :uint32, # unique ID used internally. The meaning of values may change without notice.
65
+ # Don't touch or depend on the contents of this field. We mean it.
66
+ :resolution, FREENECT_RESOLUTION, # Resolution this freenect_frame_mode describes, should you want to find it again with freenect_find_*_frame_mode().
67
+ :format, FreenectFormat, # The video or depth format that this freenect_frame_mode describes. The caller should know which of video_format or
68
+ # depth_format to use, since they called freenect_get_*_frame_mode()
69
+ :bytes, :int32_t, # Total buffer size in bytes to hold a single frame of data. Should be equivalent to width * height *
70
+ # (data_bits_per_pixel+padding_bits_per_pixel) / 8
71
+ :width, :int16_t, # Width of the frame, in pixels
72
+ :height, :int16_t, # Height of the frame, in pixels
73
+ :data_bits_per_pixel, :int8_t, # Number of bits of information needed for each pixel
74
+ :padding_bits_per_pixel, :int8_t, # Number of bits of padding for alignment used for each pixel
75
+ :framerate, :int8_t, # Approximate expected frame rate, in Hz
76
+ :is_valid, :int8_t # If 0, this freenect_frame_mode is invalid and does not describe a supported mode. Otherwise, the frame_mode is valid.
77
+ end
78
+
79
+ # Enumeration of LED states
80
+ # See http://openkinect.org/wiki/Protocol_Documentation#Setting_LED for more information.
81
+ FREENECT_LED_OPTIONS = enum(
82
+ :led_off, 0, # Turn LED off
83
+ :led_green, 1, # Turn LED to Green
84
+ :led_red, 2, # Turn LED to Red
85
+ :led_yellow, 3, # Turn LED to Yellow
86
+ :led_blink_green, 4, # Make LED blink Green
87
+ :led_blink_red_yellow, 6 # Make LED blink Red/Yellow
88
+ )
89
+
90
+ # Enumeration of tilt motor status
91
+ FREENECT_TILT_STATUS_CODE = enum(
92
+ :tilt_status_stopped, 0x00, # Tilt motor is stopped
93
+ :tilt_status_limit, 0x01, # Tilt motor has reached movement limit
94
+ :tilt_status_moving, 0x04 # Tilrequire 'ffi't motor is currently moving to new position
95
+ )
96
+
97
+ class FreenectRawTiltState < FFI::Struct
98
+ layout :accelerometer_x, :int16_t, # Raw accelerometer data for X-axis, see FREENECT_COUNTS_PER_G for conversion
99
+ :accelerometer_y, :int16_t, # Raw accelerometer data for Y-axis, see FREENECT_COUNTS_PER_G for conversion
100
+ :accelerometer_z, :int16_t, # Raw accelerometer data for Z-axis, see FREENECT_COUNTS_PER_G for conversion
101
+ :tilt_angle, :int8_t, # Raw tilt motor angle encoder information
102
+ :tilt_status, FREENECT_TILT_STATUS_CODE # State of the tilt motor (stopped, moving, etc...)
103
+ end
104
+
105
+ typedef :pointer, :freenect_context # Holds information about the usb context
106
+ typedef :pointer, :freenect_device # Holds device information.
107
+ typedef :pointer, :freenect_usb_context # Holds libusb-1.0 specific information
108
+
109
+ # Enumeration of message logging levels
110
+ FREENECT_LOGLEVEL = enum(
111
+ :freenect_log_fatal, 0, # Log for crashing/non-recoverable errors
112
+ :freenect_log_error, 1, # Log for major errors
113
+ :freenect_log_warning, 2, # Log for warning messages
114
+ :freenect_log_notice, 3, # Log for important messages
115
+ :freenect_log_info, 3, # Log for normal messages
116
+ :freenect_log_debug, 5, # Log for useful development messages
117
+ :freenect_log_spew, 6, # Log for slightly less useful messages
118
+ :freenect_log_flood, 7 # Log EVERYTHING. May slow performance.
119
+ )
120
+
121
+ # Initialize a freenect context and do any setup required for
122
+ # platform specific USB libraries.
123
+ #
124
+ # @param ctx Address of pointer to freenect context struct to allocate and initialize
125
+ # @param usb_ctx USB context to initialize. Can be NULL if not using multiple contexts.
126
+ #
127
+ # @return 0 on success, < 0 on error
128
+ attach_function :freenect_init, [:freenect_context, :freenect_usb_context], :int
129
+
130
+ # Closes the device if it is open, and frees the context
131
+ #
132
+ # @param ctx freenect context to close/free
133
+ #
134
+ # @return 0 on success
135
+ attach_function :freenect_shutdown, [:freenect_context], :int
136
+
137
+ # Set the log level for the specified freenect context
138
+ #
139
+ # @param ctx context to set log level for
140
+ # @param level log level to use (see freenect_loglevel enum)
141
+ attach_function :freenect_set_log_level, [:freenect_context, FREENECT_LOGLEVEL], :void
142
+
143
+ # Callback for log messages (i.e. for rerouting to a file instead of
144
+ # stdout)
145
+ #
146
+ # @param ctx context to set log callback for
147
+ # @param cb callback function pointer
148
+ callback :freenect_log_cb, [:freenect_context, FREENECT_LOGLEVEL, :string], :void
149
+ attach_function :freenect_set_log_callback, [:freenect_context, :freenect_log_cb], :void
150
+
151
+ # Calls the platform specific usb event processor
152
+ #
153
+ # @param ctx context to process events for
154
+ #
155
+ # @return 0 on success, other values on error, platform/library dependant
156
+ attach_function :freenect_process_events, [:freenect_context], :int
157
+
158
+ # Return the number of kinect devices currently connected to the
159
+ # system
160
+ #
161
+ # @param ctx Context to access device count through
162
+ #
163
+ # @return Number of devices connected, < 0 on error
164
+ attach_function :freenect_num_devices, [:freenect_context], :int
165
+
166
+ # Set which subdevices any subsequent calls to freenect_open_device()
167
+ # should open. This will not affect devices which have already been
168
+ # opened. The default behavior, should you choose not to call this
169
+ # function at all, is to open all supported subdevices - motor, cameras,
170
+ # and audio, if supported on the platform.
171
+ #
172
+ # @param ctx Context to set future subdevice selection for
173
+ # @param subdevs Flags representing the subdevices to select
174
+ attach_function :freenect_select_subdevices, [:freenect_context, FREENECT_DEVICE_FLAGS], :void
175
+
176
+ # Opens a kinect device via a context. Index specifies the index of
177
+ # the device on the current state of the bus. Bus resets may cause
178
+ # indexes to shift.
179
+ #
180
+ # @param ctx Context to open device through
181
+ # @param dev Device structure to assign opened device to
182
+ # @param index Index of the device on the bus
183
+ #
184
+ # @return 0 on success, < 0 on error
185
+ attach_function :freenect_open_device, [:freenect_context, :freenect_device, :int], :int
186
+
187
+ # Closes a device that is currently open
188
+ #
189
+ # @param dev Device to close
190
+ #
191
+ attach_function :freenect_close_device, [:freenect_device], :int
192
+
193
+ # Set the device user data, for passing generic information into
194
+ # callbacks
195
+ #
196
+ # @param dev Device to attach user data to
197
+ # @param user User data to attach
198
+ attach_function :freenect_set_user, [:freenect_device, :pointer], :void
199
+
200
+ # Retrieve the pointer to user data from the device struct
201
+ #
202
+ # @param dev Device from which to get user data
203
+ #
204
+ # @return Pointer to user data
205
+ attach_function :freenect_get_user, [:freenect_device], :pointer
206
+
207
+ # Set callback for depth information received event
208
+ #
209
+ # @param dev Device to set callback for
210
+ # @param cb Function pointer for processing depth information
211
+ callback :freenect_depth_cb, [:freenect_device, :pointer, :uint32], :void
212
+ attach_function :freenect_set_depth_callback, [:freenect_device, :freenect_depth_cb], :void
213
+
214
+ # Set callback for video information received event
215
+ #
216
+ # @param dev Device to set callback for
217
+ # @param cb Function pointer for processing video information
218
+ callback :freenect_video_cb, [:freenect_device, :pointer, :uint32], :void
219
+ attach_function :freenect_set_video_callback, [:freenect_device, :freenect_video_cb], :void
220
+
221
+ # Set the buffer to store depth information to. Size of buffer is
222
+ # dependant on depth format. See FREENECT_DEPTH_*_SIZE defines for
223
+ # more information.
224
+ #
225
+ # @param dev Device to set depth buffer for.
226
+ # @param buf Buffer to store depth information to.
227
+ attach_function :freenect_set_depth_buffer, [:freenect_device, :pointer], :int
228
+
229
+ # Set the buffer to store depth information to. Size of buffer is
230
+ # dependant on video format. See FREENECT_VIDEO_*_SIZE defines for
231
+ # more information.
232
+ #
233
+ # @param dev Device to set video buffer for.
234
+ # @param buf Buffer to store video information to.
235
+ #
236
+ # @return 0 on success, < 0 on error
237
+ attach_function :freenect_set_video_buffer, [:freenect_device, :pointer], :int
238
+
239
+ # Start the depth information stream for a device.
240
+ #
241
+ # @param dev Device to start depth information stream for.
242
+ #
243
+ # @return 0 on success, < 0 on error
244
+ attach_function :freenect_start_depth, [:freenect_device], :int
245
+
246
+ # Start the video information stream for a device.
247
+ #
248
+ # @param dev Device to start video information stream for.
249
+ #
250
+ # @return 0 on success, < 0 on error
251
+ attach_function :freenect_start_video, [:freenect_device], :int
252
+
253
+ # Stop the depth information stream for a device
254
+ #
255
+ # @param dev Device to stop depth information stream on.
256
+ #
257
+ # @return 0 on success, < 0 on error
258
+ attach_function :freenect_stop_depth, [:freenect_device], :int
259
+
260
+ # Stop the video information stream for a device
261
+ #
262
+ # @param dev Device to stop video information stream on.
263
+ #
264
+ # @return 0 on success, < 0 on error
265
+ attach_function :freenect_stop_video, [:freenect_device], :int
266
+
267
+ # Updates the accelerometer state using a blocking control message
268
+ # call.
269
+ #
270
+ # @param dev Device to get accelerometer data from
271
+ #
272
+ # @return 0 on success, < 0 on error. Accelerometer data stored to
273
+ # device struct.
274
+ attach_function :freenect_update_tilt_state, [:freenect_device], :int
275
+
276
+ # Retrieve the tilt state from a device
277
+ #
278
+ # @param dev Device to retrieve tilt state from
279
+ #
280
+ # @return The tilt state struct of the device
281
+ attach_function :freenect_get_tilt_state, [:freenect_device], FreenectRawTiltState
282
+
283
+ # Return the tilt state, in degrees with respect to the horizon
284
+ #
285
+ # @param state The tilt state struct from a device
286
+ #
287
+ # @return Current degree of tilt of the device
288
+ attach_function :freenect_get_tilt_degs, [FreenectRawTiltState], :double
289
+
290
+ # Set the tilt state of the device, in degrees with respect to the
291
+ # horizon. Uses blocking control message call to update
292
+ # device. Function return does not reflect state of device, device
293
+ # may still be moving to new position after the function returns. Use
294
+ # freenect_get_tilt_status() to find current movement state.
295
+ #
296
+ # @param dev Device to set tilt state
297
+ # @param angle Angle the device should tilt to
298
+ #
299
+ # @return 0 on success, < 0 on error.
300
+ attach_function :freenect_set_tilt_degs, [:freenect_device, :double], :int
301
+
302
+ # Return the movement state of the tilt motor (moving, stopped, etc...)
303
+ #
304
+ # @param state Raw state struct to get the tilt status code from
305
+ #
306
+ # @return Status code of the tilt device. See
307
+ # freenect_tilt_st:freenect_get_tilt_statusatus_code enum for more info.
308
+ attach_function :freenect_get_tilt_status, [FreenectRawTiltState], FREENECT_TILT_STATUS_CODE
309
+
310
+ # Set the state of the LED. Uses blocking control message call to
311
+ # update device.
312
+ #
313
+ # @param dev Device to set the LED state
314
+ # @param option LED state to set on device. See freenect_led_options enum.
315
+ #
316
+ # @return 0 on success, < 0 on error
317
+ attach_function :freenect_set_led, [:freenect_device, FREENECT_LED_OPTIONS], :int
318
+
319
+ # Get the frame descriptor of the current video mode for the specified
320
+ # freenect device.
321
+ #
322
+ # @param dev Which device to return the currently-set video mode for
323
+ #
324
+ # @return A freenect_frame_mode describing the current video mode of the specified device
325
+ attach_function :freenect_get_current_video_mode, [:freenect_device], FreenectFrameMode.by_value
326
+
327
+ # Get the frame descriptor of the current depth mode for the specified
328
+ # freenect device.
329
+ #
330
+ # @param dev Which device to return the currently-set depth mode for
331
+ #
332
+ # @return A freenect_frame_mode describing the current depth mode of the specified device
333
+ attach_function :freenect_get_current_depth_mode, [:freenect_device], FreenectFrameMode.by_value
334
+
335
+ # Sets the current video mode for the specified device. If the
336
+ # freenect_frame_mode specified is not one provided by the driver
337
+ # e.g. from freenect_get_video_mode() or freenect_find_video_mode()
338
+ # then behavior is undefined. The current video mode cannot be
339
+ # changed while streaming is active.
340
+ #
341
+ # @param dev Device for which to set the video mode
342
+ # @param mode Frame mode to set
343
+ #
344
+ # @return 0 on success, < 0 if error
345
+ attach_function :freenect_set_video_mode, [:freenect_device, FreenectFrameMode.by_value], :int
346
+
347
+ # Sets the current depth mode for the specified device. The mode
348
+ # cannot be changed while streaming is active.
349
+ #
350
+ # @param dev Device for which to set the depth mode
351
+ # @param mode Frame mode to set
352
+ #
353
+ # @return 0 on success, < 0 if error
354
+ attach_function :freenect_set_depth_mode, [:freenect_device, FreenectFrameMode.by_value], :int
355
+
356
+ # Get the axis-based gravity adjusted accelerometer state, as laid
357
+ # out via the accelerometer data sheet, which is available at
358
+ #
359
+ # http://www.kionix.com/Product%20Sheets/KXSD9%20Product%20Brief.pdf
360
+ #
361
+ # @param state State to extract accelerometer data from
362
+ # @param x Stores X-axis accelerometer state
363
+ # @param y Stores Y-axis accelerometer state
364
+ # @param z Stores Z-axis accelerometer state
365
+ attach_function :freenect_get_mks_accel, [FreenectRawTiltState, :pointer, :pointer, :pointer], :void
366
+
367
+ # Get the number of video camera modes supported by the driver. This includes both RGB and IR modes.
368
+ #
369
+ # @return Number of video modes supported by the driver
370
+ attach_function :freenect_get_video_mode_count, [], :int
371
+
372
+ # Get the frame descriptor of the nth supported video mode for the
373
+ # video camera.
374
+ #
375
+ # @param n Which of the supported modes to return information about
376
+ #
377
+ # @return A freenect_frame_mode describing the nth video mode
378
+ attach_function :freenect_get_video_mode, [:int], FreenectFrameMode.by_value
379
+
380
+ # Get the number of depth camera modes supported by the driver. This includes both RGB and IR modes.
381
+ #
382
+ # @return Number of depth modes supported by the driver
383
+ attach_function :freenect_get_depth_mode_count, [], :int
384
+
385
+ # Get the frame descriptor of the nth supported depth mode for the
386
+ # depth camera.
387
+ #
388
+ # @param n Which of the supported modes to return information about
389
+ #
390
+ # @return A freenect_frame_mode describing the nth depth mode
391
+ attach_function :freenect_get_depth_mode, [:int], FreenectFrameMode.by_value
392
+
393
+ # Convenience function to return a mode descriptor matching the
394
+ # specified resolution and video camera pixel format, if one exists.
395
+ #
396
+ # @param res Resolution desired
397
+ # @param fmt Pixel format desired
398
+ #
399
+ # @return A freenect_frame_mode that matches the arguments specified, if such a valid mode exists; otherwise, an invalid freenect_frame_mode.
400
+ attach_function :freenect_find_video_mode, [FREENECT_RESOLUTION, FREENECT_VIDEO_FORMAT], FreenectFrameMode.by_value
401
+
402
+ # Convenience function to return a mode descriptor matching the
403
+ # specified resolution and depth camera pixel format, if one exists.
404
+ #
405
+ # @param res Resolution desired
406
+ # @param fmt Pixel format desired
407
+ #
408
+ # @return A freenect_frame_mode that matches the arguments specified, if such a valid mode exists; otherwise, an invalid freenect_frame_mode.
409
+ attach_function :freenect_find_depth_mode, [FREENECT_RESOLUTION, FREENECT_DEPTH_FORMAT], FreenectFrameMode.by_value
410
+
411
+ # Synchronous video function, starts the runloop if it isn't running
412
+ #
413
+ # The returned buffer is valid until this function is called again, after which the buffer must not
414
+ # be used again. Make a copy if the data is required.
415
+ #
416
+ # Args:
417
+ # video: Populated with a pointer to a video buffer with a size of the requested type
418
+ # timestamp: Populated with the associated timestamp
419
+ # index: Device index (0 is the first)
420
+ # fmt: Valid format
421
+ #
422
+ # Returns:
423
+ # Nonzero on error.
424
+ attach_function :freenect_sync_get_video, [:pointer, :pointer, :int, FREENECT_VIDEO_FORMAT], :int
425
+
426
+ # Synchronous depth function, starts the runloop if it isn't running
427
+ #
428
+ # The returned buffer is valid until this function is called again, after which the buffer must not
429
+ # be used again. Make a copy if the data is required.
430
+ #
431
+ # Args:
432
+ # depth: Populated with a pointer to a depth buffer with a size of the requested type
433
+ # timestamp: Populated with the associated timestamp
434
+ # index: Device index (0 is the first)
435
+ # fmt: Valid format
436
+ #
437
+ # Returns:
438
+ # Nonzero on error.
439
+ attach_function :freenect_sync_get_depth, [:pointer, :pointer, :int, FREENECT_VIDEO_FORMAT], :int
440
+
441
+ # Tilt function, starts the runloop if it isn't running
442
+ #
443
+ # Args:
444
+ # angle: Set the angle to tilt the device
445
+ # index: Device index (0 is the first)
446
+ #
447
+ # Returns:
448
+ # Nonzero on error.
449
+ attach_function :freenect_sync_set_tilt_degs, [:int, :int], :int
450
+
451
+ # Tilt state function, starts the runloop if it isn't running
452
+ #
453
+ # Args:
454
+ # state: Populated with an updated tilt state pointer
455
+ # index: Device index (0 is the first)
456
+ #
457
+ # Returns:
458
+ # Nonzero on error.
459
+ attach_function :freenect_sync_get_tilt_state, [:pointer, :int], :int
460
+
461
+ # Led function, starts the runloop if it isn't running
462
+ #
463
+ # Args:
464
+ # led: The LED state to set the device to
465
+ # index: Device index (0 is the first)
466
+ #
467
+ # Returns:
468
+ # Nonzero on error.
469
+ attach_function :freenect_sync_set_led, [FREENECT_LED_OPTIONS, :int], :int
470
+
471
+ # Stops the runloop if it is running
472
+ attach_function :freenect_sync_stop, [], :void
473
+
474
+ end
475
+ end
476
+
477
+