3122 Commits

Author SHA1 Message Date
Jonathan Thomas
0932af2c1e Fixing race condition on unit test for AnalogTape (when comparing frame's getting modified) 2025-10-11 16:45:43 -05:00
Jonathan Thomas
7e29fc0935 Improving audio directionality, with new function: SetAudioDirection(), so we can safely flip audio buffer direction when needed (i.e. time curves, reversed time). Also adding a new SetDirectionHint function to FrameMapper class - so our Clip class can inform the FrameMapper of its direction at any given moment. Also, clear resampler when changing directions inside a Time curve (since the audio buffer will be flipped - the resampler internal cache must be cleared). 2025-10-11 16:29:11 -05:00
Jonathan Thomas
fd2952752d Improving audio directionality, with new function: SetAudioDirection(), so we can safely flip audio buffer direction when needed (i.e. time curves, reversed time). Also adding a new SetDirectionHint function to FrameMapper class - so our Clip class can inform the FrameMapper of its direction at any given moment. Also, clear resampler when changing directions inside a Time curve (since the audio buffer will be flipped - the resampler internal cache must be cleared). 2025-10-11 13:43:15 -05:00
Jonathan Thomas
9a262882de A few small refactors of clip unit tests 2025-09-30 23:09:32 -05:00
Jonathan Thomas
4cef4da9ef Fixing a bug in Keyframe that caused the GetDelta() function to return 0.0 early - which was breaking reversed time curves (zero'ing out the first frame or two) 2025-09-26 18:35:29 -05:00
Jonathan Thomas
0c15c1692e Adding new reversed time curve unit test, to verify 230,000 samples are actually reversed over the length of the clip without skipping or missing a single one. 2025-09-26 18:34:33 -05:00
Jonathan Thomas
c165eca5d8 Improving AudioWaveformer to be able to correctly generate waveforms for time-curved clips that have a modified duration/video_length (i.e. repeated clips, slowled down clips, etc...). Adding a new ReaderBase.h VideoLength() that can be overridden in Clip.cpp when time curves are involved. 2025-09-22 12:28:12 -05:00
Jonathan Thomas
01a4d9f6ef Fixing regression/bug in video cache thread - to correctly reset cached_frame_count, and make isReady() return correctly. The result of this bug was audio starting playback sooner than video - and some general jank around video caching. 2025-09-15 18:20:05 -05:00
Jonathan Thomas
3723fbd99f Fixing regression on Mac and Windows builds for Clip blend modes (color tolerances) 2025-09-12 23:00:22 -05: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
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