SoK/2024/StatusReport/aisuneko: Difference between revisions

From KDE Community Wiki
No edit summary
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
Following are the deliverables:
Following are the deliverables:
# Implement a graphical editor for keyframe curves
# Implement a graphical editor for keyframe curves
## Modify upstream animation-related code of MLT, Kdenlive's backend, to make it work
## ''Modify upstream animation-related code of MLT, Kdenlive's backend, to add a custom "bezier" keyframe type enabling fine-grained control of the keyframe curve'' (NOT IMPLEMENTED, will save for work beyond SoK24)
## Build a GUI alongside the existing keyframe timeline view, allowing users to edit bezier curves in keyframing
## Build a GUI alongside the existing keyframe timeline view, allowing users to edit curves in keyframing
# Integrate [https://github.com/mltframework/mlt/commit/a7597aa1ae8c178f6dd0cb98475aef57ea306734 the rest] of MLT's new keyframe types and corresponding menu items into Kdenlive and the above GUI
# Integrate [https://github.com/mltframework/mlt/commit/a7597aa1ae8c178f6dd0cb98475aef57ea306734 the rest] of MLT's new keyframe types and corresponding menu items into Kdenlive and the above GUI


Line 28: Line 28:
## Started refactoring code added so far in the project as well as fixing major bugs
## Started refactoring code added so far in the project as well as fixing major bugs
## Opened [https://invent.kde.org/multimedia/kdenlive/-/merge_requests/478 another draft pull request] to track recent changes
## Opened [https://invent.kde.org/multimedia/kdenlive/-/merge_requests/478 another draft pull request] to track recent changes
# Weeks 10-12: (requested project extension for two weeks)
## Continued finalizing widget implementation as well as polishing widget behavior and fixing bugs. My mentors also provided lots of comments and suggestions in this stage, as documented in the pull request above.

Latest revision as of 09:19, 11 April 2024

Enable editing of keyframe curves and advanced keyframe types in Kdenlive

Project Abstract:

Following are the deliverables:

  1. Implement a graphical editor for keyframe curves
    1. Modify upstream animation-related code of MLT, Kdenlive's backend, to add a custom "bezier" keyframe type enabling fine-grained control of the keyframe curve (NOT IMPLEMENTED, will save for work beyond SoK24)
    2. Build a GUI alongside the existing keyframe timeline view, allowing users to edit curves in keyframing
  2. Integrate the rest of MLT's new keyframe types and corresponding menu items into Kdenlive and the above GUI


Weekly Progress:

  1. Weeks 1-3:
    1. Set up build environment and familiarize myself with the project workflow
    2. 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
    3. Gave some thought on what changes should be made (and how) in Kdenlive and MLT to reach the above goals
    4. As a starting point, refactored code associated with keyframe types and made minor functionality changes to Kdenlive
    5. Submitted a pull request which is now merged
  2. 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
  3. Week 6:
    1. Created a new widget class for the keyframe curve editor; managed to insert it into existing GUI before implementing other functionalities.
    2. Opened a draft pull request including my changes made so far. Currently stuck due to difficulty in understanding existing keyframing architecture in Kdenlive
  4. Week 7:
    1. Made more progress in building the UI for the curve editor. Started working on implementing actual functions and connecting the widget with existing components
    2. Published a blog post documenting my current progress (though a bit late)
  5. Weeks 8-9:
    1. 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
    2. Started refactoring code added so far in the project as well as fixing major bugs
    3. Opened another draft pull request to track recent changes
  6. Weeks 10-12: (requested project extension for two weeks)
    1. Continued finalizing widget implementation as well as polishing widget behavior and fixing bugs. My mentors also provided lots of comments and suggestions in this stage, as documented in the pull request above.