Improve Video Transformation and Viewer Interaction in Pitivi



The primary goal of this project is to create an OpenGL based transformation with user interface for Pitivi, which utilizes the GPU to achieve transformations of the kinds translation, rotation and scale. These transformations need to be calculated correctly to work together.

The transformation needs to be implemented in the GStreamer OpenGL plugins. Furthermore the user interface of this operation needs to be rendered over the video sink, the area where the video is displayed in Pitivi. Drawing an interface like Totem with Clutter causes difficulties, since multiple OpenGL contexts are used for the transformation of the video and the drawing of the user interface.


The old plugins performed poorly compared to the initial benchmarks.

ebassi's new graphene library is used for the math, mainly matrix multiplication.

The gltransformation landed upstream in gst-plugins-bad.

I was able to render into a cluttersink with the OpenGL plugins. Results in this video.

Python code examples can be found in my gst-gl-tests repository.

Blog Posts


Git Repositories


  • Draw transformation interface into a cluttersink (clutter-gst) with Cairo
  • Experiment with 3D interface drawn in GStreamer
  • Implement chorma key in GLSL

Full TODO List

Outreach/SummerOfCode/2014/Projects/LuboszSarnecki_PitiviTransformation (last edited 2014-07-16 15:31:58 by LuboszSarnecki)