Add IMU playback support to K4AViewer.
To support this, move graph data aggregation into the listener. This lets us do things like clear the graph data when a seek happens without having direct access to the IMU window.
When starting the depth engine, only wait on the condition if we don't think the thread has started yet as it will never be released if the thread has already triggered the condition.
* Adding Logging API to set/clear callback function, added unit tests, passing with parallel tests with 500 interations.
Updated ENV logger settings so they don't default to enable STDOUT
* formatting change
* works
* Addressing PR comments
* Fixing Doxygen break
* Fixing comment
* last round of feedback
- Add tooltips explaining why options are unavailable (e.g. 3072p doesn't work at 30 FPS)
- Disable starting the IMU if neither camera is enabled since that's no longer supported by the SDK
Also fix an unrelated build break in the transformation tests on some Ubuntu 16.04 setups related to "abs()" resolving to the C version of the function (which expects int args) instead of the C++ version (which has overloads for floats)
* Fixed leak in dewrapper.c. Switched setting to a build variable that can be set in CMAKE.
Also updated leak detection to run a binary unload.
Cleanup up most of the errors I found.
Opened issues #210 and @212 to track leaks that still need to be addressed.
* Adding leak detection logic to k4a_unittest_init() so more tests get it automatically
* Addressing PR feedback
To help prevent errors caused by connecting to a device as it is going away, increase the delay before attempting to connect to the device again after issuing the reset command.
Rewrite the playback wrapper used in k4aviewer in the style of the official C++ wrapper for the K4A API with the intent of eventually adopting the new wrapper as the official C++ playback wrapper
Various improvements to the dock logic:
- Extract the dock logic out into a reusable class
- Add support for resizing docks by dragging
- Add support for docks attached to different edges of the window
- Fix several UI scaling bugs that manifest only when a dock takes up most of the screen
This will be used to support adding a log viewer pane when we have an API for getting logs.
Move video playback to a separate thread to fix timing so the playback speed approximately matches the speed at which events in the recording took place
Also includes cleanup of a lot of the 'frame' naming, which predated the concept of an 'image object' in the K4A API, and cleanup of the image conversion logic; now, the converters convert from one k4a::image to another k4a::image rather than using custom intermediate formats. This will eventually help support RGB point cloud visualization in arbitrary recordings.
Improve readability of K4AViewer code by
- removing all non-const lvalue references (except operator overloads)
- removing the nonstandard AssertionException class in favor of the more common std::logic_error
Fix two bugs in the point cloud viewer:
- A black pixel was being shown at (0, 0, 0) (all the depth pixels with no data got drawn here)
- Invalid pixels in the XY tables were not being handled correctly by the shaders, which caused a streaks of nonsense data in the color point cloud
* Seperate transform engine to different thread to avoid OpenGL context conflict with client
* Clean up
* Fix Linux thread stop
* address comments
* Fix linux build
* fixing lock in process frame
* Small fix
* Being back two comments