Merge branch 'develop' into feature/csharp

This commit is contained in:
Brent Allen 2019-07-01 13:16:24 -07:00
Родитель a906d5a421 7153c3c0a6
Коммит 89f7ba5047
16 изменённых файлов: 145 добавлений и 22 удалений

2
.gitmodules поставляемый
Просмотреть файл

@ -37,5 +37,5 @@
url = https://github.com/libusb/libusb url = https://github.com/libusb/libusb
[submodule "extern/libuvc/src"] [submodule "extern/libuvc/src"]
path = extern/libuvc/src path = extern/libuvc/src
url = https://github.com/wes-b/libuvc.git url = https://github.com/microsoft/libuvc.git
branch = Azure-Kinect-Sensor-SDK branch = Azure-Kinect-Sensor-SDK

Просмотреть файл

@ -31,6 +31,10 @@ include(GitCommands)
# Set the project version # Set the project version
include(K4AProjectVersion) include(K4AProjectVersion)
# Default to not embed an icon in resources
set(K4A_USE_ICON 0)
set(K4A_ICON_PATH ${CMAKE_CURRENT_LIST_DIR}/kinect-viewer.ico)
set(PROJ_DIR ${CMAKE_CURRENT_LIST_DIR}) set(PROJ_DIR ${CMAKE_CURRENT_LIST_DIR})
set(INCLUDE_DIR ${PROJ_DIR}/include) set(INCLUDE_DIR ${PROJ_DIR}/include)
@ -59,12 +63,18 @@ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZH:SHA_256") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZH:SHA_256")
endif() endif()
# If using clang or GCC only linked shared libraries if needed # If using clang or GCC, only linked shared libraries if needed
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
endif() endif()
# If using clang or GCC, be sure to include a build id
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--build-id")
endif()
# Find all dependencies # Find all dependencies
add_subdirectory(extern) add_subdirectory(extern)
@ -282,4 +292,4 @@ cpack_add_component(
"Tools for Azure Kinect Development" "Tools for Azure Kinect Development"
REQUIRED REQUIRED
DEPENDS DEPENDS
runtime) runtime)

Просмотреть файл

@ -7,9 +7,9 @@ variables:
- name: 'skipComponentGovernaceDetection' - name: 'skipComponentGovernaceDetection'
value: true value: true
- name: 'linux_firmware_version' - name: 'linux_firmware_version'
value: '1.6.987014' value: '1.6.102075014'
- name: 'windows_firmware_version' - name: 'windows_firmware_version'
value: '1.6.987014' value: '1.6.102075014'
trigger: trigger:
batch: false batch: false
@ -147,7 +147,6 @@ jobs:
steps: steps:
- checkout: self - checkout: self
clean: true clean: true
fetchDepth: 20
lfs: false lfs: false
persistCredentials: true persistCredentials: true
submodules: true submodules: true
@ -385,7 +384,6 @@ jobs:
steps: steps:
- checkout: self - checkout: self
clean: true clean: true
fetchDepth: 20
lfs: false lfs: false
persistCredentials: true persistCredentials: true
submodules: true submodules: true
@ -463,7 +461,6 @@ jobs:
steps: steps:
- checkout: self - checkout: self
clean: true clean: true
fetchDepth: 20
lfs: false lfs: false
persistCredentials: true persistCredentials: true
submodules: true submodules: true

Просмотреть файл

@ -587,7 +587,9 @@ typedef enum
{ {
K4A_WIRED_SYNC_MODE_STANDALONE, /**< Neither 'Sync In' or 'Sync Out' connections are used. */ K4A_WIRED_SYNC_MODE_STANDALONE, /**< Neither 'Sync In' or 'Sync Out' connections are used. */
K4A_WIRED_SYNC_MODE_MASTER, /**< The 'Sync Out' jack is enabled and synchronization data it driven out the K4A_WIRED_SYNC_MODE_MASTER, /**< The 'Sync Out' jack is enabled and synchronization data it driven out the
connected wire.*/ connected wire. While in master mode the color camera must be enabled as part of the
multi device sync signalling logic. Even if the color image is not needed, the color
camera must be running.*/
K4A_WIRED_SYNC_MODE_SUBORDINATE /**< The 'Sync In' jack is used for synchronization and 'Sync Out' is driven for the K4A_WIRED_SYNC_MODE_SUBORDINATE /**< The 'Sync In' jack is used for synchronization and 'Sync Out' is driven for the
next device in the chain. 'Sync Out' is a mirror of 'Sync In' for this mode. next device in the chain. 'Sync Out' is a mirror of 'Sync In' for this mode.
*/ */
@ -705,13 +707,19 @@ typedef enum
* *
* The SDK can log data to the console, files, or to a custom handler. * The SDK can log data to the console, files, or to a custom handler.
* *
* Environment Variables * Environment Variables:
*
* K4A_ENABLE_LOG_TO_A_FILE / K4A_RECORD_ENABLE_LOG_TO_A_FILE
* Specifies the log file to save the log to. K4a.dll and k4arecord.dll can not log to the same file.
* *
* K4A_ENABLE_LOG_TO_A_FILE = * K4A_ENABLE_LOG_TO_A_FILE =
* K4A_RECORD_ENABLE_LOG_TO_A_FILE =
* 0 - completely disable logging to a file * 0 - completely disable logging to a file
* log\custom.log - log all messages to the path and file specified - must end in '.log' to * log\custom.log - log all messages to the path and file specified - must end in '.log' to
* be considered a valid entry * be considered a valid entry
* ** When enabled this takes precedence over the value of K4A_ENABLE_LOG_TO_STDOUT * NOTE 1: When enabled this takes precedence over the value of K4A_ENABLE_LOG_TO_STDOUT.
* NOTE 2: This can not be set to the same value as K4A_RECORD_ENABLE_LOG_TO_A_FILE as they represent separate
* logger instance that do not allowed shared access to the file being written to.
* *
* K4A_ENABLE_LOG_TO_STDOUT = * K4A_ENABLE_LOG_TO_STDOUT =
* 0 - disable logging to stdout * 0 - disable logging to stdout

Просмотреть файл

@ -41,6 +41,8 @@ K4A_DECLARE_HANDLE(logger_t);
#define K4A_LOG_FILE_NAME "k4a.log" #define K4A_LOG_FILE_NAME "k4a.log"
#define K4A_LOG_FILE_50MB_MAX_SIZE (1048576 * 50) #define K4A_LOG_FILE_50MB_MAX_SIZE (1048576 * 50)
#define K4A_RECORD_ENABLE_LOG_TO_A_FILE "K4A_RECORD_ENABLE_LOG_TO_A_FILE"
/** Logger configuration - allows logger to be used in seperate DLL's and /** Logger configuration - allows logger to be used in seperate DLL's and
provide different ENV vars for processes that need to load both instances. provide different ENV vars for processes that need to load both instances.
For example Azure Kinect SDK and potentially Azure Kinect playback. For example Azure Kinect SDK and potentially Azure Kinect playback.

Двоичные данные
kinect-viewer.ico Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 367 KiB

Просмотреть файл

@ -19,7 +19,8 @@ sudo apt install -y \
g++-multilib \ g++-multilib \
python3 \ python3 \
git-lfs \ git-lfs \
nasm nasm \
cmake
# Install libraries needed to build # Install libraries needed to build
sudo apt install -y \ sudo apt install -y \

Просмотреть файл

@ -134,6 +134,7 @@ k4a_result_t logger_create(logger_config_t *config, logger_t *logger_handle)
const char *enable_file_logging = nullptr; const char *enable_file_logging = nullptr;
const char *enable_stdout_logging = nullptr; const char *enable_stdout_logging = nullptr;
const char *logging_level = nullptr; const char *logging_level = nullptr;
k4a_result_t result = K4A_RESULT_SUCCEEDED;
// environment_get_variable will return null or "\0" if the env var is not set - depends on the OS. // environment_get_variable will return null or "\0" if the env var is not set - depends on the OS.
if (config->env_var_log_to_a_file) if (config->env_var_log_to_a_file)
@ -189,17 +190,28 @@ k4a_result_t logger_create(logger_config_t *config, logger_t *logger_handle)
if (log_file) if (log_file)
{ {
// Create a file rotating logger with 50mb size max and 3 rotated files try
g_env_logger = spdlog::rotating_logger_mt(K4A_LOGGER, log_file, config->max_log_size, LOG_FILE_MAX_FILES); {
// Create a file rotating logger with 50mb size max and 3 rotated files
g_env_logger =
spdlog::rotating_logger_mt(K4A_LOGGER, log_file, config->max_log_size, LOG_FILE_MAX_FILES);
spdlog::set_pattern("%v"); spdlog::set_pattern("%v");
g_env_logger->info("\n\nNew logging session started\n"); g_env_logger->info("\n\nNew logging session started\n");
g_env_logger_is_file_based = true; g_env_logger_is_file_based = true;
}
catch (...)
{
// Probably trying to use a file that is already opened by another instance.
g_env_logger = nullptr;
printf("ERROR: Unable to open log file \"%s\".\n", log_file);
result = K4A_RESULT_FAILED;
}
} }
} }
// log to stdout if enabled via ENV var AND if file logging is not enabled. // log to stdout if enabled via ENV var AND if file logging is not enabled.
if (g_env_logger == NULL) if (K4A_SUCCEEDED(result) && (g_env_logger == NULL))
{ {
bool enable_stdout_logger = false; bool enable_stdout_logger = false;
@ -225,7 +237,7 @@ k4a_result_t logger_create(logger_config_t *config, logger_t *logger_handle)
} }
} }
if (g_env_logger) if (K4A_SUCCEEDED(result) && (g_env_logger))
{ {
context->logger = g_env_logger; context->logger = g_env_logger;
g_env_log_level = K4A_LOG_LEVEL_ERROR; g_env_log_level = K4A_LOG_LEVEL_ERROR;
@ -269,7 +281,7 @@ k4a_result_t logger_create(logger_config_t *config, logger_t *logger_handle)
g_env_logger->flush_on(spdlog::level::warn); g_env_logger->flush_on(spdlog::level::warn);
} }
return K4A_RESULT_SUCCEEDED; return result;
} }
void logger_destroy(logger_t logger_handle) void logger_destroy(logger_t logger_handle)

Просмотреть файл

@ -56,6 +56,11 @@ set_target_properties(
SOVERSION SOVERSION
"${K4A_VERSION_MAJOR}.${K4A_VERSION_MINOR}") "${K4A_VERSION_MAJOR}.${K4A_VERSION_MINOR}")
set(NAMELINK_IF_AVAILABLE)
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0")
set(NAMELINK_IF_AVAILABLE NAMELINK_COMPONENT development)
endif()
# Setup install # Setup install
include(GNUInstallDirs) include(GNUInstallDirs)
install( install(
@ -68,7 +73,7 @@ install(
${CMAKE_INSTALL_LIBDIR} ${CMAKE_INSTALL_LIBDIR}
COMPONENT COMPONENT
runtime runtime
NAMELINK_SKIP ${NAMELINK_IF_AVAILABLE}
ARCHIVE ARCHIVE
DESTINATION DESTINATION
${CMAKE_INSTALL_LIBDIR} ${CMAKE_INSTALL_LIBDIR}

Просмотреть файл

@ -25,6 +25,7 @@ k4a_result_t k4a_playback_open(const char *path, k4a_playback_t *playback_handle
// Instantiate the logger as early as possible // Instantiate the logger as early as possible
logger_config_t logger_config; logger_config_t logger_config;
logger_config_init_default(&logger_config); logger_config_init_default(&logger_config);
logger_config.env_var_log_to_a_file = K4A_RECORD_ENABLE_LOG_TO_A_FILE;
result = TRACE_CALL(logger_create(&logger_config, &logger_handle)); result = TRACE_CALL(logger_create(&logger_config, &logger_handle));
if (K4A_SUCCEEDED(result)) if (K4A_SUCCEEDED(result))

Просмотреть файл

@ -28,6 +28,7 @@ k4a_result_t k4a_record_create(const char *path,
// Instantiate the logger as early as possible // Instantiate the logger as early as possible
logger_config_t logger_config; logger_config_t logger_config;
logger_config_init_default(&logger_config); logger_config_init_default(&logger_config);
logger_config.env_var_log_to_a_file = K4A_RECORD_ENABLE_LOG_TO_A_FILE;
result = TRACE_CALL(logger_create(&logger_config, &logger_handle)); result = TRACE_CALL(logger_create(&logger_config, &logger_handle));
if (K4A_SUCCEEDED(result)) if (K4A_SUCCEEDED(result))

Просмотреть файл

@ -65,6 +65,10 @@ set_target_properties(
SOVERSION SOVERSION
"${K4A_VERSION_MAJOR}.${K4A_VERSION_MINOR}") "${K4A_VERSION_MAJOR}.${K4A_VERSION_MINOR}")
set(NAMELINK_IF_AVAILABLE)
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0")
set(NAMELINK_IF_AVAILABLE NAMELINK_COMPONENT development)
endif()
# Setup install # Setup install
include(GNUInstallDirs) include(GNUInstallDirs)
@ -78,7 +82,7 @@ install(
${CMAKE_INSTALL_LIBDIR} ${CMAKE_INSTALL_LIBDIR}
COMPONENT COMPONENT
runtime runtime
NAMELINK_SKIP ${NAMELINK_IF_AVAILABLE}
ARCHIVE ARCHIVE
DESTINATION DESTINATION
${CMAKE_INSTALL_LIBDIR} ${CMAKE_INSTALL_LIBDIR}

Просмотреть файл

@ -570,6 +570,14 @@ static k4a_result_t validate_configuration(k4a_context_t *device, const k4a_devi
if (K4A_SUCCEEDED(result) && config->wired_sync_mode == K4A_WIRED_SYNC_MODE_MASTER) if (K4A_SUCCEEDED(result) && config->wired_sync_mode == K4A_WIRED_SYNC_MODE_MASTER)
{ {
result = K4A_RESULT_FROM_BOOL(sync_out_cable_present == true); result = K4A_RESULT_FROM_BOOL(sync_out_cable_present == true);
if (K4A_SUCCEEDED(result) && config->color_resolution == K4A_COLOR_RESOLUTION_OFF)
{
LOG_ERROR("Device wired_sync_mode is set to K4A_WIRED_SYNC_MODE_MASTER, so color camera must be used "
"on master device. Color_resolution can not be set to K4A_COLOR_RESOLUTION_OFF.",
0);
return K4A_RESULT_FAILED;
}
} }
} }

Просмотреть файл

@ -156,3 +156,72 @@ TEST_F(multidevice_ft, DISABLED_stream_two_2_then_1)
k4a_device_close(m_device1); k4a_device_close(m_device1);
m_device1 = NULL; m_device1 = NULL;
} }
TEST_F(multidevice_ft, DISABLED_ensure_color_camera_is_enabled)
{
bool master_device_found = false;
bool subordinate_device_found = false;
uint32_t devices_present = k4a_device_get_installed_count();
ASSERT_LE((uint32_t)2, devices_present);
for (uint32_t x = 0; x < devices_present; x++)
{
ASSERT_EQ(K4A_RESULT_SUCCEEDED, k4a_device_open(x, &m_device1));
bool sync_in_cable_present;
bool sync_out_cable_present;
k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_OFF;
config.depth_mode = K4A_DEPTH_MODE_NFOV_2X2BINNED;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
ASSERT_EQ(K4A_RESULT_SUCCEEDED,
k4a_device_get_sync_jack(m_device1, &sync_in_cable_present, &sync_out_cable_present));
if (sync_out_cable_present)
{
// Negative test
config.wired_sync_mode = K4A_WIRED_SYNC_MODE_MASTER;
ASSERT_EQ(K4A_RESULT_FAILED, k4a_device_start_cameras(m_device1, &config));
k4a_device_stop_cameras(m_device1);
// Positive Test
config.wired_sync_mode = K4A_WIRED_SYNC_MODE_STANDALONE;
ASSERT_EQ(K4A_RESULT_SUCCEEDED, k4a_device_start_cameras(m_device1, &config));
k4a_device_stop_cameras(m_device1);
master_device_found = true;
}
if (sync_in_cable_present)
{
// Positive Test
config.wired_sync_mode = K4A_WIRED_SYNC_MODE_SUBORDINATE;
ASSERT_EQ(K4A_RESULT_SUCCEEDED, k4a_device_start_cameras(m_device1, &config));
k4a_device_stop_cameras(m_device1);
// Positive Test
config.wired_sync_mode = K4A_WIRED_SYNC_MODE_STANDALONE;
ASSERT_EQ(K4A_RESULT_SUCCEEDED, k4a_device_start_cameras(m_device1, &config));
k4a_device_stop_cameras(m_device1);
subordinate_device_found = true;
}
if (subordinate_device_found && sync_out_cable_present)
{
// Done with the test
break;
}
k4a_device_close(m_device1);
m_device1 = NULL;
}
// Make sure we found both devices.
ASSERT_EQ(master_device_found, true);
ASSERT_EQ(subordinate_device_found, true);
}

Просмотреть файл

@ -41,6 +41,7 @@ set(SOURCE_FILES
# to embed version information # to embed version information
set(K4A_FILEDESCRIPTION "Azure Kinect Viewer") set(K4A_FILEDESCRIPTION "Azure Kinect Viewer")
set(K4A_ORIGINALFILENAME "k4aviewer.exe") set(K4A_ORIGINALFILENAME "k4aviewer.exe")
set(K4A_USE_ICON 1)
configure_file( configure_file(
${K4A_VERSION_RC} ${K4A_VERSION_RC}
${CMAKE_CURRENT_BINARY_DIR}/version.rc ${CMAKE_CURRENT_BINARY_DIR}/version.rc

Просмотреть файл

@ -24,6 +24,10 @@
#define VER_PRIVATEBUILD 0 #define VER_PRIVATEBUILD 0
#define VER_PRERELEASE 0 #define VER_PRERELEASE 0
#if @K4A_USE_ICON@
APP_ICON ICON "@K4A_ICON_PATH@"
#endif
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION PRODUCTVERSION VER_PRODUCTVERSION