55 Commits
Author SHA1 Message Date
Jonathan Thomas ea75014f08 Replace ZeroMQ logging with independent file and console logging
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.
2026-09-14 22:46:20 -05:00
Jonathan Thomas be99ec02c6 Migrate object detection to YOLOv5 ONNX
- 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.
2026-05-10 21:48:24 -05:00
Jonathan Thomas 991b29cca0 Merge remote-tracking branch 'origin/develop' into qt6-support 2026-04-10 17:20:06 -05:00
Jonathan Thomas f31010b7b7 Fixing some Codacy nitpicks in the vulkan benchmark code 2026-03-26 19:07:55 -05:00
Jonathan Thomas 0c37eadc70 Pipeline VulkanDirect benchmark by submitting GPU work before decoding next frame 2026-03-26 13:14:10 -05:00
Jonathan Thomas ed12e252aa Fixing some Codacy nitpicks in our Vulkan benchmark code 2026-03-25 22:04:24 -05:00
Jonathan Thomas 51eba65c5a Fixing deadlocks on RTX and cuda and fixing cmake to allow for better vulkan detection. Performance is not great though on the RTX gpu. 2026-03-25 17:02:37 -05:00
Jonathan Thomas 1414a4afeb - Added an optional vulkan-benchmark executable without changing normal libopenshot builds.
- 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.
2026-03-25 13:13:52 -05:00
Jonathan Thomas 867473ab59 Merge remote-tracking branch 'origin/develop' into qt6-support 2026-03-12 23:03:07 -05:00
Jonathan Thomas b7c37b84e4 - Fix FFmpegReader first-frame black regression by anchoring PTS offset to video start (and correcting video offset to use packet PTS), so AAC preroll/skip-samples no longer shifts frame 1.
- Add examples/test_aac_preroll.mp4 fixture (small, deterministic AAC-preroll sample) for reproducing and testing the regression.
2026-02-15 15:22:11 -06:00
Jonathan Thomas 6c1f687afc Merge branch 'develop' into qt6-support 2026-02-13 23:07:53 -06:00
Jonathan Thomas de012ac6c8 Improve seek retry fallback and clean up hw decode logging
- 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
2026-02-06 16:46:40 -06:00
Jonathan Thomas bfca7ee8ad Adding Qt6 detection and compatibility, without breaking Qt5. -DUSE_QT6=AUTO|ON|OFF (default: AUTO; prefers Qt6 when available and CMake ≥3.16, ON forces Qt6, OFF forces Qt5). Also, a few version specific changes for API changes on Qt6, but it appears to work well. 2025-12-17 22:59:25 -06:00
Jonathan Thomas 16f791a55a Adding missing <sstream> includes for older compilers, and because it should be included anyway 2025-12-16 18:23:57 -06:00
Jonathan Thomas 0dfc8a8a37 Updating 1D and 3D unit tests for Color Map to use a more obvious cube color map, with 1D = green and blue, and 3D = red and blue. 2025-11-18 18:11:37 -06:00
Jonathan Thomas e25763d089 Adding awareness of DOMAIN_MIN and DOMAIN_MAX properties of LUT Color Map files and new unit tests to validate them 2025-11-18 17:36:30 -06:00
Jonathan Thomas 2f82e7d27b Adding support for 1D and 3D LUT Color Map files. Also added new unit tests to verify 1D and 3D LUT files. 2025-11-18 14:26:59 -06:00
Jonathan Thomas 021c6ecc07 Adding unit tests to validate FFmpegReader, Clip, and Timeline frame accuracy of GIF files, plus GIF with time curves. 2025-09-12 22:57:26 -05:00
Jonathan Thomas a07fe18a14 Adding 5 Spherical test images (needed for unit tests) 2025-09-10 21:33:37 -05:00
Jonathan Thomas 2d6db64b52 Incorporating VideoCacheThread into openshot-example executable, to experiment with caching during export. It works great! 2025-06-06 15:33:04 -05:00
Jonathan Thomas a4b2af4eb8 Adding FFmpegWriter into openshot-example executable to test with valgrind heapgrind. 2025-06-05 19:38:53 -05:00
Jonathan Thomas 6e73a23259 Changing example program to time decoding of test video, forwards and backwards, with time print-outs. 2025-06-04 17:19:01 -05:00
Jonathan Thomas 48a7a07066 Initial ColorMap effect, which loads a LUT (.cube) file and applies color grading by mapping colors by channel. 2025-05-24 15:30:16 -05:00
Jonathan Thomas ec890fe74d Adding unit tests for spherical project effect, using 2 PNG assets 2025-05-21 18:25:22 -05:00
Jonathan Thomas 09ce05bbf2 Many improvements for smooth audio playback when 'time' keyframes are used for time remapping.
- 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
2023-03-10 01:15:14 -06:00