GSoC Project Ideas

To apply for a GSoC internship you need to make a project proposal. The scope of your GSoC project will probably cover only Pitivi, but it could very well span multiple codebases:

  • Pitivi, which is the user interface. Written in Python. For those who love design and graphical user interaction.
  • GES, the high-level video editing GStreamer library that powers Pitivi and other applications. Written in C. For those who wish to improve an easy to use, powerful and flexible library for audio/video editing.
  • GStreamer, for low-level work, such as improving filters/effects, codecs, hardware decoding/encoding acceleration, analysis, etc. Written in C. For those seeking a challenging audio and video experience where optimization is key.

We'd love to see GSoC proposals originating from an itch you need to scratch. You are welcome to ask around and bring your own ideas. If you're not sure where you can be most useful, have a look at our list of ideas below. These shall be used as a base for writing a detailed project proposal.

See Past GSoCs for details on what the previous GSoC students did.

To create a detailed proposal, use our GSoC application template. Deadlines for applying are approaching fast, hurry up!

Cut perspective

The most tedious process of video editing is the initial cutting and structuring of the global timeline. A new perspective similar to the EditorPerspective will offer a second timeline representation above the timeline, that is always zoom-fitted.

Requirements: Python. Minimal experience contributing to Pitivi including unit tests.

Timeline enhancements

Fixing timeline issues and making small enhancements would improve a lot the timeline usability, making it a delight to use Pitivi. See GitLab.

Requirements: Python. Minimal experience contributing to Pitivi including unit tests.

Focus on the music

Often people want to pick a nice tune and then sync their weekend clips on it. To make this easy, Pitivi can detect the beats using a 3rd party library such as librosa and allow aligning and cutting the clips to the beat. It might sound easy, but the entire experience should be super-polished so it works nice and everybody can do it.

Requirements: Python, C. Minimal experience contributing to Pitivi including unit tests.

Closing credits

For end credits and other advanced text display, we could use the new GStreamer WPE element in gst-plugins-bad, which can display an HTML page as a video element. As GstWPE is a live source it does not allow seeking (getting frames at random positions), we have to add logic in Pitivi for seamlessly creating a video file out of an animated HTML page. The resulting file can be used in the project timeline as any other video clip. You'd have to extend the UI with a new perspective for managing the closing credits HTML, and the corresponding video files.

Requirements: Python. Minimal experience contributing to Pitivi including unit tests.

Fix GPU support in Pitivi

GStreamer has pretty good GPU support through the OpenGL set of plugins, but Pitivi/GES is not able to take full advantage of that infrastructure yet, mainly because of lack of testing and bug fixing on our side. This project is about enabling GL plugins for compositing and rendering, and fixing any issue that shows up. The second part would be about making sure hardware accelerated decoders can be used in the pipelines.

Requirements: C. Experience with GStreamer is mandatory. Minimal experience contributing to Pitivi including unit tests. Experience with OpenGL is a plus.

GTK 4

Initially the development environment should be migrated onto a GTK 4 runtime and then the app should be ported following the migration guide from GTK 3 to GTK 4.

Requirements: Python. Minimal experience contributing to Pitivi including unit tests. Experience developing GTK apps is a plus.

External audio editing integration

The audio editing features in Pitivi are likely to stay at a basic level so we can focus on the video editing functionality. Once a video segment is finished, it would be great to be able to export the entire audio and work on it with an audio editor such as Audacity. See for example how the experimental Blender-Audacity integration works and its Python implementation.

Requirements: Python. Minimal experience contributing to Pitivi including unit tests. Experience developing GTK apps is a plus.

The results of the search are