416 Commits

Author SHA1 Message Date
Jean-Baptiste Mardelle
974b2e66be Merge branch 'release/25.12' 2025-11-14 08:37:47 +01:00
Jean-Baptiste Mardelle
fa83c140a1 Bump KDDockWidgets requirement to 2.3.0 as 2.4.0 is still not widely available 2025-11-13 20:25:16 +01:00
Julius Künzel
74868a3948 Require at least MLT version 7.32.0
We recommend 7.34.1, but can't enforce it at the moment because the
update did not reach our CI yet
2025-11-13 20:24:56 +01:00
Farid Abdelnour
90f0c74892 Update KDDockWidgets min version
With the new release we can now fix the south tabs issue.
2025-11-11 14:48:20 +01:00
Albert Astals Cid
164fa609c7 GIT_SILENT Upgrade release service version to 26.03.70. 2025-11-06 18:09:35 +01:00
Albert Astals Cid
5ce39c95fd GIT_SILENT Upgrade release service version to 25.11.80. 2025-11-06 17:20:25 +01:00
Jean-Baptiste Mardelle
dd30cbee92 Switch to KDDockWidgets library for improved docking
At this point, this implementation is only a way to evaluate if KDDockWidgets fits our workflow.
Although in the initial testing it looks nice, we need to ensure our implementation is solid enough to cover all use cases.

**Blocker**
- [x] when a detached widget is focused, keyboard shortcuts don't work

**Currently works**
- [x] saving and restoring the current layout
- [x] saving the layout in the project file
- [x] View menu to show/hide individual widgets
- [x] Undock/redock all widgets including timeline

**To improve**
- [x] Hide / Show title bars sometimes creates 2 titlebars in undocked widgets
- [x] On re-opening, in some cases undocked widgets are hidden
- [ ] Undocked widgets position is not properly restored on re-opening: this is a [Wayland limitation](https://github.com/KDAB/KDDockWidgets/issues/662)

**To fix**
- [x] Docking widget to tab it on a QtQuickWidget with qml like the monitors or the timeline does not work (see https://github.com/KDAB/KDDockWidgets/issues/658)
2025-10-31 18:34:27 +01:00
Darby Johnston
0fe574372e Disable OTIO metadata for FreeBSD 2025-10-24 15:42:20 +00:00
Darby Johnston
6758fe6fd4 Restore OTIO metadata functionality on macOS 2025-10-24 15:42:20 +00:00
Jean-Baptiste Mardelle
a22dc1c3ab Add Appium tests
First test for UI testing. Currently just tests adding a color clip in bin, selecting all and checking there are 2 selected clips in bin
2025-10-12 20:02:33 +02:00
Julius Künzel
93f5a18e61 Don't fetch OTIO by default (exeception for macOS and FreeBSD)
Long term we should remove this option because distros should ship
OpenTimelineIO as a system package
2025-10-06 19:13:49 +00:00
Jean-Baptiste Mardelle
82ddf32211 Add git revision in about components and debug info
This adds a new "Kdenlive" component in the About Dialog showing the git revision and package type.
It also makes it available in the debug info.

![image](/uploads/899eecb53f86a8e9284fa430dff10224/image.png){width=540 height=528}
2025-10-04 12:33:53 +02:00
Jean-Baptiste Mardelle
cc8aa7cf72 Add QtMultimedia preview to media browser
Testing if this also works on Windows

![image](/uploads/02e76f74c556ccfd086b9bda432a2485/image.png){width=730 height=507}
2025-09-17 13:06:43 +02:00
Julius Künzel
7b81cff608 Use find_package for libav to fix
This is needed because with pkg-config the linking of libav or better its depdencies like zlib does not work properly with MSVC

The FindFFmpeg.cmake file is assembled from kfilemetadata and krita. It is currently also in review to be added to extra-cmake-modules, however until this is accepted and we have a dependency on that ECM version we need a copy of the file in our code base
2025-08-07 12:08:25 +00:00
Albert Astals Cid
bf29e5ed31 GIT_SILENT Upgrade release service version to 25.11.70. 2025-07-05 11:42:12 +02:00
Jean-Baptiste Mardelle
1df1e4c955 Add action to expand/collapse items (effects, folders) and navigate effects with arrows
BUG: 470987
BUG: 497834
FIXED-IN: 25.08.0
2025-06-03 17:21:23 +02:00
Jean-Baptiste Mardelle
e5765dce6b Merge branch 'release/25.04' 2025-04-04 12:58:00 +02:00
Jean-Baptiste Mardelle
9476d8ea9e Fix effect stack model crashes and undo move 2025-04-04 12:55:34 +02:00
Julius Künzel
1af870746d Use new KLocalizedQmlContext 2025-03-28 12:01:54 +00:00
Julius Künzel
b60f17d816 Port to qml module 2025-03-28 12:01:54 +00:00
Steve Cossette
9b7588355c Fix simple spelling mistake 2025-03-27 11:50:16 +00:00
Albert Astals Cid
de241b83e3 GIT_SILENT Upgrade release service version to 25.03.90. 2025-03-27 10:52:25 +01:00
Albert Astals Cid
6c7c73914c GIT_SILENT Upgrade release service version to 25.07.70. 2025-03-08 19:05:05 +01:00
Albert Astals Cid
f8ccdfe0ca GIT_SILENT Upgrade release service version to 25.03.80. 2025-03-08 18:21:25 +01:00
Julius Künzel
a03de7916f Work around for header oddity with OTIO and Imath 2025-03-08 12:25:50 +00:00
Julius Künzel
59503e1274 Fix OpenTimelineIO target names 2025-03-08 12:25:50 +00:00
Darby Johnston
213a3d8054 Move OTIO dependency into a subdirectory
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Darby Johnston
ab2790d77a CMake fixes
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Darby Johnston
d964d0dda2 Add FETCH_OTIO option
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Darby Johnston
afc0b9f83a Try using kde_target_enable_exceptions() for OTIO
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Darby Johnston
fe43be77b9 Use FetchContent for OTIO
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Darby Johnston
ad40f9372b Initial check-in
Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
2025-03-06 08:20:49 +00:00
Étienne André
32da1cef78 audio waveform (audiolevels) rewrite
# Rewrite Audio Waveform generation + drawing

Addresses #1888.

This work is done as part of contract work with KDE e.V.

# Summary
## Waveform generation performance improvements

The original MLT method has been improved and a faster libav* -based one is used when possible. The original method used the "audiolevel" MLT filter, which only supported 1 point per frame and was quite slow.

Measured time taken for audio levels generation in release builds on my machine (AMD Ryzen 7 3700U with SSD).
 - _original MLT_ is before these changes, with one point per frame;
 - _new MLT_ is the improved method, with 5 points per frame;
 - _new libav_ is the method using libav directly, with 5 points per frame.

| file                                    | new libav (s) | new MLT (s) | original MLT (s) |
|-----------------------------------------|---------------|-------------|------------------|
| 1h 20min of stereo uncompressed WAV     | 2.477         | 5.187       | 8.131            |
| 1h 20min of stereo max-compressed FLAC  | 6.818         | 9.03        | 12.513           |
| 26min of OPUS audio in a MKV video file | 4.774         | 6.86        | 8.614            |

## Better waveform resolution
This merge requests brings better waveform temporal resolution (1 -> N points per frame) and better vertical resolution (256 -> 65,535 levels).

**Before changes (KDenlive 24.08.3):**

![before](/uploads/c11313b83005508c002550db1c71f45d/before.png)

**After changes:**

![after](/uploads/6e1c12bb9c14875f1dfbba4ced503900/after.png)

## Fix incorrect waveform drawing function
When drawing the waveform, the current implementation samples the audio levels at points corresponding to the pixels to draw. This is incorrect and results in distorted waveforms, missing peaks, and visual artifacts. The new implementations uses a slower but correct max-based resampling method.


**Before changes (KDenlive 24.08.3)**

![ref-before](/uploads/d40c5b0467fc12dd4326cea825639097/ref-before.png)

**After changes:**

![ref-after](/uploads/c7218be75a820b730fa7339d2080bfdb/ref-after.png)

**Reference (audacity)**

![ref-audacity](/uploads/b0ff3407954e5493a604ded56fcde564/ref-audacity.png)

**Stretching a waveform, before changes:**
![stretch-before](/uploads/465ae44c0a4afafa5f493ccda738a1dc/stretch-before.mp4)

**Stretching a waveform, after changes:**

![stretch-after](/uploads/fe86a61411834951384c87fc9c37f690/stretch-after.mp4)


# Detailed changes
- Change audiolevels sample format to uint16_t for increased precision
- Add support for N points per frame, currently set to 5
- projectclip.cpp:
  - Use TimelineWaveform to render the audio clip thumbnails
  - do not store audiolevels in object
  - generate larger thumbnails
- Change audio max property key from "kdenlive:audio_max%1" to "_kdenlive:audio_max%1"
- audiolevelstask.cpp: major refactor
  - Replace audiolevels PNG (de)serializer with a dumber one
  - add fast libav-based generation
  - simplify and improve MLT-based generation
    - disable caching
    - disable resampling
    - remove useless audiochannels filter
    - remove redundant stream selection
    - replace audiolevel filter with direct levels calculation
    - add generic computePeaks() function
- kdenliveclipmonitor.qml: fix incorrect clip duration passed to waveform renderer
- timelineitems.cpp: separated items into their own source/header files (timelineplayhead, timelinerecwaveform, timelinetriangle, timelinewaveform)
- timelinewaveform.cpp: simplify and improve waveform rendering
  - add support for N points per frame
  - add support for fractional in and outpoints
  - replace incorrect sampling drawing function with correct max-based one
  - remove unused properties
  - add even and odd color properties
- Add tests
  - Add tests for computePeaks and both generation methods
  - Add audio tests files + script to generate them
2025-01-11 14:03:39 +00:00
Julius Künzel
964713c9ea Merge branch 'release/24.12' 2024-11-14 20:20:20 +01:00
Julius Künzel
f7221b30f9 GIT_SILENT Update my email in copyright etc. 2024-11-14 20:19:15 +01:00
Albert Astals Cid
1961f4b6ea GIT_SILENT Upgrade release service version to 25.03.70. 2024-11-08 19:20:24 +01:00
Albert Astals Cid
1f3c515dba GIT_SILENT Upgrade release service version to 24.11.80. 2024-11-08 18:48:06 +01:00
Jean-Baptiste Mardelle
cfc041e076 Bump MLT dependency to 7.28 2024-11-06 18:50:16 +01:00
Jean-Baptiste Mardelle
32c02acab4 Bump KF dependency to 6.3 2024-11-06 12:12:28 +00:00
Laurent Montel
250504fe7b Don't include quiet packages in feature_summary 2024-11-05 07:45:07 +01:00
Julius Künzel
9ac7860612 Drop support for Qt5 2024-08-29 10:20:17 +00:00
Julius Künzel
ec6f0dcd4d Minor fixes for MSVC 2024-08-16 07:46:54 +00:00
Albert Astals Cid
8c7c5acbf8 GIT_SILENT Upgrade release service version to 24.11.70. 2024-07-21 12:37:23 +02:00
Julius Künzel
241e28a725 Rename CMake option for DBus from NODBUS to USE_DBUS
This is consistent with the naming used for other KDE Software. Also choose a sensible default for this option (ON on Linux and BSD, OFF
otherwise)
2024-06-14 07:08:12 +00:00
Julius Künzel
21d9366f67 GIT_SILENT Remove dead code and unused files
Related to 4ae5676407
2024-05-25 22:03:48 +02:00
Julius Künzel
4ae5676407 For Qt5 require at least KF 5.115.0, for Qt6 KF 6.0.0
In preparation of dropping Qt5 support
2024-05-22 17:25:49 +00:00
Albert Astals Cid
fb7d04df7a GIT_SILENT Upgrade release service version to 24.07.70. 2024-04-21 12:13:58 +02:00
Julius Künzel
7431d8d2d6 Require at least MLT 7.22.0 2024-03-30 11:39:40 +00:00
Julius Künzel
2b4110d0f2 GIT_SILENT Disable spamy variadic-macros warning 2024-03-25 00:09:04 +01:00
Jean-Baptiste Mardelle
5768659e20 Merge branch 'release/24.02' 2024-03-24 06:51:02 +01:00