SoK/2024/StatusReport/aisuneko
< SoK | 2024/StatusReport
Enable editing of keyframe curves and advanced keyframe types in Kdenlive
Project Abstract:
Following are the deliverables:
- Implement a graphical editor for keyframe curves
- Modify upstream animation-related code of MLT, Kdenlive's backend, to make it work
- Build a GUI alongside the existing keyframe timeline view, allowing users to edit bezier curves in keyframing
- Integrate the rest of MLT's new keyframe types and corresponding menu items into Kdenlive and the above GUI
Weekly Progress:
- Weeks 1-3:
- Set up build environment and familiarize myself with the project workflow
- Spent time reading through related code in Kdenlive & MLT's codebase; Took some notes regarding MLT's keyframing structure and GUI ideas while discussing certain details with my mentor
- Gave some thought on what changes should be made (and how) in Kdenlive and MLT to reach the above goals
- As a starting point, refactored code associated with keyframe types and made minor functionality changes to Kdenlive
- Submitted a pull request which is now merged
- Weeks 4-5: Took a break during Chinese Lunar New Year vacation while busy with certain personal affairs. Thinking about next steps in the meantime
- Week 6:
- Created a new widget class for the keyframe curve editor; managed to insert it into existing GUI before implementing other functionalities.
- Opened a draft pull request including my changes made so far. Currently stuck due to difficulty in understanding existing keyframing architecture in Kdenlive
- Week 7:
- Made more progress in building the UI for the curve editor. Started working on implementing actual functions and connecting the widget with existing components
- Published a blog post documenting my current progress (though a bit late)
- Weeks 8-9:
- Completed most of the main functions (such as specific behavior for canvas interaction (eg. dragging and clicking) and integration with existing widgets). A demo video of the curve editor widget could be found here
- Started refactoring code added so far in the project as well as fixing major bugs
- Opened another draft pull request to track recent changes