Hi,
This post is for discussing if either of the following ideas I have would be suitable for a GSoC project. There are many great proposals already from other people, but I’m giving it a shot. If there’s interest, I can flesh this out into a proper application.
VSE Retiming improvements
The retiming data would be stored as an f-curve, where the x-axis indicates the original frame, and the y-axis indicates the remapped frame for the strip.
The following improvements would be made to retiming:
Custom transitions
As of now, the VSE only has one soft speed transition as part of the retiming tool. There is a way to achieve custom transitions with the speed effect strips, but these are very cumbersome to use.
As the change would make it so that the data is stored as an f-curve, the transition of the retiming tool would be fully customisable in the graph editor. As this wouldn’t change any existing retiming tool workflows, this would have the upsides of both the old retiming effect strips, and the new retiming tool.
Reversing video and audio
As of now:
- The only way to reverse a video is with the “Reverse Frames” toggle
- It is not possible to reverse a video, while preserving the existing adjustments made to the handles of the strip
- The “Reverse Frames” toggle doesn’t work as expected with the retiming functionality
- There is no way to reverse audio
To fix these issues, reversing would be included as part of the retiming functionality. This comes naturally with the f-curve changes. As this would replace the old “Reverse Frames” toggle, old code would be removed making the VSE more maintainable.
A “Retiming → Reverse” operator would be added. The operator would preserve any already existing changes in the strip, as expected.
These changes would not change any existing workflows
VSE compositing modifier
A “compositor node tree” modifier would be added. This is a highly requested feature.
A concern that has been raised about this before is if it would end up being unusably slow.
I have experimented with code that adds this functionality before (video):
(Uploading a video here didn’t work. Hopefully this link does)
If there’s interest in this, I can describe it in more detail. The retiming functionality is my primary focus, though.
Contributions to Blender
I’ve done bug fixes and small improvements to the VSE. Here are the retiming related ones, to show I have some familiarity with the relevant code:
- #124424 - Fix: VSE: Moving a retiming key above a strip would cause overlapping - blender - Blender Projects
- #124748 - Refactor: Move code into new SEQ_retiming_reset function - blender - Blender Projects
- #124749 - Fix: Reset retiming doesn't update effect strip and meta strip ranges - blender - Blender Projects
- #124750 - Fix: VSE: Overlap when using reset retiming on strip with effect strips - blender - Blender Projects
- #124414 - Fix: VSE: Set Speed operator on strip without keys causes overlap - blender - Blender Projects
- #124744 - Fix: VSE: Memory leak in SEQ_retiming_data_clear - blender - Blender Projects