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,
332  origin)
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
#define LogWarning(...)
Definition: Logging.h:72
#define LogError(...)
Definition: Logging.h:60
#define LogDebug(...)
Definition: Logging.h:90
Helper functions for the ml ops.
k4a_result_t k4a_record_add_imu_track(k4a_record_t recording_handle)
Definition: K4aPlugin.cpp:210
uint32_t k4a_device_get_installed_count()
Definition: K4aPlugin.cpp:346
k4a_result_t k4a_calibration_get_from_raw(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
k4a_image_t k4a_capture_get_depth_image(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:414
void k4a_capture_release(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:396
k4a_result_t k4a_image_create(k4a_image_format_t format, int width_pixels, int height_pixels, int stride_bytes, k4a_image_t *image_handle)
Definition: K4aPlugin.cpp:472
void k4a_image_set_white_balance(k4a_image_t image_handle, uint32_t white_balance)
Definition: K4aPlugin.cpp:572
k4a_wait_result_t k4a_device_get_imu_sample(k4a_device_t device_handle, k4a_imu_sample_t *imu_sample, int32_t timeout_in_ms)
Definition: K4aPlugin.cpp:387
void k4a_image_reference(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:583
uint64_t k4a_image_get_exposure_usec(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:536
k4a_stream_result_t k4a_playback_get_next_imu_sample(k4a_playback_t playback_handle, k4a_imu_sample_t *imu_sample)
Definition: K4aPlugin.cpp:316
k4a_result_t k4a_calibration_2d_to_3d(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_stream_result_t k4a_playback_get_previous_imu_sample(k4a_playback_t playback_handle, k4a_imu_sample_t *imu_sample)
Definition: K4aPlugin.cpp:323
uint32_t k4a_image_get_white_balance(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:542
k4a_result_t k4a_record_write_header(k4a_record_t recording_handle)
Definition: K4aPlugin.cpp:216
k4a_result_t k4a_playback_get_record_configuration(k4a_playback_t playback_handle, k4a_record_configuration_t *config)
Definition: K4aPlugin.cpp:277
k4a_result_t k4a_image_create_from_buffer(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_add_tag(k4a_record_t recording_handle, const char *name, const char *value)
Definition: K4aPlugin.cpp:204
k4a_result_t k4a_transformation_depth_image_to_point_cloud(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
int k4a_image_get_stride_bytes(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:524
void k4a_capture_set_temperature_c(k4a_capture_t capture_handle, float temperature_c)
Definition: K4aPlugin.cpp:452
float k4a_capture_get_temperature_c(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:458
k4a_buffer_result_t k4a_playback_get_raw_calibration(k4a_playback_t playback_handle, uint8_t *data, size_t *data_size)
Definition: K4aPlugin.cpp:263
k4a_result_t k4a_device_open(uint32_t index, k4a_device_t *device_handle)
Definition: K4aPlugin.cpp:364
k4a_result_t k4a_calibration_2d_to_2d(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
void k4a_capture_set_depth_image(k4a_capture_t capture_handle, k4a_image_t image_handle)
Definition: K4aPlugin.cpp:436
void k4a_device_stop_imu(k4a_device_t device_handle)
Definition: K4aPlugin.cpp:609
k4a_result_t k4a_device_get_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
k4a_stream_result_t k4a_playback_get_previous_capture(k4a_playback_t playback_handle, k4a_capture_t *capture_handle)
Definition: K4aPlugin.cpp:309
k4a_result_t k4a_playback_get_calibration(k4a_playback_t playback_handle, k4a_calibration_t *calibration)
Definition: K4aPlugin.cpp:270
k4a_result_t k4a_device_get_sync_jack(k4a_device_t device_handle, bool *sync_in_jack_connected, bool *sync_out_jack_connected)
Definition: K4aPlugin.cpp:703
void k4a_image_set_timestamp_usec(k4a_image_t image_handle, uint64_t timestamp_usec)
Definition: K4aPlugin.cpp:556
k4a_buffer_result_t k4a_playback_get_tag(k4a_playback_t playback_handle, const char *name, char *value, size_t *value_size)
Definition: K4aPlugin.cpp:288
k4a_result_t k4a_device_get_version(k4a_device_t device_handle, k4a_hardware_version_t *version)
Definition: K4aPlugin.cpp:627
void k4a_image_set_exposure_time_usec(k4a_image_t image_handle, uint64_t exposure_usec)
Definition: K4aPlugin.cpp:564
k4a_result_t k4a_device_get_color_control_capabilities(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
void k4a_image_release(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:586
k4a_result_t k4a_record_flush(k4a_record_t recording_handle)
Definition: K4aPlugin.cpp:238
k4a_result_t k4a_device_set_color_control(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_record_create(const char *path, k4a_device_t device, const k4a_device_configuration_t device_config, k4a_record_t *recording_handle)
Definition: K4aPlugin.cpp:194
uint8_t * k4a_image_get_buffer(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:497
void k4a_device_close(k4a_device_t device_handle)
Definition: K4aPlugin.cpp:367
void k4a_capture_set_color_image(k4a_capture_t capture_handle, k4a_image_t image_handle)
Definition: K4aPlugin.cpp:428
k4a_result_t k4a_calibration_3d_to_2d(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
k4a_result_t k4a_device_start_imu(k4a_device_t device_handle)
Definition: K4aPlugin.cpp:606
int k4a_image_get_height_pixels(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:518
k4a_image_format_t k4a_image_get_format(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:506
k4a_result_t k4a_calibration_3d_to_3d(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
k4a_buffer_result_t k4a_device_get_serialnum(k4a_device_t device_handle, char *serial_number, size_t *serial_number_size)
Definition: K4aPlugin.cpp:619
void k4a_playback_close(k4a_playback_t playback_handle)
Definition: K4aPlugin.cpp:342
k4a_transformation_t k4a_transformation_create(const k4a_calibration_t *calibration)
Definition: K4aPlugin.cpp:789
k4a_result_t k4a_playback_open(const char *path, k4a_playback_t *playback_handle)
Definition: K4aPlugin.cpp:254
void k4a_transformation_destroy(k4a_transformation_t transformation_handle)
Definition: K4aPlugin.cpp:795
k4a_result_t k4a_transformation_depth_image_to_color_camera(k4a_transformation_t transformation_handle, const k4a_image_t depth_image, k4a_image_t transformed_depth_image)
Definition: K4aPlugin.cpp:805
k4a_image_t k4a_capture_get_ir_image(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:420
uint64_t k4a_image_get_timestamp_usec(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:530
uint64_t k4a_playback_get_last_timestamp_usec(k4a_playback_t playback_handle)
Definition: K4aPlugin.cpp:337
void k4a_device_stop_cameras(k4a_device_t device_handle)
Definition: K4aPlugin.cpp:600
k4a_image_t k4a_capture_get_color_image(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:408
k4a_result_t k4a_playback_seek_timestamp(k4a_playback_t playback_handle, int64_t offset_usec, k4a_playback_seek_origin_t origin)
Definition: K4aPlugin.cpp:332
static const std::string k4a_lib_name
Definition: K4aPlugin.cpp:105
void k4a_image_set_iso_speed(k4a_image_t image_handle, uint32_t iso_speed)
Definition: K4aPlugin.cpp:580
k4a_result_t k4a_record_write_capture(k4a_record_t recording_handle, k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:224
k4a_result_t k4a_capture_create(k4a_capture_t *capture_handle)
Definition: K4aPlugin.cpp:393
k4a_stream_result_t k4a_playback_get_next_capture(k4a_playback_t playback_handle, k4a_capture_t *capture_handle)
Definition: K4aPlugin.cpp:302
k4a_wait_result_t k4a_device_get_capture(k4a_device_t device_handle, k4a_capture_t *capture_handle, int32_t timeout_in_ms)
Definition: K4aPlugin.cpp:377
k4a_buffer_result_t k4a_device_get_raw_calibration(k4a_device_t device_handle, uint8_t *data, size_t *data_size)
Definition: K4aPlugin.cpp:681
void k4a_record_close(k4a_record_t recording_handle)
Definition: K4aPlugin.cpp:244
size_t k4a_image_get_size(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:500
static void * GetDynamicLibHandle(const std::string &lib_name)
Definition: K4aPlugin.cpp:108
k4a_result_t k4a_record_write_imu_sample(k4a_record_t recording_handle, k4a_imu_sample_t imu_sample)
Definition: K4aPlugin.cpp:232
int k4a_image_get_width_pixels(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:512
void k4a_capture_set_ir_image(k4a_capture_t capture_handle, k4a_image_t image_handle)
Definition: K4aPlugin.cpp:444
k4a_result_t k4a_playback_set_color_conversion(k4a_playback_t playback_handle, k4a_image_format_t target_format)
Definition: K4aPlugin.cpp:295
k4a_result_t k4a_device_start_cameras(k4a_device_t device_handle, k4a_device_configuration_t *config)
Definition: K4aPlugin.cpp:594
k4a_result_t k4a_set_debug_message_handler(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_device_get_color_control(k4a_device_t device_handle, k4a_color_control_command_t command, k4a_color_control_mode_t *mode, int32_t *value)
Definition: K4aPlugin.cpp:659
static const std::string k4arecord_lib_name
Definition: K4aPlugin.cpp:106
uint32_t k4a_image_get_iso_speed(k4a_image_t image_handle)
Definition: K4aPlugin.cpp:548
void k4a_capture_reference(k4a_capture_t capture_handle)
Definition: K4aPlugin.cpp:402
k4a_result_t k4a_transformation_color_image_to_depth_camera(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 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.