GES

GES (GStreamer Editing Services) is a cross-platform library that sits on top of GStreamer and Non-Linear Engine. GES simplifies the creation of multimedia editing applications. Basically, GES is a complete SDK for making a video editor (but not only that).

Traditionally, Pitivi was a user interface and a homemade video editing “core” (or “backend”) that interacted directly with GNonLin. Starting in version 0.91, Pitivi's core has been replaced by GES. This means that Pitivi is mostly only a user interface on top of GES. Starting in version 0.95, GNonLin has been replaced by Non-Linear Engine to improve stability.

GES does not aim at serving the needs of Pitivi only: we are building the platform of the future and breaking the cycle of failed projects. Indeed, other applications are already using GES or migrating to it.

“Pitivi is one of the 'generous' projects that develops not just an editor, but a set of libraries to implement editors. [Applications built on top of those libraries] are not really re-inventing the wheel, they can piggyback on top of the work that these folks are doing, and then implement UI features that they care about the most.”
— Bassam Kurdali, director of Elephants Dream and Tube.

In addition to the fact that GES encourages code reuse among audio/video editing software, here are some concrete advantages that we've noticed while porting Pitivi to GES:

  • It solves many architectural issues of the past.
  • It vastly simplifies Pitivi development:
    • More than 20 000 lines of code have been removed from Pitivi as a result
    • A big cleanup of the Pitivi codebase was done in early 2011, significantly reducing the amount of modules/files to deal with.
    • No more confusion between the UI and backend parts
    • Much less GStreamer knowledge is required to contribute to Pitivi itself.
  • It has much better performance.

Further reading for contributors:

  • See the Architecture page for a visual overview of the relationship between Pitivi, GES, Non-Linear Engine and other components.
  • Read the GES API reference documentation if you need to interact with GES. This documentation can also be found locally in the “docs/libs/html/” subdirectory of your GES git checkout.
  • The initial GES announcement, which explains why GES was created, what its various components are and how it fits with GStreamer.

The results of the search are