Enable editing of keyframe curves and advanced keyframe types in Kdenlive
Project abstract
Add support for keyframe curve editing (and/or advanced keyframe types) in Kdenlive
Proposal
(More details on what you plan to do, why is it useful to KDE, how you plan to do it and how do you plan to document and test your changes)
As a video editing software, Kdenlive offers the ability to modify certain parameters of effects over time with keyframes. Support for advanced keyframing functions such as more keyframe types (like the ones documented here) and user-customizable keyframe curves is important for Kdenlive to handle advanced animations and more diverse editing needs. It is also a frequently requested feature by the community, mentioned in issues multimedia/kdenlive#259 (closed), multimedia/kdenlive#572 (closed) and multimedia/kdenlive#985 (closed) in the repository. As recent commits (namely 1, 2) in Kdenlive & MLT (Kdenlive's rendering backend) have included preliminary support for the former, I am interested in working on the latter as a SoK project.
In this project, I plan to make required changes to MLT to enable such features backend-side before building an user interface for it in Kdenlive, along with possible minor changes. This would be my first time working with large projects, so I'm seeking mentorship and guidance with the aim of gaining valuable development skills such as writing tests, team collaboration and more.
Timeline
(What/when you plan to do the different tasks, potentially with milestones)
- Familiarize myself with Kdenlive & MLT's infrastructure
- Figure out a way to enable direct editing of keyframe data in MLT, then submit these changes to be merged into MLT's upstream
- Work on corresponding GUI in Kdenlive; incorporate existing support of varoius keyframe types into the new widget
- (perhaps more?)
Foreseen challenges
(If your project may have challenges, feel free to add any info here and if you have any plan to resolve them if they appear)
- Feasibility of implementing this in MLT; e.g. whether or not this requires structural/breaking change in the MLT framework, or whether MLT contributors will be happy about it. I plan to do further research and talk to the MLT team for details.
- My personal capability of handling the project, as I'm not familiar with developing in large projects and team collaboration, despite having basic experience with C/C++/Qt.
References / relevant background info
I'm a Chinese university freshmen with fundamental skills in C/C++/Qt and have written some fairly simple Qt Widgets programs. I'm also a long time KDE & Kdenlive user and is familiar with video editing with Kdenlive.
Here is my GitHub profile.
How to reach you
(Element / IRC nickname / email)
Email: iceneko@protonmail.ch
Matrix(Element): @aisuneko_icecat:tchncs.de
Edited: clickable links to the issues