Commit Graph

3063 Commits

Author SHA1 Message Date
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
fa4f44d108 Fixing small build error on benchmark includes 2025-09-12 21:19:16 -05:00
Jonathan Thomas
a66727a687 Expanding Clip unit tests to include all composite blend modes available to libopenshot. 2025-09-12 18:06:26 -05:00
Jonathan Thomas
523ef17aa4 Adding composite/blend modes to libopenshot:
-Normal
-Darken
-Multiply
-Color Burn
-Lighten
-Screen
-Color Dodge
-Add
-Overlay
-Soft Light
-Hard Light
-Difference
-Exclusion
2025-09-12 17:47:41 -05:00
Jonathan Thomas
b94dcac3b4 Adding Benchmark executable to assist with performance testing and comparisons with different versions of OpenShot.
Initial results:
FFmpegWriter,7800
FrameMapper,3508
Clip,4958
Timeline,30817
Timeline (with transforms),53951
Effect_Mask,9283
Effect_Brightness,12486
Effect_Crop,5153
Effect_Saturation,15545
Overall,147136
2025-09-12 17:27:43 -05:00
Jonathan Thomas
a326f541a1 Fix bug with Wave effect that can cause colored bands to appear in certain cases, and added new wave effect unit test 2025-09-12 15:07:51 -05:00
Jonathan Thomas
f2a5bfb581 Fixed AnalogTape tests and an unused Clip test line 2025-09-12 15:04:14 -05:00
Jonathan Thomas
d77f3e5338 Improving performance on Clip class:
- Replacing alpha with QPainter SetOpactity (much faster)
- Fixing get_file_extension to not crash with filepaths that do no contain a "."
- Removing render hints from apply_background (since no transform or text rendering), making compositing (faster in certain cases)
- Optionally adding SmoothPixmapTransform based on a valid transform (faster in certain cases)
- Skip Opacity for fully opaque clips
- New Clip unit tests to validate new functionality
2025-09-12 14:54:46 -05:00
Jonathan Thomas
0570ad084b Large timeline clean-up, speed-up, and fix concurrency bugs:
- make Add/Remove Effect methods thread safe
- Fix RemoveClip memory leak
- Improve performance of sorting clips by position and layer, cache some common accessors, and speed up "clip intersection" logic
- Don't resize audio container in loop - do it once
- Large refactor of looping through clips and finding top clip
- Protect ClearAllCache from empty Readers, prevent crash
- Expanded unit tests to include RemoveEffect, and test many of the changes in the commit.
2025-09-11 23:27:41 -05:00
Jonathan Thomas
1533b6ab1f Fixing SphericalEffect.cpp tests 2025-09-11 22:08:38 -05:00
Jonathan Thomas
9ca7e07b12 Adding more SphericalProjection unit tests - still a WIP 2025-09-11 20:31:24 -05:00
Jonathan Thomas
79846eacf8 Adding new Analog Tap effect: Vintage home video wobble, bleed, and grain. 2025-09-10 22:44:30 -05:00
Jonathan Thomas
a07fe18a14 Adding 5 Spherical test images (needed for unit tests) 2025-09-10 21:33:37 -05:00
Jonathan Thomas
a90b4d6c3e Improving fish eye support for SphericalProjection effect (4 types of fish eyes for input and output). Fixing lots of issues with virtual camera controls (so controls don't flip axis randomly) 2025-09-10 17:11:41 -05:00
Jonathan Thomas
c23c0d14af Fixing regression in SphericalProjection.cpp effect - causing a unit test to fail 2025-09-09 18:36:36 -05:00
Jonathan Thomas
f98da72050 Improve spherical projection effect to have better quality and separate input / output FOVs for fisheye processing. 2025-09-08 18:02:36 -05:00
Jonathan Thomas
f68d18419a Improve GetMinFrame / GetMaxFrame functions for a timeline, to be inclusive on min, and exclusive on max (trying to prevent rounding errors on last frame) 2025-09-08 15:59:29 -05:00
Jonathan Thomas
fbef1bcf04 Protect the video and audio codec name discovery flow, to prevent crash from unknown codecs. 2025-09-07 15:02:26 -05:00
Jonathan Thomas
dd62f5b49e Protecting clip GetFrame from crash due to null frame, then setting the ->number property of a null frame. 2025-09-05 14:48:35 -05:00
Jonathan Thomas
adff81fefc Fixing protobuf loading bug, preventing tracker and object detection from loading correctly. 2025-08-12 17:46:56 -05:00
Jonathan Thomas
523fb5acf9 Massive improvement to object detection sort logic, to keep IDs more stable and less jitter / ID jumping between detections. 2025-08-11 23:35:09 -05:00
Jonathan Thomas
981e18de95 Fixing logic to set ObjectDetection JSON (Detector was not updating the box values - due to ID mismatches) 2025-08-11 16:22:54 -05:00
Jonathan Thomas
4613b5239f Fixing logic to set Tracker JSON (Tracker was not updating the box values - due to ID mismatches) 2025-08-11 15:38:09 -05:00
Jonathan Thomas
e43f87552d Small refactor to assign Clip and Effect ids in base class 2025-08-11 14:52:24 -05:00
Jonathan Thomas
6cea273b77 Fix timeline cache when updating Clips with ApplyJsonDiff (old and new position) 2025-07-08 15:19:17 -05:00