3412 Commits
Author SHA1 Message Date
Jonathan Thomas 983c847ce7 Merge pull request #1103 from OpenShot/improve-preview-responsiveness
Improve preview responsiveness and audio playback stability
2026-10-06 10:44:09 -05:00
Jonathan Thomas a369b9f94b Match project headers in new playback files 2026-10-04 22:23:51 -05:00
Jonathan Thomas 5f0c9c5302 Resolve static analysis findings in playback tests and benchmarks 2026-10-04 20:11:52 -05:00
Jonathan Thomas 80612eca7f Fix REUSE copyright headers and remove planning document 2026-10-04 20:07:34 -05:00
Jonathan Thomas ac24a63c14 Keep daily-build SO version unchanged until release 2026-10-04 19:58:47 -05:00
Jonathan Thomas 2a8cb9e539 Record pristine gate-honoring preroll comparison and final Memcheck 2026-10-04 17:54:11 -05:00
Jonathan Thomas 4fd8793eb4 Record preroll verification and measure gate-honoring work tails 2026-10-04 17:49:28 -05:00
Jonathan Thomas 38c8a77db9 Repair evicted preroll holes without discarding cached suffixes 2026-10-04 17:46:41 -05:00
Jonathan Thomas f97a940786 Adapt preview preroll to frame cost with bounded optional buffering 2026-10-04 17:41:56 -05:00
Jonathan Thomas 895f78f567 Bump native ABI for playback and timeline layout changes 2026-10-04 17:34:16 -05:00
Jonathan Thomas 9307278e0e Reset preview ownership on reader handoff and wake stopped render workers 2026-10-04 17:25:49 -05:00
Jonathan Thomas 76c9214d8f Keep audio source fixtures independent of playback cache readiness 2026-10-04 17:24:49 -05:00
Jonathan Thomas 8c3abaffa8 Cancel obsolete cache fills cooperatively and drain reader handoffs 2026-10-04 17:20:59 -05:00
Jonathan Thomas 69a151cef2 Exercise public player audio restarts without an active device 2026-10-04 17:20:46 -05:00
Jonathan Thomas 6936d5b8cd Retain audio source safely across stopped transport restarts 2026-10-04 17:20:46 -05:00
Jonathan Thomas 46a4f34069 Discard audio decoded across seeks and playback state changes 2026-10-04 17:20:46 -05:00
Jonathan Thomas 0fbacca9d5 Merge pull request #1102 from OpenShot/release-20260919
Release 1.0.1 (2026-09-19)
2026-09-27 18:44:39 -05:00
Jonathan Thomas 1c46200eae Preserve host SIGPIPE handling during crash handler initialization
Leave SIGPIPE disposition unchanged so Python can handle a disconnected output pipe as EPIPE instead of terminating the editor. Add a native regression test that verifies the ignored disposition and a write to a closed pipe.

Validation: 50 CrashHandler, Logger, and Timeline tests passed. A Python subprocess exits with signal 13 using the installed library and survives the same closed-pipe write using the rebuilt library.
v1.0.1
2026-09-27 16:04:44 -05:00
Jonathan Thomas 1f54aa1279 Preserve imported clip location coordinate conventions
Persist canvas or geometry location units per clip so legacy animation is evaluated without rewriting keyframes. Keep auto behavior for new clips and add historical render and JSON regression coverage.
2026-09-27 01:45:30 -05:00
Jonathan Thomas f92622179f Add missing REUSE copyright and license metadata 2026-09-26 21:29:47 -05:00
Jonathan Thomas 54ada2010d Fix Codacy findings in Timeline tests 2026-09-26 21:23:40 -05:00
Jonathan Thomas a2e1297aa4 Fix preview alignment, export timestamps, and capture color range
Align reduced preview dimensions after aspect fitting while preserving native output sizes. Pad export scaler rows and copy planes by stride, including compatibility handling for legacy GIF palettes.

Preserve delayed audio encoder timestamps, skip unavailable packets, and use actual resampler output counts. Share JPEG-range normalization with live capture and add sizing, export, audio, GIF, and color regression tests.
2026-09-25 19:43:06 -05:00
Jonathan Thomas 03b66ebe92 Fix transition routing and stacking for clips with tied start times
Preserve clip order for equal layer and position values, and route video and audio transitions according to compositing order. Cover fade directions, rounded start frames, audio gains, and JSON order preservation.
2026-09-25 12:10:59 -05:00
Jonathan Thomas e9bc7831b3 Fix Qt player frame handoff and seek races 2026-09-24 19:23:50 -05:00
Jonathan Thomas b590640fba Speed up JSON keyframe updates and add focused transform benchmarks
Interactive transform edits repeatedly replace growing X/Y keyframe curves.
Applying each update copied the same JSON data through several layers and
rebuilt keyframe storage from scratch, making edits increasingly expensive
as an animation accumulated points.

Move JSON values that are already owned by the loader through the existing
by-value interfaces instead of copying them again. Clip and effect loading
now share a base-field helper that reads common fields without copying all
of the derived animation data. Parsed SetJson input and nested color/point
values use the same ownership approach.

Keep allocated keyframe capacity across replacements and append sorted
points directly. Unordered input and duplicate frames still use AddPoint,
preserving ordering and replacement behavior. Existing public signatures,
virtual method layout, JSON format, and timeline locking remain unchanged.

Add two optional benchmark cases for a 720p/24fps image clip with 0 or 1,000
existing keyframes per axis. Each performs 100 successive X/Y transform
updates through Timeline::ApplyJsonDiff and reports the median of three
trials. Input preparation stays outside the measurement, and final point
counts and values are checked so a skipped update cannot look faster.
These cases belong to the separate benchmark executable, not normal CTest
runs. Report Ops/s because an operation can now be a JSON edit or a frame.

Document the reproduction commands and local before/after measurements.
The measured cost per update fell from 0.82 to 0.33 ms for the initially
empty curves and from 17.99 to 6.73 ms for curves starting at 1,000 points.
These isolate native JSON application; they do not measure GUI rendering
or guarantee the same performance on other machines.

Add regression coverage for caller-owned JSON, sorted and unordered input,
duplicate and fractional frames, interpolation handles, large curve
replacement, multiple actions in one diff, unchanged properties, and cache
invalidation.

Validation: rebuilt the library, benchmark, and affected test executables;
all 197 KeyFrame, Timeline, Clip, Point, Color, ColorGrade, Mask, and
EffectMask tests passed in 6.2 seconds. Both remaining transform benchmark
cases also completed successfully. The slower 5,000-point benchmark case
is intentionally omitted.
2026-09-20 00:15:23 -05:00