Add severity levels and environment configuration, preserve source aliases and raw crash-log output, and remove ZeroMQ build dependencies. Document the API and cover filtering, environment precedence, concurrent writes, and Python bindings.
- Replace YOLOv3 Darknet loading with YOLOv5 ONNX model loading and validation.
- Parse YOLOv5 outputs with top class candidates for smoother labels.
- Improve SORT tracking with class-score smoothing and stricter geometry gates.
- Prevent active tracks from hopping to adjacent objects or tiny nested detections.
- Keep object ids stable through protobuf load/save and add an object-detection debug example.
- Add class-based default colors and matching border/background defaults.
- Add All Objects pseudo-selection support for tracked-object properties.
- Honor tracked-object corner radius when using tracker/object detector masks.
- Add regression tests for tracking stability, all-object styling, masks, and keyframes.
- Built a small benchmark matrix to compare CPU and GPU pipelines on the same video.
- Added --row so each path can run by itself for debugging and stable testing.
- Switched the benchmark to a more realistic preview-style workload instead of full-size-only transforms.
- Added PNG dump support so rows can save sample output frames for visual verification.
- The custom Vulkan path now does real preview scaling and alpha overlay, and can stay fully on-GPU for Vulkan decode.
- Added runtime detection for VAAPI, CUDA, and Vulkan, so unsupported rows skip cleanly on different systems.
- Added CUDA benchmark rows for NVIDIA systems, while keeping VAAPI and Vulkan conditional at runtime.
- add adaptive seek fallback and switch fprintf to ZmqLogger
- improves seeking on certain files by up to 30% (faster)
- avoids situations where seeking too far would sometimes freeze on certain videos
- Added new Frame::ReverseAudio() helper method - for time keyframe support playing backwards audio
- Fixed math rounding error on time keyframe Resampler, to use the rounded source samples value
- Removed some unused args and Frame audio methods
- Reset FrameMapper resample context when non-adjacent frames are requested
- Correctly reverse Frame audio if a time keyframe is present, and reversing audio
- Rewrite Keyframe::IsIncreasing() function, to give accurate direction of time keyframes at any index (special logic to support first and last indexes)
- Fixed Keyframe unit tests - since logic has changed a bit
- Improved time mapping unit tests
- Replace many c-style casts with static_cast
- Added new sine.wav test file