Jonathan Thomas
355bea44d9
Fixing small regression on initial rotation keyframes from our previous commit.
2025-11-18 13:43:40 -06:00
Jonathan Thomas
a7dfc596ca
Fixing regression in Clip::init_reader_rotation() function, which could sometimes override scale_x and scale_y, when a rotation keyframe contained more than 1 point.
2025-11-13 16:18:18 -06:00
Jonathan Thomas
8d72b4b64b
Updating godot git hash
2025-11-13 16:17:07 -06:00
Jonathan Thomas
5596344575
Fixing AudioWaveformer::ExtractSamples to pause temporarily when a clip's reader is closed, and resume extracting when it's open again. This prevents a very common crash / bug when generating waveforms for longer audio clips and continuing to make chagnes on the timeline (which closes all clips temporarily - interrupting the waveform extracting).
2025-11-06 14:51:57 -06:00
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