Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
f7686a9
Add K4A_RESULT_UNSUPPORTED to result enums.
AntonClaytonBursch Nov 6, 2020
70eaf43
Structs for device, color, depth. Enum for calibration. Functions to …
AntonClaytonBursch Nov 11, 2020
143cd46
Updates examples, src, tests and tools to use new config and color an…
AntonClaytonBursch Nov 11, 2020
7496015
Added fps mode structs and functions.
AntonClaytonBursch Nov 11, 2020
163d176
Updated code to reflect change to using fps mode.
AntonClaytonBursch Nov 11, 2020
bdb2ed3
Moded color, depth and fps enums from k4a/k4atypes.h to k4ainternal/m…
AntonClaytonBursch Nov 13, 2020
dc0db6b
Updated c++ wrapper to use new color and depth modes.
AntonClaytonBursch Nov 17, 2020
b7de2fb
Updated C++ wrapper with get device, depth, color and fps functions. …
AntonClaytonBursch Nov 17, 2020
f9dda0a
Update k4arecord/types.h and examples to use color, depth and fps mod…
AntonClaytonBursch Nov 19, 2020
051f8eb
added depth range to k4a_depth_mode_info, updated get color/depth/fps…
AntonClaytonBursch Nov 23, 2020
14ccb08
Update k4astaticimageproperties.h to use k4a.hpp instead of k4a.h
AntonClaytonBursch Nov 23, 2020
4bc4c00
Quick fix: forgot to add K4A_EXPORT to get mode and mode count functi…
AntonClaytonBursch Nov 23, 2020
e3d04a3
examples, tests, tools refactored to use new get mode functions
AntonClaytonBursch Nov 30, 2020
9ceb3e1
quick comments fix in calibration example and updates to color_ft tes…
AntonClaytonBursch Dec 3, 2020
b5b3806
Changed get modes loops for fps, color and depth.
AntonClaytonBursch Dec 9, 2020
33c964f
Viewer mode selection from radio to comboboxes
AntonClaytonBursch Dec 17, 2020
fcac45f
using mode info types instead of mode info type index
AntonClaytonBursch Dec 30, 2020
eed589a
refactor to use mode info instead of mode id
AntonClaytonBursch Dec 31, 2020
fc655bd
using depth/color/fps mode info instead of mode id
AntonClaytonBursch Jan 4, 2021
a85ed66
mode id changes and GUI cleanup
AntonClaytonBursch Jan 5, 2021
9c97825
revert back from using device mode info to device mode id for fps/col…
AntonClaytonBursch Jan 11, 2021
a488ed1
Use constants defined in usb_cmd_priv.h to set the vendor id and devi…
AntonClaytonBursch Jan 13, 2021
0289b22
Used const for color/depth/fps mode info initializers.
AntonClaytonBursch Jan 14, 2021
01893b2
Passing depth mode info down to point cloud viewer. Moved static k4a…
AntonClaytonBursch Jan 19, 2021
a1b772d
color, depth and fps mode infos saved in and parsed from recordings
AntonClaytonBursch Jan 20, 2021
158b641
Initialize the size and version of the mode structs
AntonClaytonBursch Jan 22, 2021
66bc1e5
Moved K4A_MSFT_VID, K4A_RGB_PID and K4A_DEPTH_PID to usbcommand.h. A…
AntonClaytonBursch Jan 22, 2021
2a70cd1
error handling for saving modes and device info in recording
AntonClaytonBursch Jan 22, 2021
5f99801
color, depth, fps mode info and device info saved in and parse from r…
AntonClaytonBursch Jan 22, 2021
af6d217
Fixing K4A build errors in src/record/internal/matroska_read.cpp abou…
JonathanESantos Jan 26, 2021
c541fde
SDK: docstring changes for Doxygen to run without errors.
JonathanESantos Jan 26, 2021
7a7854a
Merge pull request #1 from AntonClaytonBursch/user/jonsanto/Bug5456_F…
AntonClaytonBursch Jan 26, 2021
8f573d2
Merge pull request #2 from AntonClaytonBursch/user/jonsanto/Story5373…
AntonClaytonBursch Jan 26, 2021
e8fe464
K4A API: Adding to docstrings that functions may return status of UNS…
JonathanESantos Jan 26, 2021
d592958
linked k4a_math in viewer
AntonClaytonBursch Jan 26, 2021
5d51a26
Recording description from mode info saved in recording (or legacy de…
AntonClaytonBursch Jan 26, 2021
e3bfdb2
Merge pull request #3 from AntonClaytonBursch/user/jonsanto/Task5460_…
AntonClaytonBursch Jan 26, 2021
81b9de6
Use modes for k4arecorder
AntonClaytonBursch Jan 27, 2021
7a91853
Recorder mode option listed.
AntonClaytonBursch Jan 27, 2021
1bc8889
Merge branch 'api-update' of https://github.com/AntonClaytonBursch/Az…
AntonClaytonBursch Jan 27, 2021
162a016
k4aviewer: Removing audio support. To turn on audio support, in tools…
JonathanESantos Jan 27, 2021
1ccc23f
k4aviewer: Removing support for audio and clangformat wants to format…
JonathanESantos Jan 27, 2021
a828c1e
working on recorder command line validation
AntonClaytonBursch Jan 27, 2021
5be389d
Merge branch 'api-update' into user/jonsanto/Task5467_RemoveSupportFo…
JonathanESantos Jan 27, 2021
46e53da
k4arecorder: Minor editing.
JonathanESantos Jan 27, 2021
b493720
k4a: Adding functional tests for calling the added functions in k4a.h.
JonathanESantos Jan 28, 2021
b32f3ac
Removing commented-out code.
JonathanESantos Jan 28, 2021
6d28e16
k4a: Fixing a test in depth_ft.
JonathanESantos Jan 28, 2021
e8c0f22
Update main.cpp
JonathanESantos Jan 28, 2021
c7279c3
Update main.cpp
JonathanESantos Jan 28, 2021
da96ffc
Update main.cpp
JonathanESantos Jan 28, 2021
235ba8f
Update main.cpp
JonathanESantos Jan 28, 2021
8d2a3b1
Update main.cpp
JonathanESantos Jan 28, 2021
fa07ae8
Merge pull request #5 from AntonClaytonBursch/user/jonsanto/Task5466_…
AntonClaytonBursch Jan 28, 2021
df3b755
validate recorder cmd options
AntonClaytonBursch Jan 28, 2021
f82b42d
finished validating recording cmd options
AntonClaytonBursch Jan 28, 2021
1166777
Fixed get fps mode in recorder.
AntonClaytonBursch Jan 28, 2021
bab38b8
Merge branch 'api-update' into user/jonsanto/Task5467_RemoveSupportFo…
AntonClaytonBursch Jan 28, 2021
d9f616d
Merge pull request #4 from AntonClaytonBursch/user/jonsanto/Task5467_…
AntonClaytonBursch Jan 28, 2021
a5f6512
Fix broken Linux build.
JonathanESantos Jan 29, 2021
b4df263
k4a: ninja clangformat made these formatting changes.
JonathanESantos Jan 29, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Viewer mode selection from radio to comboboxes
  • Loading branch information
AntonClaytonBursch committed Dec 17, 2020
commit 33c964f777052f9f9012d4915fe59ff3a79479ce
14 changes: 10 additions & 4 deletions include/k4a/k4a.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1470,7 +1470,7 @@ class device
if (result == K4A_RESULT_SUCCEEDED)
{
modes.reserve(mode_count);
for (int i = 0; i <= mode_count; i++)
for (int i = 0; i < mode_count; i++)
{
if (k4a_device_get_color_mode(m_handle, i, &mode) == K4A_RESULT_SUCCEEDED)
{
Expand All @@ -1493,7 +1493,7 @@ class device
if (result == K4A_RESULT_SUCCEEDED)
{
modes.reserve(mode_count);
for (int i = 0; i <= mode_count; i++)
for (int i = 0; i < mode_count; i++)
{
if (k4a_device_get_depth_mode(m_handle, i, &mode) == K4A_RESULT_SUCCEEDED)
{
Expand All @@ -1516,7 +1516,7 @@ class device
if (result == K4A_RESULT_SUCCEEDED)
{
modes.reserve(mode_count);
for (int i = 0; i <= mode_count; i++)
for (int i = 0; i < mode_count; i++)
{
if (k4a_device_get_fps_mode(m_handle, i, &mode) == K4A_RESULT_SUCCEEDED)
{
Expand All @@ -1526,7 +1526,13 @@ class device
}

return modes;
}
}

// TODO: add comments
int get_common_factor(int width, int height)
{
return (height == 0) ? width : get_common_factor(height, width % height);
}

private:
k4a_device_t m_handle;
Expand Down
2 changes: 1 addition & 1 deletion include/k4a/k4atypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -895,7 +895,7 @@ typedef struct _k4a_depth_mode_info_t
float horizontal_fov; /**< Approximate horizontal field of view. */
float vertical_fov; /**< Approximate vertical field of view. */
int min_fps; /**< Minimum supported framerate. */
int max_fps; /**< Maximum supported ramerate. */
int max_fps; /**< Maximum supported framerate. */
int min_range; /**< Min values expected for mode in millimeters */
int max_range; /**< Max values expected for mode in millimeters */
} k4a_depth_mode_info_t;
Expand Down
6 changes: 3 additions & 3 deletions src/sdk/k4a.c
Original file line number Diff line number Diff line change
Expand Up @@ -1372,7 +1372,7 @@ k4a_result_t k4a_device_get_color_mode_count(k4a_device_t device_handle, int *mo
RETURN_VALUE_IF_HANDLE_INVALID(K4A_RESULT_FAILED, k4a_device_t, device_handle);
k4a_result_t result = K4A_RESULT_SUCCEEDED;

*mode_count = sizeof(device_color_modes) / sizeof(k4a_color_mode_info_t);
*mode_count = sizeof(device_color_modes) / sizeof(device_color_modes[0]);

return result;
}
Expand Down Expand Up @@ -1414,7 +1414,7 @@ k4a_result_t k4a_device_get_depth_mode_count(k4a_device_t device_handle, int *mo
RETURN_VALUE_IF_HANDLE_INVALID(K4A_RESULT_FAILED, k4a_device_t, device_handle);
k4a_result_t result = K4A_RESULT_SUCCEEDED;

*mode_count = sizeof(device_depth_modes) / sizeof(k4a_depth_mode_info_t);
*mode_count = sizeof(device_depth_modes) / sizeof(device_depth_modes[0]);

return result;
}
Expand Down Expand Up @@ -1460,7 +1460,7 @@ k4a_result_t k4a_device_get_fps_mode_count(k4a_device_t device_handle, int *mode
RETURN_VALUE_IF_HANDLE_INVALID(K4A_RESULT_FAILED, k4a_device_t, device_handle);
k4a_result_t result = K4A_RESULT_SUCCEEDED;

*mode_count = sizeof(device_fps_modes) / sizeof(k4a_fps_mode_info_t);
*mode_count = sizeof(device_fps_modes) / sizeof(device_fps_modes[0]);

return result;
}
Expand Down
189 changes: 144 additions & 45 deletions tools/k4aviewer/k4adevicedockcontrol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ K4ADeviceDockControl::~K4ADeviceDockControl()
Stop();
}

// TODO: clean up and document refactor
K4ADockControlStatus K4ADeviceDockControl::Show()
{
std::stringstream labelBuilder;
Expand Down Expand Up @@ -342,16 +343,56 @@ K4ADockControlStatus K4ADeviceDockControl::Show()
{
const bool depthSettingsEditable = !deviceIsStarted && m_config.EnableDepthCamera;
auto *pDepthMode = reinterpret_cast<int *>(&m_config.DepthMode);
ImGui::Text("Depth mode");
depthModeUpdated |= ImGuiExtensions::K4ARadioButton("NFOV Binned", pDepthMode, 1, depthSettingsEditable); // 1 = K4A_DEPTH_MODE_NFOV_2X2BINNED
ImGui::SameLine();
depthModeUpdated |= ImGuiExtensions::K4ARadioButton("NFOV Unbinned ", pDepthMode, 2, depthSettingsEditable); // 2 = K4A_DEPTH_MODE_NFOV_UNBINNED
// New line
depthModeUpdated |= ImGuiExtensions::K4ARadioButton("WFOV Binned", pDepthMode, 3, depthSettingsEditable); // 3 = K4A_DEPTH_MODE_WFOV_2X2BINNED
ImGui::SameLine();
depthModeUpdated |= ImGuiExtensions::K4ARadioButton("WFOV Unbinned ", pDepthMode, 4, depthSettingsEditable); // 4 = K4A_DEPTH_MODE_WFOV_UNBINNED
// New line
depthModeUpdated |= ImGuiExtensions::K4ARadioButton("Passive IR", pDepthMode, 5, depthSettingsEditable); // 5 = K4A_DEPTH_MODE_PASSIVE_IR
//ImGui::Text("Depth mode");

// TODO: remove
//depthModeUpdated |= ImGuiExtensions::K4ARadioButton("NFOV Binned", pDepthMode, 1, depthSettingsEditable); // 1 = K4A_DEPTH_MODE_NFOV_2X2BINNED

//depthModeUpdated |= ImGuiExtensions::K4ARadioButton("NFOV Unbinned ", pDepthMode, 2, depthSettingsEditable); // 2 = K4A_DEPTH_MODE_NFOV_UNBINNED

//depthModeUpdated |= ImGuiExtensions::K4ARadioButton("WFOV Binned", pDepthMode, 3, depthSettingsEditable); // 3 = K4A_DEPTH_MODE_WFOV_2X2BINNED

//depthModeUpdated |= ImGuiExtensions::K4ARadioButton("WFOV Unbinned ", pDepthMode, 4, depthSettingsEditable); // 4 = K4A_DEPTH_MODE_WFOV_UNBINNED

//depthModeUpdated |= ImGuiExtensions::K4ARadioButton("Passive IR", pDepthMode, 5, depthSettingsEditable); // 5 = K4A_DEPTH_MODE_PASSIVE_IR


std::vector<std::pair<int, std::string>> depth_mode_items;
std::vector<k4a_depth_mode_info_t> depth_modes = m_device.get_depth_modes();
size_t depth_modes_size = depth_modes.size();
for (int d = 1; d < depth_modes_size; d++)
{
k4a_depth_mode_info_t depth_mode = depth_modes[d];
int width = (int)depth_mode.width;
int height = (int)depth_mode.height;
float fov = depth_mode.horizontal_fov;

std::string description = "";
if (depth_mode.passive_ir_only)
{
description += "Passive IR";
}
else
{
if (width < 1000)
{
description += " ";
}
if (height < 1000)
{
description += " ";
}
description += std::to_string(width) + "x";
description += std::to_string(height) + ", ";
description += std::to_string(fov);
description += " Deg";
}

depth_mode_items.push_back({ d, (const std::string)description });
}

depthModeUpdated |=
ImGuiExtensions::K4AComboBox("Depth", "", ImGuiComboFlags_None, depth_mode_items, pDepthMode, depthSettingsEditable);

ImGui::TreePop();
}
Expand Down Expand Up @@ -388,8 +429,10 @@ K4ADockControlStatus K4ADeviceDockControl::Show()
ImGuiExtensions::K4ARadioButton("YUY2", pColorFormat, K4A_IMAGE_FORMAT_COLOR_YUY2, colorSettingsEditable);

// Uncompressed formats are only supported at 720p.
//
const char *imageFormatHelpMessage = "Not supported in NV12 or YUY2 mode!";

// TODO: tooltip if not supported in NV12 or YUY2 mode
//const char *imageFormatHelpMessage = "Not supported in NV12 or YUY2 mode!";

const bool imageFormatSupportsHighResolution = m_config.ColorFormat != K4A_IMAGE_FORMAT_COLOR_NV12 &&
m_config.ColorFormat != K4A_IMAGE_FORMAT_COLOR_YUY2;
if (colorFormatUpdated || m_firstRun)
Expand All @@ -400,35 +443,62 @@ K4ADockControlStatus K4ADeviceDockControl::Show()
}
}

auto *pColorResolution = reinterpret_cast<int *>(&m_config.ColorResolution);
// TODO: remove
//auto *pColorResolution = reinterpret_cast<int *>(&m_config.ColorResolution);

ImGui::Text("Resolution");
ImGui::Indent();
ImGui::Text("16:9");
ImGui::Indent();
colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton(" 720p", pColorResolution, 1, colorSettingsEditable); // 1 = K4A_COLOR_RESOLUTION_720P
ImGui::SameLine();
colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1080p", pColorResolution, 2, colorSettingsEditable && imageFormatSupportsHighResolution); // 2 = K4A_COLOR_RESOLUTION_1080P
ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);
// New line
colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1440p", pColorResolution, 3, colorSettingsEditable && imageFormatSupportsHighResolution); // 3 = K4A_COLOR_RESOLUTION_1440P
ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);
ImGui::SameLine();
colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("2160p", pColorResolution, 4, colorSettingsEditable && imageFormatSupportsHighResolution); // 4 = K4A_COLOR_RESOLUTION_2160P
ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);
ImGui::Unindent();
ImGui::Text("4:3");
ImGui::Indent();
auto *pColorMode = reinterpret_cast<int *>(&m_config.ColorResolution);

colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1536p", pColorResolution, 5, colorSettingsEditable && imageFormatSupportsHighResolution); // 5 = K4A_COLOR_RESOLUTION_1536P
ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);
//ImGui::Text("Resolution");
//ImGui::Indent();

ImGui::SameLine();
colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("3072p", pColorResolution, 6, colorSettingsEditable && imageFormatSupportsHighResolution); // 6 = K4A_COLOR_RESOLUTION_3072P
ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);
//ImGui::Text("16:9");

//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton(" 720p", pColorResolution, 1, colorSettingsEditable); // 1 = K4A_COLOR_RESOLUTION_720P

ImGui::Unindent();
ImGui::Unindent();
//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1080p", pColorResolution, 2, colorSettingsEditable && imageFormatSupportsHighResolution); // 2 = K4A_COLOR_RESOLUTION_1080P
//ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);

//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1440p", pColorResolution, 3, colorSettingsEditable && imageFormatSupportsHighResolution); // 3 = K4A_COLOR_RESOLUTION_1440P
//ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);

//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("2160p", pColorResolution, 4, colorSettingsEditable && imageFormatSupportsHighResolution); // 4 = K4A_COLOR_RESOLUTION_2160P
//ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);

//ImGui::Text("4:3");

//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("1536p", pColorResolution, 5, colorSettingsEditable && imageFormatSupportsHighResolution); // 5 = K4A_COLOR_RESOLUTION_1536P
//ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);

//colorResolutionUpdated |= ImGuiExtensions::K4ARadioButton("3072p", pColorResolution, 6, colorSettingsEditable && imageFormatSupportsHighResolution); // 6 = K4A_COLOR_RESOLUTION_3072P
//ImGuiExtensions::K4AShowTooltip(imageFormatHelpMessage, !imageFormatSupportsHighResolution);

std::vector<std::pair<int, std::string>> color_mode_items;
std::vector<k4a_color_mode_info_t> color_modes = m_device.get_color_modes();
size_t color_modes_size = color_modes.size();
for (int c = 1; c < color_modes_size; c++)
{
k4a_color_mode_info_t color_mode = color_modes[c];
int width = (int)color_mode.width;
int height = (int)color_mode.height;
int common_factor = m_device.get_common_factor(width, height);

std::string description = "";
if (height < 1000)
{
description += " ";
}
description += std::to_string(height) + "p ";
description += std::to_string(width / common_factor) + ":" + std::to_string(height / common_factor);

color_mode_items.push_back({ c, (const std::string) description });
}

colorResolutionUpdated |= ImGuiExtensions::K4AComboBox("Resolution",
"",
ImGuiComboFlags_None,
color_mode_items,
pColorMode,
colorSettingsEditable);
ImGui::TreePop();
}
if (ImGui::TreeNode("Color Controls"))
Expand Down Expand Up @@ -589,15 +659,42 @@ K4ADockControlStatus K4ADeviceDockControl::Show()

const bool enableFramerate = !deviceIsStarted && (m_config.EnableColorCamera || m_config.EnableDepthCamera);

ImGui::Text("Framerate");
auto *pFramerate = reinterpret_cast<int *>(&m_config.Framerate);
//ImGui::Text("Framerate");

// TODO: remove
//auto *pFramerate = reinterpret_cast<int *>(&m_config.Framerate);

bool framerateUpdated = false;
framerateUpdated |= ImGuiExtensions::K4ARadioButton("30 FPS", pFramerate, 2, enableFramerate && supports30fps); // 2 = K4A_FRAMES_PER_SECOND_30
ImGuiExtensions::K4AShowTooltip("Not supported with WFOV Unbinned or 3072p!", !supports30fps);
ImGui::SameLine();
framerateUpdated |= ImGuiExtensions::K4ARadioButton("15 FPS", pFramerate, 1, enableFramerate); // 1 = K4A_FRAMES_PER_SECOND_15
ImGui::SameLine();
framerateUpdated |= ImGuiExtensions::K4ARadioButton(" 5 FPS", pFramerate, 0, enableFramerate); // 0 = K4A_FRAMES_PER_SECOND_5


// TODO: remove
//framerateUpdated |= ImGuiExtensions::K4ARadioButton("30 FPS", pFramerate, 2, enableFramerate && supports30fps); // 2 = K4A_FRAMES_PER_SECOND_30
//ImGuiExtensions::K4AShowTooltip("Not supported with WFOV Unbinned or 3072p!", !supports30fps);

//framerateUpdated |= ImGuiExtensions::K4ARadioButton("15 FPS", pFramerate, 1, enableFramerate); // 1 = K4A_FRAMES_PER_SECOND_15

//framerateUpdated |= ImGuiExtensions::K4ARadioButton(" 5 FPS", pFramerate, 0, enableFramerate); // 0 = K4A_FRAMES_PER_SECOND_5

// TODO: comment
// TODO: tooltip if 30 fps not available due to other settings
auto *pFPSMode = reinterpret_cast<int *>(&m_config.Framerate);

// TODO: only returning 1 item in modes count
std::vector<std::pair<int, std::string>> fps_mode_items;
std::vector<k4a_fps_mode_info_t> fps_modes = m_device.get_fps_modes();
size_t fps_modes_size = fps_modes.size();
for (int f = 0; f < fps_modes_size; f++)
{
k4a_fps_mode_info_t fps_mode = fps_modes[f];
int fps = (int)fps_mode.fps;
std::string description = std::to_string(fps) + " FPS";

fps_mode_items.push_back({ f, (const std::string)description });
}

framerateUpdated |= ImGuiExtensions::K4AComboBox("Framerate", "", ImGuiComboFlags_None, fps_mode_items, pFPSMode);



ImGuiExtensions::K4ACheckbox("Disable streaming LED", &m_config.DisableStreamingIndicator, !deviceIsStarted);

Expand Down Expand Up @@ -638,6 +735,8 @@ K4ADockControlStatus K4ADeviceDockControl::Show()
nullptr,
"%d",
!deviceIsStarted);

// TODO: replace switch with calculation using mode info
if (framerateUpdated || depthDelayUpdated)
{
// InputScalar doesn't do bounds-checks, so we have to do it ourselves whenever
Expand Down