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