ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
K4aPlugin.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include <k4a/k4a.h>
9 #include <k4arecord/playback.h>
10 #include <k4arecord/record.h>
11 
12 #include <cstdlib>
13 #include <cstring>
14 #include <unordered_map>
15 #include <vector>
16 
17 #ifdef _WIN32
18 #include <windows.h>
19 #else
20 #include <dlfcn.h>
21 #include <link.h>
22 #endif
23 
24 #include <Helper.h>
25 #include <Logging.h>
26 
29 
30 namespace cloudViewer {
31 namespace io {
32 namespace k4a_plugin {
33 
34 #ifdef _WIN32
35 
36 static const std::string k4a_lib_name = "k4a.dll";
37 static const std::string k4arecord_lib_name = "k4arecord.dll";
38 
39 static HINSTANCE GetDynamicLibHandle(const std::string& lib_name) {
40  static std::unordered_map<std::string, HINSTANCE> map_lib_name_to_handle;
41 
42  if (map_lib_name_to_handle.count(lib_name) == 0) {
43  // clang-format off
44  // To use custom library path for K4a, set environment variable K4A_LIB_DIR
45  // Exammple:
46  // set K4A_LIB_DIR=C:\Program Files\Azure Kinect SDK v1.2.0\sdk\windows-desktop\amd64\release\bin
47  // Note that double qoutes and "\\" are not needed
48  std::string env_lib_dir = "";
49  char const* temp = std::getenv("K4A_LIB_DIR");
50  if (temp != nullptr) {
51  env_lib_dir = std::string(temp);
52  }
53  utility::LogDebug("Environment variable K4A_LIB_DIR: {}", env_lib_dir);
54 
55  static const std::vector<std::string> k4a_lib_path_hints = {
56  env_lib_dir,
57  "",
58  "C:\\Program Files\\Azure Kinect SDK v1.4.1\\sdk\\windows-desktop\\amd64\\release\\bin",
59  "C:\\Program Files\\Azure Kinect SDK v1.4.0\\sdk\\windows-desktop\\amd64\\release\\bin",
60  "C:\\Program Files\\Azure Kinect SDK v1.3.0\\sdk\\windows-desktop\\amd64\\release\\bin",
61  "C:\\Program Files\\Azure Kinect SDK v1.2.0\\sdk\\windows-desktop\\amd64\\release\\bin"
62  };
63  // clang-format on
64 
65  HINSTANCE handle = NULL;
66  for (const std::string& k4a_lib_path_hint : k4a_lib_path_hints) {
67  utility::LogDebug("Trying k4a_lib_path_hint: {}",
68  k4a_lib_path_hint);
69  std::string full_path = k4a_lib_path_hint + "\\" + lib_name;
70  handle = LoadLibrary(TEXT(full_path.c_str()));
71  if (handle != NULL) {
72  utility::LogDebug("Loaded {}", full_path);
73  break;
74  }
75  }
76  if (handle == NULL) {
77  utility::LogError("Cannot load {}", lib_name);
78  }
79  map_lib_name_to_handle[lib_name] = handle;
80  }
81  return map_lib_name_to_handle.at(lib_name);
82 }
83 
84 #define DEFINE_BRIDGED_FUNC_WITH_COUNT(lib_name, return_type, f_name, \
85  num_args, ...) \
86  return_type f_name(EXTRACT_TYPES_PARAMS(num_args, __VA_ARGS__)) { \
87  typedef return_type (*f_type)( \
88  EXTRACT_TYPES_PARAMS(num_args, __VA_ARGS__)); \
89  static f_type f = nullptr; \
90  \
91  if (!f) { \
92  f = (f_type)GetProcAddress(GetDynamicLibHandle(lib_name), \
93  #f_name); \
94  if (f == nullptr) { \
95  utility::LogError("Cannot load func {}", #f_name); \
96  } else { \
97  utility::LogDebug("Loaded func {}", #f_name); \
98  } \
99  } \
100  return f(EXTRACT_PARAMS(num_args, __VA_ARGS__)); \
101  }
102 
103 #else
104 
105 static const std::string k4a_lib_name = "libk4a.so";
106 static const std::string k4arecord_lib_name = "libk4arecord.so";
107 
108 static void* GetDynamicLibHandle(const std::string& lib_name) {
109  static std::unordered_map<std::string, void*> map_lib_name_to_handle;
110 
111  if (map_lib_name_to_handle.count(lib_name) == 0) {
112  // Hack to support Ubuntu 16.04 K4A library loading
113  //
114  // Dependency:
115  // In __init__.py Python file, one of os.environ['LD_LIBRARY_PATH'] is
116  // set to contain libk4a.so, libk4arecord.so and libdepthengine.so.
117  //
118  // Normally LD_LIBRARY_PATH cannot be set at runtime (only possible at
119  // program load time). Here we explicitly try to load from
120  // LD_LIBRARY_PATH.
121  std::vector<std::string> k4a_lib_path_hints;
122  if (const char* ld_paths_c = std::getenv("LD_LIBRARY_PATH")) {
123  utility::SplitString(k4a_lib_path_hints, ld_paths_c, ":", true);
124  }
125  k4a_lib_path_hints.insert(k4a_lib_path_hints.begin(), "");
126 
127  void* handle = nullptr;
128  std::string full_path;
129  for (const std::string& k4a_lib_path_hint : k4a_lib_path_hints) {
130  if (k4a_lib_path_hint == "") {
131  full_path = lib_name;
132  } else {
133  full_path = k4a_lib_path_hint + "/" + lib_name;
134  }
135  handle = dlopen(full_path.c_str(), RTLD_NOW);
136  if (handle != NULL) {
137  break;
138  }
139  }
140  if (!handle) {
141  utility::LogError("Cannot load {}", dlerror());
142  } else {
143  utility::LogDebug("Loaded {}", full_path);
144  struct link_map* map = nullptr;
145  if (!dlinfo(handle, RTLD_DI_LINKMAP, &map)) {
146  if (map != nullptr) {
147  utility::LogDebug("Library path {}", map->l_name);
148  } else {
149  utility::LogWarning("Cannot get link_map");
150  }
151  } else {
152  utility::LogWarning("Cannot get dlinfo");
153  }
154  }
155  map_lib_name_to_handle[lib_name] = handle;
156  }
157  return map_lib_name_to_handle.at(lib_name);
158 }
159 
160 #define DEFINE_BRIDGED_FUNC_WITH_COUNT(lib_name, return_type, f_name, \
161  num_args, ...) \
162  return_type f_name(EXTRACT_TYPES_PARAMS(num_args, __VA_ARGS__)) { \
163  typedef return_type (*f_type)( \
164  EXTRACT_TYPES_PARAMS(num_args, __VA_ARGS__)); \
165  static f_type f = nullptr; \
166  \
167  if (!f) { \
168  f = (f_type)dlsym(GetDynamicLibHandle(lib_name), #f_name); \
169  if (!f) { \
170  utility::LogError("Cannot load {}: {}", #f_name, dlerror()); \
171  } \
172  } \
173  return f(EXTRACT_PARAMS(num_args, __VA_ARGS__)); \
174  }
175 
176 #endif
177 
178 #define DEFINE_BRIDGED_FUNC(lib_name, return_type, f_name, ...) \
179  DEFINE_BRIDGED_FUNC_WITH_COUNT(lib_name, return_type, f_name, \
180  COUNT_ARGS(__VA_ARGS__), __VA_ARGS__)
181 
183 
185  k4a_result_t,
187  const char*,
188  path,
189  k4a_device_t,
190  device,
191  const k4a_device_configuration_t,
192  device_config,
193  k4a_record_t*,
194  recording_handle)
195 
197  k4a_result_t,
199  k4a_record_t,
200  recording_handle,
201  const char*,
202  name,
203  const char*,
204  value)
205 
207  k4a_result_t,
209  k4a_record_t,
210  recording_handle)
211 
213  k4a_result_t,
215  k4a_record_t,
216  recording_handle)
217 
219  k4a_result_t,
221  k4a_record_t,
222  recording_handle,
223  k4a_capture_t,
224  capture_handle)
225 
227  k4a_result_t,
229  k4a_record_t,
230  recording_handle,
231  k4a_imu_sample_t,
232  imu_sample)
233 
235  k4a_result_t,
237  k4a_record_t,
238  recording_handle)
239 
241  void,
243  k4a_record_t,
244  recording_handle)
245 
246 
249  k4a_result_t,
251  const char*,
252  path,
253  k4a_playback_t*,
254  playback_handle)
256  k4a_buffer_result_t,
258  k4a_playback_t,
259  playback_handle,
260  uint8_t*,
261  data,
262  size_t*,
263  data_size)
265  k4a_result_t,
267  k4a_playback_t,
268  playback_handle,
269  k4a_calibration_t*,
270  calibration)
272  k4a_result_t,
274  k4a_playback_t,
275  playback_handle,
276  k4a_record_configuration_t*,
277  config)
279  k4a_buffer_result_t,
281  k4a_playback_t,
282  playback_handle,
283  const char*,
284  name,
285  char*,
286  value,
287  size_t*,
288  value_size)
290  k4a_result_t,
292  k4a_playback_t,
293  playback_handle,
294  k4a_image_format_t,
295  target_format)
297  k4a_stream_result_t,
299  k4a_playback_t,
300  playback_handle,
301  k4a_capture_t*,
302  capture_handle)
304  k4a_stream_result_t,
306  k4a_playback_t,
307  playback_handle,
308  k4a_capture_t*,
309  capture_handle)
311  k4a_stream_result_t,
313  k4a_playback_t,
314  playback_handle,
315  k4a_imu_sample_t*,
316  imu_sample)
318  k4a_stream_result_t,
320  k4a_playback_t,
321  playback_handle,
322  k4a_imu_sample_t*,
323  imu_sample)
325  k4a_result_t,
327  k4a_playback_t,
328  playback_handle,
329  int64_t,
330  offset_usec,
331  k4a_playback_seek_origin_t,
334  uint64_t,
336  k4a_playback_t,
337  playback_handle)
339  void,
341  k4a_playback_t,
342  playback_handle)
343 
344 
347 
349  k4a_result_t,
351  k4a_logging_message_cb_t*,
352  message_cb,
353  void*,
354  message_cb_context,
355  k4a_log_level_t,
356  min_level)
357 
359  k4a_result_t,
361  uint32_t,
362  index,
363  k4a_device_t*,
364  device_handle)
365 
367  k4a_lib_name, void, k4a_device_close, k4a_device_t, device_handle)
368 
370  k4a_wait_result_t,
372  k4a_device_t,
373  device_handle,
374  k4a_capture_t*,
375  capture_handle,
376  int32_t,
377  timeout_in_ms)
378 
380  k4a_wait_result_t,
382  k4a_device_t,
383  device_handle,
384  k4a_imu_sample_t*,
385  imu_sample,
386  int32_t,
387  timeout_in_ms)
388 
390  k4a_result_t,
392  k4a_capture_t*,
393  capture_handle)
394 
396  k4a_lib_name, void, k4a_capture_release, k4a_capture_t, capture_handle)
397 
399  void,
401  k4a_capture_t,
402  capture_handle)
403 
405  k4a_image_t,
407  k4a_capture_t,
408  capture_handle)
409 
411  k4a_image_t,
413  k4a_capture_t,
414  capture_handle)
415 
417  k4a_image_t,
419  k4a_capture_t,
420  capture_handle)
421 
423  void,
425  k4a_capture_t,
426  capture_handle,
427  k4a_image_t,
428  image_handle)
429 
431  void,
433  k4a_capture_t,
434  capture_handle,
435  k4a_image_t,
436  image_handle)
437 
439  void,
441  k4a_capture_t,
442  capture_handle,
443  k4a_image_t,
444  image_handle)
445 
447  void,
449  k4a_capture_t,
450  capture_handle,
451  float,
452  temperature_c)
453 
455  float,
457  k4a_capture_t,
458  capture_handle)
459 
461  k4a_result_t,
463  k4a_image_format_t,
464  format,
465  int,
466  width_pixels,
467  int,
468  height_pixels,
469  int,
470  stride_bytes,
471  k4a_image_t*,
472  image_handle)
473 
475  k4a_result_t,
477  k4a_image_format_t,
478  format,
479  int,
480  width_pixels,
481  int,
482  height_pixels,
483  int,
484  stride_bytes,
485  uint8_t*,
486  buffer,
487  size_t,
488  buffer_size,
489  k4a_memory_destroy_cb_t*,
490  buffer_release_cb,
491  void*,
492  buffer_release_cb_context,
493  k4a_image_t*,
494  image_handle)
495 
497  k4a_lib_name, uint8_t*, k4a_image_get_buffer, k4a_image_t, image_handle)
498 
500  k4a_lib_name, size_t, k4a_image_get_size, k4a_image_t, image_handle)
501 
503  k4a_image_format_t,
505  k4a_image_t,
506  image_handle)
507 
509  int,
511  k4a_image_t,
512  image_handle)
513 
515  int,
517  k4a_image_t,
518  image_handle)
519 
521  int,
523  k4a_image_t,
524  image_handle)
525 
527  uint64_t,
529  k4a_image_t,
530  image_handle)
531 
533  uint64_t,
535  k4a_image_t,
536  image_handle)
537 
539  uint32_t,
541  k4a_image_t,
542  image_handle)
543 
545  uint32_t,
547  k4a_image_t,
548  image_handle)
549 
551  void,
553  k4a_image_t,
554  image_handle,
555  uint64_t,
556  timestamp_usec)
557 
559  void,
561  k4a_image_t,
562  image_handle,
563  uint64_t,
564  exposure_usec)
565 
567  void,
569  k4a_image_t,
570  image_handle,
571  uint32_t,
572  white_balance)
573 
575  void,
577  k4a_image_t,
578  image_handle,
579  uint32_t,
580  iso_speed)
581 
583  k4a_lib_name, void, k4a_image_reference, k4a_image_t, image_handle)
584 
586  k4a_lib_name, void, k4a_image_release, k4a_image_t, image_handle)
587 
589  k4a_result_t,
591  k4a_device_t,
592  device_handle,
593  k4a_device_configuration_t*,
594  config)
595 
597  void,
599  k4a_device_t,
600  device_handle)
601 
603  k4a_result_t,
605  k4a_device_t,
606  device_handle)
607 
609  k4a_lib_name, void, k4a_device_stop_imu, k4a_device_t, device_handle)
610 
612  k4a_buffer_result_t,
614  k4a_device_t,
615  device_handle,
616  char*,
617  serial_number,
618  size_t*,
619  serial_number_size)
620 
622  k4a_result_t,
624  k4a_device_t,
625  device_handle,
626  k4a_hardware_version_t*,
628 
630  k4a_result_t,
632  k4a_device_t,
633  device_handle,
634  k4a_color_control_command_t,
635  command,
636  bool*,
637  supports_auto,
638  int32_t*,
639  min_value,
640  int32_t*,
641  max_value,
642  int32_t*,
643  step_value,
644  int32_t*,
645  default_value,
646  k4a_color_control_mode_t*,
647  default_mode)
648 
650  k4a_result_t,
652  k4a_device_t,
653  device_handle,
654  k4a_color_control_command_t,
655  command,
656  k4a_color_control_mode_t*,
657  mode,
658  int32_t*,
659  value)
660 
662  k4a_result_t,
664  k4a_device_t,
665  device_handle,
666  k4a_color_control_command_t,
667  command,
668  k4a_color_control_mode_t,
669  mode,
670  int32_t,
671  value)
672 
674  k4a_buffer_result_t,
676  k4a_device_t,
677  device_handle,
678  uint8_t*,
679  data,
680  size_t*,
681  data_size)
682 
684  k4a_result_t,
686  k4a_device_t,
687  device_handle,
688  const k4a_depth_mode_t,
689  depth_mode,
690  const k4a_color_resolution_t,
691  color_resolution,
692  k4a_calibration_t*,
693  calibration)
694 
696  k4a_result_t,
698  k4a_device_t,
699  device_handle,
700  bool*,
701  sync_in_jack_connected,
702  bool*,
703  sync_out_jack_connected)
704 
706  k4a_result_t,
708  char*,
709  raw_calibration,
710  size_t,
711  raw_calibration_size,
712  const k4a_depth_mode_t,
713  depth_mode,
714  const k4a_color_resolution_t,
715  color_resolution,
716  k4a_calibration_t*,
717  calibration)
718 
720  k4a_result_t,
722  const k4a_calibration_t*,
723  calibration,
724  const k4a_float3_t*,
725  source_point3d_mm,
726  const k4a_calibration_type_t,
727  source_camera,
728  const k4a_calibration_type_t,
729  target_camera,
730  k4a_float3_t*,
731  target_point3d_mm)
732 
734  k4a_result_t,
736  const k4a_calibration_t*,
737  calibration,
738  const k4a_float2_t*,
739  source_point2d,
740  const float,
741  source_depth_mm,
742  const k4a_calibration_type_t,
743  source_camera,
744  const k4a_calibration_type_t,
745  target_camera,
746  k4a_float3_t*,
747  target_point3d_mm,
748  int*,
749  valid)
750 
752  k4a_result_t,
754  const k4a_calibration_t*,
755  calibration,
756  const k4a_float3_t*,
757  source_point3d_mm,
758  const k4a_calibration_type_t,
759  source_camera,
760  const k4a_calibration_type_t,
761  target_camera,
762  k4a_float2_t*,
763  target_point2d,
764  int*,
765  valid)
766 
768  k4a_result_t,
770  const k4a_calibration_t*,
771  calibration,
772  const k4a_float2_t*,
773  source_point2d,
774  const float,
775  source_depth_mm,
776  const k4a_calibration_type_t,
777  source_camera,
778  const k4a_calibration_type_t,
779  target_camera,
780  k4a_float2_t*,
781  target_point2d,
782  int*,
783  valid)
784 
786  k4a_transformation_t,
788  const k4a_calibration_t*,
789  calibration)
790 
792  void,
794  k4a_transformation_t,
795  transformation_handle)
796 
798  k4a_result_t,
800  k4a_transformation_t,
801  transformation_handle,
802  const k4a_image_t,
803  depth_image,
804  k4a_image_t,
805  transformed_depth_image)
806 
808  k4a_result_t,
810  k4a_transformation_t,
811  transformation_handle,
812  const k4a_image_t,
813  depth_image,
814  const k4a_image_t,
815  color_image,
816  k4a_image_t,
817  transformed_color_image)
818 
820  k4a_result_t,
822  k4a_transformation_t,
823  transformation_handle,
824  const k4a_image_t,
825  depth_image,
826  const k4a_calibration_type_t,
827  camera,
828  k4a_image_t,
829  xyz_image)
830 
831 } // namespace k4a_plugin
832 } // namespace io
833 } // namespace cloudViewer
filament::Texture::InternalFormat format
std::string version
std::string name
#define DEFINE_BRIDGED_FUNC(lib_name, return_type, f_name,...)
Definition: K4aPlugin.cpp:178
#define NULL
Eigen::Vector3d origin
Definition: VoxelGridIO.cpp:26
#define LogWarning(...)
Definition: Logging.h:72
#define LogError(...)
Definition: Logging.h:60
#define LogDebug(...)
Definition: Logging.h:90
GraphType data
Definition: graph_cut.cc:138
void k4a_device_stop_imu(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle), k4a_device_t, device_handle))
Definition: K4aPlugin.cpp:609
k4a_image_format_t k4a_image_get_format(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:506
k4a_result_t k4a_image_create_from_buffer(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_format_t, format, int, width_pixels, int, height_pixels, int, stride_bytes, uint8_t *, buffer, size_t, buffer_size, k4a_memory_destroy_cb_t *, buffer_release_cb, void *, buffer_release_cb_context, k4a_image_t *, image_handle), k4a_image_format_t, format, int, width_pixels, int, height_pixels, int, stride_bytes, uint8_t *, buffer, size_t, buffer_size, k4a_memory_destroy_cb_t *, buffer_release_cb, void *, buffer_release_cb_context, k4a_image_t *, image_handle))
Definition: K4aPlugin.cpp:494
k4a_result_t k4a_record_write_capture(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle, k4a_capture_t, capture_handle), k4a_record_t, recording_handle, k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:224
k4a_stream_result_t k4a_playback_get_previous_capture(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_capture_t *, capture_handle), k4a_playback_t, playback_handle, k4a_capture_t *, capture_handle))
Definition: K4aPlugin.cpp:309
k4a_result_t k4a_device_get_color_control(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_color_control_command_t, command, k4a_color_control_mode_t *, mode, int32_t *, value), k4a_device_t, device_handle, k4a_color_control_command_t, command, k4a_color_control_mode_t *, mode, int32_t *, value))
Definition: K4aPlugin.cpp:659
uint64_t k4a_image_get_exposure_usec(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:536
void k4a_device_stop_cameras(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle), k4a_device_t, device_handle))
Definition: K4aPlugin.cpp:600
uint32_t k4a_image_get_iso_speed(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:548
k4a_stream_result_t k4a_playback_get_next_imu_sample(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_imu_sample_t *, imu_sample), k4a_playback_t, playback_handle, k4a_imu_sample_t *, imu_sample))
Definition: K4aPlugin.cpp:316
k4a_result_t k4a_transformation_depth_image_to_color_camera(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, k4a_image_t, transformed_depth_image), k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, k4a_image_t, transformed_depth_image))
Definition: K4aPlugin.cpp:805
void k4a_capture_set_color_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle, k4a_image_t, image_handle), k4a_capture_t, capture_handle, k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:428
k4a_result_t k4a_capture_create(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t *, capture_handle), k4a_capture_t *, capture_handle))
Definition: K4aPlugin.cpp:393
k4a_result_t k4a_device_open(EXTRACT_TYPES_PARAMS(COUNT_ARGS(uint32_t, index, k4a_device_t *, device_handle), uint32_t, index, k4a_device_t *, device_handle))
Definition: K4aPlugin.cpp:364
void k4a_capture_reference(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:402
k4a_result_t k4a_device_get_calibration(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, const k4a_depth_mode_t, depth_mode, const k4a_color_resolution_t, color_resolution, k4a_calibration_t *, calibration), k4a_device_t, device_handle, const k4a_depth_mode_t, depth_mode, const k4a_color_resolution_t, color_resolution, k4a_calibration_t *, calibration))
Definition: K4aPlugin.cpp:693
void k4a_capture_set_depth_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle, k4a_image_t, image_handle), k4a_capture_t, capture_handle, k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:436
void k4a_device_close(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle), k4a_device_t, device_handle))
Definition: K4aPlugin.cpp:367
k4a_image_t k4a_capture_get_ir_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:420
k4a_buffer_result_t k4a_device_get_raw_calibration(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, uint8_t *, data, size_t *, data_size), k4a_device_t, device_handle, uint8_t *, data, size_t *, data_size))
Definition: K4aPlugin.cpp:681
k4a_image_t k4a_capture_get_color_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:408
void k4a_image_set_iso_speed(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle, uint32_t, iso_speed), k4a_image_t, image_handle, uint32_t, iso_speed))
Definition: K4aPlugin.cpp:580
k4a_result_t k4a_record_create(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const char *, path, k4a_device_t, device, const k4a_device_configuration_t, device_config, k4a_record_t *, recording_handle), const char *, path, k4a_device_t, device, const k4a_device_configuration_t, device_config, k4a_record_t *, recording_handle))
Definition: K4aPlugin.cpp:194
k4a_result_t k4a_record_add_imu_track(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle), k4a_record_t, recording_handle))
Definition: K4aPlugin.cpp:210
k4a_buffer_result_t k4a_playback_get_raw_calibration(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, uint8_t *, data, size_t *, data_size), k4a_playback_t, playback_handle, uint8_t *, data, size_t *, data_size))
Definition: K4aPlugin.cpp:263
uint32_t k4a_image_get_white_balance(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:542
k4a_result_t k4a_playback_get_record_configuration(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_record_configuration_t *, config), k4a_playback_t, playback_handle, k4a_record_configuration_t *, config))
Definition: K4aPlugin.cpp:277
k4a_result_t k4a_playback_open(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const char *, path, k4a_playback_t *, playback_handle), const char *, path, k4a_playback_t *, playback_handle))
Definition: K4aPlugin.cpp:254
int k4a_image_get_height_pixels(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:518
k4a_image_t k4a_capture_get_depth_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:414
k4a_result_t k4a_image_create(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_format_t, format, int, width_pixels, int, height_pixels, int, stride_bytes, k4a_image_t *, image_handle), k4a_image_format_t, format, int, width_pixels, int, height_pixels, int, stride_bytes, k4a_image_t *, image_handle))
Definition: K4aPlugin.cpp:472
k4a_result_t k4a_calibration_2d_to_2d(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const k4a_calibration_t *, calibration, const k4a_float2_t *, source_point2d, const float, source_depth_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float2_t *, target_point2d, int *, valid), const k4a_calibration_t *, calibration, const k4a_float2_t *, source_point2d, const float, source_depth_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float2_t *, target_point2d, int *, valid))
Definition: K4aPlugin.cpp:783
k4a_result_t k4a_device_start_imu(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle), k4a_device_t, device_handle))
Definition: K4aPlugin.cpp:606
void k4a_playback_close(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle), k4a_playback_t, playback_handle))
Definition: K4aPlugin.cpp:342
k4a_result_t k4a_device_get_sync_jack(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, bool *, sync_in_jack_connected, bool *, sync_out_jack_connected), k4a_device_t, device_handle, bool *, sync_in_jack_connected, bool *, sync_out_jack_connected))
Definition: K4aPlugin.cpp:703
k4a_result_t k4a_device_set_color_control(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_color_control_command_t, command, k4a_color_control_mode_t, mode, int32_t, value), k4a_device_t, device_handle, k4a_color_control_command_t, command, k4a_color_control_mode_t, mode, int32_t, value))
Definition: K4aPlugin.cpp:671
k4a_result_t k4a_playback_seek_timestamp(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, int64_t, offset_usec, k4a_playback_seek_origin_t, origin), k4a_playback_t, playback_handle, int64_t, offset_usec, k4a_playback_seek_origin_t, origin))
Definition: K4aPlugin.cpp:332
uint8_t * k4a_image_get_buffer(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:497
k4a_result_t k4a_transformation_depth_image_to_point_cloud(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, const k4a_calibration_type_t, camera, k4a_image_t, xyz_image), k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, const k4a_calibration_type_t, camera, k4a_image_t, xyz_image))
Definition: K4aPlugin.cpp:829
float k4a_capture_get_temperature_c(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:458
k4a_result_t k4a_calibration_3d_to_3d(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const k4a_calibration_t *, calibration, const k4a_float3_t *, source_point3d_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float3_t *, target_point3d_mm), const k4a_calibration_t *, calibration, const k4a_float3_t *, source_point3d_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float3_t *, target_point3d_mm))
Definition: K4aPlugin.cpp:731
void k4a_capture_set_ir_image(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle, k4a_image_t, image_handle), k4a_capture_t, capture_handle, k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:444
k4a_result_t k4a_device_get_color_control_capabilities(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_color_control_command_t, command, bool *, supports_auto, int32_t *, min_value, int32_t *, max_value, int32_t *, step_value, int32_t *, default_value, k4a_color_control_mode_t *, default_mode), k4a_device_t, device_handle, k4a_color_control_command_t, command, bool *, supports_auto, int32_t *, min_value, int32_t *, max_value, int32_t *, step_value, int32_t *, default_value, k4a_color_control_mode_t *, default_mode))
Definition: K4aPlugin.cpp:647
uint64_t k4a_image_get_timestamp_usec(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:530
k4a_result_t k4a_calibration_3d_to_2d(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const k4a_calibration_t *, calibration, const k4a_float3_t *, source_point3d_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float2_t *, target_point2d, int *, valid), const k4a_calibration_t *, calibration, const k4a_float3_t *, source_point3d_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float2_t *, target_point2d, int *, valid))
Definition: K4aPlugin.cpp:765
void k4a_image_release(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:586
void k4a_image_set_white_balance(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle, uint32_t, white_balance), k4a_image_t, image_handle, uint32_t, white_balance))
Definition: K4aPlugin.cpp:572
k4a_result_t k4a_record_flush(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle), k4a_record_t, recording_handle))
Definition: K4aPlugin.cpp:238
size_t k4a_image_get_size(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:500
void k4a_image_set_timestamp_usec(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle, uint64_t, timestamp_usec), k4a_image_t, image_handle, uint64_t, timestamp_usec))
Definition: K4aPlugin.cpp:556
void k4a_image_set_exposure_time_usec(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle, uint64_t, exposure_usec), k4a_image_t, image_handle, uint64_t, exposure_usec))
Definition: K4aPlugin.cpp:564
k4a_result_t k4a_set_debug_message_handler(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_logging_message_cb_t *, message_cb, void *, message_cb_context, k4a_log_level_t, min_level), k4a_logging_message_cb_t *, message_cb, void *, message_cb_context, k4a_log_level_t, min_level))
Definition: K4aPlugin.cpp:356
k4a_result_t k4a_record_add_tag(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle, const char *, name, const char *, value), k4a_record_t, recording_handle, const char *, name, const char *, value))
Definition: K4aPlugin.cpp:204
k4a_result_t k4a_device_start_cameras(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_device_configuration_t *, config), k4a_device_t, device_handle, k4a_device_configuration_t *, config))
Definition: K4aPlugin.cpp:594
int k4a_image_get_width_pixels(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:512
k4a_result_t k4a_calibration_2d_to_3d(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const k4a_calibration_t *, calibration, const k4a_float2_t *, source_point2d, const float, source_depth_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float3_t *, target_point3d_mm, int *, valid), const k4a_calibration_t *, calibration, const k4a_float2_t *, source_point2d, const float, source_depth_mm, const k4a_calibration_type_t, source_camera, const k4a_calibration_type_t, target_camera, k4a_float3_t *, target_point3d_mm, int *, valid))
Definition: K4aPlugin.cpp:749
k4a_wait_result_t k4a_device_get_capture(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_capture_t *, capture_handle, int32_t, timeout_in_ms), k4a_device_t, device_handle, k4a_capture_t *, capture_handle, int32_t, timeout_in_ms))
Definition: K4aPlugin.cpp:377
void k4a_capture_release(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle), k4a_capture_t, capture_handle))
Definition: K4aPlugin.cpp:396
k4a_stream_result_t k4a_playback_get_previous_imu_sample(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_imu_sample_t *, imu_sample), k4a_playback_t, playback_handle, k4a_imu_sample_t *, imu_sample))
Definition: K4aPlugin.cpp:323
k4a_wait_result_t k4a_device_get_imu_sample(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_imu_sample_t *, imu_sample, int32_t, timeout_in_ms), k4a_device_t, device_handle, k4a_imu_sample_t *, imu_sample, int32_t, timeout_in_ms))
Definition: K4aPlugin.cpp:387
k4a_result_t k4a_playback_set_color_conversion(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_image_format_t, target_format), k4a_playback_t, playback_handle, k4a_image_format_t, target_format))
Definition: K4aPlugin.cpp:295
uint32_t k4a_device_get_installed_count(EXTRACT_TYPES_PARAMS(COUNT_ARGS(),))
Definition: K4aPlugin.cpp:346
k4a_result_t k4a_record_write_imu_sample(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle, k4a_imu_sample_t, imu_sample), k4a_record_t, recording_handle, k4a_imu_sample_t, imu_sample))
Definition: K4aPlugin.cpp:232
k4a_result_t k4a_calibration_get_from_raw(EXTRACT_TYPES_PARAMS(COUNT_ARGS(char *, raw_calibration, size_t, raw_calibration_size, const k4a_depth_mode_t, depth_mode, const k4a_color_resolution_t, color_resolution, k4a_calibration_t *, calibration), char *, raw_calibration, size_t, raw_calibration_size, const k4a_depth_mode_t, depth_mode, const k4a_color_resolution_t, color_resolution, k4a_calibration_t *, calibration))
Definition: K4aPlugin.cpp:717
static const std::string k4a_lib_name
Definition: K4aPlugin.cpp:105
uint64_t k4a_playback_get_last_timestamp_usec(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle), k4a_playback_t, playback_handle))
Definition: K4aPlugin.cpp:337
static void * GetDynamicLibHandle(const std::string &lib_name)
Definition: K4aPlugin.cpp:108
k4a_buffer_result_t k4a_device_get_serialnum(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, char *, serial_number, size_t *, serial_number_size), k4a_device_t, device_handle, char *, serial_number, size_t *, serial_number_size))
Definition: K4aPlugin.cpp:619
k4a_result_t k4a_playback_get_calibration(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_calibration_t *, calibration), k4a_playback_t, playback_handle, k4a_calibration_t *, calibration))
Definition: K4aPlugin.cpp:270
void k4a_record_close(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle), k4a_record_t, recording_handle))
Definition: K4aPlugin.cpp:244
k4a_result_t k4a_device_get_version(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_device_t, device_handle, k4a_hardware_version_t *, version), k4a_device_t, device_handle, k4a_hardware_version_t *, version))
Definition: K4aPlugin.cpp:627
k4a_result_t k4a_record_write_header(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_record_t, recording_handle), k4a_record_t, recording_handle))
Definition: K4aPlugin.cpp:216
int k4a_image_get_stride_bytes(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:524
k4a_result_t k4a_transformation_color_image_to_depth_camera(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, const k4a_image_t, color_image, k4a_image_t, transformed_color_image), k4a_transformation_t, transformation_handle, const k4a_image_t, depth_image, const k4a_image_t, color_image, k4a_image_t, transformed_color_image))
Definition: K4aPlugin.cpp:817
static const std::string k4arecord_lib_name
Definition: K4aPlugin.cpp:106
void k4a_capture_set_temperature_c(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_capture_t, capture_handle, float, temperature_c), k4a_capture_t, capture_handle, float, temperature_c))
Definition: K4aPlugin.cpp:452
void k4a_transformation_destroy(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_transformation_t, transformation_handle), k4a_transformation_t, transformation_handle))
Definition: K4aPlugin.cpp:795
k4a_transformation_t k4a_transformation_create(EXTRACT_TYPES_PARAMS(COUNT_ARGS(const k4a_calibration_t *, calibration), const k4a_calibration_t *, calibration))
Definition: K4aPlugin.cpp:789
k4a_stream_result_t k4a_playback_get_next_capture(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, k4a_capture_t *, capture_handle), k4a_playback_t, playback_handle, k4a_capture_t *, capture_handle))
Definition: K4aPlugin.cpp:302
void k4a_image_reference(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_image_t, image_handle), k4a_image_t, image_handle))
Definition: K4aPlugin.cpp:583
k4a_buffer_result_t k4a_playback_get_tag(EXTRACT_TYPES_PARAMS(COUNT_ARGS(k4a_playback_t, playback_handle, const char *, name, char *, value, size_t *, value_size), k4a_playback_t, playback_handle, const char *, name, char *, value, size_t *, value_size))
Definition: K4aPlugin.cpp:288
static const std::string path
Definition: PointCloud.cpp:59
void SplitString(std::vector< std::string > &tokens, const std::string &str, const std::string &delimiters=" ", bool trim_empty_str=true)
Definition: Helper.cpp:197
Generic file read and write utility for python interface.