Compare commits

..

896 Commits

Author SHA1 Message Date
Andreas Sturmlechner
173ce96285 Port to QtWebEngineWidgets
Fixes https://invent.kde.org/multimedia/kdenlive/-/issues/775

Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
2020-11-05 09:47:24 +00:00
l10n daemon script
ddae45aebb GIT_SILENT made messages (after extraction) 2020-11-05 02:24:30 +01:00
Jean-Baptiste Mardelle
94303d6531 Fix audio mix same track transition crossfade
Related to #796
2020-11-03 20:59:06 +01:00
Jean-Baptiste Mardelle
136ad56966 Fix on monitor mess and possible crash with several transform effects 2020-11-03 17:10:24 +01:00
l10n daemon script
15045192d5 GIT_SILENT made messages (after extraction) 2020-11-01 02:24:00 +01:00
Christoph Feck
31a9b0424e GIT_SILENT Update Appstream for new release
(cherry picked from commit 3884687b86)
2020-10-31 18:14:39 +01:00
l10n daemon script
a1fd4d7330 GIT_SILENT made messages (after extraction) 2020-10-30 02:28:50 +01:00
l10n daemon script
9de5447253 GIT_SILENT made messages (after extraction) 2020-10-29 02:28:20 +01:00
l10n daemon script
daf3ee8c4a GIT_SILENT made messages (after extraction) 2020-10-28 02:24:57 +01:00
Jean-Baptiste Mardelle
bc69822889 When moving a clip outside a mix, correctly resize the clip.
Relate to #796
2020-10-27 14:23:01 +01:00
Jean-Baptiste Mardelle
f6c87416c4 Fix audio thumbs not reloaded on profile fps changed 2020-10-27 14:09:44 +01:00
l10n daemon script
d84dacb54f GIT_SILENT made messages (after extraction) 2020-10-27 02:24:20 +01:00
Jean-Baptiste Mardelle
735bf84b17 Fix some compile warnings 2020-10-23 23:38:06 +02:00
Jean-Baptiste Mardelle
8f43cbb7c7 Try to improve default OpenGL format for monitor view 2020-10-23 23:37:36 +02:00
Jean-Baptiste Mardelle
5dae30174d Fix on monitor displayed fps with high fps values 2020-10-23 23:34:51 +02:00
Jean-Baptiste Mardelle
93a40647ad Remove icons that are included in Breeze icon theme by default 2020-10-23 21:12:07 +02:00
Jean-Baptiste Mardelle
0748c3c4a3 Merge branch 'sametrack'
implement #796
2020-10-23 12:54:05 +02:00
Jean-Baptiste Mardelle
0e57fe1e8f Merge branch 'lintondawson/kdenlive-multiple-track-deletion' 2020-10-23 12:04:19 +02:00
Pushkar Kukde
c92da2590d Fixed ui dsiplay box and undo redo stack 2020-10-23 09:54:27 +00:00
Pushkar Kukde
970df3918a Fixed indentation 2020-10-23 09:54:27 +00:00
Pushkar Kukde
708592573f Removed unnecessary code 2020-10-23 09:54:27 +00:00
Pushkar Kukde
791e2d060b Added multiple track deletion feature 2020-10-23 09:54:27 +00:00
Jean-Baptiste Mardelle
3af486f289 Correctly reload mix params on project opening 2020-10-23 11:00:47 +02:00
Jean-Baptiste Mardelle
d8f08ed37c Ensure mix parenting is updated in case of clip cut 2020-10-23 10:28:58 +02:00
Jean-Baptiste Mardelle
20311cb59d Add new option to apply bin tag color to timeline clips, enabled by default 2020-10-23 09:49:31 +02:00
Jean-Baptiste Mardelle
65cba8aa09 small update in mix look 2020-10-22 22:43:47 +02:00
Jean-Baptiste Mardelle
2f9edda61c Ensure timeline ruler is correctly updated on profile switch.
Related to #819
2020-10-22 21:08:19 +02:00
Jean-Baptiste Mardelle
f8cd54b2e4 Add missing include for some frameworks versions 2020-10-22 19:40:45 +02:00
Jean-Baptiste Mardelle
9c9c327bdb Move audio max level to a job (was causing ui hang on project opening)
Remove audio balance filter in projects with > 2 audio channels
2020-10-22 19:37:15 +02:00
Jean-Baptiste Mardelle
a12ba6dfa4 When switching project profile and there is only 1 clip in timeline, update the timeline clip duration accordingly to profile change.
Fixes #819
2020-10-22 10:25:37 +02:00
Jean-Baptiste Mardelle
9b615fca5e Show tooltip for clip fade corner hotspot 2020-10-22 08:38:24 +02:00
Jean-Baptiste Mardelle
453cf95a62 Remove deprecated KF5 call 2020-10-22 08:38:00 +02:00
Jean-Baptiste Mardelle
978b4225ae Fix compilation 2020-10-22 00:05:34 +02:00
Jean-Baptiste Mardelle
9e077005c7 Project archiving: check after each file if archiving works, add option to use zip instead of tar.gz
CCBUG: 421565
2020-10-22 00:01:35 +02:00
Jean-Baptiste Mardelle
c18bf45a70 Fix opening project files with missing version number
CCBUG: 420494
2020-10-21 21:17:47 +02:00
Jean-Baptiste Mardelle
76b9492d05 Don't enforce stereo output on playback
Related to #754
2020-10-20 20:46:22 +02:00
Jean-Baptiste Mardelle
356cb41704 Refactor rendering timecode overlay feature.
Fixes #815
2020-10-20 18:50:12 +02:00
Jean-Baptiste Mardelle
b65689cb15 Fix duplicated audio from previous commit.
Related to #816
2020-10-20 18:00:20 +02:00
Jean-Baptiste Mardelle
8e3163b260 Fix playlist clips have no audio regression.
Fixes #816
2020-10-20 17:39:31 +02:00
Jean-Baptiste Mardelle
ed5e0ed3dc Fix keyframeable effect params left enabled when selecting a clip, leading to possible crash 2020-10-20 16:36:35 +02:00
Jean-Baptiste Mardelle
3986e1b48e Don't allow removing the only keyframe in an effect (was possible from the on monitor toolbar and crashing) 2020-10-19 11:16:43 +02:00
Jean-Baptiste Mardelle
aaa02ac8d0 Add build status to README.md 2020-10-18 21:10:19 +00:00
Jean-Baptiste Mardelle
b748efa0e4 Fix rotoscoping points not reset when adding a second rotoscoping effect to a clip 2020-10-18 22:51:25 +02:00
Jean-Baptiste Mardelle
7b1d44c411 Ensure only wanted items are really archived.
Related to #561
2020-10-18 14:29:33 +02:00
Jean-Baptiste Mardelle
71c7f6c11f Merge branch 'lintondawson/kdenlive-timeline-archive' 2020-10-18 14:28:21 +02:00
Jean-Baptiste Mardelle
a7c7e98db0 Fix tests, improve mix behavior with resize undo/redo 2020-10-18 14:15:01 +02:00
Camille Moulin
d143ef0a11 Fix typo in header because it breaks parser 2020-10-18 10:50:03 +00:00
l10n daemon script
97503c9b4f SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-10-18 09:59:31 +02:00
Jean-Baptiste Mardelle
9da3b3d18d Update to org.kde.Sdk 5.15 2020-10-18 09:59:31 +02:00
Jean-Baptiste Mardelle
5bfa3af4db qtcrop effect: make radius animated.
Related to #806
2020-10-18 09:59:31 +02:00
Jean-Baptiste Mardelle
273c0b34bf When editing a title clip, hide it from timeline so that it doesn't appear on background frame.
Fixes #805
2020-10-18 09:59:31 +02:00
Vivek Yadav
a1909bd3f6 Update effectlistwidget.cpp 2020-10-18 09:48:10 +02:00
Vivek Yadav
1463649578 Update effectlistwidget.cpp 2020-10-18 09:48:10 +02:00
Vivek Yadav
695c6b3bff Update effecttreemodel.cpp 2020-10-18 09:48:10 +02:00
Vivek Yadav
ec97c5646b Update effectlistwidget.cpp 2020-10-18 09:48:10 +02:00
Vivek Yadav
33758be44b Update assettreemodel.cpp 2020-10-18 09:48:10 +02:00
Vivek Yadav
d9c7dcb55f Delete effectlistwidget.cpp.autosave 2020-10-18 09:48:10 +02:00
vivek yadav
5cc52f5126 improved last commit 2020-10-18 09:48:10 +02:00
vivek yadav
d8c42f4aec edit name and description of custom effects 2020-10-18 09:48:10 +02:00
Vincent Pinon
ab00a0414e Render widget: avoid misuse of parallel processing 2020-10-18 09:48:10 +02:00
Pushkar Kukde
c8b8909a5a Implemented enhancement suggestion #561 2020-10-18 02:48:58 +05:30
Jean-Baptiste Mardelle
4a3a55e83b Fix qml overlay offset on monitor zoom (transform/rotoscoping) 2020-10-17 21:50:57 +02:00
Jean-Baptiste Mardelle
0547233f23 Merge branch 'vivekkde/kdenlive-master' 2020-10-16 18:46:42 +02:00
Jean-Baptiste Mardelle
eeada05539 Make folder to store titles and scripts configurable in Kdenlive Settings
Don't create the kdenlive-renderqueue folder if not necessary, and delete it if no script is stored.
Fixes #812
2020-10-16 17:59:53 +02:00
Vivek Yadav
70223d6626 Update effectlistwidget.cpp 2020-10-16 11:23:17 +00:00
Jean-Baptiste Mardelle
76d87f66b2 Fix crash inserting zone over grouped clips in same track 2020-10-16 10:26:53 +02:00
Pushkar Kukde
68e2dcfb7e Titlewidget 2020-10-15 23:23:37 +05:30
Pushkar Kukde
9c9672d541 Merge branch 'master' of https://invent.kde.org/multimedia/kdenlive into timeline-archive 2020-10-15 23:16:22 +05:30
Pushkar Kukde
18d09e2f26 Timeline Archive, QCheckBox problem 2020-10-15 23:09:22 +05:30
Vincent Pinon
b4895a069e Merge branch 'release/20.08' into master 2020-10-15 02:12:56 +00:00
Vincent Pinon
3b9595bd99 Fix previous commit 2020-10-15 02:10:49 +00:00
Vincent Pinon
b7ab436a3c check ffmpeg setting points to a file, not just isn't empty
FIX: 388709
2020-10-14 20:15:37 +00:00
Vincent Pinon
7cf1ac94dc check ffmpeg setting points to a file, not just isn't empty
FIX: 388709
2020-10-14 21:14:12 +02:00
Jean-Baptiste Mardelle
4403ee204e Allow custom comments in effect groups 2020-10-14 10:48:42 +02:00
Jean-Baptiste Mardelle
c9fda75cfc Add effect's MLT tag to effect description, not Kdenlive's id, makes it easier to understand which effect is implied 2020-10-14 09:37:53 +02:00
Jean-Baptiste Mardelle
f4f92defbe qtcrop effect: make radius animated.
Related to #806
2020-10-13 18:15:05 +02:00
Jean-Baptiste Mardelle
a10b527701 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-10-13 18:13:50 +02:00
Jean-Baptiste Mardelle
f11aae7d69 qtcrop effect: make radius animated.
Related to #806
2020-10-13 18:13:31 +02:00
l10n daemon script
fa18eb5fc1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-10-13 06:17:41 +02:00
Vivek Yadav
b5c0883123 Update effectlistwidget.cpp 2020-10-12 22:31:50 +00:00
Vivek Yadav
9ee0157aeb Update effectlistwidget.cpp 2020-10-12 22:24:10 +00:00
Vivek Yadav
513534e28b resolved edit custom effect description issue 2020-10-12 21:10:26 +00:00
Jean-Baptiste Mardelle
47982916a7 Update to org.kde.Sdk 5.15 2020-10-12 14:07:32 +00:00
Jean-Baptiste Mardelle
946c9e912f When editing a title clip, hide it from timeline so that it doesn't appear on background frame.
Fixes #805
2020-10-11 23:56:10 +02:00
Jean-Baptiste Mardelle
5ce4e575f6 Merge branch 'vivekkde/kdenlive-master' 2020-10-11 18:47:26 +02:00
Vivek Yadav
c75ac2a8d2 Update effectlistwidget.cpp 2020-10-11 08:48:29 +00:00
Vivek Yadav
03743f32d7 Update effectlistwidget.cpp 2020-10-11 08:39:35 +00:00
Vivek Yadav
7b17322c07 Update effecttreemodel.cpp 2020-10-11 08:32:53 +00:00
Vivek Yadav
c396a58e44 Update effectlistwidget.cpp 2020-10-11 08:28:01 +00:00
Vivek Yadav
95585239b6 Update assettreemodel.cpp 2020-10-10 20:42:18 +00:00
Pushkar Kukde
a8279d49c1 Fixed titlewidget.cpp again 2020-10-11 00:57:10 +05:30
Pushkar Kukde
e50ed4e1e4 Fixed titlewidget.cpp 2020-10-11 00:53:06 +05:30
Jean-Baptiste Mardelle
fc586019f4 Start showing parameters for same track mixes 2020-10-09 23:20:40 +02:00
Vivek Yadav
e2dd30d50e Delete effectlistwidget.cpp.autosave 2020-10-09 19:44:44 +00:00
vivek yadav
4e7f7498d5 improved last commit 2020-10-10 01:04:11 +05:30
Jean-Baptiste Mardelle
ec6bd612b3 Merge branch 'master' into work/sametrack 2020-10-09 18:12:17 +02:00
vivek yadav
8ccda514d6 edit name and description of custom effects 2020-10-09 18:19:12 +05:30
Vincent Pinon
4f51bc3e2b Merge branch 'release/20.08' 2020-10-09 13:04:03 +02:00
Vincent Pinon
a155503246 Render widget: avoid misuse of parallel processing 2020-10-09 13:03:06 +02:00
Jean-Baptiste Mardelle
7df43a547f Fix compilation with Qt < 5.15 2020-10-09 12:45:26 +02:00
Jean-Baptiste Mardelle
ac7fc97372 Fix some deprecation warnings 2020-10-09 11:39:51 +02:00
Jean-Baptiste Mardelle
2ab1fcb014 Merge branch '2008' 2020-10-09 11:14:31 +02:00
Jean-Baptiste Mardelle
6ec0e30868 Fix resizing clip loses focus if mouse cursor did not get outside of clip boundaries.
Fixes #803
2020-10-09 11:12:42 +02:00
Jean-Baptiste Mardelle
86266b4ae2 Fix rounding error sometimes hiding last keyframe in effectstack.
Fixes #758
2020-10-09 11:01:50 +02:00
l10n daemon script
6412954786 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-10-09 10:16:34 +02:00
l10n daemon script
4e0e85dbf9 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-10-09 06:31:14 +02:00
Pushkar Kukde
097b3ad60f Implemented suggestion #795 2020-10-08 20:22:52 +00:00
Jean-Baptiste Mardelle
bb3b42654b Ensure last frame of the project is rendered (with some audio codecs like aac, last frame will be duplicated because of a bug in MLT). 2020-10-07 11:16:53 +02:00
Jean-Baptiste Mardelle
508a4b7760 Add method to easily reload a custom effect 2020-10-07 11:10:41 +02:00
Jean-Baptiste Mardelle
4d93def3c5 Comment out non working code 2020-10-07 10:40:24 +02:00
Jean-Baptiste Mardelle
d10c66c5db Merge branch '2008' 2020-10-07 10:39:59 +02:00
Jean-Baptiste Mardelle
c7dc53a88d Add xml for qtcrop filter 2020-10-05 22:59:01 +02:00
Jean-Baptiste Mardelle
e23e35034c Fix freeze on memory usage loading invalid clips 2020-10-05 22:58:52 +02:00
Jean-Baptiste Mardelle
45c4e5e6a8 Fix freeze on memory usage loading invalid clips 2020-10-05 22:54:32 +02:00
Pushkar Kukde
f8af6b85f1 Implemented suggestion #795 2020-10-05 14:23:19 +05:30
Jean-Baptiste Mardelle
1156c6d74a Fix track insertion in mixed view mode.
CCBUG: 403443
2020-10-05 07:42:17 +02:00
Jean-Baptiste Mardelle
0f2968db9b Fix track order in mixed track view 2020-10-05 07:42:03 +02:00
Jean-Baptiste Mardelle
25e5eb2998 Fix compilation 2020-10-04 18:08:38 +02:00
Jean-Baptiste Mardelle
a6937dc349 Fix monitor preview messing monitor zoom 2020-10-04 17:58:51 +02:00
Jean-Baptiste Mardelle
25ba5eaa1b Fix track insertion in mixed view mode.
CCBUG: 403443
2020-10-04 12:06:06 +02:00
Jean-Baptiste Mardelle
568cf02fcb Fix track order in mixed track view 2020-10-04 11:11:39 +02:00
Jean-Baptiste Mardelle
e053e1d0b8 Fix compilation 2020-10-04 08:44:19 +02:00
Jean-Baptiste Mardelle
ab2691e8f6 Fix monitor preview messing monitor zoom 2020-10-04 08:05:58 +02:00
Jean-Baptiste Mardelle
ef83deec31 Restore toolbars in default editing layout.
Fixes #776
2020-10-03 23:27:33 +02:00
Jean-Baptiste Mardelle
eadb5bb1fe Restore toolbars in default editing layout.
Fixes #776
2020-10-03 23:27:04 +02:00
Jean-Baptiste Mardelle
eab02f5fda Fix saving lift/gamma/gain effect results in broken ui.
Fixes #790
2020-10-03 23:12:57 +02:00
Jean-Baptiste Mardelle
6b93a37431 Fix saving lift/gamma/gain effect results in broken ui.
Fixes #790
2020-10-03 23:12:28 +02:00
David Faure
5034c4fed4 Fix PreviewJob memory leak
setAutoDelete(false) means that it won't be deleted when
merely doing kill() and forgetting the pointer (so manual "delete" in
this file won't happen).

Found by looking for code that uses KJob::setAutoDelete(false)
2020-10-03 22:29:57 +02:00
Alexander Lohnau
8f521325d0 Fix deprecated install location 2020-10-03 22:29:25 +02:00
Christoph Feck
838bf7a622 GIT_SILENT Update Appstream for new release
(cherry picked from commit 6623b5cfe9)
2020-10-03 14:37:20 +02:00
Christoph Feck
6623b5cfe9 GIT_SILENT Update Appstream for new release 2020-10-03 14:27:04 +02:00
Jean-Baptiste Mardelle
1b9e07254a Add some checks to max audio level calculation 2020-10-03 13:41:00 +02:00
Jean-Baptiste Mardelle
3770fe8063 Add xml for qtcrop filter 2020-10-03 13:35:25 +02:00
Christoph Feck
c529d3edf6 GIT_SILENT Upgrade release service version to 20.08.2. 2020-10-03 12:51:32 +02:00
Jean-Baptiste Mardelle
5b84846013 Remove testing stuff 2020-10-02 23:38:21 +02:00
Jean-Baptiste Mardelle
3d8eac623d Fix incorrect "search aborted" message and tooltip for recovered missing clips.
Related to #779
2020-10-02 23:34:12 +02:00
Jean-Baptiste Mardelle
12ba744532 Add option in track headers to disable normalizing of audio thumbnails.
Related to #798
2020-10-02 23:04:26 +02:00
Jean-Baptiste Mardelle
8064b54b29 Fix audio mixer track effects applied twice when reopening project, leading to incorrect volume.
Fixes #792
2020-10-02 17:23:55 +02:00
Jean-Baptiste Mardelle
41e8726071 Fix audio mixer track effects applied twice when reopening project, leading to incorrect volume.
Fixes #792
2020-10-02 17:23:16 +02:00
Jean-Baptiste Mardelle
9a94ca4e7d Store color theme in a localized neutral way.
Should fix #732
2020-10-02 14:30:27 +02:00
Jean-Baptiste Mardelle
0df40f210d Fix various cases where it was not easy to find correct location of missing clips (slideshows, or clips with proxies)
Related to #779
2020-10-02 13:30:12 +02:00
Jean-Baptiste Mardelle
2bc6ae1bea Fix mem leak when another process was writing a clip that is included in a project.
A reload operation was performed every 2 seconds while the clip was still being written, leading to
corrupt clip duration and huge memory consumption leading to system freeze
2020-10-01 23:06:38 +02:00
Jean-Baptiste Mardelle
88980a0641 Fix mem leak when another process was writing a clip that is included in a project.
A reload operation was performed every 2 seconds while the clip was still being written, leading to
corrupt clip duration and huge memory consumption leading to system freeze
2020-10-01 22:59:05 +02:00
Pushkar Kukde
1bddf7ca59 Fixed automatic scene split (bug #421772) 2020-10-01 13:28:54 +02:00
Jean-Baptiste Mardelle
d9dc98a9f5 Merge branch 'lintondawson/kdenlive-auto-scene-split' 2020-10-01 13:26:27 +02:00
Pushkar Kukde
a6ea3608f3 Fixed automatic scene split (bug #421772) 2020-09-30 21:52:03 +05:30
Jean-Baptiste Mardelle
42d2c4320d Remove deprecated line 2020-09-30 09:41:47 +02:00
Jean-Baptiste Mardelle
9c40769bc9 Merge branch 'vivekkde/kdenlive-master' 2020-09-30 09:39:52 +02:00
Jean-Baptiste Mardelle
bdd32223f2 On project opening, fix detection of proxied clips with missing source and proxy 2020-09-30 08:37:00 +02:00
Jean-Baptiste Mardelle
a81e510b72 Correctly display Proxy status in timeline for clips with missing source 2020-09-30 08:36:42 +02:00
Jean-Baptiste Mardelle
042ce94bf7 On project opening, fix detection of proxied clips with missing source and proxy 2020-09-30 08:36:04 +02:00
Jean-Baptiste Mardelle
ba76788bf7 Small cleanup, make placeholder timeline clips visible and allow reloading missing clip if source file is available
Fixes #785
2020-09-29 23:07:14 +02:00
Jean-Baptiste Mardelle
af0bd4f7e1 Comment out libva stuff for CI AppImage 2020-09-29 09:08:59 +02:00
Jean-Baptiste Mardelle
58fd31a5e2 Add some extra checks for mixes 2020-09-29 09:07:26 +02:00
Jean-Baptiste Mardelle
18fae08380 Make mix cut pos snap in timeline
Related to #796
2020-09-28 23:04:46 +02:00
Jean-Baptiste Mardelle
5d6e7e810d Ensure we use correct subplaylist producer when replacing a clip in timeline (eg. when proxying) 2020-09-27 18:41:19 +02:00
Jean-Baptiste Mardelle
45fbb03cb4 Fix appimage creation 2020-09-27 18:32:19 +02:00
vivek yadav
51275f6cff Custom effect Comments feature 2020-09-27 20:09:13 +05:30
vivek yadav
ae7a2b56ba Merge branch 'master' of https://invent.kde.org/vivekkde/kdenlive 2020-09-27 19:51:03 +05:30
vivek yadav
be57dcdab4 added comments feature in custom effects 2020-09-27 16:40:46 +05:30
Jean-Baptiste Mardelle
37ddf5edb4 Fix crash on undo mix deletion, use different producer for subplaylists (fixes slow transitions) 2020-09-27 12:42:26 +02:00
Jean-Baptiste Mardelle
640664e2a2 Nicer visual for mix, fix resizing grouped mix didn't update grouped mix cut position.
Allow easy add of a mix by double clicking a clip's resize handle
2020-09-26 23:47:02 +02:00
David Faure
13120af540 Fix PreviewJob memory leak
setAutoDelete(false) means that it won't be deleted when
merely doing kill() and forgetting the pointer (so manual "delete" in
this file won't happen).

Found by looking for code that uses KJob::setAutoDelete(false)
2020-09-26 22:52:33 +02:00
Jean-Baptiste Mardelle
1432dd62d1 Fix mix deletion when deleting first clip of a mix 2020-09-26 14:02:31 +02:00
Jean-Baptiste Mardelle
dbd4ae024f Fix group of clips with mix broken after reloading project 2020-09-25 23:32:33 +02:00
Jean-Baptiste Mardelle
378c4c72fe Merge branch 'master' into work/sametrack 2020-09-25 22:56:03 +02:00
Jean-Baptiste Mardelle
145d2f16fa Fix incorrect hash check causing incorrect reload dialog on project opening 2020-09-25 22:45:11 +02:00
Jean-Baptiste Mardelle
b1df9fd348 Fix incorrect hash check causing incorrect reload dialog on project opening 2020-09-25 22:41:12 +02:00
Jean-Baptiste Mardelle
73503106e4 Merge branch 'master' into work/sametrack 2020-09-25 22:26:06 +02:00
Jean-Baptiste Mardelle
12467f19d9 Fix speed change effect lost when opening project with missing clip, and broken handling of missing proxied clips with speed effect 2020-09-25 22:25:52 +02:00
Ömer Fadıl Usta
565a6c1cbd Fix calling methods on null objects
Some object methods were calling without checking if the object
exist or not.
2020-09-25 22:25:52 +02:00
Jean-Baptiste Mardelle
a3fe8a8eaa Ensure we check file hash on every project opening to ensure clips have not changed and an incorrect hash is not stored. 2020-09-25 22:25:52 +02:00
l10n daemon script
704c16118f GIT_SILENT made messages (after extraction) 2020-09-25 22:25:52 +02:00
Jean-Baptiste Mardelle
5b74aaba90 Fix corrupted slowmotion clips on document opening 2020-09-25 22:21:20 +02:00
Jean-Baptiste Mardelle
dff5f70938 Fix corrupted slowmotion clips on document opening 2020-09-25 22:20:49 +02:00
Jean-Baptiste Mardelle
def6f3f9f7 Fix speed change effect lost when opening project with missing clip, and broken handling of missing proxied clips with speed effect 2020-09-25 18:34:26 +02:00
Jean-Baptiste Mardelle
663fcc92e5 Fix speed change effect lost when opening project with missing clip, and broken handling of missing proxied clips with speed effect 2020-09-25 18:33:59 +02:00
Jean-Baptiste Mardelle
02e8c3edc4 Fix moving clip groups with a mix 2020-09-25 15:58:56 +02:00
Jean-Baptiste Mardelle
f2bf7f16af Merge branch 'work/usta_fix_null_calls' 2020-09-25 14:53:06 +02:00
Jean-Baptiste Mardelle
4d5b1a353c Ensure we check file hash on every project opening to ensure clips have not changed and an incorrect hash is not stored. 2020-09-25 10:40:19 +02:00
Jean-Baptiste Mardelle
0430805f0a Ensure we check file hash on every project opening to ensure clips have not changed and an incorrect hash is not stored. 2020-09-25 10:39:41 +02:00
l10n daemon script
a362d20705 GIT_SILENT made messages (after extraction) 2020-09-25 08:34:46 +02:00
l10n daemon script
1d5899fb39 GIT_SILENT made messages (after extraction) 2020-09-25 02:17:18 +02:00
Jean-Baptiste Mardelle
d7c68402f1 Fix av clip mix 2020-09-24 09:48:35 +02:00
Jean-Baptiste Mardelle
0f144df5e3 Ensure a mixed clip cannot be moved further than its counterpart mix clip 2020-09-23 22:31:19 +02:00
Jean-Baptiste Mardelle
c69bc854ec Correctly load and save mix cut position 2020-09-23 22:01:01 +02:00
Jean-Baptiste Mardelle
827c2a6e62 Merge branch 'work/sametrack' of invent.kde.org:multimedia/kdenlive into sametrack 2020-09-23 15:31:14 +02:00
Jean-Baptiste Mardelle
5c0f642aa8 Easy selection and deletion of clip mix 2020-09-23 15:30:54 +02:00
Jean-Baptiste Mardelle
4f81b7514a Warn user if not enough frames in the clip to create a mix
Related to #796
2020-09-20 11:53:44 +02:00
Jean-Baptiste Mardelle
7f3f3365f5 Merge branch 'master' into sametrack 2020-09-19 22:54:55 +02:00
Jean-Baptiste Mardelle
0aa315c21e Ensure mix is always on top of clips 2020-09-19 22:54:16 +02:00
Jean-Baptiste Mardelle
62c5aa6b0e Update AppImage scripts for FFmpeg hw accel 2020-09-19 18:34:36 +02:00
Farid Abdelnour
1f1251bd7f Add missing "=" symbol in GPU profile 2020-09-19 18:21:16 +02:00
Farid Abdelnour
083bfd2803 Add GPU profiles provided by Constantin Aanicai. https://kdenlive.org/en/2020/08/kdenlive-20-08-is-out/#comment-5089
Related to #504
2020-09-19 18:21:05 +02:00
Farid Abdelnour
9203c8ca9a [Experimental] Added GPU profiles for rendering proxies and timeline preview ... 2020-09-19 18:19:46 +02:00
Farid Abdelnour
7e8a90aea0 [Experimental] Added GPU profiles for rendering proxies and timeline preview ... 2020-09-19 16:07:38 +00:00
Jean-Baptiste Mardelle
40085a0463 Fix creating mix between color clip and AV clip 2020-09-19 18:02:17 +02:00
Jean-Baptiste Mardelle
988439dbcd Fix crash on some projects opening
BUG: 409477
2020-09-18 22:21:06 +02:00
Albert Astals Cid
8a08988797 Remove unused krandomsequence.h include 2020-09-18 21:53:02 +02:00
Jean-Baptiste Mardelle
9705c94332 Fix compilation 2020-09-18 21:09:05 +02:00
Jean-Baptiste Mardelle
99db241c7f Fix crash on some projects opening
BUG: 409477
2020-09-18 16:48:59 +02:00
Jean-Baptiste Mardelle
c3155b94e7 Add mix clip action in timeline menu, fix undo resize on mixed clip 2020-09-17 22:39:02 +02:00
Jean-Baptiste Mardelle
a976d33fc9 More fixes and tests for chained mixes 2020-09-17 18:23:57 +02:00
Ömer Fadıl Usta
153688e196 Fix calling methods on null objects
Some object methods were calling without checking if the object
exist or not.
2020-09-17 09:26:54 +03:00
Jean-Baptiste Mardelle
a3bc1439ab Another batch of tests and fixes for same track transitions on grouped clips 2020-09-16 17:25:26 +02:00
Jean-Baptiste Mardelle
0378f6d146 More tests and fixes for same track transitions 2020-09-16 11:29:16 +02:00
Jean-Baptiste Mardelle
1e3707f129 More fixes for same track composition clips move and resize 2020-09-15 23:36:17 +02:00
Vincent Pinon
f049619c47 Fix OTIO error display 2020-09-14 19:57:03 +00:00
Jean-Baptiste Mardelle
8991e0ee1b Make same track transition correcty resize on clip resize 2020-09-14 18:48:08 +02:00
Jean-Baptiste Mardelle
38a21d0e3f Fix possible crash detected by tests 2020-09-13 12:01:58 +02:00
Jean-Baptiste Mardelle
bc9de7c403 Make resizing mix work, fix crash on clip deletion 2020-09-13 11:53:53 +02:00
Jean-Baptiste Mardelle
3c0a8db4ac Correctly load same track transitions when opening project 2020-09-12 23:09:38 +02:00
Alexander Lohnau
baa3c0de78 Fix deprecated install location 2020-09-12 08:01:30 +02:00
Jean-Baptiste Mardelle
f371478aeb Fix remaining bugs in mix move 2020-09-12 07:19:20 +02:00
Jean-Baptiste Mardelle
fc5f133ac4 Moving clip with mixes should now work correctly 2020-09-11 19:48:31 +02:00
Jean-Baptiste Mardelle
ee8fb1c29c Implement moving left clip in a mix transition 2020-09-10 10:32:50 +02:00
Jean-Baptiste Mardelle
e98818026b Merge branch '2008' 2020-09-09 05:55:46 +02:00
Jean-Baptiste Mardelle
ac0d843950 Fix compilation 2020-09-09 05:43:52 +02:00
Jean-Baptiste Mardelle
0ca2d507bf Merge branch '2008' 2020-09-08 22:02:38 +02:00
Jean-Baptiste Mardelle
5f37ff2e9c Merge branch 'release/20.08' of invent.kde.org:multimedia/kdenlive into 2008 2020-09-08 22:01:46 +02:00
Jean-Baptiste Mardelle
3716ef32b9 Fix cut/resize audio clip invalidating timeline preview 2020-09-08 22:00:16 +02:00
Jean-Baptiste Mardelle
5d1a81b627 Fix mix test 2020-09-08 13:12:15 +02:00
Jean-Baptiste Mardelle
47fcbb2a96 Fix group move with same track transition 2020-09-08 08:51:40 +02:00
Jean-Baptiste Mardelle
d06ec3cd0f More fixes and tests for moving a clip with same track transition 2020-09-07 21:53:07 +02:00
Jean-Baptiste Mardelle
2ea5bdcde3 Start implementing clip move when same track transition is active 2020-09-07 17:42:06 +02:00
Jean-Baptiste Mardelle
c008bf1a74 Tests: also check same track transition undo 2020-09-07 07:38:07 +02:00
Jean-Baptiste Mardelle
2faff23e99 Add first test for same track compositing 2020-09-07 07:32:18 +02:00
Jean-Baptiste Mardelle
7620569d47 Merge branch 'work/sametrack' of invent.kde.org:multimedia/kdenlive into sametrack 2020-09-05 22:10:36 +02:00
Jean-Baptiste Mardelle
f33a8cb451 Mix all parts of grouped clips 2020-09-05 22:10:05 +02:00
Jean-Baptiste Mardelle
e8510ee16e Make same track composition undoable 2020-09-04 23:52:03 +02:00
Jean-Baptiste Mardelle
df125d294b Merge branch 'master' into work/sametrack 2020-09-04 15:00:36 +02:00
Jean-Baptiste Mardelle
665bfe92e5 Merge branch '2008' 2020-09-04 14:46:50 +02:00
Jean-Baptiste Mardelle
0bec5caedb Remove test stuff 2020-09-04 14:45:28 +02:00
Jean-Baptiste Mardelle
23ff749fd1 Delay locale reset to allow correct ui translation
Related to #787
2020-09-04 14:37:22 +02:00
Jean-Baptiste Mardelle
b07c788901 Attempt to mimic Shotcut's locale handling
Related to #780
2020-09-04 14:35:21 +02:00
Jean-Baptiste Mardelle
56d54a5c70 Ensure default layout names are translatable 2020-09-04 14:24:09 +02:00
Jean-Baptiste Mardelle
5e00c87cec Ensure default layout names are translatable 2020-09-04 14:18:02 +02:00
Jean-Baptiste Mardelle
4912477068 Delay locale reset to allow correct ui translation
Related to #787
2020-09-04 09:59:35 +02:00
Jean-Baptiste Mardelle
a76b042226 Add Appimage and source download links in appdata 2020-09-03 14:28:11 +02:00
Jean-Baptiste Mardelle
6cd8e3d35a Fix clicking on clip marker label moving timeline cursor to approximate position
preventing edit/delete of the marker.
Related to #788
2020-09-03 14:06:30 +02:00
Jean-Baptiste Mardelle
40afc62f90 Use another ref on the producer when saving project (might help in case another operation is performed on the producer) 2020-09-03 14:06:22 +02:00
Jean-Baptiste Mardelle
1413dc409f Add corruption check before creating backup file 2020-09-03 14:06:02 +02:00
Jean-Baptiste Mardelle
4ec4cedbe2 Fix clicking on clip marker label moving timeline cursor to approximate position
preventing edit/delete of the marker.
Related to #788
2020-09-03 13:47:41 +02:00
Stephen Fluin
571f59e1ec update readme with GPL link and canonical spelling 2020-09-03 11:25:18 +00:00
Jean-Baptiste Mardelle
406c56ccbd Fix tests :) 2020-09-03 10:14:55 +02:00
Jean-Baptiste Mardelle
24f6b42d31 Use another ref on the producer when saving project (might help in case another operation is performed on the producer) 2020-09-02 22:42:07 +02:00
Jean-Baptiste Mardelle
305a67853f Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-09-02 22:17:40 +02:00
Jean-Baptiste Mardelle
2dac8e6440 Add corruption check before creating backup file 2020-09-02 22:17:23 +02:00
Jean-Baptiste Mardelle
4de7f1e455 Fix overwrite sometimes not working on clips with multiple streams 2020-09-01 07:39:41 +02:00
Laurent Montel
6660206349 Port away from deprecated Qt::MidButton 2020-08-31 21:09:22 +02:00
Christoph Feck
e29668a248 GIT_SILENT Update Appstream for new release
(cherry picked from commit 1c923e8862)
2020-08-31 21:08:23 +02:00
Christoph Feck
1c923e8862 GIT_SILENT Update Appstream for new release 2020-08-31 21:08:22 +02:00
Christoph Feck
e8280af748 GIT_SILENT Upgrade release service version to 20.08.1. 2020-08-31 20:36:49 +02:00
Jean-Baptiste Mardelle
75e57704e0 Attempt to mimic Shotcut's locale handling
Related to #780
2020-08-31 14:06:59 +02:00
Jean-Baptiste Mardelle
45cbc45593 Another attempt to fix #780 2020-08-31 08:55:06 +02:00
Jean-Baptiste Mardelle
e7e73f9dfe Merge branch '2008' 2020-08-30 22:30:58 +02:00
Jean-Baptiste Mardelle
813d6ae6cb Keep titlebars state (hidden/shown) when switching between layouts 2020-08-30 22:30:32 +02:00
Jean-Baptiste Mardelle
a610f581cc Another attempt to fix Windows locale corruption on Windows
related to #780
2020-08-30 15:33:41 +02:00
Jean-Baptiste Mardelle
865042c81d Enforce C Locale on Windows on rendering.
Related to #780
2020-08-30 06:55:21 +02:00
Jean-Baptiste Mardelle
74aa66e249 Merge branch '2008' 2020-08-29 22:01:25 +02:00
Jean-Baptiste Mardelle
a508e86cfe Fix insert broken in some configurations (video disabled) 2020-08-29 21:59:42 +02:00
Jean-Baptiste Mardelle
575a0f4882 Merge branch '2008' 2020-08-29 18:33:26 +02:00
Jean-Baptiste Mardelle
c4966aac90 Fix compilation 2020-08-29 18:28:00 +02:00
Jean-Baptiste Mardelle
9b08d73ee6 Update mainwindow.cpp 2020-08-29 11:00:04 +00:00
Jean-Baptiste Mardelle
8f8f79363a Merge branch '2008' 2020-08-29 07:12:55 +02:00
Jean-Baptiste Mardelle
d43328bfad Don't resize mixer widget if tabbed 2020-08-29 07:12:20 +02:00
Jean-Baptiste Mardelle
aba9b0771d Merge branch '2008' 2020-08-28 23:51:55 +02:00
Jean-Baptiste Mardelle
5b4a2b8006 Fix incorrect stream or no audio on insert.
Fixes #786
2020-08-28 23:51:00 +02:00
Jean-Baptiste Mardelle
5eb539aad6 Merge branch '2008' 2020-08-28 21:37:13 +02:00
Jean-Baptiste Mardelle
055abf4d93 Update default editing layout 2020-08-28 21:33:53 +02:00
Jean-Baptiste Mardelle
89d6efe48b Fix audio only insert broken
Fixes #786
2020-08-28 21:27:59 +02:00
Jean-Baptiste Mardelle
03cf97450d Same track mix update: resize both clips and create a mix in between 2020-08-28 20:08:31 +02:00
Jean-Baptiste Mardelle
761393e4ee Fix some corruption in same track composition 2020-08-28 17:12:32 +02:00
Jean-Baptiste Mardelle
604b850745 Add icon in timeline toolbar for same track mix 2020-08-28 16:26:58 +02:00
Jean-Baptiste Mardelle
ba564eda44 Initial commit for same track transitions 2020-08-28 14:51:11 +02:00
Farid Abdelnour
f8654e66ce Add missing "=" symbol in GPU profile 2020-08-26 17:49:42 +00:00
Jean-Baptiste Mardelle
6289435ad6 Correctly update project duration on group move
Fixes #628
2020-08-26 11:23:17 +02:00
Jean-Baptiste Mardelle
0edce07385 Raise Project Bin when a clip is dropped in timeline or created through the menu.
Fixes #772
2020-08-26 11:22:52 +02:00
Jean-Baptiste Mardelle
e83f8dc0ca Correctly update project duration on group move
Fixes #628
2020-08-26 11:17:16 +02:00
Jean-Baptiste Mardelle
e80ba1811a Sort insertion order using int instead of string.
Related to #583
2020-08-26 10:20:15 +02:00
Jean-Baptiste Mardelle
1e00ab87b4 Raise Project Bin when a clip is dropped in timeline or created through the menu.
Fixes #772
2020-08-26 08:55:00 +02:00
Jean-Baptiste Mardelle
2d61ef598a Fix frame number in rendering progress.
Fixes #784
2020-08-26 08:36:37 +02:00
Jean-Baptiste Mardelle
4d13c79f95 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-08-25 00:00:49 +02:00
Jean-Baptiste Mardelle
2526f7af48 Effect Stack: focus active effect when switching between clips 2020-08-24 23:58:35 +02:00
Jean-Baptiste Mardelle
3b7dc65e5b Merge branch '2008' 2020-08-23 21:51:50 +02:00
Jean-Baptiste Mardelle
9de3b4dc71 Correctly replace slideshow folder if moved.
Related to #779
2020-08-23 21:51:29 +02:00
Vincent Pinon
fc6c822ff0 more progress info during render 2020-08-22 22:37:23 +02:00
Pino Toscano
48b183a2ff Merge remote-tracking branch 'origin/release/20.08' into master 2020-08-20 08:27:32 +02:00
Patrick Matthäi
16e0cc2934 Fix a spelling error 2020-08-20 08:26:17 +02:00
Farid Abdelnour
b6f8400db9 Add GPU profiles provided by Constantin Aanicai. https://kdenlive.org/en/2020/08/kdenlive-20-08-is-out/#comment-5089
Related to #504
2020-08-19 14:46:43 +00:00
Jean-Baptiste Mardelle
dd5fcbf66b Fix shift click for multiple selection broken in Bin 2020-08-18 21:57:48 +02:00
Jean-Baptiste Mardelle
7466caef97 Fix shift click for multiple selection broken in Bin 2020-08-18 08:41:48 +02:00
Jean-Baptiste Mardelle
d9fc8628cc Allow automatic keyframes on transform like effects
Related to #451
2020-08-12 08:10:42 +02:00
Jean-Baptiste Mardelle
e27d3f481e Don't allow adding unique effect (like fades) twice 2020-08-11 23:28:41 +02:00
Jean-Baptiste Mardelle
e9baf89529 Fix crash removing a fade effect added twice.
BUG: 425175
2020-08-11 23:26:54 +02:00
Jean-Baptiste Mardelle
35acc60960 Enforce wasapi as default audio backend on Windows.
Related to #774
2020-08-11 08:25:24 +02:00
Jean-Baptiste Mardelle
f7137493d5 Fix regression in project notes from clip monitor(incorrect clazy fix) 2020-08-09 21:59:46 +02:00
Jean-Baptiste Mardelle
c533d8a02f Fix clip monitor zoom not reset when changing clip, and zone incorrect on zoom
(cherry picked from commit 44ce7aeadc)
2020-08-06 10:47:59 +00:00
Jean-Baptiste Mardelle
44ce7aeadc Fix clip monitor zoom not reset when changing clip, and zone incorrect on zoom 2020-08-06 07:18:15 +02:00
Jean-Baptiste Mardelle
7c8de1f60d Add MLT's Pillar Echo effect 2020-08-05 12:02:12 +02:00
Jean-Baptiste Mardelle
7d0b60c931 Restore increased range for volume effect, only limit the visible range in timeline
Related to #770
2020-08-05 12:02:12 +02:00
Tércio Martins
186c2793f5 Appimage: during image creation, delete libxcb and libxcb-dri{2,3} libraries
Currently, the script "build-image.sh" deletes all libraries that begin with the name "libxcb..."
Systems that do not have the "libxcb-keysyms.so.1" library are unable to start Kdenlive. The terminal displays this message when starting the program:
"error while loading shared libraries: libxcb-keysyms.so.1: cannot open shared object file: No such file or directory"

This prevents the program from starting on computers that only have GNOME applications installed, for example.
<https://ubuntu.pkgs.org/20.04/ubuntu-main-amd64/libxcb-keysyms1_0.4.0-1build1_amd64.deb.html>
<https://www.archlinux.org/packages/extra/x86_64/xcb-util-keysyms/>

The Appimage documentation recommends deleting only the "libxcb.so", "libxcb-dri2.so" and "libxcb-dri3.so" libraries:
<https://github.com/AppImage/pkg2appimage/blob/master/excludelist>

The "build-image.sh" script has been changed to delete only those files, allowing more users to run the program.
2020-08-05 08:07:26 +00:00
Christoph Feck
e0be8f3a08 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-08-05 10:01:03 +02:00
Christoph Feck
6f46e728c1 GIT_SILENT Update Appstream for new release
(cherry picked from commit 9a053d651a)
2020-08-05 09:59:36 +02:00
Christoph Feck
9a053d651a GIT_SILENT Update Appstream for new release 2020-08-05 09:59:34 +02:00
Christoph Feck
ac93f244ea GIT_SILENT Upgrade release service version to 20.08.0. 2020-08-05 09:20:23 +02:00
Jean-Baptiste Mardelle
bbbbb509c1 Missing fix for FreeBSD in last commit (fix broken localization) 2020-08-03 22:11:14 +02:00
Jean-Baptiste Mardelle
5aa1aea64e Attempt to fix UI translations broken.
CCBUG: 424967
2020-08-03 22:11:05 +02:00
Jean-Baptiste Mardelle
e17e4f2196 Missing fix for FreeBSD in last commit (fix broken localization) 2020-08-03 22:03:15 +02:00
Jean-Baptiste Mardelle
143bf1697e Attempt to fix UI translations broken.
CCBUG: 424967
2020-08-03 21:25:42 +02:00
Jean-Baptiste Mardelle
997a9abd3f Reduce range of volume effect (limit to -50 - +50 dB), and use logarithmic scale in timeline.
Related to #770
2020-08-03 18:40:22 +02:00
Jean-Baptiste Mardelle
68914726d9 Rotoscoping: add Auto keyframe button in monitor toolbar to automatically add a keyframe when moving a point 2020-08-02 01:09:02 +02:00
Christoph Feck
66fdf2e060 GIT_SILENT Upgrade release service version to 20.07.90. 2020-07-31 23:18:59 +02:00
Jean-Baptiste Mardelle
f4a1cdf603 Don't cache empty audio data (fixes missing audio thumbs on video clips) 2020-07-31 15:50:03 +02:00
Jean-Baptiste Mardelle
9ba6eaa954 Various fixes for audio thumb management, should slightly improve memory usage/performnace.
Related to #102
2020-07-31 15:40:54 +02:00
Jean-Baptiste Mardelle
a0db1142d3 Rewrite audio thumbnails to only use FFmpeg's data and optimize memory usage on creation.
Related to #102
2020-07-31 12:35:26 +02:00
Jean-Baptiste Mardelle
3d5c3cebd3 Merge branch '2008' 2020-07-31 00:19:08 +02:00
Jean-Baptiste Mardelle
587461abe6 Add avfilter eq filter (allowing to adjust image brightness, contrast, saturation, gamma all in one effect 2020-07-31 00:18:35 +02:00
Jean-Baptiste Mardelle
6eac05ad0d Add xml for avfilter.equalizer audio eq.
Related to #728
2020-07-30 23:56:31 +02:00
Jean-Baptiste Mardelle
64eb4da1ad Refactor clip monitor audio thumbnails to use same data as timeline thumbnail.
We now just need to also use this data to generate the bin thumbnail and memory usage should get back to normal
Related to #102
2020-07-30 23:29:48 +02:00
Jean-Baptiste Mardelle
b205949e01 Merge branch '2008' 2020-07-30 22:30:59 +02:00
Jean-Baptiste Mardelle
a131b627fe Reset layout should immediatly restore default layout
Reset missing layout should insert it at correct position
Fixes #249
2020-07-30 22:29:48 +02:00
Jean-Baptiste Mardelle
9c44105456 Merge branch '2008' 2020-07-29 23:41:41 +02:00
Jean-Baptiste Mardelle
63ca93a43f Fix having several geometry effects messing monitor overlay (like rotoscoping and transform).
Related to #649
2020-07-29 23:41:05 +02:00
Jean-Baptiste Mardelle
8f29a8fced Drop deprecated QApplication attribute 2020-07-29 10:51:27 +02:00
Jean-Baptiste Mardelle
91176f622d Merge branch '2008' 2020-07-29 10:19:41 +02:00
Jean-Baptiste Mardelle
5d9f20c1b7 Only enforce Editing layout on first run 2020-07-29 10:13:21 +02:00
Jean-Baptiste Mardelle
39cb71cc0a Ensure preview scaling is not lost when a monitor is stopped (like when switching monitors)
Related to #649
2020-07-29 10:11:19 +02:00
Jean-Baptiste Mardelle
1b4d376f88 Better default window size on first startup 2020-07-29 08:33:05 +02:00
Jean-Baptiste Mardelle
7d81a4b9a9 Layout reset button will now restore deleted default layouts and reset selected one to default value 2020-07-29 08:29:19 +02:00
Yuri Chornoivan
60fdc1e996 Avoid confusion for one-letter translations 2020-07-29 08:51:07 +03:00
Jean-Baptiste Mardelle
b2c030c3c0 Ensure the "Editing" layout is loaded on first run 2020-07-28 23:41:37 +02:00
Farid Abdelnour
be4d311a04 Update Audio, Editing and Color layouts 2020-07-28 23:01:56 +02:00
Farid Abdelnour
caa2910969 Update Audio, Editing and Color layouts 2020-07-28 20:18:21 +00:00
Farid Abdelnour
0481d8640c Add Effects layout 2020-07-28 21:52:59 +02:00
Farid Abdelnour
8b2caa64cd Add Effects layout 2020-07-28 18:17:16 +00:00
Jean-Baptiste Mardelle
8a30937f0a Don't trigger any audio job if audio thumbnails are disabled.
Related to #102
2020-07-28 13:02:28 +02:00
Jean-Baptiste Mardelle
8705e0f190 Merge branch '2008' 2020-07-28 12:46:16 +02:00
Jean-Baptiste Mardelle
ecaefd93bb Don't reprocess audio thumbs if already exists 2020-07-28 12:45:09 +02:00
Julius Künzel
0db4fc0389 Improve audiomixer layout 2020-07-28 12:34:37 +02:00
Julius Künzel
dbb3b68e7b Improve audiomixer layout 2020-07-28 05:09:23 +00:00
Jean-Baptiste Mardelle
fcc9957062 Merge branch '2008' 2020-07-28 01:11:14 +02:00
Jean-Baptiste Mardelle
aa8cc8227a Fix audio thumbnail flickering on resize / move item
Fixes #746
2020-07-28 01:09:59 +02:00
Jean-Baptiste Mardelle
2b423244a5 Merge branch '2008' 2020-07-27 17:25:57 +02:00
Jean-Baptiste Mardelle
f68fb0cd33 Fix some effects like fades not terminating correctly on image/color/title clips.
Related to #731
2020-07-27 17:24:48 +02:00
Jean-Baptiste Mardelle
8440931ce7 Fix some warnings 2020-07-27 17:22:23 +02:00
Jean-Baptiste Mardelle
0a93ade47d Disable layout buttons focus so they don't keep a highlighted border 2020-07-24 22:00:52 +02:00
Jean-Baptiste Mardelle
423523c75c Merge branch '2008' 2020-07-24 19:18:43 +02:00
Jean-Baptiste Mardelle
4ce528bcaf Update shortcuts for set target track(ctrl+number) and set clip in/out (parenthesis) 2020-07-24 19:18:16 +02:00
Jean-Baptiste Mardelle
f5394aae07 Merge branch '2008' 2020-07-24 17:38:44 +02:00
Jean-Baptiste Mardelle
b696befb6a Correctly disable menubar layout if loading a layout > 5 2020-07-24 17:33:41 +02:00
Jean-Baptiste Mardelle
db57b62803 Update AppImage dependency build scripts 2020-07-24 16:27:48 +02:00
Jean-Baptiste Mardelle
436ad5e0ba Update AppImage dependency build scripts 2020-07-24 15:22:30 +02:00
Jean-Baptiste Mardelle
0551fda203 Merge branch '2008' 2020-07-24 11:01:46 +02:00
Farid Abdelnour
1bbfd3d856 Logging UI proposal 2020-07-24 11:01:17 +02:00
Jean-Baptiste Mardelle
31a413f4f5 Change audio selection target shortcut to "Dot + 1-9" (. + 1) instead of Q + 1.
Related to 225
2020-07-24 11:00:02 +02:00
Farid Abdelnour
4719f469e5 Logging UI proposal 2020-07-24 08:47:41 +00:00
Jean-Baptiste Mardelle
f289997215 Merge branch '2008' 2020-07-24 10:38:48 +02:00
Jean-Baptiste Mardelle
01a05750d9 Ensure clip audio thumbs are created when enabling the setting in timeline 2020-07-24 10:36:52 +02:00
Jean-Baptiste Mardelle
0b999e9c85 Reversed clips: fix audio thumbnails incorrect and markers position.
Fixes #89
2020-07-24 10:21:52 +02:00
Jean-Baptiste Mardelle
60b313dbb0 Fix bin clip sometimes incorrectly selected causing incorrect drag in timeline 2020-07-24 08:14:24 +02:00
Jean-Baptiste Mardelle
7fd976cab4 Merge branch '2008' 2020-07-23 23:21:15 +02:00
Jean-Baptiste Mardelle
aa798c9403 Fix bin clip deletion removing grouped clips 2020-07-23 23:20:32 +02:00
Jean-Baptiste Mardelle
8b77e3b149 Check layout button when activated through menu, fix layout saving 2020-07-23 22:55:10 +02:00
Jean-Baptiste Mardelle
87dc2b1d9f When trying to play a monitor that is hidden, display an info message allowing to show the monitor.
Fixes #762
2020-07-23 08:42:10 +02:00
Jean-Baptiste Mardelle
d722dc28b5 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-23 00:40:23 +02:00
Jean-Baptiste Mardelle
7ddcef6e35 Merge branch '2008' 2020-07-23 00:40:01 +02:00
Jean-Baptiste Mardelle
ed19a2d0c4 Fix saving layouts. When saving, propose the name of the currently active layout 2020-07-23 00:39:30 +02:00
Vincent Pinon
3b9d8bfd49 Manually fix clazy warnings 2020-07-22 22:32:55 +00:00
Jean-Baptiste Mardelle
d265f63589 Merge branch '2008' 2020-07-22 23:58:34 +02:00
Jean-Baptiste Mardelle
26035a01ed Replace layouts toolbar with custom list on the right side of the menu bar 2020-07-22 23:56:38 +02:00
Jean-Baptiste Mardelle
06079c8b36 Merge branch '2008' 2020-07-22 12:04:53 +02:00
Jean-Baptiste Mardelle
813ab1b1eb Display layout toolbar.
Related to #407
2020-07-22 11:58:31 +02:00
Jean-Baptiste Mardelle
bfb4d42b27 Improve layouts management, allow reordering, add reset button to restore the default layouts.
Related to #407
2020-07-22 11:58:31 +02:00
Jean-Baptiste Mardelle
ff1cbac448 Merge branch '2008' 2020-07-21 21:54:07 +02:00
Jean-Baptiste Mardelle
71333c8331 Fix activate track target shortcut always activating first stream.
Related to #225
2020-07-21 21:53:11 +02:00
Jean-Baptiste Mardelle
f17339a441 Merge branch '2008' 2020-07-21 17:36:46 +02:00
Jean-Baptiste Mardelle
168e486a46 Don't freeze if trying to play timeline and project monitor is hidden.
Related to #762
2020-07-21 17:36:07 +02:00
Jean-Baptiste Mardelle
568dbcbb52 Merge branch '2008' 2020-07-21 17:00:27 +02:00
Jean-Baptiste Mardelle
e78f2fd964 Fix keyboard shortcuts display in actions tooltips (avoid update loop), add one for timeline target menu 2020-07-21 16:59:51 +02:00
Vincent Pinon
a71dddbaa5 Apply clazy fixes (range-loop) 2020-07-20 21:08:57 +00:00
Jean-Baptiste Mardelle
bebf685e9e Only check for minimum track height if it has changed 2020-07-20 19:11:02 +02:00
Jean-Baptiste Mardelle
6199a1de9c Merge branch '2008' 2020-07-20 18:59:19 +02:00
Jean-Baptiste Mardelle
84e7186174 Reset track height to sane value on reset default values in settings dialog 2020-07-20 18:58:45 +02:00
Jean-Baptiste Mardelle
1186f30647 Try harder to find ffmpeg path if not defined 2020-07-20 18:21:40 +02:00
Jean-Baptiste Mardelle
7bf0981665 Merge branch '2008' 2020-07-17 10:32:07 +02:00
Jean-Baptiste Mardelle
7c121fddc6 Improve reloading of audio thumbs in some cases
Related to #761
2020-07-17 10:30:46 +02:00
Jean-Baptiste Mardelle
f3efca85b5 Correctly refresh layout list if all were deleted 2020-07-17 08:45:27 +02:00
Jean-Baptiste Mardelle
b1f50cb245 Merge branch '2008' 2020-07-16 23:47:07 +02:00
Jean-Baptiste Mardelle
5f11bb1e8f Update layout management: add 5 default layouts, allow renaming/deleting.
Related to #407
2020-07-16 23:45:48 +02:00
Jean-Baptiste Mardelle
e8cc6d253e Elide timeline markers instead of hiding them on lower zoom.
Related to #760
2020-07-16 22:35:49 +02:00
Jean-Baptiste Mardelle
1da913941b Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-16 17:07:39 +02:00
Jean-Baptiste Mardelle
7559f08a3c Merge branch '2008' 2020-07-16 17:06:28 +02:00
Jean-Baptiste Mardelle
c0959b53a0 Introduce new keyboard shortcuts:
1 to 9 focuses the video tracks 1 to 9
Alt + 1 to 9 focuses the audio tracks 1 to 9
Q then 1 to 9 selects the target stream (1 to 9) for currently focused track
2020-07-16 17:05:55 +02:00
Jean-Baptiste Mardelle
c15b6032be Merge branch '2008' 2020-07-16 08:00:03 +02:00
Jean-Baptiste Mardelle
dcb18495dd Display track "Edit name" label when entering track header, not only when hovering the label zone.
Related to #696
2020-07-16 07:59:25 +02:00
Pino Toscano
2c585ef547 fixuifiles 2020-07-16 07:57:14 +02:00
Yuri Chornoivan
1301d057c8 Remove needless window title 2020-07-16 08:46:05 +03:00
Jean-Baptiste Mardelle
9e136ee931 Merge branch '2008' 2020-07-15 11:33:30 +02:00
Jean-Baptiste Mardelle
d1fc4b3e87 Cleanup ffmpeg command for audio thumb 2020-07-15 11:33:04 +02:00
Jean-Baptiste Mardelle
d8ca8514b6 Configurable colors for audio thumbnails 2020-07-15 11:33:04 +02:00
l10n daemon script
f92f4b14c8 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-07-15 09:16:29 +02:00
l10n daemon script
9c4b503403 GIT_SILENT made messages (after extraction) 2020-07-15 07:50:43 +02:00
l10n daemon script
b961406e8b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-07-15 05:44:19 +02:00
l10n daemon script
991c46f910 GIT_SILENT made messages (after extraction) 2020-07-15 02:14:23 +02:00
Jean-Baptiste Mardelle
3e10acb49d Merge branch '2008' 2020-07-14 07:54:18 +02:00
Jean-Baptiste Mardelle
23b87be176 Rename "Split audio" to "Restore audio". Related to #756 2020-07-14 07:53:43 +02:00
Jean-Baptiste Mardelle
d3a4c270bd Fix crash on split audio/video.
Fixes #756
2020-07-14 07:50:58 +02:00
Jean-Baptiste Mardelle
26f6352bf1 Merge branch '2008' 2020-07-14 07:04:35 +02:00
Jean-Baptiste Mardelle
031ab0154a cleanup qml, fix red track on insert 2020-07-13 23:54:17 +02:00
Jean-Baptiste Mardelle
09a70bb1d3 Ensure bin clip is selected before attempting to insert (fixes url dropped in timeline only insert video part).
Fixes #757
2020-07-13 22:57:06 +02:00
Jean-Baptiste Mardelle
d794fa69a9 Get rid of buggy processing threads setting 2020-07-13 18:16:28 +02:00
Jean-Baptiste Mardelle
18a73708ed Don't allow embedding a project in itself.
Related to #737
2020-07-13 12:09:45 +02:00
Jean-Baptiste Mardelle
78e4acad5e Merge branch '2008' 2020-07-13 09:37:05 +02:00
Jean-Baptiste Mardelle
9cac6b3bf0 Ensure auto-saved file is newer than project before proposing to recover data.
BUG: 424016
2020-07-13 09:36:32 +02:00
Jean-Baptiste Mardelle
3b4a143a80 Fix possible use after deletion.
Fixes #743
2020-07-13 09:04:22 +02:00
Jean-Baptiste Mardelle
a4e44d7296 Merge branch '2008' 2020-07-13 07:45:52 +02:00
Jean-Baptiste Mardelle
ce7d3d141f Use Windows compatible methods when dropping a folder in bin.
Related to #287
2020-07-13 07:44:07 +02:00
Jean-Baptiste Mardelle
7da3201e75 When dragging a clip in insert mode, don't allow leaving empty space in timeline.
Related to #673
2020-07-12 15:05:01 +02:00
Jean-Baptiste Mardelle
367d056f34 Restore seek in clip monitor on Shift + move mouse 2020-07-12 15:04:53 +02:00
Jean-Baptiste Mardelle
419024ebd2 Don't show monitor overlay (fpt, timecode, ...) in audio seek bar 2020-07-12 15:04:44 +02:00
Jean-Baptiste Mardelle
d522d0dea5 Timeline: don't allow moving a keyframe at same pos as another one.
Related to #686
2020-07-12 15:04:33 +02:00
Jean-Baptiste Mardelle
e0ccc89e81 In insert mode, deleting a clip should perform an extract operation.
Related to #673
2020-07-12 15:04:20 +02:00
Jean-Baptiste Mardelle
23e56b75a8 Fix clip url not correctly updated when opening project with missing clips.
Related to #536
2020-07-12 15:04:08 +02:00
Jean-Baptiste Mardelle
c05cd16b8e When dropping a folder from a file manager to bin, don't create folders that contain no valid clip 2020-07-12 15:03:59 +02:00
Jean-Baptiste Mardelle
8cd51299bf Expand/collapse all bin folders with Shift+click
Related to #287
2020-07-12 15:03:50 +02:00
Jean-Baptiste Mardelle
4bc22b4076 Save folder status (expanded or not).
Related to #287
2020-07-12 15:03:27 +02:00
Jean-Baptiste Mardelle
d9208074f8 When dragging a clip in insert mode, don't allow leaving empty space in timeline.
Related to #673
2020-07-12 15:00:20 +02:00
Jean-Baptiste Mardelle
e6d2c20598 Restore seek in clip monitor on Shift + move mouse 2020-07-12 14:26:40 +02:00
Jean-Baptiste Mardelle
b72f28b972 Don't show monitor overlay (fpt, timecode, ...) in audio seek bar 2020-07-12 12:49:58 +02:00
Jean-Baptiste Mardelle
5736dfe8c7 Timeline: don't allow moving a keyframe at same pos as another one.
Related to #686
2020-07-12 12:44:10 +02:00
Jean-Baptiste Mardelle
f0e73b312d In insert mode, deleting a clip should perform an extract operation.
Related to #673
2020-07-12 11:32:57 +02:00
Jean-Baptiste Mardelle
a5e5af96dd Fix clip url not correctly updated when opening project with missing clips.
Related to #536
2020-07-12 11:03:06 +02:00
Jean-Baptiste Mardelle
fdaa4321b1 When dropping a folder from a file manager to bin, don't create folders that contain no valid clip 2020-07-12 10:24:53 +02:00
Jean-Baptiste Mardelle
304e5a0935 Expand/collapse all bin folders with Shift+click
Related to #287
2020-07-12 10:15:33 +02:00
Jean-Baptiste Mardelle
c42d254375 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-11 22:38:52 +02:00
Jean-Baptiste Mardelle
6e5bb1f5cc Save folder status (expanded or not).
Related to #287
2020-07-11 22:38:30 +02:00
Albert Astals Cid
d76712628f GIT_SILENT Upgrade release service version to 20.11.70. 2020-07-11 12:31:09 +02:00
Albert Astals Cid
94010686e4 GIT_SILENT Upgrade release service version to 20.07.80. 2020-07-11 11:58:53 +02:00
Albert Astals Cid
81ecee58bd Change KDE_APPLICATIONS_VERSION to RELEASE_SERVICE_VERSION https://phabricator.kde.org/T11933
CCMAIL: jr@jriddell.org
GIT_SILENT
2020-07-11 08:18:19 +02:00
Jean-Baptiste Mardelle
ddacda93a0 Don't try to archive color clips, prompting missing clip error 2020-07-10 18:54:29 +02:00
Jean-Baptiste Mardelle
0c36cf7932 Fix disabling autorotate option, add it for images
Fixes #749
2020-07-10 18:45:01 +02:00
Jean-Baptiste Mardelle
dc2e00e4d9 Fix missing bin audio thumbs on project open, ensure we only store small audio thumbnail icons 2020-07-10 15:45:24 +02:00
Jean-Baptiste Mardelle
08ef176432 Increase monitor audio thumb resolution, add monitor seek bar in clip monitor 2020-07-10 15:23:46 +02:00
Jean-Baptiste Mardelle
6fa7f38a23 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-10 14:27:13 +02:00
Jean-Baptiste Mardelle
6c60a1a760 Always use a dark background for monitor audio thumbs (fixes visibility on light color theme) 2020-07-10 14:18:04 +02:00
Jean-Baptiste Mardelle
2fb368f798 Add visible handles to monitor zoom bar.
Related to #651
2020-07-10 14:06:22 +02:00
Jean-Baptiste Mardelle
34cb8ab222 Fix clip monitor image vertical offset on resize 2020-07-10 11:49:35 +02:00
Jean-Baptiste Mardelle
11bd996488 Merge branch 'afarid/kdenlive-patch-7' 2020-07-10 11:24:06 +02:00
Jean-Baptiste Mardelle
ce8af4251d Add option to display clip monitor audio thumbs below video instead of an overlay
Related to #651
2020-07-10 11:18:03 +02:00
Jean-Baptiste Mardelle
dee2bf0880 Zoom bar: scroll with cursor position, various usability fixes
Related to #651
2020-07-10 10:01:28 +02:00
Jean-Baptiste Mardelle
38e4d06b17 Increase on monitor audio thumbnail resolution for long clips 2020-07-09 11:56:36 +02:00
Jean-Baptiste Mardelle
2160ead15a Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-09 11:52:53 +02:00
Jean-Baptiste Mardelle
75ad10adfa Add clip length adjustment to speed dialog.
Related to #224
2020-07-09 09:41:42 +02:00
Farid Abdelnour
92133cf826 Change Slideshow Clip to Image Sequence.
Should we replace all the function names as well from SlideshowClip to ImageSequence?
2020-07-08 15:29:35 +00:00
Albert Astals Cid
50085b9fca Set the VERSION at the cmake level
This helps our releasing tools know which version we're packaging and do
various things like set the released version on the appdata xml, create
the bugzilla entry for that version, etc.
2020-07-08 11:38:56 +00:00
Jean-Baptiste Mardelle
ec1ceb3e7f Seek in bin thumbnails on mouse hover, disabled by default (setting in Bin menu) 2020-07-08 09:48:50 +02:00
Jean-Baptiste Mardelle
f241d19166 Draw clip status (image clip, missing) in bin icon view too 2020-07-07 09:07:19 +02:00
Jean-Baptiste Mardelle
1ebfac4cdb Correctly update title templates list on each opening of title widget 2020-07-07 08:13:11 +02:00
Jean-Baptiste Mardelle
5f7355d573 Merge branch 'master' of invent.kde.org:multimedia/kdenlive 2020-07-06 22:54:42 +02:00
Jean-Baptiste Mardelle
cc84f3f579 titler: add option to save title and add to project in in one pass (through the create button menu) 2020-07-06 22:47:42 +02:00
Jean-Baptiste Mardelle
075dc41c48 Fix compilation 2020-07-06 12:01:37 +00:00
Jean-Baptiste Mardelle
fed2ec3de0 Clickable clip name on top of clip properties widget (opens a file explorer to the clip location)
Related to #748
2020-07-06 13:43:31 +02:00
Jean-Baptiste Mardelle
7b25597f2a Fix freebsd compilation (2nd round) 2020-07-05 22:38:18 +02:00
Jean-Baptiste Mardelle
381e4026a3 Attempt to fix freebsd compilation 2020-07-05 22:31:16 +02:00
Jean-Baptiste Mardelle
a013623b1e Show full clip path in clip properties widget title.
Related to #748
2020-07-05 19:09:56 +02:00
Farid Abdelnour
6539a5583d Substitute "Add Slideshow Clip" with "Add Image Sequence". 2020-07-05 16:46:20 +00:00
Jean-Baptiste Mardelle
e16c37c89c Add icons to new rows/columns layout 2020-07-05 18:45:48 +02:00
Jean-Baptiste Mardelle
c20d3da613 Merge branch 'jlskuz/kdenlive-master' 2020-07-05 18:42:09 +02:00
Jean-Baptiste Mardelle
55237b8084 Fix cursor position on zoombar, always center zoom on current cursor position.
Related to #651
2020-07-01 17:55:13 +02:00
Julius Künzel
733c2d8277 Merge branch 'dockareaoriantationmanagment' into 'master'
Add option to switch between row and column arrangement for dock areas via menu entry in "view" menu.

See merge request jlskuz/kdenlive!1
2020-06-30 22:47:29 +00:00
Julius Künzel
bab3c98c23 Update src/dockareaorientationmanager.h, src/dockareaorientationmanager.cpp, src/kdenliveui.rc, src/mainwindow.cpp files 2020-06-30 22:05:54 +00:00
Julius Künzel
76e793d4de Layout Improvement: Use TopLeftCorner and BottomLeftCorner for LeftDockWidgetArea 2020-06-30 08:58:03 +00:00
l10n daemon script
6a5ec56aed GIT_SILENT made messages (after extraction) 2020-06-30 02:09:23 +02:00
Julius Künzel
c5f7ad61c4 Layout Improvement: Use TopRightCorner and BottomRightCorner for RightDockWidgetArea 2020-06-28 17:11:45 +00:00
Simon A. Eugster
952a7b2224 Merge branch 'feature/granjow/decimal-separator'
This MR includes the following changes for decimal point handling:

* MLT XML in project files is now always stored with "C" as LC_ALL, meaning that it will always use `.` as decimal separator. This means that new project files should not run into issues with `,` or another character as decimal separator.
* When loading an old project file which uses a different decimal separators, the values are converted:
  * Effect parameters are converted based on their type
  * Filter parameters are converted based on a list of known properties which need conversion
  * General properties in the document are also converted based on a list (e.g. all `frame_rate` properties)

Related: #78
Closes #713
2020-06-27 21:47:04 +02:00
Simon A. Eugster
ed32c5e701 Update dev docs on locale handling 2020-06-26 22:56:57 +02:00
Jean-Baptiste Mardelle
b41fc1dfae Adjust drag button position when zoombar is displayed 2020-06-26 11:52:48 +02:00
Jean-Baptiste Mardelle
d7da98efcb Monitor zoombar: zoom audio thumbs too (audio thumb resolution is still bad on zoom), fix some regressions caused by zoombar
Related to #651
2020-06-26 11:38:15 +02:00
Jean-Baptiste Mardelle
b43c0abaee Monitor zoombar: don't hide monitor audio thumb when active
Related to #651
2020-06-26 08:17:27 +02:00
Jean-Baptiste Mardelle
3cb5c32d22 Fix clip height not updated on track change in insert/overwrite modes.
Fixes #723
2020-06-26 08:08:42 +02:00
Jean-Baptiste Mardelle
07aab6b84a Fix stream number appearing in clip name of single stream clips 2020-06-26 07:45:00 +02:00
Jean-Baptiste Mardelle
8e5f6bb3d7 First version of monitor zoombar (activated by CTRL+Wheel on ruler) 2020-06-25 08:41:53 +02:00
Jean-Baptiste Mardelle
c90660b61b Fix drop in timeline from clip monitor possible crash and disappearing clip (if mouse released above track headers) 2020-06-24 10:11:02 +02:00
Simon A. Eugster
a1c13cb414 Review remaining LC_NUMERIC occurrences
Related: #713
2020-06-21 10:49:31 +02:00
Simon A. Eugster
2f64cc05a4 Remove LC_NUMERIC from mlt to load MLT XML correctly
Related: #713
2020-06-21 10:30:29 +02:00
Simon A. Eugster
4fc20a3f1d Review remaining occurrences of QLocale
Related: #713
2020-06-20 23:37:34 +02:00
Simon A. Eugster
2b9f415c32 Merge branch 'master' into feature/granjow/decimal-separator 2020-06-20 22:10:11 +02:00
Simon A. Eugster
b0f80cb89a Remove more QLocale usages and validate others
Related: #713
2020-06-20 22:00:42 +02:00
Simon A. Eugster
91dafd608c WIP: Remove QLocales
Related: #713
2020-06-20 08:07:44 +02:00
Jean-Baptiste Mardelle
bb34de36d5 Don't draw splash screen progress bar when no progess 2020-06-19 10:00:29 +02:00
l10n daemon script
8cbe8d8416 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-06-18 05:38:37 +02:00
l10n daemon script
cbb9234591 GIT_SILENT made messages (after extraction) 2020-06-18 02:17:38 +02:00
Jean-Baptiste Mardelle
086226dbec Fix crash on audiothumbnail missing source 2020-06-17 23:20:26 +02:00
Jean-Baptiste Mardelle
8fbc80d9c6 Fix timeline zone out is 1 frame before expected position 2020-06-17 21:41:08 +02:00
Bruno Santos
253885cb99 Add luma mask option to composite transition 2020-06-17 13:00:08 +00:00
l10n daemon script
e113c1f734 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-06-17 14:06:23 +02:00
Jean-Baptiste Mardelle
59c35849f1 Cleanup & ensure clip monitor audio thumb is displayed even if timeline thumbnails is off 2020-06-17 11:35:02 +02:00
l10n daemon script
0feea4d192 GIT_SILENT made messages (after extraction) 2020-06-17 11:31:16 +02:00
Jean-Baptiste Mardelle
b14e8a4c9b Fix spacer in overwrite mode, disable spacer in insert mode.
Fixes #677
2020-06-17 10:10:42 +02:00
Jean-Baptiste Mardelle
d98c006e29 integrate stream effects with undo/redo 2020-06-16 22:50:42 +02:00
Simon A. Eugster
36729b22df Decimal point: Treat all parameter types
Related: #713
2020-06-16 22:47:02 +02:00
Jean-Baptiste Mardelle
39272b99eb Rename OpenTimelineIO import/export actions for clarity.
Fixes #692
2020-06-16 13:15:04 +02:00
Jean-Baptiste Mardelle
e9ad1a7a13 Implement gain and normalize audio stream effects.
Related to #382
2020-06-16 13:09:44 +02:00
Jean-Baptiste Mardelle
c2ee48cbbd Preliminary support for audio stream effects (only swap and copy channel working)
Related to #382
2020-06-16 10:27:13 +02:00
Simon A. Eugster
010a531e5a Decimal separator: Fix window filter
Related: #713
2020-06-15 22:08:13 +02:00
Jean-Baptiste Mardelle
f5b85e60ef Add action to restore current clip target tracks to default 2020-06-15 11:47:51 +02:00
Simon A. Eugster
d46ea7aa8a Decimal separator: Replace time codes 2020-06-14 20:53:33 +02:00
Jean-Baptiste Mardelle
ef43322a62 Fix working on project with proxy only 2020-06-14 11:21:17 +02:00
Jean-Baptiste Mardelle
eba9129fed When opening project with missing proxies, allow not rebuilding proxies 2020-06-14 09:01:26 +02:00
Simon A. Eugster
64357493c7 Fix decimal point for animated rect and resource
Related: #713
2020-06-13 00:20:01 +02:00
Jean-Baptiste Mardelle
78f53637c9 Fix crash in project settings caused by recent update to cache data management 2020-06-12 22:36:33 +02:00
Jean-Baptiste Mardelle
d206db0e1a Ensure we have a valid context before drawing keyframes 2020-06-12 17:39:41 +02:00
Jean-Baptiste Mardelle
63927a334d Don't attempt activating a monitor if it is hidden.
CCBUG: 422849
2020-06-12 17:39:41 +02:00
Jean-Baptiste Mardelle
e2b32e24b5 Fix insert of AV clips on video tracks with no audio mirror.
Fixes #719
2020-06-12 14:31:31 +02:00
Jean-Baptiste Mardelle
a5c19ed87a Improve management of cached data, allow cleaning cache data older than x months 2020-06-12 14:08:36 +02:00
Jean-Baptiste Mardelle
546d6b4612 Ensure project clip backup url is correctly updated on replace clip 2020-06-12 10:12:27 +02:00
Jean-Baptiste Mardelle
08485f1bc4 Fix downloaded render profiles not found on Windows.
Related to 708
2020-06-10 18:36:34 +02:00
Jean-Baptiste Mardelle
e44ecb3fd4 Fix use of deprecated KRun methods 2020-06-10 07:20:43 +02:00
Jean-Baptiste Mardelle
8b6d08d893 Fix crash on disabled clip undo / redo insert.
Related to #714
2020-06-09 23:20:53 +02:00
Simon A. Eugster
fd8e513fba Fix other builds 2020-06-09 11:02:14 +02:00
Simon A. Eugster
b4128552e0 Fix decimal point in filters
Related: #713
2020-06-09 10:20:48 +02:00
Jean-Baptiste Mardelle
48d199ad85 Cleaner monitor ticks in ruler 2020-06-09 00:05:28 +02:00
Jean-Baptiste Mardelle
14c8779e88 Fix lag caused by monitor ruler code when resizing the last clip of a long project 2020-06-08 23:34:27 +02:00
Jean-Baptiste Mardelle
822b16713e Add frames / seconds ticks to effect keyframe view 2020-06-08 23:33:40 +02:00
Simon A. Eugster
2445f6d121 Replace decimal separator in keyframe parameters
Related: #713
2020-06-08 23:22:57 +02:00
Simon A. Eugster
4fecc52166 Convert decimal separator in list type MLT properties
Related: #713
2020-06-08 22:18:25 +02:00
Simon A. Eugster
782667bebb Do not convert decimal separator in time codes 2020-06-08 15:39:22 +02:00
Simon A. Eugster
f07ea0f61d Fix some decimal separator issues while upgrading
Properties are converted to C locale on-the-fly.

Related: #713
2020-06-08 00:26:15 +02:00
Jean-Baptiste Mardelle
df74b33346 mark splashscreen method as override 2020-06-07 18:08:23 +02:00
Vincent Pinon
da94c36baa Merge branch 'release/20.04' 2020-06-07 12:11:53 +00:00
Vincent Pinon
c993b6ce6f Fix all icons failing to load
(theme path reset by Kirigami < 5.60)

FIX: 408386
2020-06-07 12:08:28 +00:00
Simon A. Eugster
cf951dbcce Remove deprecated locale related code
Locale is now set after initialising MLT factory.

Related: #713
2020-06-07 00:19:44 +02:00
Simon A. Eugster
26b583b011 Switch to C locale after initialising MLT
This ensures that we always use . as decimal separator, regardless of
the user locale (which might use , or something else).

References #713
2020-06-06 23:51:32 +02:00
Simon A. Eugster
217ef52eb4 WIP: Parameter types 2020-06-06 23:51:32 +02:00
Simon A. Eugster
b1b5644512 Debug output improvements 2020-06-06 23:51:32 +02:00
Jean-Baptiste Mardelle
d04c4cd94f Windows specific shortut to change a grouped clip's track (Alt+mouse)
Related to #337
2020-06-06 22:29:45 +02:00
Jean-Baptiste Mardelle
4bf92f8d93 Enforce rgb24 format for color clips (faster compositing and prevents colorspace conversion) 2020-06-06 22:07:14 +02:00
Jean-Baptiste Mardelle
44ce0c59ee Smaller icons in notes widget toolbar 2020-06-06 22:07:14 +02:00
Vincent Pinon
72e0f42d62 Fix fuzzing build 2020-06-06 15:43:43 +02:00
Vincent Pinon
ecd97df688 Fix compile warnings 2020-06-06 15:43:43 +02:00
Jean-Baptiste Mardelle
a4a3a73aec Switch subtitle filter to use av.filename parameter that is now better supported in MLT 2020-06-05 23:59:27 +02:00
Jean-Baptiste Mardelle
9719182bca Switch subtitle filter to use av.filename parameter that is now better supported in MLT 2020-06-05 23:59:06 +02:00
Bruno Santos
2326212428 Update Premiere shortcuts 2020-06-05 16:16:37 +00:00
Jean-Baptiste Mardelle
df6d8cdbfa Merge branch '2004' 2020-06-05 17:45:35 +02:00
Jean-Baptiste Mardelle
6ed1f5f077 Correctly initialize timeline snapping 2020-06-05 17:34:18 +02:00
Jean-Baptiste Mardelle
d906769bfb Fix loop clip always disabled.
Fixes #251
2020-06-05 17:18:06 +02:00
Jean-Baptiste Mardelle
98196d3c6e Allow Shift+Alt as alternate shortcut to move single clip to another track.
Related to #337
2020-06-05 11:58:18 +02:00
Jean-Baptiste Mardelle
c77cb396ff Fix moving single clip in group on another track with meta
Related to #382
2020-06-05 10:33:52 +02:00
Jean-Baptiste Mardelle
9a06f62799 Fix crash on project open and possible guides loss on recovery.
Fixes #711
2020-06-05 09:41:20 +02:00
Jean-Baptiste Mardelle
7688206ecf Fix crash on project open and possible guides loss on recovery.
Fixes #711
2020-06-05 09:40:46 +02:00
Jean-Baptiste Mardelle
141c8848e5 When resizing a geometry effect, like transform, keep item centered 2020-06-05 08:19:00 +02:00
Jean-Baptiste Mardelle
d38c2549d9 Ensure newly created folder is active so that added clips go in it. 2020-06-05 08:18:45 +02:00
Jean-Baptiste Mardelle
300b03ac7c Make effect keyframe view follow cursor when zoomed 2020-06-05 08:18:32 +02:00
Jean-Baptiste Mardelle
2a792bfe8d Clip proxy: drop data and subtitle streams
Related to #695
2020-06-05 08:16:12 +02:00
Jean-Baptiste Mardelle
f29a3194af Fix cannot paste clip from project containing more tracks 2020-06-05 08:15:24 +02:00
Jean-Baptiste Mardelle
79d33eaae4 Various timeline preview fixes (resize clip did not invalidate, undo/redo sometimes restoring invalid chunks) 2020-06-05 08:14:57 +02:00
Jean-Baptiste Mardelle
63175b60f9 Archive project: fix clip with speed effect url not updated, resulting in missing clip message.
BUG: 422135
2020-06-05 08:06:43 +02:00
Jean-Baptiste Mardelle
7c6e28eae8 Reset current project name if opening backup file fails to prevent erasing original
Related to #705
2020-06-05 08:06:00 +02:00
Jean-Baptiste Mardelle
0ec236206d Keyframe view zoom bar: don't allow invalid size (x > y) 2020-06-05 08:03:39 +02:00
Jean-Baptiste Mardelle
263d474b61 Ensure no double entries in generators menu 2020-06-05 08:03:25 +02:00
Jean-Baptiste Mardelle
089002467c Fix sort order not correctly restored on open.
Related to #583
2020-06-05 08:03:09 +02:00
Jean-Baptiste Mardelle
4c16d144b6 Update bin sort menu when clicking in Bin headers.
Related to #583
2020-06-05 08:02:25 +02:00
Vincent Pinon
aad2b3d420 Check compiler before setting options 2020-06-04 08:06:42 +00:00
Jean-Baptiste Mardelle
36ea33714e Project notes: allow creating markers from timestamps and assign timestamps to current bin clip
CCBUG: 420843
2020-06-03 23:19:59 +02:00
Jean-Baptiste Mardelle
e892a7a2e1 Project notes will now be inserted depending on the active monitor. If the Clip Monitor is active, inserting a project note will be relative to Bin clip, otherwise to timeline.
Related to #407
2020-06-03 09:46:04 +02:00
Jean-Baptiste Mardelle
4cc6bfdd2d Track headers cannot be made too small - keep buttons always visible.
Related to #696
2020-06-02 09:58:55 +02:00
Jean-Baptiste Mardelle
093d415e32 Save timeline status (shown/hidden) in layouts 2020-06-02 08:10:58 +02:00
Jean-Baptiste Mardelle
39799e91b6 Save layout in a specific file: $HOME/.config/kdenlive-layoutsrc
Related to #417
2020-06-01 12:26:25 +02:00
Jean-Baptiste Mardelle
b5520d4137 When resizing a geometry effect, like transform, keep item centered 2020-06-01 10:28:02 +02:00
Gustavo Carneiro
4652d9027f kdenlive: remove compile warnings 2020-06-01 07:01:59 +00:00
Jean-Baptiste Mardelle
059750ad4a Ensure newly created folder is active so that added clips go in it. 2020-06-01 08:47:22 +02:00
Jean-Baptiste Mardelle
431e71749d Make effect keyframe view follow cursor when zoomed 2020-05-31 22:46:41 +02:00
Jean-Baptiste Mardelle
a85fb91a20 Fix razor timeline cursor broken.
Fixes #706
2020-05-31 22:30:31 +02:00
Jean-Baptiste Mardelle
3332e4739b More reliable progress bar in splash screen 2020-05-31 22:04:54 +02:00
Jean-Baptiste Mardelle
49ba7fc614 Fix freeze on start on some systems introduced in recent commit 2020-05-31 21:27:26 +02:00
Jean-Baptiste Mardelle
39ec8cfd99 Add progress bar to splash screen (wip) 2020-05-31 19:20:01 +02:00
Jean-Baptiste Mardelle
4087ed1283 Fix possible crash dragging clip to timeline if video track had no mirror 2020-05-31 18:29:50 +02:00
Jean-Baptiste Mardelle
f9bfcc57fb Clip proxy: drop data and subtitle streams
Related to #695
2020-05-31 12:17:48 +02:00
Jean-Baptiste Mardelle
5d8ee99daf Display project loading status on splash screen if opening a project at start.
Related to !89
2020-05-31 11:59:22 +02:00
Jean-Baptiste Mardelle
a7651105b3 Fix possible crash when dragging recently inserted clip in timeline.
Related to #698
2020-05-29 22:15:48 +02:00
Jean-Baptiste Mardelle
2e57770277 Fix cannot paste clip from project containing more tracks 2020-05-29 15:51:08 +02:00
Jean-Baptiste Mardelle
7c33f4003b Various timeline preview fixes (resize clip did not invalidate, undo/redo sometimes restoring invalid chunks) 2020-05-29 15:51:08 +02:00
Jean-Baptiste Mardelle
6dca5a8836 Archive project: fix clip with speed effect url not updated, resulting in missing clip message.
BUG: 422135
2020-05-28 18:22:04 +02:00
Jean-Baptiste Mardelle
200f84767d Reset current project name if opening backup file fails to prevent erasing original
Related to #705
2020-05-28 16:34:25 +02:00
Vincent Pinon
486ce5495a Fix typo & forgotten point, probably others there... 2020-05-28 00:04:30 +02:00
Vincent Pinon
2bebf0d964 Refine build instructions 2020-05-27 23:54:08 +02:00
Simon A. Eugster
9c93e825ee Fix shortcuts in main menu
Closes #563
2020-05-25 22:49:23 +02:00
Simon A. Eugster
b651a4deb8 Fix crash when insert zone has no audio track
Closes #694
2020-05-25 16:38:23 +02:00
Jean-Baptiste Mardelle
fb05e738c5 Keyframe view zoom bar: don't allow invalid size (x > y) 2020-05-24 18:02:31 +02:00
Jean-Baptiste Mardelle
0790a27e77 Ensure no double entries in generators menu 2020-05-24 08:50:54 +02:00
Jean-Baptiste Mardelle
ffd00a77f9 Fix sort order not correctly restored on open.
Related to #583
2020-05-24 08:50:54 +02:00
Simon A. Eugster
6c1610e59a Re-order menu entries, put project settings on bottom 2020-05-23 17:08:10 +02:00
Simon A. Eugster
b099161024 Raise UI version number
This got lost in the merge of MR !109 and caused the Save Copy entry not
to be visible.
2020-05-23 09:09:15 +02:00
Jean-Baptiste Mardelle
7c8ddb752b Fix regression in previous commit (not all audio thumbs created) 2020-05-21 22:58:00 +02:00
Jean-Baptiste Mardelle
cb75b7300f Fix possible crash on close (audio thumbnail job) 2020-05-21 22:51:37 +02:00
Jean-Baptiste Mardelle
207db629d4 Fix incorrect tracks count affecting audio stream dialog 2020-05-21 22:11:16 +02:00
Jean-Baptiste Mardelle
e756724e86 Fix video stream disabled on profile change or reload clip 2020-05-21 21:56:40 +02:00
Julius Künzel
0c5e4ea1f3 Add a "Save Copy…" action to save a project copy
Closes #560
MR: !109
2020-05-21 21:38:54 +02:00
Jean-Baptiste Mardelle
c2da5e082c Fix streams menu position 2020-05-21 15:50:18 +02:00
Jean-Baptiste Mardelle
95752259c9 Define apostrophe as default shortcut for audio streams menu in timeline 2020-05-21 15:47:52 +02:00
Jean-Baptiste Mardelle
dc6568b9f8 Add action to popup the target stream menu (in menu Timeline > Tracks > Switch Target Track Audio Stream)
to enable shortcut activation
2020-05-21 15:16:45 +02:00
Rupert Espley
5c6913c7aa Update org.kde.kdenlive.desktop to inherit correct window title and icon, instead of lowercase title and generic icon
Tested with Kdenlive 20.04.0 on latest Arch. The application title and
icon were correct in the GNOME Applications view, but upon opening
Kdenlive, the window title was "kdenlive" and the window icon did not
match my system Kdenlive icon, which is provided by Papirus (but this
applies to other themes that provide a Kdenlive icon). Adding a startup
WM class ensures the window title is capitalised the the window icon
matches the user's application icon.
2020-05-21 13:17:32 +02:00
Simon A. Eugster
499e8cb21e Docs: How to describe class diagram 2020-05-21 13:08:13 +02:00
Simon A. Eugster
b03a6ed0f1 Docs: Describe branching model and release cycle, add links to KF5 and Qt5 2020-05-21 13:08:13 +02:00
Jean-Baptiste Mardelle
78d0ce9118 Add arrow button in track targets to switch stream 2020-05-20 23:00:17 +02:00
Jean-Baptiste Mardelle
71ffcac6d1 Fix audio stream target name for stream > 9 2020-05-20 22:08:01 +02:00
Jean-Baptiste Mardelle
a57123e643 Fix cannot switch audio target with 1 stream clips 2020-05-20 17:21:19 +02:00
Jean-Baptiste Mardelle
c6e3ff10ff Update bin sort menu when clicking in Bin headers.
Related to #583
2020-05-20 13:02:39 +02:00
Jean-Baptiste Mardelle
534cfb9bf3 Merge branch '2004' 2020-05-20 06:18:14 +02:00
Jean-Baptiste Mardelle
ec3dd32136 Fix set audio reference incorrectly disabled on AV grouped clips
BUG: 421669
2020-05-20 06:16:58 +02:00
Jean-Baptiste Mardelle
4d74e3c404 Fix insert sometimes not working and add status bar label to indicate timeline mode
Related to #673
2020-05-19 22:53:18 +02:00
Jean-Baptiste Mardelle
c4d18763f1 Merge branch '2004' 2020-05-19 10:51:14 +02:00
Jean-Baptiste Mardelle
be34904530 Fix keyframe view imprecision on high zoom 2020-05-19 10:35:49 +02:00
Jean-Baptiste Mardelle
845a55dfcc Fix clicking on guide not seeking to exact guide position 2020-05-19 10:34:45 +02:00
Jean-Baptiste Mardelle
bb99e9126c Fix timeline ruler incorrectly cut on small zoom 2020-05-19 10:34:32 +02:00
Jean-Baptiste Mardelle
f093dddda1 Fix crash on extract clip with shortcut
Fixes #679
2020-05-19 10:33:29 +02:00
Jean-Baptiste Mardelle
31909d2ba9 Lift previous clip on insert drag.
Related to #673
2020-05-18 22:46:06 +02:00
Jean-Baptiste Mardelle
787f822c2d Fix insert drag affecting all tracks, and fix snapping on insert/overwrite drag
Related to #673
2020-05-18 19:13:29 +02:00
Jean-Baptiste Mardelle
5e52a8dea2 Fix drag overwrite broken for multi stream clips 2020-05-18 13:02:17 +02:00
Jean-Baptiste Mardelle
865f17f4af Fix drop regression (in/out ignored) 2020-05-18 10:00:20 +02:00
Laurent Montel
0b83d24874 GIT_SILENT: we don't use phabricator now 2020-05-17 18:57:47 +02:00
Jean-Baptiste Mardelle
5ac14299b7 Fix only 1st stream dropped on audio only drag 2020-05-17 11:34:33 +02:00
Jean-Baptiste Mardelle
5bd4e95993 Fix keyframe view imprecision on high zoom 2020-05-17 10:43:07 +02:00
Jean-Baptiste Mardelle
18e3e6d51c Fix extra audio stream incorrectly inserted on drop 2020-05-17 10:35:31 +02:00
Jean-Baptiste Mardelle
deeb0b056e Fix clicking on guide not seeking to exact guide position 2020-05-17 08:39:27 +02:00
Jean-Baptiste Mardelle
067b082f59 Hide message about too many audio streams if enough streams are disabled 2020-05-16 23:02:17 +02:00
Jean-Baptiste Mardelle
34c400903a Fix various issues with multistream clips:
* don't hide switch profile dialog
* fix only 1 stream inserted when entering timeline over an audio track
2020-05-16 18:45:06 +02:00
Jean-Baptiste Mardelle
8cfe7ff751 Cleanup timeline drawing of track background & scrollbars 2020-05-15 23:12:23 +02:00
Jean-Baptiste Mardelle
c45f0fef81 Fix timeline ruler incorrectly cut on small zoom 2020-05-15 23:11:28 +02:00
Jean-Baptiste Mardelle
051f3bcf7d integrate clip rating with undo/redo.
BUG: 421552
2020-05-15 21:53:55 +02:00
Jean-Baptiste Mardelle
13f180f98c Fix dragging multistream clip using target tracks 2020-05-15 14:45:14 +02:00
Jean-Baptiste Mardelle
efad2514f9 Fix moving single clip in group on another track with meta
Related to #382
2020-05-14 23:33:44 +02:00
Jean-Baptiste Mardelle
a06cd10cff Fix possible startup crash 2020-05-14 22:42:48 +02:00
Jean-Baptiste Mardelle
f6a35ed884 Remember project channels in audio mixer when no audio 2020-05-14 16:02:02 +02:00
Jean-Baptiste Mardelle
9f5eea45f1 Preliminary support for projects with 4/6 audio channels 2020-05-14 15:53:48 +02:00
Jean-Baptiste Mardelle
40efcb54b8 Merge branch '2004' 2020-05-14 13:28:28 +02:00
Jean-Baptiste Mardelle
549f89545e Ensure we start with the correct fps when default profile is not 25 fps.
CCBUG: 420580
2020-05-14 13:25:15 +02:00
Jean-Baptiste Mardelle
c46b8b3c89 Improve timeline position on zoom 2020-05-14 10:29:41 +02:00
Jean-Baptiste Mardelle
53240965b9 In Bin, when selecting a clip with more audio streams than current project,
show message allowing to add tracks or edit the streams.
Related to #382
2020-05-14 10:24:42 +02:00
Jean-Baptiste Mardelle
95e26813a9 Add config option to enable all (default), first or first 2 audio streams in multi stream clip.
Related to #382
2020-05-13 22:56:07 +02:00
Jean-Baptiste Mardelle
274bbb2572 Fix "merge all streams"
Related to #382
2020-05-13 22:03:24 +02:00
Jean-Baptiste Mardelle
7845984199 Fix monitor audio thumbnails for single stream clips 2020-05-13 22:02:38 +02:00
Jean-Baptiste Mardelle
21cfd4d7e9 Fix crash when deselecting all audio streams 2020-05-13 17:35:27 +02:00
Jean-Baptiste Mardelle
ca7fefe95c Some audio thumbnail optimizations 2020-05-13 17:24:12 +02:00
Jean-Baptiste Mardelle
211a9eaec1 Improve timeline position on zoom 2020-05-13 12:14:47 +02:00
Yuri Chornoivan
5d18da44f6 Use i18np() 2020-05-13 08:55:33 +03:00
Jean-Baptiste Mardelle
acbe4fe517 Locate clip: select file in file manager
BUG: 421365
2020-05-12 12:00:06 +02:00
Jean-Baptiste Mardelle
dbec1372e4 Multi stream clips: drag all active streams in timeline.
Related to #382
2020-05-12 11:45:59 +02:00
Jean-Baptiste Mardelle
89cec14eb3 Locate clip: select file in file manager
BUG: 421365
2020-05-12 11:10:39 +02:00
Jean-Baptiste Mardelle
5eadcd26a2 Multi stream clips: display all active streams thumbnails in clip monitor 2020-05-12 10:45:03 +02:00
Christoph Feck
22c0809aad GIT_SILENT Upgrade release service version to 20.04.1. 2020-05-11 22:25:13 +02:00
Jean-Baptiste Mardelle
dea6b1879a Fix audio streams incorrectly handled in properties dialog on first insert 2020-05-11 08:43:07 +02:00
Jean-Baptiste Mardelle
cea8035192 Update appdata version 2020-05-11 06:35:16 +00:00
Jean-Baptiste Mardelle
cd74627eb9 Merge branch '2004' 2020-05-11 08:19:21 +02:00
Jean-Baptiste Mardelle
4d9dd64426 Disable loading of .mlt playlists with profile not equal to project profile (caused crash) 2020-05-11 08:15:31 +02:00
Jean-Baptiste Mardelle
879924ecaf Don't fetch frame for audiospectrum if it is hidden 2020-05-11 07:29:56 +02:00
Jean-Baptiste Mardelle
31a5423f7b Enable audiospectrum by default 2020-05-11 07:29:56 +02:00
Jean-Baptiste Mardelle
a5c004415f WIP: improved multistream audio workflow
- Allow selecting multiple streams
- Allow renaming streams from clip properties panel
2020-05-10 23:39:47 +02:00
Yuri Chornoivan
425cce140a Use i18np() instead of inplace implementation 2020-05-10 09:42:07 +03:00
Jean-Baptiste Mardelle
47989cc145 Allow inserting several tracks in one step.
Related to #382
2020-05-09 22:31:32 +02:00
Jean-Baptiste Mardelle
835ffc3349 Merge branch '2004' 2020-05-09 22:08:05 +02:00
Jean-Baptiste Mardelle
23d992ad22 Make compositions use less vertical space, expand when selected. 2020-05-09 22:07:17 +02:00
Jean-Baptiste Mardelle
006f9dca78 Merge branch '2004' 2020-05-09 13:33:34 +02:00
Jean-Baptiste Mardelle
eb4fc2275a Fix various geometry keyframe regressions in monitor:
-show again path of keyframe centers in monitor
-fix incorrect path interpolation for smooth keyframes
2020-05-09 13:32:00 +02:00
Jean-Baptiste Mardelle
eed22ac422 Merge branch '2004' 2020-05-08 18:42:05 +02:00
Jean-Baptiste Mardelle
d925b8e3ac Fix timeline preview not invalidated on hide track 2020-05-08 18:41:34 +02:00
Jean-Baptiste Mardelle
5de35d2e34 Merge branch '2004' 2020-05-08 16:43:22 +02:00
Jean-Baptiste Mardelle
6b9d4d53a9 Improve handling of missing clips, draw "photo" frame on image clips to differentiate from video clips 2020-05-08 16:42:27 +02:00
Jean-Baptiste Mardelle
58fcf54ffc Merge branch '2004' 2020-05-08 14:57:38 +02:00
Jean-Baptiste Mardelle
f9638000a1 Improve notification of missing(deleted files) and don't allow reloading a mising clip.
Related to #663
2020-05-08 14:55:27 +02:00
Jean-Baptiste Mardelle
0fabb82491 Fix possible crash on subclip thumbnail creation 2020-05-07 21:37:08 +02:00
Jean-Baptiste Mardelle
efe3ee4db9 Fix possible crash on subclip thumbnail creation 2020-05-07 21:35:34 +02:00
Jean-Baptiste Mardelle
0408798044 Merge branch 'feature/granjow/log-histogram' into 'master'
Add Logarithmic scale to Histogram

Closes #655

See merge request kde/kdenlive!107
2020-05-07 17:09:45 +00:00
Simon Eugster
89078cf26d Small refactoring, extract CIE factors
See kde/kdenlive#655
2020-05-07 17:09:45 +00:00
Jean-Baptiste Mardelle
bad766f68b Merge branch '2004' 2020-05-07 19:06:03 +02:00
Jean-Baptiste Mardelle
df397caa0a Make Select ALl and Delete shortcuts work in clip marker list.
Related to #660
2020-05-07 19:05:35 +02:00
Jean-Baptiste Mardelle
41c82802c6 Merge branch '2004' 2020-05-07 10:31:18 +02:00
Jean-Baptiste Mardelle
c2d7a770c6 Proxy clips: fix vaapi_h264 profile and ensure we keep the stream order (otherwise results in white proxy clips) 2020-05-07 10:30:42 +02:00
Jean-Baptiste Mardelle
f10e06ebe4 Fix confusion in audio stream names/thumbnails 2020-05-06 22:42:31 +02:00
Jean-Baptiste Mardelle
b11bf77883 Merge branch '2004' 2020-05-06 11:57:57 +02:00
Jean-Baptiste Mardelle
8403633ba8 Fix error causing clip duplication in memory on project opening 2020-05-06 11:54:34 +02:00
Jean-Baptiste Mardelle
a495168a18 Fix compile warning 2020-05-06 11:11:51 +02:00
Jean-Baptiste Mardelle
e736db28f5 Always sync all keyframeable effects position with timeline position 2020-05-06 11:11:04 +02:00
Jean-Baptiste Mardelle
cddc7de007 Improved audio workflow for multi stream clips
Related to #382
2020-05-06 10:15:41 +02:00
Camille Moulin
35b18d07c7 Update build.md breeze package needed on non kde desktops 2020-05-05 19:27:52 +00:00
Jean-Baptiste Mardelle
b46d9fe23b Use safer QSaveFile class to ensure our document is not corrupted on disk full.
Fixes #664
2020-05-05 08:32:48 +02:00
Jean-Baptiste Mardelle
0882c53851 Merge branch '2004' 2020-05-04 16:04:41 +02:00
Jean-Baptiste Mardelle
fd453f881d Don't disable marker actions on selection change (it broke ĉlip monitor actions) 2020-05-04 16:04:04 +02:00
Jean-Baptiste Mardelle
1a79a838bc Fix rubber selection moving with scolling.
Fixes #657
2020-05-04 16:03:57 +02:00
Jean-Baptiste Mardelle
a0fe2879ad Merge branch '2004' 2020-05-04 12:43:38 +02:00
Jean-Baptiste Mardelle
498434c268 Also consider moving clip's markers for snapping.
Fixes #661
2020-05-04 12:42:15 +02:00
Jean-Baptiste Mardelle
29bfe1c824 Merge branch '2004' 2020-05-03 22:42:12 +02:00
Jean-Baptiste Mardelle
8796b4f9af Delete all selected markers in clip properties dialog when requested.
Related to #660
2020-05-03 22:39:55 +02:00
Jean-Baptiste Mardelle
6d2db4bb25 When dragging an effect to a bin clip, ensure effect is pasted before selecting the clip (fix effect not appearing on clip) 2020-05-03 22:21:32 +02:00
l10n daemon script
1532a965cb GIT_SILENT made messages (after extraction) 2020-05-03 09:14:47 +02:00
l10n daemon script
c7bc184b12 GIT_SILENT made messages (after extraction) 2020-05-03 03:22:47 +02:00
Jean-Baptiste Mardelle
f087d3d3eb Merge branch '2004' 2020-05-02 22:28:25 +02:00
Jean-Baptiste Mardelle
d6a6b004a9 Fix image rendering (add %05d suffix) 2020-05-02 22:27:32 +02:00
Jean-Baptiste Mardelle
1875cb37cb Fix timeline preview was incorrectly disabled 2020-05-02 21:59:26 +02:00
Jean-Baptiste Mardelle
12eaebeb2a Merge branch '2004' 2020-05-02 15:28:21 +02:00
Jean-Baptiste Mardelle
380741361b Enforce image sequences with qimage producer.
CCBUG: 415044
2020-05-02 15:27:30 +02:00
Jean-Baptiste Mardelle
90b905eae6 Fix warnings 2020-05-02 15:27:16 +02:00
Jean-Baptiste Mardelle
ed72f2ccf4 Display stream name in clip monitor overlay when playing a multistream clip 2020-05-02 11:53:52 +02:00
Jean-Baptiste Mardelle
41c63e4629 Refresh clip properties panel when switching audio stream from monitor and reverse 2020-05-02 11:17:27 +02:00
Jean-Baptiste Mardelle
36b0928ae6 WIP: add audio stream selection menu to clip monitor 2020-05-02 08:21:27 +02:00
Jean-Baptiste Mardelle
cddb3bfa32 Add new option to merge all audio streams when using multi stream clip
Don't reload clip on audio channel change (fixed in MLT > 6.20)
2020-05-02 07:45:45 +02:00
Jean-Baptiste Mardelle
0404ced463 Merge branch '2004' 2020-05-01 22:16:31 +02:00
Jean-Baptiste Mardelle
9eac390150 Fix MLT 6.20 avformat slideshows not recognized on onpening (convert to standard qimage) 2020-05-01 22:15:56 +02:00
Jean-Baptiste Mardelle
92b4cd1388 Implement timecode parsing when pasting text in Project notes
CCBUG: 420843
2020-05-01 17:17:10 +02:00
Jean-Baptiste Mardelle
6f58f7fb6f Implement timecode parsing when pasting text in Project notes
CCBUG: 420843
2020-05-01 17:16:20 +02:00
Simon A. Eugster
f63e303af0 Update build instructions and add Ubuntu 20.04 2020-05-01 09:10:25 +02:00
Jean-Baptiste Mardelle
c04f700a8c Merge branch '2004' 2020-05-01 08:52:25 +02:00
Jean-Baptiste Mardelle
261590c1f2 Fix template title clips in timeline resetting duration on project re-open
BUG: 420823
2020-05-01 08:51:41 +02:00
Jean-Baptiste Mardelle
5ca2561022 Fix some warnings 2020-05-01 08:29:06 +02:00
Jean-Baptiste Mardelle
b932479b76 Merge branch '2004' 2020-04-29 21:47:03 +02:00
Jean-Baptiste Mardelle
f6d6a03f7e Fix playlist profile incorrectly detected, leading to crashes when seeking in timeline
(used the "consumer" producer instead of "xml"
Fix incorrect argument passed in reload timeline clip from bin
2020-04-29 21:44:59 +02:00
Jean-Baptiste Mardelle
de0dc87d8f Merge branch '2004' 2020-04-29 09:46:44 +02:00
Jean-Baptiste Mardelle
19de41405b Shift + collapse will collapse expand all audio or video tracks.
Related to #643
2020-04-29 09:46:12 +02:00
Jean-Baptiste Mardelle
0c9b68391b On clip cut, auto reselect right part of the clip if it was previously selected 2020-04-28 22:32:50 +02:00
Jean-Baptiste Mardelle
9ffb1f0d6f Merge branch '2004' 2020-04-28 21:39:28 +02:00
Jean-Baptiste Mardelle
33db17b2a0 Fix timeline sometimes not scrolling to cursor position.
Fixes #645
2020-04-28 21:39:01 +02:00
Jean-Baptiste Mardelle
78bdfa8eb2 Merge branch '2004' 2020-04-28 12:15:15 +02:00
Jean-Baptiste Mardelle
c20b513910 Fix paste clips/compositions sometimes not working or pasting on wrong track/position
Fixes #642
2020-04-28 12:14:30 +02:00
Jean-Baptiste Mardelle
4f5af497fd Fix compositions broken on insert audio track 2020-04-28 11:02:05 +02:00
Jean-Baptiste Mardelle
59b62ceb1b Fix tests 2020-04-28 10:46:06 +02:00
Jean-Baptiste Mardelle
6afd734562 Merge branch '2004' 2020-04-28 10:38:06 +02:00
Jean-Baptiste Mardelle
87cfe9993c Ensure we re-focus previous monitor after requesting background frame in titler 2020-04-28 10:25:37 +02:00
Jean-Baptiste Mardelle
beb7d916b7 Fix aspect ratio not working on title images
BUG: 420676
2020-04-28 10:17:07 +02:00
Akhil K Gangadharan
488a1d8d03 titler: Remember to show background 2020-04-28 07:15:28 +02:00
Jean-Baptiste Mardelle
517cd772bf Merge branch '2004' 2020-04-28 07:14:51 +02:00
Jean-Baptiste Mardelle
c2650d6a3a Fix audio drag from monitor broken 2020-04-28 07:14:22 +02:00
Jean-Baptiste Mardelle
77d0671d6d Merge branch 'showbg' into 'master'
titler: Remember to show background

See merge request kde/kdenlive!104
2020-04-28 05:09:17 +00:00
Akhil K Gangadharan
5811ac805d titler: Remember to show background 2020-04-27 03:35:47 +05:30
Jean-Baptiste Mardelle
453cfaadd7 Fix glitch in bin item selection, causing some actions to be disabled
BUG: 420628
2020-04-26 22:32:23 +02:00
Jean-Baptiste Mardelle
2d4f686e0d Show clip speed before name so it's visible when changing speed of a clip with long name 2020-04-26 22:32:23 +02:00
Jean-Baptiste Mardelle
35daad98f7 Fix glitch in bin item selection, causing some actions to be disabled
BUG: 420628
2020-04-26 22:30:17 +02:00
Jean-Baptiste Mardelle
035c90a2b9 Merge branch 'transcode_prores' into 'master'
Add ProRes profiles to transcoding

See merge request kde/kdenlive!102
2020-04-26 19:37:38 +00:00
Bruno Santos
f5a19dbbfe Add ProRes profiles to transcoding 2020-04-26 19:37:38 +00:00
Jean-Baptiste Mardelle
17407969e3 Show clip speed before name so it's visible when changing speed of a clip with long name 2020-04-26 18:50:13 +02:00
Jean-Baptiste Mardelle
50032c9b9c Don't use drop frame timecode for 23.98
CCBUG: 420580
2020-04-26 17:54:00 +02:00
Jean-Baptiste Mardelle
3d21b9c8c7 Updated icon for find clip 2020-04-26 17:54:00 +02:00
Jean-Baptiste Mardelle
eaaecc94a9 Don't use drop frame timecode for 23.98
CCBUG: 420580
2020-04-26 17:52:48 +02:00
Jean-Baptiste Mardelle
34ce4c10de Updated icon for find clip 2020-04-26 17:52:18 +02:00
Simon Eugster
9d168353b0 Merge branch 'feature/granjow/dev-docs' into 'master'
How to build Kdenlive with dependencies

See merge request kde/kdenlive!101
2020-04-26 09:22:23 +00:00
Jean-Baptiste Mardelle
062a518174 Merge branch '2004' 2020-04-25 19:38:32 +02:00
Jean-Baptiste Mardelle
35e2a48606 Fix crash trying to move timeline clip to another track when bin clip had some effects 2020-04-25 19:37:33 +02:00
Jean-Baptiste Mardelle
27072ed4b7 Always save a backup of original project file when archiving in case something goes wrong 2020-04-25 19:36:52 +02:00
Simon A. Eugster
eae293a761 Add short architecture overview 2020-04-25 13:38:22 +02:00
Simon A. Eugster
58d44caae9 Build instructions: build-dep and local installation 2020-04-25 12:39:23 +02:00
Jean-Baptiste Mardelle
efd969e2ad Merge branch '2004' 2020-04-24 22:35:43 +02:00
Jean-Baptiste Mardelle
f655c9190c Fix "archive project" creating broken backup files
CCBUG: 420494
2020-04-24 22:34:39 +02:00
Jean-Baptiste Mardelle
6db574d8de Merge branch '2004' 2020-04-24 17:00:05 +02:00
Jean-Baptiste Mardelle
c0626eb1e3 Don't lose pitch shift when reloading a timeline clip 2020-04-24 16:59:24 +02:00
Jean-Baptiste Mardelle
7c6375d0d2 Merge branch '2004' 2020-04-24 14:51:07 +02:00
Jean-Baptiste Mardelle
255dc78994 Fix crash creating DVD chapters.
Related to #379
2020-04-24 14:47:06 +02:00
Jean-Baptiste Mardelle
e693a4f762 Merge branch '2004' 2020-04-24 12:38:13 +02:00
Jean-Baptiste Mardelle
8961ac3a42 Fix track effect not adjusting duration when track duration changes (new clip appended) 2020-04-24 12:37:34 +02:00
Jean-Baptiste Mardelle
c02194817a Merge branch '2004' 2020-04-22 12:11:19 +02:00
Simon A. Eugster
ec1812e9f7 How to build Kdenlive with dependencies 2020-04-20 15:15:35 +02:00
l10n daemon script
e310fe7ed9 GIT_SILENT made messages (after extraction) 2020-04-20 03:25:51 +02:00
Jean-Baptiste Mardelle
81dd823945 Merge branch 'proxy' into 'master'
Minor change of proxy icon color

See merge request kde/kdenlive!100
2020-04-19 15:23:49 +00:00
Vincent Pinon
c9725c13e0 Fix OTIO imports (no kdenlive:id property) 2020-04-19 02:28:28 +02:00
Jean-Baptiste Mardelle
0658113c5f Merge branch '2004' 2020-04-18 10:54:40 +02:00
Jean-Baptiste Mardelle
a845c0589c Fix tests 2020-04-17 15:39:13 +02:00
Jean-Baptiste Mardelle
c8bfab7ba6 Fix missing parameter in group move causing possible freeze/crash on group move 2020-04-17 14:44:29 +02:00
Jean-Baptiste Mardelle
7eeb8df5c6 Merge branch '2004' 2020-04-17 01:56:20 +02:00
Sashmita Raghav
8c8870c7bb Minor change of proxy icon color 2020-04-16 20:59:19 +00:00
Jean-Baptiste Mardelle
eca23232c1 Merge branch '2004' 2020-04-16 21:53:57 +02:00
Jean-Baptiste Mardelle
5e9eefc566 Merge branch '2004' 2020-04-16 18:26:37 +02:00
Jean-Baptiste Mardelle
2e34e07a29 Merge branch '2004' 2020-04-16 17:48:39 +02:00
Jean-Baptiste Mardelle
2c6bea5905 Correctly update timeline proxy status.
Related to !99
2020-04-16 14:35:17 +02:00
Jean-Baptiste Mardelle
ad750cf7f2 Merge branch 'proxy' into 'master'
Add proxy icon to clips in timeline

See merge request kde/kdenlive!99
2020-04-16 11:37:02 +00:00
Sashmita Raghav
570e524ba0 Add proxy icon to clips in timeline 2020-04-16 11:37:02 +00:00
Jean-Baptiste Mardelle
c2325f34b4 Merge branch '2004' 2020-04-16 11:10:21 +02:00
Jean-Baptiste Mardelle
3d0c98b3a9 Update git master appdata version 2020-04-16 08:52:14 +02:00
Jean-Baptiste Mardelle
58617d100c Fix freeze when changing bin selection
BUG: 419604
2020-04-16 08:51:19 +02:00
l10n daemon script
d576398a73 GIT_SILENT made messages (after extraction) 2020-04-16 03:22:00 +02:00
Jean-Baptiste Mardelle
150173a6fa Merge branch '2004' 2020-04-15 23:15:19 +02:00
Jean-Baptiste Mardelle
36d4b06bac Merge branch '2004' 2020-04-15 11:14:58 +02:00
Jean-Baptiste Mardelle
86c8f895fc Merge branch '2004' 2020-04-15 11:01:15 +02:00
Jean-Baptiste Mardelle
f394e2ff36 Merge branch '2004' 2020-04-15 10:40:45 +02:00
Jean-Baptiste Mardelle
2a60b711fe Merge branch '2004' 2020-04-15 08:16:22 +02:00
Jean-Baptiste Mardelle
4d92b7bd66 Merge branch '2004' 2020-04-15 08:13:54 +02:00
Jean-Baptiste Mardelle
9847cecbaf Merge branch '2004' 2020-04-14 21:08:03 +02:00
Jean-Baptiste Mardelle
16320324c3 Improve track default height / header width.
Related to #629
2020-04-14 21:06:55 +02:00
Jean-Baptiste Mardelle
f48acf407e Merge branch '2004' 2020-04-14 08:38:08 +02:00
Jean-Baptiste Mardelle
6bdb9479e5 Merge branch '2004' 2020-04-13 23:18:17 +02:00
Jean-Baptiste Mardelle
53eaa171aa Merge branch '2004' 2020-04-13 22:42:39 +02:00
Jean-Baptiste Mardelle
50b66492b8 Merge branch '2004' 2020-04-13 22:09:45 +02:00
Jean-Baptiste Mardelle
f5f78b9925 Merge branch '2004' 2020-04-13 18:51:35 +02:00
Jean-Baptiste Mardelle
afb212100a Merge branch '2004' 2020-04-13 15:39:23 +02:00
Jean-Baptiste Mardelle
e1507aea7d Merge branch '2004' 2020-04-12 18:43:52 +02:00
Jean-Baptiste Mardelle
4ce5e54f3b Merge branch '2004' 2020-04-10 21:57:20 +02:00
Jean-Baptiste Mardelle
22cd5006b5 Fix crash on folder import
Fixes #624
2020-04-10 08:30:50 +02:00
Laurent Montel
b300d6a7f1 Fix compile with -Werror=missing-include-dirs 2020-04-10 07:19:30 +02:00
Laurent Montel
454db63809 Port deprecated method 2020-04-10 07:01:09 +02:00
Jean-Baptiste Mardelle
6a5d176b79 Merge branch '2004' 2020-04-10 00:55:32 +02:00
Jean-Baptiste Mardelle
3ac87d3029 Merge branch '2004' 2020-04-09 18:42:39 +02:00
Jean-Baptiste Mardelle
93f07b4381 Merge branch '2004' 2020-04-09 18:23:52 +02:00
Jean-Baptiste Mardelle
39075cb65f Merge branch '2004' 2020-04-09 12:25:35 +02:00
Jean-Baptiste Mardelle
5f91ec5cbf Merge branch '2004' 2020-04-09 11:34:52 +02:00
Jean-Baptiste Mardelle
d11f0c3d33 Merge branch '2004' 2020-04-09 09:55:23 +02:00
Jean-Baptiste Mardelle
24fc86026a Merge branch '2004' 2020-04-09 08:54:55 +02:00
Jean-Baptiste Mardelle
2612cf6fb1 Merge branch '2004' 2020-04-08 19:06:58 +02:00
Jean-Baptiste Mardelle
70de695222 Merge branch 'add_inszone_tomenu' into 'master'
Add insert zone to timeline monitor in menu

Closes #614

See merge request kde/kdenlive!95
2020-04-08 14:53:01 +00:00
Bruno Santos
4ab5ed4e71 Add insert zone to timeline monitor in menu 2020-04-08 14:53:01 +00:00
Jean-Baptiste Mardelle
d8093bf08c Merge branch '2004' 2020-04-08 14:39:40 +02:00
Heiko Becker
4ab68cea04 Merge remote-tracking branch 'origin/release/20.04' 2020-04-07 17:28:14 +02:00
Martin T. H. Sandsmark
3ec9dbed15 Fix opening relative paths from the command line
The code didn't work as intended, and somewhere something was calling
QUrl::fromUserInput() when adding to recently used documents. And that
helpfully adds "http:" as scheme if none is set (e. g. if opening a
relative file). So a lot of things broke.

Test Plan: Opening relative paths from the command line works again

Differential Revision: https://phabricator.kde.org/D28628
2020-04-07 17:23:28 +02:00
Jean-Baptiste Mardelle
1e17bb9e22 Merge branch '2004' 2020-04-07 16:32:02 +02:00
Jean-Baptiste Mardelle
5e60096298 Merge branch '2004' 2020-04-07 14:50:36 +02:00
Jean-Baptiste Mardelle
f3ce54b2e4 Merge branch '2004' 2020-04-07 13:25:04 +02:00
Jean-Baptiste Mardelle
da4a328c06 Merge branch '2004' 2020-04-07 13:12:41 +02:00
Jean-Baptiste Mardelle
6352b5b06e Merge branch '2004' 2020-04-07 11:25:54 +02:00
Jean-Baptiste Mardelle
1fa75bab57 Merge branch 'fix_curves_layout' into 'master'
Improve the curves effect layout

See merge request kde/kdenlive!94
2020-04-07 09:10:11 +00:00
Jean-Baptiste Mardelle
d028ee9d28 Merge branch '2004' 2020-04-07 10:08:55 +02:00
Jean-Baptiste Mardelle
1d70d0540f Merge branch 'del-key-deletes-script' into 'master'
Delete key triggers Delete Script button.

See merge request kde/kdenlive!93
2020-04-07 06:40:00 +00:00
Jean-Baptiste Mardelle
d5ea62c752 Merge branch 'cut-all-clips' into 'master'
Cut all clips at timeline position using ctrl+shift+r.

Closes #587

See merge request kde/kdenlive!91
2020-04-07 06:38:27 +00:00
Stefan Kobza
09d008660d Cut all clips at timeline position using ctrl+shift+r. 2020-04-07 06:38:27 +00:00
Jean-Baptiste Mardelle
960e3c8724 Merge branch 'shortcut_profiles' into 'master'
Add shortcut scheme support to build

See merge request kde/kdenlive!92
2020-04-07 06:35:01 +00:00
Bruno Santos
e83d3491a3 Add shortcut scheme support to build 2020-04-07 06:35:01 +00:00
Bruno Santos
ce8ecfe80f Improve the curves effect layout 2020-04-06 14:53:04 +01:00
Stefan Kobza
b4cfd74aef Delete key triggers Delete Script button. 2020-04-05 20:38:08 +02:00
Jean-Baptiste Mardelle
e34fa54339 Merge branch '2004' 2020-04-03 16:40:38 +02:00
Jean-Baptiste Mardelle
18225f36ff Merge branch '2004' 2020-04-03 16:06:53 +02:00
Jean-Baptiste Mardelle
84cde25e62 Merge branch '2004' 2020-04-03 15:17:21 +02:00
Jean-Baptiste Mardelle
d9406987bd Merge branch '2004' 2020-04-03 11:34:40 +02:00
Jean-Baptiste Mardelle
4bf9e8d09f Merge branch '2004' 2020-04-03 10:45:45 +02:00
Jean-Baptiste Mardelle
b7646eee19 Merge branch '2004' 2020-04-03 03:35:34 +02:00
Jean-Baptiste Mardelle
95029bec5d Merge branch '2004' 2020-04-02 17:30:22 +02:00
Jean-Baptiste Mardelle
2bb4544b23 Merge branch '2004' 2020-04-02 10:22:25 +02:00
Jean-Baptiste Mardelle
10382a18ca Merge branch '2004' 2020-04-01 21:21:15 +02:00
Jean-Baptiste Mardelle
11bf98f701 Merge branch '2004' 2020-04-01 17:27:34 +02:00
Jean-Baptiste Mardelle
82280d3b9c Merge branch '2004' 2020-04-01 09:52:10 +02:00
Jean-Baptiste Mardelle
30ca9add9c Merge branch '2004' 2020-04-01 06:07:29 +02:00
Jean-Baptiste Mardelle
45c1a04fcb Merge branch '2004' 2020-04-01 05:44:46 +02:00
Jean-Baptiste Mardelle
985751fdcf Merge branch '2004' 2020-03-31 22:34:29 +02:00
Jean-Baptiste Mardelle
a861faaf72 Merge branch '2004' 2020-03-31 18:48:32 +02:00
Jean-Baptiste Mardelle
4f7246afef Merge branch '2004' 2020-03-31 15:48:35 +02:00
Jean-Baptiste Mardelle
683fab3cc6 Improve track action descriptions 2020-03-31 13:47:01 +02:00
Jean-Baptiste Mardelle
f50b14adca Merge branch '2004' 2020-03-31 13:31:17 +02:00
Jean-Baptiste Mardelle
3e7d908b79 Merge branch '2004' 2020-03-31 13:04:56 +02:00
Jean-Baptiste Mardelle
d0c15fe628 Merge branch '2004' 2020-03-31 11:51:15 +02:00
Jean-Baptiste Mardelle
7698e03471 Merge branch '2004' 2020-03-31 11:27:52 +02:00
Jean-Baptiste Mardelle
4190397970 Merge branch '2004' 2020-03-30 17:18:52 +02:00
Jean-Baptiste Mardelle
8ec0f2b2ce Merge branch '2004' 2020-03-30 15:29:55 +02:00
Jean-Baptiste Mardelle
689e351a52 Merge branch '2004' 2020-03-30 13:58:57 +02:00
Jean-Baptiste Mardelle
46a6707206 Merge branch '2004' 2020-03-29 19:33:14 +02:00
Vincent Pinon
a99ec9e921 Explain user if import/export is not available 2020-03-29 09:19:34 +02:00
Jean-Baptiste Mardelle
7c404235e3 Merge branch '2004' 2020-03-28 07:01:32 +01:00
Jean-Baptiste Mardelle
342e6586e6 Merge branch '2004' 2020-03-27 18:21:11 +01:00
Jean-Baptiste Mardelle
9282d380d4 Merge branch '2004' 2020-03-27 15:36:32 +01:00
Jean-Baptiste Mardelle
8ca29cdd50 Improve timeline AppImage font 2020-03-27 12:21:01 +01:00
l10n daemon script
9c3e153108 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-03-27 06:32:44 +01:00
l10n daemon script
c22d1897a0 GIT_SILENT made messages (after extraction) 2020-03-27 03:33:31 +01:00
Jean-Baptiste Mardelle
1aebed1631 Merge branch '2004' 2020-03-26 17:25:04 +01:00
Jean-Baptiste Mardelle
a8097f2a3f Fix crash on zone undo 2020-03-25 23:01:18 +01:00
Jean-Baptiste Mardelle
bf3ec045f3 Merge branch '2004' 2020-03-24 13:38:21 +01:00
Jean-Baptiste Mardelle
cb7ac01143 Merge branch '2004' 2020-03-24 13:02:44 +01:00
Jean-Baptiste Mardelle
91fcf91010 Merge branch '2004' 2020-03-24 12:01:21 +01:00
Jean-Baptiste Mardelle
64059a9989 Merge branch '2004' 2020-03-23 23:11:55 +01:00
Jean-Baptiste Mardelle
03a4eebc79 Merge branch '2004' 2020-03-23 16:05:47 +01:00
Jean-Baptiste Mardelle
035557d855 Merge branch '2004' 2020-03-23 12:58:15 +01:00
Jean-Baptiste Mardelle
e3fbbac6c1 Merge branch '2004' 2020-03-22 22:27:57 +01:00
Jean-Baptiste Mardelle
b5d66ab697 Merge branch '2004' 2020-03-22 18:45:29 +01:00
Jean-Baptiste Mardelle
976436ddcb Merge branch '2004' 2020-03-22 09:59:27 +01:00
Jean-Baptiste Mardelle
109d6c9c7a Update edit zone text 2020-03-21 21:52:40 +01:00
Jean-Baptiste Mardelle
c870c085b3 Merge branch '2004' 2020-03-21 21:51:02 +01:00
Antonio Rojas
83db3b00bb Merge branch 'release/20.04' 2020-03-21 08:34:31 +01:00
Jean-Baptiste Mardelle
39f45173a8 Merge branch '2004' 2020-03-20 15:35:09 +01:00
Jean-Baptiste Mardelle
27e65d614f Merge branch '2004' 2020-03-20 14:51:29 +01:00
Jean-Baptiste Mardelle
e2133c5092 Merge branch '2004' 2020-03-20 13:55:46 +01:00
Jean-Baptiste Mardelle
402cf0db5b Merge branch '2004' 2020-03-20 13:29:56 +01:00
Jean-Baptiste Mardelle
099a4c9709 Merge branch 'channels' into 'master'
Add menu item in timeline  to change audio thumbnail format

See merge request kde/kdenlive!88
2020-03-19 23:37:40 +00:00
Sashmita Raghav
1fac25733c Add menu item in timeline to change audio thumbnail format 2020-03-19 23:37:40 +00:00
Jean-Baptiste Mardelle
85731eee90 Larger monitor overlay timecode / fps 2020-03-19 21:58:47 +01:00
Jean-Baptiste Mardelle
31c4270871 Merge branch '2004' 2020-03-19 16:53:15 +01:00
Jean-Baptiste Mardelle
fd8f1a6f54 Merge branch '2004' 2020-03-19 11:41:10 +01:00
Jean-Baptiste Mardelle
a5dc31a6f4 Merge branch '2004' 2020-03-19 08:46:01 +01:00
Jean-Baptiste Mardelle
f97e7c3404 Merge branch '2004' 2020-03-19 06:56:10 +01:00
Jean-Baptiste Mardelle
8ac2fbbd02 Merge branch '2004' 2020-03-18 18:58:15 +01:00
Jean-Baptiste Mardelle
8f107886a3 Merge branch '2004' 2020-03-18 10:52:34 +01:00
Jean-Baptiste Mardelle
7762e4979c Merge branch 'patch-5' into 'master'
Add more profiles

See merge request kde/kdenlive!85
2020-03-18 09:05:41 +00:00
Farid Abdelnour
19a62d341d Add more profiles 2020-03-18 09:05:41 +00:00
Jean-Baptiste Mardelle
1779489531 Merge branch '2004' 2020-03-18 10:02:42 +01:00
Jean-Baptiste Mardelle
efb41a23a4 Merge branch '2004' 2020-03-18 09:28:21 +01:00
Jean-Baptiste Mardelle
b172cad7b5 Merge branch '2004' 2020-03-18 08:47:37 +01:00
Jean-Baptiste Mardelle
7fe4d22875 Merge branch '2004' 2020-03-18 08:38:49 +01:00
Jean-Baptiste Mardelle
6c5d36e52d Merge branch '2004' 2020-03-18 08:19:20 +01:00
Jean-Baptiste Mardelle
61066c7264 Merge branch '2004' 2020-03-17 21:45:45 +01:00
Jean-Baptiste Mardelle
84bfe0b565 Merge branch '2004' 2020-03-17 18:30:57 +01:00
Jean-Baptiste Mardelle
f79d5aba58 Merge branch '2004' 2020-03-17 18:19:30 +01:00
Jean-Baptiste Mardelle
9a0277df5d Merge branch '2004' 2020-03-17 17:48:32 +01:00
Jean-Baptiste Mardelle
af06d4363d Merge branch '2004' 2020-03-17 14:14:45 +01:00
Albert Astals Cid
f1def359ad GIT_SILENT Upgrade release service version to 20.07.70. 2020-03-15 19:39:17 +01:00
393 changed files with 15944 additions and 6339 deletions

View File

@@ -1,4 +0,0 @@
{
"project.name" : "Kdenlive",
"phabricator.uri" : "https://phabricator.kde.org/"
}

View File

@@ -1,16 +1,17 @@
project(Kdenlive)
cmake_minimum_required(VERSION 3.0)
# An odd patch version number means development version, while an even one means
# stable release. An additional number can be used for bugfix-only releases.
# KDE Application Version, managed by release script
set(KDE_APPLICATIONS_VERSION_MAJOR "20")
set(KDE_APPLICATIONS_VERSION_MINOR "04")
set(KDE_APPLICATIONS_VERSION_MICRO "0")
set (RELEASE_SERVICE_VERSION_MAJOR "20")
set (RELEASE_SERVICE_VERSION_MINOR "11")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set(KDENLIVE_VERSION ${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO})
set(KDENLIVE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(Kdenlive VERSION ${KDENLIVE_VERSION})
cmake_minimum_required(VERSION 3.0)
if(POLICY CMP0063)
cmake_policy(SET CMP0063 NEW)
endif()
@@ -18,13 +19,6 @@ if(POLICY CMP0053)
cmake_policy(SET CMP0053 NEW)
endif()
if(BUILD_FUZZING)
set(CMAKE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -fsanitize=fuzzer-no-link,address")
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option")
endif()
# To be switched on when releasing.
option(RELEASE_BUILD "Remove Git revision from program version" ON)
option(BUILD_TESTING "Build tests" ON)
@@ -59,7 +53,7 @@ find_package(KF5 REQUIRED COMPONENTS Archive Bookmarks CoreAddons Config ConfigW
set(QT_MIN_VERSION 5.11.0)
find_package(Qt5 REQUIRED COMPONENTS Core DBus Widgets Svg Quick QuickControls2 Concurrent QuickWidgets Multimedia)
add_definitions(-DQT_NO_CAST_TO_ASCII -DQT_NO_URL_CAST_FROM_STRING)
set(DEFAULT_CXX_FLAGS "${DEFAULT_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
# MLT
find_package(MLT ${MLT_MIN_VERSION} REQUIRED)
@@ -77,7 +71,7 @@ if(WIN32)
set(MLT_PREFIX "..")
else()
set(MLT_PREFIX ${MLT_ROOT_DIR})
find_package(Qt5 OPTIONAL_COMPONENTS WebKitWidgets QUIET)
find_package(Qt5 OPTIONAL_COMPONENTS WebEngineWidgets QUIET)
endif()
if(KF5FileMetaData_FOUND)
@@ -125,7 +119,11 @@ feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAG
set(FFMPEG_SUFFIX "" CACHE STRING "FFmpeg custom suffix")
configure_file(config-kdenlive.h.cmake config-kdenlive.h @ONLY)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wno-suggest-override")
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
if(BUILD_FUZZING)
set(ECM_ENABLE_SANITIZERS fuzzer;address)
endif()
# Sources
add_subdirectory(src)
@@ -143,33 +141,11 @@ else()
install(FILES kdenlive.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
endif()
############################
# Tests
############################
if(BUILD_TESTING)
message(STATUS "Building tests")
add_subdirectory(tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fexceptions")
include_directories(
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/src
${MLT_INCLUDE_DIR}
${MLTPP_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/lib/external
${CMAKE_CURRENT_SOURCE_DIR}/lib
src)
add_executable(runTests ${Tests_SRCS})
set_property(TARGET runTests PROPERTY CXX_STANDARD 14)
target_link_libraries(runTests kdenliveLib)
add_test(NAME runTests COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/runTests -d yes)
endif()
if(BUILD_FUZZING)
message(STATUS "Building fuzzing")
set(CMAKE_CXX_COMPILER /usr/bin/clang++)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDENLIVE_CXX_FLAGS} -fsanitize=fuzzer-no-link,address")
if(BUILD_FUZZING AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
add_subdirectory(fuzzer)
endif()

View File

@@ -1,8 +1,13 @@
![](data/pics/kdenlive-logo.png)
| Jenkins CI Name | Master | Stable |
| --------------- | ------ | ------ |
| OpenSuse Qt 5.14 | [![Build Status](https://build.kde.org/job/Applications/job/kdenlive/job/kf5-qt5%20SUSEQt5.14/badge/icon)](https://build.kde.org/job/Applications/job/kdenlive/job/kf5-qt5%20SUSEQt5.14//) |[![Build Status](https://build.kde.org/job/Applications/job/kdenlive/job/stable-kf5-qt5%20SUSEQt5.14/badge/icon)](https://build.kde.org/job/Applications/job/kdenlive/job/stable-kf5-qt5%20SUSEQt5.14/)|
| FreeBSD Qt 5.15 | [![Build Status](https://build.kde.org/job/Applications/job/kdenlive/job/kf5-qt5%20FreeBSDQt5.15/badge/icon)](https://build.kde.org/job/Applications/job/kdenlive/job/kf5-qt5%20FreeBSDQt5.15/) |[![Build Status](https://build.kde.org/job/Applications/job/kdenlive/job/stable-kf5-qt5%20FreeBSDQt5.15/badge/icon)](https://build.kde.org/job/Applications/job/kdenlive/job/stable-kf5-qt5%20FreeBSDQt5.15/)|
# About Kdenlive
[Kdenlive](https://kdenlive.org) is a Free and Open Source video editing application, based on MLT Framework and KDE Frameworks 5. It is distributed under the GNU General Public Licence Version 2.
[Kdenlive](https://kdenlive.org) is a Free and Open Source video editing application, based on MLT Framework and KDE Frameworks 5. It is distributed under the [GNU General Public License Version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
# Building from source

View File

@@ -6,12 +6,12 @@ add_subdirectory(lumas)
add_subdirectory(man)
add_subdirectory(titles)
add_subdirectory(profiles)
add_subdirectory(shortcuts)
install(FILES
banner.png
encodingprofiles.rc
externalproxies.rc
metadata.properties
meta_ffmpeg.png
meta_libav.png
meta_magiclantern.png
@@ -21,10 +21,16 @@ install(FILES
timeline_vthumbs.png
kdenliveeffectscategory.rc
kdenlivetranscodingrc
kdenlivedefaultlayouts.rc
DESTINATION ${DATA_INSTALL_DIR}/kdenlive)
install(FILES kdenlive.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR})
install(FILES kdenlive_renderprofiles.knsrc kdenlive_wipes.knsrc kdenlive_keyboardschemes.knsrc kdenlive_titles.knsrc DESTINATION ${CONFIG_INSTALL_DIR})
if(KF5NewStuff_VERSION VERSION_GREATER "5.56.0")
install(FILES kdenlive_renderprofiles.knsrc kdenlive_wipes.knsrc kdenlive_keyboardschemes.knsrc kdenlive_titles.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR})
else()
install(FILES kdenlive_renderprofiles.knsrc kdenlive_wipes.knsrc kdenlive_keyboardschemes.knsrc kdenlive_titles.knsrc DESTINATION ${CONFIG_INSTALL_DIR})
endif()
install(FILES profiles.xml DESTINATION ${DATA_INSTALL_DIR}/kdenlive/export)
install(FILES org.kde.kdenlive.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install(FILES org.kde.kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})

View File

@@ -106,7 +106,6 @@ avfilter.drawbox
avfilter.drawgraph
avfilter.drawgrid
avfilter.elbg
avfilter.eq
avfilter.floodfill
avfilter.fspp
avfilter.gblur

View File

@@ -28,6 +28,7 @@ mute.xml
normalise.xml
oldfilm.xml
pan_zoom.xml
pillar_echo.xml
obscure.xml
region.xml
rotation.xml
@@ -140,6 +141,7 @@ tcolor.xml
tracker.xml
vignette.xml
vidstab.xml
qtcrop.xml
DESTINATION ${DATA_INSTALL_DIR}/kdenlive/effects)

View File

@@ -50,6 +50,11 @@ The rest:
- tag "comment": (optional) description of the parameter (support HTML formatting) (not yet supported by all widgets)
- attribute "name": MLT filter parameter name
- attribute "paramprefix": a string to be prepended to the parameter value before passing it to MLT
- attribute "suffix": a string to be appended to the parameter (for UI display only)
- attribute "min": the minimal accepted value
- attribute "max": the maximal accepted value
- attribute "visualmin": the minimal value displayed in timeline keyframes (can be > than min)
- attribute "visualmax": the maximal value displayed in timeline keyframes (can be < than max)
- attribute "default": initial value, format depends on parameter type
- attribute "optional": if it is set, it means that this parameter can have an empty value. So then loading a project, don't set its value to default
- attribute "type": widget (GUI) to use

View File

@@ -7,4 +7,6 @@ selectivecolor.xml
avfilter_lut3d.xml
unsharp.xml
subtitles.xml
eq.xml
equalizer.xml
DESTINATION ${DATA_INSTALL_DIR}/kdenlive/effects)

View File

@@ -0,0 +1,31 @@
<!DOCTYPE kpartgui>
<effect tag="avfilter.eq">
<name>Video Equalizer</name>
<description>Adjust Brightness, contrast, gamma, saturation</description>
<author>libavfilter</author>
<parameter type="constant" name="av.contrast" max="3" min="-3" default="1" decimals="2">
<name>Contrast</name>
</parameter>
<parameter type="constant" name="av.brightness" max="1" min="-1" default="0" decimals="2">
<name>Brightness</name>
</parameter>
<parameter type="constant" name="av.saturation" max="5" min="0" default="1" decimals="2">
<name>Saturation</name>
</parameter>
<parameter type="constant" name="av.gamma" max="3" min="0" default="1" decimals="2">
<name>Gamma</name>
</parameter>
<parameter type="constant" name="av.gamma_r" max="3" min="0" default="1" decimals="2">
<name>Red Gamma</name>
</parameter>
<parameter type="constant" name="av.gamma_g" max="3" min="0" default="1" decimals="2">
<name>Green Gamma</name>
</parameter>
<parameter type="constant" name="av.gamma_b" max="3" min="0" default="1" decimals="2">
<name>Blue Gamma</name>
</parameter>
<parameter type="constant" name="av.gamma_weight" max="1" min="0" default="1" decimals="2">
<name>Gamma Weight</name>
</parameter>
</effect>

View File

@@ -0,0 +1,23 @@
<!DOCTYPE kpartgui>
<effect tag="avfilter.equalizer" type="audio">
<name>Audio Equalizer (avfilter)</name>
<description>Apply two-pole peaking equalization (EQ) filter</description>
<author>libavfilter</author>
<parameter type="constant" name="av.f" max="24000" min="0" default="500">
<name>Central Frequency</name>
</parameter>
<parameter type="list" name="av.t" default="q" paramlist="h;q;o;s;k">>
<name>Width Type</name>
<paramlistdisplay>Hertz,Q-Factor,Octave,Slope,None</paramlistdisplay>
</parameter>
<parameter type="constant" name="av.w" max="24000" min="1" default="100">
<name>Band Width</name>
</parameter>
<parameter type="constant" name="av.g" max="600" min="-600" default="0" decimals="2">
<name>Gain</name>
</parameter>
<parameter type="constant" name="av.m" max="1" min="0" default="1" decimals="2">
<name>Mix</name>
</parameter>
</effect>

View File

@@ -3,7 +3,7 @@
<name>Subtitles</name>
<description>Render subtitles onto the video</description>
<author>libavfilter</author>
<parameter type="url" name="av.f" filter="*.ass *.srt">
<parameter type="url" name="av.filename" filter="*.ass *.srt">
<name>Subtitle file to apply</name>
</parameter>
</effect>

View File

@@ -0,0 +1,12 @@
<!DOCTYPE kpartgui>
<effect tag="pillar_echo" id="pillar_echo">
<name>Pillar Echo</name>
<description>Create an echo effect (blur) outside of an area of interest.</description>
<author>Meltytech, LLC</author>
<parameter type="animatedrect" name="rect" default="25% 0% 50% 100%" fixed="1" opacity="false">
<name>Rectangle</name>
</parameter>
<parameter type="constant" name="blur" max="50" min="0" default="4" suffix="%">
<name>Blur</name>
</parameter>
</effect>

18
data/effects/qtcrop.xml Normal file
View File

@@ -0,0 +1,18 @@
<!DOCTYPE kpartgui>
<effect tag="qtcrop" id="qtcrop" type="video">
<name>Crop by padding</name>
<description>This filter crops the image to a rounded rectangle or circle by padding it with a color.</description>
<author>Dan Dennedy</author>
<parameter type="animatedrect" name="rect" default="0 0 %width %height" opacity="false">
<name>Rectangle</name>
</parameter>
<parameter type="animated" name="radius" default="0" min="0" max="1" decimals="2">
<name>Radius</name>
</parameter>
<parameter type="bool" name="circle" default="0">
<name>Circle</name>
</parameter>
<parameter type="color" name="color" default="0x00000000" alpha="1">
<name>Padding Color</name>
</parameter>
</effect>

View File

@@ -3,7 +3,7 @@
<name>Volume (keyframable)</name>
<description>Adjust audio volume with keyframes</description>
<author>Dan Dennedy</author>
<parameter type="animated" name="level" default="0" max="60" min="-100" suffix="dB" scale="-1">
<parameter type="animated" name="level" default="0" max="50" min="-100" visualmax="50" visualmin="-50" suffix="dB" scale="-1">
<name>Gain</name>
</parameter>
</effect>

View File

@@ -5,12 +5,16 @@ MPEG=qscale=4 ab=192k vcodec=mpeg2video acodec=mp2 threads=%threads;mpg
[proxy]
x264=-vf scale=640:-2 -vcodec libx264 -g 1 -bf 0 -vb 0 -crf 20 -preset veryfast -acodec aac -ab 128k;mov
x264-vaapi=-hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i -vf format=nv12,hwupload,scale_vaapi=640:-2 -vcodec h264_vaapi -g 1 -bf 0 -vb 0 -crf 20 -acodec aac -ab 128k;mov
x264-vaapi=-hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i -vf format=nv12,hwupload,scale_vaapi=640:-2 -vcodec h264_vaapi -g 1 -bf 0 -qp 26 -acodec aac -ab 128k;mov
x264-nvenc=-hwaccel cuvid -c:v %nvcodec -i -vf scale_npp=640:-2 -vcodec h264_nvenc -g 1 -bf 0 -vb 0 -preset fast -acodec copy;mov
MPEG2=-vf scale=640:-2 -g 1 -bf 0 -vb 0 -qscale 6 -ab 128k -vcodec mpeg2video -acodec ac3;mpg
MJPEG=-vf yadif,scale=640:-2 -qscale 3 -vcodec mjpeg -acodec pcm_s16le;mkv
MJPEG-vaapi=-hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i -vf format=nv12,hwupload,scale_vaapi=640:-2 -vcodec mjpeg_vaapi -acodec copy;mkv
ProRes=-vcodec prores_ks -vb 0 -g 1 -bf 0 -vprofile 1 -vendor ap10 -qscale 1;mov
NVENC H264=vcodec=nvenc_h264 vb=30000k rc=cbr acodec=aac ab=192k;mp4
NVENC H265=vcodec=hevc_nvenc vb=30000k acodec=aac ab=192k;mp4
VAAPI Intel=vaapi_device=/dev/dri/renderD128 vf=format=nv12,hwupload vcodec=h264_vaapi vb=30000k acodec=aac ab=192k;mp4
VAAPI AMD=hwaccel=vaapi hwaccel_device=renderD129 hwaccel_output_format=vaapi vcodec=h264_vaapi vb=30000k acodec=aac ab=192k;mp4
[screengrab]
X264 mute=-crf 25 -vcodec libx264 -preset veryfast -threads 0;mov
@@ -33,3 +37,7 @@ ProRes=vcodec=prores_ks vb=0 g=1 bf=0 vprofile=0 vendor=ap10 qscale=4 s=800x450;
MJPEG=f=avi vcodec=mjpeg progressive=1 qscale=1;avi
x264-nvenc=vcodec=h264_nvenc g=1 bf=0 profile=0 preset=fast qmin=10 qmax=30;mkv
x264-vaapi=vcodec=h264_vaapi g=1 bf=0 profile=578;mkv
NVENC H264=vcodec=nvenc_h264 vb=30000k rc=cbr acodec=aac ab=192k;mp4
NVENC H265=vcodec=hevc_nvenc vb=30000k acodec=aac ab=192k;mp4
VAAPI Intel=vaapi_device=/dev/dri/renderD128 vf=format=nv12,hwupload vcodec=h264_vaapi vb=30000k acodec=aac ab=192k;mp4
VAAPI AMD=hwaccel=vaapi hwaccel_device=renderD129 hwaccel_output_format=vaapi vcodec=h264_vaapi vb=30000k acodec=aac ab=192k;mp4

View File

@@ -122,7 +122,7 @@ Comment[pt_BR]=A renderização foi terminada
Comment[ro]=Randarea s-a încheiat
Comment[ru]=Сборка завершена
Comment[sk]=Renderovanie je skončené
Comment[sl]=Izrisovanje je končano
Comment[sl]=Izrisovanje je poteklo
Comment[sv]=Återgivningen är gjord
Comment[tr]=Hazırlama bitti
Comment[uk]=Виконання обробки завершено
@@ -306,8 +306,8 @@ Action=Sound
Name=Ready to capture
Name[ar]=جاهز للالتقاط
Name[bs]=Spreman za hvatanje
Name[ca]=A punt per capturar
Name[ca@valencia]=A punt per capturar
Name[ca]=A punt per a capturar
Name[ca@valencia]=A punt per a capturar
Name[cs]=Připraven zachytávat
Name[da]=Klar til at indfange
Name[de]=Bereit zur Aufnahme
@@ -390,7 +390,7 @@ Name[tr]=Hata
Name[ug]=خاتالىق
Name[uk]=Помилка
Name[x-test]=xxErrorxx
Name[zh_CN]=误
Name[zh_CN]=
Name[zh_TW]=錯誤
Comment=An error occurred in Kdenlive
Comment[ar]=حدث خطأ في «كدينلايڤ»

View File

@@ -22,6 +22,8 @@ Name[pl]=Układy klawiatur Kdenlive
Name[pt]=Esquemas de Teclado do Kdenlive
Name[pt_BR]=Esquemas de teclado do Kdenlive
Name[ru]=Схемы горячих клавиш
Name[sk]=Schémy klávesnice Kdenlive
Name[sl]=Sheme tipkovnic Kdenlive
Name[sv]=Kdenlive-tangentbordsinställningar
Name[uk]=Схеми клавіатурних скорочень Kdenlive
Name[x-test]=xxKdenlive Keyboard Schemesxx

View File

@@ -0,0 +1,13 @@
[Order]
1=kdenlive_logging
2=kdenlive_editing
3=kdenlive_audio
4=kdenlive_effects
5=kdenlive_color
[Layouts]
kdenlive_logging=Tk8tVEwAAAD/AAAAAP0AAAACAAAAAAAAB4AAAAGC/AIAAAAB/AAAAlkAAAGCAAAApQD////8AQAAAAP8AAAAAAAAAhoAAABgAP////oAAAAAAQAAAAT7AAAAHgBjAGwAaQBwAF8AcAByAG8AcABlAHIAdABpAGUAcwEAAAAA/////wAAAGABAAAD+wAAABgAZQBmAGYAZQBjAHQAXwBzAHQAYQBjAGsAAAAAJAAAAg4AAABgAQAAA/sAAAAWAGUAZgBmAGUAYwB0AF8AbABpAHMAdAAAAAAA/////wAAAGABAAAD+wAAAB4AdAByAGEAbgBzAGkAdABpAG8AbgBfAGwAaQBzAHQAAAAAAAAAANwAAABgAQAAA/sAAAAYAG4AbwB0AGUAcwBfAHcAaQBkAGcAZQB0AQAAAhsAAAVlAAAAZwEAAAP8AAAGcwAAAQ0AAAAAAP////r/////AgAAAAL7AAAADgBsAGkAYgByAGEAcgB5AAAAAAD/////AAAAsQEAAAP7AAAAHgBwAHIAbwBqAGUAYwB0AF8AbQBvAG4AaQB0AG8AcgAAAAAkAAACHQAAAOoBAAADAAAAAgAAB4AAAAI2/AEAAAAI+wAAABQAcwBjAHIAZQBlAG4AZwByAGEAYgAAAAAA/////wAAAGABAAAD+wAAABoAYQB1AGQAaQBvAHMAcABlAGMAdAByAHUAbQAAAAAA/////wAAAGYBAAAD+wAAABYAcAByAG8AagBlAGMAdABfAGIAaQBuAQAAAAAAAALkAAAAYAEAAAP7AAAAGABjAGwAaQBwAF8AbQBvAG4AaQB0AG8AcgEAAALlAAAENgAAAUQBAAAD+wAAAAoAbQBpAHgAZQByAQAABxwAAABkAAAAZAAAAGT7AAAAGAB1AG4AZABvAF8AaABpAHMAdABvAHIAeQAAAAAA/////wAAAGABAAAD+wAAABIAaABpAHMAdABvAGcAcgBhAG0AAAAD4wAAAd8AAAFKAQAAA/wAAAXSAAABrgAAAAAA/////AIAAAAD+wAAABYAdgBlAGMAdABvAHIAcwBjAG8AcABlAAAAACQAAAGQAAAAjgEAAAP7AAAAEAB3AGEAdgBlAGYAbwByAG0AAAAAJAAAARsAAABOAQAAA/sAAAAUAHIAZwBiAF8AcABhAHIAYQBkAGUAAAAAJAAAAmQAAABOAQAAAwAAAAAAAAGCAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAAAAAAGABlAHgAdAByAGEAVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAA
kdenlive_editing=AAAA/wAAAAD9AAAAAgAAAAEAAAFaAAAC9fwCAAAAAfwAAAIqAAAC9QAAAOYBAAAj+gAAAAACAAAAAvsAAAAKAG0AaQB4AGUAcgEAAAHwAAACCwAAAMIBAAAC+wAAABgAZQBmAGYAZQBjAHQAXwBzAHQAYQBjAGsBAAAAAP////8AAAB1AQAAAgAAAAIAAAlgAAABzfwBAAAACfsAAAAUAHMAYwByAGUAZQBuAGcAcgBhAGIAAAAAAP////8AAAC1AQAAA/sAAAAaAGEAdQBkAGkAbwBzAHAAZQBjAHQAcgB1AG0AAAAAAP////8AAAByAQAAA/wAAAAAAAAC1AAAAJcA////+gAAAAABAAAABfsAAAAWAHAAcgBvAGoAZQBjAHQAXwBiAGkAbgEAAAAA/////wAAAGABAAAD+wAAAB4AdAByAGEAbgBzAGkAdABpAG8AbgBfAGwAaQBzAHQBAAAAAP////8AAAAEAQAAA/sAAAAWAGUAZgBmAGUAYwB0AF8AbABpAHMAdAEAAAAA/////wAAAAQBAAAD+wAAAB4AYwBsAGkAcABfAHAAcgBvAHAAZQByAHQAaQBlAHMBAAAAAP////8AAABXAQAAA/sAAAAYAHUAbgBkAG8AXwBoAGkAcwB0AG8AcgB5AQAAAAD/////AAAAWwEAAAP8AAAC1QAAA1EAAAFEAP////oAAAAAAgAAAAL7AAAAGABjAGwAaQBwAF8AbQBvAG4AaQB0AG8AcgEAAABEAAABzQAAAMsBAAAC+wAAAA4AbABpAGIAcgBhAHIAeQEAAAAA/////wAAAJwBAAAC/AAABicAAAM5AAABRAD////6AAAAAAIAAAAC+wAAAB4AcAByAG8AagBlAGMAdABfAG0AbwBuAGkAdABvAHIBAAAAvwAAASwAAADLAQAAAvsAAAAYAG4AbwB0AGUAcwBfAHcAaQBkAGcAZQB0AQAAAAD/////AAAAjAEAAAL7AAAAFgB2AGUAYwB0AG8AcgBzAGMAbwBwAGUAAAAAAP////8AAAGzAQAAA/sAAAAQAHcAYQB2AGUAZgBvAHIAbQAAAAAA/////wAAAOMBAAAD+wAAABQAcgBnAGIAXwBwAGEAcgBhAGQAZQAAAAAA/////wAAAN0BAAAD+wAAABIAaABpAHMAdABvAGcAcgBhAG0AAAAAAP////8AAAGVAQAAAwAACAUAAAL1AAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAAAAAAGABlAHgAdAByAGEAVABvAG8AbABCAGEAcgEAAAKd/////wAAAAAAAAAA
kdenlive_audio=AAAA/wAAAAD9AAAAAgAAAAAAAAFfAAAD4vwCAAAAAvwAAAAeAAABeAAAAJMBAAAb+gAAAAEBAAAAA/sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AXwBsAGkAcwB0AAAAAAD/////AAAABAEAAAP7AAAAFgBlAGYAZgBlAGMAdABfAGwAaQBzAHQBAAAAAAAAAQMAAAAEAQAAA/sAAAAWAHAAcgBvAGoAZQBjAHQAXwBiAGkAbgEAAAAA/////wAAAFgBAAAD/AAAAZcAAAJpAAAAjgEAABv6AAAAAAEAAAAC+wAAABgAZQBmAGYAZQBjAHQAXwBzAHQAYQBjAGsBAAAAAP////8AAABUAQAAA/sAAAAeAGMAbABpAHAAXwBwAHIAbwBwAGUAcgB0AGkAZQBzAQAAAAD/////AAAAVAEAAAMAAAACAAAGIAAAAf78AQAAAAr7AAAAGABuAG8AdABlAHMAXwB3AGkAZABnAGUAdAAAAAAA/////wAAAGQBAAAD+wAAAA4AbABpAGIAcgBhAHIAeQAAAAAA/////wAAAGQBAAAD+wAAABQAcwBjAHIAZQBlAG4AZwByAGEAYgAAAAAA/////wAAAFIBAAAD+wAAABgAdQBuAGQAbwBfAGgAaQBzAHQAbwByAHkAAAAAAP////8AAABYAQAAA/sAAAAKAG0AaQB4AGUAcgEAAAFgAAAESAAAARsBAAAD/AAABakAAAHXAAABRAD////8AgAAAAL8AAAAHgAAAV0AAADnAQAAG/oAAAAAAgAAAAL7AAAAHgBwAHIAbwBqAGUAYwB0AF8AbQBvAG4AaQB0AG8AcgEAAAAeAAAB7gAAAMsBAAAC+wAAABgAYwBsAGkAcABfAG0AbwBuAGkAdABvAHIBAAAAAP////8AAADLAQAAAvsAAAAaAGEAdQBkAGkAbwBzAHAAZQBjAHQAcgB1AG0BAAABfAAAAKAAAABzAQAAAvsAAAAWAHYAZQBjAHQAbwByAHMAYwBvAHAAZQAAAAAA/////wAAASoBAAAD+wAAABAAdwBhAHYAZQBmAG8AcgBtAAAAAAD/////AAAAogEAAAP7AAAAFAByAGcAYgBfAHAAYQByAGEAZABlAAAAAAD/////AAAAnwEAAAP7AAAAEgBoAGkAcwB0AG8AZwByAGEAbQAAAAAA/////wAAAU8BAAADAAAGIAAAAeMAAAABAAAAAgAAAAEAAAAC/AAAAAEAAAACAAAAAgAAABYAbQBhAGkAbgBUAG8AbwBsAEIAYQByAAAAAAD/////AAAAAAAAAAAAAAAYAGUAeAB0AHIAYQBUAG8AbwBsAEIAYQByAAAAAAD/////AAAAAAAAAAA
kdenlive_effects=AAAA/wAAAAD9AAAAAgAAAAAAAAEDAAABn/wCAAAAAfsAAAAWAHAAcgBvAGoAZQBjAHQAXwBiAGkAbgEAAAI8AAABnwAAAHoBAAACAAAAAgAAB4AAAAIZ/AEAAAAN+wAAABgAbgBvAHQAZQBzAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAABnAQAAA/sAAAAOAGwAaQBiAHIAYQByAHkAAAAAAP////8AAABnAQAAA/sAAAAUAHMAYwByAGUAZQBuAGcAcgBhAGIAAAAAAP////8AAABSAQAAA/sAAAAaAGEAdQBkAGkAbwBzAHAAZQBjAHQAcgB1AG0AAAAAAP////8AAABmAQAAA/wAAAAAAAACeQAAAFcA////+gAAAAABAAAAAvsAAAAYAGUAZgBmAGUAYwB0AF8AcwB0AGEAYwBrAQAAAAD/////AAAAVwEAAAP7AAAAHgBjAGwAaQBwAF8AcAByAG8AcABlAHIAdABpAGUAcwAAAAAA/////wAAAFcBAAAD/AAAAnoAAAGZAAAAiwD////6AAAAAQEAAAAC+wAAAB4AdAByAGEAbgBzAGkAdABpAG8AbgBfAGwAaQBzAHQBAAAAAP////8AAAAEAQAAA/sAAAAWAGUAZgBmAGUAYwB0AF8AbABpAHMAdAEAAAAA/////wAAAAQBAAAD/AAABBQAAAMHAAABRAD////6AAAAAQEAAAAC+wAAABgAYwBsAGkAcABfAG0AbwBuAGkAdABvAHIBAAAAAP////8AAAFEAQAAA/sAAAAeAHAAcgBvAGoAZQBjAHQAXwBtAG8AbgBpAHQAbwByAQAAAAD/////AAABRAEAAAP7AAAAGAB1AG4AZABvAF8AaABpAHMAdABvAHIAeQAAAAAA/////wAAAFsBAAAD+wAAAAoAbQBpAHgAZQByAQAABxwAAABkAAAAZAAAAGT7AAAAFgB2AGUAYwB0AG8AcgBzAGMAbwBwAGUAAAAAAP////8AAAEyAQAAA/sAAAAQAHcAYQB2AGUAZgBvAHIAbQAAAAAA/////wAAAKgBAAAD+wAAABQAcgBnAGIAXwBwAGEAcgBhAGQAZQAAAAAA/////wAAAKQBAAAD+wAAABIAaABpAHMAdABvAGcAcgBhAG0AAAAAAP////8AAAFKAQAAAwAABnwAAAGfAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAAAAAAGABlAHgAdAByAGEAVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAA
kdenlive_color=AAAA/wAAAAD9AAAAAwAAAAAAAAGQAAAD4vwCAAAAAfwAAAAeAAAD4gAAAHIA////+gAAAAABAAAAAvsAAAAYAGUAZgBmAGUAYwB0AF8AcwB0AGEAYwBrAQAAAAD/////AAAAVAEAAAP7AAAAHgBjAGwAaQBwAF8AcAByAG8AcABlAHIAdABpAGUAcwAAAAAA/////wAAAFQBAAADAAAAAQAAAWUAAAPi/AIAAAAE+wAAABgAYwBsAGkAcABfAG0AbwBuAGkAdABvAHIBAAAAHgAAAQcAAADLAQAAAvsAAAAQAHcAYQB2AGUAZgBvAHIAbQAAAAFDAAAAkgAAACsBAAAC+wAAABQAcgBnAGIAXwBwAGEAcgBhAGQAZQEAAAEmAAABNwAAACsBAAAC/AAAAl4AAAGiAAAAgwEAABv6AAAAAAEAAAAC+wAAABYAdgBlAGMAdABvAHIAcwBjAG8AcABlAQAABfkAAAGHAAABKgEAAAP7AAAAEgBoAGkAcwB0AG8AZwByAGEAbQEAAAAA/////wAAAU8BAAADAAAAAgAABIkAAAIH/AEAAAAH+wAAABgAbgBvAHQAZQBzAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAABkAQAAA/sAAAAUAHMAYwByAGUAZQBuAGcAcgBhAGIAAAAAAP////8AAABSAQAAA/sAAAAaAGEAdQBkAGkAbwBzAHAAZQBjAHQAcgB1AG0AAAAAAP////8AAABnAQAAA/sAAAAKAG0AaQB4AGUAcgAAAAPaAAAAYQAAAGEAAABh/AAAAZEAAAFPAAAAqwD////6AAAAAAIAAAAE+wAAABYAZQBmAGYAZQBjAHQAXwBsAGkAcwB0AQAAAAD/////AAAAAwEAAAL7AAAAHgB0AHIAYQBuAHMAaQB0AGkAbwBuAF8AbABpAHMAdAEAAAAA/////wAAAAMBAAAC+wAAABYAcAByAG8AagBlAGMAdABfAGIAaQBuAQAAAAD/////AAAApQEAAAL7AAAADgBsAGkAYgByAGEAcgB5AQAAAAD/////AAAAkAEAAAL7AAAAHgBwAHIAbwBqAGUAYwB0AF8AbQBvAG4AaQB0AG8AcgEAAALhAAADOQAAAUQBAAAD+wAAABgAdQBuAGQAbwBfAGgAaQBzAHQAbwByAHkAAAAAAP////8AAABYAQAAAwAABIkAAAHaAAAAAQAAAAIAAAABAAAAAvwAAAABAAAAAgAAAAIAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAAAAAAGABlAHgAdAByAGEAVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAA

View File

@@ -19,6 +19,11 @@ DNxHD 720p 59.94 fps 220 Mb/s=-s 1280x720 -r 60000/1001 -vb 220000k -threads 0 -
DNxHD 720p 59.94 fps 145 Mb/s=-s 1280x720 -r 60000/1001 -vb 145000k -threads 0 -vcodec dnxhd -acodec copy %1.mov;High quality encoding
Fix MPEG-1=-sameq -acodec copy -vcodec mpeg1video %1.mpg;Fix unplayable MPEG-1 files;;vcodec=mpeg1video
Fix Ogg Theora=-sameq -vcodec libtheora -acodec copy %1.ogv;Fix unplayable OGG Theora files;;vcodec=theora
ProRes 422 Proxy=-vcodec prores_ks -profile:v 0 -acodec pcm_s16le -ar 48000 -ac 2 %1.mov;High quality encoding
ProRes 422 LT=-vcodec prores_ks -profile:v 1 -acodec pcm_s16le -ar 48000 -ac 2 %1.mov;High quality encoding
ProRes 422 SQ=-vcodec prores_ks -profile:v 2 -acodec pcm_s16le -ar 48000 -ac 2 %1.mov;High quality encoding
ProRes 422 HQ=-vcodec prores_ks -profile:v 3 -acodec pcm_s16le -ar 48000 -ac 2 %1.mov;High quality encoding
ProRes 444 with alpha=-vcodec prores_ks -profile:v 4 -pix_fmt yuva444p10le -bits_per_mb 8000 -acodec pcm_s16le -ar 48000 -ac 2 %1.mov;High quality encoding with alpha channel
Remux MPEG-2 PS/VOB=-vcodec copy -acodec copy %1.mpg;Fix audio sync in MPEG-2 vob files;;vcodec=mpeg2video
Remux MPEG-2 PS/VOB=-vcodec copy -acodec copy %1.mpg;Fix audio sync in MPEG-2 vob files 2;
Lossless Matroska=-sn -vcodec huffyuv -acodec flac %1.mkv;High quality lossless encoding

View File

@@ -1,16 +0,0 @@
# data_show filters
timecode=region
.description=TimecodeOSD
.properties.markup=filter[1].producer.text
.composite.geometry=10/10:150x30
.filter[0]=watermark
.filter[0].resource=colour:0x000000A0
.filter[0].composite.titles=1
.filter[1]=watermark
.filter[1].resource=pango:
.filter[1].producer.text=
.filter[1].producer.family=Monospace
.filter[1].producer.size=24
.filter[1].composite.titles=1
.filter[1].composite.halign=right

View File

@@ -155,7 +155,7 @@
<li xml:lang="it">Interfaccia multitraccia intuitiva.</li>
<li xml:lang="ko">사용하기 편한 다중 트랙 인터페이스.</li>
<li xml:lang="nl">Intuïtief interface met meerdere tracks.</li>
<li xml:lang="nn">Intuitivt fleirsporsgrensesnitt.</li>
<li xml:lang="nn">Intuitivt fleirsporsgrensesnitt</li>
<li xml:lang="pl">Intuicyjny interfejs wielościeżkowy.</li>
<li xml:lang="pt">Interface multi-faixas intuitiva.</li>
<li xml:lang="pt-BR">Interface multifaixa intuitiva.</li>
@@ -187,7 +187,7 @@
<li xml:lang="it">Numerosi effetti e transizioni.</li>
<li xml:lang="ko">다양한 효과와 트랜지션.</li>
<li xml:lang="nl">Veel effecten en overgangen.</li>
<li xml:lang="nn">Mange effektar og overgangar.</li>
<li xml:lang="nn">Mange effektar og overgangar</li>
<li xml:lang="pl">Wiele efektów i przejść.</li>
<li xml:lang="pt">Diversos efeitos e transições.</li>
<li xml:lang="pt-BR">Diversos efeitos e transições.</li>
@@ -267,7 +267,33 @@
</ul>
</description>
<releases>
<release date="2020-04-15" version="20.04.0"/>
<release version="20.08.3" date="2020-11-05"/>
<release version="20.08.2" date="2020-10-08"/>
<release version="20.08.1" date="2020-09-03">
<artifacts>
<artifact type="source">
<location>https://download.kde.org/stable/release-service/20.08.1/src/kdenlive-20.08.1.tar.xz</location>
<checksum type="sha256">f99e3f22c3d5e41a3ca251299d010ac2bc44933091c25d360104d562a1090873</checksum>
<size type="download">11367852</size>
</artifact>
</artifacts>
</release>
<release version="20.08.0" date="2020-08-13">
<artifacts>
<artifact type="binary" platform="x86_64-appimage">
<location>https://files.kde.org/kdenlive/release/kdenlive-20.08.0-x86_64.appimage</location>
<checksum type="sha256">3e0174a00c0c0c6599b5de249947b32ce86bde5d0703273c7d5212f01743bb5c</checksum>
<size type="download">220790824</size>
<bundle type="appimage">kdenlive-20.08.0</bundle>
</artifact>
<artifact type="source">
<location>https://download.kde.org/stable/release-service/20.08.0/src/kdenlive-20.08.0.tar.xz</location>
<checksum type="sha256">89914ee37f5bbdd16051b0db4a6cfb6f8c3d748f47c9e28e5349920ca133c0bd</checksum>
<size type="download">11367912</size>
</artifact>
</artifacts>
</release>
<release version="20.08.0" date="2020-08-13"/>
</releases>
<url type="homepage">https://kdenlive.org/</url>
<url type="bugtracker">https://bugs.kde.org</url>
@@ -276,8 +302,8 @@
<screenshots>
<screenshot type="default">
<caption>Kdenlive Timeline</caption>
<caption xml:lang="ca">Línia del temps del Kdenlive</caption>
<caption xml:lang="ca-valencia">Línia del temps del Kdenlive</caption>
<caption xml:lang="ca">Línia de temps del Kdenlive</caption>
<caption xml:lang="ca-valencia">Línia de temps del Kdenlive</caption>
<caption xml:lang="cs">Časová osa Kdenlive</caption>
<caption xml:lang="da">Kdenlive tidslinje</caption>
<caption xml:lang="de">Kdenlive-Zeitleiste</caption>
@@ -291,10 +317,12 @@
<caption xml:lang="it">Linea temporale Kdenlive</caption>
<caption xml:lang="ko">Kdenlive 타임라인</caption>
<caption xml:lang="nl">Kdenlive tijdlijn</caption>
<caption xml:lang="nn">Tidslinje i Kdenlive</caption>
<caption xml:lang="pt">Linha Temporal do Kdenlive</caption>
<caption xml:lang="pt-BR">Linha do tempo do Kdenlive</caption>
<caption xml:lang="ru">Монтажный стол Kdenlive</caption>
<caption xml:lang="sk">Kdenlive časová os</caption>
<caption xml:lang="sl">Časovnica Kdenlive</caption>
<caption xml:lang="sv">Kdenlive tidslinje</caption>
<caption xml:lang="uk">Монтажний стіл Kdenlive</caption>
<caption xml:lang="x-test">xxKdenlive Timelinexx</caption>
@@ -306,7 +334,9 @@
<caption>Kdenlive Audio Adjustments</caption>
<caption xml:lang="ca">Ajustaments de l'àudio del Kdenlive</caption>
<caption xml:lang="ca-valencia">Ajustaments de l'àudio del Kdenlive</caption>
<caption xml:lang="cs">Úpravy audia v Kdenlive</caption>
<caption xml:lang="da">Kdenlive lydjusteringer</caption>
<caption xml:lang="de">Kdenlive-Audioanpassungen</caption>
<caption xml:lang="el">Kdenlive προσαρμογές ήχου</caption>
<caption xml:lang="en-GB">Kdenlive Audio Adjustments</caption>
<caption xml:lang="es">Ajustes de audio de Kdenlive</caption>
@@ -317,10 +347,12 @@
<caption xml:lang="it">Regolazioni audio Kdenlive</caption>
<caption xml:lang="ko">Kdenlive 오디오 조정</caption>
<caption xml:lang="nl">Kdenlive geluidsaanpassingen</caption>
<caption xml:lang="nn">Lysjustering i Kdenlive</caption>
<caption xml:lang="pt">Ajustes de Áudio do Kdenlive</caption>
<caption xml:lang="pt-BR">Ajustes de áudio do Kdenlive</caption>
<caption xml:lang="ru">Настройка звука Kdenlive</caption>
<caption xml:lang="sk">Kdenlive prispôsobenie zvuku</caption>
<caption xml:lang="sl">Prilagoditve zvoka Kdenlive</caption>
<caption xml:lang="sv">Kdenlive ljudjusteringar</caption>
<caption xml:lang="uk">Коригування звукових даних у Kdenlive</caption>
<caption xml:lang="x-test">xxKdenlive Audio Adjustmentsxx</caption>
@@ -345,10 +377,12 @@
<caption xml:lang="it">Effetti Kdenlive</caption>
<caption xml:lang="ko">Kdenlive 효과</caption>
<caption xml:lang="nl">Kdenlive effecten</caption>
<caption xml:lang="nn">Kdenlive-effektar</caption>
<caption xml:lang="pt">Efeitos do Kdenlive</caption>
<caption xml:lang="pt-BR">Efeitos do Kdenlive</caption>
<caption xml:lang="ru">Эффекты Kdenlive</caption>
<caption xml:lang="sk">Kdenlive efekty</caption>
<caption xml:lang="sl">Učinki Kdenlive</caption>
<caption xml:lang="sv">Kdenlive effekter</caption>
<caption xml:lang="uk">Ефекти Kdenlive</caption>
<caption xml:lang="x-test">xxKdenlive Effectsxx</caption>

View File

@@ -121,6 +121,7 @@ Comment[zh_TW]=來自 KDE 的非線性影像編輯器
Type=Application
Exec=kdenlive %F
Icon=kdenlive
StartupWMClass=kdenlive
X-DocPath=kdenlive/index.html
X-DocPath[cs]=https://cs.wikibooks.org/wiki/Kdenlive
Terminal=false

View File

@@ -2,73 +2,36 @@
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-kdenlive">
<comment>Kdenlive video project document</comment>
<comment xml:lang="ar">مستند مشروع «كدينلايڤ» ڤديوهيّ</comment>
<comment xml:lang="bs">Kdenlive video projekt dokument</comment>
<comment xml:lang="ca">document de projecte de vídeo del Kdenlive</comment>
<comment xml:lang="ca@valencia">document de projecte de vídeo del Kdenlive</comment>
<comment xml:lang="cs">Dokument video projektu Kdenlive</comment>
<comment xml:lang="da">Kdenlive videoprojekt-dokument</comment>
<comment xml:lang="de">Kdenlive-Videoprojektdokument</comment>
<comment xml:lang="el">Έγγραφο έργου βίντεο Kdenlive</comment>
<comment xml:lang="en_GB">Kdenlive video project document</comment>
<comment xml:lang="es">Documento de proyecto de video de Kdenlive</comment>
<comment xml:lang="et">Kdenlive'i videoprojekti dokument</comment>
<comment xml:lang="eu">Kdenlive bideo proiektu dokumentua</comment>
<comment xml:lang="fi">Kdenlive-videoprojektitiedosto</comment>
<comment xml:lang="fr">Projet Kdenlive</comment>
<comment xml:lang="gl">Documento dun proxecto de vídeo de Kdenlive</comment>
<comment xml:lang="id">Dokumen projek video Kdenlive</comment>
<comment xml:lang="it">Progetto video Kdenlive</comment>
<comment xml:lang="ko">Kdenlive 동영상 프로젝트 문서</comment>
<comment xml:lang="ca">Document de projecte de vídeo del Kdenlive</comment>
<comment xml:lang="ca@valencia">Document de projecte de vídeo del Kdenlive</comment>
<comment xml:lang="eu">Kdenlive-ko bideo-proiektuaren dokumentua</comment>
<comment xml:lang="fr">Document de projet vidéo pour Kdenlive</comment>
<comment xml:lang="it">Progetto video di Kdenlive</comment>
<comment xml:lang="lt">Kdenlive video projekto dokumentas</comment>
<comment xml:lang="nl">Video projectdocument van Kdenlive</comment>
<comment xml:lang="nn">Kdenlive-videoprosjektdokument</comment>
<comment xml:lang="pl">Dokument projektowy filmu w Kdenlive</comment>
<comment xml:lang="pt">Documento de projecto de vídeo do Kdenlive</comment>
<comment xml:lang="pt_BR">Documento de projeto de vídeo do Kdenlive</comment>
<comment xml:lang="ru">Видеопроект Kdenlive</comment>
<comment xml:lang="sk">Dokument video projektu Kdenlive</comment>
<comment xml:lang="sl">Dokument video projekta Kdenlive</comment>
<comment xml:lang="sv">Kdenlive-videoprojektdokument</comment>
<comment xml:lang="tr">Kdenlive video proje belgesi</comment>
<comment xml:lang="uk">документ відеопроєкту Kdenlive</comment>
<comment xml:lang="zh_CN">Kdenlive 视频项目文档</comment>
<comment xml:lang="zh_TW">Kdenlive 影片專案文件</comment>
<sub-class-of type="video/mlt-playlist"/>
<glob pattern="*.kdenlive"/>
</mime-type>
<mime-type type="application/x-kdenlivetitle">
<comment>Kdenlive video title</comment>
<comment xml:lang="ar">عنوان «كدينلايڤ» ڤديوهيّ</comment>
<comment xml:lang="bs">Kdenlive video naslov</comment>
<comment xml:lang="ca">títol de vídeo del Kdenlive</comment>
<comment xml:lang="ca@valencia">títol de vídeo del Kdenlive</comment>
<comment xml:lang="cs">Název videa Kdenlive</comment>
<comment xml:lang="da">Kdenlive videotitel</comment>
<comment xml:lang="de">Kdenlive-Videotitel</comment>
<comment xml:lang="el">Τίτλος βίντεο Kdenlive</comment>
<comment xml:lang="en_GB">Kdenlive video title</comment>
<comment xml:lang="es">Título de video de Kdenlive</comment>
<comment xml:lang="et">Kdenlive'i videotiitel</comment>
<comment xml:lang="eu">Kdenlive video izenburua</comment>
<comment xml:lang="fi">Kdenlive-video-otsikko</comment>
<comment xml:lang="fr">Titre Kdenlive</comment>
<comment xml:lang="gl">Título de vídeo de Kdenlive</comment>
<comment xml:lang="id">Judul video Kdenlive</comment>
<comment xml:lang="it">Titolo video Kdenlive</comment>
<comment xml:lang="ko">Kdenlive 동영상 타이틀</comment>
<comment xml:lang="ca">Títol de vídeo del Kdenlive</comment>
<comment xml:lang="ca@valencia">Títol de vídeo del Kdenlive</comment>
<comment xml:lang="eu">Kdenlive-ko bideo-izenburua</comment>
<comment xml:lang="fr">Titre de vidéo pour Kdenlive</comment>
<comment xml:lang="it">Titolo video di Kdenlive</comment>
<comment xml:lang="nl">Titel van Kdenlive-video</comment>
<comment xml:lang="nn">Kdenlive-videotittel</comment>
<comment xml:lang="pl">Tytuł filmu w Kdenlive</comment>
<comment xml:lang="pt">Título de vídeo do Kdenlive</comment>
<comment xml:lang="pt_BR">Título de vídeo do Kdenlive</comment>
<comment xml:lang="ru">Видеотитры Kdenlive</comment>
<comment xml:lang="sk">Názov videa Kdenlive</comment>
<comment xml:lang="sl">Naslov videa Kdenlive</comment>
<comment xml:lang="sv">Kdenlive-video</comment>
<comment xml:lang="tr">Kdenlive video başlığı</comment>
<comment xml:lang="uk">заголовок відео Kdenlive</comment>
<comment xml:lang="zh_CN">Kdenlive 视频标题</comment>
<comment xml:lang="zh_TW">Kdenlive 影片標題</comment>
<sub-class-of type="application/xml"/>
<glob pattern="*.kdenlivetitle"/>
</mime-type>

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path fill="currentColor" fill-opacity=".498" stroke="currentColor" stroke-linecap="square" d="M3.5 3.5h15v15h-15z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 376 B

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path fill="none" stroke="currentColor" stroke-linecap="square" d="M3.5 3.5h15v15h-15z" class="ColorScheme-Text"/>
<path opacity=".5" fill="currentColor" d="M5 5h4v4H5zm4 4h4v4H9zm-4 4h4v4H5zm8 0h4v4h-4zm0-8h4v4h-4z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 481 B

View File

@@ -1,18 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path
fill="none"
stroke="currentColor"
stroke-linecap="square"
d="M3.5 3.5h15v15h-15z"
class="ColorScheme-Text"
id="path4209" />
<path
style="fill:currentColor;fill-opacity:0.5;stroke:none;"
d="M 11 5 L 11 11 L 17 11 L 17 5 L 11 5 z M 11 11 L 5 11 L 5 17 L 11 17 L 11 11 z "
id="rect4757" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 584 B

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path fill="currentColor" class="ColorScheme-Text" d="M4 16h24v12H4z"/>
<path fill="currentColor" class="ColorScheme-Text" d="M16 4h12v13.73H16z"/>
</svg>

Before

Width:  |  Height:  |  Size: 405 B

View File

@@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path d="M12 4L9.523 9.266 4 10.11l4 4.1L7.055 20 12 17.266 16.945 20 16 14.21l4-4.1-5.523-.844L12 4z" fill="currentColor" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 387 B

View File

@@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 11,3 C 8.784,3 7,4.784 7,7 l 0,4 -2,0 c 0,2.666667 0,5.333333 0,8 4,0 8,0 12,0 l 0,-8 c -0.666667,0 -1.333333,0 -2,0 L 15,7 C 15,4.784 13.216,3 11,3 m 0,1 c 1.662,0 3,1.561 3,3.5 L 14,11 8,11 8,7.5 C 8,5.561 9.338,4 11,4"
class="ColorScheme-Text"
/>
</svg>

Before

Width:  |  Height:  |  Size: 558 B

View File

@@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path
style="fill:currentColor;fill-opacity:1;stroke:none"
d="m11 3c-2.216 0-4 1.784-4 4v1h1v-.5c0-1.939 1.338-3.5 3-3.5 1.662 0 3 1.561 3 3.5v3.5h-5-1-1-1-1v1 7h1 10 1v-8h-1-1v-4c0-2.216-1.784-4-4-4m-5 9h10v6h-10v-6"
class="ColorScheme-Text"
/>
</svg>

Before

Width:  |  Height:  |  Size: 491 B

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path d="M28 4v24H4z" fill="currentColor" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 322 B

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M7 11l-3 3 3 3 0-6zM15 11l0 6 3-3-3-3zM6.0234375 4.9941406L6.0234375 8.9941406 5.0234375 8.9941406 5.0234375 6.9941406 4.0234375 6.9941406 4.0234375 8.9941406 3.0234375 8.9941406 3.0234375 9.9941406 19.023438 9.9941406 19.023438 8.9941406 19 8.9941406 19 7 18 7 18 8.9941406 17.023438 8.9941406 17.023438 4.9941406 16.023438 4.9941406 16.023438 8.9941406 15.023438 8.9941406 15.023438 6.9941406 14.023438 6.9941406 14.023438 8.9941406 13.023438 8.9941406 13.023438 6.9941406 12.023438 6.9941406 12.023438 8.9941406 11.023438 8.9941406 11.023438 6.9941406 10.023438 6.9941406 10.023438 8.9941406 9.0234375 8.9941406 9.0234375 6.9941406 8.0234375 6.9941406 8.0234375 8.9941406 7.0234375 8.9941406 7.0234375 4.9941406 6.0234375 4.9941406zM10.5 11.5l0 2-2 0 0 1 2 0 0 2 1 0 0-2 2 0 0-1-2 0 0-2-1 0zM3 11H4V17H3zM18 11H19V17H18z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" id="svg2">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path style="color:currentColor;fill:currentColor;" class="ColorScheme-Text" d="m 6.0234375,4.9941406 0,4 -1,0 0,-2 -1,0 0,2 -1,0 0,1 16.0000005,0 0,-1 -0.02344,0 L 19,7 l -1,0 0,1.9941406 -0.976562,0 0,-4 -1,0 0,4 -1,0 0,-2 -1,0 0,2 -1,0 0,-2 -1,0 0,2 -1,0 0,-2 -1,0 0,2 -1.0000005,0 0,-2 -1,0 0,2 -1,0 0,-4 -1,0 z" id="path6"/>
<path style="fill:#da4453" d="M 9.207,11.5 8.5,12.207 10.293,14 8.5,15.793 9.207,16.5 11,14.707 12.793,16.5 13.5,15.793 11.707,14 13.5,12.207 12.793,11.5 11,13.293 9.207,11.5 Z" class="ColorScheme-Text" id="path8"/>
</svg>

Before

Width:  |  Height:  |  Size: 792 B

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M7 11l-3 3 3 3 0-6zM15 11l0 6 3-3-3-3zM6.0234375 4.9941406L6.0234375 8.9941406 5.0234375 8.9941406 5.0234375 6.9941406 4.0234375 6.9941406 4.0234375 8.9941406 3.0234375 8.9941406 3.0234375 9.9941406 19.023438 9.9941406 19.023438 8.9941406 19 8.9941406 19 7 18 7 18 8.9941406 17.023438 8.9941406 17.023438 4.9941406 16.023438 4.9941406 16.023438 8.9941406 15.023438 8.9941406 15.023438 6.9941406 14.023438 6.9941406 14.023438 8.9941406 13.023438 8.9941406 13.023438 6.9941406 12.023438 6.9941406 12.023438 8.9941406 11.023438 8.9941406 11.023438 6.9941406 10.023438 6.9941406 10.023438 8.9941406 9.0234375 8.9941406 9.0234375 6.9941406 8.0234375 6.9941406 8.0234375 8.9941406 7.0234375 8.9941406 7.0234375 4.9941406 6.0234375 4.9941406z" class="ColorScheme-Text"/>
<path style="fill:#da4453" d="M 9.207,11.5 8.5,12.207 10.293,14 8.5,15.793 9.207,16.5 11,14.707 12.793,16.5 13.5,15.793 11.707,14 13.5,12.207 12.793,11.5 11,13.293 9.207,11.5 Z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M3 11H4V17H3zM18 11H19V17H18z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M 11 3 A 8 8 0 0 0 3 11 A 8 8 0 0 0 4.3945312 15.5 L 5.1171875 14.777344 A 7 7 0 0 1 4 11 A 7 7 0 0 1 11 4 A 7 7 0 0 1 14.773438 5.1210938 L 15.494141 4.4003906 A 8 8 0 0 0 11 3 z M 16.291016 5.0175781 L 15.582031 5.7265625 A 7 7 0 0 1 16.277344 6.4160156 L 16.988281 5.7050781 A 8 8 0 0 0 16.291016 5.0175781 z M 17.611328 6.4960938 L 16.890625 7.2167969 A 7 7 0 0 1 16.890625 7.21875 A 7 7 0 0 1 18 11 A 7 7 0 0 1 11 18 A 7 7 0 0 1 7.2226562 16.884766 L 6.5019531 17.605469 A 8 8 0 0 0 11 19 A 8 8 0 0 0 19 11 A 8 8 0 0 0 17.611328 6.4960938 z M 11 8 L 11 8.8945312 L 11.511719 8.3828125 L 11 8 z M 12.320312 8.9882812 L 11 10.308594 L 11 11.693359 L 13.111328 9.5820312 L 12.320312 8.9882812 z M 13.917969 10.189453 L 11 13.107422 L 11 14 L 15 11 L 13.917969 10.189453 z M 5.7246094 15.583984 L 5.0195312 16.289062 A 8 8 0 0 0 5.7070312 16.986328 L 6.4121094 16.28125 A 7 7 0 0 1 5.7246094 15.583984 z" class="ColorScheme-Text"/>
<path style="color:#000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000;solid-opacity:1;fill:#da4453;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 10 8 A 3 3 0 0 0 7 11 A 3 3 0 0 0 7.4003906 12.494141 L 10 9.8945312 L 10 8 z M 10 11.308594 L 8.0410156 13.267578 A 3 3 0 0 0 8.9003906 13.791016 L 10 12.691406 L 10 11.308594 z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M 18.29297,2.9999999 3,18.293 3.70703,19 19,3.7069999 l -0.70703,-0.707 z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path d="m 11,3 c -4.432,0 -8,3.568 -8,8 0,4.432 3.568,8 8,8 4.432,0 8,-3.568 8,-8 0,-4.432 -3.568,-8 -8,-8 z m 0,1 c 3.878,0 7,3.122 7,7 0,3.878 -3.122,7 -7,7 C 7.122,18 4,14.878 4,11 4,7.122 7.122,4 11,4 Z" style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" class="ColorScheme-Text"/>
<path d="M 9,14 13,11 9,8 Z" style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" transform="translate(2)" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:#da4453;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 10,8 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 l 0,-6 z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" id="svg3760">
<defs id="defs3762">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}.ColorScheme-Background{color:#eff0f1}.ColorScheme-Highlight{color:#3daee9}.ColorScheme-ViewText{color:#31363b}.ColorScheme-ViewBackground{color:#fcfcfc}.ColorScheme-ViewHover{color:#93cee9}.ColorScheme-ViewFocus{color:#3daee9}.ColorScheme-ButtonText{color:#31363b}.ColorScheme-ButtonBackground{color:#eff0f1}.ColorScheme-ButtonHover{color:#93cee9}.ColorScheme-ButtonFocus{color:#3daee9}
</style>
</defs>
<g id="layer1" class="ColorScheme-Text">
<path d="M19 15l-1.614.574.735 1.547-1.545-.733L16 18l-.574-1.614-1.547.735.733-1.545L13 15l1.614-.574-.735-1.547 1.545.733L16 12l.574 1.614 1.547-.735-.733 1.545z" id="path4160-0" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#fdbc4b" stroke-width="1.795"/>
<path style="isolation:auto;mix-blend-mode:normal" d="M3 4v3h17V4H3zm1 1h1v1H4V5zm2 0h1v1H6V5zm2 0h1v1H8V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5z" id="rect4146" color="currentColor" overflow="visible" fill="currentColor" stroke-width="2.8" stroke-opacity=".55"/>
<path style="isolation:auto;mix-blend-mode:normal" d="M3 15v3h10v-1h-1v-2H3zm1 1h1v1H4v-1zm2 0h1v1H6v-1zm2 0h1v1H8v-1zm2 0h1v1h-1v-1z" id="rect4146-2" color="currentColor" overflow="visible" fill="currentColor" stroke-width="2.8" stroke-opacity=".55"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect4212" color="currentColor" overflow="visible" fill="currentColor" stroke-width="2.8" stroke-opacity=".55" d="M4 6h1v10H4z"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect4214" color="currentColor" overflow="visible" fill="currentColor" stroke-width="2.8" stroke-opacity=".55" d="M11 6h1v10h-1z"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect4214-1" color="currentColor" overflow="visible" fill="currentColor" stroke-width="2.8" stroke-opacity=".55" d="M18 6h1v6h-1z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,20 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<g transform="translate(-284.053 -142.61)" fill="currentColor" class="ColorScheme-Text">
<circle r="1" cy="147.701" cx="289.125"/>
<path d="M291.93 146.7h8.124v2h-8.125z"/>
</g>
<g transform="translate(-284.053 -136.165)" fill="currentColor" class="ColorScheme-Text">
<circle r="1" cy="147.701" cx="289.125"/>
<path d="M291.93 146.7h8.124v2h-8.125z"/>
</g>
<g fill="currentColor" transform="translate(-551.286 -607.648)" class="ColorScheme-Text">
<circle cx="556.358" cy="625.628" r="1"/>
<path d="M559.162 624.628h8.125v2h-8.125z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 840 B

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="22" width="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<g fill="currentColor" class="ColorScheme-Text">
<path d="M5.428 5.98h11v11h-11z"/>
<path d="M6.46 4.512h1.28v2H6.46zm2.416 0h1.28v2h-1.28zm2.416 0h1.28v2h-1.28zm2.418 0h1.28v2h-1.28zm-7.22 12h1.28v2H6.49zm2.417 0h1.28v2h-1.28zm2.417 0h1.28v2h-1.28zm2.416 0h1.28v2h-1.28zM5.882 7.215v1.28h-2v-1.28zm0 2.417v1.28h-2v-1.28zm0 2.418v1.28h-2v-1.28zm0 2.415v1.28h-2v-1.28zM17.913 7.06v1.28h-2V7.06zm0 2.416v1.28h-2v-1.28zm0 2.417v1.28h-2v-1.28zm0 2.417v1.28h-2v-1.28z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 724 B

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path fill="currentColor" class="ColorScheme-Text" d="M28 4v24H4c.995-12.86 6.892-22.32 24-24z"/>
</svg>

Before

Width:  |  Height:  |  Size: 351 B

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:currentColor}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M3 11H7V15H3z" class="ColorScheme-Text"/>
<path style="fill:#da4453" d="M 8.707,10.5 8,11.207 9.793,13 8,14.793 8.707,15.5 10.5,13.707 12.293,15.5 13,14.793 11.207,13 13,11.207 12.293,10.5 10.5,12.293 8.707,10.5 Z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M17 11l0-2-4 4 4 4 0-2 2 0 0-4zM6 10H7V11H6z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:currentColor}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M2 11H6V15H2z" class="ColorScheme-Text"/>
<path d="m 7,9 6,0 0,5 -6,0 z" style="fill:#1d99f3"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:#1d99f3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 7,5 10,8 13,5 7,5 Z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="m 16,11 0,-2 4,4 -4,4 0,-2 -2,0 0,-4 z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path d="m 3,11 0,4 4,0 0,-4 -4,0 z m 12,0 0,4 4,0 0,-4 -4,0 z" style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" class="ColorScheme-Text"/>
<path style="fill:#da4453" d="M 9.207,10.5 8.5,11.207 10.293,13 8.5,14.793 9.207,15.5 11,13.707 12.793,15.5 13.5,14.793 11.707,13 13.5,11.207 12.793,10.5 11,12.293 9.207,10.5 Z"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M6 10H7V11H6zM15 10H16V11H15z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text{color:#4d4d4d}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M3 11H19V15H3z" class="ColorScheme-Text"/>
<path fill="#1d99f3" d="M8 8h6v5H8z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:#1d99f3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 8,4 3.000001,3 3,-3 L 8,4 Z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M6.0234375 4.9941406l0 4-1 0 0-2-1 0 0 2-1 0 0 1 6.8613281 0 1.1386724-1.1386718 0-1.8613282-1 0 0 2-1.0000005 0 0-2-1 0 0 2-1 0 0-4-1 0zM12.023438 6.9941406l0 .8613282.861328-.8613282-.861328 0zM18 7l0 1.9941406-.976562 0 0-1.8964844-1 1 0 .8964844-.896485 0-1 1 4.896485 0 0-1-.02344 0L19 7 18 7zM7 11L4 14 4.9394531 14.939453 7 12.878906 7 11zM15 11l0 6 3-3-3-3z" class="ColorScheme-Text"/>
<path style="color:#000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M 18.271261,2.9991929 2.9782908,18.292193 l 0.70703,0.707 15.2929702,-15.2930001 -0.70703,-0.707 z" class="ColorScheme-Text"/>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M18 11H19V17H18zM3 11L3 16.857422 4 15.857422 4 11 3 11z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path style="color:currentColor;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:currentColor;solid-opacity:1;fill:currentColor;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M7 11l-3 3 3 3 0-6zM15 11l0 6 3-3-3-3zM6.0234375 4.9941406L6.0234375 8.9941406 5.0234375 8.9941406 5.0234375 6.9941406 4.0234375 6.9941406 4.0234375 8.9941406 3.0234375 8.9941406 3.0234375 9.9941406 19.023438 9.9941406 19.023438 8.9941406 19 8.9941406 19 7 18 7 18 8.9941406 17.023438 8.9941406 17.023438 4.9941406 16.023438 4.9941406 16.023438 8.9941406 15.023438 8.9941406 15.023438 6.9941406 14.023438 6.9941406 14.023438 8.9941406 13.023438 8.9941406 13.023438 6.9941406 12.023438 6.9941406 12.023438 8.9941406 11.023438 8.9941406 11.023438 6.9941406 10.023438 6.9941406 10.023438 8.9941406 9.0234375 8.9941406 9.0234375 6.9941406 8.0234375 6.9941406 8.0234375 8.9941406 7.0234375 8.9941406 7.0234375 4.9941406 6.0234375 4.9941406zM3 11H4V17H3zM18 11H19V17H18z" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<g fill="currentColor" color="currentColor" class="ColorScheme-Text">
<path style="isolation:auto;mix-blend-mode:normal;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M3 3v16h16V3zm1 4h14v11H4z" overflow="visible" class="ColorScheme-Text"/>
<path style="isolation:auto;mix-blend-mode:normal;filter-blend-mode:normal;filter-gaussianBlur-deviation:0" d="M11 7v1h1V7h-1zm0 2v1h1V9h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zM9.494 7.998l-1.685 3.37H4.996l2.248 2.247-.562 3.373 2.81-1.685.506.302V9.01l-.507-1.012z" overflow="visible"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 830 B

View File

@@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<g fill="currentColor" class="ColorScheme-Text">
<path d="M12.738 6.905l-.397-.397-3.438 3.44L7.85 11 8.9 12.053l3.44 3.44.396-.398-3.44-3.44L8.644 11l.656-.656 3.438-3.44z" stroke-width="0"/>
<path d="M5.605 3v12.545h-1V3zM17.78 11.276h-7.44v-.593h7.44z"/>
</g>
<circle cx="5.097" cy="16.907" r="1.642" fill="none" stroke="currentColor" stroke-width=".892" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 644 B

View File

@@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<g fill="currentColor" class="ColorScheme-Text">
<path d="M9.255 6.905l.397-.397 3.44 3.44L14.144 11l-1.052 1.053-3.44 3.44-.397-.398 3.44-3.44.655-.655-.655-.656-3.44-3.44z" stroke-width="0"/>
<path d="M16.39 3v12.545h1V3zM4.215 11.276h7.438v-.593H4.215z"/>
</g>
<circle cx="-16.896" cy="16.907" r="1.642" transform="scale(-1 1)" fill="none" stroke="currentColor" stroke-width=".892" class="ColorScheme-Text"/>
</svg>

Before

Width:  |  Height:  |  Size: 669 B

View File

@@ -57,6 +57,18 @@
audioqualities="3,5,7" defaultaudioquality="5"
args="f=asf vcodec=wmv2 acodec=wmav2 qscale=%quality aq=%audioquality"/>
</group>
<group name="GPU | testing" renderer="avformat" type="av">
<profile name="NVENC H264 CBR" extension="mp4"
args="f=mp4 vcodec=nvenc_h264 vb=30000k rc=cbr acodec=aac ab=192k"/>
<profile name="NVENC H264 VBR" extension="mp4"
args="f=mp4 vcodec=nvenc_h264 vb=30000k minrate=20000k maxrate=60000k acodec=aac ab=192k"/>
<profile name="NVENC H265" extension="mp4"
args="f=mp4 vcodec=hevc_nvenc vb=30000k acodec=aac ab=192k"/>
<profile name="VAAPI Intel H264" extension="mp4"
args="f=mp4 vaapi_device=/dev/dri/renderD128 vf=format=nv12,hwupload vcodec=h264_vaapi vb=30000k acodec=aac ab=192k"/>
<profile name="VAAPI AMD H264" extension="mp4"
args="f=mp4 hwaccel=vaapi hwaccel_device=renderD129 hwaccel_output_format=vaapi vcodec=h264_vaapi vb=30000k acodec=aac ab=192k"/>
</group>
<group name="Audio only" renderer="avformat" type="audio">
<profile name="AC3" extension="ac3" audiobitrates="192,64" defaultaudiobitrate="160" args="ab=%audiobitrate+'k' vn=1"/>
<profile name="ALAC" extension="mov" args="f=mov acodec=alac vn=1 video_off=1"/>

View File

@@ -0,0 +1,3 @@
INSTALL(FILES
Premiere
DESTINATION ${DATA_INSTALL_DIR}/kdenlive/shortcuts)

100
data/shortcuts/Premiere Normal file
View File

@@ -0,0 +1,100 @@
<gui name="kdenlive" version="1">
<ActionProperties>
<Action name="file_open" shortcut="Ctrl+O"/>
<Action name="file_save_as" shortcut="Ctrl+Shift+S"/>
<Action name="file_new" shortcut="Ctrl+N"/>
<Action name="monitor_play" shortcut="Space"/>
<Action name="monitor_pause" shortcut="K"/>
<Action name="monitor_fullscreen" shortcut="`"/>
<Action name="monitor_seek_backward" shortcut="J"/>
<Action name="monitor_seek_backward-one-frame" shortcut="Left"/>
<Action name="monitor_seek_backward-one-second" shortcut="Shift+Left"/>
<Action name="monitor_seek_forward" shortcut="L"/>
<Action name="seek_start" shortcut="Ctrl+Home"/>
<Action name="seek_end" shortcut="Ctrl+End"/>
<Action name="monitor_seek_forward-one-frame" shortcut="Right"/>
<Action name="monitor_seek_forward-one-second" shortcut="Shift+Right"/>
<Action name="seek_zone_start" shortcut="Shift+I"/>
<Action name="seek_zone_end" shortcut="Shift+O"/>
<Action name="mark_in" shortcut="I"/>
<Action name="mark_out" shortcut="O"/>
<Action name="collapse_expand" shortcut="&lt;"/>
<Action name="view_zoom_in" shortcut="=; Ctrl+="/>
<Action name="view_zoom_out" shortcut="-"/>
<Action name="select_tool" shortcut="V"/>
<Action name="razor_tool" shortcut="C"/>
<Action name="spacer_tool" shortcut="A"/>
<Action name="automatic_transition" shortcut="Ctrl+D"/>
<Action name="zoom_fit" shortcut="\"/>
<Action name="project_render" shortcut="Ctrl+Return"/>
<Action name="monitor_play_zone" shortcut="Ctrl+Space"/>
<Action name="monitor_loop_zone" shortcut="Alt+Space"/>
<Action name="import_project" shortcut="Ctrl+I"/>
<Action name="switch_monitor" shortcut="T"/>
<Action name="monitor_seek_snap_backward" shortcut="Alt+Left"/>
<Action name="monitor_seek_guide_backward" shortcut="Ctrl+Left"/>
<Action name="seek_clip_start" shortcut="Up"/>
<Action name="seek_clip_end" shortcut="Down"/>
<Action name="monitor_seek_snap_forward" shortcut="Alt+Right"/>
<Action name="monitor_seek_guide_forward" shortcut="Ctrl+Right"/>
<Action name="align_playhead" shortcut="P"/>
<Action name="grab_item" shortcut="Shift+G"/>
<Action name="overwrite_to_in_point" shortcut="."/>
<Action name="insert_to_in_point" shortcut=","/>
<Action name="remove_extract" shortcut="Shift+X"/>
<Action name="remove_lift" shortcut="Z"/>
<Action name="prerender_timeline_zone" shortcut="Return"/>
<Action name="select_timeline_clip" shortcut="+"/>
<Action name="select_add_timeline_clip" shortcut="Alt++"/>
<Action name="select_timeline_transition" shortcut="Shift++"/>
<Action name="deselect_timeline_transition" shortcut="Shift+-"/>
<Action name="select_add_timeline_transition" shortcut="Shift+D"/>
<Action name="add_marker_guide_quickly" shortcut="M"/>
<Action name="add_clip_marker" shortcut="Ctrl+1"/>
<Action name="edit_item_speed" shortcut="Ctrl+R"/>
<Action name="cut_timeline_clip" shortcut="Ctrl+K"/>
<Action name="delete_timeline_clip" shortcut="Del"/>
<Action name="resize_timeline_clip_start" shortcut="Q"/>
<Action name="resize_timeline_clip_end" shortcut="W"/>
<Action name="paste_effects" shortcut="Ctrl+Alt+V"/>
<Action name="group_clip" shortcut="Ctrl+G"/>
<Action name="ungroup_clip" shortcut="Ctrl+Shift+G"/>
<Action name="edit_copy" shortcut="Ctrl+C; Ctrl+Ins"/>
<Action name="edit_paste" shortcut="Ctrl+V; Shift+Ins"/>
<Action name="select_all_tracks" shortcut="Ctrl+A"/>
<Action name="unselect_all_tracks" shortcut="Ctrl+Shift+A"/>
<Action name="file_save" shortcut="Ctrl+S"/>
<Action name="options_show_menubar" shortcut="Ctrl+M"/>
<Action name="file_quit" shortcut="Ctrl+Q"/>
<Action name="options_configure" shortcut="Ctrl+Shift+,"/>
<Action name="fullscreen" shortcut="Ctrl+Shift+F"/>
<Action name="edit_undo" shortcut="Ctrl+Z"/>
<Action name="edit_redo" shortcut="Ctrl+Shift+Z"/>
<Action name="switch_track_lock" shortcut="Shift+L"/>
<Action name="switch_all_track_lock" shortcut="Ctrl+Shift+L"/>
<Action name="switch_track_target" shortcut="Shift+T"/>
<Action name="switch_all_targets" shortcut="Shift+A"/>
<Action name="activate_all_targets" shortcut="Alt+Shift+A"/>
<Action name="add_text_clip" shortcut="Ctrl+T"/>
<Action name="duplicate_clip" shortcut="Ctrl+?"/>
<Action name="clip_properties" shortcut="Ctrl+Shift+H"/>
<Action name="renamefile" shortcut="F2"/>
<Action name="go_up" shortcut="Alt+Up"/>
<Action name="extract_frame" shortcut="S"/>
<Action name="audiomixer_button" shortcut="("/>
<Action name="transition_gain" shortcut="G"/>
<Action name="load_layout1" shortcut="Ctrl+!"/>
<Action name="load_layout2" shortcut="Ctrl+@"/>
<Action name="load_layout3" shortcut="Ctrl+#"/>
<Action name="load_layout4" shortcut="Ctrl+$"/>
<Action name="Timeline" shortcut="#"/>
<Action name="Screen Grab" shortcut="F5"/>
<Action name="Project Bin" shortcut="!"/>
<Action name="Effect/Composition Stack" shortcut="%"/>
<Action name="Effects" shortcut="&amp;"/>
<Action name="Clip Monitor" shortcut="@"/>
<Action name="Project Monitor" shortcut="$"/>
<Action name="help_contents" shortcut="F1"/>
<Action name="help_whats_this" shortcut="Shift+F1"/>
</ActionProperties>
</gui>

View File

@@ -0,0 +1,82 @@
<gui name="kdenlive" version="1">
<ActionProperties>
<Action name="file_open" shortcut="Ctrl+O"/>
<Action name="file_save_as" shortcut="Ctrl+Shift+S"/>
<Action name="file_new" shortcut="Ctrl+N"/>
<Action name="monitor_play" shortcut="Space"/>
<Action name="monitor_pause" shortcut="K"/>
<Action name="monitor_fullscreen" shortcut="`"/>
<Action name="monitor_seek_backward" shortcut="J"/>
<Action name="monitor_seek_backward-one-frame" shortcut="Left"/>
<Action name="monitor_seek_backward-one-second" shortcut="Shift+Left"/>
<Action name="monitor_seek_forward" shortcut="L"/>
<Action name="seek_start" shortcut="Ctrl+Home"/>
<Action name="seek_end" shortcut="Ctrl+End"/>
<Action name="monitor_seek_forward-one-frame" shortcut="Right"/>
<Action name="monitor_seek_forward-one-second" shortcut="Shift+Right"/>
<Action name="seek_zone_start" shortcut="Shift+I"/>
<Action name="seek_zone_end" shortcut="Shift+O"/>
<Action name="mark_in" shortcut="I"/>
<Action name="mark_out" shortcut="O"/>
<Action name="collapse_expand" shortcut="&lt;"/>
<Action name="view_zoom_in" shortcut="=; Ctrl+="/>
<Action name="view_zoom_out" shortcut="-"/>
<Action name="select_tool" shortcut="V"/>
<Action name="razor_tool" shortcut="C"/>
<Action name="spacer_tool" shortcut="A"/>
<Action name="automatic_transition" shortcut="Ctrl+D"/>
<Action name="zoom_fit" shortcut="\"/>
<Action name="project_render" shortcut="Ctrl+Return"/>
<Action name="monitor_play_zone" shortcut="Ctrl+Space"/>
<Action name="monitor_loop_zone" shortcut="Alt+Space"/>
<Action name="switch_monitor" shortcut="T"/>
<Action name="insert_project_tree" shortcut="Ctrl+I"/>
<Action name="monitor_seek_snap_backward" shortcut="Alt+Left"/>
<Action name="monitor_seek_guide_backward" shortcut="Ctrl+Left"/>
<Action name="seek_clip_start" shortcut="Home"/>
<Action name="seek_clip_end" shortcut="End"/>
<Action name="monitor_seek_snap_forward" shortcut="Alt+Right"/>
<Action name="monitor_seek_guide_forward" shortcut="Ctrl+Right"/>
<Action name="align_playhead" shortcut="P"/>
<Action name="grab_item" shortcut="Shift+G"/>
<Action name="overwrite_to_in_point" shortcut="B"/>
<Action name="remove_extract" shortcut="Shift+X"/>
<Action name="remove_lift" shortcut="Z"/>
<Action name="prerender_timeline_zone" shortcut="Return"/>
<Action name="select_timeline_clip" shortcut="+"/>
<Action name="select_add_timeline_clip" shortcut="Alt++"/>
<Action name="select_timeline_transition" shortcut="Shift++"/>
<Action name="deselect_timeline_transition" shortcut="Shift+-"/>
<Action name="add_marker_guide_quickly" shortcut="M"/>
<Action name="edit_item_speed" shortcut="Ctrl+R"/>
<Action name="cut_timeline_clip" shortcut="Ctrl+K"/>
<Action name="delete_timeline_clip" shortcut="Del"/>
<Action name="resize_timeline_clip_start" shortcut="Q"/>
<Action name="resize_timeline_clip_end" shortcut="W"/>
<Action name="paste_effects" shortcut="Ctrl+Shift+V"/>
<Action name="group_clip" shortcut="Ctrl+G"/>
<Action name="ungroup_clip" shortcut="Ctrl+Shift+G"/>
<Action name="edit_copy" shortcut="Ctrl+C; Ctrl+Ins"/>
<Action name="edit_paste" shortcut="Ctrl+V; Shift+Ins"/>
<Action name="select_all_tracks" shortcut="Ctrl+A"/>
<Action name="unselect_all_tracks" shortcut="Ctrl+Shift+A"/>
<Action name="add_guide" shortcut="G"/>
<Action name="file_save" shortcut="Ctrl+S"/>
<Action name="options_show_menubar" shortcut="Ctrl+M"/>
<Action name="file_quit" shortcut="Ctrl+Q"/>
<Action name="options_configure" shortcut="Ctrl+Shift+,"/>
<Action name="fullscreen" shortcut="Ctrl+Shift+F"/>
<Action name="edit_undo" shortcut="Ctrl+Z"/>
<Action name="edit_redo" shortcut="Ctrl+Shift+Z"/>
<Action name="switch_track_lock" shortcut="Shift+L"/>
<Action name="switch_all_track_lock" shortcut="Ctrl+Shift+L"/>
<Action name="switch_track_target" shortcut="Shift+T"/>
<Action name="switch_all_targets" shortcut="Shift+A"/>
<Action name="activate_all_targets" shortcut="Alt+Shift+A"/>
<Action name="add_text_clip" shortcut="Ctrl+T"/>
<Action name="renamefile" shortcut="F2"/>
<Action name="go_up" shortcut="Alt+Up"/>
<Action name="help_contents" shortcut="F1"/>
<Action name="help_whats_this" shortcut="Shift+F1"/>
</ActionProperties>
</gui>

View File

@@ -12,4 +12,8 @@
<parameter type="bool" name="progressive" default="1" min="0" max="1">
<name>Force Progressive Rendering</name>
</parameter>
<parameter type="list" name="luma" default="" paramlist="%lumaPaths" optional="1">
<paramlistdisplay>%lumaNames</paramlistdisplay>
<name>Composite Method</name>
</parameter>
</transition>

View File

@@ -1,4 +1,14 @@
<!DOCTYPE kpartgui>
<transition tag="luma" id="luma" type="hidden">
<name>Luma</name>
<description>Applies a stationary transition between the current and next frames.</description>
<author>Dan Dennedy</author>
<parameter type="list" name="resource" default="" paramlist="%lumaPaths" optional="1">
<paramlistdisplay>%lumaNames</paramlistdisplay>
<name>Wipe Method</name>
</parameter>
<parameter type="double" name="softness" max="100" min="0" default="0" factor="100">
<name>Softness</name>
</parameter>
</transition>

56
dev-docs/architecture.md Normal file
View File

@@ -0,0 +1,56 @@
# Architecture
*This document describes Kdenlives architecture top-down.*
* Top-down architecture
* Dependencies MLT etc.
* MVC
* GUI elements and their counterpart
## Architectural Overview
Kdenlive uses a number of libraries. The most important library is MLT which is
responsible for the core video editing functionality: the process of applying
effects to clips which are organised in tracks and timeline(s). Kdenlive
provides the user interface for this functionality.
Kdenlive and MLT use a number of resources like frei0r for video effects.
```
┌────────┐
│Kdenlive├─────┐
└────┬───┘ │
Render projects│ │Configure
Decode audio/video│ │effect settings
│ │
┌────┴───┐ │
│ MLT ├─────┤
└────────┘ │Audio/Video Effects
├───────┬──────┬─────────┐
┌──┴───┐┌──┴───┐┌─┴─┐┌──────┴──────┐
│frei0r││LADSPA││SoX││libsamplerate│
└──────┘└──────┘└───┘└─────────────┘
```
<!-- http://marklodato.github.io/js-boxdrawing/ for drawing -->
## Class Diagram
A class diagram can be generated with Doxygen and GraphViz with the commands
below. Instead of docker, you can also run `doxygen` directly.
```bash
# Generate a Doxyfile (configuration file)
docker run -it --rm -v $(pwd):/data hrektts/doxygen doxygen -g
# Now edit the file and set the following variables:
# EXTRACT_ALL = YES
# HAVE_DOT = YES
# UML_LOOK = YES
# RECURSIVE = YES
# INPUT = src
# Now run Doxygen to generate the docs and UML files
docker run -it --rm -v $(pwd):/data hrektts/doxygen doxygen Doxyfile
```

160
dev-docs/build.md Normal file
View File

@@ -0,0 +1,160 @@
# Building Kdenlive
## Base procedure
Kdenlive usually requires the latest version of MLT, in which go several API updates, bufixes and optimizations.
### Get the build dependencies
You can use your distribution packages information (if not too old) to easily get a complete build environment:
```bash
# Debian/Ubuntu -- Enable deb-src entries /etc/apt/sources beforehand
sudo apt build-dep mlt kdenlive
# Fedora/CentOS -- Install builddep beforehand
dnf builddep mlt kdenlive
# OpenSUSE
zypper source-install --build-deps-only mlt kdenlive
```
### Clone the repositories
In your development directory, run:
```bash
git clone https://github.com/mltframework/mlt.git
git clone https://invent.kde.org/multimedia/kdenlive.git
```
### Build and install the projects
You should decide where you want to install your builds:
- by default it goes to `/usr/local` (good option if you are admin of the machine, normally programs there are automatically detected);
- you may use `$HOME/.local` user-writable directory (good option if you don't want to play with admin rights, programs there are also usually found)
- you may want to override the distribution files in `/usr` (then you have to remove MLT & Kdenlive binary & data packages first)
- you can pick any destination you like (eg in `/opt` or anywhere in `$HOME`, then you will have to set several environment variables for programs, libs and data to be found)
Let's define that destination as `INSTALL_PREFIX` variable; also you can set `JOBS` variable to the number of threads your CPU can offer for builds.
And build the dependencies (MLT) before the project (Kdenlive):
```bash
INSTALL_PREFIX=$HOME/.local # or any other choice
JOBS=4
# MLT
cd mlt
./configure --enable-gpl --enable-gpl3 --prefix=$INSTALL_PREFIX
make -j$JOBS
make install
# 'sudo make install' if INSTALL_PREFIX is not user-writable
# Kdenlive
cd ../kdenlive
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX
make -j$JOBS
make install
# 'sudo make install' if INSTALL_PREFIX is not user-writable
```
Note that `make install` is required for Kdenlive, otherwise the effects will not be installed and cannot be used.
### Run Kdenlive
If you didn't build in a system path in which all libs and data are automatically found, you will need to set environment variables to point to them.
This is done by the auto-generated script in `kdenlive/build` that must be sourced (to keep variables set in current shell, unlike just executing the script):
```bash
. prefix.sh
kdenlive
```
## Various development tricks
### Debugging
Having debug symbols helps getting much more useful information from crash logs or analyzers outputs; this is enabled at configure stage.
- in MLT, append `--enable-debug` to `./configure` line
- in Kdenlive, append `-DCMAKE_BUILD_TYPE=Debug` to `cmake` line
### Running tests
Kdenlive test coverage is focused mostly on timeline model code (extending tests to more parts is highly desired). To run those tests, append to `cmake` line:
`-DBUILD_TESTING=ON`
### Fuzzer
Kdenlive embeds a fuzzing engine that can detect crashes and auto-generate tests. This can be activated in `cmake` line with:
`-DBUILD_FUZZING=ON`
### Speeding up compilations
Ninja build systems, compared to make, seems faster and better detecting which files are necessary to rebuild. You can enable it appending `-GNinja` to `cmake` line
CCache also helps: `-DCMAKE_CXX_COMPILER_LAUNCHER=ccache`
### Analyzers
You can configure Kdenlive to embed tooling for runtime analysis, for example appending to cmake line:
`-DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DECM_ENABLE_SANITIZERS='address'`
This one will report in terminal all memory handling errors found during execution.
### Building OpenCV tracking module
MLT/Kdenlive tracking effect relies on a "contrib" a OpenCV module that is not shipped by distributions.
We build it in our AppImage but you may want it on your system (note OpenCV deserves its reputation of being difficult to build!).
```bash
wget https://github.com/opencv/opencv/archive/4.3.0.tar.gz -O opencv-4.3.0.tar.gz
wget https://github.com/opencv/opencv_contrib/archive/4.3.0.tar.gz -O opencv_contrib-4.3.0.tar.gz
tar xaf opencv-4.3.0.tar.gz
tar xaf opencv_contrib-4.3.0.tar.gz
cd opencv-4.3.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules \
-DOPENCV_GENERATE_PKGCONFIG=ON -DBUILD_LIST=tracking -DOPENCV_BUILD_3RDPARTY_LIBS=OFF
```
Then you will have to rebuild MLT appending `--enable-opencv` to `configure` line!
### Building frei0r
You may be interested in building latest frei0r effects library. So get dependencies, clone repository, and build-install:
```bash
sudo apt build-dep frei0r
git clone https://github.com/dyne/frei0r.git
cd frei0r
mkdir build
cd build
cmake .. -DWITHOUT_OPENCV=true -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX
```
Note: as of 20.04, frei0r doesn't support recent OpenCV (and effects using it seemed not very stable)
### Building in Docker
It is possible to run the above commands inside a container, with a fresh Ubuntu for example.
Note that Kdenlive cannot be easily run from inside the Docker container as it is a GUI application.
```bash
# Spin up a Docker container
# The --rm flag removes the container after it is stopped.
docker run -it --rm ubuntu:20.04
# Now install the dependencies etc.
# Note that you are root in the container, and sudo neither exists nor works.
apt install …
# When you are done, exit
exit
```
## Translating Kdenlive
TODO

63
dev-docs/coding.md Normal file
View File

@@ -0,0 +1,63 @@
# Coding and Resources
* Qt5
* [All Qt5 classes][qt5c]
* [Signals and Slots][qt-sig]
* [MLT introduction][mlt-intro].
* [The KDE Frameworks][kf]
* [XMLGUI Technology][xmlgui-tut] (e.g. for the `kdenliveui.rc` file)
## Locale handling
Locales are important e.g. for formatting numbers in a way that the user is
familiar with. Some countries would write `12500.42` as `12.000,42`, for
example.
Since 20.08, Kdenlive follows the following rules:
* When parsing data (by Kdenlive or by other libraries like MLT), **the `C`
locale is used.** This is especially important for project files. The reason
is that for passing data between programs, the format has to be well-defined
and *not* depend on where the user happens to live.
* When presenting data to the user, the users locale is used.
MLT uses the C locale which is set by `setlocale()` and which must be set to
`C`. If it is set to e.g. `hu_HU.utf-8`, which uses `,` as decimal separator,
properties are converted to this format upon saving the project file, and the
project file ends up corrupted.
In Kdenlive, `QLocale` should only be used in one case: when data is shown to
the user or read from the user. Usually that is handled by Qt already. A
`QDoubleSpinBox`, for example, presents the double value in the users local
number format.
## Configuration
Named settings are stored in [`kdenlivesettings.kcfg`][sett]. To add a new
setting with default value, add an entry in the settings file, for example:
```xml
<entry name="logscale" type="Bool">
<label>Use logarithmic scale</label>
<default>true</default>
</entry>
```
The setting can then be read and written as follows:
```cpp
// Read
bool logScale = KdenliveSettings::logscale();
// Write
KdenliveSettings::setLogscale(true);
```
[sett]: ../src/kdenlivesettings.kcfg
[mlt-intro]: https://www.mltframework.org/docs/framework/
[qt5c]: https://doc.qt.io/qt-5/classes.html
[qt-sig]: https://doc.qt.io/qt-5/signalsandslots.html
[kf]: https://api.kde.org/frameworks-api/frameworks-apidocs/frameworks/index.html
[xmlgui-tut]: https://techbase.kde.org/Development/Architecture/KDE4/XMLGUI_Technology

35
dev-docs/contributing.md Normal file
View File

@@ -0,0 +1,35 @@
# Contributing to Kdenlive
* Create a merge request on GitLab
* Get it reviewed
* Join the Telegram group
## Coding Guidelines
* Use existing code style
* Write unit tests
* Document unclear parts (e.g. what a QMutex is locking)
## Release + Branching Model
Kdenlive is following the [KDE Release Schedule][sched] and a new major version
like `20.04` is released every four months. Bugfix releases like `20.04.1` are
released until the next major release arrives.
The branching model in Git works as follows:
* `master` is the most recent development version.
* `release/*` contains release branches like `release/20.04`. Shortly before a
new major version is released, the new release branch is created and we enter
feature and string freeze for final bugfixes and translation of texts. The
version which is effectively released is marked with a tag.
* `feature/*` contains feature branches. When you start coding a new feature,
do it on a feature branch. When it is ready, the feature branch is merged
back into master if the merge request has been approved.
Bugfixes for the released versions are added on the release branch and then
merged back to master.
[sched]: https://community.kde.org/Schedules

4
dev-docs/index.md Normal file
View File

@@ -0,0 +1,4 @@
# Kdenlive Developer Docs
* Overview what these docs are
* Where to find more documentation (e.g. on MLT)

View File

@@ -1,32 +1,8 @@
############################
# fuzzing
########################
if(POLICY CMP0079)
cmake_policy(SET CMP0079 NEW)
endif()
project(Kdenlive_fuzzing)
SET(FUZZING_CXX_FLAGS "${DEFAULT_CXX_FLAGS} -Wall -pedantic -Wextra -fexceptions -O1 -fsanitize=fuzzer,address -g")
SET(fuzzing_SRCS
main_fuzzer.cpp
fuzzing.cpp
)
SET(reproduce_SRCS
main_reproducer.cpp
fuzzing.cpp
)
ADD_EXECUTABLE(fuzz ${fuzzing_SRCS})
ADD_EXECUTABLE(fuzz_reproduce ${reproduce_SRCS})
target_link_libraries(fuzz kdenliveLib)
include_directories(${MLT_INCLUDE_DIR})
kde_enable_exceptions()
add_executable(fuzz main_fuzzer.cpp fuzzing.cpp)
add_executable(fuzz_reproduce main_reproducer.cpp fuzzing.cpp)
target_link_libraries(fuzz kdenliveLib -fsanitize=fuzzer)
target_link_libraries(fuzz_reproduce kdenliveLib)
#target_link_options(fuzz PUBLIC "-fsanitize=fuzzer")
set_target_properties(fuzz PROPERTIES LINK_FLAGS "-fsanitize=fuzzer")
set_property(TARGET fuzz PROPERTY CXX_STANDARD 14)
set_property(TARGET fuzz_reproduce PROPERTY CXX_STANDARD 14)
set_target_properties(fuzz PROPERTIES COMPILE_FLAGS "${FUZZING_CXX_FLAGS}")

View File

@@ -96,11 +96,14 @@ add_subdirectory( ext_fftw3 )
add_subdirectory( ext_fftw3f )
add_subdirectory( ext_sdl2 )
add_subdirectory( ext_sox )
add_subdirectory( ext_jack )
add_subdirectory( ext_jack )
add_subdirectory( ext_ladspa )
add_subdirectory( ext_x264 )
add_subdirectory( ext_x265 )
add_subdirectory( ext_libvpx )
add_subdirectory( ext_nv-codec-headers )
add_subdirectory( ext_amf )
add_subdirectory( ext_mfx )
add_subdirectory( ext_ffmpeg )
add_subdirectory( ext_cairo )
add_subdirectory( ext_pango )
@@ -109,6 +112,7 @@ add_subdirectory( ext_gtk+ )
add_subdirectory( ext_gavl )
add_subdirectory( ext_frei0r )
add_subdirectory( ext_opencv )
add_subdirectory( ext_opus )
add_subdirectory( ext_vidstab )
add_subdirectory( ext_rubberband )
add_subdirectory( ext_mlt )

View File

@@ -0,0 +1,13 @@
ExternalProject_Add(
ext_amf
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
GIT_REPOSITORY https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
GIT_TAG master
CONFIGURE_COMMAND rm -rf <SOURCE_DIR>/Thirdparty
BUILD_ALWAYS TRUE
BUILD_IN_SOURCE 1
BUILD_COMMAND mkdir -p ${EXT_INSTALL_DIR}/include/AMF
INSTALL_COMMAND cp -av <SOURCE_DIR>/amf/public/include/. ${EXT_INSTALL_DIR}/include/AMF
)

View File

@@ -1,13 +1,13 @@
ExternalProject_Add(
ext_ffmpeg
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
GIT_REPOSITORY https://anonscm.debian.org/git/pkg-multimedia/ffmpeg.git
# A stupid crlf issue prevents changing branch using normal pipeline, so
# we have a crazy workaround to delete offending file and checkout the wanted branch
UPDATE_COMMAND git checkout debian/7%4.1-1
PATCH_COMMAND rm <SOURCE_DIR>/tests/ref/fate/sub-scc
ExternalProject_Add(
ext_ffmpeg
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
GIT_REPOSITORY https://anonscm.debian.org/git/pkg-multimedia/ffmpeg.git
# A stupid crlf issue prevents changing branch using normal pipeline, so
# we have a crazy workaround to delete offending file and checkout the wanted branch
UPDATE_COMMAND git checkout debian/7%4.3-3
# PATCH_COMMAND rm <SOURCE_DIR>/tests/ref/fate/sub-scc
GIT_TAG debian/master
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${EXT_INSTALL_DIR} --extra-ldflags="-L${EXT_INSTALL_DIR}/lib -lstdc++ -lm -lrt -ldl" --extra-cflags="-I$EXT_INSTALL_DIR/include" --enable-shared --enable-avfilter --enable-gpl --enable-avresample --enable-libx265 --enable-libvpx --enable-libx264 --disable-doc
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${EXT_INSTALL_DIR} --extra-ldflags="-L${EXT_INSTALL_DIR}/lib -lstdc++ -lm -lrt -ldl" --extra-cflags="-I$EXT_INSTALL_DIR/include" --enable-shared --enable-avfilter --enable-gpl --enable-avresample --enable-libx265 --enable-libvpx --enable-libx264 --disable-doc --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-nvenc --enable-libmfx --enable-vaapi
BUILD_ALWAYS TRUE
BUILD_IN_SOURCE 1
BUILD_COMMAND $(MAKE) clean

View File

@@ -1,440 +1,273 @@
# All needed frameworks:
# Tier 1
# Archive
# Codecs
# Config
# CoreAddons
# DBusAddons
# GuiAddons
# I18n
# ItemModels
# ItemViews
# WidgetsAddons
# WindowSystem
# Solid
# Sonnet
# SyntaxHighlighting
# Tier 2
# Activities
# Auth
# Completion
# Crash
# JobWidgets
# Notifications
# Package
# Tier 3
# Emoticons
# ConfigWidgets
# IconThemes
# Service
# TextWidgets
# XmlGui
# Bookmarks
# GlobalAccel
# KIO
# Declarative
# KCMUtils
# Wallet
# Script to build KF5 Frameworks for digiKam bundle.
#
# Copyright (c) 2015-2020 by Gilles Caulier <caulier dot gilles at gmail dot com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
ExternalProject_Add(
ext_extra_cmake_modules
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/extra-cmake-modules-5.61.0.zip
URL_MD5 e63d81fc203c03667cc9043395c1e80d
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
)
set(EXTPREFIX_frameworks "${EXTPREFIX}")
ExternalProject_Add(
ext_karchive
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/karchive-5.61.0.zip
URL_MD5 24f9b0c849943e9a7cdee48facaf62ce
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
function(InstallKF5Component
name
version
argoptions
patch)
ExternalProject_Add(
ext_kcodecs
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kcodecs-5.61.0.zip
URL_MD5 6c2615ec49c224adea10785e50cb21c5
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
if(MINGW)
ExternalProject_Add(
ext_kconfig
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kconfig-5.61.0.zip
URL_MD5 0fedc596e49c82647853710582eb9138
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
# Extract MD5 sums of each KF5 components directly from server.
execute_process(COMMAND
wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist
COMMAND
grep "MD5 Hash"
COMMAND
grep -o -P "(?<=<tt>).*(?=</tt>)"
RESULT_VARIABLE
wgetresult
OUTPUT_VARIABLE
md5sm
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ExternalProject_Add(
ext_kdbusaddons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kdbusaddons-5.61.0.zip
URL_MD5 837514e0b634916221cbfa5705cb1aca
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
if(NOT ${wgetresult} MATCHES 0)
message(WARNING "Cannot download MD5 sum for ${name}!")
endif()
ExternalProject_Add(
ext_kcoreaddons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kcoreaddons-5.61.0.zip
URL_MD5 62e72d0e2cb1a24de6b10eebea43fe48
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_sharedmimeinfo ext_extra_cmake_modules
)
message(STATUS "--------------------------------")
message(STATUS "KF5 component : ${name}")
message(STATUS "Component version: ${version}")
message(STATUS "Component MD5 : ${md5sm}")
message(STATUS "Configure options: ${argoptions}")
message(STATUS "Patch to apply : ${patch}")
ExternalProject_Add(
ext_kguiaddons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kguiaddons-5.61.0.zip
URL_MD5 0236f2bb13b692362b0d875baa06e8ac
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
if(NOT "${patch}" STREQUAL "")
set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch}")
endif()
ExternalProject_Add(
ext_ki18n
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/ki18n-5.61.0.zip
URL_MD5 2ce768761b8b1e1d2f52cbea143884ce
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules ext_gettext
)
ExternalProject_Add(ext_${name}
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL file://${EXTERNALS_DOWNLOAD_DIR}/${name}-${version}.0.tar.xz
URL_MD5 ${md5sm}
ExternalProject_Add(
ext_kitemmodels
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kitemmodels-5.61.0.zip
URL_MD5 32866b0c6b0313cc82f11cf99d3c4d2b
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
INSTALL_DIR ${EXTPREFIX_frameworks}
ExternalProject_Add(
ext_kitemviews
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kitemviews-5.61.0.zip
URL_MD5 4f5f2b12e29eb7d810f984d45a9c5964
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
CMAKE_ARGS -DMXE_TOOLCHAIN=${MXE_TOOLCHAIN}
-DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE}
-DCMAKE_COLOR_MAKEFILE=ON
-DCMAKE_INSTALL_PREFIX=${EXTPREFIX_frameworks}
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
-DCMAKE_TOOLCHAIN_FILE=${MXE_TOOLCHAIN}
-DCMAKE_FIND_PREFIX_PATH=${CMAKE_PREFIX_PATH}
-DCMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include
-DCMAKE_INCLUDE_PATH=${CMAKE_PREFIX_PATH}/include
-DCMAKE_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib
-DBUILD_TESTING=OFF
-DZLIB_ROOT=${CMAKE_PREFIX_PATH}
-DINSTALL_ROOT=${MXE_INSTALL_PREFIX}
${GLOBAL_PROFILE}
"${argoptions}"
-Wno-dev
ExternalProject_Add(
ext_kwidgetsaddons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kwidgetsaddons-5.61.0.zip
URL_MD5 50bf68ff09fe30d61b2756ff2a3b9818
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
PATCH_COMMAND ${patch}
UPDATE_COMMAND ""
ALWAYS 0
)
ExternalProject_Add(
ext_kwindowsystem
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kwindowsystem-5.61.0.zip
URL_MD5 9e2d29a266ca085487038403e1514bbc
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
ExternalProject_Add_step(ext_${name} before_download
ExternalProject_Add(
ext_solid
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/solid-5.61.0.zip
URL_MD5 0a842b1c78c9482d719c07e37ae7f333
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
# Note : under MXE, curl is not compiled with https support. We cannot use the tarball as under Linux/MacOS.
COMMAND wget -N http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz -O ${EXTERNALS_DOWNLOAD_DIR}/${name}-${version}.0.tar.xz
DEPENDERS download
)
ExternalProject_Add(
ext_sonnet
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/sonnet-5.61.0.zip
URL_MD5 185c918e14898f1815a4d1fe62db83d7
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
elseif(APPLE)
ExternalProject_Add(
ext_syntaxhighlighting
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/syntax-highlighting-5.61.0.zip
URL_MD5 f31399bd41691f015b2b61373719b96a
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
# Extract MD5 sums of each KF5 components directly from server.
execute_process(COMMAND
wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist
COMMAND
grep "MD5 Hash"
COMMAND
grep -o "<tt>.*</tt>"
COMMAND
cut -c 5-
COMMAND
rev
COMMAND
cut -c 6-
COMMAND
rev
RESULT_VARIABLE
wgetresult
OUTPUT_VARIABLE
md5sm
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ExternalProject_Add(
ext_kholidays
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL https://download.kde.org/stable/frameworks/5.61/kholidays-5.61.0.zip
URL_MD5 fdd9193fcd666a76d9d1d63470a2aeba
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules
)
if(NOT ${wgetresult} MATCHES 0)
message(WARNING "Cannot download MD5 sum for ${name}!")
endif()
ExternalProject_Add(
ext_kactivities
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kactivities-5.61.0.zip
URL_MD5 582e7738a8a7c4dc736c4c561f2b90cd
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_boost ext_kconfig ext_kcoreaddons ext_kwindowsystem
)
message(STATUS "--------------------------------")
message(STATUS "KF5 component : ${name}")
message(STATUS "Component version: ${version}")
message(STATUS "Component MD5 : ${md5sm}")
message(STATUS "Configure options: ${argoptions}")
message(STATUS "Patch to apply : ${patch}")
ExternalProject_Add(
ext_kauth
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kauth-5.61.0.zip
URL_MD5 2b098e9374d7bcc1ef640f2e98c944b4
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kcoreaddons
)
if(NOT "${patch}" STREQUAL "")
set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch};&&")
endif()
ExternalProject_Add(
ext_kcompletion
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kcompletion-5.61.0.zip
URL_MD5 9d3e10ccda7e988a60e59ab87eaa0e56
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kwidgetsaddons ext_kconfig
)
ExternalProject_Add(ext_${name}
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz
URL_MD5 ${md5sm}
ExternalProject_Add(
ext_kcrash
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kcrash-5.61.0.zip
URL_MD5 3e94cb696f2ae8ddda21b653d961d686
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kcoreaddons ext_kwindowsystem
)
PATCH_COMMAND ${patch}
cp ${CMAKE_CURRENT_SOURCE_DIR}/../../macports/fixbundledatapath.sh <SOURCE_DIR>/. &&
<SOURCE_DIR>/fixbundledatapath.sh
ExternalProject_Add(
ext_kjobwidgets
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kjobwidgets-5.61.0.zip
URL_MD5 d1741558f0bdc7aee4eb00a63a7ad0bb
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kcoreaddons ext_kwidgetsaddons
)
CONFIGURE_COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/../../../../bootstrap.macports <SOURCE_DIR>/. &&
sed -i '' -e "s/DBUILD_TESTING=ON/DBUILD_TESTING=OFF/g" <SOURCE_DIR>/bootstrap.macports &&
<SOURCE_DIR>/bootstrap.macports ${EXTPREFIX_frameworks} debug x86_64 "${argoptions}"
ExternalProject_Add(
ext_knotifications
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/knotifications-5.61.0.zip
URL_MD5 ea46fbd930228511743d0793fd4aede9
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kwindowsystem ext_kconfig ext_kcodecs ext_kcoreaddons ext_phonon
)
BUILD_COMMAND cd <SOURCE_DIR>/build && $(MAKE)
ExternalProject_Add(
ext_attica
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/attica-5.61.0.zip
URL_MD5 50143e5c131a94fd383ed8fffc03f793
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kwindowsystem ext_kconfig ext_kcodecs ext_kcoreaddons ext_phonon
)
INSTALL_COMMAND cd <SOURCE_DIR>/build && make install/fast
ExternalProject_Add(
ext_kpackage
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kpackage-5.61.0.zip
URL_MD5 a7c324a083a95bdbf48362995ed72b18
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_karchive ext_ki18n ext_kcoreaddons
)
BUILD_IN_SOURCE 1
ExternalProject_Add(
ext_kconfigwidgets
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kconfigwidgets-5.61.0.zip
URL_MD5 c65357e83034ac247405f03a61536da8
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kauth ext_kcoreaddons ext_kcodecs ext_kconfig ext_kguiaddons ext_ki18n ext_kwidgetsaddons
)
UPDATE_COMMAND ""
ALWAYS 0
)
ExternalProject_Add(
ext_kiconthemes
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kiconthemes-5.61.0.zip
URL_MD5 bee44c7d4de4f6c44ea6f898d1447907
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_karchive ext_ki18n ext_kcoreaddons ext_kconfigwidgets ext_kwidgetsaddons ext_kitemviews
)
else() # Linux
ExternalProject_Add(
ext_kservice
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kservice-5.61.0.zip
URL_MD5 a89621b85f005519b6e8bb9dbcea6e81
#PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/kservice.diff #this makes finding KCModules in AppImage possible
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kconfig ext_kcoreaddons ext_kcrash ext_kdbusaddons ext_ki18n
)
# Extract MD5 sums of each KF5 components directly from server.
execute_process(COMMAND
wget -q -O - -o /dev/null http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz.mirrorlist
COMMAND
grep "MD5 Hash"
COMMAND
grep -o -P "(?<=<tt>).*(?=</tt>)"
RESULT_VARIABLE
wgetresult
OUTPUT_VARIABLE
md5sm
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ExternalProject_Add(
ext_kemoticons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kemoticons-5.61.0.zip
URL_MD5 2ee202a4d8421d7e7e3a7ead0d0ac8cc
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_karchive ext_kconfig ext_kservice ext_kcoreaddons
)
if(NOT ${wgetresult} MATCHES 0)
message(WARNING "Cannot download MD5 sum for ${name}!")
endif()
ExternalProject_Add(
ext_ktextwidgets
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/ktextwidgets-5.61.0.zip
URL_MD5 d806865de5f32a50ce985f6b6e1d7fc2
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules ext_kcompletion ext_kconfig ext_kconfigwidgets ext_ki18n ext_kiconthemes ext_kservice ext_kwidgetsaddons ext_kwindowsystem ext_sonnet
)
message(STATUS "--------------------------------")
message(STATUS "KF5 component : ${name}")
message(STATUS "Component version: ${version}")
message(STATUS "Component MD5 : ${md5sm}")
message(STATUS "Configure options: ${argoptions}")
message(STATUS "Patch to apply : ${patch}")
ExternalProject_Add(
ext_kglobalaccel
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kglobalaccel-5.61.0.zip
URL_MD5 3da7c0e1fe47e92993ef275b0c7512a4
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kconfig ext_kcoreaddons ext_kcrash ext_kdbusaddons ext_kwindowsystem
)
if(NOT "${patch}" STREQUAL "")
set(patch "${PATCH_COMMAND};-p1;-i;${CMAKE_CURRENT_SOURCE_DIR}/${patch}")
endif()
ExternalProject_Add(
ext_kxmlgui
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kxmlgui-5.61.0.zip
URL_MD5 37a6bbc26dc1ebad278c0bc0a63c5af5
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kcoreaddons ext_kitemviews ext_kconfig ext_kconfigwidgets ext_ki18n ext_kiconthemes ext_ktextwidgets ext_kwidgetsaddons ext_kwindowsystem ext_kglobalaccel
)
ExternalProject_Add(ext_${name}
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/${version}/${name}-${version}.0.tar.xz
URL_MD5 ${md5sm}
ExternalProject_Add(
ext_kbookmarks
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kbookmarks-5.61.0.zip
URL_MD5 3b067a8dbe4784ff3f229767f6e355db
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kconfig ext_kcoreaddons ext_kcodecs ext_kconfigwidgets ext_kiconthemes ext_kwidgetsaddons ext_kxmlgui
)
PATCH_COMMAND ${patch}
ExternalProject_Add(
ext_kwallet
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kwallet-5.61.0.zip
URL_MD5 97f6af2b3c756a9b7c49967e744bac99
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_gcrypt ext_gpgme ext_kcoreaddons ext_kconfig ext_kwindowsystem ext_ki18n ext_kconfigwidgets ext_knotifications ext_kservice ext_kwidgetsaddons ext_kiconthemes ext_kdbusaddons
)
INSTALL_DIR ${EXTPREFIX_frameworks}
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
-DBUILD_TESTING=OFF
"${argoptions}"
-Wno-dev
UPDATE_COMMAND ""
ALWAYS 0
)
ExternalProject_Add(
ext_kio
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kio-5.61.0.zip
URL_MD5 98f9cf494c281faae412991c5e99a94b
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_extra_cmake_modules ext_karchive ext_kconfig ext_kcoreaddons ext_kdbusaddons ext_ki18n ext_kservice ext_solid ext_kwindowsystem ext_kwidgetsaddons ext_kcompletion ext_kconfigwidgets ext_kiconthemes ext_kitemviews ext_kjobwidgets ext_kbookmarks ext_kwallet
)
endif()
ExternalProject_Add(
ext_knewstuff
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/knewstuff-5.61.0.zip
URL_MD5 fe4a4a674abb1588691fc76030109f81
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kio ext_kwindowsystem ext_kconfig ext_kcodecs ext_kcoreaddons ext_phonon ext_attica
)
endfunction()
ExternalProject_Add(
ext_knotifyconfig
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/knotifyconfig-5.61.0.zip
URL_MD5 c5ab95425c6864a2ccb1af784c0d2e84
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kwindowsystem ext_kconfig ext_kcodecs ext_kcoreaddons ext_phonon ext_knewstuff
)
if(MINGW)
set(KF5_VERSION 5.74) # we have Qt 5.14.2 available.
elseif(APPLE)
set(KF5_VERSION 5.74) # we have Qt 5.14.1 available.
else()
set(KF5_VERSION 5.74) # we have Qt 5.14.2 available.
endif()
ExternalProject_Add(
ext_kdeclarative
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kdeclarative-5.61.0.zip
URL_MD5 228c640eb598d59ff7ff031c84f1ace7
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kconfig ext_ki18n ext_kiconthemes ext_kio ext_kwidgetsaddons ext_kwindowsystem ext_kglobalaccel ext_kguiaddons ext_kpackage
)
if(APPLE)
set(MacosThreadWeaverPatch threadweaver-macports.patch)
set(MacosKauthBackend -DKAUTH_BACKEND_NAME=Apple)
endif()
ExternalProject_Add(
ext_kcmutils
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kcmutils-5.61.0.zip
URL_MD5 4c41ec7dfd8656199ce83d13ef9ab72f
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kitemviews ext_kconfigwidgets ext_kcoreaddons ext_ki18n ext_kiconthemes ext_kservice ext_kxmlgui ext_kdeclarative
)
ExternalProject_Add(
ext_kimageformats
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kimageformats-5.61.0.zip
URL_MD5 fb09577e4eeb4971147cad6ab69c6d75
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kitemviews
)
ExternalProject_Add(
ext_kpurpose
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/purpose-5.61.0.zip
URL_MD5 32270091283bcab0452ccf79a76128c2
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kxmlgui
)
ExternalProject_Add(
ext_kfilemetadata
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kfilemetadata-5.61.0.zip
URL_MD5 95ccb70f3d00e1a203239076bad6bf63
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kguiaddons
)
ExternalProject_Add(
ext_kdoctools
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/kdoctools-5.61.0.zip
URL_MD5 c522e8c468fce403c5284e9c61e5b458
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kcoreaddons
)
ExternalProject_Add(
ext_breezeicons
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/frameworks/5.61/breeze-icons-5.61.0.zip
URL_MD5 0c7199da9510bd8fd59fd6a6bc8b8c78
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
)
InstallKF5Component(extra-cmake-modules ${KF5_VERSION} "" "")
InstallKF5Component(kconfig ${KF5_VERSION} "" "")
InstallKF5Component(breeze-icons ${KF5_VERSION} "-DBINARY_ICONS_RESOURCE=OFF" "${MacosBreezePatch}")
InstallKF5Component(solid ${KF5_VERSION} "" "")
InstallKF5Component(kcoreaddons ${KF5_VERSION} "" "")
InstallKF5Component(threadweaver ${KF5_VERSION} "" "${MacosThreadWeaverPatch}")
InstallKF5Component(kwindowsystem ${KF5_VERSION} "" "")
InstallKF5Component(karchive ${KF5_VERSION} "" "")
InstallKF5Component(kdbusaddons ${KF5_VERSION} "" "")
InstallKF5Component(ki18n ${KF5_VERSION} "" "")
InstallKF5Component(kcrash ${KF5_VERSION} "" "")
InstallKF5Component(kpackage ${KF5_VERSION} "" "")
InstallKF5Component(kcodecs ${KF5_VERSION} "" "")
InstallKF5Component(kauth ${KF5_VERSION} "${MacosKauthBackend}" "")
InstallKF5Component(knewstuff ${KF5_VERSION} "" "")
InstallKF5Component(kguiaddons ${KF5_VERSION} "" "")
InstallKF5Component(kwidgetsaddons ${KF5_VERSION} "" "")
InstallKF5Component(kdeclarative ${KF5_VERSION} "" "")
InstallKF5Component(kitemviews ${KF5_VERSION} "" "")
InstallKF5Component(kcompletion ${KF5_VERSION} "" "")
InstallKF5Component(kconfigwidgets ${KF5_VERSION} "" "")
InstallKF5Component(kiconthemes ${KF5_VERSION} "" "")
InstallKF5Component(kservice ${KF5_VERSION} "" "")
InstallKF5Component(kglobalaccel ${KF5_VERSION} "" "")
InstallKF5Component(kxmlgui ${KF5_VERSION} "" "")
InstallKF5Component(kbookmarks ${KF5_VERSION} "" "")
InstallKF5Component(kdoctools ${KF5_VERSION} "" "")
InstallKF5Component(kimageformats ${KF5_VERSION} "" "")
InstallKF5Component(knotifyconfig ${KF5_VERSION} "" "")
InstallKF5Component(knotifications ${KF5_VERSION} "" "")
InstallKF5Component(kjobwidgets ${KF5_VERSION} "" "")
InstallKF5Component(sonnet ${KF5_VERSION} "" "")
InstallKF5Component(ktextwidgets ${KF5_VERSION} "" "")
InstallKF5Component(attica ${KF5_VERSION} "" "")
InstallKF5Component(kio ${KF5_VERSION} "" "")
InstallKF5Component(frameworkintegration ${KF5_VERSION} "" "")
InstallKF5Component(qqc2-desktop-style ${KF5_VERSION} "" "")
InstallKF5Component(plasma-framework ${KF5_VERSION} "" "")
ExternalProject_Add(
ext_kdecoration
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/plasma/5.16.4/kdecoration-5.16.4.tar.xz
URL_MD5 5e44ce8c340a2776d0c26c01e052de98
URL http://download.kde.org/stable/plasma/5.19.5/kdecoration-5.19.5.tar.xz
URL_MD5 3cc5be057c571dc20775ac52a6af2908
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
)
ExternalProject_Add(
ext_breeze
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL http://download.kde.org/stable/plasma/5.16.4/breeze-5.16.4.tar.xz
URL_MD5 b9669c56c282a3a99ad8b5c8ab9e28e7
URL http://download.kde.org/stable/plasma/5.19.5/breeze-5.19.5.tar.xz
URL_MD5 f664f181d10c4cbbe4b385068c75539a
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
DEPENDS ext_kdecoration
)
#ExternalProject_Add(
# ext_plasma-framework
# DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
# URL http://download.kde.org/stable/frameworks/5.68/plasma-framework-5.68.0.zip
# URL_MD5 dd2741b632ad0e7589e00ef39a605422
# CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE}
# DEPENDS ext_kactivities
#)

View File

@@ -0,0 +1,14 @@
ExternalProject_Add(
ext_mfx
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
GIT_REPOSITORY git://github.com/lu-zero/mfx_dispatch.git
GIT_TAG master
CONFIGURE_COMMAND autoreconf -fiv
COMMAND ./configure --prefix=${EXT_INSTALL_DIR}
BUILD_ALWAYS TRUE
BUILD_IN_SOURCE 1
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install
)

View File

@@ -0,0 +1,11 @@
ExternalProject_Add(
ext_nv-codec-headers
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
GIT_REPOSITORY git://github.com/FFmpeg/nv-codec-headers.git
GIT_TAG master
CONFIGURE_COMMAND sed -i s,/usr/local,${EXT_INSTALL_DIR}, <SOURCE_DIR>/Makefile
BUILD_ALWAYS TRUE
BUILD_IN_SOURCE 1
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install
)

View File

@@ -2,8 +2,8 @@
ExternalProject_Add(
ext_opencv_contrib
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL https://github.com/opencv/opencv_contrib/archive/4.1.0.tar.gz
URL_MD5 5357a038f54ba15c771abb0d91a5519d
URL https://github.com/opencv/opencv_contrib/archive/4.3.0.tar.gz
URL_MD5 924ed270a66b5234442cf84da8c7e4b1
# This is a support repository for OpenCV 4.x and does not contain any
# build or install rules. This will be hooked into OpenCV which will control
@@ -17,8 +17,8 @@ ExternalProject_Add(
ExternalProject_Add(
ext_opencv
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL https://github.com/opencv/opencv/archive/4.1.0.tar.gz
URL_MD5 b80c59c7e4feee6a00608315e02b0b73
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE} -DOPENCV_EXTRA_MODULES_PATH=${EXT_BUILD_DIR}/deps-build/ext_opencv/ext_opencv_contrib-prefix/src/ext_opencv_contrib/modules -DOPENCV_GENERATE_PKGCONFIG=ON -DBUILD_opencv_freetype=OFF -DCPU_BASELINE=SSE4_2 -DCPU_DISPATCH=SSE4_2
URL https://github.com/opencv/opencv/archive/4.3.0.tar.gz
URL_MD5 559953ef6ffaad03421cbba7f31d891c
CMAKE_ARGS ${CMAKE_GLOBAL_PROFILE} -DOPENCV_EXTRA_MODULES_PATH=${EXT_BUILD_DIR}/deps-build/ext_opencv/ext_opencv_contrib-prefix/src/ext_opencv_contrib/modules -DOPENCV_GENERATE_PKGCONFIG=ON -DBUILD_LIST=core,objdetect,imgproc,imgcodecs,flann,tracking -DBUILD_opencv_freetype=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DWITH_LAPACK=OFF -DWITH_V4L=OFF -DOPENCV_ENABLE_ALLOCATOR_STATS=OFF -DOPENCV_BUILD_3RDPARTY_LIBS=OFF -DBUILD_NEW_PYTHON_SUPPORT=OFF -DBUILD_ZLIB=OFF -DWITH_JASPER=OFF -DWITH_PNG=OFF -DWITH_OPENEXR=OFF -DWITH_1394=OFF -DWITH_CUBLAS=OFF -DWITH_CUDA=OFF -DWITH_CUFFT=OFF -DWITH_DIRECTX=OFF -DWITH_DSHOW=OFF -DWITH_EIGEN=OFF -DWITH_FFMPEG=OFF -DWITH_GPHOTO2=OFF -DWITH_GSTREAMER=OFF -DWITH_GTK=OFF -DWITH_IMGCODEC_HDR=OFF -DWITH_IMGCODEC_PXM=OFF -DWITH_IMGCODEC_SUNRASTER=OFF -DWITH_IPP=OFF -DWITH_JPEG=OFF -DWITH_MATLAB=OFF -DWITH_NVCUVID=OFF -DWITH_OPENCL_SVM=OFF -DWITH_OPENCL=OFF -DWITH_OPENCLAMDBLAS=OFF -DWITH_OPENCLAMDFFT=OFF -DWITH_OPENMP=OFF -DWITH_OPENNI=OFF -DWITH_PVAPI=OFF -DWITH_QT_OPENGL=OFF -DWITH_QT=OFF -DWITH_QUICKTIME=OFF -DWITH_TBB=OFF -DWITH_TIFF=OFF -DWITH_UNICAP=OFF -DWITH_VA_INTEL=OFF -DWITH_VFW=OFF -DWITH_VIDEOINPUT=OFF -DWITH_VTK=OFF -DWITH_WEBP=OFF -DWITH_WIN32UI=OFF -DWITH_XINE=OFF -DCPU_BASELINE=SSE2 -DCPU_DISPATCH=SSE2
DEPENDS ext_opencv_contrib
)

View File

@@ -0,0 +1,10 @@
ExternalProject_Add(
ext_opus
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
URL_MD5 d7c07db796d21c9cf1861e0c2b0c0617
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${EXT_INSTALL_DIR}
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install
)

View File

@@ -5,12 +5,12 @@
ExternalProject_Add(
ext_qt
DOWNLOAD_DIR ${EXT_DOWNLOAD_DIR}
URL https://download.qt.io/official_releases/qt/5.12/5.12.4/single/qt-everywhere-src-5.12.4.tar.xz
URL_MD5 dda95b0239d13c5276834177af3a8588
URL https://download.qt.io/official_releases/qt/5.14/5.14.1/single/qt-everywhere-src-5.14.1.tar.xz
URL_MD5 781c3179410aff7ef84607214e1e91b4
CMAKE_ARGS -DOPENSSL_LIBS='-L${EXTPREFIX_qt}/lib -lssl -lcrypto'
BUILD_IN_SOURCE 1
#PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/qsql_mysql.diff
CONFIGURE_COMMAND <SOURCE_DIR>/configure -prefix ${EXT_INSTALL_DIR} -opensource -confirm-license -openssl-linked -verbose -nomake examples -nomake tests -nomake tools -skip qt3d -skip qtactiveqt -skip qtcanvas3d -skip qtconnectivity -skip qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtandroidextras -skip qtserialport -skip qtdatavis3d -skip qtvirtualkeyboard -skip qtspeech -skip qtsensors -skip qtgamepad -skip qtscxml -skip qtremoteobjects -skip qtxmlpatterns -skip qtcharts -skip qtpurchasing -skip qtserialbus -skip qtdoc -skip qtmacextras -skip qtwinextras -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtnetworkauth
<EFBFBD> CONFIGURE_COMMAND <SOURCE_DIR>/configure -prefix ${EXT_INSTALL_DIR} -opensource -confirm-license -openssl-linked -verbose -nomake examples -nomake tests -nomake tools -skip qt3d -skip qtactiveqt -skip qtcanvas3d -skip qtconnectivity -skip qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtandroidextras -skip qtserialport -skip qtdatavis3d -skip qtvirtualkeyboard -skip qtspeech -skip qtsensors -skip qtgamepad -skip qtscxml -skip qtremoteobjects -skip qtxmlpatterns -skip qtcharts -skip qtpurchasing -skip qtserialbus -skip qtdoc -skip qtmacextras -skip qtwinextras -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtnetworkauth -linker gold
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install

View File

@@ -6,18 +6,25 @@ set -e
# Be verbose
set -x
# Make sure the base dependencies are installed
#apt-get -y install build-essential perl python git '^libxcb.*-dev' libx11-xcb-dev \
# libglu1-mesa-dev libxrender-dev libxi-dev flex bison gperf libicu-dev ruby
#apt-get -y install cmake3 wget tar bzip2 xz-utils libtool libfile-which-perl automake gcc-4.8 patch \
# g++-4.8 zlib1g-dev libglib2.0-dev libc6-dev libeigen3-dev libssl-dev \
# libcppunit-dev libstdc++-4.8-dev libfreetype6-dev libfontconfig1-dev liblcms2-dev \
# mesa-common-dev libaio-dev lzma liblzma-dev\
# libpulse-dev libsox-dev liblist-moreutils-perl libxml-parser-perl \
# libjack-dev autopoint language-pack-en-base
#apt-get update && apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget
#wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add -
#add-apt-repository -y ppa:openjdk-r/ppa && apt-add-repository 'deb https://apt.kitware.com/ubuntu/ xenial main'
## Update the system and bring in our core operating requirements
#apt-get update && apt-get upgrade -y && apt-get install -y openssh-server openjdk-8-jre-headless
## Some software demands a newer GCC because they're using C++14 stuff, which is just insane
## We do this after the general system update to ensure it doesn't bring in any unnecessary updates
#add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update
## Now install the general dependencies we need for builds
#apt-get install -y build-essential cmake git-core locales automake gcc-6 g++-6 libxml-parser-perl libpq-dev libaio-dev bison gettext gperf libasound2-dev libatkmm-1.6-dev libbz2-dev libcairo-perl libcap-dev libcups2-dev libdbus-1-dev libdrm-dev libegl1-mesa-dev libfontconfig1-dev libfreetype6-dev libgcrypt11-dev libgl1-mesa-dev libglib-perl libgsl0-dev libgsl0-dev gstreamer1.0-alsa libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2-perl libjpeg-dev libnss3-dev libpci-dev libpng12-dev libpulse-dev libssl-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libtiff5-dev libudev-dev libwebp-dev flex libmysqlclient-dev libx11-dev libxkbcommon-x11-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-util0-dev libxcb-res0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxi-dev libxrandr-dev libxrender-dev libxss-dev libxtst-dev mesa-common-dev liblist-moreutils-perl libtool libpixman-1-dev subversion
#apt-get -y install libpixman-1-dev docbook-xml docbook-xsl libattr1-dev
## Required for vaapi gpu encoding
#apt-get -y install libva-dev
# Read in our parameters
export BUILD_PREFIX=$1
export KDENLIVE_SOURCES=$2
@@ -65,75 +72,118 @@ cd $BUILD_PREFIX/deps-build/
# Configure the dependencies for building
cmake $KDENLIVE_SOURCES/packaging/appimage/3rdparty -DCMAKE_INSTALL_PREFIX=$DEPS_INSTALL_PREFIX -DEXT_INSTALL_DIR=$DEPS_INSTALL_PREFIX -DEXT_DOWNLOAD_DIR=$DOWNLOADS_DIR -DEXT_BUILD_DIR=$BUILD_PREFIX
CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
if [[ $CPU_CORES -gt 1 ]]; then
CPU_CORES=$((CPU_CORES-1))
fi
echo "CPU Cores to use : $CPU_CORES"
# Now start building everything we need, in the appropriate order
cmake --build . --target ext_lzma
cmake --build . --target ext_xml
cmake --build . --target ext_gettext
cmake --build . --target ext_xslt
cmake --build . --target ext_png
cmake --build . --target ext_lzma -j$CPU_CORES
cmake --build . --target ext_xml -j$CPU_CORES
cmake --build . --target ext_gettext -j$CPU_CORES
cmake --build . --target ext_xslt -j$CPU_CORES
cmake --build . --target ext_png -j$CPU_CORES
# cmake --build . --target ext_jpeg #this causes build failures in Qt 5.10
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6
cmake --build . --target ext_qt
cmake --build . --target ext_boost
cmake --build . --target ext_gpgme
cmake --build . --target ext_frameworks
cmake --build . --target ext_libsndfile
cmake --build . --target ext_libsamplerate
cmake --build . --target ext_nasm
cmake --build . --target ext_yasm
cmake --build . --target ext_alsa
cmake --build . --target ext_sdl2
cmake --build . --target ext_boost -j$CPU_CORES
cmake --build . --target ext_gpgme -j$CPU_CORES
cmake --build . --target ext_libsndfile -j$CPU_CORES
cmake --build . --target ext_libsamplerate -j$CPU_CORES
cmake --build . --target ext_nasm -j$CPU_CORES
cmake --build . --target ext_yasm -j$CPU_CORES
cmake --build . --target ext_alsa -j$CPU_CORES
cmake --build . --target ext_sdl2 -j$CPU_CORES
cmake --build . --target ext_fftw3
cmake --build . --target ext_fftw3f
cmake --build . --target ext_fftw3 -j$CPU_CORES
cmake --build . --target ext_fftw3f -j$CPU_CORES
# ladspa expects fft3w.pc pkgconfig files
cp $DEPS_INSTALL_PREFIX/lib/pkgconfig/fftwf.pc $DEPS_INSTALL_PREFIX/lib/pkgconfig/fftw3f.pc
cp $DEPS_INSTALL_PREFIX/lib/pkgconfig/fftw.pc $DEPS_INSTALL_PREFIX/lib/pkgconfig/fftw3.pc
cmake --build . --target ext_x264
cmake --build . --target ext_x265
cmake --build . --target ext_x264 -j$CPU_CORES
cmake --build . --target ext_x265 -j$CPU_CORES
# libvpx does not compile with this gcc6 version
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
cmake --build . --target ext_libvpx
cmake --build . --target ext_libvpx -j$CPU_CORES
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6
cmake --build . --target ext_ffmpeg
cmake --build . --target ext_sox
cmake --build . --target ext_jack
cmake --build . --target ext_ladspa
cmake --build . --target ext_cairo
cmake --build . --target ext_harfbuzz
cmake --build . --target ext_pango
cmake --build . --target ext_gdkpixbuf
cmake --build . --target ext_gtk+
cmake --build . --target ext_gavl
cmake --build . --target ext_frei0r
cmake --build . --target ext_vidstab
cmake --build . --target ext_opencv
cmake --build . --target ext_rubberband
#export CC=/usr/bin/gcc-6
#export CXX=/usr/bin/g++-6
cmake --build . --target ext_opus -j$CPU_CORES
cmake --build . --target ext_nv-codec-headers -j$CPU_CORES
cmake --build . --target ext_amf -j$CPU_CORES
cmake --build . --target ext_mfx -j$CPU_CORES
cmake --build . --target ext_ffmpeg -j$CPU_CORES
cmake --build . --target ext_sox -j$CPU_CORES
cmake --build . --target ext_jack -j$CPU_CORES
cmake --build . --target ext_ladspa -j$CPU_CORES
cmake --build . --target ext_cairo -j$CPU_CORES
cmake --build . --target ext_harfbuzz -j$CPU_CORES
cmake --build . --target ext_pango -j$CPU_CORES
cmake --build . --target ext_gdkpixbuf -j$CPU_CORES
cmake --build . --target ext_gtk+ -j$CPU_CORES
cmake --build . --target ext_gavl -j$CPU_CORES
cmake --build . --target ext_frei0r -j$CPU_CORES
cmake --build . --target ext_vidstab -j$CPU_CORES
cmake --build . --target ext_opencv -j$CPU_CORES
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6
##cmake --build . --target ext_movit
cmake --build . --target ext_frameworks
cmake --build . --config RelWithDebInfo --target ext_extra-cmake-modules -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kconfig -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_breeze-icons -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kcoreaddons -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kwindowsystem -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_solid -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_threadweaver -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_karchive -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kdbusaddons -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_ki18n -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kcrash -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kcodecs -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kauth -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kguiaddons -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kwidgetsaddons -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kitemviews -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kcompletion -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kconfigwidgets -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kservice -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kiconthemes -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_attica -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kglobalaccel -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kxmlgui -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kbookmarks -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kjobwidgets -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_sonnet -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_ktextwidgets -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kio -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_knotifyconfig -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kpackage -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_knewstuff -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_knotifications -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kdeclarative -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kservice -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_kimageformats -- -j$CPU_CORES
cmake --build . --config RelWithDebInfo --target ext_frameworkintegration -- -j$CPU_CORES
#cmake --build . --target ext_movit
cmake --build . --target ext_kbookmarks
cmake --build . --target ext_kxmlgui
cmake --build . --target ext_kconfigwidgets
cmake --build . --target ext_knotifyconfig
cmake --build . --target ext_knewstuff
cmake --build . --target ext_kdeclarative
cmake --build . --target ext_breezeicons
cmake --build . --target ext_kcrash
cmake --build . --target ext_breeze
cmake --build . --target ext_ruby
#cmake --build . --target ext_kwayland
#cmake --build . --target ext_ruby

View File

@@ -16,6 +16,7 @@ export APPIMAGEPLUGINS=$APPDIR/usr/plugins/
mkdir -p $APPDIR
mkdir -p $APPDIR/usr/share/kdenlive
mkdir -p $APPDIR/usr/lib
mkdir -p $APPDIR/usr/lib/va
mkdir -p $PLUGINS
mkdir -p $APPDIR/usr/plugins
@@ -43,11 +44,11 @@ cd $BUILD_PREFIX
# Step 1: Copy over all the resources provided by dependencies that we need
cp -r $DEPS_INSTALL_PREFIX/share/kf5 $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/kstyle $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/plasma $APPDIR/usr/share
#cp -r $DEPS_INSTALL_PREFIX/share/kstyle $APPDIR/usr/share
#cp -r $DEPS_INSTALL_PREFIX/share/plasma $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/alsa $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/kservices5 $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/qt5 $APPDIR/usr/share
#cp -r $DEPS_INSTALL_PREFIX/share/qt5 $APPDIR/usr/share
cp -r $DEPS_INSTALL_PREFIX/share/mime $APPDIR/usr/share
if [ -d $DEPS_INSTALL_PREFIX/share/color-schemes ] ; then
@@ -73,15 +74,19 @@ cp -r $DEPS_INSTALL_PREFIX/bin/ffmpeg $APPDIR/usr/bin
cp -r $DEPS_INSTALL_PREFIX/bin/ffplay $APPDIR/usr/bin
cp -r $DEPS_INSTALL_PREFIX/bin/ffprobe $APPDIR/usr/bin
cp -r $DEPS_INSTALL_PREFIX/plugins/kf5 $APPIMAGEPLUGINS
cp -r $DEPS_INSTALL_PREFIX/plugins/styles $APPIMAGEPLUGINS
#cp -r $DEPS_INSTALL_PREFIX/plugins/styles $APPIMAGEPLUGINS
cp -r $DEPS_INSTALL_PREFIX/plugins/audio $APPIMAGEPLUGINS
cp -r $DEPS_INSTALL_PREFIX/plugins/org.kde.kdecoration2 $APPIMAGEPLUGINS
cp -r $DEPS_INSTALL_PREFIX/plugins/kstyle_breeze_config.so $APPIMAGEPLUGINS
#cp -r $DEPS_INSTALL_PREFIX/plugins/org.kde.kdecoration2 $APPIMAGEPLUGINS
#cp -r $DEPS_INSTALL_PREFIX/plugins/kstyle_breeze_config.so $APPIMAGEPLUGINS
mkdir -p $APPDIR/usr/libexec
cp -r $DEPS_INSTALL_PREFIX/lib/x86_64-linux-gnu/libexec/kf5/* $APPDIR/usr/libexec/
#libva accel
cp -r /usr/lib/x86_64-linux-gnu/libva* $APPDIR/usr/lib || true
cp -r /usr/lib/x86_64-linux-gnu/dri/*_drv_video.so $APPDIR/usr/lib/va || true
cp $(ldconfig -p | grep libGL.so.1 | cut -d ">" -f 2 | xargs) $APPDIR/usr/lib/
#cp $(ldconfig -p | grep libGLU.so.1 | cut -d ">" -f 2 | xargs) $APPDIR/usr/lib/
@@ -101,22 +106,32 @@ for lib in $APPIMAGEPLUGINS/audio/*.so*; do
patchelf --set-rpath '$ORIGIN/../../lib' $lib;
done
for lib in $APPIMAGEPLUGINS/styles/*.so*; do
patchelf --set-rpath '$ORIGIN/../../lib' $lib;
done
#for lib in $APPIMAGEPLUGINS/styles/*.so*; do
# patchelf --set-rpath '$ORIGIN/../../lib' $lib;
#done
for lib in $APPIMAGEPLUGINS/kf5/*.so*; do
patchelf --set-rpath '$ORIGIN/../../lib' $lib;
done
for lib in $APPIMAGEPLUGINS/org.kde.kdecoration2/*.so*; do
patchelf --set-rpath '$ORIGIN/../../lib' $lib;
done
#for lib in $APPIMAGEPLUGINS/org.kde.kdecoration2/*.so*; do
# patchelf --set-rpath '$ORIGIN/../../lib' $lib;
#done
for lib in $APPDIR/usr/lib/mlt/*.so*; do
patchelf --set-rpath '$ORIGIN/..' $lib;
done
#for lib in $APPDIR/usr/lib/libva*.so*; do
# patchelf --set-rpath '$ORIGIN' $lib;
#done
#for lib in $APPDIR/usr/lib/va/*.so*; do
# patchelf --set-rpath '$ORIGIN/..' $lib;
#done
### GSTREAMER
# Requires gstreamer1.0-plugins-good
GST_PLUGIN_SRC_DIR=/usr/lib/x86_64-linux-gnu/
@@ -153,6 +168,12 @@ cp $APPDIR/usr/share/icons/breeze/apps/48/kdenlive.svg $APPDIR
#linuxdeployqt $APPDIR/usr/bin/ffplay
#linuxdeployqt $APPDIR/usr/bin/ffprobe
#linuxdeployqt $APPDIR/usr/bin/melt
#linuxdeployqt -executable $APPDIR/usr/lib/va/*.so
# -executable=$APPDIR/usr/lib/libva.so \
# -executable=$APPDIR/usr/lib/libva-drm.so \
# -executable=$APPDIR/usr/lib/libva-x11.so \
linuxdeployqt $APPDIR/usr/share/applications/org.kde.kdenlive.desktop \
-executable=$APPDIR/usr/bin/kdenlive \
@@ -168,8 +189,9 @@ rm $APPDIR/usr/lib/libGL.so.1 || true
rm $APPDIR/usr/lib/libasound.so.2 || true
# libxcb should be removed
rm $APPDIR/usr/lib/libxcb* || true
# libxcb and libxcb-dri{2,3} should be removed
rm $APPDIR/usr/lib/libxcb.so* || true
rm $APPDIR/usr/lib/libxcb-dri{2,3}.so* || true
rm $APPDIR/usr/lib/libgcrypt.so.20 || true
@@ -193,6 +215,7 @@ export MLT_REPOSITORY=\$DIR/usr/lib/mlt/
export MLT_DATA=\$DIR/usr/share/mlt/
export MLT_ROOT_DIR=\$DIR/usr/
export LADSPA_PATH=\$DIR/usr/lib/ladspa
export LIBVA_DRIVERS_PATH=\$DIR/usr/lib/va
export FREI0R_PATH=\$DIR/usr/lib/frei0r-1
export MLT_PROFILES_PATH=\$DIR/usr/share/mlt/profiles/
export MLT_PRESETS_PATH=\$DIR/usr/share/mlt/presets/

View File

@@ -2,7 +2,7 @@
"app-id": "org.kde.kdenlive",
"default-branch": "master",
"runtime": "org.kde.Platform",
"runtime-version": "5.13",
"runtime-version": "5.15",
"sdk": "org.kde.Sdk",
"command": "kdenlive",
"rename-icon": "kdenlive",

View File

@@ -9,6 +9,7 @@ include_directories(
set(kdenlive_render_SRCS
kdenlive_render.cpp
renderjob.cpp
../src/lib/localeHandling.cpp
)
add_executable(kdenlive_render ${kdenlive_render_SRCS})

View File

@@ -17,23 +17,18 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "framework/mlt_version.h"
#include "../src/lib/localeHandling.h"
#include "mlt++/Mlt.h"
#include "renderjob.h"
#include <QApplication>
#include <QDir>
#include <QDomDocument>
#include <QString>
#include <QStringList>
#include <QObject>
#include <cstdio>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QStringList args = app.arguments();
QStringList preargs;
QString locale;
if (args.count() >= 4) {
// Remove program name
args.removeFirst();
@@ -56,7 +51,11 @@ int main(int argc, char **argv)
if (args.count() > 0 && args.at(0) == QLatin1String("-split")) {
args.removeFirst();
// chunks to render
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
QStringList chunks = args.at(0).split(QLatin1Char(','), QString::SkipEmptyParts);
#else
QStringList chunks = args.at(0).split(QLatin1Char(','), Qt::SkipEmptyParts);
#endif
args.removeFirst();
// chunk size in frames
int chunkSize = args.at(0).toInt();
@@ -68,10 +67,19 @@ int main(int argc, char **argv)
QString extension = args.at(0);
args.removeFirst();
// avformat consumer params
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
QStringList consumerParams = args.at(0).split(QLatin1Char(' '), QString::SkipEmptyParts);
#else
QStringList consumerParams = args.at(0).split(QLatin1Char(' '), Qt::SkipEmptyParts);
#endif
args.removeFirst();
QDir baseFolder(target);
// After initialising the MLT factory, set the locale back from user default to C
// to ensure numbers are always serialised with . as decimal point.
Mlt::Factory::init();
LocaleHandling::resetLocale();
Mlt::Profile profile(profilePath.toUtf8().constData());
profile.set_explicit(1);
Mlt::Producer prod(profile, nullptr, playlist.toUtf8().constData());
@@ -81,9 +89,9 @@ int main(int argc, char **argv)
}
const char *localename = prod.get_lcnumeric();
QLocale::setDefault(QLocale(localename));
for (const QString &frame : chunks) {
for (const QString &frame : qAsConst(chunks)) {
fprintf(stderr, "START:%d \n", frame.toInt());
QString fileName = QStringLiteral("%1.%2").arg(frame).arg(extension);
QString fileName = QStringLiteral("%1.%2").arg(frame,extension);
if (baseFolder.exists(fileName)) {
// Don't overwrite an existing file
fprintf(stderr, "DONE:%d \n", frame.toInt());
@@ -92,7 +100,7 @@ int main(int argc, char **argv)
QScopedPointer<Mlt::Producer> playlst(prod.cut(frame.toInt(), frame.toInt() + chunkSize));
QScopedPointer<Mlt::Consumer> cons(
new Mlt::Consumer(profile, QString("avformat:%1").arg(baseFolder.absoluteFilePath(fileName)).toUtf8().constData()));
for (const QString &param : consumerParams) {
for (const QString &param : qAsConst(consumerParams)) {
if (param.contains(QLatin1Char('='))) {
cons->set(param.section(QLatin1Char('='), 0, 0).toUtf8().constData(), param.section(QLatin1Char('='), 1).toUtf8().constData());
}

View File

@@ -43,10 +43,12 @@ RenderJob::RenderJob(const QString &render, const QString &scenelist, const QStr
, m_jobUiserver(nullptr)
, m_kdenliveinterface(nullptr)
, m_usekuiserver(true)
, m_logfile(scenelist.startsWith(QStringLiteral("xml:")) ? scenelist.section(QLatin1Char(':'), 1).section(QLatin1Char('?'), 0, -2) + QStringLiteral(".txt") : scenelist + QStringLiteral(".txt"))
, m_logfile(target + QStringLiteral(".log"))
, m_erase(scenelist.startsWith(QDir::tempPath()) || scenelist.startsWith(QString("xml:%2").arg(QDir::tempPath())))
, m_seconds(0)
, m_frame(0)
, m_frame(in)
, m_framein(in)
, m_frameout(out)
, m_pid(pid)
, m_dualpass(false)
{
@@ -80,11 +82,6 @@ RenderJob::~RenderJob()
m_logfile.close();
}
void RenderJob::setLocale(const QString &locale)
{
qputenv("LC_NUMERIC", locale.toUtf8().constData());
}
void RenderJob::slotAbort(const QString &url)
{
if (m_dest == url) {
@@ -98,9 +95,7 @@ void RenderJob::slotAbort()
m_renderProcess->kill();
if (m_kdenliveinterface) {
m_dbusargs[1] = -3;
m_dbusargs.append(QString());
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), {m_dest, -3, QString()});
}
if (m_jobUiserver) {
m_jobUiserver->call(QStringLiteral("terminate"), QString());
@@ -120,41 +115,46 @@ void RenderJob::receivedStderr()
QString result = QString::fromLocal8Bit(m_renderProcess->readAllStandardError()).simplified();
if (!result.startsWith(QLatin1String("Current Frame"))) {
m_errorMessage.append(result + QStringLiteral("<br>"));
m_logstream << result;
} else {
m_logstream << "melt: " << result << "\n";
int pro = result.section(QLatin1Char(' '), -1).toInt();
if (pro <= m_progress || pro <= 0 || pro > 100) {
int progress = result.section(QLatin1Char(' '), -1).toInt();
int frame = result.section(QLatin1Char(','), 0, 0).section(QLatin1Char(' '), -1).toInt();
if (progress <= m_progress || progress <= 0 || progress > 100) {
return;
}
m_progress = pro;
m_progress = progress;
if (m_args.contains(QStringLiteral("pass=1"))) {
m_progress /= 2.0;
} else if (m_args.contains(QStringLiteral("pass=2"))) {
m_progress = 50 + m_progress / 2.0;
}
int frame = result.section(QLatin1Char(','), 1).section(QLatin1Char(' '), -1).toInt();
if ((m_kdenliveinterface != nullptr) && m_kdenliveinterface->isValid()) {
m_dbusargs[1] = m_progress;
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingProgress"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingProgress"), {m_dest, m_progress, frame});
}
qint64 elapsedTime = m_startTime.secsTo(QDateTime::currentDateTime());
if (elapsedTime == m_seconds) {
return;
}
int speed = (frame - m_frame) / (elapsedTime - m_seconds);
if (m_jobUiserver) {
m_jobUiserver->call(QStringLiteral("setPercent"), (uint)m_progress);
int seconds = m_startTime.secsTo(QTime::currentTime());
if (seconds < 0) {
// 1 day offset, add seconds in a day
seconds += 86400;
qint64 remaining = elapsedTime * (100 - progress) / progress;
int days = int(remaining / 86400);
int remainingSecs = int(remaining % 86400);
QTime when = QTime(0, 0, 0, 0).addSecs(remainingSecs);
QString est = tr("Remaining time ");
if (days > 0) {
est.append(tr("%n day(s) ", "", days));
}
seconds = (int)(seconds * (100 - m_progress) / m_progress);
if (seconds == m_seconds) {
return;
}
m_jobUiserver->call(QStringLiteral("setDescriptionField"), (uint)0, QString(),
tr("Remaining time: ") + QTime(0, 0, 0).addSecs(seconds).toString(QStringLiteral("hh:mm:ss")));
// m_jobUiserver->call(QStringLiteral("setSpeed"), (frame - m_frame) / (seconds - m_seconds));
// m_jobUiserver->call("setSpeed", (frame - m_frame) / (seconds - m_seconds));
m_frame = frame;
m_seconds = seconds;
est.append(when.toString(QStringLiteral("hh:mm:ss")));
m_jobUiserver->call(QStringLiteral("setPercent"), uint(m_progress));
m_jobUiserver->call(QStringLiteral("setDescriptionField"), 0, QString(), est);
m_jobUiserver->call(QStringLiteral("setProcessedAmount"), qulonglong(frame - m_framein), tr("frames"));
m_jobUiserver->call(QStringLiteral("setSpeed"), qulonglong(speed));
}
m_seconds = elapsedTime;
m_frame = frame;
m_logstream << QStringLiteral("%1\t%2\t%3\t%4\n").arg(m_seconds).arg(m_frame).arg(m_progress).arg(speed);
}
}
@@ -186,12 +186,13 @@ void RenderJob::start()
QString dbusView = QStringLiteral("org.kde.JobViewV2");
m_jobUiserver = new QDBusInterface(QStringLiteral("org.kde.JobViewServer"), reply, dbusView);
if ((m_jobUiserver != nullptr) && m_jobUiserver->isValid()) {
m_startTime = QTime::currentTime();
m_startTime = QDateTime::currentDateTime();
if (!m_args.contains(QStringLiteral("pass=2"))) {
m_jobUiserver->call(QStringLiteral("setPercent"), (uint)0);
}
m_jobUiserver->call(QStringLiteral("setInfoMessage"), tr("Rendering %1").arg(QFileInfo(m_dest).fileName()));
m_jobUiserver->call(QStringLiteral("setTotalAmount"), m_frameout);
QDBusConnection::sessionBus().connect(QStringLiteral("org.kde.JobViewServer"), reply, dbusView, QStringLiteral("cancelRequested"), this,
SLOT(slotAbort()));
}
@@ -210,7 +211,6 @@ void RenderJob::start()
// Because of the logging, we connect to stderr in all cases.
connect(m_renderProcess, &QProcess::readyReadStandardError, this, &RenderJob::receivedStderr);
m_renderProcess->start(m_prog, m_args);
qDebug() << "Started render process: " << m_prog << ' ' << m_args.join(QLatin1Char(' '));
m_logstream << "Started render process: " << m_prog << ' ' << m_args.join(QLatin1Char(' ')) << "\n";
m_logstream.flush();
}
@@ -232,7 +232,6 @@ void RenderJob::initKdenliveDbusInterface()
break;
}
}
m_dbusargs.clear();
if (kdenliveId.isEmpty()) {
return;
}
@@ -240,10 +239,8 @@ void RenderJob::initKdenliveDbusInterface()
new QDBusInterface(kdenliveId, QStringLiteral("/kdenlive/MainWindow_1"), QStringLiteral("org.kde.kdenlive.rendering"), connection, this);
if (m_kdenliveinterface) {
m_dbusargs.append(m_dest);
m_dbusargs.append((int)0);
if (!m_args.contains(QStringLiteral("pass=2"))) {
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingProgress"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingProgress"), {m_dest, 0, 0});
}
connect(m_kdenliveinterface, SIGNAL(abortRenderJob(QString)), this, SLOT(slotAbort(QString)));
}
@@ -265,9 +262,7 @@ void RenderJob::slotIsOver(QProcess::ExitStatus status, bool isWritable)
if (!isWritable) {
QString error = tr("Cannot write to %1, check permissions.").arg(m_dest);
if (m_kdenliveinterface) {
m_dbusargs[1] = (int)-2;
m_dbusargs.append(error);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), {m_dest, -2, error});
}
QProcess::startDetached(QStringLiteral("kdialog"), {QStringLiteral("--error"), error});
m_logstream << error << "\n";
@@ -280,21 +275,20 @@ void RenderJob::slotIsOver(QProcess::ExitStatus status, bool isWritable)
if (status == QProcess::CrashExit || m_renderProcess->error() != QProcess::UnknownError || m_renderProcess->exitCode() != 0) {
// rendering crashed
if (m_kdenliveinterface) {
m_dbusargs[1] = (int)-2;
m_dbusargs.append(m_errorMessage);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), {m_dest, -2, m_errorMessage});
}
QStringList args;
QString error = tr("Rendering of %1 aborted, resulting video will probably be corrupted.").arg(m_dest);
if (m_frame > 0) {
error += QLatin1Char('\n') + tr("Frame: ") + m_frame;
}
args << QStringLiteral("--error") << error;
m_logstream << error << "\n";
QProcess::startDetached(QStringLiteral("kdialog"), args);
emit renderingFinished();
} else {
if (!m_dualpass && (m_kdenliveinterface != nullptr)) {
m_dbusargs[1] = (int)-1;
m_dbusargs.append(QString());
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), m_dbusargs);
m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QStringLiteral("setRenderingFinished"), {m_dest, -1, QString()});
}
m_logstream << "Rendering of " << m_dest << " finished" << "\n";
if (!m_dualpass && m_player.length() > 3 && m_player.contains(QLatin1Char(' '))) {

View File

@@ -23,7 +23,7 @@
#include <QDBusInterface>
#include <QObject>
#include <QProcess>
#include <QTime>
#include <QDateTime>
#include <QFile>
// Testing
#include <QTextStream>
@@ -35,7 +35,6 @@ class RenderJob : public QObject
public:
RenderJob(const QString &render, const QString &scenelist, const QString &target, int pid = -1, int in = -1, int out = -1, QObject *parent = nullptr);
~RenderJob();
void setLocale(const QString &locale);
public slots:
void start();
@@ -61,13 +60,15 @@ private:
bool m_erase;
int m_seconds;
int m_frame;
int m_framein;
int m_frameout;
/** @brief The process id of the Kdenlive instance, used to get the dbus service. */
int m_pid;
bool m_dualpass;
QProcess *m_renderProcess;
QString m_errorMessage;
QList<QVariant> m_dbusargs;
QTime m_startTime;
QDateTime m_startTime;
QStringList m_args;
/** @brief Used to write to the log file. */
QTextStream m_logstream;

View File

@@ -65,7 +65,7 @@ add_subdirectory(transitions)
add_subdirectory(utils)
add_subdirectory(widgets)
add_subdirectory(xml)
if(Qt5WebKitWidgets_FOUND)
if(Qt5WebEngineWidgets_FOUND)
add_subdirectory(qt-oauth-lib)
endif()
## top_SRCS
@@ -85,7 +85,7 @@ ki18n_wrap_ui(kdenlive_UIS ${kdenlive_UIS})
qt5_wrap_cpp(kdenlive_MOC definitions.h)
set_property(SOURCE definitions.h PROPERTY SKIP_AUTOMOC ON)
add_library(kdenliveLib STATIC ${kdenlive_SRCS} ${kdenlive_UIS} ${kdenlive_MOC})
add_library(kdenliveLib STATIC ${kdenlive_SRCS} ${kdenlive_UIS} ${kdenlive_MOC} lib/localeHandling.cpp lib/localeHandling.h)
qt5_add_resources(kdenlive_extra_SRCS icons.qrc ui/resources.qrc uiresources.qrc)
## Icon for Windows and OSX
@@ -94,7 +94,9 @@ ecm_add_app_icon(kdenlive ICONS ${ICONS_SRCS}) # icon name = variable name
add_executable(kdenlive main.cpp ${kdenlive_extra_SRCS} ${kdenlive})
target_include_directories(kdenlive
PRIVATE ${CMAKE_BINARY_DIR}
SYSTEM ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR})
)
target_include_directories(kdenlive
SYSTEM PRIVATE ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR})
target_link_libraries(kdenlive kdenliveLib)
install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
@@ -106,7 +108,9 @@ target_include_directories(kdenliveLib
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/lib/external
${CMAKE_CURRENT_SOURCE_DIR}/lib
SYSTEM ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR})
)
target_include_directories(kdenliveLib
SYSTEM PRIVATE ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR})
# Adds Qt definitions and include directories, and sets QT_LIBRARIES according
# to the components requested in find_package().
# KDE definitions and include directories *must* always come first, Qt follows
@@ -152,27 +156,12 @@ if(BUILD_COVERAGE)
target_link_libraries(kdenliveLib gcov)
endif()
set_property(TARGET kdenliveLib PROPERTY CXX_STANDARD 14)
SET(KDENLIVE_CXX_FLAGS "${DEFAULT_CXX_FLAGS} -Wall -pedantic -Wextra")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wcast-qual -Wcast-align -Wfloat-equal -Wpointer-arith")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wunreachable-code -Wchar-subscripts -Wcomment -Wformat")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wmain -Wmissing-braces")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wparentheses -Wsequence-point -Wreturn-type -Wswitch")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wuninitialized -Wreorder -Wundef -Wshadow -Wwrite-strings")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wmissing-noreturn -Wsign-compare -Wsign-conversion -Wunused")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wstrict-aliasing -Wconversion -Wdisabled-optimization -Wno-undef")
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wunused-parameter -Wshadow -Wno-variadic-macros -Wno-float-conversion")
if(KDENLIVE_COMPILER_IS_GNUCXX)
SET(KDENLIVE_CXX_FLAGS "${KDENLIVE_CXX_FLAGS} -Wlogical-op -Wunsafe-loop-optimizations ")
endif()
set_target_properties(kdenliveLib PROPERTIES COMPILE_FLAGS "${KDENLIVE_CXX_FLAGS}")
add_definitions(${qt5gui_definitions} -DQT_STRICT_ITERATORS -DQT_NO_CAST_FROM_BYTEARRAY)
# To compile kiss_fft.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
# Optional deps
if(DRMINGW_FOUND)
target_compile_definitions(kdenlive PRIVATE -DUSE_DRMINGW)
target_include_directories(kdenlive PRIVATE SYSTEM ${DRMINGW_INCLUDE_DIR})
target_include_directories(kdenlive SYSTEM PRIVATE ${DRMINGW_INCLUDE_DIR})
target_link_libraries(kdenlive ${DRMINGW_LIBRARY})
elseif(KF5Crash_FOUND)
target_compile_definitions(kdenlive PRIVATE -DKF5_USE_CRASH)
@@ -189,16 +178,16 @@ if(KF5_PURPOSE)
target_link_libraries(kdenliveLib KF5::Purpose KF5::PurposeWidgets)
endif()
if(Qt5WebKitWidgets_FOUND)
message(STATUS "Found Qt5 WebKitWidgets. You can use your Freesound.org credentials to download files")
target_compile_definitions(kdenliveLib PRIVATE -DQT5_USE_WEBKIT)
target_link_libraries(kdenliveLib Qt5::WebKitWidgets)
if(Qt5WebEngineWidgets_FOUND)
message(STATUS "Found Qt5 WebEngineWidgets. You can use your Freesound.org credentials to download files")
target_compile_definitions(kdenliveLib PRIVATE -DQT5_USE_WEBENGINE)
target_link_libraries(kdenliveLib Qt5::WebEngineWidgets)
else()
message(STATUS "Qt5 WebKitWidgets not found. You cannot use your Freesound.org credentials, only preview files can be downloaded from the Online Resources Widget")
message(STATUS "Qt5 WebEngineWidgets not found. You cannot use your Freesound.org credentials, only preview files can be downloaded from the Online Resources Widget")
endif()
if(Q_WS_X11)
target_include_directories(kdenliveLib PRIVATE SYSTEM ${X11_Xlib_INCLUDE_PATH})
target_include_directories(kdenliveLib SYSTEM PRIVATE ${X11_Xlib_INCLUDE_PATH})
target_link_libraries(kdenliveLib ${X11_LIBRARIES})
endif()
@@ -209,7 +198,7 @@ elseif(SDL_FOUND)
endif()
if(LIBV4L2_FOUND)
target_include_directories(kdenliveLib PRIVATE SYSTEM ${LIBV4L2_INCLUDE_DIR})
target_include_directories(kdenliveLib SYSTEM PRIVATE ${LIBV4L2_INCLUDE_DIR})
target_link_libraries(kdenliveLib ${LIBV4L2_LIBRARY})
target_compile_definitions(kdenliveLib PRIVATE -DUSE_V4L)
endif()

View File

@@ -49,6 +49,9 @@ public:
/* @brief Return type of asset */
AssetType getType(const QString &assetId) const;
/* @brief Return type of asset */
bool isUnique(const QString &assetId) const;
/* @brief Return name of asset */
Q_INVOKABLE QString getName(const QString &assetId) const;

View File

@@ -38,13 +38,6 @@ template <typename AssetType> AbstractAssetsRepository<AssetType>::AbstractAsset
template <typename AssetType> void AbstractAssetsRepository<AssetType>::init()
{
// Warning: Mlt::Factory::init() resets the locale to the default system value, make sure we keep correct locale
#ifndef Q_OS_MAC
setlocale(LC_NUMERIC, nullptr);
#else
setlocale(LC_NUMERIC_MASK, nullptr);
#endif
// Parse blacklist
parseAssetList(assetBlackListPath(), m_blacklist);
@@ -92,7 +85,7 @@ template <typename AssetType> void AbstractAssetsRepository<AssetType>::init()
QDir current_dir(dir);
QStringList filter {QStringLiteral("*.xml")};
QStringList fileList = current_dir.entryList(filter, QDir::Files);
for (const auto &file : fileList) {
for (const auto &file : qAsConst(fileList)) {
QString path = current_dir.absoluteFilePath(file);
parseCustomAssetFile(path, customAssets);
}
@@ -149,8 +142,6 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
QDomElement eff = doc.createElement(QStringLiteral("effect"));
eff.setAttribute(QStringLiteral("tag"), id);
eff.setAttribute(QStringLiteral("id"), id);
QLocale locale;
////qCDebug(KDENLIVE_LOG)<<"Effect: "<<id;
Mlt::Properties param_props((mlt_properties)metadata->get_data("parameters"));
for (int j = 0; param_props.is_valid() && j < param_props.count(); ++j) {
@@ -172,10 +163,10 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
if (paramType == QLatin1String("float")) {
// Float must be converted using correct locale
if (paramdesc.get("maximum")) {
params.setAttribute(QStringLiteral("max"), locale.toString(paramdesc.get_double("maximum")));
params.setAttribute(QStringLiteral("max"), QString::number(paramdesc.get_double("maximum"), 'f'));
}
if (paramdesc.get("minimum")) {
params.setAttribute(QStringLiteral("min"), locale.toString(paramdesc.get_double("minimum")));
params.setAttribute(QStringLiteral("min"), QString::number(paramdesc.get_double("minimum"), 'f'));
}
} else {
if (paramdesc.get("maximum")) {
@@ -221,12 +212,12 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
if (paramType == QLatin1String("float")) {
// floats have to be converted using correct locale
if (paramdesc.get("default")) {
params.setAttribute(QStringLiteral("default"), locale.toString(paramdesc.get_double("default")));
params.setAttribute(QStringLiteral("default"), QString::number(paramdesc.get_double("default"), 'f'));
}
if (paramdesc.get("value")) {
params.setAttribute(QStringLiteral("value"), locale.toString(paramdesc.get_double("value")));
params.setAttribute(QStringLiteral("value"), QString::number(paramdesc.get_double("value"), 'f'));
} else {
params.setAttribute(QStringLiteral("value"), locale.toString(paramdesc.get_double("default")));
params.setAttribute(QStringLiteral("value"), QString::number(paramdesc.get_double("default"), 'f'));
}
} else {
if (paramdesc.get("default")) {
@@ -259,7 +250,12 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
doc.appendChild(eff);
res.xml = eff;
return true;
} else {
qDebug() << "Invalid title/identifier for " << assetId;
qDebug() << metadata->get("title") << "/" << metadata->get("identifier");
}
} else {
qDebug() << "Metadata for" << assetId << "is invalid.";
}
return false;
}
@@ -290,6 +286,14 @@ template <typename AssetType> AssetType AbstractAssetsRepository<AssetType>::get
return m_assets.at(assetId).type;
}
template <typename AssetType> bool AbstractAssetsRepository<AssetType>::isUnique(const QString &assetId) const
{
if (m_assets.count(assetId) > 0) {
return m_assets.at(assetId).xml.hasAttribute(QStringLiteral("unique"));
}
return false;
}
template <typename AssetType> QString AbstractAssetsRepository<AssetType>::getName(const QString &assetId) const
{
Q_ASSERT(m_assets.count(assetId) > 0);
@@ -330,7 +334,7 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
// Update description if the xml provide one
QString description = Xml::getSubTagContent(currentAsset, QStringLiteral("description"));
if (!description.isEmpty()) {
res.description = i18n(description.toUtf8().constData()) + QString(" (%1)").arg(res.id);
res.description = i18n(description.toUtf8().constData()) + QString(" (%1)").arg(res.mltId);
}
// Update name if the xml provide one

View File

@@ -88,6 +88,7 @@ QString AssetTreeModel::getDescription(bool isEffect, const QModelIndex &index)
return QString();
}
QVariant AssetTreeModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid()) {

View File

@@ -49,6 +49,7 @@ public:
virtual void reloadAssetMenu(QMenu *effectsMenu, KActionCategory *effectActions) = 0;
virtual void setFavorite(const QModelIndex &index, bool favorite, bool isEffect) = 0;
virtual void deleteEffect(const QModelIndex &index) = 0;
virtual void editCustomAsset( const QString newName,const QString newDescription,const QModelIndex &index) = 0;
// for convenience, we store the column of each data field
static int nameCol, idCol, favCol, typeCol, preferredCol;

View File

@@ -54,7 +54,8 @@ public:
/* @brief Delete a custom effect */
void deleteCustomEffect(const QModelIndex &index);
virtual void reloadCustomEffectIx(const QModelIndex &index) = 0;
virtual void editCustomAsset(const QModelIndex &index) = 0;
/* @brief Returns the description of the asset given its model index */
QString getDescription(bool isEffect, const QModelIndex &index) const;

View File

@@ -283,9 +283,10 @@ Rectangle {
sel.setCurrentIndex(styleData.index, ItemSelectionModel.ClearAndSelect)
if (mouse.button === Qt.LeftButton) {
drag.target = parent
parent.grabToImage(function(result) {
// grabToImage does not work on QQuickWidget from AssetListWidget. We should use QQuickView + QWidget::createWindowContainer
/*parent.grabToImage(function(result) {
parent.Drag.imageSource = result.url
})
})*/
} else {
drag.target = undefined
assetContextMenu.isItemFavorite = assetThumb.isFavorite
@@ -329,6 +330,22 @@ Rectangle {
assetlist.deleteCustomEffect(sel.currentIndex)
}
}
MenuItem {
id: reloadMenu
text: i18n("Reload custom effect")
visible: isEffectList && assetContextMenu.isCustom
onTriggered: {
assetlist.reloadCustomEffectIx(sel.currentIndex)
}
}
MenuItem {
id: editMenu
text: i18n("Edit Info")
visible: isEffectList && assetContextMenu.isCustom
onTriggered: {
assetlist.editCustomEffectInfo(sel.currentIndex)
}
}
}
TableViewColumn { role: "identifier"; title: i18n("Name"); }

View File

@@ -30,6 +30,7 @@
#include "transitions/transitionsrepository.hpp"
#include "effects/effectsrepository.hpp"
#include "transitions/view/transitionstackview.hpp"
#include "transitions/view/mixstackview.hpp"
#include "view/assetparameterview.hpp"
@@ -54,6 +55,7 @@ AssetPanel::AssetPanel(QWidget *parent)
, m_assetTitle(new KSqueezedTextLabel(this))
, m_container(new QWidget(this))
, m_transitionWidget(new TransitionStackView(this))
, m_mixWidget(new MixStackView(this))
, m_effectStackWidget(new EffectStackView(this))
{
auto *buttonToolbar = new QToolBar(this);
@@ -65,10 +67,10 @@ AssetPanel::AssetPanel(QWidget *parent)
m_switchCompoButton = new QComboBox(this);
m_switchCompoButton->setFrame(false);
auto allTransitions = TransitionsRepository::get()->getNames();
for (const auto &transition : allTransitions) {
for (const auto &transition : qAsConst(allTransitions)) {
m_switchCompoButton->addItem(transition.second, transition.first);
}
connect(m_switchCompoButton, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), [&]() {
connect(m_switchCompoButton, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, [&]() {
if (m_transitionWidget->stackOwner().first == ObjectType::TimelineComposition) {
emit switchCurrentComposition(m_transitionWidget->stackOwner().second, m_switchCompoButton->currentData().toString());
}
@@ -120,6 +122,7 @@ AssetPanel::AssetPanel(QWidget *parent)
auto *lay = new QVBoxLayout(m_container);
lay->setContentsMargins(0, 0, 0, 0);
lay->addWidget(m_transitionWidget);
lay->addWidget(m_mixWidget);
lay->addWidget(m_effectStackWidget);
m_sc = new QScrollArea;
m_sc->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
@@ -135,13 +138,15 @@ AssetPanel::AssetPanel(QWidget *parent)
m_infoMessage->hide();
m_sc->setWidget(m_container);
m_transitionWidget->setVisible(false);
m_mixWidget->setVisible(false);
m_effectStackWidget->setVisible(false);
updatePalette();
connect(m_effectStackWidget, &EffectStackView::checkScrollBar, this, &AssetPanel::slotCheckWheelEventFilter);
connect(m_effectStackWidget, &EffectStackView::scrollView, this, &AssetPanel::scrollTo);
connect(m_effectStackWidget, &EffectStackView::seekToPos, this, &AssetPanel::seekToPos);
connect(m_effectStackWidget, &EffectStackView::reloadEffect, this, &AssetPanel::reloadEffect);
connect(m_transitionWidget, &TransitionStackView::seekToTransPos, this, &AssetPanel::seekToPos);
connect(m_effectStackWidget, &EffectStackView::updateEnabledState, [this]() { m_enableStackButton->setActive(m_effectStackWidget->isStackEnabled()); });
connect(m_effectStackWidget, &EffectStackView::updateEnabledState, this, [this]() { m_enableStackButton->setActive(m_effectStackWidget->isStackEnabled()); });
}
void AssetPanel::showTransition(int tid, const std::shared_ptr<AssetParameterModel> &transitionModel)
@@ -164,6 +169,28 @@ void AssetPanel::showTransition(int tid, const std::shared_ptr<AssetParameterMod
m_transitionWidget->setModel(transitionModel, QSize(), true);
}
void AssetPanel::showMix(int cid, const std::shared_ptr<AssetParameterModel> &transitionModel)
{
if (cid == -1) {
clear();
return;
}
ObjectId id = {ObjectType::TimelineMix, cid};
if (m_mixWidget->stackOwner() == id) {
// already on this effect stack, do nothing
return;
}
clear();
m_switchAction->setVisible(false);
m_titleAction->setVisible(false);
m_assetTitle->clear();
m_mixWidget->setVisible(true);
m_timelineButton->setVisible(false);
m_enableStackButton->setVisible(false);
m_mixWidget->setModel(transitionModel, QSize(), true);
}
void AssetPanel::showEffectStack(const QString &itemName, const std::shared_ptr<EffectStackModel> &effectsModel, QSize frameSize, bool showKeyframes)
{
if (effectsModel == nullptr) {
@@ -217,7 +244,7 @@ void AssetPanel::showEffectStack(const QString &itemName, const std::shared_ptr<
m_enableStackButton->setActive(effectsModel->isStackEnabled());
if (showSplit) {
m_splitButton->setEnabled(effectsModel->rowCount() > 0);
QObject::connect(effectsModel.get(), &EffectStackModel::dataChanged, [&]() {
QObject::connect(effectsModel.get(), &EffectStackModel::dataChanged, this, [&]() {
if (m_effectStackWidget->isEmpty()) {
m_splitButton->setActive(false);
}
@@ -259,11 +286,14 @@ void AssetPanel::clear()
m_switchAction->setVisible(false);
m_transitionWidget->setVisible(false);
m_transitionWidget->unsetModel();
m_mixWidget->setVisible(false);
m_mixWidget->unsetModel();
m_effectStackWidget->setVisible(false);
m_splitButton->setVisible(false);
m_timelineButton->setVisible(false);
m_switchBuiltStack->setVisible(false);
m_effectStackWidget->unsetModel();
m_assetTitle->setText(QString());
}
@@ -394,7 +424,7 @@ void AssetPanel::enableStack(bool enable)
void AssetPanel::deleteCurrentEffect()
{
if (m_effectStackWidget->isVisible()) {
m_effectStackWidget->removeCurrentEffect();
emit m_effectStackWidget->removeCurrentEffect();
}
}
@@ -405,6 +435,13 @@ void AssetPanel::collapseCurrentEffect()
}
}
void AssetPanel::scrollTo(QRect rect)
{
// Ensure the scrollview widget adapted its height to the effectstackview height change
m_sc->widget()->adjustSize();
m_sc->ensureVisible(0, rect.y(), 0, rect.height());
}
void AssetPanel::slotCheckWheelEventFilter()
{
// If the effect stack widget has no scrollbar, we will not filter the
@@ -414,7 +451,7 @@ void AssetPanel::slotCheckWheelEventFilter()
// widget has scroll bar,
blockWheel = true;
}
m_effectStackWidget->blockWheenEvent(blockWheel);
emit m_effectStackWidget->blockWheenEvent(blockWheel);
}
void AssetPanel::assetPanelWarning(const QString service, const QString /*id*/, const QString message)

View File

@@ -44,6 +44,7 @@ class AssetParameterView;
class EffectStackModel;
class EffectStackView;
class TransitionStackView;
class MixStackView;
class QLabel;
class AssetPanel : public QWidget
@@ -55,6 +56,8 @@ public:
/* @brief Shows the parameters of the given transition model */
void showTransition(int tid, const std::shared_ptr<AssetParameterModel> &transition_model);
/* @brief Shows the parameters of the given mix model */
void showMix(int cid, const std::shared_ptr<AssetParameterModel> &transitionModel);
/* @brief Shows the parameters of the given effect stack model */
void showEffectStack(const QString &itemName, const std::shared_ptr<EffectStackModel> &effectsModel, QSize frameSize, bool showKeyframes);
@@ -85,6 +88,7 @@ protected:
KSqueezedTextLabel *m_assetTitle;
QWidget *m_container;
TransitionStackView *m_transitionWidget;
MixStackView *m_mixWidget;
EffectStackView *m_effectStackWidget;
private:
@@ -104,6 +108,8 @@ private slots:
void showKeyframes(bool enable);
/** Enable / disable effect stack */
void enableStack(bool enable);
/** Scroll effects view */
void scrollTo(QRect rect);
signals:
void doSplitEffect(bool);

View File

@@ -51,9 +51,8 @@ void CornersHelper::slotUpdateFromMonitorData(const QVariantList &v)
void CornersHelper::refreshParams(int pos)
{
QVariantList points{QPointF(), QPointF(), QPointF(), QPointF()};
QList<double> coords;
QSize frameSize = pCore->getCurrentFrameSize();
for (const auto &ix : m_indexes) {
for (const auto &ix : qAsConst(m_indexes)) {
auto type = m_model->data(ix, AssetParameterModel::TypeRole).value<ParamType>();
if (type != ParamType::KeyframeParam) {
continue;

View File

@@ -175,6 +175,8 @@ bool KeyframeModel::moveKeyframe(GenTime oldPos, GenTime pos, QVariant newVal, F
return updateKeyframe(pos, result);
}
if (oldPos != pos && hasKeyframe(pos)) {
// Move rejected, another keyframe is here
qDebug()<<"==== MOVE REJECTED!!";
return false;
}
KeyframeType oldType = m_keyframeList[oldPos].first;
@@ -234,7 +236,7 @@ bool KeyframeModel::offsetKeyframes(int oldPos, int pos, bool logUndo)
times << m.first;
}
bool res = true;
for (const auto &t : times) {
for (const auto &t : qAsConst(times)) {
res &= moveKeyframe(t, t + diff, QVariant(), undo, redo);
}
if (res && logUndo) {
@@ -296,16 +298,20 @@ bool KeyframeModel::updateKeyframe(int pos, double newVal)
{
GenTime Pos(pos, pCore->getCurrentFps());
if (auto ptr = m_model.lock()) {
double min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
double min = ptr->data(m_index, AssetParameterModel::VisualMinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::VisualMaxRole).toDouble();
if (qFuzzyIsNull(min) && qFuzzyIsNull(max)) {
min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
}
double factor = ptr->data(m_index, AssetParameterModel::FactorRole).toDouble();
double norm = ptr->data(m_index, AssetParameterModel::DefaultRole).toDouble();
int logRole = ptr->data(m_index, AssetParameterModel::ScaleRole).toInt();
double realValue;
if (logRole == -1) {
// Logarythmic scale for lower than norm values
// Logarythmic scale
if (newVal >= 0.5) {
realValue = norm + (2 * (newVal - 0.5) * (max / factor - norm));
realValue = norm + pow(2 * (newVal - 0.5), 10.0 / 6) * (max / factor - norm);
} else {
realValue = norm - pow(2 * (0.5 - newVal), 10.0 / 6) * (norm - min / factor);
}
@@ -442,24 +448,33 @@ QVariant KeyframeModel::data(const QModelIndex &index, int role) const
case NormalizedValueRole: {
if (m_paramType == ParamType::AnimatedRect) {
const QString &data = it->second.second.toString();
QLocale locale;
return locale.toDouble(data.section(QLatin1Char(' '), -1));
bool ok;
double converted = data.section(QLatin1Char(' '), -1).toDouble(&ok);
if (!ok) {
qDebug() << "QLocale: Could not convert animated rect opacity" << data;
}
return converted;
}
double val = it->second.second.toDouble();
if (auto ptr = m_model.lock()) {
Q_ASSERT(m_index.isValid());
double min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
double min = ptr->data(m_index, AssetParameterModel::VisualMinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::VisualMaxRole).toDouble();
if (qFuzzyIsNull(min) && qFuzzyIsNull(max)) {
min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
}
double factor = ptr->data(m_index, AssetParameterModel::FactorRole).toDouble();
double norm = ptr->data(m_index, AssetParameterModel::DefaultRole).toDouble();
int logRole = ptr->data(m_index, AssetParameterModel::ScaleRole).toInt();
double linear = val * factor;
if (logRole == -1) {
// Logarythmic scale for lower than norm values
if (linear >= norm) {
return 0.5 + (linear - norm) / (max * factor - norm) * 0.5;
}
// Logarythmic scale
// transform current value to 0..1 scale
if (linear >= norm) {
double scaled = (linear - norm) / (max * factor - norm);
return 0.5 + pow(scaled, 0.6) * 0.5;
}
double scaled = (linear - norm) / (min * factor - norm);
// Log scale
return 0.5 - pow(scaled, 0.6) * 0.5;
@@ -713,7 +728,6 @@ void KeyframeModel::parseAnimProperty(const QString &prop)
{
Fun undo = []() { return true; };
Fun redo = []() { return true; };
QLocale locale;
disconnect(this, &KeyframeModel::modelChanged, this, &KeyframeModel::sendModification);
removeAllKeyframes(undo, redo);
int in = 0;
@@ -749,7 +763,7 @@ void KeyframeModel::parseAnimProperty(const QString &prop)
case ParamType::AnimatedRect: {
mlt_rect rect = mlt_prop.anim_get_rect("key", frame);
if (useOpacity) {
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(locale.toString(rect.o)));
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(rect.o, 0, 'f'));
} else {
value = QVariant(QStringLiteral("%1 %2 %3 %4").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h));
}
@@ -782,7 +796,6 @@ void KeyframeModel::resetAnimProperty(const QString &prop)
removeAllKeyframes(undo, redo);
Mlt::Properties mlt_prop;
QLocale locale;
int in = 0;
bool useOpacity = true;
if (auto ptr = m_model.lock()) {
@@ -812,7 +825,7 @@ void KeyframeModel::resetAnimProperty(const QString &prop)
case ParamType::AnimatedRect: {
mlt_rect rect = mlt_prop.anim_get_rect("key", frame);
if (useOpacity) {
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(locale.toString(rect.o)));
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(QString::number(rect.o, 'f')));
} else {
value = QVariant(QStringLiteral("%1 %2 %3 %4").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h));
}
@@ -858,7 +871,6 @@ void KeyframeModel::parseRotoProperty(const QString &prop)
QJsonDocument doc = QJsonDocument::fromJson(prop.toLatin1(), &jsonError);
QVariant data = doc.toVariant();
if (data.canConvert(QVariant::Map)) {
QList<int> keyframes;
QMap<QString, QVariant> map = data.toMap();
QMap<QString, QVariant>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
@@ -877,10 +889,8 @@ QVariant KeyframeModel::getInterpolatedValue(int p) const
QVariant KeyframeModel::updateInterpolated(const QVariant &interpValue, double val)
{
QStringList vals = interpValue.toString().split(QLatin1Char(' '));
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
if (!vals.isEmpty()) {
vals[vals.size() - 1] = locale.toString(val);
vals[vals.size() - 1] = QString::number(val, 'f');
}
return vals.join(QLatin1Char(' '));
}
@@ -888,16 +898,20 @@ QVariant KeyframeModel::updateInterpolated(const QVariant &interpValue, double v
QVariant KeyframeModel::getNormalizedValue(double newVal) const
{
if (auto ptr = m_model.lock()) {
double min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
double min = ptr->data(m_index, AssetParameterModel::VisualMinRole).toDouble();
double max = ptr->data(m_index, AssetParameterModel::VisualMaxRole).toDouble();
if (qFuzzyIsNull(min) && qFuzzyIsNull(max)) {
min = ptr->data(m_index, AssetParameterModel::MinRole).toDouble();
max = ptr->data(m_index, AssetParameterModel::MaxRole).toDouble();
}
double factor = ptr->data(m_index, AssetParameterModel::FactorRole).toDouble();
double norm = ptr->data(m_index, AssetParameterModel::DefaultRole).toDouble();
int logRole = ptr->data(m_index, AssetParameterModel::ScaleRole).toInt();
double realValue;
if (logRole == -1) {
// Logarythmic scale for lower than norm values
// Logarythmic scale
if (newVal >= 0.5) {
realValue = norm + (2 * (newVal - 0.5) * (max / factor - norm));
realValue = norm + pow(2 * (newVal - 0.5), 10.0 / 6) * (max / factor - norm);
} else {
realValue = norm - pow(2 * (0.5 - newVal), 10.0 / 6) * (norm - min / factor);
}
@@ -917,76 +931,51 @@ QVariant KeyframeModel::getInterpolatedValue(const GenTime &pos) const
if (m_keyframeList.size() == 0) {
return QVariant();
}
auto next = m_keyframeList.upper_bound(pos);
if (next == m_keyframeList.cbegin()) {
return (m_keyframeList.cbegin())->second.second;
} else if (next == m_keyframeList.cend()) {
auto it = m_keyframeList.cend();
--it;
return it->second.second;
}
auto prev = next;
--prev;
// We now have surrounding keyframes, we use mlt to compute the value
Mlt::Properties prop;
bool useOpacity = true;
Mlt::Properties mlt_prop;
QString animData;
int out = 0;
bool useOpacity = false;
if (auto ptr = m_model.lock()) {
ptr->passProperties(prop);
if (m_paramType == ParamType::AnimatedRect) {
useOpacity = ptr->data(m_index, AssetParameterModel::OpacityRole).toBool();
}
ptr->passProperties(mlt_prop);
ptr->data(m_index, AssetParameterModel::ParentInRole).toInt();
out = ptr->data(m_index, AssetParameterModel::ParentDurationRole).toInt();
useOpacity = ptr->data(m_index, AssetParameterModel::OpacityRole).toBool();
animData = ptr->data(m_index, AssetParameterModel::ValueRole).toString();
}
QLocale locale;
int p = pos.frames(pCore->getCurrentFps());
if (m_paramType == ParamType::KeyframeParam) {
prop.anim_set("keyframe", prev->second.second.toDouble(), prev->first.frames(pCore->getCurrentFps()), next->first.frames(pCore->getCurrentFps()),
convertToMltType(prev->second.first));
prop.anim_set("keyframe", next->second.second.toDouble(), next->first.frames(pCore->getCurrentFps()), next->first.frames(pCore->getCurrentFps()),
convertToMltType(next->second.first));
return QVariant(prop.anim_get_double("keyframe", p));
if (!animData.isEmpty()) {
mlt_prop.set("key", animData.toUtf8().constData());
// This is a fake query to force the animation to be parsed
(void)mlt_prop.anim_get_double("key", 0, out);
return QVariant(mlt_prop.anim_get_double("key", pos.frames(pCore->getCurrentFps())));
}
return QVariant();
} else if (m_paramType == ParamType::AnimatedRect) {
QStringList vals = prev->second.second.toString().split(QLatin1Char(' '));
if (vals.count() >= 4) {
mlt_rect rect;
rect.x = vals.at(0).toInt();
rect.y = vals.at(1).toInt();
rect.w = vals.at(2).toInt();
rect.h = vals.at(3).toInt();
if (!animData.isEmpty()) {
mlt_prop.set("key", animData.toUtf8().constData());
// This is a fake query to force the animation to be parsed
(void)mlt_prop.anim_get_double("key", 0, out);
mlt_rect rect = mlt_prop.anim_get_rect("key", pos.frames(pCore->getCurrentFps()));
QString res = QStringLiteral("%1 %2 %3 %4").arg((int)rect.x).arg((int)rect.y).arg((int)rect.w).arg((int)rect.h);
if (useOpacity) {
if (vals.count()) {
rect.o = locale.toDouble(vals.at(4));
} else {
rect.o = 1;
}
res.append(QStringLiteral(" %1").arg(QString::number(rect.o, 'f')));
}
prop.anim_set("keyframe", rect, prev->first.frames(pCore->getCurrentFps()), next->first.frames(pCore->getCurrentFps()),
convertToMltType(prev->second.first));
return QVariant(res);
}
vals = next->second.second.toString().split(QLatin1Char(' '));
if (vals.count() >= 4) {
mlt_rect rect;
rect.x = vals.at(0).toInt();
rect.y = vals.at(1).toInt();
rect.w = vals.at(2).toInt();
rect.h = vals.at(3).toInt();
if (useOpacity) {
if (vals.count() > 4) {
rect.o = locale.toDouble(vals.at(4));
} else {
rect.o = 1;
}
}
prop.anim_set("keyframe", rect, next->first.frames(pCore->getCurrentFps()), next->first.frames(pCore->getCurrentFps()),
convertToMltType(next->second.first));
}
mlt_rect rect = prop.anim_get_rect("keyframe", p);
QString res = QStringLiteral("%1 %2 %3 %4").arg((int)rect.x).arg((int)rect.y).arg((int)rect.w).arg((int)rect.h);
if (useOpacity) {
res.append(QStringLiteral(" %1").arg(locale.toString(rect.o)));
}
return QVariant(res);
return QVariant();
} else if (m_paramType == ParamType::Roto_spline) {
// interpolate
auto next = m_keyframeList.upper_bound(pos);
if (next == m_keyframeList.cbegin()) {
return (m_keyframeList.cbegin())->second.second;
} else if (next == m_keyframeList.cend()) {
auto it = m_keyframeList.cend();
--it;
return it->second.second;
}
auto prev = next;
--prev;
QSize frame = pCore->getCurrentFrameSize();
QList<BPoint> p1 = RotoHelper::getPoints(prev->second.second, frame);
QList<BPoint> p2 = RotoHelper::getPoints(next->second.second, frame);
@@ -995,7 +984,7 @@ QVariant KeyframeModel::getInterpolatedValue(const GenTime &pos) const
// - equal to 1 on next keyframe
qreal relPos = 0;
if (next->first != prev->first) {
relPos = (p - prev->first.frames(pCore->getCurrentFps())) / (qreal)(((next->first - prev->first).frames(pCore->getCurrentFps())));
relPos = (pos.frames(pCore->getCurrentFps()) - prev->first.frames(pCore->getCurrentFps())) / (qreal)(((next->first - prev->first).frames(pCore->getCurrentFps())));
}
int count = qMin(p1.count(), p2.count());
QList<QVariant> vlist;

View File

@@ -49,6 +49,22 @@ ObjectId KeyframeModelList::getOwnerId() const
return {};
}
const QString KeyframeModelList::getAssetId()
{
if (auto ptr = m_model.lock()) {
return ptr->getAssetId();
}
return {};
}
const QString KeyframeModelList::getAssetRow()
{
if (auto ptr = m_model.lock()) {
return ptr->getAssetMltId();
}
return QString();
}
void KeyframeModelList::addParameter(const QModelIndex &index)
{
std::shared_ptr<KeyframeModel> parameter(new KeyframeModel(m_model, index, m_undoStack));
@@ -262,6 +278,14 @@ bool KeyframeModelList::isEmpty() const
return (m_parameters.size() == 0 || m_parameters.begin()->second->rowCount() == 0);
}
int KeyframeModelList::count() const
{
READ_LOCK();
if (m_parameters.size() > 0)
return m_parameters.begin()->second->rowCount();
return 0;
}
Keyframe KeyframeModelList::getNextKeyframe(const GenTime &pos, bool *ok) const
{
READ_LOCK();
@@ -355,7 +379,7 @@ void KeyframeModelList::resizeKeyframes(int oldIn, int oldOut, int in, int out,
QVariant value = param.second->getInterpolatedValue(new_in);
param.second->updateKeyframe(old_in, value, undo, redo);
}
for (auto frame : positions) {
for (auto frame : qAsConst(positions)) {
if (new_in > GenTime()) {
if (frame > new_in) {
param.second->moveKeyframe(frame, frame - new_in, QVariant(), undo, redo);
@@ -447,7 +471,7 @@ void KeyframeModelList::resizeKeyframes(int oldIn, int oldOut, int in, int out,
for (const auto &param : m_parameters) {
QVariant value = param.second->getInterpolatedValue(new_out);
param.second->addKeyframe(new_out, type, value, true, undo, redo);
for (auto frame : positions) {
for (auto frame : qAsConst(positions)) {
param.second->removeKeyframe(frame, undo, redo);
}
}
@@ -485,3 +509,13 @@ void KeyframeModelList::checkConsistency()
}
}
}
GenTime KeyframeModelList::getPosAtIndex(int ix)
{
QList<GenTime> positions = m_parameters.begin()->second->getKeyframePos();
std::sort(positions.begin(), positions.end());
if (ix < 0 || ix >= positions.count()) {
return GenTime();
}
return positions.at(ix);
}

View File

@@ -96,6 +96,9 @@ public:
/* @brief Returns true if we only have no keyframe
*/
bool isEmpty() const;
/* @brief Returns the number of keyframes
*/
int count() const;
/* @brief Returns the keyframe located after given position.
If there is a keyframe at given position it is ignored.
@@ -132,10 +135,16 @@ public:
KeyframeModel *getKeyModel(const QPersistentModelIndex &index);
/** @brief Returns parent asset owner id*/
ObjectId getOwnerId() const;
/** @brief Returns parent asset id*/
const QString getAssetId();
const QString getAssetRow();
/** @brief Parent item size change, update keyframes*/
void resizeKeyframes(int oldIn, int oldOut, int in, int out, int offset, bool adjustFromEnd, Fun &undo, Fun &redo);
/** @brief Return position of the nth keyframe (ix = nth)*/
GenTime getPosAtIndex(int ix);
/** @brief Check that all keyframable parameters have the same keyframes on loading
* (that's how our model works) */
void checkConsistency();

View File

@@ -21,9 +21,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "keyframemonitorhelper.hpp"
#include "assets/model/assetparametermodel.hpp"
#include "assets/keyframes/model/keyframemodellist.hpp"
#include "monitor/monitor.h"
#include <utility>
#include <core.h>
KeyframeMonitorHelper::KeyframeMonitorHelper(Monitor *monitor, std::shared_ptr<AssetParameterModel> model, const QPersistentModelIndex &index, QObject *parent)
: QObject(parent)
, m_monitor(monitor)
@@ -36,7 +38,7 @@ KeyframeMonitorHelper::KeyframeMonitorHelper(Monitor *monitor, std::shared_ptr<A
bool KeyframeMonitorHelper::connectMonitor(bool activate)
{
if (activate == m_active) {
return false;
return true;
}
m_active = activate;
if (activate) {
@@ -52,3 +54,80 @@ void KeyframeMonitorHelper::addIndex(const QPersistentModelIndex &index)
{
m_indexes << index;
}
void KeyframeMonitorHelper::refreshParams(int /* pos */ )
{
QVariantList points;
QVariantList types;
std::shared_ptr<KeyframeModelList> keyframes = m_model->getKeyframeModel();
for (const auto &ix : qAsConst(m_indexes)) {
auto type = m_model->data(ix, AssetParameterModel::TypeRole).value<ParamType>();
if (type != ParamType::AnimatedRect) {
continue;
}
KeyframeModel *kfr = keyframes->getKeyModel(ix);
bool ok;
Keyframe kf = kfr->getNextKeyframe(GenTime(-1), &ok);
while (ok) {
if (kf.second == KeyframeType::Curve) {
types << 1;
} else {
types << 0;
}
QString rectData = kfr->getInterpolatedValue(kf.first).toString();
QStringList data = rectData.split(QLatin1Char(' '));
if (data.size() > 3) {
QRectF r(data.at(0).toInt(), data.at(1).toInt(), data.at(2).toInt(), data.at(3).toInt());
points.append(QVariant(r.center()));
}
kf = kfr->getNextKeyframe(kf.first, &ok);
}
break;
}
if (m_monitor) {
m_monitor->setUpEffectGeometry(QRect(), points, types);
}
}
void KeyframeMonitorHelper::slotUpdateFromMonitorData(const QVariantList &centers)
{
std::shared_ptr<KeyframeModelList> keyframes = m_model->getKeyframeModel();
if (centers.count() != keyframes->count()) {
qDebug() << "* * * *CENTER POINTS MISMATCH, aborting edit";
return;
}
for (const auto &ix : qAsConst(m_indexes)) {
auto type = m_model->data(ix, AssetParameterModel::TypeRole).value<ParamType>();
if (type != ParamType::AnimatedRect) {
continue;
}
KeyframeModel *kfr = keyframes->getKeyModel(ix);
bool ok;
Keyframe kf = kfr->getNextKeyframe(GenTime(-1), &ok);
int i = 0;
while (ok) {
QString rectData = kfr->getInterpolatedValue(kf.first).toString();
QStringList data = rectData.split(QLatin1Char(' '));
if (data.size() > 3) {
QRectF r(data.at(0).toInt(), data.at(1).toInt(), data.at(2).toInt(), data.at(3).toInt());
QPointF pt(r.center());
QPointF expected = centers.at(i).toPointF();
if (pt != expected) {
// Center rect to new pos
QPointF offset = expected - pt;
r.translate(offset);
QString res = QString("%1 %2 %3 %4").arg((int)r.x()).arg((int)r.y()).arg((int)r.width()).arg((int)r.height());
if (data.size() > 4) {
res.append(QString(" %1").arg(data.at(4)));
}
kfr->updateKeyframe(kf.first, res);
}
}
kf = kfr->getNextKeyframe(kf.first, &ok);
i++;
}
break;
}
}

View File

@@ -53,7 +53,7 @@ public:
bool connectMonitor(bool activate);
/** @brief Send data update to the monitor
*/
virtual void refreshParams(int pos) = 0;
virtual void refreshParams(int pos);
protected:
Monitor *m_monitor;
@@ -64,7 +64,7 @@ protected:
bool m_active;
private slots:
virtual void slotUpdateFromMonitorData(const QVariantList &v) = 0;
virtual void slotUpdateFromMonitorData(const QVariantList &v);
public slots:
/** @brief For classes that manage several parameters, add a param index to the list

View File

@@ -65,14 +65,14 @@ void RotoHelper::refreshParams(int pos)
if (!keyframes->isEmpty()) {
QVariant splineData = keyframes->getInterpolatedValue(pos, m_indexes.first());
QList<BPoint> p = getPoints(splineData, pCore->getCurrentFrameSize());
for (const auto &i : p) {
for (const auto &i : qAsConst(p)) {
centerPoints << QVariant(i.p);
controlPoints << QVariant(i.h1);
controlPoints << QVariant(i.h2);
}
if (m_monitor) {
m_monitor->setUpEffectGeometry(QRect(), centerPoints, controlPoints);
}
}
if (m_monitor) {
m_monitor->setUpEffectGeometry(QRect(), centerPoints, controlPoints);
}
}

View File

@@ -25,6 +25,7 @@
#include <QMouseEvent>
#include <QApplication>
#include <QStylePainter>
#include <QtMath>
#include <KColorScheme>
#include <QFontDatabase>
@@ -39,6 +40,8 @@ KeyframeView::KeyframeView(std::shared_ptr<KeyframeModelList> model, int duratio
, m_currentKeyframeOriginal(-1)
, m_hoverKeyframe(-1)
, m_scale(1)
, m_zoomFactor(1)
, m_zoomStart(0)
, m_zoomHandle(0,1)
, m_hoverZoomIn(false)
, m_hoverZoomOut(false)
@@ -80,6 +83,18 @@ void KeyframeView::slotSetPosition(int pos, bool isInRange)
m_position = pos;
int offset = pCore->getItemIn(m_model->getOwnerId());
emit atKeyframe(m_model->hasKeyframe(pos + offset), m_model->singleKeyframe());
double zoomPos = (double) m_position / m_duration;
if (zoomPos < m_zoomHandle.x()) {
double interval = m_zoomHandle.y() - m_zoomHandle.x();
zoomPos = qBound(0.0, zoomPos - interval / 5, 1.0);
m_zoomHandle.setX(zoomPos);
m_zoomHandle.setY(zoomPos + interval);
} else if (zoomPos > m_zoomHandle.y()) {
double interval = m_zoomHandle.y() - m_zoomHandle.x();
zoomPos = qBound(0.0, zoomPos + interval / 5, 1.0);
m_zoomHandle.setX(zoomPos - interval);
m_zoomHandle.setY(zoomPos);
}
update();
}
}
@@ -98,15 +113,20 @@ void KeyframeView::slotAddKeyframe(int pos)
m_model->addKeyframe(GenTime(pos + offset, pCore->getCurrentFps()), (KeyframeType)KdenliveSettings::defaultkeyframeinterp());
}
const QString KeyframeView::getAssetId()
{
return m_model->getAssetId();
}
void KeyframeView::slotAddRemove()
{
emit activateEffect();
int offset = pCore->getItemIn(m_model->getOwnerId());
if (m_model->hasKeyframe(m_position + offset)) {
slotRemoveKeyframe(m_position);
} else {
slotAddKeyframe(m_position);
}
emit activateEffect();
}
void KeyframeView::slotEditType(int type, const QPersistentModelIndex &index)
@@ -119,6 +139,11 @@ void KeyframeView::slotEditType(int type, const QPersistentModelIndex &index)
void KeyframeView::slotRemoveKeyframe(int pos)
{
if (m_model->singleKeyframe()) {
// Don't allow zero keyframe
pCore->displayMessage(i18n("Cannot remove the last keyframe"), MessageType::InformationMessage, 500);
return;
}
if (pos < 0) {
pos = m_position;
}
@@ -136,6 +161,7 @@ void KeyframeView::setDuration(int dur)
void KeyframeView::slotGoToNext()
{
emit activateEffect();
if (m_position == m_duration - 1) {
return;
}
@@ -150,11 +176,11 @@ void KeyframeView::slotGoToNext()
// no keyframe after current position
emit seekToPos(m_duration - 1);
}
emit activateEffect();
}
void KeyframeView::slotGoToPrev()
{
emit activateEffect();
if (m_position == 0) {
return;
}
@@ -169,7 +195,6 @@ void KeyframeView::slotGoToPrev()
// no keyframe after current position
emit seekToPos(m_duration - 1);
}
emit activateEffect();
}
void KeyframeView::mousePressEvent(QMouseEvent *event)
@@ -182,12 +207,12 @@ void KeyframeView::mousePressEvent(QMouseEvent *event)
int pos = ((event->x() - m_offset) / zoomFactor + zoomStart ) / m_scale;
pos = qBound(0, pos, m_duration - 1);
if (event->button() == Qt::LeftButton) {
if (event->y() < m_lineHeight) {
if (event->y() < m_lineHeight) {
// mouse click in keyframes area
bool ok;
GenTime position(pos + offset, pCore->getCurrentFps());
auto keyframe = m_model->getClosestKeyframe(position, &ok);
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset) * m_scale < ceil(m_lineHeight / 1.5)) {
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset) * m_scale * m_zoomFactor < QApplication::startDragDistance()) {
m_currentKeyframeOriginal = keyframe.first.frames(pCore->getCurrentFps()) - offset;
// Select and seek to keyframe
m_currentKeyframe = m_currentKeyframeOriginal;
@@ -236,12 +261,12 @@ void KeyframeView::mouseMoveEvent(QMouseEvent *event)
if (m_hoverZoomIn || m_hoverZoomOut || m_hoverZoom) {
// Moving zoom handles
if (m_hoverZoomIn) {
m_zoomHandle.setX(qMax(0., (double)(event->x() - m_offset) / (width() - 2 * m_offset)));
m_zoomHandle.setX(qMin(qMax(0., (double)(event->x() - m_offset) / (width() - 2 * m_offset)), m_zoomHandle.y() - 0.015));
update();
return;
}
if (m_hoverZoomOut) {
m_zoomHandle.setY(qMin(1., (double)(event->x() - m_offset) / (width() - 2 * m_offset)));
m_zoomHandle.setY(qMax(qMin(1., (double)(event->x() - m_offset) / (width() - 2 * m_offset)), m_zoomHandle.x() + 0.015));
update();
return;
}
@@ -282,7 +307,7 @@ void KeyframeView::mouseMoveEvent(QMouseEvent *event)
if (event->y() < m_lineHeight) {
bool ok;
auto keyframe = m_model->getClosestKeyframe(position, &ok);
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset) * m_scale < ceil(m_lineHeight / 1.5)) {
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset) * m_scale * m_zoomFactor < QApplication::startDragDistance()) {
m_hoverKeyframe = keyframe.first.frames(pCore->getCurrentFps()) - offset;
setCursor(Qt::PointingHandCursor);
m_hoverZoomIn = false;
@@ -355,7 +380,7 @@ void KeyframeView::mouseDoubleClickEvent(QMouseEvent *event)
GenTime position(pos + offset, pCore->getCurrentFps());
bool ok;
auto keyframe = m_model->getClosestKeyframe(position, &ok);
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset) * m_scale < ceil(m_lineHeight / 1.5)) {
if (ok && qAbs(keyframe.first.frames(pCore->getCurrentFps()) - pos - offset)* m_scale * m_zoomFactor < QApplication::startDragDistance()) {
if (keyframe.first.frames(pCore->getCurrentFps()) != offset) {
m_model->removeKeyframe(keyframe.first);
if (keyframe.first.frames(pCore->getCurrentFps()) == m_currentKeyframe + offset) {
@@ -395,31 +420,78 @@ void KeyframeView::paintEvent(QPaintEvent *event)
Q_UNUSED(event)
QStylePainter p(this);
m_scale = (width() - 2 * m_offset) / (double)(m_duration - 1);
// p.translate(0, m_lineHeight);
int maxWidth = width() - 2 * m_offset;
m_scale = maxWidth / (double)(m_duration - 1);
int headOffset = m_lineHeight / 2;
int offset = pCore->getItemIn(m_model->getOwnerId());
double zoomStart = m_zoomHandle.x() * (width() - 2 * m_offset);
double zoomEnd = m_zoomHandle.y() * (width() - 2 * m_offset);
double zoomFactor = (width() - 2 * m_offset) / (zoomEnd - zoomStart);
m_zoomStart = m_zoomHandle.x() * maxWidth;
m_zoomFactor = maxWidth / (m_zoomHandle.y() * maxWidth - m_zoomStart);
int zoomEnd = qCeil(m_zoomHandle.y() * maxWidth);
/* ticks */
double fps = pCore->getCurrentFps();
int displayedLength = m_duration / m_zoomFactor / fps;
double factor = 1;
if (displayedLength < 2) {
// 1 frame tick
} else if (displayedLength < 30 ) {
// 1 sec tick
factor = fps;
} else if (displayedLength < 150) {
// 5 sec tick
factor = 5 * fps;
} else if (displayedLength < 300) {
// 10 sec tick
factor = 10 * fps;
} else if (displayedLength < 900) {
// 30 sec tick
factor = 30 * fps;
} else if (displayedLength < 1800) {
// 1 min. tick
factor = 60 * fps;
} else if (displayedLength < 9000) {
// 5 min tick
factor = 300 * fps;
} else if (displayedLength < 18000) {
// 10 min tick
factor = 600 * fps;
} else {
// 30 min tick
factor = 1800 * fps;
}
// Position of left border in frames
double tickOffset = m_zoomStart * m_zoomFactor;
double frameSize = factor * m_scale * m_zoomFactor;
int base = tickOffset / frameSize;
tickOffset = frameSize - (tickOffset - (base * frameSize));
// Draw frame ticks
int scaledTick = 0;
for (int i = 0; i < maxWidth / frameSize; i++) {
scaledTick = m_offset + (i * frameSize) + tickOffset;
if (scaledTick >= maxWidth + m_offset) {
break;
}
p.drawLine(QPointF(scaledTick , m_lineHeight + 1), QPointF(scaledTick, m_lineHeight - 3));
}
/*
* keyframes
*/
for (const auto &keyframe : *m_model.get()) {
int pos = keyframe.first.frames(pCore->getCurrentFps()) - offset;
int pos = keyframe.first.frames(fps) - offset;
if (pos < 0) continue;
double scaledPos = pos * m_scale;
if (scaledPos < m_zoomStart || qFloor(scaledPos) > zoomEnd) {
continue;
}
if (pos == m_currentKeyframe || pos == m_hoverKeyframe) {
p.setBrush(m_colSelected);
} else {
p.setBrush(m_colKeyframe);
}
double scaledPos = pos * m_scale;
if (scaledPos < zoomStart || scaledPos > zoomEnd) {
continue;
}
scaledPos -= zoomStart;
scaledPos *= zoomFactor;
scaledPos -= m_zoomStart;
scaledPos *= m_zoomFactor;
scaledPos += m_offset;
p.drawLine(QPointF(scaledPos, headOffset), QPointF(scaledPos, m_lineHeight - 1));
switch (keyframe.second.first) {
@@ -440,7 +512,7 @@ void KeyframeView::paintEvent(QPaintEvent *event)
}
p.setPen(palette().dark().color());
/*
* Time-"line"
*/
@@ -454,9 +526,9 @@ void KeyframeView::paintEvent(QPaintEvent *event)
*/
if (m_position >= 0 && m_position < m_duration) {
double scaledPos = m_position * m_scale;
if (scaledPos >= zoomStart && scaledPos <= zoomEnd) {
scaledPos -= zoomStart;
scaledPos *= zoomFactor;
if (scaledPos >= m_zoomStart && qFloor(scaledPos) <= zoomEnd) {
scaledPos -= m_zoomStart;
scaledPos *= m_zoomFactor;
scaledPos += m_offset;
QPolygon pa(3);
int cursorwidth = (m_zoomHeight - m_lineHeight) / 1.8;
@@ -466,7 +538,7 @@ void KeyframeView::paintEvent(QPaintEvent *event)
p.drawPolygon(position);
}
}
// Zoom bar
p.setPen(Qt::NoPen);
p.setBrush(palette().mid());

View File

@@ -34,6 +34,7 @@ class KeyframeView : public QWidget
public:
explicit KeyframeView(std::shared_ptr<KeyframeModelList> model, int duration, QWidget *parent = nullptr);
void setDuration(int dur);
const QString getAssetId();
public slots:
/* @brief moves the current position*/
@@ -76,6 +77,8 @@ private:
int m_zoomHeight;
int m_offset;
double m_scale;
double m_zoomFactor;
double m_zoomStart;
/** @brief The zoom factor (start, end - between 0 and 1) */
QPointF m_zoomHandle;
QPointF m_lastZoomHandle;

View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2017 by by Jean-Baptiste Mardelle *
* Copyright (C) 2017 by Jean-Baptiste Mardelle *
* This file is part of Kdenlive. See www.kdenlive.org. *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -33,8 +33,6 @@ AssetCommand::AssetCommand(const std::shared_ptr<AssetParameterModel> &model, co
, m_updateView(false)
, m_stamp(QTime::currentTime())
{
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
m_name = m_model->data(index, AssetParameterModel::NameRole).toString();
const QString id = model->getAssetId();
if (EffectsRepository::get()->exists(id)) {
@@ -43,26 +41,25 @@ AssetCommand::AssetCommand(const std::shared_ptr<AssetParameterModel> &model, co
setText(i18n("Edit %1", TransitionsRepository::get()->getName(id)));
}
QVariant previousVal = m_model->data(index, AssetParameterModel::ValueRole);
m_oldValue = previousVal.type() == QVariant::Double ? locale.toString(previousVal.toDouble()) : previousVal.toString();
m_oldValue = previousVal.type() == previousVal.toString();
}
void AssetCommand::undo()
{
m_model->setParameter(m_name, m_oldValue, true, m_index);
}
// virtual
void AssetCommand::redo()
{
m_model->setParameter(m_name, m_value, m_updateView, m_index);
m_updateView = true;
}
// virtual
int AssetCommand::id() const
{
return 1;
}
// virtual
bool AssetCommand::mergeWith(const QUndoCommand *other)
{
if (other->id() != id() || static_cast<const AssetCommand *>(other)->m_index != m_index ||
@@ -82,8 +79,6 @@ AssetMultiCommand::AssetMultiCommand(const std::shared_ptr<AssetParameterModel>
, m_updateView(false)
, m_stamp(QTime::currentTime())
{
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
qDebug()<<"CREATING MULTIPLE COMMAND!!!\nVALUES: "<<m_values;
m_name = m_model->data(indexes.first(), AssetParameterModel::NameRole).toString();
const QString id = model->getAssetId();
@@ -92,9 +87,9 @@ AssetMultiCommand::AssetMultiCommand(const std::shared_ptr<AssetParameterModel>
} else if (TransitionsRepository::get()->exists(id)) {
setText(i18n("Edit %1", TransitionsRepository::get()->getName(id)));
}
for (QModelIndex ix : m_indexes) {
for (QModelIndex ix : qAsConst(m_indexes)) {
QVariant previousVal = m_model->data(ix, AssetParameterModel::ValueRole);
m_oldValues << (previousVal.type() == QVariant::Double ? locale.toString(previousVal.toDouble()) : previousVal.toString());
m_oldValues << previousVal.toString();
}
}
@@ -102,7 +97,7 @@ void AssetMultiCommand::undo()
{
int indx = 0;
int max = m_indexes.size() - 1;
for (const QModelIndex &ix : m_indexes) {
for (const QModelIndex &ix : qAsConst(m_indexes)) {
m_model->setParameter(m_model->data(ix, AssetParameterModel::NameRole).toString(), m_oldValues.at(indx), indx == max, ix);
indx++;
}
@@ -112,7 +107,7 @@ void AssetMultiCommand::redo()
{
int indx = 0;
int max = m_indexes.size() - 1;
for (const QModelIndex &ix : m_indexes) {
for (const QModelIndex &ix : qAsConst(m_indexes)) {
m_model->setParameter(m_model->data(ix, AssetParameterModel::NameRole).toString(), m_values.at(indx), m_updateView && indx == max, ix);
indx++;
}

Some files were not shown because too many files have changed in this diff Show More