From eb0623a31bfcb0307277ab8d76bfaa9397766756 Mon Sep 17 00:00:00 2001 From: yufeng Date: Mon, 18 Sep 2023 11:40:00 +0800 Subject: [PATCH 01/11] add picture to describe the principle --- README.md | 3 +++ .../docs/resource/OrbbecSDK-K4A-Wrapper.png | Bin 0 -> 40891 bytes src/orbbec/ob_k4a_impl.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 src/orbbec/docs/resource/OrbbecSDK-K4A-Wrapper.png diff --git a/README.md b/README.md index 897255255..20701e97d 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ Also user can use this library to replace native K4A library in your application The [k4a.h](./include/k4a/k4a.h) is the header file of K4A API, and the source code in [k4a.c](./src/sdk/k4a.c) is the implementation of K4A API. We have reimplemented the K4A API in [ob_k4a_impl.c](./src/orbbec/ob_k4a_impl.c) with OrbbecSDK, and keep the same effect as the original K4A API. Therefore, all functions called on user's side will be redirected to the OrbbecSDK, and user can access the Orbbec camera like the K4A device. +![OrbbecSDK-K4A-Wrapper](src\orbbec\docs\resource\OrbbecSDK-K4A-Wrapper.png) + ## Supported camera and platform Orbbec Femto Mega: Windows10+, Ubuntu20.04+; x64 @@ -62,3 +64,4 @@ Connect the Orbbec camera to your PC, and run the k4aviewer. ## Attention 1. The library of this branch is not support the K4A device, please use the [Native K4A](https://github.com/microsoft/Azure-Kinect-Sensor-SDK) library to access the K4A device. +2. The OrbbecSDK K4A Wrapper is aim to provide the same API as the K4A, but it's not full API for OrbbecSDK and feature for Orbbec camera. If you want to use the full feature of Orbbec camera, please use the [OrbbecSDK](https://github.com/orbbec/OrbbecSDK) directly. diff --git a/src/orbbec/docs/resource/OrbbecSDK-K4A-Wrapper.png b/src/orbbec/docs/resource/OrbbecSDK-K4A-Wrapper.png new file mode 100644 index 0000000000000000000000000000000000000000..95c3810839e2c184b136c6d999a88cc6d8e7206e GIT binary patch literal 40891 zcmeFZc{tSl+dphADpAs+EGbe#)`o0_R2a&ZU1iBK$i6RSOGS%pjir>yUX~FWin4^H zv5&E2Uxtb?8R2(+bY1s#-{0T&cRYVQ$MHP(^Bi}7banAr-pjeXUg!CGe{SoewK%r$ zZed_x;5dIy;}Qb{Gme3Q={nmc_(^JK(hCL#L5A}hrw#qAX33n%{6@jF^?8?HkE3E) zxbH{*`oelFQ?sNuP<=}Mm4>tWsx{B6NW)z`EFbFcC|yptA9jg_zn$%z%SF-efp@nQ zl$B|SWwRbjB_zEt($259=n)ihTsFB%C)tK{)9l-pW}8+W#?w`43NrHq35gzZ%EAOS zjbnLML57=MfK4!rf$2Z}we7MXulu@J{D1kOU|1Lzx`K^Mje(KnpT9OqsG<1$*!TX+ zr3}Lf&i~~)E;XAWrU+tqQW)dEybK7VCq{Of-n`af&>KPL5`JraE8zlTSK^RnH& zcQ0*M!;cq29+x<>n|JMCyCfJlQgiRwBzLR*g7ax~*y%$MPWG{~;r1~q@IkQnZfWD? zwKysoyVga!A+5r~<%brGeb#+9K7K)_nKhh&sf=3?+f_KKvzL)&TI7VHB0V%qG=QYJ z$MP@^>v4gc-4?Wi?d(v-+Em79+I$c$j+Sm;vK(u(>9g7nHHL633mZ=1^w({$UPF0m zS?#~FT_-GSLI|?F9M;iIZ@ARdH0tZ?&9=ANKdQ;Pp(z-qMq&ANtH?*#p_WZh|0H9r zBl+0pAobmX*eDC-`ZxwAQy97_tAYSBbc-3qB4*2V;F`@g(7Wv*#y5N!9OMC(PtoT*6x787>J#X{cG3%AA9Mzc^=;>pT;R% zhD2Rmod>0?`%`~~r{~Pj&t^%tGVdngq?pw~Q^hx{OC-CQu7U#j)*fn&9%?w^c&mr& zX_((l8^_&@EH}9Xv70W6Y`P6;VNp^IMHwt4r|>S#RZQ^r;xXo8-^cd-{JG`%(i@6< zY7t8T&p|bm_?gG@JJbYs!J3IazKVrxq?Q5CQyK2V;yowOrWGD9@-M$WGgrMb*R_LJ zzcrfuCVhFjGtb<*nl=#Vz?2`=wx{}gq_mXO!I|!&B+Wa!o1!@Ok4|RAyYi7RV}>M^ zk-IWx4P~d=7IA|$v&GG3BgJhBE3+l$)~9CjOY9?^R+7h>lgdA*sD_3(Kc@a(XiKtd zPQ0C-C$L0o_0z4Hqy01}GSQA826R5@6$*Rj!dQFMgawRF{|1aXgms|U?oPgG$=SlH zIYs};r_p9tzD6ieKC%! z&XL*b**3Q~!<%}mgI8L1Ut1mc`a;`*K8Y_dsqvjDDF58@e$8Uynwxc3n_RM_#T$2# zU(;KPd;46B6BY)hvDVbu>$lx`&!+7aW@6iQ2o|*du`##@qZ^po^5fd=@%B8_58Qe# zktl97M7Xkz`C^rH2!KxH2!2GB;lu zUooEQJQ{N-E}6ZAT${(9JCPnZXLay3nSny7pa+*Il8#~}F27Qfcr(OgTJB1232O24 zx=W~?Drr+8@pjkW+fVDW$Hx09n;*n>mCUv9GP0yYu<#H@Km^YoLF~AJ&B@=r1^BHu z$5%9?4P+!d+i*+HMKQa1(5(istxkCZ>dnEp-XghLM;~=Fh!*bP+{0aQ50Dsj8(-)lo9cln6&>a5MhszzIkm;$R&!t1O!b-Q?hf0U&!w!jjw*4bHyN0&Y~e!J zU>-1+Co8SRnfzCpGCeL%3P-o{n)-L z%LR?0%>qHMItRO}m&%M8@?LS+}*6LQpTADT-bvHS>`hMSE9+dRguB#ItTx(XSn;YYzK|*ycP;m8(_-E zj*DLi1QQ5z0C)YlHc`9A^r?`-?>4Ls}{t9`)Zoq|~7T&xbv;}Tea!Oa^eaDA>+ zcz2BJ%y005*geTpMi*e#IUdscSh&s|RYU2r*AF8Oa~*#D z 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 dH2r=O4< Date: Mon, 18 Sep 2023 11:42:18 +0800 Subject: [PATCH 02/11] fix readme resource path --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20701e97d..4bca9b238 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Also user can use this library to replace native K4A library in your application The [k4a.h](./include/k4a/k4a.h) is the header file of K4A API, and the source code in [k4a.c](./src/sdk/k4a.c) is the implementation of K4A API. We have reimplemented the K4A API in [ob_k4a_impl.c](./src/orbbec/ob_k4a_impl.c) with OrbbecSDK, and keep the same effect as the original K4A API. Therefore, all functions called on user's side will be redirected to the OrbbecSDK, and user can access the Orbbec camera like the K4A device. -![OrbbecSDK-K4A-Wrapper](src\orbbec\docs\resource\OrbbecSDK-K4A-Wrapper.png) +![OrbbecSDK-K4A-Wrapper](src/orbbec/docs/resource/OrbbecSDK-K4A-Wrapper.png) ## Supported camera and platform From c032215a057abba4c2caabc9be42d751f09008e3 Mon Sep 17 00:00:00 2001 From: daiyin Date: Thu, 21 Sep 2023 01:45:20 -0700 Subject: [PATCH 03/11] [fix]:building in linux --- include/k4a/k4aversion.h | 16 ++++++++++++++++ src/orbbec/CMakeLists.txt | 5 +++++ tests/UnitTests/utcommon/utcommon.cpp | 3 +++ tests/latency/latency_perf.cpp | 9 +++++++++ tests/throughput/throughput_perf.cpp | 9 +++++++++ 5 files changed, 42 insertions(+) create mode 100644 include/k4a/k4aversion.h diff --git a/include/k4a/k4aversion.h b/include/k4a/k4aversion.h new file mode 100644 index 000000000..3cb6b7b0f --- /dev/null +++ b/include/k4a/k4aversion.h @@ -0,0 +1,16 @@ +/* Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT License. */ + +#ifndef K4AVERSION_H +#define K4AVERSION_H + +#define K4A_VERSION_MAJOR 1 +#define K4A_VERSION_MINOR 4 +#define K4A_VERSION_PATCH 0 +#define K4A_VERSION_PRERELEASE "private" +#define K4A_VERSION_BUILD_METADATA "" + +#define K4A_VERSION_STR "1.4.0-private" + +#endif + diff --git a/src/orbbec/CMakeLists.txt b/src/orbbec/CMakeLists.txt index f5adc86bf..1a0ace3fd 100644 --- a/src/orbbec/CMakeLists.txt +++ b/src/orbbec/CMakeLists.txt @@ -27,6 +27,11 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/include/k4a/k4aversion.h" ) +configure_file( + "${K4A_INCLUDE_DIR}/k4a/k4aversion.h.in" + "${K4A_INCLUDE_DIR}/k4a/k4aversion.h" + ) + # Include ${CMAKE_CURRENT_BINARY_DIR}/version.rc in the target's sources # to embed version information set(K4A_FILEDESCRIPTION "Azure Kinect SDK") diff --git a/tests/UnitTests/utcommon/utcommon.cpp b/tests/UnitTests/utcommon/utcommon.cpp index 7ddc5df60..d517b5ca8 100644 --- a/tests/UnitTests/utcommon/utcommon.cpp +++ b/tests/UnitTests/utcommon/utcommon.cpp @@ -122,6 +122,9 @@ int64_t k4a_unittest_get_max_sync_delay_ms(k4a_fps_t fps) case K4A_FRAMES_PER_SECOND_30: max_delay = 110; break; + default: + return max_delay; + break; } return max_delay; } diff --git a/tests/latency/latency_perf.cpp b/tests/latency/latency_perf.cpp index 5986d0687..d6d950866 100644 --- a/tests/latency/latency_perf.cpp +++ b/tests/latency/latency_perf.cpp @@ -143,6 +143,9 @@ static const char *get_string_from_color_format(k4a_image_format_t format) case K4A_IMAGE_FORMAT_CUSTOM: return "K4A_IMAGE_FORMAT_CUSTOM"; break; + default: + return "K4A_IMAGE_FORMAT_UNKNOWN"; + break; } assert(0); return "K4A_IMAGE_FORMAT_UNKNOWN"; @@ -173,6 +176,9 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol case K4A_COLOR_RESOLUTION_3072P: return "4096 * 3072 4:3"; break; + default: + return "Unknown resolution"; + break; } assert(0); return "Unknown resolution"; @@ -200,6 +206,9 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) case K4A_DEPTH_MODE_PASSIVE_IR: return "K4A_DEPTH_MODE_PASSIVE_IR"; break; + default: + return "Unknown Depth"; + break; } assert(0); return "Unknown Depth"; diff --git a/tests/throughput/throughput_perf.cpp b/tests/throughput/throughput_perf.cpp index 5863c9c48..0990c903e 100644 --- a/tests/throughput/throughput_perf.cpp +++ b/tests/throughput/throughput_perf.cpp @@ -110,6 +110,9 @@ static const char *get_string_from_color_format(k4a_image_format_t format) case K4A_IMAGE_FORMAT_CUSTOM: return "K4A_IMAGE_FORMAT_CUSTOM"; break; + default: + return "K4A_IMAGE_FORMAT_UNKNOWN"; + break; } assert(0); return "K4A_IMAGE_FORMAT_UNKNOWN"; @@ -140,6 +143,9 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol case K4A_COLOR_RESOLUTION_3072P: return "4096 * 3072 4:3"; break; + default: + return "Unknown resolution"; + break; } assert(0); return "Unknown resolution"; @@ -167,6 +173,9 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) case K4A_DEPTH_MODE_PASSIVE_IR: return "K4A_DEPTH_MODE_PASSIVE_IR"; break; + default: + return "Unknown Depth"; + break; } assert(0); return "Unknown Depth"; From 2cb1154cd8c07de63571e6eceaca982dcab69d59 Mon Sep 17 00:00:00 2001 From: daiyin Date: Thu, 21 Sep 2023 17:56:58 +0800 Subject: [PATCH 04/11] [fix]:building in windows --- CMakeLists.txt | 2 +- src/orbbec/CMakeLists.txt | 20 +++++++++++++++----- src/orbbec/ob_k4a_impl.c | 8 ++++---- tests/latency/latency_perf.cpp | 6 +++--- tests/throughput/throughput_perf.cpp | 6 +++--- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b271ee95..97ffcae55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,7 +198,7 @@ if (K4A_BUILD_DOCS) endif() endif() -option(K4A_VALIDATE_CLANG_FORMAT "Validate clang-format results as part of build" Yes) +option(K4A_VALIDATE_CLANG_FORMAT "Validate clang-format results as part of build" No) set (CLANG_FORMAT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src diff --git a/src/orbbec/CMakeLists.txt b/src/orbbec/CMakeLists.txt index 1a0ace3fd..f2e7ece47 100644 --- a/src/orbbec/CMakeLists.txt +++ b/src/orbbec/CMakeLists.txt @@ -65,11 +65,21 @@ get_target_property(OrbbecSDK_DLL OrbbecSDK::OrbbecSDK IMPORTED_LOCATION) get_target_property(K4A_OUTPUT_DIR k4a RUNTIME_OUTPUT_DIRECTORY) message(STATUS "OrbbecSDK_DLL: ${OrbbecSDK_DLL}") message(STATUS "K4A_OUTPUT_DIR: ${K4A_OUTPUT_DIR}") -add_custom_command(TARGET k4a - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${OrbbecSDK_DLL} - ${K4A_OUTPUT_DIR}/$) +# add_custom_command(TARGET k4a +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy +# ${OrbbecSDK_DLL} +# ${K4A_OUTPUT_DIR}/$) + +execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${OrbbecSDK_DLL} ${K4A_OUTPUT_DIR}) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(DEPTHENGINE20_DLL ${CMAKE_CURRENT_LIST_DIR}/k4adepthengine/win_x64/depthengine_2_0.dll) + endif() +endif() + +execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${DEPTHENGINE20_DLL} ${K4A_OUTPUT_DIR}) # Define alias for k4a add_library(k4a::k4a ALIAS k4a) diff --git a/src/orbbec/ob_k4a_impl.c b/src/orbbec/ob_k4a_impl.c index cff0d12f9..cb331a041 100644 --- a/src/orbbec/ob_k4a_impl.c +++ b/src/orbbec/ob_k4a_impl.c @@ -2030,7 +2030,7 @@ k4a_buffer_result_t k4a_device_get_serialnum(k4a_device_t device_handle, caller_buffer_size = *serial_number_size; size_t snLen = strlen(sn); - *serial_number_size = snLen+1; + *serial_number_size = snLen + 1; if (caller_buffer_size <= snLen || serial_number == NULL) { @@ -2051,7 +2051,7 @@ k4a_result_t version_convert(const char *orbbec_version, k4a_version_t *k4a_vers return K4A_RESULT_FAILED; } - size_t orbbec_version_len = strlen(orbbec_version); + size_t orbbec_version_len = (int)strlen(orbbec_version); if (orbbec_version_len >= MAX_FIREWARE_VERSION_LEN) { LOG_WARNING("orbbec_version_len overflow ", 0); @@ -2065,12 +2065,12 @@ k4a_result_t version_convert(const char *orbbec_version, k4a_version_t *k4a_vers { if (orbbec_version[i] >= '0' && orbbec_version[i] <= '9') { - count = i; + count = (int)i; break; } } - int split_version_len = orbbec_version_len - count; + int split_version_len = (int)orbbec_version_len - count; memcpy(split_version, orbbec_version + count, split_version_len); count = 0; diff --git a/tests/latency/latency_perf.cpp b/tests/latency/latency_perf.cpp index d6d950866..ef13215e5 100644 --- a/tests/latency/latency_perf.cpp +++ b/tests/latency/latency_perf.cpp @@ -148,7 +148,7 @@ static const char *get_string_from_color_format(k4a_image_format_t format) break; } assert(0); - return "K4A_IMAGE_FORMAT_UNKNOWN"; + // return "K4A_IMAGE_FORMAT_UNKNOWN"; } static const char *get_string_from_color_resolution(k4a_color_resolution_t resolution) @@ -181,7 +181,7 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol break; } assert(0); - return "Unknown resolution"; + // return "Unknown resolution"; } static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) @@ -211,7 +211,7 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) break; } assert(0); - return "Unknown Depth"; + // return "Unknown Depth"; } static bool get_system_time(uint64_t *time_nsec) diff --git a/tests/throughput/throughput_perf.cpp b/tests/throughput/throughput_perf.cpp index 0990c903e..b9fa33d79 100644 --- a/tests/throughput/throughput_perf.cpp +++ b/tests/throughput/throughput_perf.cpp @@ -115,7 +115,7 @@ static const char *get_string_from_color_format(k4a_image_format_t format) break; } assert(0); - return "K4A_IMAGE_FORMAT_UNKNOWN"; + // return "K4A_IMAGE_FORMAT_UNKNOWN"; } static const char *get_string_from_color_resolution(k4a_color_resolution_t resolution) @@ -148,7 +148,7 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol break; } assert(0); - return "Unknown resolution"; + // return "Unknown resolution"; } static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) @@ -178,7 +178,7 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) break; } assert(0); - return "Unknown Depth"; + // return "Unknown Depth"; } static int _throughput_imu_thread(void *param) From 7c456fb526747f5cdefed116080b456607e44575 Mon Sep 17 00:00:00 2001 From: daiyin Date: Fri, 22 Sep 2023 10:56:09 +0800 Subject: [PATCH 05/11] [fix]:building problem --- include/k4a/.gitignore | 1 + src/orbbec/CMakeLists.txt | 8 ++++---- src/orbbec/ob_k4a_impl.c | 16 ++++++++-------- tests/latency/latency_perf.cpp | 26 ++++++++++++++++---------- tests/throughput/throughput_perf.cpp | 25 ++++++++++++++----------- 5 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 include/k4a/.gitignore diff --git a/include/k4a/.gitignore b/include/k4a/.gitignore new file mode 100644 index 000000000..69d779332 --- /dev/null +++ b/include/k4a/.gitignore @@ -0,0 +1 @@ +k4aversion.h \ No newline at end of file diff --git a/src/orbbec/CMakeLists.txt b/src/orbbec/CMakeLists.txt index f2e7ece47..26fb68ff7 100644 --- a/src/orbbec/CMakeLists.txt +++ b/src/orbbec/CMakeLists.txt @@ -27,10 +27,10 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/include/k4a/k4aversion.h" ) -configure_file( - "${K4A_INCLUDE_DIR}/k4a/k4aversion.h.in" - "${K4A_INCLUDE_DIR}/k4a/k4aversion.h" - ) +# configure_file( +# "${K4A_INCLUDE_DIR}/k4a/k4aversion.h.in" +# "${K4A_INCLUDE_DIR}/k4a/k4aversion.h" +# ) # Include ${CMAKE_CURRENT_BINARY_DIR}/version.rc in the target's sources # to embed version information diff --git a/src/orbbec/ob_k4a_impl.c b/src/orbbec/ob_k4a_impl.c index cb331a041..6f82443be 100644 --- a/src/orbbec/ob_k4a_impl.c +++ b/src/orbbec/ob_k4a_impl.c @@ -2029,10 +2029,10 @@ k4a_buffer_result_t k4a_device_get_serialnum(k4a_device_t device_handle, size_t caller_buffer_size = 0; caller_buffer_size = *serial_number_size; - size_t snLen = strlen(sn); - *serial_number_size = snLen + 1; + int snLen = (int)strlen(sn); + *serial_number_size = snLen; - if (caller_buffer_size <= snLen || serial_number == NULL) + if (caller_buffer_size <= (size_t)snLen || serial_number == NULL) { return K4A_BUFFER_RESULT_TOO_SMALL; } @@ -2051,7 +2051,7 @@ k4a_result_t version_convert(const char *orbbec_version, k4a_version_t *k4a_vers return K4A_RESULT_FAILED; } - size_t orbbec_version_len = (int)strlen(orbbec_version); + int orbbec_version_len = (int)strlen(orbbec_version); if (orbbec_version_len >= MAX_FIREWARE_VERSION_LEN) { LOG_WARNING("orbbec_version_len overflow ", 0); @@ -2061,17 +2061,17 @@ k4a_result_t version_convert(const char *orbbec_version, k4a_version_t *k4a_vers char split_version[MAX_FIREWARE_VERSION_LEN] = { 0 }; int count = 0; - for (size_t i = 0; i < orbbec_version_len; i++) + for (int i = 0; i < orbbec_version_len; i++) { if (orbbec_version[i] >= '0' && orbbec_version[i] <= '9') { - count = (int)i; + count = i; break; } } - int split_version_len = (int)orbbec_version_len - count; - memcpy(split_version, orbbec_version + count, split_version_len); + int split_version_len = orbbec_version_len - count; + memcpy(split_version, orbbec_version + count, (uint16_t)split_version_len); count = 0; for (int i = 0; i < split_version_len; i++) diff --git a/tests/latency/latency_perf.cpp b/tests/latency/latency_perf.cpp index ef13215e5..5b7fbab8b 100644 --- a/tests/latency/latency_perf.cpp +++ b/tests/latency/latency_perf.cpp @@ -143,12 +143,9 @@ static const char *get_string_from_color_format(k4a_image_format_t format) case K4A_IMAGE_FORMAT_CUSTOM: return "K4A_IMAGE_FORMAT_CUSTOM"; break; - default: - return "K4A_IMAGE_FORMAT_UNKNOWN"; - break; } assert(0); - // return "K4A_IMAGE_FORMAT_UNKNOWN"; + return "K4A_IMAGE_FORMAT_UNKNOWN"; } static const char *get_string_from_color_resolution(k4a_color_resolution_t resolution) @@ -176,12 +173,18 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol case K4A_COLOR_RESOLUTION_3072P: return "4096 * 3072 4:3"; break; - default: - return "Unknown resolution"; + case K4A_COLOR_RESOLUTION_480P: + return "640 * 480 4:3"; + break; + case K4A_COLOR_RESOLUTION_960P: + return "1280 * 960 4:3"; + break; + case K4A_COLOR_RESOLUTION_1024X768: + return "1024 * 768"; break; } assert(0); - // return "Unknown resolution"; + return "Unknown resolution"; } static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) @@ -206,12 +209,15 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) case K4A_DEPTH_MODE_PASSIVE_IR: return "K4A_DEPTH_MODE_PASSIVE_IR"; break; - default: - return "Unknown Depth"; + case K4A_DEPTH_MODE_640x480: + return "K4A_DEPTH_MODE_640x480"; + break; + case K4A_DEPTH_MODE_320x240: + return "K4A_DEPTH_MODE_320x240"; break; } assert(0); - // return "Unknown Depth"; + return "Unknown Depth"; } static bool get_system_time(uint64_t *time_nsec) diff --git a/tests/throughput/throughput_perf.cpp b/tests/throughput/throughput_perf.cpp index b9fa33d79..efc0a1024 100644 --- a/tests/throughput/throughput_perf.cpp +++ b/tests/throughput/throughput_perf.cpp @@ -110,12 +110,9 @@ static const char *get_string_from_color_format(k4a_image_format_t format) case K4A_IMAGE_FORMAT_CUSTOM: return "K4A_IMAGE_FORMAT_CUSTOM"; break; - default: - return "K4A_IMAGE_FORMAT_UNKNOWN"; - break; } assert(0); - // return "K4A_IMAGE_FORMAT_UNKNOWN"; + return "K4A_IMAGE_FORMAT_UNKNOWN"; } static const char *get_string_from_color_resolution(k4a_color_resolution_t resolution) @@ -143,12 +140,15 @@ static const char *get_string_from_color_resolution(k4a_color_resolution_t resol case K4A_COLOR_RESOLUTION_3072P: return "4096 * 3072 4:3"; break; - default: - return "Unknown resolution"; - break; + case K4A_COLOR_RESOLUTION_480P: + return "640 * 480 4:3"; + case K4A_COLOR_RESOLUTION_960P: + return "1280 * 960 4:3"; + case K4A_COLOR_RESOLUTION_1024X768: + return "1024 * 768"; } assert(0); - // return "Unknown resolution"; + return "Unknown resolution"; } static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) @@ -173,12 +173,15 @@ static const char *get_string_from_depth_mode(k4a_depth_mode_t mode) case K4A_DEPTH_MODE_PASSIVE_IR: return "K4A_DEPTH_MODE_PASSIVE_IR"; break; - default: - return "Unknown Depth"; + case K4A_DEPTH_MODE_640x480: + return "K4A_DEPTH_MODE_640x480"; + break; + case K4A_DEPTH_MODE_320x240: + return "K4A_DEPTH_MODE_320x240"; break; } assert(0); - // return "Unknown Depth"; + return "Unknown Depth"; } static int _throughput_imu_thread(void *param) From 261dc22baea8945c2beadde3f11071fd6806d5cb Mon Sep 17 00:00:00 2001 From: daiyin Date: Fri, 22 Sep 2023 13:59:40 +0800 Subject: [PATCH 06/11] =?UTF-8?q?[fix]:Adjust=20=EF=BC=88k4aversion.h?= =?UTF-8?q?=EF=BC=89=20generation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- src/orbbec/CMakeLists.txt | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97ffcae55..7b271ee95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,7 +198,7 @@ if (K4A_BUILD_DOCS) endif() endif() -option(K4A_VALIDATE_CLANG_FORMAT "Validate clang-format results as part of build" No) +option(K4A_VALIDATE_CLANG_FORMAT "Validate clang-format results as part of build" Yes) set (CLANG_FORMAT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src diff --git a/src/orbbec/CMakeLists.txt b/src/orbbec/CMakeLists.txt index 26fb68ff7..d715450b8 100644 --- a/src/orbbec/CMakeLists.txt +++ b/src/orbbec/CMakeLists.txt @@ -27,11 +27,6 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/include/k4a/k4aversion.h" ) -# configure_file( -# "${K4A_INCLUDE_DIR}/k4a/k4aversion.h.in" -# "${K4A_INCLUDE_DIR}/k4a/k4aversion.h" -# ) - # Include ${CMAKE_CURRENT_BINARY_DIR}/version.rc in the target's sources # to embed version information set(K4A_FILEDESCRIPTION "Azure Kinect SDK") From 8400ec754804dcc84ea2857dab91461ff7d70e72 Mon Sep 17 00:00:00 2001 From: zzuliys <68427285+zzuliys@users.noreply.github.com> Date: Fri, 22 Sep 2023 14:07:22 +0800 Subject: [PATCH 07/11] Delete include/k4a/k4aversion.h --- include/k4a/k4aversion.h | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 include/k4a/k4aversion.h diff --git a/include/k4a/k4aversion.h b/include/k4a/k4aversion.h deleted file mode 100644 index 3cb6b7b0f..000000000 --- a/include/k4a/k4aversion.h +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT License. */ - -#ifndef K4AVERSION_H -#define K4AVERSION_H - -#define K4A_VERSION_MAJOR 1 -#define K4A_VERSION_MINOR 4 -#define K4A_VERSION_PATCH 0 -#define K4A_VERSION_PRERELEASE "private" -#define K4A_VERSION_BUILD_METADATA "" - -#define K4A_VERSION_STR "1.4.0-private" - -#endif - From 5c3d603e36b8ea6a8f3520bd7a8ce7118e1607c7 Mon Sep 17 00:00:00 2001 From: daiyin Date: Fri, 22 Sep 2023 14:14:30 +0800 Subject: [PATCH 08/11] [fix]:building process in readme.md --- README.md | 13 +++++++------ include/k4a/.gitignore | 1 - 2 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 include/k4a/.gitignore diff --git a/README.md b/README.md index 4bca9b238..82af55cf1 100644 --- a/README.md +++ b/README.md @@ -41,10 +41,11 @@ git submodule update --init --recursive ```powershell cd OrbbecSDK-K4A-Wrapper -mkdir build && cd build +mkdir build +cd build cmake .. -G Ninja -cmake --build . -cmake --install . +ninja +ninja install ``` * Linux @@ -52,9 +53,9 @@ cmake --install . ```bash cd OrbbecSDK-K4A-Wrapper mkdir build && cd build -cmake .. -cmake --build . -cmake --install +sudo cmake .. -G Ninja +sudo ninja +sudo ninja install ``` ### Test it! diff --git a/include/k4a/.gitignore b/include/k4a/.gitignore deleted file mode 100644 index 69d779332..000000000 --- a/include/k4a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -k4aversion.h \ No newline at end of file From 47ee06aacc9060bda830ec983a1dccb48354ecea Mon Sep 17 00:00:00 2001 From: daiyin Date: Fri, 22 Sep 2023 16:24:54 +0800 Subject: [PATCH 09/11] [fix]:resolve missing enums --- tests/UnitTests/utcommon/utcommon.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/UnitTests/utcommon/utcommon.cpp b/tests/UnitTests/utcommon/utcommon.cpp index d517b5ca8..4cc332e39 100644 --- a/tests/UnitTests/utcommon/utcommon.cpp +++ b/tests/UnitTests/utcommon/utcommon.cpp @@ -119,12 +119,12 @@ int64_t k4a_unittest_get_max_sync_delay_ms(k4a_fps_t fps) case K4A_FRAMES_PER_SECOND_15: max_delay = 220; break; + case K4A_FRAMES_PER_SECOND_25: + max_delay = 132; + break; case K4A_FRAMES_PER_SECOND_30: max_delay = 110; break; - default: - return max_delay; - break; } return max_delay; } From 293aa6975d3255d83c227041d3ec570819ef4c04 Mon Sep 17 00:00:00 2001 From: daiyin Date: Fri, 22 Sep 2023 16:33:04 +0800 Subject: [PATCH 10/11] [feat]:add obbecsdk.dll during installation --- src/orbbec/CMakeLists.txt | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/orbbec/CMakeLists.txt b/src/orbbec/CMakeLists.txt index d715450b8..6aac900b4 100644 --- a/src/orbbec/CMakeLists.txt +++ b/src/orbbec/CMakeLists.txt @@ -60,11 +60,6 @@ get_target_property(OrbbecSDK_DLL OrbbecSDK::OrbbecSDK IMPORTED_LOCATION) get_target_property(K4A_OUTPUT_DIR k4a RUNTIME_OUTPUT_DIRECTORY) message(STATUS "OrbbecSDK_DLL: ${OrbbecSDK_DLL}") message(STATUS "K4A_OUTPUT_DIR: ${K4A_OUTPUT_DIR}") -# add_custom_command(TARGET k4a -# POST_BUILD -# COMMAND ${CMAKE_COMMAND} -E copy -# ${OrbbecSDK_DLL} -# ${K4A_OUTPUT_DIR}/$) execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${OrbbecSDK_DLL} ${K4A_OUTPUT_DIR}) @@ -167,6 +162,33 @@ install( development ) +set(OrbbecSDK_INSTALL "") + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(OrbbecSDK_INSTALL "/OrbbecSDK/lib/arm32/libOrbbecSDK.so") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OrbbecSDK_INSTALL "/OrbbecSDK/lib/arm64/libOrbbecSDK.so") + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(OrbbecSDK_INSTALL "/OrbbecSDK/lib/linux_x64/libOrbbecSDK.so") +elseif(CMAKE_SYSTEM_NAME MATCHES "Windows") + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(OrbbecSDK_INSTALL "/OrbbecSDK/lib/win_x86/OrbbecSDK.dll") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OrbbecSDK_INSTALL "/OrbbecSDK/lib/win_x64/OrbbecSDK.dll") + endif() +endif() + +install( + FILES + ${CMAKE_CURRENT_SOURCE_DIR}${OrbbecSDK_INSTALL} + DESTINATION + ${CMAKE_INSTALL_BINDIR} + COMPONENT + development +) + if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") install( FILES From 5a37e3c108be145879a5390faaee29465856f951 Mon Sep 17 00:00:00 2001 From: daiyin Date: Tue, 26 Sep 2023 11:26:07 +0800 Subject: [PATCH 11/11] [fix]:merge --- src/orbbec/ob_k4a_impl.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/orbbec/ob_k4a_impl.c b/src/orbbec/ob_k4a_impl.c index 25acf6f8c..9d7d0e61b 100644 --- a/src/orbbec/ob_k4a_impl.c +++ b/src/orbbec/ob_k4a_impl.c @@ -2010,13 +2010,8 @@ k4a_buffer_result_t k4a_device_get_serialnum(k4a_device_t device_handle, size_t caller_buffer_size = 0; caller_buffer_size = *serial_number_size; -<<<<<<< HEAD size_t snLen = strlen(sn); *serial_number_size = snLen + 1; -======= - int snLen = (int)strlen(sn); - *serial_number_size = snLen; ->>>>>>> ob/feature/1.1.x_build_ninja if (caller_buffer_size <= (size_t)snLen || serial_number == NULL) {