3412 Commits
Author SHA1 Message Date
Jonathan Thomas cfa5dfa3cd Bumping version to 1.0.1, SO 32, requiring OpenShotAudio 1.0.1 2026-09-19 18:23:52 -05:00
Jonathan Thomas 813fcca995 Merge pull request #1101 from OpenShot/libopenshot-stability-fixes
Fix crashes when opening or closing readers and exporting raw video
2026-09-19 16:56:26 -05:00
Jonathan Thomas ce5b56a281 Merge pull request #1100 from OpenShot/linux-camera-discovery
Discover Linux camera modes through native V4L2 queries
2026-09-19 16:56:16 -05:00
Jonathan Thomas 1ee6dbe334 Fix reader lifecycle races and raw-video packet ownership 2026-09-19 15:38:20 -05:00
Jonathan Thomas 04f9ccbe83 Discover Linux camera modes through native V4L2 queries 2026-09-19 15:10:01 -05:00
Jonathan Thomas f20829fb9b Merge pull request #1099 from OpenShot/simple-logging
Replace ZeroMQ logging with direct file and console output
2026-09-15 16:14:22 -05:00
Jonathan Thomas 68018f2d49 Add missing REUSE licensing headers for logging files 2026-09-15 15:58:33 -05:00
Jonathan Thomas 961775aa3d Support legacy MinGW Python DLL lookup in logger tests 2026-09-15 15:19:40 -05:00
Jonathan Thomas 387cf5cabe Use portable temporary files in ObjectMask tests 2026-09-15 15:17:35 -05:00
Jonathan Thomas bb5b082124 Fix OpenCV runtime DLL path on Windows x64 CI 2026-09-15 14:48:22 -05:00
Jonathan Thomas 8e4bc29c30 Fix logger compatibility with older macOS and Windows test DLL loading 2026-09-15 13:18:19 -05:00
Jonathan Thomas ea75014f08 Replace ZeroMQ logging with independent file and console logging
Add severity levels and environment configuration, preserve source aliases and raw crash-log output, and remove ZeroMQ build dependencies. Document the API and cover filtering, environment precedence, concurrent writes, and Python bindings.
2026-09-14 22:46:20 -05:00
Jonathan Thomas fb9f92ba0e Merge pull request #1098 from OpenShot/fix-camera-race-open-close
Fix camera race crash during Open/Close (and audio crackling after recording)
2026-09-14 19:01:14 -05:00
Jonathan Thomas dc43f4ddb5 Keep screen recording audio aligned to capture timestamps
Position PulseAudio and WASAPI loopback samples relative to recording start, dropping stale audio and preserving gaps without delaying subsequent sound. Request smaller PulseAudio fragments and tolerate bounded timestamp jitter to avoid crackling at packet boundaries.

Add regression coverage for both capture clocks, pre-recording buffers, late packets, gaps, queue overflow, reset, and sample continuity.
2026-09-14 16:11:43 -05:00
Jonathan Thomas 7389caf466 Prevent camera cleanup from racing FFmpeg device initialization
Serialize the FFmpeg capture Open path with GetFrame and Close using the
existing recursive mutex. Close still signals cancellation before waiting,
but cannot free a context while avformat_open_input or decoder setup uses it.
Clean up partially initialized resources on failure or cancellation.

Add a hardware-independent regression test that pauses a V4L2 open inside
FFmpeg and requests Close from another thread. It reproduces SIGSEGV with
the original implementation and passes with the fix, including 20 repeated
runs. All 15 camera/screen capture test cases pass (78 assertions).

Real-device AppImage validation remains necessary after rebuilding.
2026-09-14 15:36:46 -05:00
Jonathan Thomas 36e822f48b Merge pull request #1097 from OpenShot/sentry-sep-12-2026
Fix use-after-free when deleting timeline-owned clips
2026-09-13 01:18:14 -05:00
Jonathan Thomas 70322e152f Fix a crash when deleting timeline clips
Sentry-related fix:
- OPENSHOT-BV93 (confirmed deletion path): Read a clip's position and duration
  before removing it, since removal can immediately free the timeline-owned clip.

Additional coverage:
- Verify that deletion invalidates the former clip range without clearing
  unrelated cached frames.
- Verify that repeating an already-completed deletion is harmless.

Validation: 518 native tests pass, with two unavailable VAAPI hardware tests
explicitly skipped. The deletion regression covers seven assertions. Valgrind
reported four invalid reads before the fix and zero errors after it.
The paired openshot-qt branch passes 598 Python tests, and Jonathan's manual
editing tests were reported stable.

This summary records the fix in the preceding commit. BV93 also contains other
crash stacks, so this does not claim the entire Sentry issue group is resolved.
2026-09-12 22:55:05 -05:00
Jonathan Thomas 1dfc3e3d2c Read clip bounds before deleting timeline-owned clips
RemoveClip frees JSON-owned clips. Cache invalidation in apply_json_to_clips previously read their position and duration after deletion. Capture bounds first.

Add a JSON insert/delete regression covering cache invalidation, unaffected frames, and repeated deletes. Valgrind reproduces four invalid reads against the installed pre-fix library and reports zero with this change. Native suite: 518 passed, two VAAPI prerequisite skips. This addresses a concrete defect in the BV93 timeline path, not every crash grouped under BV93.
2026-09-12 22:02:59 -05:00
Jonathan Thomas 374b66a234 Merge pull request #1086 from Chzrz89/fix/audiolocation-cstdint
AudioLocation.h: add missing <cstdint> include
2026-09-10 19:10:14 -05:00
Jonathan Thomas 772e679435 Merge pull request #1095 from OpenShot/ffmpeg-prefix-mac
Use the custom FFmpeg build for macOS CI (remove Tesseract library)
2026-09-09 21:11:09 -05:00
Jonathan Thomas a8a81e8d07 Use the custom FFmpeg build for macOS CI
Select /usr/local/openshot/ffmpeg-4.4, built without Tesseract, for package discovery and runtime library loading. Refresh cached FFmpeg discovery so reused build directories do not retain Homebrew library paths.

Keep the existing Xcode, SDK, deployment target, and OpenCV settings. Validated YAML parsing and git diff --check; the Mac pipeline still needs to run.
2026-09-09 20:03:44 -05:00
Jonathan Thomas ba35b438be Merge pull request #1094 from OpenShot/sentry-fix-2026-09-05
Sentry fixes related to 4.0.0 release (libopenshot)
2026-09-05 15:10:11 -05:00
Jonathan Thomas 375f72e7a8 Summarize fixes from top 10 OpenShot 4.0.0 Sentry reports
This branch addresses two of the top 10 Sentry reports ranked by affected users for openshot@4.0.0, first seen on or after 2026-08-30. Together with openshot-qt, this batch addresses seven reports. This summary commit documents the fixes in the preceding commits without rewriting their history.

- FYCZ: Enumerate JUCE audio device types before selecting the requested recording backend, preventing DirectSound input names from being passed to the default WASAPI backend.
- FYCC: Discard buffered decoder output during FFmpegReader shutdown instead of decoding and allocating more frames; retain codec and resource cleanup, with close/reopen regression coverage.
- Probe VAAPI device initialization using the linked FFmpeg library before hardware tests; report unavailable prerequisites as CTest skips without weakening decode assertions on healthy systems.
- Validation: Full suite completed with 517 passed, two VAAPI prerequisite skips, and zero failures (519 total); all seven AudioRecorder cases passed.
- Scope: This does not claim to fix general playback memory exhaustion; Windows recording hardware validation remains outstanding.
- FY5H, FYP5, and FYMJ remain outside the combined fix batch.
2026-09-05 14:35:14 -05:00
Jonathan Thomas 09c53893d3 Probe VAAPI initialization before running hardware decode tests
A render node and compiled FFmpeg support do not guarantee an operational VAAPI driver. Probe the exact adapter with the linked FFmpeg library and report missing prerequisites as skipped in CTest. Full suite: 517 passed, 2 skipped, 0 failed.
2026-09-05 14:15:03 -05:00
Jonathan Thomas fe4bb33b4f Discard buffered decoder output when closing FFmpeg readers
Addresses OPENSHOT-FYCC: avoid allocating discarded image frames during shutdown. Add a pending-packet close and reopen regression.
2026-09-05 14:07:53 -05:00