SoK/2024/StatusReport/Ajay Chauhan

From KDE Community Wiki

Implement Multi-format Rendering to Kdenlive

Project Abstract:

Following are the deliverables:

  1. Add code to apply filters to the clips in the main tractor to achieve the desired aspect ratio.
  2. Modify the user interface to allow users to select the desired aspect ratio during export and invoke that filter when they choose one of the aspect ratio.
  3. Ensure that the aspect ratio selected by the user is integrated into the final rendering profile.


Weekly Progress:

  1. Week 1-3:
    1. Set up my working build environment and familiarize myself with the project structure.
    2. Discussed with the mentor on how to implement this filter and identified relevant files and sections of the code that would be critical for the changes.
    3. Modifying the sceneList function,Implementing the aspect ratio adjustment functionality.
    4. Added calculateCropParameters function to compute crop dimensions based on input aspect ratios (currently it handle only if the target aspect ratio is 1:1 square).
    5. Prepared a merge request (new MR : https://invent.kde.org/multimedia/kdenlive/-/merge_requests/495) to document the changes made.
  1. Week 3-6:
    1. Added XML consumer and producer for handling crop filters, enabling video cropping to the desired ratio. [1]
    2. Resolved the aspect ratio issue in the projectSceneList method, debugging the program to generate accurate XML for a given aspect ratio. [2]
    3. Implemented QTemporaryFile for cross-platform handling of temporary files, replacing hardcoded temp paths [3]
    4. Added CropCalculator class and refactor code to use it for calculating crop parameters [4]
  1. Week 6-10:
    1. Implemented the GUI part of the project, added a ComboBox for selecting the aspect ratio.[5]
    2. Fixed the tempFile creation in ProjectItemModel::sceneList for aspect ratio, which avoid creating unnecessary temporary files, the method now initialises an empty QTemporaryFile object. Then, if an aspect ratio change is wanted, the temporary file is set up with a specific file template and opened for writing.[6]
    3. Selected aspect ratio is retrieved from the combo box and passed to the setAspectRatio method of the RenderRequest object [7]
  1. Extension Weeks 1-2:
    1. Profiles with width or height that are not a multiple of 2 cause crashes. Fixed the issue by ensuring that the video profile width and height are multiples of 2. [8]
    2. I had issue with rebasing the project so I created a create a new fork branch from the current master and applied the changes [9]


Blog Posts

Contact

I am on Matrix as @hisir:matrix.org.