Add a simple OpenGL-based viewer tool that viewer tool as an example so developers can quickly get started with their own viewer tool.
The simple viewer borrowed some code from the full K4AViewer tool; as part of this, cleaned up some of that code as well
* Switches build to grab doxygen from universal pkg
* Revert "Switches build to grab doxygen from universal pkg"
This reverts commit da87d7c1ca921ab77a3e0a1e20a3946db4428a19.
* Download from sourceforge
* Fix filename
* When compiled into a CPP file new/delete are used for the context.
When called from a C file malloc/free are used. UT's have been
added to confirm this.
* addressing comments
* addressing build error, nothrow appears to be a CPP17 feature
* adding nothrow back
* reverting nothrow from record tests, this was unintentional
* Single allocation
* Add mm in the parameter name to bring more clarity
* Small change
* remove _in from the name
* Add unsaved file
* addressing comments
* update doxgen
* clang format
K4A recordings have an embedded timestamp offset that indicates how far off the master the timestamps in the recording are. Adding this to the timestamps on the images in the recording lets you correlate timestamps between multiple synchronized recordings.
Previously, we weren't doing that addition automatically, which made it awkward to step through synchronized recordings in K4AViewer; this makes the viewer show the adjusted timestamps instead.
Also fix a couple bugs:
- The C++ wrapper version of set_timestamp and set_exposure_time didn't work on systems where the representation for std::chrono::microseconds was int64_t due to an overflow when casting uint64_t::max to int64_t
- There was a race condition in performance counter initialization that sometimes resulted in a segfault when registering the perf counter because the std::map containing the list of perf counters was being used before it was constructed (timing issue, seems to only happen when broken into the debugger)
* Added flag to run without IMU, Cleaned up missing sample calculation, hopefully that will stop the syncd capture count for going above 100.
* saving
* commit fix up
* fixed up magic number
In libyuv the imported lib for the DLL has the same name as the static
lib. Thus, there is a target conflict that the lastest version of ninja
will complain about.
This works around this issue by tricking cmake into not generating a
import lib for libyuv as we use the static lib only.
Assorted fixes for K4AViewer and documentation, specifically:
- Removed the outdated firmware version check (this is now handled by the API itself)
- Add a bounds check for the internal sync control so you can't specify an illegal delay
- Adjust the graphing ranges/defaults for the gyroscope so it's easier to see movement
- Update some comments in the C++ wrapper to clarify that the constructors that take C handles take ownership of those handles
- Remove unnecessary private add_reference functions from C++ wrapper
- Fix a bug where K4ARingBuffer was reporting full when it was 1 item under capacity, resulting in us lagging by a frame
- Change K4ARingBuffer to use pointers instead of references for readability
Add RGB colorization option to point cloud viewer
To make this performant, some things had to be moved to the GPU:
- Conversion from depth to XYZ coordinates
- Computation of normal vectors for depth-shaded point cloud mode
RGB colorization is only supported in BGRA mode, so as part of this, the default video mode has changed to BGRA so that the default settings allow all point cloud modes.
libjpeg-turbo has logic to detect if CMAKE_INSTALL_PREFIX has been set.
If it has not, libjpeg-turbo sets the default to /opt/k4a (on Linux).
We do not want that.