GSoC 2019 Final Report


PiTiVi Logo.svg

This year I worked on Pitivi, an Open Source Video Editor. With GSoC coming to an end, this post is a brief summary of the tasks that were done during the period, the things that were implemented, the work that is ongoing and the future plans that are left to do.

My project involved implementing Nesting Timelines in Pitivi, such that the clips can be easily nested to form one single clip.
Here is the project proposal:

The Work Done:

Currently a Nested Timeline can be edited from Pitivi. Choosing to edit the clip starts another Pitivi instance with the same clip inside which can be edited as desired by the user and saved. On focusing back to the main window the clip is updated in the Media Library and the Timeline with the changes committed.



1) previewer: Allow generating thumbnails for assets

2) previewers: Split VideoPreviewer logic into ImagePreviewer


1) tests: Implement nested timelines tests

2) tests: Add ges-sample-path-recurse with projects location


1) added check_seek_on_nested_clips and check_seek_on_nested_timelines scenarios

Ongoing Work:

Currently I am working on making the thumbnails of the updated clips appear properly on the timeline in Pitivi.

1) Opening another Pitivi instance for editing nested timeline

Work left to do:

Now we can edit a nested timeline in Pitivi but I still have to implement the ability to create nested timelines from within Pitivi.
We also have to disconnect the additional Pitivi instance which appears, such that the user doesn’t go back into the Greeter Perspective.

This summer I had an entirely new experience about software development, and in these few months I learnt volumes about the entire process needed to implement features in a software. It was the first time I tried these waters and it was challenging for me and sometimes quite frustrating, being a beginner, but my mentor’s and the communities’ support kept me afloat. I am glad that I had this opportunity which in just a few months helped me explore so much. Now looking back I can clearly see the line separating my skill before and after this 3 month period. Still there is a lot more to explore and learn. I will be continuing to contribute to Pitivi and be in touch with this great community.

Finally, I would like to thank my mentors Thibault Saunier and Alexandru Bălut for guiding me and patiently watching over my progress. They have taught me lot and I will continue with them the pursuit to make Pitivi better.


Pitivi – Making a Nest

                              PiTiVi Logo.svg          Image result for google summer of code

Pitivi is an open source video editing software for Linux. It provides creatives with a simple and elegant interface to edit and bring their videos to realisation. As with every other great software, Pitivi’s development community is always striving to add newer and better features. This year I participated in the Google Summer of Code to add the ‘Nesting’ Feature to the platform. I am currently working on this with my mentor Thiblahute Saunier. In this blog I chart out our current progress and the future tasks at hand.

Nesting Clips:

With nesting users can combine a series of sequences into a master clip. This master clip can be edited on like a normal clip, while simultaneously providing users the ability to go into the master clip’s timeline and make changes. This will help them to organise the timeline, enable re-usability of sequences and provide a richer user experience. 

Nesting in Adobe Premiere Pro

(Here is a link to better understand Nesting: )

For the past weeks we have been working on the back-end, Gstreamer Editing Services(GES) to implement nesting of clips in a timeline. Earlier with ges-launch-1.0 we could create a timeline, load several clips to it with +clip , add effects to them +effect, set it’s property etc, now with ges-launch-1.0 .xges file can be used as source and nested timelines can be created.

(Here is a link to ges-launch-1.0 documentation:

So while nesting in Pitivi, the idea is to create a new timeline, copy and paste the selected clips in this timeline, remove them from the main timeline and finally add the new timeline to the main timeline.

Now .xges file can be used as source and nested timelines can be created. So while nesting in Pitivi the idea is to create a new timeline, copy and paste the selected clips in this timeline, remove them from the main timeline and finally add the new timeline to the main timeline.


gst-validate-launcher is used to create test suites to test the behavior of the created pipelines and test the user actions as described in the .scenario files.

(Here is the link to gst-validate-launcher documentation: )

I have been busy implementing tests and writing scenarios for nesting. The test suite is working properly. For playback.nested tests, ges-launch-1.0 +clip is used to add the .xges file to the timeline instead of -l. Thanks to Thiblahute, most of the tests are passing successfully. So now ‘gst-validate-launcher ges’ generates and runs through the tests for Nesting.

The scenarios seek on nested timelines and check whether the outputted frame is correct. To be specific, they load a clip, serialize it in a .xges file, resulting in a nested timeline. It then loads the .xges file, seeks and checks the frame while moving them around in the layers and adding effects to the nested timeline. Basically, they emulate a user’s actions. Currently I am wrapping up a few scenarios.

The journey ahead:

The next part of the project will involve in the implementation and user interface of nesting in Pitivi. I had some ideas about the interface which I suggested in my proposal but we will be having rigorous discussions and decide the final interface.

My experience working in Pitivi:

In the past few weeks I’ve learnt and improved a lot. In the beginning I was a bit reserved and shy to tell my problems but after talking and getting to know my mentor, I think I’ve overcome that fear. The guidance of my mentor has been crucial in this journey. Until now he has done all of the heavy-lifting for the back-end all the while helping me to get up to speed. Hopefully now I will be able to take the reins and at the same time be able to learn more from him. I look forward to an amazing summer and the work we have in front of us.