KWIVER v1.8.0 Release Notes
This is a minor release of KWIVER that provides both new functionality and fixes
over the previous v1.7.0 release.
Updates
KWIVER
-
Adopted C++17.
-
Added setup_KWIVER.ps1.
-
Added the MSVC 2022 compiler as a case in our CMake logic.
Vital
Vital Algo
-
Added API for algorithms to find nearest neighbor to a set of point in 3D.
-
Expanded the pointcloud_io API to include the ability to load point cloud data
-
Added option to open file given to metadata_map_io in binary mode.
-
Added buffered_metadata_filter.
Vital Types
-
Added new pointcloud type to hold point cloud data
-
Added VITAL_META_UNIX_TIMESTAMP_SOURCE, VITAL_META_VIDEO_DATA_STREAM_SYNCHRONOUS.
-
Removed VITAL_META_ICING_DETECTED.
-
Added equality operators for metadata_item.
-
Added metadata_[io]stream.
Vital Util
-
Added support for different text codecs (ASCII, UTF-8, etc).
-
Added threeway_compare().
Arrows
- Passed a constant seed to the random point generator used by several tests to
prevent occasional random failure.
Arrows: Core
-
Implemented a general-purpose CSV reader and writer.
-
Prevent UV coordinates from going to NaN for degenerate triangles in uv_unwrap_mesh.
-
Fixed race condition in close_loops_exhaustive that could result in a crash
when matching and merging feature tracks. -
Fixed undefined behavior leading to a crash in track_features_core when the
track set remained empty after the first frame. -
Fixed an incorrect cast of a geo_point to double in derive_metadata.
Arrows: FFmpeg
-
Added support for FFmpeg 5.1.2.
-
Added basic configuration options to ffmpeg_video_output.
-
Added CUVID video decoding/encoding support.
-
Added support in ffmpeg_video_output for non-RGB24 input images.
-
Fixed many bugs with timestamps.
-
Implemented direct copying of video stream packets from input to output.
-
Improved robustness against invalid input data.
-
Added config options to ffmpeg_video_input to ignore the video or KLV streams.
-
Properly handle MISP nanosecond timestamps.
-
Added padding to end of image memory to avoid segfaults.
-
Improved the search paths to find an FFmpeg installation.
-
Fixed alignment between KLV packets and frames when reading and writing.
-
Limit total amount of past KLV maintained in memory.
-
Added new synthetic test videos.
-
Added derivation of KLV synchronicity from stream and packet characteristics.
-
Made initial probing logic more persistent.
Arrows: KLV
-
Implemented ST1107.
-
Updated ST0903 implementation to version 6.
-
Implemented the BOOLEAN, UINT, and RLE APAs in ST1303.
-
Adjusted tag number requirements of ST0806.
-
Changed data type of EG0104 Episode Number to string.
-
Implemented configuration of KLV muxing update rates.
-
Modified interface to use pointers when reading/writing instead of
std::vector iterators. -
Used std::nullopt to indicate no ST0601 control command timestamp instead of 0.
-
Used std::chrono to better express MISP timestamps.
-
Changed type of ST0601 Waypoint Record bitfield.
-
Added detailed length constraint information.
-
Fixed bug when calculating length of ST0601 Airbase Locations.
-
Fixed bug which prevented detection of some too-long KLV packet lengths.
-
Added apply_child_klv and update_klv metadata filters.
-
Implemented CRC-8-CCITT checksum.
-
Fixed bug when ST0903 local set packs fail to parse.
-
Made headers public which were included by other public headers.
-
Improved descriptions of formats.
-
Implemented handling of different string encodings.
-
Fixed possible out-of-bounds memory read leading to crash when KLV parsing
fails. -
Fixed bug in KLV packet reader which failed to check if the packet's length
was larger than the available number of input bytes. -
Fixed bug in ST0601 view domain writer which would not write the length of
the final field. -
Added a missing type to the ST0601 KLV JSON exporter.
Arrows: PDAL
- Added implementation of the load API to pointcloud_io to load point data via the PDAL library
Arrows: Serialize JSON
-
Fixed bug when loading a KLV local set item with a null value.
-
Fixed bug preventing the proper loading of strings with embedded null ('\0')
characters. -
Increased the precision of exported floating point values.
-
Added a configuration option to compress JSON on output.
Arrows: Zlib
- Added this arrow with bytestream_compressor functionality.
KwiverSys
- Made compiling regular expression thread-safe.
Applets
Applets: bundle adjustment tool
- Added an implementation bundle adjustment (BA) applet that optimizes a set of
cameras given multiple 3D-2D point correspondences.
Applets: transcode
- Fixed a bug in which metadata was erroneously written after each frame,
instead of before.
Applets: dump-klv
-
Added an option to use multithreading when dumping frame images.
-
Removed early exit when no KLV stream is found.
Applets: compare-klv
- Added this applet.
Python:
- Removed the custom pybind11.h header file since the current version of
pybind11 now handles cases where the GIL is acquired via the
PyGILState_* API.