61 Commits
Author SHA1 Message Date
Jonathan Thomas f92622179f Add missing REUSE copyright and license metadata 2026-09-26 21:29:47 -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
Jonathan Thomas 68018f2d49 Add missing REUSE licensing headers for logging files 2026-09-15 15:58:33 -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 5f49df808d Add Wayland screen capture backend 2026-06-16 23:00:11 -05:00
Jonathan Thomas 867473ab59 Merge remote-tracking branch 'origin/develop' into qt6-support 2026-03-12 23:03:07 -05:00
Jonathan Thomas d0ef59616f Improving Hardware decode handling, especially on failure to get a decoded frame from the GPU, to safely fallback to software decode in those cases, so we don't end up with a black blank frame. This should be compatible with all hardware decoding, but I tested this only on VAAPI and AMD Radeon GPU on Ubuntu 24.04. Also updating the HW-ACCEL.md file with updated notes, and tried to add more detail about how decode and decode fallback works. 2026-03-10 23:34:21 -05:00
Jonathan Thomas a26ed32424 Adding missing packages to our linux install instructions doc:
python3-zmq python3-pyqt5.qtwebengine
2025-12-22 13:44:54 -06:00
Jonathan Thomas bfca7ee8ad Adding Qt6 detection and compatibility, without breaking Qt5. -DUSE_QT6=AUTO|ON|OFF (default: AUTO; prefers Qt6 when available and CMake ≥3.16, ON forces Qt6, OFF forces Qt5). Also, a few version specific changes for API changes on Qt6, but it appears to work well. 2025-12-17 22:59:25 -06:00
Jonathan Thomas 4e517a6d96 Updating RESVG windows build instructions, and removing unit tests from 32-bit windows 2024-02-17 15:58:40 -06:00
Ashot Janibekyan 1fc4d6abac fix package name per https://packages.msys2.org/package/mingw-w64-x86_64-python3-PyOpenGL 2023-02-19 05:13:30 +04:00
Jonathan Thomas 625581725e Restoring gitlab-ci yml for normal build servers, updating some Windows libopenshot docs 2022-11-14 13:23:58 -06:00
Jonathan Thomas e598d82e83 Revert "fix cmake instructions using '-d' argument in MacOs" 2021-11-10 22:50:17 -06:00
Jonathan Thomas 9c11729664 Merge pull request #673 from wasimafser/develop
fix cmake instructions using '-d' argument in MacOs
2021-11-10 22:08:57 -06:00
Jonathan Thomas 54c2a800eb Updating docs for babl INSTALL 2021-10-28 18:08:47 -05:00
Frank Dana 59138ea3e4 Adopt license management via Reuse project/tool (#711)
* reuse-managed license/copyright headers

reuse is a tool for compliance with the REUSE recommendations. See
<https://reuse.software/> for more information, and
<https://reuse.readthedocs.io/> for the online documentation.

* Set jsoncpp license
* Add MIT license for Decklink sources
* Explicitly license examples/
  - Add headers to source files
  - Change blanket licensing in .reuse/dep5 to only cover binary media
  - Import CC-BY-3.0 license and assign to sintel_trailer
2021-10-16 01:26:26 -04:00
Wasim Afser f443c99194 merge suggestions from ferdnyc
* change code snippets to have a copy-paste friendly syntax
* use clang++/clang for building libopenshot
* use location provided by brew using --cellar
2021-05-16 10:14:27 +05:30
Wasim Afser 4133f675de fix cmake instructions using '-d' argument 2021-05-14 17:38:03 +05:30
FeRD (Frank Dana) 023f5df512 doc/HW-ACCEL: List 3.4 as minimum FFmpeg version 2020-02-10 01:59:25 -05:00
FeRD (Frank Dana) fc76462292 Update table in HW-ACCEL.md for Doxygen
By using actual Unicode characters for the various ✔️ and ❌ marks
in the table, Doxygen will format it properly.
Also:
- Changed to superscripted numerals, for the various callouts
- Reformatted notes into a corresponding ordered list
- Added invisible spaces after the marks without a callout, to
  balance centering
- Added center-alignment markers to appropriate table columns
2019-08-05 20:19:50 -04:00
FeRD (Frank Dana) 7319201e37 Doygen: Include doc/*.md in docs
Also include the documentation MarkDown pages in the Doxygen docs.
These will show up as Related Pages in the interface.

* The formatting of `INSTALL-*.md` had to be changed some:
  - Doxygen doesn't support headings in bulleted lists (lines starting
    with `* ###`) -- I'm not even sure that's legal markdown. They were
    changed to just level 3 headings (lines starting with `###`).
  - ALL Windows paths in `INSTALL-WINDOWS.md` were wrapped in backticks,
    to prevent Doxygen parsing them as markup commands.
  - Level 1 headings were added to the top of the three install docs,
    giving them the title "Building libopenshot for ___(OS)___".
    Otherwise all three pages were titled "Getting Started".

* Separately, the table at the top of `HW-ACCEL.md` does not
  translate well to Doxygen. It will need further polishing. But the
  docs are all quite readable now.
2019-06-12 22:44:05 -04:00
Jonathan Thomas 4a0f0fa1c6 Updating hwaccel table to use emojis (instead of words) take 3 2019-05-02 12:04:51 -05:00
Jonathan Thomas 10ef8838b1 Updating hwaccel table to use emojis (instead of words) 2019-05-02 12:03:58 -05:00
Jonathan Thomas da07ab250b Updating hwaccel table to use emojis (instead of words) 2019-05-02 12:02:56 -05:00
Jonathan Thomas 9324b691e9 Improving HW-ACCEL documentation 2019-04-30 17:11:04 -05:00