|
libfreenect2 0.4
Open source driver for the Kinect for Windows v2 (K4W2) sensor
|
Version 0.4 adds conventional projective calibration, runtime health snapshots, and recording manifest version 2. The shared-library ABI changes from 0.3 to 0.4; rebuild all C++ consumers and bindings.
All targets now require C++17. CMake enforces CMAKE_CXX_STANDARD=17, disables compiler extensions, and exports API version 0.4. The supported Linux floor is Ubuntu 22.04 or an equivalent toolchain; Ubuntu 24.04 remains the primary CI matrix.
Downstream targets should request the same standard:
The four-argument Frame(width, height, bytes, data) constructor remains source-compatible and still defaults to Frame::Invalid. New code should use the format-aware overload:
Consumers validate formats, so setting the type at construction prevents a partially initialized wrapper from reaching registration or vision code.
Freenect2Device::getRuntimeStatistics() returns a thread-safe snapshot. It includes start/stop/disconnect/stall counters and per-stream decoded frames, status errors, sequence gaps, and the most recent sequence, device timestamp, and host-arrival timestamp. Counters live for the device object's lifetime and are available for both live and replay devices. The call is observational; it does not reconnect or alter lifecycle state.
CalibrationProfile and ProjectiveRegistration are described in Conventional camera calibration profiles. Existing Registration behavior and factory calibration structs are retained. Choose explicitly:
Depth correction remains opt-in in both workflows.
RecordingWriter publishes manifest version 2 when a canonical profile is attached and version 1 otherwise, so profile-less 0.4 recordings remain readable by 0.3 consumers. Version 2 has the same streams, clock semantics, durability protocol, and journal as version 1, plus an optional safe relative canonical-profile path. Readers accept both versions. A missing, malformed, or unsafe attached profile causes version-2 replay validation to fail; a serial-mismatched profile is accepted when the manifest records the writer's allow_serial_mismatch opt-in. The manifest is not signed, so that flag records intent rather than proving it.
Applications that construct internal manifest fixtures must accept versions 1 and 2. Public recording code should use RecordingWriter and Freenect2Replay::openRecording() rather than parsing JSON itself.